From 872bcbb64e3270a20fd75ee503a67a94da8874b8 Mon Sep 17 00:00:00 2001 From: Elbert Alias Date: Sun, 16 Jul 2017 17:45:49 +1000 Subject: [PATCH] Port to ES6 --- .editorconfig | 11 +- Dockerfile | 9 +- bin/dev | 5 + bin/node_modules/.yarn-integrity | 8 + bin/run | 14 + bin/yarn.lock | 4 + content.js | 147 + driver.js | 1853 + options.js | 144 + package.json | 13 +- popup.js | 168 + run | 10 +- src/apps.json | 12 +- src/drivers/npm/node_modules/.bin/extract-zip | 1 + .../npm/node_modules/.bin/har-validator | 1 + src/drivers/npm/node_modules/.bin/mkdirp | 1 + src/drivers/npm/node_modules/.bin/phantomjs | 1 + src/drivers/npm/node_modules/.bin/sshpk-conv | 1 + src/drivers/npm/node_modules/.bin/sshpk-sign | 1 + .../npm/node_modules/.bin/sshpk-verify | 1 + src/drivers/npm/node_modules/.bin/uuid | 1 + src/drivers/npm/node_modules/.bin/which | 1 + src/drivers/npm/node_modules/.yarn-integrity | 164 + .../npm/node_modules/ansi-regex/index.js | 4 + .../npm/node_modules/ansi-regex/license | 21 + .../npm/node_modules/ansi-regex/package.json | 64 + .../npm/node_modules/ansi-regex/readme.md | 39 + .../npm/node_modules/ansi-styles/index.js | 65 + .../npm/node_modules/ansi-styles/license | 21 + .../npm/node_modules/ansi-styles/package.json | 50 + .../npm/node_modules/ansi-styles/readme.md | 86 + src/drivers/npm/node_modules/asn1/.npmignore | 2 + src/drivers/npm/node_modules/asn1/.travis.yml | 4 + src/drivers/npm/node_modules/asn1/LICENSE | 19 + src/drivers/npm/node_modules/asn1/README.md | 50 + .../npm/node_modules/asn1/lib/ber/errors.js | 13 + .../npm/node_modules/asn1/lib/ber/index.js | 27 + .../npm/node_modules/asn1/lib/ber/reader.js | 261 + .../npm/node_modules/asn1/lib/ber/types.js | 36 + .../npm/node_modules/asn1/lib/ber/writer.js | 316 + .../npm/node_modules/asn1/lib/index.js | 20 + .../npm/node_modules/asn1/package.json | 24 + .../node_modules/asn1/tst/ber/reader.test.js | 208 + .../node_modules/asn1/tst/ber/writer.test.js | 370 + .../npm/node_modules/assert-plus/AUTHORS | 6 + .../npm/node_modules/assert-plus/CHANGES.md | 14 + .../npm/node_modules/assert-plus/README.md | 162 + .../npm/node_modules/assert-plus/assert.js | 211 + .../npm/node_modules/assert-plus/package.json | 23 + src/drivers/npm/node_modules/asynckit/LICENSE | 21 + .../npm/node_modules/asynckit/README.md | 233 + .../npm/node_modules/asynckit/bench.js | 76 + .../npm/node_modules/asynckit/index.js | 6 + .../npm/node_modules/asynckit/lib/abort.js | 29 + .../npm/node_modules/asynckit/lib/async.js | 34 + .../npm/node_modules/asynckit/lib/defer.js | 26 + .../npm/node_modules/asynckit/lib/iterate.js | 75 + .../asynckit/lib/readable_asynckit.js | 91 + .../asynckit/lib/readable_parallel.js | 25 + .../asynckit/lib/readable_serial.js | 25 + .../asynckit/lib/readable_serial_ordered.js | 29 + .../npm/node_modules/asynckit/lib/state.js | 37 + .../node_modules/asynckit/lib/streamify.js | 141 + .../node_modules/asynckit/lib/terminator.js | 29 + .../npm/node_modules/asynckit/package.json | 63 + .../npm/node_modules/asynckit/parallel.js | 43 + .../npm/node_modules/asynckit/serial.js | 17 + .../node_modules/asynckit/serialOrdered.js | 75 + .../npm/node_modules/asynckit/stream.js | 21 + .../npm/node_modules/aws-sign2/LICENSE | 55 + .../npm/node_modules/aws-sign2/README.md | 4 + .../npm/node_modules/aws-sign2/index.js | 212 + .../npm/node_modules/aws-sign2/package.json | 17 + src/drivers/npm/node_modules/aws4/.npmignore | 4 + src/drivers/npm/node_modules/aws4/.tern-port | 1 + src/drivers/npm/node_modules/aws4/.travis.yml | 5 + src/drivers/npm/node_modules/aws4/LICENSE | 19 + src/drivers/npm/node_modules/aws4/README.md | 523 + src/drivers/npm/node_modules/aws4/aws4.js | 332 + src/drivers/npm/node_modules/aws4/lru.js | 96 + .../npm/node_modules/aws4/package.json | 71 + .../npm/node_modules/bcrypt-pbkdf/README.md | 39 + .../npm/node_modules/bcrypt-pbkdf/index.js | 556 + .../node_modules/bcrypt-pbkdf/package.json | 11 + src/drivers/npm/node_modules/boom/.npmignore | 18 + src/drivers/npm/node_modules/boom/.travis.yml | 8 + .../npm/node_modules/boom/CONTRIBUTING.md | 1 + src/drivers/npm/node_modules/boom/LICENSE | 28 + src/drivers/npm/node_modules/boom/README.md | 652 + .../npm/node_modules/boom/images/boom.png | Bin 0 -> 29479 bytes .../npm/node_modules/boom/lib/index.js | 318 + .../npm/node_modules/boom/package.json | 26 + .../npm/node_modules/boom/test/index.js | 654 + src/drivers/npm/node_modules/caseless/LICENSE | 28 + .../npm/node_modules/caseless/README.md | 45 + .../npm/node_modules/caseless/index.js | 66 + .../npm/node_modules/caseless/package.json | 27 + src/drivers/npm/node_modules/caseless/test.js | 40 + src/drivers/npm/node_modules/chalk/index.js | 116 + src/drivers/npm/node_modules/chalk/license | 21 + .../npm/node_modules/chalk/package.json | 70 + src/drivers/npm/node_modules/chalk/readme.md | 213 + .../npm/node_modules/combined-stream/License | 19 + .../node_modules/combined-stream/Readme.md | 138 + .../combined-stream/lib/combined_stream.js | 188 + .../node_modules/combined-stream/package.json | 25 + .../npm/node_modules/commander/History.md | 298 + .../npm/node_modules/commander/LICENSE | 22 + .../npm/node_modules/commander/Readme.md | 351 + .../npm/node_modules/commander/index.js | 1137 + .../npm/node_modules/commander/package.json | 29 + .../npm/node_modules/concat-stream/LICENSE | 24 + .../npm/node_modules/concat-stream/index.js | 136 + .../node_modules/concat-stream/package.json | 54 + .../npm/node_modules/concat-stream/readme.md | 94 + .../npm/node_modules/core-util-is/LICENSE | 19 + .../npm/node_modules/core-util-is/README.md | 3 + .../npm/node_modules/core-util-is/float.patch | 604 + .../npm/node_modules/core-util-is/lib/util.js | 107 + .../node_modules/core-util-is/package.json | 32 + .../npm/node_modules/core-util-is/test.js | 68 + .../npm/node_modules/cryptiles/.npmignore | 18 + .../npm/node_modules/cryptiles/.travis.yml | 8 + .../npm/node_modules/cryptiles/LICENSE | 28 + .../npm/node_modules/cryptiles/README.md | 16 + .../npm/node_modules/cryptiles/lib/index.js | 68 + .../npm/node_modules/cryptiles/package.json | 27 + .../npm/node_modules/cryptiles/test/index.js | 102 + .../npm/node_modules/dashdash/CHANGES.md | 364 + .../npm/node_modules/dashdash/LICENSE.txt | 24 + .../npm/node_modules/dashdash/README.md | 574 + .../dashdash/etc/dashdash.bash_completion.in | 389 + .../npm/node_modules/dashdash/lib/dashdash.js | 1055 + .../npm/node_modules/dashdash/package.json | 26 + src/drivers/npm/node_modules/debug/Readme.md | 115 + src/drivers/npm/node_modules/debug/debug.js | 137 + src/drivers/npm/node_modules/debug/index.js | 5 + .../npm/node_modules/debug/lib/debug.js | 147 + .../npm/node_modules/debug/package.json | 24 + .../node_modules/delayed-stream/.npmignore | 1 + .../npm/node_modules/delayed-stream/License | 19 + .../npm/node_modules/delayed-stream/Makefile | 7 + .../npm/node_modules/delayed-stream/Readme.md | 141 + .../delayed-stream/lib/delayed_stream.js | 107 + .../node_modules/delayed-stream/package.json | 27 + .../npm/node_modules/ecc-jsbn/.npmignore | 15 + src/drivers/npm/node_modules/ecc-jsbn/LICENSE | 21 + .../npm/node_modules/ecc-jsbn/README.md | 8 + .../npm/node_modules/ecc-jsbn/index.js | 57 + .../node_modules/ecc-jsbn/lib/LICENSE-jsbn | 40 + .../npm/node_modules/ecc-jsbn/lib/ec.js | 561 + .../npm/node_modules/ecc-jsbn/lib/sec.js | 170 + .../npm/node_modules/ecc-jsbn/package.json | 39 + src/drivers/npm/node_modules/ecc-jsbn/test.js | 14 + .../npm/node_modules/es6-promise/CHANGELOG.md | 113 + .../npm/node_modules/es6-promise/LICENSE | 19 + .../npm/node_modules/es6-promise/README.md | 82 + .../npm/node_modules/es6-promise/auto.js | 4 + .../es6-promise/dist/es6-promise.auto.js | 1159 + .../es6-promise/dist/es6-promise.auto.map | 1 + .../es6-promise/dist/es6-promise.auto.min.js | 1 + .../es6-promise/dist/es6-promise.auto.min.map | 1 + .../es6-promise/dist/es6-promise.js | 1157 + .../es6-promise/dist/es6-promise.map | 1 + .../es6-promise/dist/es6-promise.min.js | 1 + .../es6-promise/dist/es6-promise.min.map | 1 + .../node_modules/es6-promise/es6-promise.d.ts | 74 + .../es6-promise/lib/es6-promise.js | 7 + .../es6-promise/lib/es6-promise/-internal.js | 270 + .../es6-promise/lib/es6-promise/asap.js | 120 + .../es6-promise/lib/es6-promise/enumerator.js | 114 + .../es6-promise/lib/es6-promise/polyfill.js | 35 + .../es6-promise/lib/es6-promise/promise.js | 383 + .../lib/es6-promise/promise/all.js | 52 + .../lib/es6-promise/promise/race.js | 84 + .../lib/es6-promise/promise/reject.js | 46 + .../lib/es6-promise/promise/resolve.js | 48 + .../es6-promise/lib/es6-promise/then.js | 32 + .../es6-promise/lib/es6-promise/utils.js | 20 + .../npm/node_modules/es6-promise/package.json | 65 + .../escape-string-regexp/index.js | 11 + .../node_modules/escape-string-regexp/license | 21 + .../escape-string-regexp/package.json | 41 + .../escape-string-regexp/readme.md | 27 + src/drivers/npm/node_modules/extend/.eslintrc | 17 + .../npm/node_modules/extend/.jscs.json | 175 + .../npm/node_modules/extend/.npmignore | 1 + .../npm/node_modules/extend/.travis.yml | 179 + .../npm/node_modules/extend/CHANGELOG.md | 77 + src/drivers/npm/node_modules/extend/LICENSE | 23 + src/drivers/npm/node_modules/extend/README.md | 81 + .../npm/node_modules/extend/component.json | 32 + src/drivers/npm/node_modules/extend/index.js | 86 + .../npm/node_modules/extend/package.json | 43 + .../npm/node_modules/extract-zip/.npmignore | 1 + .../npm/node_modules/extract-zip/.travis.yml | 4 + .../node_modules/extract-zip/CONTRIBUTING.md | 1 + .../npm/node_modules/extract-zip/cli.js | 20 + .../npm/node_modules/extract-zip/index.js | 163 + .../extract-zip/node_modules/.bin/mkdirp | 1 + .../npm/node_modules/extract-zip/package.json | 41 + .../npm/node_modules/extract-zip/readme.md | 48 + .../npm/node_modules/extsprintf/.gitmodules | 6 + .../npm/node_modules/extsprintf/LICENSE | 19 + .../npm/node_modules/extsprintf/Makefile | 23 + .../npm/node_modules/extsprintf/Makefile.deps | 39 + .../npm/node_modules/extsprintf/Makefile.targ | 285 + .../npm/node_modules/extsprintf/README.md | 39 + .../extsprintf/examples/simple.js | 2 + .../npm/node_modules/extsprintf/jsl.node.conf | 137 + .../node_modules/extsprintf/lib/extsprintf.js | 166 + .../npm/node_modules/extsprintf/package.json | 13 + .../npm/node_modules/fd-slicer/.npmignore | 2 + .../npm/node_modules/fd-slicer/.travis.yml | 7 + .../npm/node_modules/fd-slicer/CHANGELOG.md | 49 + .../npm/node_modules/fd-slicer/LICENSE | 21 + .../npm/node_modules/fd-slicer/README.md | 189 + .../npm/node_modules/fd-slicer/index.js | 277 + .../npm/node_modules/fd-slicer/package.json | 36 + .../npm/node_modules/fd-slicer/test/test.js | 350 + .../npm/node_modules/forever-agent/LICENSE | 55 + .../npm/node_modules/forever-agent/README.md | 4 + .../npm/node_modules/forever-agent/index.js | 138 + .../node_modules/forever-agent/package.json | 17 + .../npm/node_modules/form-data/License | 19 + .../npm/node_modules/form-data/README.md | 217 + .../npm/node_modules/form-data/lib/browser.js | 2 + .../node_modules/form-data/lib/form_data.js | 444 + .../node_modules/form-data/lib/populate.js | 10 + .../npm/node_modules/form-data/package.json | 65 + .../npm/node_modules/fs-extra/.npmignore | 8 + .../npm/node_modules/fs-extra/CHANGELOG.md | 656 + src/drivers/npm/node_modules/fs-extra/LICENSE | 15 + .../npm/node_modules/fs-extra/README.md | 603 + .../fs-extra/lib/copy-sync/copy-file-sync.js | 42 + .../fs-extra/lib/copy-sync/copy-sync.js | 56 + .../fs-extra/lib/copy-sync/index.js | 3 + .../node_modules/fs-extra/lib/copy/copy.js | 50 + .../node_modules/fs-extra/lib/copy/index.js | 3 + .../npm/node_modules/fs-extra/lib/copy/ncp.js | 232 + .../node_modules/fs-extra/lib/empty/index.js | 47 + .../node_modules/fs-extra/lib/ensure/file.js | 43 + .../node_modules/fs-extra/lib/ensure/index.js | 21 + .../node_modules/fs-extra/lib/ensure/link.js | 58 + .../fs-extra/lib/ensure/symlink-paths.js | 96 + .../fs-extra/lib/ensure/symlink-type.js | 27 + .../fs-extra/lib/ensure/symlink.js | 62 + .../npm/node_modules/fs-extra/lib/index.js | 38 + .../node_modules/fs-extra/lib/json/index.js | 9 + .../fs-extra/lib/json/jsonfile.js | 14 + .../fs-extra/lib/json/output-json-sync.js | 16 + .../fs-extra/lib/json/output-json.js | 24 + .../node_modules/fs-extra/lib/mkdirs/index.js | 9 + .../fs-extra/lib/mkdirs/mkdirs-sync.js | 57 + .../fs-extra/lib/mkdirs/mkdirs.js | 61 + .../node_modules/fs-extra/lib/mkdirs/win32.js | 24 + .../node_modules/fs-extra/lib/move/index.js | 161 + .../node_modules/fs-extra/lib/output/index.js | 35 + .../node_modules/fs-extra/lib/remove/index.js | 15 + .../fs-extra/lib/remove/rimraf.js | 301 + .../node_modules/fs-extra/lib/util/assign.js | 14 + .../node_modules/fs-extra/lib/util/utimes.js | 70 + .../fs-extra/lib/walk-sync/index.js | 20 + .../node_modules/fs-extra/lib/walk/index.js | 5 + .../npm/node_modules/fs-extra/package.json | 61 + .../node_modules/generate-function/.npmignore | 1 + .../generate-function/.travis.yml | 3 + .../node_modules/generate-function/README.md | 72 + .../node_modules/generate-function/example.js | 27 + .../node_modules/generate-function/index.js | 61 + .../generate-function/package.json | 29 + .../node_modules/generate-function/test.js | 33 + .../generate-object-property/.npmignore | 1 + .../generate-object-property/.travis.yml | 3 + .../generate-object-property/LICENSE | 21 + .../generate-object-property/README.md | 19 + .../generate-object-property/index.js | 12 + .../generate-object-property/package.json | 25 + .../generate-object-property/test.js | 12 + .../npm/node_modules/getpass/.npmignore | 8 + .../npm/node_modules/getpass/.travis.yml | 9 + src/drivers/npm/node_modules/getpass/LICENSE | 18 + .../npm/node_modules/getpass/README.md | 32 + .../npm/node_modules/getpass/lib/index.js | 123 + .../npm/node_modules/getpass/package.json | 18 + .../npm/node_modules/graceful-fs/LICENSE | 15 + .../npm/node_modules/graceful-fs/README.md | 133 + .../npm/node_modules/graceful-fs/fs.js | 21 + .../node_modules/graceful-fs/graceful-fs.js | 262 + .../graceful-fs/legacy-streams.js | 118 + .../npm/node_modules/graceful-fs/package.json | 47 + .../npm/node_modules/graceful-fs/polyfills.js | 330 + .../npm/node_modules/har-validator/LICENSE | 13 + .../npm/node_modules/har-validator/README.md | 309 + .../har-validator/bin/har-validator | 56 + .../node_modules/har-validator/lib/async.js | 14 + .../node_modules/har-validator/lib/error.js | 10 + .../node_modules/har-validator/lib/index.js | 22 + .../node_modules/har-validator/lib/runner.js | 29 + .../har-validator/lib/schemas/cache.json | 13 + .../har-validator/lib/schemas/cacheEntry.json | 31 + .../har-validator/lib/schemas/content.json | 27 + .../har-validator/lib/schemas/cookie.json | 34 + .../har-validator/lib/schemas/creator.json | 18 + .../har-validator/lib/schemas/entry.json | 51 + .../har-validator/lib/schemas/har.json | 11 + .../har-validator/lib/schemas/index.js | 49 + .../har-validator/lib/schemas/log.json | 34 + .../har-validator/lib/schemas/page.json | 30 + .../lib/schemas/pageTimings.json | 16 + .../har-validator/lib/schemas/postData.json | 41 + .../har-validator/lib/schemas/record.json | 18 + .../har-validator/lib/schemas/request.json | 55 + .../har-validator/lib/schemas/response.json | 52 + .../har-validator/lib/schemas/timings.json | 40 + .../node_modules/har-validator/package.json | 55 + .../npm/node_modules/has-ansi/index.js | 4 + src/drivers/npm/node_modules/has-ansi/license | 21 + .../npm/node_modules/has-ansi/package.json | 55 + .../npm/node_modules/has-ansi/readme.md | 36 + src/drivers/npm/node_modules/hasha/index.js | 70 + src/drivers/npm/node_modules/hasha/license | 21 + .../npm/node_modules/hasha/package.json | 52 + src/drivers/npm/node_modules/hasha/readme.md | 120 + src/drivers/npm/node_modules/hawk/.npmignore | 20 + src/drivers/npm/node_modules/hawk/.travis.yml | 5 + src/drivers/npm/node_modules/hawk/LICENSE | 28 + src/drivers/npm/node_modules/hawk/README.md | 634 + src/drivers/npm/node_modules/hawk/bower.json | 24 + .../npm/node_modules/hawk/component.json | 19 + .../npm/node_modules/hawk/dist/client.js | 343 + .../npm/node_modules/hawk/example/usage.js | 78 + .../npm/node_modules/hawk/images/hawk.png | Bin 0 -> 6945 bytes .../npm/node_modules/hawk/images/logo.png | Bin 0 -> 71732 bytes .../npm/node_modules/hawk/lib/browser.js | 637 + .../npm/node_modules/hawk/lib/client.js | 369 + .../npm/node_modules/hawk/lib/crypto.js | 126 + .../npm/node_modules/hawk/lib/index.js | 15 + .../npm/node_modules/hawk/lib/server.js | 548 + .../npm/node_modules/hawk/lib/utils.js | 184 + .../npm/node_modules/hawk/package.json | 34 + .../npm/node_modules/hawk/test/browser.js | 1492 + .../npm/node_modules/hawk/test/client.js | 440 + .../npm/node_modules/hawk/test/crypto.js | 70 + .../npm/node_modules/hawk/test/index.js | 378 + .../npm/node_modules/hawk/test/readme.js | 95 + .../npm/node_modules/hawk/test/server.js | 1329 + src/drivers/npm/node_modules/hawk/test/uri.js | 838 + .../npm/node_modules/hawk/test/utils.js | 149 + src/drivers/npm/node_modules/hoek/.npmignore | 18 + src/drivers/npm/node_modules/hoek/.travis.yml | 7 + .../npm/node_modules/hoek/CONTRIBUTING.md | 1 + src/drivers/npm/node_modules/hoek/LICENSE | 31 + src/drivers/npm/node_modules/hoek/README.md | 584 + .../npm/node_modules/hoek/images/hoek.png | Bin 0 -> 37939 bytes .../npm/node_modules/hoek/lib/escape.js | 132 + .../npm/node_modules/hoek/lib/index.js | 993 + .../npm/node_modules/hoek/package.json | 23 + .../npm/node_modules/hoek/test/escaper.js | 88 + .../npm/node_modules/hoek/test/index.js | 2513 + .../node_modules/hoek/test/modules/ignore.txt | 0 .../node_modules/hoek/test/modules/test1.js | 1 + .../node_modules/hoek/test/modules/test2.js | 1 + .../node_modules/hoek/test/modules/test3.js | 1 + .../http-signature/.dir-locals.el | 6 + .../node_modules/http-signature/.npmignore | 7 + .../node_modules/http-signature/CHANGES.md | 46 + .../npm/node_modules/http-signature/LICENSE | 18 + .../npm/node_modules/http-signature/README.md | 79 + .../http-signature/http_signing.md | 363 + .../node_modules/http-signature/lib/index.js | 29 + .../node_modules/http-signature/lib/parser.js | 318 + .../node_modules/http-signature/lib/signer.js | 399 + .../node_modules/http-signature/lib/utils.js | 112 + .../node_modules/http-signature/lib/verify.js | 88 + .../node_modules/.bin/sshpk-conv | 1 + .../node_modules/.bin/sshpk-sign | 1 + .../node_modules/.bin/sshpk-verify | 1 + .../node_modules/assert-plus/AUTHORS | 6 + .../node_modules/assert-plus/CHANGES.md | 8 + .../node_modules/assert-plus/README.md | 155 + .../node_modules/assert-plus/assert.js | 206 + .../node_modules/assert-plus/package.json | 23 + .../node_modules/http-signature/package.json | 39 + src/drivers/npm/node_modules/inherits/LICENSE | 16 + .../npm/node_modules/inherits/README.md | 42 + .../npm/node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../npm/node_modules/inherits/package.json | 29 + .../node_modules/is-my-json-valid/.npmignore | 2 + .../node_modules/is-my-json-valid/.travis.yml | 3 + .../npm/node_modules/is-my-json-valid/LICENSE | 21 + .../node_modules/is-my-json-valid/README.md | 200 + .../node_modules/is-my-json-valid/example.js | 18 + .../node_modules/is-my-json-valid/formats.js | 14 + .../node_modules/is-my-json-valid/index.js | 590 + .../is-my-json-valid/package.json | 34 + .../node_modules/is-my-json-valid/require.js | 12 + .../is-my-json-valid/test/fixtures/cosmic.js | 84 + .../json-schema-draft4/additionalItems.json | 82 + .../additionalProperties.json | 88 + .../test/json-schema-draft4/allOf.json | 112 + .../test/json-schema-draft4/anyOf.json | 68 + .../test/json-schema-draft4/bignum.json | 107 + .../test/json-schema-draft4/default.json | 49 + .../test/json-schema-draft4/definitions.json | 32 + .../test/json-schema-draft4/dependencies.json | 113 + .../test/json-schema-draft4/enum.json | 72 + .../test/json-schema-draft4/format.json | 143 + .../test/json-schema-draft4/items.json | 46 + .../test/json-schema-draft4/maxItems.json | 28 + .../test/json-schema-draft4/maxLength.json | 28 + .../json-schema-draft4/maxProperties.json | 28 + .../test/json-schema-draft4/maximum.json | 42 + .../test/json-schema-draft4/minItems.json | 28 + .../test/json-schema-draft4/minLength.json | 28 + .../json-schema-draft4/minProperties.json | 28 + .../test/json-schema-draft4/minimum.json | 42 + .../test/json-schema-draft4/multipleOf.json | 96 + .../test/json-schema-draft4/not.json | 96 + .../json-schema-draft4/nullAndFormat.json | 18 + .../json-schema-draft4/nullAndObject.json | 18 + .../test/json-schema-draft4/oneOf.json | 68 + .../test/json-schema-draft4/pattern.json | 23 + .../json-schema-draft4/patternProperties.json | 110 + .../test/json-schema-draft4/properties.json | 92 + .../test/json-schema-draft4/ref.json | 128 + .../test/json-schema-draft4/refRemote.json | 74 + .../test/json-schema-draft4/required.json | 39 + .../test/json-schema-draft4/type.json | 330 + .../test/json-schema-draft4/uniqueItems.json | 79 + .../is-my-json-valid/test/json-schema.js | 23 + .../is-my-json-valid/test/misc.js | 471 + .../npm/node_modules/is-property/.npmignore | 17 + .../npm/node_modules/is-property/LICENSE | 22 + .../npm/node_modules/is-property/README.md | 28 + .../node_modules/is-property/is-property.js | 5 + .../npm/node_modules/is-property/package.json | 36 + .../npm/node_modules/is-stream/index.js | 21 + .../npm/node_modules/is-stream/license | 21 + .../npm/node_modules/is-stream/package.json | 38 + .../npm/node_modules/is-stream/readme.md | 42 + .../npm/node_modules/is-typedarray/LICENSE.md | 18 + .../npm/node_modules/is-typedarray/README.md | 16 + .../npm/node_modules/is-typedarray/index.js | 41 + .../node_modules/is-typedarray/package.json | 30 + .../npm/node_modules/is-typedarray/test.js | 34 + .../npm/node_modules/isarray/.npmignore | 1 + .../npm/node_modules/isarray/.travis.yml | 4 + src/drivers/npm/node_modules/isarray/Makefile | 6 + .../npm/node_modules/isarray/README.md | 60 + .../npm/node_modules/isarray/component.json | 19 + src/drivers/npm/node_modules/isarray/index.js | 5 + .../npm/node_modules/isarray/package.json | 45 + src/drivers/npm/node_modules/isarray/test.js | 20 + src/drivers/npm/node_modules/isexe/.npmignore | 2 + src/drivers/npm/node_modules/isexe/LICENSE | 15 + src/drivers/npm/node_modules/isexe/README.md | 51 + src/drivers/npm/node_modules/isexe/index.js | 57 + src/drivers/npm/node_modules/isexe/mode.js | 41 + .../npm/node_modules/isexe/package.json | 31 + .../npm/node_modules/isexe/test/basic.js | 221 + src/drivers/npm/node_modules/isexe/windows.js | 42 + .../npm/node_modules/isstream/.jshintrc | 59 + .../npm/node_modules/isstream/.npmignore | 1 + .../npm/node_modules/isstream/.travis.yml | 12 + .../npm/node_modules/isstream/LICENSE.md | 11 + .../npm/node_modules/isstream/README.md | 66 + .../npm/node_modules/isstream/isstream.js | 27 + .../npm/node_modules/isstream/package.json | 33 + src/drivers/npm/node_modules/isstream/test.js | 168 + src/drivers/npm/node_modules/jsbn/.npmignore | 2 + src/drivers/npm/node_modules/jsbn/LICENSE | 40 + src/drivers/npm/node_modules/jsbn/README.md | 175 + .../npm/node_modules/jsbn/example.html | 12 + src/drivers/npm/node_modules/jsbn/example.js | 3 + src/drivers/npm/node_modules/jsbn/index.js | 1357 + .../npm/node_modules/jsbn/package.json | 21 + .../npm/node_modules/json-schema/README.md | 5 + .../json-schema/draft-00/hyper-schema | 68 + .../json-schema/draft-00/json-ref | 26 + .../node_modules/json-schema/draft-00/links | 33 + .../node_modules/json-schema/draft-00/schema | 155 + .../json-schema/draft-01/hyper-schema | 68 + .../json-schema/draft-01/json-ref | 26 + .../node_modules/json-schema/draft-01/links | 33 + .../node_modules/json-schema/draft-01/schema | 155 + .../json-schema/draft-02/hyper-schema | 68 + .../json-schema/draft-02/json-ref | 26 + .../node_modules/json-schema/draft-02/links | 35 + .../node_modules/json-schema/draft-02/schema | 166 + .../json-schema/draft-03/examples/address | 20 + .../json-schema/draft-03/examples/calendar | 53 + .../json-schema/draft-03/examples/card | 105 + .../json-schema/draft-03/examples/geo | 8 + .../json-schema/draft-03/examples/interfaces | 23 + .../json-schema/draft-03/hyper-schema | 60 + .../json-schema/draft-03/json-ref | 26 + .../node_modules/json-schema/draft-03/links | 35 + .../node_modules/json-schema/draft-03/schema | 174 + .../json-schema/draft-04/hyper-schema | 60 + .../node_modules/json-schema/draft-04/links | 41 + .../node_modules/json-schema/draft-04/schema | 189 + .../json-schema/draft-zyp-json-schema-03.xml | 1120 + .../json-schema/draft-zyp-json-schema-04.xml | 1072 + .../npm/node_modules/json-schema/lib/links.js | 66 + .../node_modules/json-schema/lib/validate.js | 273 + .../npm/node_modules/json-schema/package.json | 31 + .../node_modules/json-schema/test/tests.js | 95 + .../json-stringify-safe/.npmignore | 1 + .../json-stringify-safe/CHANGELOG.md | 14 + .../node_modules/json-stringify-safe/LICENSE | 15 + .../node_modules/json-stringify-safe/Makefile | 35 + .../json-stringify-safe/README.md | 52 + .../json-stringify-safe/package.json | 31 + .../json-stringify-safe/stringify.js | 27 + .../json-stringify-safe/test/mocha.opts | 2 + .../test/stringify_test.js | 246 + .../npm/node_modules/jsonfile/.npmignore | 2 + .../npm/node_modules/jsonfile/CHANGELOG.md | 126 + src/drivers/npm/node_modules/jsonfile/LICENSE | 15 + .../npm/node_modules/jsonfile/README.md | 162 + .../npm/node_modules/jsonfile/appveyor.yml | 28 + .../npm/node_modules/jsonfile/index.js | 133 + .../npm/node_modules/jsonfile/package.json | 35 + .../npm/node_modules/jsonpointer/LICENSE.md | 21 + .../npm/node_modules/jsonpointer/README.md | 39 + .../node_modules/jsonpointer/jsonpointer.js | 93 + .../npm/node_modules/jsonpointer/package.json | 37 + .../npm/node_modules/jsprim/CHANGES.md | 43 + src/drivers/npm/node_modules/jsprim/LICENSE | 19 + src/drivers/npm/node_modules/jsprim/README.md | 292 + .../npm/node_modules/jsprim/lib/jsprim.js | 735 + .../npm/node_modules/jsprim/package.json | 20 + src/drivers/npm/node_modules/kew/.npmignore | 15 + src/drivers/npm/node_modules/kew/.travis.yml | 5 + src/drivers/npm/node_modules/kew/LICENSE.TXT | 194 + src/drivers/npm/node_modules/kew/README.md | 320 + src/drivers/npm/node_modules/kew/kew.js | 860 + src/drivers/npm/node_modules/kew/package.json | 31 + .../npm/node_modules/kew/test/chain.js | 434 + .../npm/node_modules/kew/test/closure_test.js | 135 + .../npm/node_modules/kew/test/context.js | 89 + .../npm/node_modules/kew/test/defer.js | 120 + .../npm/node_modules/kew/test/externs_node.js | 9 + .../npm/node_modules/kew/test/later.js | 45 + .../npm/node_modules/kew/test/scopes.js | 59 + .../npm/node_modules/kew/test/spread.js | 59 + .../npm/node_modules/kew/test/static.js | 393 + src/drivers/npm/node_modules/klaw/.npmignore | 3 + .../npm/node_modules/klaw/CHANGELOG.md | 42 + src/drivers/npm/node_modules/klaw/LICENSE | 15 + src/drivers/npm/node_modules/klaw/README.md | 270 + .../npm/node_modules/klaw/package.json | 40 + .../npm/node_modules/klaw/src/assign.js | 16 + .../npm/node_modules/klaw/src/index.js | 57 + .../npm/node_modules/mime-db/HISTORY.md | 412 + src/drivers/npm/node_modules/mime-db/LICENSE | 22 + .../npm/node_modules/mime-db/README.md | 82 + src/drivers/npm/node_modules/mime-db/db.json | 6805 ++ src/drivers/npm/node_modules/mime-db/index.js | 11 + .../npm/node_modules/mime-db/package.json | 55 + .../npm/node_modules/mime-types/HISTORY.md | 223 + .../npm/node_modules/mime-types/LICENSE | 23 + .../npm/node_modules/mime-types/README.md | 108 + .../npm/node_modules/mime-types/index.js | 188 + .../npm/node_modules/mime-types/package.json | 41 + .../npm/node_modules/minimist/.travis.yml | 4 + src/drivers/npm/node_modules/minimist/LICENSE | 18 + .../node_modules/minimist/example/parse.js | 2 + .../npm/node_modules/minimist/index.js | 187 + .../npm/node_modules/minimist/package.json | 40 + .../npm/node_modules/minimist/readme.markdown | 73 + .../npm/node_modules/minimist/test/dash.js | 24 + .../minimist/test/default_bool.js | 20 + .../npm/node_modules/minimist/test/dotted.js | 16 + .../npm/node_modules/minimist/test/long.js | 31 + .../npm/node_modules/minimist/test/parse.js | 318 + .../minimist/test/parse_modified.js | 9 + .../npm/node_modules/minimist/test/short.js | 67 + .../node_modules/minimist/test/whitespace.js | 8 + .../npm/node_modules/mkdirp/.npmignore | 2 + .../npm/node_modules/mkdirp/.travis.yml | 5 + src/drivers/npm/node_modules/mkdirp/LICENSE | 21 + .../npm/node_modules/mkdirp/bin/cmd.js | 33 + .../npm/node_modules/mkdirp/bin/usage.txt | 12 + .../npm/node_modules/mkdirp/examples/pow.js | 6 + src/drivers/npm/node_modules/mkdirp/index.js | 97 + .../npm/node_modules/mkdirp/package.json | 27 + .../npm/node_modules/mkdirp/readme.markdown | 100 + .../npm/node_modules/mkdirp/test/chmod.js | 38 + .../npm/node_modules/mkdirp/test/clobber.js | 37 + .../npm/node_modules/mkdirp/test/mkdirp.js | 26 + .../npm/node_modules/mkdirp/test/opts_fs.js | 27 + .../node_modules/mkdirp/test/opts_fs_sync.js | 25 + .../npm/node_modules/mkdirp/test/perm.js | 30 + .../npm/node_modules/mkdirp/test/perm_sync.js | 34 + .../npm/node_modules/mkdirp/test/race.js | 40 + .../npm/node_modules/mkdirp/test/rel.js | 30 + .../npm/node_modules/mkdirp/test/return.js | 25 + .../node_modules/mkdirp/test/return_sync.js | 24 + .../npm/node_modules/mkdirp/test/root.js | 18 + .../npm/node_modules/mkdirp/test/sync.js | 30 + .../npm/node_modules/mkdirp/test/umask.js | 26 + .../node_modules/mkdirp/test/umask_sync.js | 30 + .../npm/node_modules/oauth-sign/LICENSE | 55 + .../npm/node_modules/oauth-sign/README.md | 4 + .../npm/node_modules/oauth-sign/index.js | 136 + .../npm/node_modules/oauth-sign/package.json | 23 + src/drivers/npm/node_modules/pend/LICENSE | 23 + src/drivers/npm/node_modules/pend/README.md | 41 + src/drivers/npm/node_modules/pend/index.js | 55 + .../npm/node_modules/pend/package.json | 18 + src/drivers/npm/node_modules/pend/test.js | 137 + .../phantomjs-prebuilt/.eslintignore | 2 + .../node_modules/phantomjs-prebuilt/.eslintrc | 22 + .../node_modules/phantomjs-prebuilt/.jshintrc | 4 + .../phantomjs-prebuilt/.npmignore | 5 + .../phantomjs-prebuilt/.travis.yml | 7 + .../phantomjs-prebuilt/LICENSE.txt | 194 + .../node_modules/phantomjs-prebuilt/README.md | 308 + .../phantomjs-prebuilt/bin/phantomjs | 42 + .../phantomjs-prebuilt/install.js | 438 + .../phantomjs-prebuilt/lib/location.js | 3 + .../phantomjs-prebuilt/lib/phantom/ChangeLog | 401 + .../lib/phantom/LICENSE.BSD | 22 + .../phantomjs-prebuilt/lib/phantom/README.md | 29 + .../lib/phantom/bin/phantomjs | Bin 0 -> 67932064 bytes .../lib/phantom/examples/arguments.js | 10 + .../examples/child_process-examples.js | 28 + .../lib/phantom/examples/colorwheel.js | 52 + .../lib/phantom/examples/countdown.js | 10 + .../lib/phantom/examples/detectsniff.js | 60 + .../lib/phantom/examples/echoToFile.js | 24 + .../lib/phantom/examples/features.js | 30 + .../lib/phantom/examples/fibo.js | 10 + .../lib/phantom/examples/hello.js | 3 + .../lib/phantom/examples/injectme.js | 26 + .../lib/phantom/examples/loadspeed.js | 24 + .../lib/phantom/examples/loadurlwithoutcss.js | 26 + .../lib/phantom/examples/modernizr.js | 1406 + .../lib/phantom/examples/module.js | 5 + .../lib/phantom/examples/netlog.js | 26 + .../lib/phantom/examples/netsniff.js | 144 + .../lib/phantom/examples/openurlwithproxy.js | 25 + .../lib/phantom/examples/outputEncoding.js | 17 + .../lib/phantom/examples/page_events.js | 147 + .../lib/phantom/examples/pagecallback.js | 18 + .../lib/phantom/examples/phantomwebintro.js | 21 + .../lib/phantom/examples/post.js | 15 + .../lib/phantom/examples/postjson.js | 19 + .../lib/phantom/examples/postserver.js | 35 + .../lib/phantom/examples/printenv.js | 10 + .../lib/phantom/examples/printheaderfooter.js | 90 + .../lib/phantom/examples/printmargins.js | 36 + .../lib/phantom/examples/rasterize.js | 49 + .../lib/phantom/examples/render_multi_url.js | 74 + .../phantom/examples/responsive-screenshot.js | 181 + .../lib/phantom/examples/run-jasmine.js | 92 + .../lib/phantom/examples/run-jasmine2.js | 94 + .../lib/phantom/examples/run-qunit.js | 77 + .../lib/phantom/examples/scandir.js | 24 + .../lib/phantom/examples/server.js | 44 + .../lib/phantom/examples/serverkeepalive.js | 35 + .../lib/phantom/examples/simpleserver.js | 43 + .../lib/phantom/examples/sleepsort.js | 27 + .../phantom/examples/stdin-stdout-stderr.js | 19 + .../lib/phantom/examples/universe.js | 10 + .../lib/phantom/examples/unrandomize.js | 25 + .../lib/phantom/examples/useragent.js | 15 + .../lib/phantom/examples/version.js | 6 + .../lib/phantom/examples/waitfor.js | 58 + .../phantom/examples/walk_through_frames.js | 73 + .../lib/phantom/third-party.txt | 36 + .../phantomjs-prebuilt/lib/phantomjs.js | 124 + .../phantomjs-prebuilt/lib/util.js | 161 + .../node_modules/.bin/extract-zip | 1 + .../node_modules/.bin/which | 1 + .../phantomjs-prebuilt/package.json | 57 + .../phantomjs-prebuilt/test/exit.js | 1 + .../phantomjs-prebuilt/test/loadspeed.js | 25 + .../phantomjs-prebuilt/test/tests.js | 136 + .../npm/node_modules/pinkie-promise/index.js | 3 + .../npm/node_modules/pinkie-promise/license | 21 + .../node_modules/pinkie-promise/package.json | 35 + .../npm/node_modules/pinkie-promise/readme.md | 28 + src/drivers/npm/node_modules/pinkie/index.js | 292 + src/drivers/npm/node_modules/pinkie/license | 21 + .../npm/node_modules/pinkie/package.json | 36 + src/drivers/npm/node_modules/pinkie/readme.md | 83 + .../process-nextick-args/.travis.yml | 12 + .../process-nextick-args/index.js | 43 + .../process-nextick-args/license.md | 19 + .../process-nextick-args/package.json | 22 + .../process-nextick-args/readme.md | 18 + .../node_modules/process-nextick-args/test.js | 24 + .../npm/node_modules/progress/.npmignore | 4 + .../npm/node_modules/progress/History.md | 77 + src/drivers/npm/node_modules/progress/LICENSE | 22 + .../npm/node_modules/progress/Makefile | 8 + .../npm/node_modules/progress/Readme.md | 103 + .../npm/node_modules/progress/index.js | 1 + .../progress/lib/node-progress.js | 180 + .../npm/node_modules/progress/package.json | 21 + .../npm/node_modules/punycode/LICENSE-MIT.txt | 20 + .../npm/node_modules/punycode/README.md | 176 + .../npm/node_modules/punycode/package.json | 60 + .../npm/node_modules/punycode/punycode.js | 533 + src/drivers/npm/node_modules/qs/.eslintignore | 1 + src/drivers/npm/node_modules/qs/.eslintrc | 19 + src/drivers/npm/node_modules/qs/CHANGELOG.md | 163 + src/drivers/npm/node_modules/qs/LICENSE | 28 + src/drivers/npm/node_modules/qs/README.md | 431 + src/drivers/npm/node_modules/qs/dist/qs.js | 590 + .../npm/node_modules/qs/lib/formats.js | 18 + src/drivers/npm/node_modules/qs/lib/index.js | 11 + src/drivers/npm/node_modules/qs/lib/parse.js | 167 + .../npm/node_modules/qs/lib/stringify.js | 200 + src/drivers/npm/node_modules/qs/lib/utils.js | 182 + src/drivers/npm/node_modules/qs/package.json | 50 + .../npm/node_modules/qs/test/.eslintrc | 10 + src/drivers/npm/node_modules/qs/test/index.js | 7 + src/drivers/npm/node_modules/qs/test/parse.js | 519 + .../npm/node_modules/qs/test/stringify.js | 538 + src/drivers/npm/node_modules/qs/test/utils.js | 22 + .../node_modules/readable-stream/.npmignore | 5 + .../node_modules/readable-stream/.travis.yml | 52 + .../node_modules/readable-stream/.zuul.yml | 1 + .../npm/node_modules/readable-stream/LICENSE | 18 + .../node_modules/readable-stream/README.md | 36 + .../readable-stream/doc/stream.markdown | 1760 + .../doc/wg-meetings/2015-01-30.md | 60 + .../node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 75 + .../lib/_stream_passthrough.js | 26 + .../readable-stream/lib/_stream_readable.js | 880 + .../readable-stream/lib/_stream_transform.js | 180 + .../readable-stream/lib/_stream_writable.js | 516 + .../node_modules/readable-stream/package.json | 37 + .../readable-stream/passthrough.js | 1 + .../node_modules/readable-stream/readable.js | 12 + .../node_modules/readable-stream/transform.js | 1 + .../node_modules/readable-stream/writable.js | 1 + .../request-progress/.editorconfig | 15 + .../node_modules/request-progress/.jshintrc | 63 + .../node_modules/request-progress/.npmignore | 4 + .../node_modules/request-progress/.travis.yml | 6 + .../npm/node_modules/request-progress/LICENSE | 19 + .../node_modules/request-progress/README.md | 75 + .../npm/node_modules/request-progress/foo.js | 16 + .../node_modules/request-progress/index.js | 125 + .../request-progress/package.json | 41 + .../request-progress/test/test.js | 354 + .../npm/node_modules/request/CHANGELOG.md | 662 + src/drivers/npm/node_modules/request/LICENSE | 55 + .../npm/node_modules/request/README.md | 1098 + src/drivers/npm/node_modules/request/index.js | 156 + .../npm/node_modules/request/lib/auth.js | 168 + .../npm/node_modules/request/lib/cookies.js | 39 + .../request/lib/getProxyFromURI.js | 79 + .../npm/node_modules/request/lib/har.js | 215 + .../npm/node_modules/request/lib/helpers.js | 65 + .../npm/node_modules/request/lib/multipart.js | 112 + .../npm/node_modules/request/lib/oauth.js | 147 + .../node_modules/request/lib/querystring.js | 51 + .../npm/node_modules/request/lib/redirect.js | 157 + .../npm/node_modules/request/lib/tunnel.js | 176 + .../request/node_modules/.bin/har-validator | 1 + .../request/node_modules/.bin/uuid | 1 + .../npm/node_modules/request/package.json | 87 + .../npm/node_modules/request/request.js | 1475 + src/drivers/npm/node_modules/sntp/.npmignore | 18 + src/drivers/npm/node_modules/sntp/.travis.yml | 5 + src/drivers/npm/node_modules/sntp/LICENSE | 28 + src/drivers/npm/node_modules/sntp/Makefile | 9 + src/drivers/npm/node_modules/sntp/README.md | 68 + .../npm/node_modules/sntp/examples/offset.js | 16 + .../npm/node_modules/sntp/examples/time.js | 25 + src/drivers/npm/node_modules/sntp/index.js | 1 + .../npm/node_modules/sntp/lib/index.js | 412 + .../npm/node_modules/sntp/package.json | 32 + .../npm/node_modules/sntp/test/index.js | 435 + src/drivers/npm/node_modules/sshpk/.npmignore | 9 + .../npm/node_modules/sshpk/.travis.yml | 11 + src/drivers/npm/node_modules/sshpk/LICENSE | 18 + src/drivers/npm/node_modules/sshpk/README.md | 698 + .../npm/node_modules/sshpk/bin/sshpk-conv | 201 + .../npm/node_modules/sshpk/bin/sshpk-sign | 191 + .../npm/node_modules/sshpk/bin/sshpk-verify | 166 + .../npm/node_modules/sshpk/lib/algs.js | 168 + .../npm/node_modules/sshpk/lib/certificate.js | 377 + src/drivers/npm/node_modules/sshpk/lib/dhe.js | 411 + .../npm/node_modules/sshpk/lib/ed-compat.js | 96 + .../npm/node_modules/sshpk/lib/errors.js | 84 + .../npm/node_modules/sshpk/lib/fingerprint.js | 161 + .../node_modules/sshpk/lib/formats/auto.js | 73 + .../sshpk/lib/formats/openssh-cert.js | 322 + .../npm/node_modules/sshpk/lib/formats/pem.js | 186 + .../node_modules/sshpk/lib/formats/pkcs1.js | 320 + .../node_modules/sshpk/lib/formats/pkcs8.js | 505 + .../node_modules/sshpk/lib/formats/rfc4253.js | 146 + .../sshpk/lib/formats/ssh-private.js | 261 + .../npm/node_modules/sshpk/lib/formats/ssh.js | 114 + .../sshpk/lib/formats/x509-pem.js | 77 + .../node_modules/sshpk/lib/formats/x509.js | 726 + .../npm/node_modules/sshpk/lib/identity.js | 277 + .../npm/node_modules/sshpk/lib/index.js | 39 + src/drivers/npm/node_modules/sshpk/lib/key.js | 274 + .../npm/node_modules/sshpk/lib/private-key.js | 254 + .../npm/node_modules/sshpk/lib/signature.js | 313 + .../npm/node_modules/sshpk/lib/ssh-buffer.js | 148 + .../npm/node_modules/sshpk/lib/utils.js | 288 + .../node_modules/sshpk/man/man1/sshpk-conv.1 | 135 + .../node_modules/sshpk/man/man1/sshpk-sign.1 | 81 + .../sshpk/man/man1/sshpk-verify.1 | 68 + .../npm/node_modules/sshpk/package.json | 59 + .../node_modules/string_decoder/.npmignore | 2 + .../npm/node_modules/string_decoder/LICENSE | 20 + .../npm/node_modules/string_decoder/README.md | 7 + .../npm/node_modules/string_decoder/index.js | 221 + .../node_modules/string_decoder/package.json | 25 + .../npm/node_modules/stringstream/.npmignore | 15 + .../npm/node_modules/stringstream/.travis.yml | 4 + .../npm/node_modules/stringstream/LICENSE.txt | 22 + .../npm/node_modules/stringstream/README.md | 38 + .../npm/node_modules/stringstream/example.js | 27 + .../node_modules/stringstream/package.json | 18 + .../node_modules/stringstream/stringstream.js | 102 + .../npm/node_modules/strip-ansi/index.js | 6 + .../npm/node_modules/strip-ansi/license | 21 + .../npm/node_modules/strip-ansi/package.json | 57 + .../npm/node_modules/strip-ansi/readme.md | 33 + .../npm/node_modules/supports-color/index.js | 50 + .../npm/node_modules/supports-color/license | 21 + .../node_modules/supports-color/package.json | 49 + .../npm/node_modules/supports-color/readme.md | 36 + .../npm/node_modules/throttleit/.npmignore | 3 + .../npm/node_modules/throttleit/History.md | 19 + .../npm/node_modules/throttleit/Makefile | 18 + .../npm/node_modules/throttleit/Readme.md | 32 + .../node_modules/throttleit/component.json | 13 + .../npm/node_modules/throttleit/example.js | 14 + .../npm/node_modules/throttleit/index.js | 32 + .../npm/node_modules/throttleit/package.json | 22 + .../npm/node_modules/throttleit/test.js | 73 + .../npm/node_modules/tough-cookie/LICENSE | 27 + .../npm/node_modules/tough-cookie/README.md | 506 + .../node_modules/tough-cookie/lib/cookie.js | 1336 + .../node_modules/tough-cookie/lib/memstore.js | 170 + .../tough-cookie/lib/pathMatch.js | 61 + .../tough-cookie/lib/permuteDomain.js | 56 + .../tough-cookie/lib/pubsuffix.js | 98 + .../node_modules/tough-cookie/lib/store.js | 71 + .../node_modules/tough-cookie/package.json | 74 + .../npm/node_modules/tunnel-agent/LICENSE | 55 + .../npm/node_modules/tunnel-agent/README.md | 4 + .../npm/node_modules/tunnel-agent/index.js | 243 + .../node_modules/tunnel-agent/package.json | 20 + .../npm/node_modules/tweetnacl/.npmignore | 4 + .../npm/node_modules/tweetnacl/AUTHORS.md | 28 + .../npm/node_modules/tweetnacl/CHANGELOG.md | 221 + .../npm/node_modules/tweetnacl/LICENSE | 24 + .../tweetnacl/PULL_REQUEST_TEMPLATE.md | 20 + .../npm/node_modules/tweetnacl/README.md | 459 + .../npm/node_modules/tweetnacl/nacl-fast.js | 2388 + .../node_modules/tweetnacl/nacl-fast.min.js | 2 + .../npm/node_modules/tweetnacl/nacl.d.ts | 98 + .../npm/node_modules/tweetnacl/nacl.js | 1175 + .../npm/node_modules/tweetnacl/nacl.min.js | 1 + .../npm/node_modules/tweetnacl/package.json | 58 + .../npm/node_modules/typedarray/.travis.yml | 4 + .../npm/node_modules/typedarray/LICENSE | 35 + .../node_modules/typedarray/example/tarray.js | 4 + .../npm/node_modules/typedarray/index.js | 630 + .../npm/node_modules/typedarray/package.json | 55 + .../node_modules/typedarray/readme.markdown | 61 + .../typedarray/test/server/undef_globals.js | 19 + .../node_modules/typedarray/test/tarray.js | 10 + .../node_modules/util-deprecate/History.md | 16 + .../npm/node_modules/util-deprecate/LICENSE | 24 + .../npm/node_modules/util-deprecate/README.md | 53 + .../node_modules/util-deprecate/browser.js | 67 + .../npm/node_modules/util-deprecate/node.js | 6 + .../node_modules/util-deprecate/package.json | 27 + .../npm/node_modules/uuid/.eslintrc.json | 46 + src/drivers/npm/node_modules/uuid/AUTHORS | 5 + src/drivers/npm/node_modules/uuid/HISTORY.md | 28 + src/drivers/npm/node_modules/uuid/LICENSE.md | 21 + src/drivers/npm/node_modules/uuid/README.md | 227 + src/drivers/npm/node_modules/uuid/bin/uuid | 50 + src/drivers/npm/node_modules/uuid/index.js | 8 + .../npm/node_modules/uuid/lib/bytesToUuid.js | 23 + .../npm/node_modules/uuid/lib/rng-browser.js | 33 + src/drivers/npm/node_modules/uuid/lib/rng.js | 10 + .../npm/node_modules/uuid/lib/sha1-browser.js | 85 + src/drivers/npm/node_modules/uuid/lib/sha1.js | 21 + .../npm/node_modules/uuid/package.json | 28 + src/drivers/npm/node_modules/uuid/v1.js | 100 + src/drivers/npm/node_modules/uuid/v4.js | 29 + src/drivers/npm/node_modules/uuid/v5.js | 42 + .../npm/node_modules/verror/.gitmodules | 0 .../npm/node_modules/verror/.npmignore | 1 + src/drivers/npm/node_modules/verror/LICENSE | 19 + src/drivers/npm/node_modules/verror/Makefile | 35 + .../npm/node_modules/verror/Makefile.targ | 285 + src/drivers/npm/node_modules/verror/README.md | 120 + .../verror/examples/levels-verror.js | 36 + .../verror/examples/levels-werror.js | 34 + .../node_modules/verror/examples/varargs.js | 6 + .../node_modules/verror/examples/verror.js | 13 + .../node_modules/verror/examples/werror.js | 14 + .../npm/node_modules/verror/jsl.node.conf | 139 + .../npm/node_modules/verror/lib/verror.js | 157 + .../npm/node_modules/verror/package.json | 21 + .../node_modules/verror/tests/tst.inherit.js | 100 + .../node_modules/verror/tests/tst.verror.js | 156 + .../node_modules/verror/tests/tst.werror.js | 179 + .../npm/node_modules/which/CHANGELOG.md | 142 + src/drivers/npm/node_modules/which/LICENSE | 15 + src/drivers/npm/node_modules/which/README.md | 48 + src/drivers/npm/node_modules/which/bin/which | 52 + .../npm/node_modules/which/package.json | 30 + src/drivers/npm/node_modules/which/which.js | 132 + src/drivers/npm/node_modules/xtend/.jshintrc | 30 + src/drivers/npm/node_modules/xtend/.npmignore | 1 + src/drivers/npm/node_modules/xtend/LICENCE | 19 + src/drivers/npm/node_modules/xtend/Makefile | 4 + src/drivers/npm/node_modules/xtend/README.md | 32 + .../npm/node_modules/xtend/immutable.js | 19 + src/drivers/npm/node_modules/xtend/mutable.js | 17 + .../npm/node_modules/xtend/package.json | 55 + src/drivers/npm/node_modules/xtend/test.js | 83 + src/drivers/npm/node_modules/yauzl/.npmignore | 2 + .../npm/node_modules/yauzl/.travis.yml | 8 + src/drivers/npm/node_modules/yauzl/LICENSE | 21 + src/drivers/npm/node_modules/yauzl/README.md | 467 + src/drivers/npm/node_modules/yauzl/index.js | 626 + .../npm/node_modules/yauzl/package.json | 36 + src/drivers/npm/yarn.lock | 501 + src/drivers/webextension/.gitignore | 8 +- src/drivers/webextension/background.html | 3 +- src/drivers/webextension/js/.gitkeep | 0 .../webextension/js/browser-polyfill.js | 851 - src/drivers/webextension/js/content.js | 2445 +- src/drivers/webextension/js/driver.js | 85173 +++++++++++++++- src/drivers/webextension/js/i18n.js | 78 +- src/drivers/webextension/js/iframe.js | 1878 +- src/drivers/webextension/js/inject.js | 86 +- .../js/ms_background_scripts_api_bridge.js | 2066 +- .../js/ms_content_scripts_api_bridge.js | 1722 +- src/drivers/webextension/js/network.js | 531 +- src/drivers/webextension/js/options.js | 13650 ++- src/drivers/webextension/js/popup.js | 2613 +- src/drivers/webextension/manifest.json | 2 - src/drivers/webextension/options.html | 2 - src/drivers/webextension/package.json | 12 + src/drivers/webextension/popup.html | 2 - src/drivers/webextension/src/content.js | 77 + src/drivers/webextension/src/driver.js | 244 + src/drivers/webextension/src/iframe.js | 1166 + src/drivers/webextension/src/index.js | 1853 + src/drivers/webextension/src/inject.js | 16 + .../{js => src/modules}/jsontodom.js | 2 + .../src/ms_background_scripts_api_bridge.js | 846 + .../src/ms_content_scripts_api_bridge.js | 323 + src/drivers/webextension/src/network.js | 806 + src/drivers/webextension/src/options.js | 67 + src/drivers/webextension/src/popup.js | 131 + src/drivers/webextension/yarn.lock | 756 + src/modules/application.js | 63 + src/wappalyzer.js | 927 +- webpack.config.js | 52 + yarn.lock | 2620 + 973 files changed, 230961 insertions(+), 3276 deletions(-) create mode 100755 bin/dev create mode 100644 bin/node_modules/.yarn-integrity create mode 100644 bin/yarn.lock create mode 100644 content.js create mode 100644 driver.js create mode 100644 options.js create mode 100644 popup.js create mode 120000 src/drivers/npm/node_modules/.bin/extract-zip create mode 120000 src/drivers/npm/node_modules/.bin/har-validator create mode 120000 src/drivers/npm/node_modules/.bin/mkdirp create mode 120000 src/drivers/npm/node_modules/.bin/phantomjs create mode 120000 src/drivers/npm/node_modules/.bin/sshpk-conv create mode 120000 src/drivers/npm/node_modules/.bin/sshpk-sign create mode 120000 src/drivers/npm/node_modules/.bin/sshpk-verify create mode 120000 src/drivers/npm/node_modules/.bin/uuid create mode 120000 src/drivers/npm/node_modules/.bin/which create mode 100644 src/drivers/npm/node_modules/.yarn-integrity create mode 100644 src/drivers/npm/node_modules/ansi-regex/index.js create mode 100644 src/drivers/npm/node_modules/ansi-regex/license create mode 100644 src/drivers/npm/node_modules/ansi-regex/package.json create mode 100644 src/drivers/npm/node_modules/ansi-regex/readme.md create mode 100644 src/drivers/npm/node_modules/ansi-styles/index.js create mode 100644 src/drivers/npm/node_modules/ansi-styles/license create mode 100644 src/drivers/npm/node_modules/ansi-styles/package.json create mode 100644 src/drivers/npm/node_modules/ansi-styles/readme.md create mode 100644 src/drivers/npm/node_modules/asn1/.npmignore create mode 100644 src/drivers/npm/node_modules/asn1/.travis.yml create mode 100644 src/drivers/npm/node_modules/asn1/LICENSE create mode 100644 src/drivers/npm/node_modules/asn1/README.md create mode 100644 src/drivers/npm/node_modules/asn1/lib/ber/errors.js create mode 100644 src/drivers/npm/node_modules/asn1/lib/ber/index.js create mode 100644 src/drivers/npm/node_modules/asn1/lib/ber/reader.js create mode 100644 src/drivers/npm/node_modules/asn1/lib/ber/types.js create mode 100644 src/drivers/npm/node_modules/asn1/lib/ber/writer.js create mode 100644 src/drivers/npm/node_modules/asn1/lib/index.js create mode 100644 src/drivers/npm/node_modules/asn1/package.json create mode 100644 src/drivers/npm/node_modules/asn1/tst/ber/reader.test.js create mode 100644 src/drivers/npm/node_modules/asn1/tst/ber/writer.test.js create mode 100644 src/drivers/npm/node_modules/assert-plus/AUTHORS create mode 100644 src/drivers/npm/node_modules/assert-plus/CHANGES.md create mode 100644 src/drivers/npm/node_modules/assert-plus/README.md create mode 100644 src/drivers/npm/node_modules/assert-plus/assert.js create mode 100644 src/drivers/npm/node_modules/assert-plus/package.json create mode 100644 src/drivers/npm/node_modules/asynckit/LICENSE create mode 100644 src/drivers/npm/node_modules/asynckit/README.md create mode 100644 src/drivers/npm/node_modules/asynckit/bench.js create mode 100644 src/drivers/npm/node_modules/asynckit/index.js create mode 100644 src/drivers/npm/node_modules/asynckit/lib/abort.js create mode 100644 src/drivers/npm/node_modules/asynckit/lib/async.js create mode 100644 src/drivers/npm/node_modules/asynckit/lib/defer.js create mode 100644 src/drivers/npm/node_modules/asynckit/lib/iterate.js create mode 100644 src/drivers/npm/node_modules/asynckit/lib/readable_asynckit.js create mode 100644 src/drivers/npm/node_modules/asynckit/lib/readable_parallel.js create mode 100644 src/drivers/npm/node_modules/asynckit/lib/readable_serial.js create mode 100644 src/drivers/npm/node_modules/asynckit/lib/readable_serial_ordered.js create mode 100644 src/drivers/npm/node_modules/asynckit/lib/state.js create mode 100644 src/drivers/npm/node_modules/asynckit/lib/streamify.js create mode 100644 src/drivers/npm/node_modules/asynckit/lib/terminator.js create mode 100644 src/drivers/npm/node_modules/asynckit/package.json create mode 100644 src/drivers/npm/node_modules/asynckit/parallel.js create mode 100644 src/drivers/npm/node_modules/asynckit/serial.js create mode 100644 src/drivers/npm/node_modules/asynckit/serialOrdered.js create mode 100644 src/drivers/npm/node_modules/asynckit/stream.js create mode 100644 src/drivers/npm/node_modules/aws-sign2/LICENSE create mode 100644 src/drivers/npm/node_modules/aws-sign2/README.md create mode 100644 src/drivers/npm/node_modules/aws-sign2/index.js create mode 100644 src/drivers/npm/node_modules/aws-sign2/package.json create mode 100644 src/drivers/npm/node_modules/aws4/.npmignore create mode 100644 src/drivers/npm/node_modules/aws4/.tern-port create mode 100644 src/drivers/npm/node_modules/aws4/.travis.yml create mode 100644 src/drivers/npm/node_modules/aws4/LICENSE create mode 100644 src/drivers/npm/node_modules/aws4/README.md create mode 100644 src/drivers/npm/node_modules/aws4/aws4.js create mode 100644 src/drivers/npm/node_modules/aws4/lru.js create mode 100644 src/drivers/npm/node_modules/aws4/package.json create mode 100644 src/drivers/npm/node_modules/bcrypt-pbkdf/README.md create mode 100644 src/drivers/npm/node_modules/bcrypt-pbkdf/index.js create mode 100644 src/drivers/npm/node_modules/bcrypt-pbkdf/package.json create mode 100644 src/drivers/npm/node_modules/boom/.npmignore create mode 100755 src/drivers/npm/node_modules/boom/.travis.yml create mode 100644 src/drivers/npm/node_modules/boom/CONTRIBUTING.md create mode 100755 src/drivers/npm/node_modules/boom/LICENSE create mode 100755 src/drivers/npm/node_modules/boom/README.md create mode 100755 src/drivers/npm/node_modules/boom/images/boom.png create mode 100755 src/drivers/npm/node_modules/boom/lib/index.js create mode 100644 src/drivers/npm/node_modules/boom/package.json create mode 100755 src/drivers/npm/node_modules/boom/test/index.js create mode 100644 src/drivers/npm/node_modules/caseless/LICENSE create mode 100644 src/drivers/npm/node_modules/caseless/README.md create mode 100644 src/drivers/npm/node_modules/caseless/index.js create mode 100644 src/drivers/npm/node_modules/caseless/package.json create mode 100644 src/drivers/npm/node_modules/caseless/test.js create mode 100644 src/drivers/npm/node_modules/chalk/index.js create mode 100644 src/drivers/npm/node_modules/chalk/license create mode 100644 src/drivers/npm/node_modules/chalk/package.json create mode 100644 src/drivers/npm/node_modules/chalk/readme.md create mode 100644 src/drivers/npm/node_modules/combined-stream/License create mode 100644 src/drivers/npm/node_modules/combined-stream/Readme.md create mode 100644 src/drivers/npm/node_modules/combined-stream/lib/combined_stream.js create mode 100644 src/drivers/npm/node_modules/combined-stream/package.json create mode 100644 src/drivers/npm/node_modules/commander/History.md create mode 100644 src/drivers/npm/node_modules/commander/LICENSE create mode 100644 src/drivers/npm/node_modules/commander/Readme.md create mode 100644 src/drivers/npm/node_modules/commander/index.js create mode 100644 src/drivers/npm/node_modules/commander/package.json create mode 100644 src/drivers/npm/node_modules/concat-stream/LICENSE create mode 100644 src/drivers/npm/node_modules/concat-stream/index.js create mode 100644 src/drivers/npm/node_modules/concat-stream/package.json create mode 100644 src/drivers/npm/node_modules/concat-stream/readme.md create mode 100644 src/drivers/npm/node_modules/core-util-is/LICENSE create mode 100644 src/drivers/npm/node_modules/core-util-is/README.md create mode 100644 src/drivers/npm/node_modules/core-util-is/float.patch create mode 100644 src/drivers/npm/node_modules/core-util-is/lib/util.js create mode 100644 src/drivers/npm/node_modules/core-util-is/package.json create mode 100644 src/drivers/npm/node_modules/core-util-is/test.js create mode 100644 src/drivers/npm/node_modules/cryptiles/.npmignore create mode 100755 src/drivers/npm/node_modules/cryptiles/.travis.yml create mode 100755 src/drivers/npm/node_modules/cryptiles/LICENSE create mode 100644 src/drivers/npm/node_modules/cryptiles/README.md create mode 100755 src/drivers/npm/node_modules/cryptiles/lib/index.js create mode 100755 src/drivers/npm/node_modules/cryptiles/package.json create mode 100755 src/drivers/npm/node_modules/cryptiles/test/index.js create mode 100644 src/drivers/npm/node_modules/dashdash/CHANGES.md create mode 100644 src/drivers/npm/node_modules/dashdash/LICENSE.txt create mode 100644 src/drivers/npm/node_modules/dashdash/README.md create mode 100644 src/drivers/npm/node_modules/dashdash/etc/dashdash.bash_completion.in create mode 100644 src/drivers/npm/node_modules/dashdash/lib/dashdash.js create mode 100644 src/drivers/npm/node_modules/dashdash/package.json create mode 100644 src/drivers/npm/node_modules/debug/Readme.md create mode 100644 src/drivers/npm/node_modules/debug/debug.js create mode 100644 src/drivers/npm/node_modules/debug/index.js create mode 100644 src/drivers/npm/node_modules/debug/lib/debug.js create mode 100644 src/drivers/npm/node_modules/debug/package.json create mode 100644 src/drivers/npm/node_modules/delayed-stream/.npmignore create mode 100644 src/drivers/npm/node_modules/delayed-stream/License create mode 100644 src/drivers/npm/node_modules/delayed-stream/Makefile create mode 100644 src/drivers/npm/node_modules/delayed-stream/Readme.md create mode 100644 src/drivers/npm/node_modules/delayed-stream/lib/delayed_stream.js create mode 100644 src/drivers/npm/node_modules/delayed-stream/package.json create mode 100644 src/drivers/npm/node_modules/ecc-jsbn/.npmignore create mode 100644 src/drivers/npm/node_modules/ecc-jsbn/LICENSE create mode 100644 src/drivers/npm/node_modules/ecc-jsbn/README.md create mode 100644 src/drivers/npm/node_modules/ecc-jsbn/index.js create mode 100644 src/drivers/npm/node_modules/ecc-jsbn/lib/LICENSE-jsbn create mode 100644 src/drivers/npm/node_modules/ecc-jsbn/lib/ec.js create mode 100644 src/drivers/npm/node_modules/ecc-jsbn/lib/sec.js create mode 100644 src/drivers/npm/node_modules/ecc-jsbn/package.json create mode 100644 src/drivers/npm/node_modules/ecc-jsbn/test.js create mode 100644 src/drivers/npm/node_modules/es6-promise/CHANGELOG.md create mode 100644 src/drivers/npm/node_modules/es6-promise/LICENSE create mode 100644 src/drivers/npm/node_modules/es6-promise/README.md create mode 100644 src/drivers/npm/node_modules/es6-promise/auto.js create mode 100644 src/drivers/npm/node_modules/es6-promise/dist/es6-promise.auto.js create mode 100644 src/drivers/npm/node_modules/es6-promise/dist/es6-promise.auto.map create mode 100644 src/drivers/npm/node_modules/es6-promise/dist/es6-promise.auto.min.js create mode 100644 src/drivers/npm/node_modules/es6-promise/dist/es6-promise.auto.min.map create mode 100644 src/drivers/npm/node_modules/es6-promise/dist/es6-promise.js create mode 100644 src/drivers/npm/node_modules/es6-promise/dist/es6-promise.map create mode 100644 src/drivers/npm/node_modules/es6-promise/dist/es6-promise.min.js create mode 100644 src/drivers/npm/node_modules/es6-promise/dist/es6-promise.min.map create mode 100644 src/drivers/npm/node_modules/es6-promise/es6-promise.d.ts create mode 100644 src/drivers/npm/node_modules/es6-promise/lib/es6-promise.js create mode 100644 src/drivers/npm/node_modules/es6-promise/lib/es6-promise/-internal.js create mode 100644 src/drivers/npm/node_modules/es6-promise/lib/es6-promise/asap.js create mode 100644 src/drivers/npm/node_modules/es6-promise/lib/es6-promise/enumerator.js create mode 100644 src/drivers/npm/node_modules/es6-promise/lib/es6-promise/polyfill.js create mode 100644 src/drivers/npm/node_modules/es6-promise/lib/es6-promise/promise.js create mode 100644 src/drivers/npm/node_modules/es6-promise/lib/es6-promise/promise/all.js create mode 100644 src/drivers/npm/node_modules/es6-promise/lib/es6-promise/promise/race.js create mode 100644 src/drivers/npm/node_modules/es6-promise/lib/es6-promise/promise/reject.js create mode 100644 src/drivers/npm/node_modules/es6-promise/lib/es6-promise/promise/resolve.js create mode 100644 src/drivers/npm/node_modules/es6-promise/lib/es6-promise/then.js create mode 100644 src/drivers/npm/node_modules/es6-promise/lib/es6-promise/utils.js create mode 100644 src/drivers/npm/node_modules/es6-promise/package.json create mode 100644 src/drivers/npm/node_modules/escape-string-regexp/index.js create mode 100644 src/drivers/npm/node_modules/escape-string-regexp/license create mode 100644 src/drivers/npm/node_modules/escape-string-regexp/package.json create mode 100644 src/drivers/npm/node_modules/escape-string-regexp/readme.md create mode 100644 src/drivers/npm/node_modules/extend/.eslintrc create mode 100644 src/drivers/npm/node_modules/extend/.jscs.json create mode 100644 src/drivers/npm/node_modules/extend/.npmignore create mode 100644 src/drivers/npm/node_modules/extend/.travis.yml create mode 100644 src/drivers/npm/node_modules/extend/CHANGELOG.md create mode 100644 src/drivers/npm/node_modules/extend/LICENSE create mode 100644 src/drivers/npm/node_modules/extend/README.md create mode 100644 src/drivers/npm/node_modules/extend/component.json create mode 100644 src/drivers/npm/node_modules/extend/index.js create mode 100644 src/drivers/npm/node_modules/extend/package.json create mode 100644 src/drivers/npm/node_modules/extract-zip/.npmignore create mode 100644 src/drivers/npm/node_modules/extract-zip/.travis.yml create mode 100644 src/drivers/npm/node_modules/extract-zip/CONTRIBUTING.md create mode 100755 src/drivers/npm/node_modules/extract-zip/cli.js create mode 100644 src/drivers/npm/node_modules/extract-zip/index.js create mode 120000 src/drivers/npm/node_modules/extract-zip/node_modules/.bin/mkdirp create mode 100644 src/drivers/npm/node_modules/extract-zip/package.json create mode 100644 src/drivers/npm/node_modules/extract-zip/readme.md create mode 100644 src/drivers/npm/node_modules/extsprintf/.gitmodules create mode 100644 src/drivers/npm/node_modules/extsprintf/LICENSE create mode 100644 src/drivers/npm/node_modules/extsprintf/Makefile create mode 100644 src/drivers/npm/node_modules/extsprintf/Makefile.deps create mode 100644 src/drivers/npm/node_modules/extsprintf/Makefile.targ create mode 100644 src/drivers/npm/node_modules/extsprintf/README.md create mode 100644 src/drivers/npm/node_modules/extsprintf/examples/simple.js create mode 100644 src/drivers/npm/node_modules/extsprintf/jsl.node.conf create mode 100644 src/drivers/npm/node_modules/extsprintf/lib/extsprintf.js create mode 100644 src/drivers/npm/node_modules/extsprintf/package.json create mode 100644 src/drivers/npm/node_modules/fd-slicer/.npmignore create mode 100644 src/drivers/npm/node_modules/fd-slicer/.travis.yml create mode 100644 src/drivers/npm/node_modules/fd-slicer/CHANGELOG.md create mode 100644 src/drivers/npm/node_modules/fd-slicer/LICENSE create mode 100644 src/drivers/npm/node_modules/fd-slicer/README.md create mode 100644 src/drivers/npm/node_modules/fd-slicer/index.js create mode 100644 src/drivers/npm/node_modules/fd-slicer/package.json create mode 100644 src/drivers/npm/node_modules/fd-slicer/test/test.js create mode 100644 src/drivers/npm/node_modules/forever-agent/LICENSE create mode 100644 src/drivers/npm/node_modules/forever-agent/README.md create mode 100644 src/drivers/npm/node_modules/forever-agent/index.js create mode 100644 src/drivers/npm/node_modules/forever-agent/package.json create mode 100644 src/drivers/npm/node_modules/form-data/License create mode 100644 src/drivers/npm/node_modules/form-data/README.md create mode 100644 src/drivers/npm/node_modules/form-data/lib/browser.js create mode 100644 src/drivers/npm/node_modules/form-data/lib/form_data.js create mode 100644 src/drivers/npm/node_modules/form-data/lib/populate.js create mode 100644 src/drivers/npm/node_modules/form-data/package.json create mode 100644 src/drivers/npm/node_modules/fs-extra/.npmignore create mode 100644 src/drivers/npm/node_modules/fs-extra/CHANGELOG.md create mode 100644 src/drivers/npm/node_modules/fs-extra/LICENSE create mode 100644 src/drivers/npm/node_modules/fs-extra/README.md create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/copy-sync/copy-file-sync.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/copy-sync/copy-sync.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/copy-sync/index.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/copy/copy.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/copy/index.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/copy/ncp.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/empty/index.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/ensure/file.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/ensure/index.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/ensure/link.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/ensure/symlink-paths.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/ensure/symlink-type.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/ensure/symlink.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/index.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/json/index.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/json/jsonfile.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/json/output-json-sync.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/json/output-json.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/mkdirs/index.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/mkdirs/mkdirs-sync.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/mkdirs/mkdirs.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/mkdirs/win32.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/move/index.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/output/index.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/remove/index.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/remove/rimraf.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/util/assign.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/util/utimes.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/walk-sync/index.js create mode 100644 src/drivers/npm/node_modules/fs-extra/lib/walk/index.js create mode 100644 src/drivers/npm/node_modules/fs-extra/package.json create mode 100644 src/drivers/npm/node_modules/generate-function/.npmignore create mode 100644 src/drivers/npm/node_modules/generate-function/.travis.yml create mode 100644 src/drivers/npm/node_modules/generate-function/README.md create mode 100644 src/drivers/npm/node_modules/generate-function/example.js create mode 100644 src/drivers/npm/node_modules/generate-function/index.js create mode 100644 src/drivers/npm/node_modules/generate-function/package.json create mode 100644 src/drivers/npm/node_modules/generate-function/test.js create mode 100644 src/drivers/npm/node_modules/generate-object-property/.npmignore create mode 100644 src/drivers/npm/node_modules/generate-object-property/.travis.yml create mode 100644 src/drivers/npm/node_modules/generate-object-property/LICENSE create mode 100644 src/drivers/npm/node_modules/generate-object-property/README.md create mode 100644 src/drivers/npm/node_modules/generate-object-property/index.js create mode 100644 src/drivers/npm/node_modules/generate-object-property/package.json create mode 100644 src/drivers/npm/node_modules/generate-object-property/test.js create mode 100644 src/drivers/npm/node_modules/getpass/.npmignore create mode 100644 src/drivers/npm/node_modules/getpass/.travis.yml create mode 100644 src/drivers/npm/node_modules/getpass/LICENSE create mode 100644 src/drivers/npm/node_modules/getpass/README.md create mode 100644 src/drivers/npm/node_modules/getpass/lib/index.js create mode 100644 src/drivers/npm/node_modules/getpass/package.json create mode 100644 src/drivers/npm/node_modules/graceful-fs/LICENSE create mode 100644 src/drivers/npm/node_modules/graceful-fs/README.md create mode 100644 src/drivers/npm/node_modules/graceful-fs/fs.js create mode 100644 src/drivers/npm/node_modules/graceful-fs/graceful-fs.js create mode 100644 src/drivers/npm/node_modules/graceful-fs/legacy-streams.js create mode 100644 src/drivers/npm/node_modules/graceful-fs/package.json create mode 100644 src/drivers/npm/node_modules/graceful-fs/polyfills.js create mode 100644 src/drivers/npm/node_modules/har-validator/LICENSE create mode 100644 src/drivers/npm/node_modules/har-validator/README.md create mode 100755 src/drivers/npm/node_modules/har-validator/bin/har-validator create mode 100644 src/drivers/npm/node_modules/har-validator/lib/async.js create mode 100644 src/drivers/npm/node_modules/har-validator/lib/error.js create mode 100644 src/drivers/npm/node_modules/har-validator/lib/index.js create mode 100644 src/drivers/npm/node_modules/har-validator/lib/runner.js create mode 100644 src/drivers/npm/node_modules/har-validator/lib/schemas/cache.json create mode 100644 src/drivers/npm/node_modules/har-validator/lib/schemas/cacheEntry.json create mode 100644 src/drivers/npm/node_modules/har-validator/lib/schemas/content.json create mode 100644 src/drivers/npm/node_modules/har-validator/lib/schemas/cookie.json create mode 100644 src/drivers/npm/node_modules/har-validator/lib/schemas/creator.json create mode 100644 src/drivers/npm/node_modules/har-validator/lib/schemas/entry.json create mode 100644 src/drivers/npm/node_modules/har-validator/lib/schemas/har.json create mode 100644 src/drivers/npm/node_modules/har-validator/lib/schemas/index.js create mode 100644 src/drivers/npm/node_modules/har-validator/lib/schemas/log.json create mode 100644 src/drivers/npm/node_modules/har-validator/lib/schemas/page.json create mode 100644 src/drivers/npm/node_modules/har-validator/lib/schemas/pageTimings.json create mode 100644 src/drivers/npm/node_modules/har-validator/lib/schemas/postData.json create mode 100644 src/drivers/npm/node_modules/har-validator/lib/schemas/record.json create mode 100644 src/drivers/npm/node_modules/har-validator/lib/schemas/request.json create mode 100644 src/drivers/npm/node_modules/har-validator/lib/schemas/response.json create mode 100644 src/drivers/npm/node_modules/har-validator/lib/schemas/timings.json create mode 100644 src/drivers/npm/node_modules/har-validator/package.json create mode 100644 src/drivers/npm/node_modules/has-ansi/index.js create mode 100644 src/drivers/npm/node_modules/has-ansi/license create mode 100644 src/drivers/npm/node_modules/has-ansi/package.json create mode 100644 src/drivers/npm/node_modules/has-ansi/readme.md create mode 100644 src/drivers/npm/node_modules/hasha/index.js create mode 100644 src/drivers/npm/node_modules/hasha/license create mode 100644 src/drivers/npm/node_modules/hasha/package.json create mode 100644 src/drivers/npm/node_modules/hasha/readme.md create mode 100644 src/drivers/npm/node_modules/hawk/.npmignore create mode 100755 src/drivers/npm/node_modules/hawk/.travis.yml create mode 100755 src/drivers/npm/node_modules/hawk/LICENSE create mode 100755 src/drivers/npm/node_modules/hawk/README.md create mode 100644 src/drivers/npm/node_modules/hawk/bower.json create mode 100644 src/drivers/npm/node_modules/hawk/component.json create mode 100644 src/drivers/npm/node_modules/hawk/dist/client.js create mode 100755 src/drivers/npm/node_modules/hawk/example/usage.js create mode 100755 src/drivers/npm/node_modules/hawk/images/hawk.png create mode 100755 src/drivers/npm/node_modules/hawk/images/logo.png create mode 100755 src/drivers/npm/node_modules/hawk/lib/browser.js create mode 100755 src/drivers/npm/node_modules/hawk/lib/client.js create mode 100755 src/drivers/npm/node_modules/hawk/lib/crypto.js create mode 100755 src/drivers/npm/node_modules/hawk/lib/index.js create mode 100755 src/drivers/npm/node_modules/hawk/lib/server.js create mode 100755 src/drivers/npm/node_modules/hawk/lib/utils.js create mode 100755 src/drivers/npm/node_modules/hawk/package.json create mode 100755 src/drivers/npm/node_modules/hawk/test/browser.js create mode 100755 src/drivers/npm/node_modules/hawk/test/client.js create mode 100755 src/drivers/npm/node_modules/hawk/test/crypto.js create mode 100755 src/drivers/npm/node_modules/hawk/test/index.js create mode 100755 src/drivers/npm/node_modules/hawk/test/readme.js create mode 100755 src/drivers/npm/node_modules/hawk/test/server.js create mode 100755 src/drivers/npm/node_modules/hawk/test/uri.js create mode 100755 src/drivers/npm/node_modules/hawk/test/utils.js create mode 100644 src/drivers/npm/node_modules/hoek/.npmignore create mode 100644 src/drivers/npm/node_modules/hoek/.travis.yml create mode 100644 src/drivers/npm/node_modules/hoek/CONTRIBUTING.md create mode 100644 src/drivers/npm/node_modules/hoek/LICENSE create mode 100644 src/drivers/npm/node_modules/hoek/README.md create mode 100644 src/drivers/npm/node_modules/hoek/images/hoek.png create mode 100644 src/drivers/npm/node_modules/hoek/lib/escape.js create mode 100644 src/drivers/npm/node_modules/hoek/lib/index.js create mode 100644 src/drivers/npm/node_modules/hoek/package.json create mode 100644 src/drivers/npm/node_modules/hoek/test/escaper.js create mode 100644 src/drivers/npm/node_modules/hoek/test/index.js create mode 100644 src/drivers/npm/node_modules/hoek/test/modules/ignore.txt create mode 100644 src/drivers/npm/node_modules/hoek/test/modules/test1.js create mode 100644 src/drivers/npm/node_modules/hoek/test/modules/test2.js create mode 100644 src/drivers/npm/node_modules/hoek/test/modules/test3.js create mode 100644 src/drivers/npm/node_modules/http-signature/.dir-locals.el create mode 100644 src/drivers/npm/node_modules/http-signature/.npmignore create mode 100644 src/drivers/npm/node_modules/http-signature/CHANGES.md create mode 100644 src/drivers/npm/node_modules/http-signature/LICENSE create mode 100644 src/drivers/npm/node_modules/http-signature/README.md create mode 100644 src/drivers/npm/node_modules/http-signature/http_signing.md create mode 100644 src/drivers/npm/node_modules/http-signature/lib/index.js create mode 100644 src/drivers/npm/node_modules/http-signature/lib/parser.js create mode 100644 src/drivers/npm/node_modules/http-signature/lib/signer.js create mode 100644 src/drivers/npm/node_modules/http-signature/lib/utils.js create mode 100644 src/drivers/npm/node_modules/http-signature/lib/verify.js create mode 120000 src/drivers/npm/node_modules/http-signature/node_modules/.bin/sshpk-conv create mode 120000 src/drivers/npm/node_modules/http-signature/node_modules/.bin/sshpk-sign create mode 120000 src/drivers/npm/node_modules/http-signature/node_modules/.bin/sshpk-verify create mode 100644 src/drivers/npm/node_modules/http-signature/node_modules/assert-plus/AUTHORS create mode 100644 src/drivers/npm/node_modules/http-signature/node_modules/assert-plus/CHANGES.md create mode 100644 src/drivers/npm/node_modules/http-signature/node_modules/assert-plus/README.md create mode 100644 src/drivers/npm/node_modules/http-signature/node_modules/assert-plus/assert.js create mode 100644 src/drivers/npm/node_modules/http-signature/node_modules/assert-plus/package.json create mode 100644 src/drivers/npm/node_modules/http-signature/package.json create mode 100644 src/drivers/npm/node_modules/inherits/LICENSE create mode 100644 src/drivers/npm/node_modules/inherits/README.md create mode 100644 src/drivers/npm/node_modules/inherits/inherits.js create mode 100644 src/drivers/npm/node_modules/inherits/inherits_browser.js create mode 100644 src/drivers/npm/node_modules/inherits/package.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/.npmignore create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/.travis.yml create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/LICENSE create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/README.md create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/example.js create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/formats.js create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/index.js create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/package.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/require.js create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/fixtures/cosmic.js create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/additionalItems.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/additionalProperties.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/allOf.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/anyOf.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/bignum.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/default.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/definitions.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/dependencies.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/enum.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/format.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/items.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/maxItems.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/maxLength.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/maxProperties.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/maximum.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/minItems.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/minLength.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/minProperties.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/minimum.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/multipleOf.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/not.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndFormat.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndObject.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/oneOf.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/pattern.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/patternProperties.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/properties.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/ref.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/refRemote.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/required.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/type.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema-draft4/uniqueItems.json create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/json-schema.js create mode 100644 src/drivers/npm/node_modules/is-my-json-valid/test/misc.js create mode 100644 src/drivers/npm/node_modules/is-property/.npmignore create mode 100644 src/drivers/npm/node_modules/is-property/LICENSE create mode 100644 src/drivers/npm/node_modules/is-property/README.md create mode 100644 src/drivers/npm/node_modules/is-property/is-property.js create mode 100644 src/drivers/npm/node_modules/is-property/package.json create mode 100644 src/drivers/npm/node_modules/is-stream/index.js create mode 100644 src/drivers/npm/node_modules/is-stream/license create mode 100644 src/drivers/npm/node_modules/is-stream/package.json create mode 100644 src/drivers/npm/node_modules/is-stream/readme.md create mode 100644 src/drivers/npm/node_modules/is-typedarray/LICENSE.md create mode 100644 src/drivers/npm/node_modules/is-typedarray/README.md create mode 100644 src/drivers/npm/node_modules/is-typedarray/index.js create mode 100644 src/drivers/npm/node_modules/is-typedarray/package.json create mode 100644 src/drivers/npm/node_modules/is-typedarray/test.js create mode 100644 src/drivers/npm/node_modules/isarray/.npmignore create mode 100644 src/drivers/npm/node_modules/isarray/.travis.yml create mode 100644 src/drivers/npm/node_modules/isarray/Makefile create mode 100644 src/drivers/npm/node_modules/isarray/README.md create mode 100644 src/drivers/npm/node_modules/isarray/component.json create mode 100644 src/drivers/npm/node_modules/isarray/index.js create mode 100644 src/drivers/npm/node_modules/isarray/package.json create mode 100644 src/drivers/npm/node_modules/isarray/test.js create mode 100644 src/drivers/npm/node_modules/isexe/.npmignore create mode 100644 src/drivers/npm/node_modules/isexe/LICENSE create mode 100644 src/drivers/npm/node_modules/isexe/README.md create mode 100644 src/drivers/npm/node_modules/isexe/index.js create mode 100644 src/drivers/npm/node_modules/isexe/mode.js create mode 100644 src/drivers/npm/node_modules/isexe/package.json create mode 100644 src/drivers/npm/node_modules/isexe/test/basic.js create mode 100644 src/drivers/npm/node_modules/isexe/windows.js create mode 100644 src/drivers/npm/node_modules/isstream/.jshintrc create mode 100644 src/drivers/npm/node_modules/isstream/.npmignore create mode 100644 src/drivers/npm/node_modules/isstream/.travis.yml create mode 100644 src/drivers/npm/node_modules/isstream/LICENSE.md create mode 100644 src/drivers/npm/node_modules/isstream/README.md create mode 100644 src/drivers/npm/node_modules/isstream/isstream.js create mode 100644 src/drivers/npm/node_modules/isstream/package.json create mode 100644 src/drivers/npm/node_modules/isstream/test.js create mode 100644 src/drivers/npm/node_modules/jsbn/.npmignore create mode 100644 src/drivers/npm/node_modules/jsbn/LICENSE create mode 100644 src/drivers/npm/node_modules/jsbn/README.md create mode 100644 src/drivers/npm/node_modules/jsbn/example.html create mode 100644 src/drivers/npm/node_modules/jsbn/example.js create mode 100644 src/drivers/npm/node_modules/jsbn/index.js create mode 100644 src/drivers/npm/node_modules/jsbn/package.json create mode 100644 src/drivers/npm/node_modules/json-schema/README.md create mode 100644 src/drivers/npm/node_modules/json-schema/draft-00/hyper-schema create mode 100644 src/drivers/npm/node_modules/json-schema/draft-00/json-ref create mode 100644 src/drivers/npm/node_modules/json-schema/draft-00/links create mode 100644 src/drivers/npm/node_modules/json-schema/draft-00/schema create mode 100644 src/drivers/npm/node_modules/json-schema/draft-01/hyper-schema create mode 100644 src/drivers/npm/node_modules/json-schema/draft-01/json-ref create mode 100644 src/drivers/npm/node_modules/json-schema/draft-01/links create mode 100644 src/drivers/npm/node_modules/json-schema/draft-01/schema create mode 100644 src/drivers/npm/node_modules/json-schema/draft-02/hyper-schema create mode 100644 src/drivers/npm/node_modules/json-schema/draft-02/json-ref create mode 100644 src/drivers/npm/node_modules/json-schema/draft-02/links create mode 100644 src/drivers/npm/node_modules/json-schema/draft-02/schema create mode 100644 src/drivers/npm/node_modules/json-schema/draft-03/examples/address create mode 100644 src/drivers/npm/node_modules/json-schema/draft-03/examples/calendar create mode 100644 src/drivers/npm/node_modules/json-schema/draft-03/examples/card create mode 100644 src/drivers/npm/node_modules/json-schema/draft-03/examples/geo create mode 100644 src/drivers/npm/node_modules/json-schema/draft-03/examples/interfaces create mode 100644 src/drivers/npm/node_modules/json-schema/draft-03/hyper-schema create mode 100644 src/drivers/npm/node_modules/json-schema/draft-03/json-ref create mode 100644 src/drivers/npm/node_modules/json-schema/draft-03/links create mode 100644 src/drivers/npm/node_modules/json-schema/draft-03/schema create mode 100644 src/drivers/npm/node_modules/json-schema/draft-04/hyper-schema create mode 100644 src/drivers/npm/node_modules/json-schema/draft-04/links create mode 100644 src/drivers/npm/node_modules/json-schema/draft-04/schema create mode 100644 src/drivers/npm/node_modules/json-schema/draft-zyp-json-schema-03.xml create mode 100644 src/drivers/npm/node_modules/json-schema/draft-zyp-json-schema-04.xml create mode 100644 src/drivers/npm/node_modules/json-schema/lib/links.js create mode 100644 src/drivers/npm/node_modules/json-schema/lib/validate.js create mode 100644 src/drivers/npm/node_modules/json-schema/package.json create mode 100644 src/drivers/npm/node_modules/json-schema/test/tests.js create mode 100644 src/drivers/npm/node_modules/json-stringify-safe/.npmignore create mode 100644 src/drivers/npm/node_modules/json-stringify-safe/CHANGELOG.md create mode 100644 src/drivers/npm/node_modules/json-stringify-safe/LICENSE create mode 100644 src/drivers/npm/node_modules/json-stringify-safe/Makefile create mode 100644 src/drivers/npm/node_modules/json-stringify-safe/README.md create mode 100644 src/drivers/npm/node_modules/json-stringify-safe/package.json create mode 100644 src/drivers/npm/node_modules/json-stringify-safe/stringify.js create mode 100644 src/drivers/npm/node_modules/json-stringify-safe/test/mocha.opts create mode 100644 src/drivers/npm/node_modules/json-stringify-safe/test/stringify_test.js create mode 100644 src/drivers/npm/node_modules/jsonfile/.npmignore create mode 100644 src/drivers/npm/node_modules/jsonfile/CHANGELOG.md create mode 100644 src/drivers/npm/node_modules/jsonfile/LICENSE create mode 100644 src/drivers/npm/node_modules/jsonfile/README.md create mode 100644 src/drivers/npm/node_modules/jsonfile/appveyor.yml create mode 100644 src/drivers/npm/node_modules/jsonfile/index.js create mode 100644 src/drivers/npm/node_modules/jsonfile/package.json create mode 100644 src/drivers/npm/node_modules/jsonpointer/LICENSE.md create mode 100644 src/drivers/npm/node_modules/jsonpointer/README.md create mode 100644 src/drivers/npm/node_modules/jsonpointer/jsonpointer.js create mode 100644 src/drivers/npm/node_modules/jsonpointer/package.json create mode 100644 src/drivers/npm/node_modules/jsprim/CHANGES.md create mode 100644 src/drivers/npm/node_modules/jsprim/LICENSE create mode 100644 src/drivers/npm/node_modules/jsprim/README.md create mode 100644 src/drivers/npm/node_modules/jsprim/lib/jsprim.js create mode 100644 src/drivers/npm/node_modules/jsprim/package.json create mode 100644 src/drivers/npm/node_modules/kew/.npmignore create mode 100644 src/drivers/npm/node_modules/kew/.travis.yml create mode 100644 src/drivers/npm/node_modules/kew/LICENSE.TXT create mode 100644 src/drivers/npm/node_modules/kew/README.md create mode 100644 src/drivers/npm/node_modules/kew/kew.js create mode 100644 src/drivers/npm/node_modules/kew/package.json create mode 100644 src/drivers/npm/node_modules/kew/test/chain.js create mode 100644 src/drivers/npm/node_modules/kew/test/closure_test.js create mode 100644 src/drivers/npm/node_modules/kew/test/context.js create mode 100644 src/drivers/npm/node_modules/kew/test/defer.js create mode 100644 src/drivers/npm/node_modules/kew/test/externs_node.js create mode 100644 src/drivers/npm/node_modules/kew/test/later.js create mode 100644 src/drivers/npm/node_modules/kew/test/scopes.js create mode 100644 src/drivers/npm/node_modules/kew/test/spread.js create mode 100644 src/drivers/npm/node_modules/kew/test/static.js create mode 100644 src/drivers/npm/node_modules/klaw/.npmignore create mode 100644 src/drivers/npm/node_modules/klaw/CHANGELOG.md create mode 100644 src/drivers/npm/node_modules/klaw/LICENSE create mode 100644 src/drivers/npm/node_modules/klaw/README.md create mode 100644 src/drivers/npm/node_modules/klaw/package.json create mode 100644 src/drivers/npm/node_modules/klaw/src/assign.js create mode 100644 src/drivers/npm/node_modules/klaw/src/index.js create mode 100644 src/drivers/npm/node_modules/mime-db/HISTORY.md create mode 100644 src/drivers/npm/node_modules/mime-db/LICENSE create mode 100644 src/drivers/npm/node_modules/mime-db/README.md create mode 100644 src/drivers/npm/node_modules/mime-db/db.json create mode 100644 src/drivers/npm/node_modules/mime-db/index.js create mode 100644 src/drivers/npm/node_modules/mime-db/package.json create mode 100644 src/drivers/npm/node_modules/mime-types/HISTORY.md create mode 100644 src/drivers/npm/node_modules/mime-types/LICENSE create mode 100644 src/drivers/npm/node_modules/mime-types/README.md create mode 100644 src/drivers/npm/node_modules/mime-types/index.js create mode 100644 src/drivers/npm/node_modules/mime-types/package.json create mode 100644 src/drivers/npm/node_modules/minimist/.travis.yml create mode 100644 src/drivers/npm/node_modules/minimist/LICENSE create mode 100644 src/drivers/npm/node_modules/minimist/example/parse.js create mode 100644 src/drivers/npm/node_modules/minimist/index.js create mode 100644 src/drivers/npm/node_modules/minimist/package.json create mode 100644 src/drivers/npm/node_modules/minimist/readme.markdown create mode 100644 src/drivers/npm/node_modules/minimist/test/dash.js create mode 100644 src/drivers/npm/node_modules/minimist/test/default_bool.js create mode 100644 src/drivers/npm/node_modules/minimist/test/dotted.js create mode 100644 src/drivers/npm/node_modules/minimist/test/long.js create mode 100644 src/drivers/npm/node_modules/minimist/test/parse.js create mode 100644 src/drivers/npm/node_modules/minimist/test/parse_modified.js create mode 100644 src/drivers/npm/node_modules/minimist/test/short.js create mode 100644 src/drivers/npm/node_modules/minimist/test/whitespace.js create mode 100644 src/drivers/npm/node_modules/mkdirp/.npmignore create mode 100644 src/drivers/npm/node_modules/mkdirp/.travis.yml create mode 100644 src/drivers/npm/node_modules/mkdirp/LICENSE create mode 100755 src/drivers/npm/node_modules/mkdirp/bin/cmd.js create mode 100644 src/drivers/npm/node_modules/mkdirp/bin/usage.txt create mode 100644 src/drivers/npm/node_modules/mkdirp/examples/pow.js create mode 100644 src/drivers/npm/node_modules/mkdirp/index.js create mode 100644 src/drivers/npm/node_modules/mkdirp/package.json create mode 100644 src/drivers/npm/node_modules/mkdirp/readme.markdown create mode 100644 src/drivers/npm/node_modules/mkdirp/test/chmod.js create mode 100644 src/drivers/npm/node_modules/mkdirp/test/clobber.js create mode 100644 src/drivers/npm/node_modules/mkdirp/test/mkdirp.js create mode 100644 src/drivers/npm/node_modules/mkdirp/test/opts_fs.js create mode 100644 src/drivers/npm/node_modules/mkdirp/test/opts_fs_sync.js create mode 100644 src/drivers/npm/node_modules/mkdirp/test/perm.js create mode 100644 src/drivers/npm/node_modules/mkdirp/test/perm_sync.js create mode 100644 src/drivers/npm/node_modules/mkdirp/test/race.js create mode 100644 src/drivers/npm/node_modules/mkdirp/test/rel.js create mode 100644 src/drivers/npm/node_modules/mkdirp/test/return.js create mode 100644 src/drivers/npm/node_modules/mkdirp/test/return_sync.js create mode 100644 src/drivers/npm/node_modules/mkdirp/test/root.js create mode 100644 src/drivers/npm/node_modules/mkdirp/test/sync.js create mode 100644 src/drivers/npm/node_modules/mkdirp/test/umask.js create mode 100644 src/drivers/npm/node_modules/mkdirp/test/umask_sync.js create mode 100644 src/drivers/npm/node_modules/oauth-sign/LICENSE create mode 100644 src/drivers/npm/node_modules/oauth-sign/README.md create mode 100644 src/drivers/npm/node_modules/oauth-sign/index.js create mode 100644 src/drivers/npm/node_modules/oauth-sign/package.json create mode 100644 src/drivers/npm/node_modules/pend/LICENSE create mode 100644 src/drivers/npm/node_modules/pend/README.md create mode 100644 src/drivers/npm/node_modules/pend/index.js create mode 100644 src/drivers/npm/node_modules/pend/package.json create mode 100644 src/drivers/npm/node_modules/pend/test.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/.eslintignore create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/.eslintrc create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/.jshintrc create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/.npmignore create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/.travis.yml create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/LICENSE.txt create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/README.md create mode 100755 src/drivers/npm/node_modules/phantomjs-prebuilt/bin/phantomjs create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/install.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/location.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/ChangeLog create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/LICENSE.BSD create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/README.md create mode 100755 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/arguments.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/child_process-examples.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/colorwheel.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/countdown.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/detectsniff.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/echoToFile.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/features.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/fibo.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/hello.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/injectme.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/loadspeed.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/loadurlwithoutcss.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/modernizr.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/module.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/netlog.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/netsniff.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/openurlwithproxy.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/outputEncoding.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/page_events.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/pagecallback.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/phantomwebintro.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/post.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/postjson.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/postserver.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/printenv.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/printheaderfooter.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/printmargins.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/rasterize.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/render_multi_url.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/responsive-screenshot.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/run-jasmine.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/run-jasmine2.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/run-qunit.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/scandir.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/server.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/serverkeepalive.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/simpleserver.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/sleepsort.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/stdin-stdout-stderr.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/universe.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/unrandomize.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/useragent.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/version.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/waitfor.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/examples/walk_through_frames.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantom/third-party.txt create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/phantomjs.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/lib/util.js create mode 120000 src/drivers/npm/node_modules/phantomjs-prebuilt/node_modules/.bin/extract-zip create mode 120000 src/drivers/npm/node_modules/phantomjs-prebuilt/node_modules/.bin/which create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/package.json create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/test/exit.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/test/loadspeed.js create mode 100644 src/drivers/npm/node_modules/phantomjs-prebuilt/test/tests.js create mode 100644 src/drivers/npm/node_modules/pinkie-promise/index.js create mode 100644 src/drivers/npm/node_modules/pinkie-promise/license create mode 100644 src/drivers/npm/node_modules/pinkie-promise/package.json create mode 100644 src/drivers/npm/node_modules/pinkie-promise/readme.md create mode 100644 src/drivers/npm/node_modules/pinkie/index.js create mode 100644 src/drivers/npm/node_modules/pinkie/license create mode 100644 src/drivers/npm/node_modules/pinkie/package.json create mode 100644 src/drivers/npm/node_modules/pinkie/readme.md create mode 100644 src/drivers/npm/node_modules/process-nextick-args/.travis.yml create mode 100644 src/drivers/npm/node_modules/process-nextick-args/index.js create mode 100644 src/drivers/npm/node_modules/process-nextick-args/license.md create mode 100644 src/drivers/npm/node_modules/process-nextick-args/package.json create mode 100644 src/drivers/npm/node_modules/process-nextick-args/readme.md create mode 100644 src/drivers/npm/node_modules/process-nextick-args/test.js create mode 100644 src/drivers/npm/node_modules/progress/.npmignore create mode 100644 src/drivers/npm/node_modules/progress/History.md create mode 100644 src/drivers/npm/node_modules/progress/LICENSE create mode 100644 src/drivers/npm/node_modules/progress/Makefile create mode 100644 src/drivers/npm/node_modules/progress/Readme.md create mode 100644 src/drivers/npm/node_modules/progress/index.js create mode 100644 src/drivers/npm/node_modules/progress/lib/node-progress.js create mode 100644 src/drivers/npm/node_modules/progress/package.json create mode 100644 src/drivers/npm/node_modules/punycode/LICENSE-MIT.txt create mode 100644 src/drivers/npm/node_modules/punycode/README.md create mode 100644 src/drivers/npm/node_modules/punycode/package.json create mode 100644 src/drivers/npm/node_modules/punycode/punycode.js create mode 100644 src/drivers/npm/node_modules/qs/.eslintignore create mode 100644 src/drivers/npm/node_modules/qs/.eslintrc create mode 100644 src/drivers/npm/node_modules/qs/CHANGELOG.md create mode 100644 src/drivers/npm/node_modules/qs/LICENSE create mode 100644 src/drivers/npm/node_modules/qs/README.md create mode 100644 src/drivers/npm/node_modules/qs/dist/qs.js create mode 100644 src/drivers/npm/node_modules/qs/lib/formats.js create mode 100644 src/drivers/npm/node_modules/qs/lib/index.js create mode 100644 src/drivers/npm/node_modules/qs/lib/parse.js create mode 100644 src/drivers/npm/node_modules/qs/lib/stringify.js create mode 100644 src/drivers/npm/node_modules/qs/lib/utils.js create mode 100644 src/drivers/npm/node_modules/qs/package.json create mode 100644 src/drivers/npm/node_modules/qs/test/.eslintrc create mode 100644 src/drivers/npm/node_modules/qs/test/index.js create mode 100644 src/drivers/npm/node_modules/qs/test/parse.js create mode 100644 src/drivers/npm/node_modules/qs/test/stringify.js create mode 100644 src/drivers/npm/node_modules/qs/test/utils.js create mode 100644 src/drivers/npm/node_modules/readable-stream/.npmignore create mode 100644 src/drivers/npm/node_modules/readable-stream/.travis.yml create mode 100644 src/drivers/npm/node_modules/readable-stream/.zuul.yml create mode 100644 src/drivers/npm/node_modules/readable-stream/LICENSE create mode 100644 src/drivers/npm/node_modules/readable-stream/README.md create mode 100644 src/drivers/npm/node_modules/readable-stream/doc/stream.markdown create mode 100644 src/drivers/npm/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md create mode 100644 src/drivers/npm/node_modules/readable-stream/duplex.js create mode 100644 src/drivers/npm/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 src/drivers/npm/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 src/drivers/npm/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 src/drivers/npm/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 src/drivers/npm/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 src/drivers/npm/node_modules/readable-stream/package.json create mode 100644 src/drivers/npm/node_modules/readable-stream/passthrough.js create mode 100644 src/drivers/npm/node_modules/readable-stream/readable.js create mode 100644 src/drivers/npm/node_modules/readable-stream/transform.js create mode 100644 src/drivers/npm/node_modules/readable-stream/writable.js create mode 100644 src/drivers/npm/node_modules/request-progress/.editorconfig create mode 100644 src/drivers/npm/node_modules/request-progress/.jshintrc create mode 100644 src/drivers/npm/node_modules/request-progress/.npmignore create mode 100644 src/drivers/npm/node_modules/request-progress/.travis.yml create mode 100644 src/drivers/npm/node_modules/request-progress/LICENSE create mode 100644 src/drivers/npm/node_modules/request-progress/README.md create mode 100644 src/drivers/npm/node_modules/request-progress/foo.js create mode 100644 src/drivers/npm/node_modules/request-progress/index.js create mode 100644 src/drivers/npm/node_modules/request-progress/package.json create mode 100644 src/drivers/npm/node_modules/request-progress/test/test.js create mode 100644 src/drivers/npm/node_modules/request/CHANGELOG.md create mode 100644 src/drivers/npm/node_modules/request/LICENSE create mode 100644 src/drivers/npm/node_modules/request/README.md create mode 100755 src/drivers/npm/node_modules/request/index.js create mode 100644 src/drivers/npm/node_modules/request/lib/auth.js create mode 100644 src/drivers/npm/node_modules/request/lib/cookies.js create mode 100644 src/drivers/npm/node_modules/request/lib/getProxyFromURI.js create mode 100644 src/drivers/npm/node_modules/request/lib/har.js create mode 100644 src/drivers/npm/node_modules/request/lib/helpers.js create mode 100644 src/drivers/npm/node_modules/request/lib/multipart.js create mode 100644 src/drivers/npm/node_modules/request/lib/oauth.js create mode 100644 src/drivers/npm/node_modules/request/lib/querystring.js create mode 100644 src/drivers/npm/node_modules/request/lib/redirect.js create mode 100644 src/drivers/npm/node_modules/request/lib/tunnel.js create mode 120000 src/drivers/npm/node_modules/request/node_modules/.bin/har-validator create mode 120000 src/drivers/npm/node_modules/request/node_modules/.bin/uuid create mode 100644 src/drivers/npm/node_modules/request/package.json create mode 100644 src/drivers/npm/node_modules/request/request.js create mode 100644 src/drivers/npm/node_modules/sntp/.npmignore create mode 100755 src/drivers/npm/node_modules/sntp/.travis.yml create mode 100755 src/drivers/npm/node_modules/sntp/LICENSE create mode 100755 src/drivers/npm/node_modules/sntp/Makefile create mode 100755 src/drivers/npm/node_modules/sntp/README.md create mode 100755 src/drivers/npm/node_modules/sntp/examples/offset.js create mode 100755 src/drivers/npm/node_modules/sntp/examples/time.js create mode 100755 src/drivers/npm/node_modules/sntp/index.js create mode 100755 src/drivers/npm/node_modules/sntp/lib/index.js create mode 100755 src/drivers/npm/node_modules/sntp/package.json create mode 100755 src/drivers/npm/node_modules/sntp/test/index.js create mode 100644 src/drivers/npm/node_modules/sshpk/.npmignore create mode 100644 src/drivers/npm/node_modules/sshpk/.travis.yml create mode 100644 src/drivers/npm/node_modules/sshpk/LICENSE create mode 100644 src/drivers/npm/node_modules/sshpk/README.md create mode 100755 src/drivers/npm/node_modules/sshpk/bin/sshpk-conv create mode 100755 src/drivers/npm/node_modules/sshpk/bin/sshpk-sign create mode 100755 src/drivers/npm/node_modules/sshpk/bin/sshpk-verify create mode 100644 src/drivers/npm/node_modules/sshpk/lib/algs.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/certificate.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/dhe.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/ed-compat.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/errors.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/fingerprint.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/formats/auto.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/formats/openssh-cert.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/formats/pem.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/formats/pkcs1.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/formats/pkcs8.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/formats/rfc4253.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/formats/ssh-private.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/formats/ssh.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/formats/x509-pem.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/formats/x509.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/identity.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/index.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/key.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/private-key.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/signature.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/ssh-buffer.js create mode 100644 src/drivers/npm/node_modules/sshpk/lib/utils.js create mode 100644 src/drivers/npm/node_modules/sshpk/man/man1/sshpk-conv.1 create mode 100644 src/drivers/npm/node_modules/sshpk/man/man1/sshpk-sign.1 create mode 100644 src/drivers/npm/node_modules/sshpk/man/man1/sshpk-verify.1 create mode 100644 src/drivers/npm/node_modules/sshpk/package.json create mode 100644 src/drivers/npm/node_modules/string_decoder/.npmignore create mode 100644 src/drivers/npm/node_modules/string_decoder/LICENSE create mode 100644 src/drivers/npm/node_modules/string_decoder/README.md create mode 100644 src/drivers/npm/node_modules/string_decoder/index.js create mode 100644 src/drivers/npm/node_modules/string_decoder/package.json create mode 100644 src/drivers/npm/node_modules/stringstream/.npmignore create mode 100644 src/drivers/npm/node_modules/stringstream/.travis.yml create mode 100644 src/drivers/npm/node_modules/stringstream/LICENSE.txt create mode 100644 src/drivers/npm/node_modules/stringstream/README.md create mode 100644 src/drivers/npm/node_modules/stringstream/example.js create mode 100644 src/drivers/npm/node_modules/stringstream/package.json create mode 100644 src/drivers/npm/node_modules/stringstream/stringstream.js create mode 100644 src/drivers/npm/node_modules/strip-ansi/index.js create mode 100644 src/drivers/npm/node_modules/strip-ansi/license create mode 100644 src/drivers/npm/node_modules/strip-ansi/package.json create mode 100644 src/drivers/npm/node_modules/strip-ansi/readme.md create mode 100644 src/drivers/npm/node_modules/supports-color/index.js create mode 100644 src/drivers/npm/node_modules/supports-color/license create mode 100644 src/drivers/npm/node_modules/supports-color/package.json create mode 100644 src/drivers/npm/node_modules/supports-color/readme.md create mode 100644 src/drivers/npm/node_modules/throttleit/.npmignore create mode 100644 src/drivers/npm/node_modules/throttleit/History.md create mode 100644 src/drivers/npm/node_modules/throttleit/Makefile create mode 100644 src/drivers/npm/node_modules/throttleit/Readme.md create mode 100644 src/drivers/npm/node_modules/throttleit/component.json create mode 100644 src/drivers/npm/node_modules/throttleit/example.js create mode 100644 src/drivers/npm/node_modules/throttleit/index.js create mode 100644 src/drivers/npm/node_modules/throttleit/package.json create mode 100644 src/drivers/npm/node_modules/throttleit/test.js create mode 100644 src/drivers/npm/node_modules/tough-cookie/LICENSE create mode 100644 src/drivers/npm/node_modules/tough-cookie/README.md create mode 100644 src/drivers/npm/node_modules/tough-cookie/lib/cookie.js create mode 100644 src/drivers/npm/node_modules/tough-cookie/lib/memstore.js create mode 100644 src/drivers/npm/node_modules/tough-cookie/lib/pathMatch.js create mode 100644 src/drivers/npm/node_modules/tough-cookie/lib/permuteDomain.js create mode 100644 src/drivers/npm/node_modules/tough-cookie/lib/pubsuffix.js create mode 100644 src/drivers/npm/node_modules/tough-cookie/lib/store.js create mode 100644 src/drivers/npm/node_modules/tough-cookie/package.json create mode 100644 src/drivers/npm/node_modules/tunnel-agent/LICENSE create mode 100644 src/drivers/npm/node_modules/tunnel-agent/README.md create mode 100644 src/drivers/npm/node_modules/tunnel-agent/index.js create mode 100644 src/drivers/npm/node_modules/tunnel-agent/package.json create mode 100644 src/drivers/npm/node_modules/tweetnacl/.npmignore create mode 100644 src/drivers/npm/node_modules/tweetnacl/AUTHORS.md create mode 100644 src/drivers/npm/node_modules/tweetnacl/CHANGELOG.md create mode 100644 src/drivers/npm/node_modules/tweetnacl/LICENSE create mode 100644 src/drivers/npm/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md create mode 100644 src/drivers/npm/node_modules/tweetnacl/README.md create mode 100644 src/drivers/npm/node_modules/tweetnacl/nacl-fast.js create mode 100644 src/drivers/npm/node_modules/tweetnacl/nacl-fast.min.js create mode 100644 src/drivers/npm/node_modules/tweetnacl/nacl.d.ts create mode 100644 src/drivers/npm/node_modules/tweetnacl/nacl.js create mode 100644 src/drivers/npm/node_modules/tweetnacl/nacl.min.js create mode 100644 src/drivers/npm/node_modules/tweetnacl/package.json create mode 100644 src/drivers/npm/node_modules/typedarray/.travis.yml create mode 100644 src/drivers/npm/node_modules/typedarray/LICENSE create mode 100644 src/drivers/npm/node_modules/typedarray/example/tarray.js create mode 100644 src/drivers/npm/node_modules/typedarray/index.js create mode 100644 src/drivers/npm/node_modules/typedarray/package.json create mode 100644 src/drivers/npm/node_modules/typedarray/readme.markdown create mode 100644 src/drivers/npm/node_modules/typedarray/test/server/undef_globals.js create mode 100644 src/drivers/npm/node_modules/typedarray/test/tarray.js create mode 100644 src/drivers/npm/node_modules/util-deprecate/History.md create mode 100644 src/drivers/npm/node_modules/util-deprecate/LICENSE create mode 100644 src/drivers/npm/node_modules/util-deprecate/README.md create mode 100644 src/drivers/npm/node_modules/util-deprecate/browser.js create mode 100644 src/drivers/npm/node_modules/util-deprecate/node.js create mode 100644 src/drivers/npm/node_modules/util-deprecate/package.json create mode 100644 src/drivers/npm/node_modules/uuid/.eslintrc.json create mode 100644 src/drivers/npm/node_modules/uuid/AUTHORS create mode 100644 src/drivers/npm/node_modules/uuid/HISTORY.md create mode 100644 src/drivers/npm/node_modules/uuid/LICENSE.md create mode 100644 src/drivers/npm/node_modules/uuid/README.md create mode 100755 src/drivers/npm/node_modules/uuid/bin/uuid create mode 100644 src/drivers/npm/node_modules/uuid/index.js create mode 100644 src/drivers/npm/node_modules/uuid/lib/bytesToUuid.js create mode 100644 src/drivers/npm/node_modules/uuid/lib/rng-browser.js create mode 100644 src/drivers/npm/node_modules/uuid/lib/rng.js create mode 100644 src/drivers/npm/node_modules/uuid/lib/sha1-browser.js create mode 100644 src/drivers/npm/node_modules/uuid/lib/sha1.js create mode 100644 src/drivers/npm/node_modules/uuid/package.json create mode 100644 src/drivers/npm/node_modules/uuid/v1.js create mode 100644 src/drivers/npm/node_modules/uuid/v4.js create mode 100644 src/drivers/npm/node_modules/uuid/v5.js create mode 100644 src/drivers/npm/node_modules/verror/.gitmodules create mode 100644 src/drivers/npm/node_modules/verror/.npmignore create mode 100644 src/drivers/npm/node_modules/verror/LICENSE create mode 100644 src/drivers/npm/node_modules/verror/Makefile create mode 100644 src/drivers/npm/node_modules/verror/Makefile.targ create mode 100644 src/drivers/npm/node_modules/verror/README.md create mode 100644 src/drivers/npm/node_modules/verror/examples/levels-verror.js create mode 100644 src/drivers/npm/node_modules/verror/examples/levels-werror.js create mode 100644 src/drivers/npm/node_modules/verror/examples/varargs.js create mode 100644 src/drivers/npm/node_modules/verror/examples/verror.js create mode 100644 src/drivers/npm/node_modules/verror/examples/werror.js create mode 100644 src/drivers/npm/node_modules/verror/jsl.node.conf create mode 100644 src/drivers/npm/node_modules/verror/lib/verror.js create mode 100644 src/drivers/npm/node_modules/verror/package.json create mode 100644 src/drivers/npm/node_modules/verror/tests/tst.inherit.js create mode 100644 src/drivers/npm/node_modules/verror/tests/tst.verror.js create mode 100644 src/drivers/npm/node_modules/verror/tests/tst.werror.js create mode 100644 src/drivers/npm/node_modules/which/CHANGELOG.md create mode 100644 src/drivers/npm/node_modules/which/LICENSE create mode 100644 src/drivers/npm/node_modules/which/README.md create mode 100755 src/drivers/npm/node_modules/which/bin/which create mode 100644 src/drivers/npm/node_modules/which/package.json create mode 100644 src/drivers/npm/node_modules/which/which.js create mode 100644 src/drivers/npm/node_modules/xtend/.jshintrc create mode 100644 src/drivers/npm/node_modules/xtend/.npmignore create mode 100644 src/drivers/npm/node_modules/xtend/LICENCE create mode 100644 src/drivers/npm/node_modules/xtend/Makefile create mode 100644 src/drivers/npm/node_modules/xtend/README.md create mode 100644 src/drivers/npm/node_modules/xtend/immutable.js create mode 100644 src/drivers/npm/node_modules/xtend/mutable.js create mode 100644 src/drivers/npm/node_modules/xtend/package.json create mode 100644 src/drivers/npm/node_modules/xtend/test.js create mode 100644 src/drivers/npm/node_modules/yauzl/.npmignore create mode 100644 src/drivers/npm/node_modules/yauzl/.travis.yml create mode 100644 src/drivers/npm/node_modules/yauzl/LICENSE create mode 100644 src/drivers/npm/node_modules/yauzl/README.md create mode 100644 src/drivers/npm/node_modules/yauzl/index.js create mode 100644 src/drivers/npm/node_modules/yauzl/package.json create mode 100644 src/drivers/npm/yarn.lock create mode 100644 src/drivers/webextension/js/.gitkeep delete mode 100644 src/drivers/webextension/js/browser-polyfill.js create mode 100644 src/drivers/webextension/package.json create mode 100644 src/drivers/webextension/src/content.js create mode 100644 src/drivers/webextension/src/driver.js create mode 100644 src/drivers/webextension/src/iframe.js create mode 100644 src/drivers/webextension/src/index.js create mode 100644 src/drivers/webextension/src/inject.js rename src/drivers/webextension/{js => src/modules}/jsontodom.js (98%) create mode 100644 src/drivers/webextension/src/ms_background_scripts_api_bridge.js create mode 100644 src/drivers/webextension/src/ms_content_scripts_api_bridge.js create mode 100644 src/drivers/webextension/src/network.js create mode 100644 src/drivers/webextension/src/options.js create mode 100644 src/drivers/webextension/src/popup.js create mode 100644 src/drivers/webextension/yarn.lock create mode 100644 src/modules/application.js create mode 100644 webpack.config.js create mode 100644 yarn.lock diff --git a/.editorconfig b/.editorconfig index 92b1c978e..0f1786729 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,14 +1,9 @@ root = true [*] -indent_style = tab +charset = utf-8 end_of_line = lf +indent_size = 2 +indent_style = space insert_final_newline = true trim_trailing_whitespace = true - -[*.{js,py}] -charset = utf-8 - -[*.py] -indent_style = space -indent_size = 4 diff --git a/Dockerfile b/Dockerfile index e10b84532..9c78eefe9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,13 +2,16 @@ FROM alpine MAINTAINER Elbert Alias +EXPOSE 8080 + ENV WAPPALYZER_DIR=/opt/wappalyzer -RUN apk add --no-cache \ +RUN apk update && apk add --no-cache \ bash \ curl \ fontconfig \ nodejs \ + nodejs-npm \ optipng \ zip @@ -23,7 +26,9 @@ RUN apk del \ RUN npm i -g \ jsonlint-cli \ manifoldjs \ - svg2png-many + svg2png-many \ + webpack \ + yarn RUN mkdir -p $WAPPALYZER_DIR diff --git a/bin/dev b/bin/dev new file mode 100755 index 000000000..1b58c63d7 --- /dev/null +++ b/bin/dev @@ -0,0 +1,5 @@ +#!/bin/bash + +cd "$(dirname $0)/.." + +yarn run dev diff --git a/bin/node_modules/.yarn-integrity b/bin/node_modules/.yarn-integrity new file mode 100644 index 000000000..eb85016ba --- /dev/null +++ b/bin/node_modules/.yarn-integrity @@ -0,0 +1,8 @@ +{ + "flags": [], + "linkedModules": [], + "topLevelPatters": [], + "lockfileEntries": {}, + "files": [], + "artifacts": {} +} \ No newline at end of file diff --git a/bin/run b/bin/run index f7a29c820..4fcaccd0c 100755 --- a/bin/run +++ b/bin/run @@ -3,6 +3,20 @@ cd "$(dirname $0)" if [[ -f "$1" ]]; then + yarn install + + pushd ../src/drivers/webextension + + yarn install + + popd + + pushd ../src/drivers/npm + + yarn install + + popd + ./$1 $@ else ./help diff --git a/bin/yarn.lock b/bin/yarn.lock new file mode 100644 index 000000000..fb57ccd13 --- /dev/null +++ b/bin/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + diff --git a/content.js b/content.js new file mode 100644 index 000000000..530856a61 --- /dev/null +++ b/content.js @@ -0,0 +1,147 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports) { + +/** global: browser */ + +(function () { + var c = { + init: function () { + var html = document.documentElement.outerHTML; + + c.log('Function call: init()'); + + if (html.length > 50000) { + html = html.substring(0, 25000) + html.substring(html.length - 25000, html.length); + } + + browser.runtime.sendMessage({ + id: 'analyze', + subject: { html: html }, + source: 'content.js' + }); + + c.getEnvironmentVars(); + }, + + log: function (message) { + browser.runtime.sendMessage({ + id: 'log', + message: message, + source: 'content.js' + }); + }, + + getEnvironmentVars: function () { + var container, script; + + c.log('Function call: getEnvironmentVars()'); + + if (typeof document.body === 'undefined') { + return; + } + + try { + container = document.createElement('wappalyzerData'); + + container.setAttribute('id', 'wappalyzerData'); + container.setAttribute('style', 'display: none'); + + script = document.createElement('script'); + + script.setAttribute('id', 'wappalyzerEnvDetection'); + script.setAttribute('src', browser.extension.getURL('js/inject.js')); + + container.addEventListener('wappalyzerEvent', function (event) { + var environmentVars = event.target.childNodes[0].nodeValue; + + document.documentElement.removeChild(container); + document.documentElement.removeChild(script); + + environmentVars = environmentVars.split(' ').slice(0, 500); + + browser.runtime.sendMessage({ + id: 'analyze', + subject: { env: environmentVars }, + source: 'content.js' + }); + }, true); + + document.documentElement.appendChild(container); + document.documentElement.appendChild(script); + } catch (e) { + c.log('Error: ' + e); + } + } + }; + + c.init(); +})(); + +/***/ }) +/******/ ]); \ No newline at end of file diff --git a/driver.js b/driver.js new file mode 100644 index 000000000..5e0d60808 --- /dev/null +++ b/driver.js @@ -0,0 +1,1853 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 3); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1,eval)("this"); +} catch(e) { + // This works if the window reference is available + if(typeof window === "object") + g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {/*global window, global*/ +var util = __webpack_require__(2) +var assert = __webpack_require__(7) +var now = __webpack_require__(8) + +var slice = Array.prototype.slice +var console +var times = {} + +if (typeof global !== "undefined" && global.console) { + console = global.console +} else if (typeof window !== "undefined" && window.console) { + console = window.console +} else { + console = {} +} + +var functions = [ + [log, "log"], + [info, "info"], + [warn, "warn"], + [error, "error"], + [time, "time"], + [timeEnd, "timeEnd"], + [trace, "trace"], + [dir, "dir"], + [consoleAssert, "assert"] +] + +for (var i = 0; i < functions.length; i++) { + var tuple = functions[i] + var f = tuple[0] + var name = tuple[1] + + if (!console[name]) { + console[name] = f + } +} + +module.exports = console + +function log() {} + +function info() { + console.log.apply(console, arguments) +} + +function warn() { + console.log.apply(console, arguments) +} + +function error() { + console.warn.apply(console, arguments) +} + +function time(label) { + times[label] = now() +} + +function timeEnd(label) { + var time = times[label] + if (!time) { + throw new Error("No such label: " + label) + } + + var duration = now() - time + console.log(label + ": " + duration + "ms") +} + +function trace() { + var err = new Error() + err.name = "Trace" + err.message = util.format.apply(null, arguments) + console.error(err.stack) +} + +function dir(object) { + console.log(util.inspect(object) + "\n") +} + +function consoleAssert(expression) { + if (!expression) { + var arr = slice.call(arguments, 1) + assert.ok(false, util.format.apply(null, arr)) + } +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global, process, console) {// Copyright Joyent, Inc. and other Node 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. + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = __webpack_require__(5); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = __webpack_require__(6); + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0), __webpack_require__(4), __webpack_require__(1))) + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(console) {/** + * WebExtension driver + */ + +/** global: browser */ +/** global: chrome */ +/** global: wappalyzer */ +/** global: XMLHttpRequest */ + +(function () { + if (wappalyzer == null) { + return; + } + + var w = wappalyzer, + firstRun = false, + upgraded = false, + tab, + tabCache = {}, + headersCache = {}; + + w.driver = { + timeout: 1000, + + /** + * Log messages to console + */ + log: function (args) { + console.log('[wappalyzer ' + args.type + ']', '[' + args.source + ']', JSON.parse(args.message)); + }, + + /** + * Get a value from localStorage + */ + getOption: function (name, defaultValue, callback) { + var func = function (item) { + callback(item.hasOwnProperty(name) ? item[name] : defaultValue); + }; + + try { + // Chrome, Firefox + browser.storage.local.get(name).then(func); + } catch (e) { + // Edge + browser.storage.local.get(name, func); + } + }, + + /** + * Set a value in localStorage + */ + setOption: function (name, value) { + var option = {}; + + option[name] = value; + + browser.storage.local.set(option); + }, + + /** + * Initialize + */ + init: function () { + w.log('Function call: w.driver.init()', 'driver'); + + // Load apps.json + var xhr = new XMLHttpRequest(); + + xhr.open('GET', 'apps.json', true); + + xhr.overrideMimeType('application/json'); + + xhr.onload = function () { + var json = JSON.parse(xhr.responseText); + + w.categories = json.categories; + w.apps = json.apps; + + w.driver.categoryOrder = Object.keys(w.categories).sort(function (a, b) { + return w.categories[a].priority - w.categories[b].priority; + }); + }; + + xhr.send(null); + + // Version check + try { + var version = browser.runtime.getManifest().version; + + w.driver.getOption('version', null, function (previousVersion) { + if (previousVersion === null) { + w.driver.goToURL({ + url: w.config.websiteURL + 'installed' + }); + } else if (version !== previousVersion) { + w.driver.getOption('upgradeMessage', true, function (upgradeMessage) { + if (upgradeMessage) { + w.driver.goToURL({ + url: w.config.websiteURL + 'upgraded', + background: true + }); + } + }); + } + + w.driver.setOption('version', version); + }); + } catch (e) { + // Do nothing + } + + (chrome || browser).runtime.onMessage.addListener(w.driver.onMessage); + + var callback = function (tabs) { + tabs.forEach(function (tab) { + if (tab.url.match(/^https?:\/\//)) { + browser.tabs.executeScript(tab.id, { file: 'js/content.js' }); + } + }); + }; + + try { + browser.tabs.query({}).then(callback); + } catch (e) { + browser.tabs.query({}, callback); + } + + browser.tabs.onRemoved.addListener(function (tabId) { + tabCache[tabId] = null; + }); + + // Live intercept headers using webRequest API + browser.webRequest.onCompleted.addListener(function (details) { + var responseHeaders = {}; + + if (details.responseHeaders) { + var uri = details.url.replace(/#.*$/, ''); // Remove hash + + details.responseHeaders.forEach(function (header) { + responseHeaders[header.name.toLowerCase()] = header.value || '' + header.binaryValue; + }); + + if (headersCache.length > 50) { + headersCache = {}; + } + + if (/text\/html/.test(responseHeaders['content-type'])) { + if (headersCache[uri] === undefined) { + headersCache[uri] = {}; + } + + for (var header in responseHeaders) { + if (responseHeaders.hasOwnProperty(header)) { + headersCache[uri][header] = responseHeaders[header]; + } + } + } + } + }, { urls: ['http://*/*', 'https://*/*'], types: ['main_frame'] }, ['responseHeaders']); + + if (firstRun) { + w.driver.goToURL({ url: w.config.websiteURL + 'installed', medium: 'install' }); + + firstRun = false; + } + + if (upgraded) { + w.driver.goToURL({ url: w.config.websiteURL + 'upgraded', medium: 'upgrade', background: true }); + + upgraded = false; + } + }, + + onMessage: function (message, sender, sendResponse) { + var hostname, + response, + a = document.createElement('a'); + + if (typeof message.id != 'undefined') { + if (message.id !== 'log') { + w.log('Message received from ' + message.source + ': ' + message.id, 'driver'); + } + + switch (message.id) { + case 'log': + w.log(message.message, message.source); + + break; + case 'analyze': + tab = sender.tab; + + a.href = tab.url.replace(/#.*$/, ''); + + hostname = a.hostname; + + if (headersCache[a.href] !== undefined) { + message.subject.headers = headersCache[a.href]; + } + + w.analyze(hostname, a.href, message.subject); + + break; + case 'ad_log': + w.adCache.push(message.subject); + w.checkAdCache(); + break; + case 'get_apps': + response = { + tabCache: tabCache[message.tab.id], + apps: w.apps, + categories: w.categories + }; + + break; + default: + } + + sendResponse(response); + } + }, + + /** + * Open a tab + */ + goToURL: function (args) { + browser.tabs.create({ + url: args.url, + active: args.background === undefined || !args.background + }); + }, + + /** + * Display apps + */ + displayApps: function () { + var url = tab.url.replace(/#.*$/, ''), + count = w.detected[url] ? Object.keys(w.detected[url]).length.toString() : '0'; + + if (tabCache[tab.id] == null) { + tabCache[tab.id] = { + count: 0, + appsDetected: [] + }; + } + + tabCache[tab.id].count = count; + tabCache[tab.id].appsDetected = w.detected[url]; + + if (count > 0) { + w.driver.getOption('dynamicIcon', true, function (dynamicIcon) { + var appName, + found = false; + + // Find the main application to display + w.driver.categoryOrder.forEach(function (match) { + for (appName in w.detected[url]) { + w.apps[appName].cats.forEach(function (cat) { + var icon = w.apps[appName].icon || 'default.svg'; + + if (!dynamicIcon) { + icon = 'default.svg'; + } + + if (cat === match && !found) { + if (/\.svg$/i.test(icon)) { + icon = 'converted/' + icon.replace(/\.svg$/, '.png'); + } + + browser.pageAction.setIcon({ + tabId: tab.id, + path: 'images/icons/' + icon + }); + + found = true; + } + }); + } + }); + + if (typeof chrome !== 'undefined') { + // Browser polyfill doesn't seem to work here + chrome.pageAction.show(tab.id); + } else { + browser.pageAction.show(tab.id); + } + }); + }; + }, + + /** + * Anonymously track detected applications for research purposes + */ + ping: function () { + w.driver.getOption('tracking', true, function (tracking) { + if (Object.keys(w.ping.hostnames).length && tracking) { + w.driver.post('http://ping.wappalyzer.com/v2/', w.ping); + + w.ping = { hostnames: {} }; + + w.driver.post('https://ad.wappalyzer.com/log/wp/', w.adCache); + + w.adCache = []; + } + }); + }, + + /** + * Make POST request + */ + post: function (url, data) { + var xhr = new XMLHttpRequest(); + + xhr.open('POST', url, true); + + xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); + + xhr.onreadystatechange = function () { + if (xhr.readyState == 4) { + w.log({ 'POST request': { url: url, status: xhr.status, data: data } }, 'driver'); + } + }; + + xhr.send('json=' + encodeURIComponent(JSON.stringify(data))); + } + }; + + w.init(); +})(); +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1))) + +/***/ }), +/* 4 */ +/***/ (function(module, exports) { + +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + + +/***/ }), +/* 5 */ +/***/ (function(module, exports) { + +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} + +/***/ }), +/* 6 */ +/***/ (function(module, exports) { + +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) { + +// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js +// original notice: + +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +function compare(a, b) { + if (a === b) { + return 0; + } + + var x = a.length; + var y = b.length; + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break; + } + } + + if (x < y) { + return -1; + } + if (y < x) { + return 1; + } + return 0; +} +function isBuffer(b) { + if (global.Buffer && typeof global.Buffer.isBuffer === 'function') { + return global.Buffer.isBuffer(b); + } + return !!(b != null && b._isBuffer); +} + +// based on node assert, original notice: + +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.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 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. + +var util = __webpack_require__(2); +var hasOwn = Object.prototype.hasOwnProperty; +var pSlice = Array.prototype.slice; +var functionsHaveNames = (function () { + return function foo() {}.name === 'foo'; +}()); +function pToString (obj) { + return Object.prototype.toString.call(obj); +} +function isView(arrbuf) { + if (isBuffer(arrbuf)) { + return false; + } + if (typeof global.ArrayBuffer !== 'function') { + return false; + } + if (typeof ArrayBuffer.isView === 'function') { + return ArrayBuffer.isView(arrbuf); + } + if (!arrbuf) { + return false; + } + if (arrbuf instanceof DataView) { + return true; + } + if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) { + return true; + } + return false; +} +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. + +var assert = module.exports = ok; + +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) + +var regex = /\s*function\s+([^\(\s]*)\s*/; +// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js +function getName(func) { + if (!util.isFunction(func)) { + return; + } + if (functionsHaveNames) { + return func.name; + } + var str = func.toString(); + var match = str.match(regex); + return match && match[1]; +} +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; + + // try to strip useless frames + var fn_name = getName(stackStartFunction); + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } + + this.stack = out; + } + } +}; + +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); + +function truncate(s, n) { + if (typeof s === 'string') { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} +function inspect(something) { + if (functionsHaveNames || !util.isFunction(something)) { + return util.inspect(something); + } + var rawname = getName(something); + var name = rawname ? ': ' + rawname : ''; + return '[Function' + name + ']'; +} +function getMessage(self) { + return truncate(inspect(self.actual), 128) + ' ' + + self.operator + ' ' + + truncate(inspect(self.expected), 128); +} + +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. + +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} + +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; + +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. + +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); +} +assert.ok = ok; + +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); + +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; + +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; + +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); + +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; + +assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual); + } +}; + +function _deepEqual(actual, expected, strict, memos) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + } else if (isBuffer(actual) && isBuffer(expected)) { + return compare(actual, expected) === 0; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if ((actual === null || typeof actual !== 'object') && + (expected === null || typeof expected !== 'object')) { + return strict ? actual === expected : actual == expected; + + // If both values are instances of typed arrays, wrap their underlying + // ArrayBuffers in a Buffer each to increase performance + // This optimization requires the arrays to have the same type as checked by + // Object.prototype.toString (aka pToString). Never perform binary + // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their + // bit patterns are not identical. + } else if (isView(actual) && isView(expected) && + pToString(actual) === pToString(expected) && + !(actual instanceof Float32Array || + actual instanceof Float64Array)) { + return compare(new Uint8Array(actual.buffer), + new Uint8Array(expected.buffer)) === 0; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else if (isBuffer(actual) !== isBuffer(expected)) { + return false; + } else { + memos = memos || {actual: [], expected: []}; + + var actualIndex = memos.actual.indexOf(actual); + if (actualIndex !== -1) { + if (actualIndex === memos.expected.indexOf(expected)) { + return true; + } + } + + memos.actual.push(actual); + memos.expected.push(expected); + + return objEquiv(actual, expected, strict, memos); + } +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv(a, b, strict, actualVisitedObjects) { + if (a === null || a === undefined || b === null || b === undefined) + return false; + // if one is a primitive, the other must be same + if (util.isPrimitive(a) || util.isPrimitive(b)) + return a === b; + if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) + return false; + var aIsArgs = isArguments(a); + var bIsArgs = isArguments(b); + if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) + return false; + if (aIsArgs) { + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b, strict); + } + var ka = objectKeys(a); + var kb = objectKeys(b); + var key, i; + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length !== kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] !== kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects)) + return false; + } + return true; +} + +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); + +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; + +assert.notDeepStrictEqual = notDeepStrictEqual; +function notDeepStrictEqual(actual, expected, message) { + if (_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual); + } +} + + +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); + +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } +}; + +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } + + try { + if (actual instanceof expected) { + return true; + } + } catch (e) { + // Ignore. The instanceof check doesn't work for arrow functions. + } + + if (Error.isPrototypeOf(expected)) { + return false; + } + + return expected.call({}, actual) === true; +} + +function _tryBlock(block) { + var error; + try { + block(); + } catch (e) { + error = e; + } + return error; +} + +function _throws(shouldThrow, block, expected, message) { + var actual; + + if (typeof block !== 'function') { + throw new TypeError('"block" argument must be a function'); + } + + if (typeof expected === 'string') { + message = expected; + expected = null; + } + + actual = _tryBlock(block); + + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); + + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + + var userProvidedMessage = typeof message === 'string'; + var isUnwantedException = !shouldThrow && util.isError(actual); + var isUnexpectedException = !shouldThrow && actual && !expected; + + if ((isUnwantedException && + userProvidedMessage && + expectedException(actual, expected)) || + isUnexpectedException) { + fail(actual, expected, 'Got unwanted exception' + message); + } + + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} + +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); + +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws(true, block, error, message); +}; + +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) { + _throws(false, block, error, message); +}; + +assert.ifError = function(err) { if (err) throw err; }; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) + +/***/ }), +/* 8 */ +/***/ (function(module, exports) { + +module.exports = now + +function now() { + return new Date().getTime() +} + + +/***/ }) +/******/ ]); \ No newline at end of file diff --git a/options.js b/options.js new file mode 100644 index 000000000..6bfdc3d20 --- /dev/null +++ b/options.js @@ -0,0 +1,144 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports) { + +/** global: browser */ +/** global: wappalyzer */ + +document.addEventListener('DOMContentLoaded', function () { + var d = document; + + var options = { + init: function () { + options.load(); + + d.querySelector('#github').addEventListener('click', function () { + open(wappalyzer.config.githubURL); + }); + + d.querySelector('#twitter').addEventListener('click', function () { + open(wappalyzer.config.twitterURL); + }); + + d.querySelector('#wappalyzer').addEventListener('click', function () { + open(wappalyzer.config.websiteURL); + }); + }, + + get: function (name, defaultValue, callback) { + browser.storage.local.get(name).then(function (item) { + callback(item.hasOwnProperty(name) ? item[name] : defaultValue); + }); + }, + + set: function (name, value) { + var option = {}; + + option[name] = value; + + browser.storage.local.set(option); + }, + + load: function () { + options.get('upgradeMessage', true, function (value) { + var el = d.querySelector('#option-upgrade-message'); + + el.checked = value; + + el.addEventListener('change', function () { + options.set('upgradeMessage', el.checked); + }); + }); + + options.get('dynamicIcon', true, function (value) { + var el = d.querySelector('#option-dynamic-icon'); + + el.checked = value; + + el.addEventListener('change', function () { + options.set('dynamicIcon', el.checked); + }); + }); + + options.get('tracking', true, function (value) { + var el = d.querySelector('#option-tracking'); + + el.checked = value; + + el.addEventListener('change', function () { + options.set('tracking', el.checked); + }); + }); + } + }; + + options.init(); +}); + +/***/ }) +/******/ ]); \ No newline at end of file diff --git a/package.json b/package.json index dd2dbe93d..b0fbe1ae9 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,16 @@ { - "dependencies": { + "devDependencies": { "file-type": "3.8.*", "is-svg": "2.0.*", "read-chunk": "2.0.*", - "svg2png-many": "*" + "svg2png-many": "*", + "webpack": "^3.0.0" + }, + "scripts": { + "dev": "webpack --progress --colors --watch" + }, + "dependencies": { + "babel-preset-es2015": "^6.24.1", + "glob": "^7.1.2" } } - diff --git a/popup.js b/popup.js new file mode 100644 index 000000000..0dbd18034 --- /dev/null +++ b/popup.js @@ -0,0 +1,168 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports) { + +/** global: chrome */ +/** global: browser */ + +(function () { + var popup = { + init: function () { + popup.update(['p', {}, ' '], document, {}); + + var func = function (tabs) { + (chrome || browser).runtime.sendMessage({ id: 'get_apps', tab: tabs[0], source: 'popup.js' }, function (response) { + popup.update(popup.appsToDomTemplate(response)); + }); + }; + + try { + // Chrome, Firefox + browser.tabs.query({ active: true, currentWindow: true }).then(func); + } catch (e) { + // Edge + browser.tabs.query({ active: true, currentWindow: true }, func); + } + }, + + update: function (dom) { + if (/complete|interactive|loaded/.test(document.readyState)) { + popup.replaceDom(dom); + } else { + document.addEventListener('DOMContentLoaded', function () { + popup.replaceDom(dom); + }); + } + }, + + replaceDom: function (domTemplate) { + var body = document.body; + + while (body.firstChild) { + body.removeChild(body.firstChild); + } + + body.appendChild(jsonToDOM(domTemplate, document, {})); + }, + + appsToDomTemplate: function (response) { + var appName, + confidence, + version, + categories = [], + template = []; + + if (response.tabCache && response.tabCache.count > 0) { + for (appName in response.tabCache.appsDetected) { + confidence = response.tabCache.appsDetected[appName].confidenceTotal; + version = response.tabCache.appsDetected[appName].version; + categories = []; + + response.apps[appName].cats.forEach(function (cat) { + categories.push(['a', { + target: '_blank', + href: 'https://wappalyzer.com/categories/' + popup.slugify(response.categories[cat].name) + }, ['span', { + class: 'category' + }, ['span', { + class: 'name' + }, browser.i18n.getMessage('categoryName' + cat)]]]); + }); + + template.push(['div', { + class: 'detected-app' + }, ['a', { + target: '_blank', + href: 'https://wappalyzer.com/applications/' + popup.slugify(appName) + }, ['img', { + src: 'images/icons/' + (response.apps[appName].icon || 'default.svg') + }], ['span', { + class: 'label' + }, ['span', { + class: 'name' + }, appName], (version ? ' ' + version : '') + (confidence < 100 ? ' (' + confidence + '% sure)' : '')]], categories]); + } + } else { + template = ['div', { + class: 'empty' + }, browser.i18n.getMessage('noAppsDetected')]; + } + + return template; + }, + + slugify: function (string) { + return string.toLowerCase().replace(/[^a-z0-9-]/g, '-').replace(/--+/g, '-').replace(/(?:^-|-$)/, ''); + } + }; + + popup.init(); +})(); + +/***/ }) +/******/ ]); \ No newline at end of file diff --git a/run b/run index 237565872..6401121d8 100755 --- a/run +++ b/run @@ -8,12 +8,4 @@ if [[ -z "$(which docker)" ]]; then exit 1 fi -docker="docker run --rm -v "$(pwd):/opt/wappalyzer" -it wappalyzer/dev" - -if [[ ! -d "node_modules" ]]; then - $docker ./bin/run links - - $docker npm i -fi - -$docker ./bin/run $@ +docker run --rm -v "$(pwd):/opt/wappalyzer" -it wappalyzer/dev ./bin/run $@ diff --git a/src/apps.json b/src/apps.json index 735835afd..dcb589660 100755 --- a/src/apps.json +++ b/src/apps.json @@ -254,13 +254,13 @@ "Adnegah": { "cats": [ "36" - ], + ], "headers": { "X-Advertising-By": "adnegah.net" }, "html": "", + "icon": "Google Tag Manager.png", + "website": "http://www.google.com/tagmanager" + }, + "Google Wallet": { + "cats": [ + "41" + ], + "icon": "Google Wallet.png", + "script": [ + "checkout\\.google\\.com", + "wallet\\.google\\.com" + ], + "website": "http://wallet.google.com" + }, + "Google Web Server": { + "cats": [ + "22" + ], + "headers": { + "Server": "gws" + }, + "icon": "Google Web Server.png", + "website": "http://en.wikipedia.org/wiki/Google_Web_Server" + }, + "Google Web Toolkit": { + "cats": [ + "18" + ], + "env": "^__gwt_", + "icon": "Google Web Toolkit.png", + "implies": "Java", + "meta": { + "gwt:property": "" + }, + "website": "http://developers.google.com/web-toolkit" + }, + "Graffiti CMS": { + "cats": [ + "1" + ], + "headers": { + "Set-Cookie": "graffitibot[^;]=" + }, + "icon": "Graffiti CMS.png", + "implies": "Microsoft ASP.NET", + "meta": { + "generator": "Graffiti CMS ([^\"]+)\\;version:\\1" + }, + "script": "/graffiti\\.js", + "website": "http://graffiticms.codeplex.com" + }, + "Grandstream": { + "cats": [ + "22", + "39" + ], + "headers": { + "Server": "Grandstream\\/?([\\d\\.]+)?\\;version:\\1" + }, + "icon": "Grandstream.png", + "website": "http://www.grandstream.com" + }, + "Grav": { + "cats": [ + "1" + ], + "icon": "Grav.png", + "implies": "PHP", + "meta": { + "generator": "GravCMS(?:\\s([\\d.]+))?\\;version:\\1" + }, + "website": "http://getgrav.org" + }, + "Gravatar": { + "cats": [ + "19" + ], + "env": "^Gravatar$", + "html": "<[^>]+gravatar\\.com/avatar/", + "icon": "Gravatar.png", + "website": "http://gravatar.com" + }, + "Gravity Forms": { + "cats": [ + "19" + ], + "html": [ + "
]*gform_wrapper", + "
]*gform_body", + "
    ]*class=(?:\"|')[^>]*gform_fields", + "]*href=(?:\"|')[^>]*wp-content/plugins/gravityforms/css/" + ], + "icon": "gravityforms.svg", + "implies": "WordPress", + "website": "http://gravityforms.com" + }, + "Gravity Insights": { + "cats": [ + "10" + ], + "env": "^GravityInsights$", + "icon": "Gravity Insights.png", + "website": "http://insights.gravity.com" + }, + "Green Valley CMS": { + "cats": [ + "1" + ], + "html": "]+/dsresource\\?objectid=", + "icon": "Green Valley CMS.png", + "implies": "Apache Tomcat", + "meta": { + "DC.identifier": "/content\\.jsp\\?objectid=" + }, + "website": "http://www.greenvalley.nl/Public/Producten/Content_Management/CMS" + }, + "HERE": { + "cats": [ + "35" + ], + "icon": "HERE.png", + "script": "https?://js\\.cit\\.api\\.here\\.com/se/([\\d.]+)\\/\\;version:\\1", + "website": "http://developer.here.com" + }, + "HHVM": { + "cats": [ + "22" + ], + "headers": { + "X-Powered-By": "HHVM/?([\\d.]+)?\\;version:\\1" + }, + "icon": "HHVM.png", + "implies": "PHP\\;confidence:50", + "website": "http://hhvm.com" + }, + "HP": { + "cats": [ + "40" + ], + "icon": "HP.svg", + "website": "http://hp.com" + }, + "HP ChaiServer": { + "cats": [ + "22" + ], + "headers": { + "Server": "HP-Chai(?:Server|SOE)(?:/([\\d.]+))?\\;version:\\1" + }, + "icon": "HP.svg", + "implies": "HP", + "website": "http://hp.com" + }, + "HP Compact Server": { + "cats": [ + "22" + ], + "headers": { + "Server": "HP_Compact_Server(?:/([\\d.]+))?\\;version:\\1" + }, + "icon": "HP.svg", + "website": "http://hp.com" + }, + "HP ProCurve": { + "cats": [ + "37" + ], + "icon": "HP.svg", + "website": "http://hp.com/networking" + }, + "HP System Management": { + "cats": [ + "46" + ], + "headers": { + "Server": "HP System Management" + }, + "icon": "HP.svg", + "website": "http://hp.com" + }, + "HP iLO": { + "cats": [ + "22", + "46" + ], + "headers": { + "Server": "HP-iLO-Server(?:/([\\d.]+))?\\;version:\\1" + }, + "icon": "HP.svg", + "website": "http://hp.com" + }, + "HTTP Kit": { + "cats": [ + "22" + ], + "headers": { + "Server": "^http-kit" + }, + "implies": "Java", + "website": "http://http-kit.org" + }, + "HTTP-Server": { + "cats": [ + "22" + ], + "headers": { + "Server": "(?:^|[^-])\bHTTP-Server(?: ?/?V?([\\d.]+))?\\;version:\\1" + }, + "website": "http://example.com" + }, + "HTTP/2": { + "cats": [ + "19" + ], + "excludes": "SPDY", + "headers": { + "X-Firefox-Spdy": "h2" + }, + "icon": "http2.png", + "website": "http://http2.github.io" + }, + "Haddock": { + "cats": [ + "4" + ], + "html": "

    Produced by Haddock version ([0-9.]+)

    \\;version:\\1", + "script": "haddock-util\\.js", + "website": "http://www.haskell.org/haddock/" + }, + "Hammer.js": { + "cats": [ + "12" + ], + "env": "^Hammer$", + "icon": "Hammer.js.png", + "script": "hammer(?:\\.min)?\\.js", + "website": "http://hammerjs.github.io" + }, + "Handlebars": { + "cats": [ + "12" + ], + "env": "^Handlebars$", + "html": "<[^>]*type=[^>]text\\/x-handlebars-template", + "icon": "Handlebars.png", + "script": "handlebars(?:\\.runtime)?(?:-v([\\d.]+?))?(?:\\.min)?\\.js\\;version:\\1", + "website": "http://handlebarsjs.com" + }, + "Happy ICS Server": { + "cats": [ + "22" + ], + "headers": { + "Server": "Happy ICS Server(?:/([\\d.]+))?\\;version:\\1" + }, + "implies": "OmniTouch 8660 My Teamwork", + "website": "http://example.com" + }, + "Haravan": { + "cats": [ + "6" + ], + "env": "^Haravan$", + "icon": "Haravan.png", + "script": "haravan.*\\.js", + "website": "https://www.haravan.com" + }, + "Haskell": { + "cats": [ + "27" + ], + "icon": "Haskell.png", + "website": "http://wiki.haskell.org/Haskell" + }, + "HeadJS": { + "cats": [ + "12" + ], + "env": "^head$\\;confidence:50", + "html": "<[^>]*data-headjs-load", + "icon": "HeadJS.png", + "script": "head\\.(?:core|load)(?:\\.min)?\\.js", + "website": "http://headjs.com" + }, + "Heap": { + "cats": [ + "10" + ], + "env": "^heap$", + "icon": "Heap.png", + "script": "heap-\\d+.js", + "website": "http://heapanalytics.com" + }, + "Hello Bar": { + "cats": [ + "5" + ], + "env": "^HelloBar$", + "icon": "Hello Bar.png", + "script": "hellobar\\.js", + "website": "http://hellobar.com" + }, + "Hiawatha": { + "cats": [ + "22" + ], + "headers": { + "Server": "Hiawatha v([\\d.]+)\\;version:\\1" + }, + "icon": "Hiawatha.png", + "website": "http://hiawatha-webserver.org" + }, + "Highcharts": { + "cats": [ + "25" + ], + "env": "^Highcharts$", + "html": "]*>Created with Highcharts ([\\d.]*)\\;version:\\1", + "icon": "Highcharts.png", + "script": "highcharts.*\\.js", + "website": "http://highcharts.com" + }, + "Highlight.js": { + "cats": [ + "19" + ], + "icon": "Highlight.js.png", + "script": "/highlight\\.js/[\\d.]+?/highlight\\.min\\.js", + "website": "https://highlightjs.org/" + }, + "Highstock": { + "cats": [ + "25" + ], + "html": "]*>Created with Highstock ([\\d.]*)\\;version:\\1", + "icon": "Highcharts.png", + "script": "highstock(?:\\-|\\.)?([\\d\\.]*\\d).*\\.js\\;version:\\1", + "website": "http://highcharts.com/products/highstock" + }, + "Hippo": { + "cats": [ + "1" + ], + "html": "<[^>]+/binaries/(?:[^/]+/)*content/gallery/", + "icon": "Hippo.png", + "website": "http://onehippo.org" + }, + "Hogan.js": { + "cats": [ + "12" + ], + "env": "^Hogan$", + "icon": "Hogan.js.png", + "script": [ + "hogan-(?:-|\\.)([\\d.]*\\d)[^/]*\\.js\\;version:\\1", + "([\\d.]+)/hogan(?:\\.min)?\\.js\\;version:\\1" + ], + "website": "http://twitter.github.com/hogan.js" + }, + "Homeland": { + "cats": [ + "1", + "2" + ], + "headers": { + "Set-Cookie:": "_homeland_" + }, + "icon": "Homeland.png", + "implies": "Ruby on Rails", + "website": "https://gethomeland.com" + }, + "Hotaru CMS": { + "cats": [ + "1" + ], + "headers": { + "Set-Cookie": "hotaru_mobile=" + }, + "icon": "Hotaru CMS.png", + "implies": "PHP", + "meta": { + "generator": "Hotaru CMS" + }, + "website": "http://hotarucms.org" + }, + "Hotjar": { + "cats": [ + "10" + ], + "env": [ + "^HotLeadfactory$", + "^HotleadController$" + ], + "icon": "Hotjar.png", + "script": "^//static\\.hotjar\\.com/c/hotjar-", + "website": "https://www.hotjar.com" + }, + "HubSpot": { + "cats": [ + "32" + ], + "env": "^(?:_hsq|hubspot)$", + "html": "", + "icon": "InProces.png", + "script": "brein/inproces/website/websitefuncties\\.js", + "website": "http://www.brein.nl/oplossing/product/website" + }, + "Incapsula": { + "cats": [ + "31" + ], + "headers": { + "X-CDN": "Incapsula" + }, + "icon": "Incapsula.png", + "website": "http://www.incapsula.com" + }, + "Indexhibit": { + "cats": [ + "1" + ], + "html": "<(?:link|a href) [^>]+ndxz-studio", + "implies": [ + "PHP", + "Apache", + "Exhibit" + ], + "meta": { + "generator": "Indexhibit" + }, + "website": "http://www.indexhibit.org" + }, + "Indico": { + "cats": [ + "1" + ], + "headers": { + "Set-cookie": "MAKACSESSION" + }, + "html": "Powered by\\s+(?:CERN )?(?:CDS )?Indico( [\\d\\.]+)?\\;version:\\1", + "icon": "Indico.png", + "website": "http://indico-software.org" + }, + "Indy": { + "cats": [ + "22" + ], + "headers": { + "Server": "Indy(?:/([\\d.]+))?\\;version:\\1" + }, + "website": "http://indyproject.org" + }, + "InfernoJS": { + "cats": [ + "12" + ], + "env": "^Inferno$", + "icon": "InfernoJS.png", + "website": "https://infernojs.org/" + }, + "Infusionsoft": { + "cats": [ + "32" + ], + "html": [ + "]*name=\"infusionsoft_version\" [^>]*value=\"([^>]*)\" [^>]*\\/>\\;version:\\1", + "]*value=\"([^>]*)\" [^>]*name=\"infusionsoft_version\" [^>]*\\/>\\;version:\\1" + ], + "icon": "infusionsoft.svg", + "website": "http://infusionsoft.com" + }, + "InstantCMS": { + "cats": [ + "1" + ], + "headers": { + "Set-Cookie": "InstantCMS\\[logdate\\]=" + }, + "icon": "InstantCMS.png", + "implies": "PHP", + "meta": { + "generator": "InstantCMS" + }, + "website": "http://www.instantcms.ru" + }, + "Intel Active Management Technology": { + "cats": [ + "22", + "46" + ], + "headers": { + "Server": "Intel\\(R\\) Active Management Technology(?: ([\\d.]+))?\\;version:\\1" + }, + "icon": "Intel Active Management Technology.png", + "website": "http://intel.com" + }, + "IntenseDebate": { + "cats": [ + "15" + ], + "icon": "IntenseDebate.png", + "script": "intensedebate\\.com", + "website": "http://intensedebate.com" + }, + "Intercom": { + "cats": [ + "10" + ], + "env": "^Intercom$", + "icon": "Intercom.png", + "script": "(?:api\\.intercom\\.io/api|static\\.intercomcdn\\.com/intercom\\.v1)", + "website": "http://intercom.io" + }, + "Intershop": { + "cats": [ + "6" + ], + "icon": "Intershop.png", + "script": "(?:is-bin|INTERSHOP)", + "website": "http://intershop.com" + }, + "Invenio": { + "cats": [ + "50" + ], + "headers": { + "Set-cookie": "INVENIOSESSION" + }, + "html": "(?:Powered by|System)\\s+(?:CERN )?(?:CDS )?Invenio\\s*v?([\\d\\.]+)?\\;version:\\1", + "icon": "Invenio.png", + "website": "http://invenio-software.org" + }, + "Ionicons": { + "cats": [ + "17" + ], + "html": "]* href=[^>]+ionicons(?:\\.min)?\\.css", + "icon": "Ionicons.png", + "website": "http://ionicons.com" + }, + "JAlbum": { + "cats": [ + "7" + ], + "icon": "JAlbum.png", + "implies": "Java", + "meta": { + "generator": "JAlbum( [\\d.]+)?\\;version:\\1" + }, + "website": "http://jalbum.net/en" + }, + "JBoss Application Server": { + "cats": [ + "22" + ], + "headers": { + "X-Powered-By": "JBoss(?:-([\\d.]+))?\\;version:\\1" + }, + "icon": "JBoss Application Server.png", + "website": "http://jboss.org/jbossas.html" + }, + "JBoss Web": { + "cats": [ + "22" + ], + "excludes": "Apache Tomcat", + "headers": { + "X-Powered-By": "JBossWeb(?:-([\\d.]+))?\\;version:\\1" + }, + "icon": "JBoss Web.png", + "implies": "JBoss Application Server", + "website": "http://jboss.org/jbossweb" + }, + "JC-HTTPD": { + "cats": [ + "22" + ], + "excludes": "Apache", + "headers": { + "Server": "JC-HTTPD(?:/([\\d.]+))?\\;version:\\1" + }, + "icon": "JC-HTTPD.png", + "implies": "Canon", + "website": "http://canon.com" + }, + "JS Charts": { + "cats": [ + "25" + ], + "env": "^JSChart$", + "icon": "JS Charts.png", + "script": "jscharts.*\\.js", + "website": "http://www.jscharts.com" + }, + "JTL Shop": { + "cats": [ + "6" + ], + "headers": { + "Set-Cookie": "JTLSHOP=" + }, + "html": "(?:]+name=\"JTLSHOP|]+id=\"wrapper_r\"|<[^>]+(?:feed|components)/com_|]+class=\"pill)\\;confidence:50", + "icon": "Joomla.png", + "implies": "PHP", + "meta": { + "generator": "Joomla!(?: ([\\d.]+))?\\;version:\\1" + }, + "url": "option=com_", + "website": "http://joomla.org" + }, + "K2": { + "cats": [ + "19" + ], + "env": "^K2RatingURL$", + "html": "", + "icon": "Lightspeed.svg", + "script": "http://assets.webshopapp.com", + "url": "seoshop.webshopapp.com", + "website": "http://www.lightspeedhq.com/products/ecommerce/" + }, + "Lighty": { + "cats": [ + "18" + ], + "headers": { + "Set-Cookie": "lighty_version" + }, + "icon": "Lighty.png", + "implies": "PHP", + "website": "http://gitlab.com/lighty/framework" + }, + "LimeSurvey": { + "cats": [ + "19" + ], + "headers": { + "generator": "LimeSurvey" + }, + "icon": "LimeSurvey.png", + "website": "http://limesurvey.org/" + }, + "LinkSmart": { + "cats": [ + "36" + ], + "env": "^(?:_mb_site_guid$|LS_JSON|LinkSmart(?:_|$))", + "icon": "LinkSmart.png", + "script": "^https?://cdn\\.linksmart\\.com/linksmart_([\\d.]+?)(?:\\.min)?\\.js\\;version:\\1", + "website": "http://linksmart.com" + }, + "Linkedin": { + "cats": [ + "5" + ], + "icon": "Linkedin.svg", + "script": "//platform\\.linkedin\\.com/in\\.js", + "website": "http://linkedin.com" + }, + "List.js": { + "cats": [ + "12" + ], + "env": "^List$", + "icon": "List.js.png", + "script": "^list\\.(?:min\\.)?js$", + "website": "http://www.listjs.com" + }, + "LiteSpeed": { + "cats": [ + "22" + ], + "headers": { + "Server": "^LiteSpeed$" + }, + "icon": "LiteSpeed.png", + "website": "http://litespeedtech.com" + }, + "Lithium": { + "cats": [ + "1" + ], + "env": [ + "^LITHIUM$" + ], + "headers": { + "Set-Cookie": "LithiumVisitor=" + }, + "html": " ]+Powered by Lithium", + "icon": "Lithium.png", + "implies": "PHP", + "website": "http://www.lithium.com" + }, + "LiveAgent": { + "cats": [ + "52" + ], + "env": "^LiveAgent$", + "icon": "LiveAgent.png", + "website": "http://www.ladesk.com" + }, + "LiveChat": { + "cats": [ + "52" + ], + "icon": "LiveChat.png", + "script": "cdn\\.livechatinc\\.com/.*tracking\\.js", + "website": "http://livechatinc.com" + }, + "LiveJournal": { + "cats": [ + "11" + ], + "icon": "LiveJournal.png", + "url": "\\.livejournal\\.com", + "website": "http://www.livejournal.com" + }, + "LivePerson": { + "cats": [ + "52" + ], + "icon": "LivePerson.png", + "script": "^https?://lptag\\.liveperson\\.net/tag/tag\\.js", + "website": "https://www.liveperson.com/" + }, + "LiveStreet CMS": { + "cats": [ + "1" + ], + "env": "^LIVESTREET", + "headers": { + "X-Powered-By": "LiveStreet CMS" + }, + "icon": "LiveStreet CMS.png", + "implies": "PHP", + "website": "http://livestreetcms.com" + }, + "Livefyre": { + "cats": [ + "15" + ], + "env": [ + "^fyre$", + "^FyreLoader$" + ], + "html": "<[^>]+(?:id|class)=\"livefyre", + "icon": "Livefyre.png", + "script": "livefyre_init\\.js", + "website": "http://livefyre.com" + }, + "Liveinternet": { + "cats": [ + "10" + ], + "html": [ + "]*>[^]{0,128}?src\\s*=\\s*['\"]//counter\\.yadro\\.ru/hit(?:;\\S+)?\\?(?:t\\d+\\.\\d+;)?r", + "", + "", + "]*/sites/[a-z\\d]{24}/theme/stylesheets", + "icon": "Locomotive.png", + "implies": [ + "Ruby on Rails", + "MongoDB" + ], + "website": "http://www.locomotivecms.com" + }, + "Logitech Media Server": { + "cats": [ + "22", + "38" + ], + "headers": { + "Server": "Logitech Media Server(?: \\(([\\d\\.]+))?\\;version:\\1" + }, + "icon": "Logitech Media Server.png", + "website": "http://www.mysqueezebox.com" + }, + "Lotus Domino": { + "cats": [ + "22" + ], + "headers": { + "Server": "Lotus-Domino" + }, + "icon": "Lotus Domino.png", + "implies": "Java", + "website": "http://www-01.ibm.com/software/lotus/products/domino" + }, + "Lua": { + "cats": [ + "27" + ], + "headers": { + "X-Powered-By": "\bLua(?: ([\\d.]+))?\\;version:\\1" + }, + "icon": "Lua.png", + "website": "http://www.lua.org" + }, + "Lucene": { + "cats": [ + "34" + ], + "icon": "Lucene.png", + "implies": "Java", + "website": "http://lucene.apache.org/core/" + }, + "Luigi’s Box": { + "cats": [ + "10", + "29" + ], + "env": "^Luigis$", + "icon": "Luigisbox.svg", + "website": "https://www.luigisbox.com" + }, + "M.R. Inc BoxyOS": { + "cats": [ + "28" + ], + "icon": "M.R. Inc.png", + "website": "http://mrincworld.com" + }, + "M.R. Inc SiteFrame": { + "cats": [ + "18" + ], + "headers": { + "Powered-By": "M\\.R\\. Inc SiteFrame" + }, + "icon": "M.R. Inc.png", + "website": "http://mrincworld.com" + }, + "M.R. Inc Webserver": { + "cats": [ + "22" + ], + "headers": { + "Server": "M\\.R\\. Inc Webserver" + }, + "icon": "M.R. Inc.png", + "implies": [ + "M.R. Inc BoxyOS" + ], + "website": "http://mrincworld.com" + }, + "MHonArc": { + "cats": [ + "50" + ], + "html": "\\;version:\\1", + "icon": "mhonarc.png", + "website": "http://www.mhonarc.at" + }, + "MOBOTIX": { + "cats": [ + "39" + ], + "icon": "MOBOTIX.png", + "meta": { + "author": "MOBOTIX AG\\;confidence:40", + "copyright": "MOBOTIX AG\\;confidence:40", + "publisher": "MOBOTIX AG\\;confidence:40" + }, + "url": "control/userimage\\.html\\;confidence:70", + "website": "http://mobotix.com" + }, + "MODX": { + "cats": [ + "1" + ], + "env": "^MODX_MEDIA_PATH$", + "headers": { + "Set-Cookie": "SN5[a-f\\d]{12}", + "X-Powered-By": "^MODX" + }, + "html": [ + "]+>Powered by MODX", + "<(?:link|script)[^>]+assets/snippets/\\;confidence:20", + "]+id=\"ajaxSearch_form\\;confidence:20", + "]+id=\"ajaxSearch_input\\;confidence:20" + ], + "icon": "MODX.png", + "implies": "PHP", + "meta": { + "generator": "MODX[^\\d.]*([\\d.]+)?\\;version:\\1" + }, + "website": "http://modx.com" + }, + "MadAdsMedia": { + "cats": [ + "36" + ], + "env": "^setM(?:Iframe|RefURL)$", + "icon": "MadAdsMedia.png", + "script": "^https?://(?:ads-by|pixel)\\.madadsmedia.com/", + "website": "http://madadsmedia.com" + }, + "Magento": { + "cats": [ + "6" + ], + "env": [ + "^(?:Mage|VarienForm)$" + ], + "headers": { + "Set-Cookie": "frontend=\\;confidence:50" + }, + "html": [ + "