├── .gitignore ├── .travis.yml ├── .npmignore ├── package.json ├── tests ├── fixtures │ ├── failing_http.json │ ├── known_password.json │ └── unknown_password.json └── test.js ├── index.js └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - stable 4 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | /.idea/ 2 | /coverage/ 3 | /test/ 4 | 5 | /.gitignore 6 | /.publishrc 7 | /.travis.yml 8 | 9 | .DS_Store 10 | npm-debug.log 11 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": "Roman Filippov ", 3 | "bin": { 4 | "pwnedpasswords": "./index.js" 5 | }, 6 | "bugs": "https://github.com/moltar/pwnedpasswords/issues", 7 | "description": "A wrapper for PwnedPasswords API by Troy Hunt (haveibeenpwned.com).", 8 | "devDependencies": { 9 | "mocha": "6.2.1", 10 | "nock": "11.4.0" 11 | }, 12 | "homepage": "https://github.com/moltar/pwnedpasswords", 13 | "repository": { 14 | "type": "git", 15 | "url": "https://github.com/moltar/pwnedpasswords.git" 16 | }, 17 | "keywords": [ 18 | "pwnedpasswords", 19 | "haveibeenpwned", 20 | "have i been pwned", 21 | "troy hunt", 22 | "api", 23 | "password" 24 | ], 25 | "license": "MIT", 26 | "main": "index.js", 27 | "name": "pwnedpasswords", 28 | "scripts": { 29 | "test": "mocha tests/*.js" 30 | }, 31 | "version": "1.0.5" 32 | } 33 | -------------------------------------------------------------------------------- /tests/fixtures/failing_http.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "scope": "https://api.pwnedpasswords.com:443", 4 | "method": "GET", 5 | "path": "/range/5baa6", 6 | "body": "", 7 | "status": 500, 8 | "response": "total fail", 9 | "rawHeaders": [ 10 | "Date", 11 | "Fri, 23 Feb 2018 04:54:15 GMT", 12 | "Content-Type", 13 | "text/plain; charset=utf-8", 14 | "Transfer-Encoding", 15 | "chunked", 16 | "Connection", 17 | "close", 18 | "Cache-Control", 19 | "public, max-age=2678400", 20 | "Vary", 21 | "Accept-Encoding", 22 | "Arr-Disable-Session-Affinity", 23 | "True", 24 | "X-Powered-By", 25 | "ASP.NET", 26 | "CF-Cache-Status", 27 | "HIT", 28 | "Expires", 29 | "Mon, 26 Mar 2018 04:54:15 GMT", 30 | "Strict-Transport-Security", 31 | "max-age=31536000; includeSubDomains; preload", 32 | "X-Content-Type-Options", 33 | "nosniff", 34 | "Expect-CT", 35 | "max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"", 36 | "Server", 37 | "cloudflare" 38 | ] 39 | } 40 | ] -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | /** 4 | * A wrapper for PwnedPasswords API by Troy Hunt (haveibeenpwned.com). 5 | * @module pwnedpasswords 6 | */ 7 | 8 | const crypto = require('crypto') 9 | const https = require('https') 10 | 11 | // Number of characters from the hash that API expects 12 | const PREFIX_LENGTH = 5 13 | const API_URL = 'https://api.pwnedpasswords.com/range/' 14 | const HTTP_STATUS_OK = 200 15 | const HTTP_STATUS_NOT_FOUND = 404 16 | 17 | function pwnedpasswords (password, cb) { 18 | const hasCallback = typeof cb === 'function' 19 | 20 | if (typeof password !== 'string') { 21 | const err = new Error('Input password must be a string.') 22 | return hasCallback ? cb(err) : Promise.reject(err) 23 | } 24 | 25 | const hashedPassword = hash(password) 26 | const hashedPasswordPrefix = hashedPassword.substr(0, PREFIX_LENGTH) 27 | const hashedPasswordSuffix = hashedPassword.substr(PREFIX_LENGTH) 28 | 29 | return get(hashedPasswordPrefix) 30 | .then((res) => { 31 | const found = res 32 | .split('\n') 33 | .map(line => line.split(':')) 34 | .filter(filtered => filtered[0].toLowerCase() === hashedPasswordSuffix) 35 | .map(mapped => Number(mapped[1])) 36 | .shift() || 0 37 | 38 | return hasCallback ? cb(null, found) : found 39 | }) 40 | .catch((err) => { 41 | if (hasCallback) { 42 | return cb(err) 43 | } 44 | 45 | throw err 46 | }) 47 | } 48 | 49 | function hash (password) { 50 | const shasum = crypto.createHash('sha1') 51 | shasum.update(password) 52 | return shasum.digest('hex') 53 | } 54 | 55 | function get (hashedPasswordPrefix) { 56 | return new Promise((resolve, reject) => { 57 | https.get(API_URL + hashedPasswordPrefix, (res) => { 58 | let data = '' 59 | 60 | // According to API spec, 404 is returned when no hash found, so it is a valid response. 61 | if (res.statusCode !== HTTP_STATUS_OK && res.statusCode !== HTTP_STATUS_NOT_FOUND) { 62 | return reject(new Error(`Failed to load pwnedpasswords API: ${res.statusCode}`)) 63 | } 64 | 65 | res.on('data', (chunk) => { 66 | data += chunk 67 | }) 68 | 69 | res.on('end', () => { 70 | resolve(data) 71 | }) 72 | 73 | return true 74 | }).on('error', (err) => { 75 | reject(err) 76 | }) 77 | }) 78 | } 79 | 80 | if (require.main === module) { 81 | pwnedpasswords(process.argv[2], (err, res) => { 82 | /* eslint no-console: [ "error", { allow: ["log", "error"] } ] */ 83 | 84 | if (err) { 85 | console.error(err) 86 | process.exit(1) 87 | } 88 | 89 | console.log(res) 90 | }) 91 | } 92 | 93 | module.exports = pwnedpasswords 94 | -------------------------------------------------------------------------------- /tests/test.js: -------------------------------------------------------------------------------- 1 | const assert = require('assert') 2 | const nockBack = require('nock').back 3 | const pwnedpasswords = require('../') 4 | const path = require('path') 5 | 6 | nockBack.fixtures = path.join(__dirname, '/fixtures') 7 | nockBack.setMode('lockdown') 8 | 9 | /* global describe, it */ 10 | describe('pwnedpasswords', () => { 11 | describe('promise', () => { 12 | it('rejects without a password', () => pwnedpasswords() 13 | .then() 14 | .catch((err) => { 15 | assert.equal(err, 'Error: Input password must be a string.') 16 | })) 17 | 18 | it('rejects with a `null` password', () => pwnedpasswords(null) 19 | .then() 20 | .catch((err) => { 21 | assert.equal(err, 'Error: Input password must be a string.') 22 | })) 23 | 24 | it('returns correct count for a known password', (done) => { 25 | nockBack('known_password.json', nockDone => pwnedpasswords('password') 26 | .then((count) => { 27 | assert.equal(count, 3303003) 28 | done() 29 | nockDone() 30 | })) 31 | }) 32 | 33 | it('returns zero for an unknown password', (done) => { 34 | nockBack('unknown_password.json', nockDone => pwnedpasswords('+p5MZhunXrYWF?E&g&X8gxxMhwQsrNzqUS92tSZb=Q?4zgB$') 35 | .then((count) => { 36 | assert.equal(count, 0) 37 | done() 38 | nockDone() 39 | })) 40 | }) 41 | 42 | it('rejects when HTTP error occurs', (done) => { 43 | nockBack('failing_http.json', nockDone => pwnedpasswords('password') 44 | .then((count) => { 45 | }) 46 | .catch((err) => { 47 | assert.equal(err, 'Error: Failed to load pwnedpasswords API: 500') 48 | done() 49 | nockDone() 50 | })) 51 | }) 52 | }) 53 | 54 | describe('callback', () => { 55 | it('receives error with a `null` password', (done) => { 56 | pwnedpasswords(null, (err) => { 57 | assert.equal(err, 'Error: Input password must be a string.') 58 | done() 59 | }) 60 | }) 61 | 62 | it('receives correct count for a known password', (done) => { 63 | nockBack('known_password.json', (nockDone) => { 64 | pwnedpasswords('password', (err, count) => { 65 | assert.equal(err, null) 66 | assert.equal(count, 3303003) 67 | done() 68 | nockDone() 69 | }) 70 | }) 71 | }) 72 | 73 | it('receives zero for an unknown password', (done) => { 74 | nockBack('unknown_password.json', (nockDone) => { 75 | pwnedpasswords('+p5MZhunXrYWF?E&g&X8gxxMhwQsrNzqUS92tSZb=Q?4zgB$', (err, count) => { 76 | assert.equal(err, null) 77 | assert.equal(count, 0) 78 | done() 79 | nockDone() 80 | }) 81 | }) 82 | }) 83 | }) 84 | }) 85 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # pwnedpasswords 2 | 3 | [![Travis](https://travis-ci.org/moltar/pwnedpasswords.svg?branch=master)](https://travis-ci.org/moltar/pwnedpasswords) 4 | [![npm](https://img.shields.io/npm/dm/pwnedpasswords.svg)](https://www.npmjs.com/package/pwnedpasswords) 5 | [![Known Vulnerabilities](https://snyk.io/test/npm/pwnedpasswords/badge.svg)](https://snyk.io/test/npm/pwnedpasswords) 6 | 7 | A dependency-free [Node.js module](https://www.npmjs.com/package/pwnedpasswords) for interfacing with the [PwnedPasswords API](https://haveibeenpwned.com/API/v2#PwnedPasswords) by [Troy Hunt](https://www.troyhunt.com/) ([haveibeenpwned.com](https://haveibeenpwned.com/)). 8 | 9 | This module implements the new and improved version 2 of the API. This version of the API implements k-Anonymity and does **NOT** send even the hashed version of the passwords to third party. It only sends the first 5 characters of the SHA-1 hash. You can read more about it in the Troy Hunt's [blog announcement post](https://www.troyhunt.com/ive-just-launched-pwned-passwords-version-2/). 10 | 11 | The reason I chose not to use any dependencies (e.g. `request` or `got`) is first, because it is a pretty simple API and can be handled easily by the built-in `https` module. But mainly, it is for security reasons. Dependency chain can get deep and unpredictable. One rogue module down the chain can intercept requests and hand over passwords elsewhere. 12 | 13 | ## Installation 14 | 15 | Please review the code before use. 16 | 17 | Install and save exact module version, to avoid installing, another, potentially vulnerable version in the future. 18 | 19 | If you need to upgrade, again, review the code and upgrade to an exact version you have witnessed yourself. 20 | 21 | ```sh 22 | npm install --save-exact pwnedpasswords 23 | ``` 24 | 25 | ## Usage 26 | 27 | The module implements three interfaces. Callback, promises and CLI. 28 | 29 | Return value is an integer with a count of input password prevalence. 30 | 31 | Zero (`0`) is returned when the password is not found. 32 | 33 | ### Promises 34 | 35 | ```js 36 | const pwnedpasswords = require('pwnedpasswords') 37 | 38 | pwnedpasswords('password') 39 | .then(count => { 40 | console.log('Password was found %d times.', count) 41 | }) 42 | .catch(err => { 43 | console.error(err) 44 | }) 45 | 46 | ``` 47 | 48 | ### Callback 49 | 50 | ```js 51 | const pwnedpasswords = require('pwnedpasswords') 52 | 53 | pwnedpasswords('password', (err, count) => { 54 | if (err) { 55 | console.error(err) 56 | } 57 | 58 | console.log('Password was found %d times.', count) 59 | }) 60 | ``` 61 | 62 | ### CLI 63 | 64 | It is not recommended to use this command with real passwords, as you are exposing the password to the process list and shell history. But this can be used for testing and educational scenarios or in other shell scripts. 65 | 66 | ```sh 67 | $> ./node_modules/.bin/pwnedpasswords password 68 | 3730471 69 | ``` 70 | 71 | Or if installed globally, then run: 72 | 73 | ```sh 74 | $> pwnedpasswords password 75 | 3730471 76 | ``` 77 | 78 | Or via `npx`: 79 | 80 | ```sh 81 | $> npx -q pwnedpasswords password 82 | 3730471 83 | ``` 84 | 85 | ## Dependencies 86 | 87 | None 88 | 89 | ## License 90 | 91 | MIT -------------------------------------------------------------------------------- /tests/fixtures/known_password.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "scope": "https://api.pwnedpasswords.com:443", 4 | "method": "GET", 5 | "path": "/range/5baa6", 6 | "body": "", 7 | "status": 200, 8 | "response": "003D68EB55068C33ACE09247EE4C639306B:3\r\n012C192B2F16F82EA0EB9EF18D9D539B0DD:1\r\n01330C689E5D64F660D6947A93AD634EF8F:1\r\n0198748F3315F40B1A102BF18EEA0194CD9:1\r\n01F9033B3C00C65DBFD6D1DC4D22918F5E9:2\r\n0424DB98C7A0846D2C6C75E697092A0CC3E:5\r\n047F229A81EE2747253F9897DA38946E241:1\r\n04A37A676E312CC7C4D236C93FBD992AA3C:4\r\n04AE045B134BDC43043B216AEF66100EE00:2\r\n0502EA98ED7A1000D932B10F7707D37FFB4:5\r\n0539F86F519AACC7030B728CD47803E5B22:5\r\n054A0BD53E2BC83A87EFDC236E2D0498C08:3\r\n05AA835DC9423327DAEC1CBD38FA99B8834:1\r\n05E0182DEAE22D02F6ED35280BCAC370179:4\r\n078FF3B0C6DD716047976D7D7569667E61C:1\r\n07956D897C9204261693E1C8908FA12D30E:1\r\n07A7225B7774BF2796FD3F7A19C17198B5C:1\r\n07B20D697D2341BEB3EB9CBF0A55C82D5FB:2\r\n07EE3C8C863CAD50CA4795A7FF79E3EBBC9:5\r\n0871A33287C74B37B7A6FE7E57CA96A1490:1\r\n09C127E05A5F032E0F2E942C676DD4F5D71:2\r\n0B25AA3CF151CD4D0EA4BD8A1243A9B00AD:2\r\n0C54A78F6E71DCA1D15EF76864E565FB1F0:1\r\n0C58C8D59A7C8C15BCF29EC2F3BC90BC1F6:2\r\n0CBAEBA062F6639F3A062CC239EBA525DA3:1\r\n0F1939EC5AD48A58879C46E069768F5E7A7:1\r\n0F8C72A929F304D332F933A742337615FE5:3\r\n0F8F7CEC9FB03196A96A16F3B10B02CF296:7\r\n0FDFD37BB4EB84FAABB1980435E6E1F2885:3\r\n11686E89E2FC9359ECD6F722800B90F093B:5\r\n1170228E0FD2380A57EA6B7722E277FB8D4:2\r\n11C9990E10807FAD895158DECBA900FD210:3\r\n11F662D179759E8D4AEE33085E21C4577C8:2\r\n12D980DB77C653E89C27AA5F757E1866BF3:3\r\n1306B451DC880C7E4C69B648E8EDC488EB9:2\r\n134F847708F2CA9B9C269EB1F731E32F3F6:2\r\n13507FD5AAE15C9EBB2936F5807954A03F1:1\r\n1374461EB91969C27AC69C0FCAA19D491EA:3\r\n13C49876A8E2DF99A7A5F1ADA0AED3B10F6:1\r\n14064116E29F235C7069D746496596D2051:10\r\n14096FCCD91970F17B52E05099181424DD7:2\r\n14B1468FF41FFF8363E997946DD4C7DA90B:1\r\n14FE0CD3D1613C59FA14B97C970CE4C3E84:2\r\n157FF96F5B3C80E6B77FA604DAD5F8E3954:1\r\n1595A8D396AC6F7941A84D6F7100B1A7C5C:8\r\n15A57FD7C945EA9CDC71C31FE3CF796F5D3:2\r\n161F76D0F13992196417D5B84F2305B5CC1:1\r\n17E198E4D172250925BD7D89EFDC21C098D:2\r\n183F5A19D077A3139BDCCB3EA6DA831CC5E:3\r\n184C1344F8AF3EA61906910510F277E2389:2\r\n18C8096EE1FA5C8C6B9D3AB9A79D848E266:2\r\n19BA1F38CE418910C7CB92516DAC6A347B9:3\r\n19E0061EB9188471E381E9893736CF16EC4:2\r\n1B9A9E0B079726677FDF4383AA7FFD2C23E:1\r\n1C12D46C02461550809D10EF62DDEE99F75:2\r\n1CC93AEF7B58A1B631CB55BF3A3A3750285:3\r\n1D2DA4053E34E76F6576ED1DA63134B5E2A:2\r\n1D72CD07550416C216D8AD296BF5C0AE8E0:9\r\n1E2AAA439972480CEC7F16C795BBB429372:1\r\n1E3687A61BFCE35F69B7408158101C8E414:1\r\n1E4C9B93F3F0682250B6CF8331B7EE68FD8:3303003\r\n20597F5AC10A2F67701B4AD1D3A09F72250:3\r\n20AEBCE40E55EDA1CE07D175EC293150A7E:1\r\n20FFB975547F6A33C2882CFF8CE2BC49720:1\r\n22158C3C153B18E085F0AE99105605AA1F3:3\r\n2288B6F854BCD5B01DA45F2246939330D04:2\r\n22ED852E72B423F8D5537C9093C5254C285:3\r\n237B9E2165C9704F834C9ADAB8B4138967F:2\r\n2404761C0CDC3FB6A038B7604EAAEE0A991:2\r\n242C2F9322EBED6AA1A3187B9DAE7EF0FC5:1\r\n243295E08A856D84FD007A2E602BBD3EFC3:1\r\n2449F3C910F92602707D9EBD16B81AAAF82:1\r\n24BFBDC4AC8AD4E530F3F6F991C4887A34A:3\r\n25AB286C8F4253C862490165D07F56B4419:1\r\n2648FB0B2EDA4FDFF99BF51E912CD95C023:6927\r\n26A8FAC5C4B3B5A1D6E0BC262CE986309E0:2\r\n26F5EBE324C3E6EA1884AF1BE70DA343811:3\r\n270C60DC07A9247E2770AE4B78870F41275:13\r\n27C1D736B05CEC7D7EB2D4F604607F8B2CD:2\r\n28A5154F2F486EA05CD92C6DCCFBF9981C1:2\r\n28B371AEA0A6A847A0A7A5EAAB8814AD9E0:6\r\n2945E7A269FAF05C051EF9590B55D862FFB:5\r\n29767C5C3FB2603E0026976E6CF2656D27D:1\r\n2A5FC6CE848710F6BFD5A705AF2863435FC:6\r\n2AC4330373ABE9B9915882537579DA795A7:4\r\n2B00FB8C3D865D81DA9172F2D9C3BA11CBD:2\r\n2B76B30EB9C4077D4F227E69644C38F4E62:4\r\n2C38AE8FF7F40088614359234940931A18F:1\r\n2DF1A9246DAC8C59CCDD68CC3D45955483A:1\r\n306A88CC35F16092410A9AF8989EDC10863:2\r\n315033449A7622547963FC9F5A600402E3C:2\r\n31A7182C7C20C3418D58342B22E4160700F:1\r\n31AE86A9651780DB225AAC2D67866A353C9:1\r\n3290230B7819FB268674CB8D40B75C9A987:3\r\n32F203CB544F48B0FA79B280B7B7A562442:12\r\n332D54F56D99A7B6B3D3CFB525826824C50:4\r\n33D5F8FF2FB3B7F3EAAE8622D1052FA1092:3\r\n351B76DCD15DA01C646FFBE2FD1307E1A00:1\r\n3528494E021ABBC644E747F894C53B8BFD8:1\r\n3546C4E98B01A04F7E93478DF43E845B050:2\r\n357D0F5152916861E7207ED03AC8DE2AF78:1\r\n35907AF39307CFEF8F36B2A5C3CC19BFA3C:3\r\n35A6790F361C7CCDF0F22D37197B1294C9A:1\r\n36E93A16342E6D0FF79338ACE3DB7BB8ED0:1\r\n372E6E538CBB3C0DEB2B5A9E8CBD904A7B7:2\r\n37DA457150458E12A430D61A826D8F488B1:4\r\n38573F281243B33A5EB0D9F6AD0B1ABC85F:6\r\n38BCEB8A220BE19DA4C2A5D7596D7FC802B:1\r\n3A8ADE4CF1DAD5342AF2F9FC9247EC21943:17\r\n3AE53BDEA0C591BC0B16CA7BA8342378C21:2\r\n3B1B255A76AC7CC0156BF8681D867D7BDC8:1\r\n3D77CFFEDDBB08869144C86E0567A70062F:3\r\n3DD9A9CFC08F04C92E9E18626B8B408CAB1:7\r\n3EFE0F0F89B5B54AA7FB6A117D25772759F:2\r\n3F636B2B7A9DA3BE5BCF65248D66BC5FCEB:5\r\n3FB73FD9C24C0E9DBA7CDFB83DEA139C3AB:2\r\n40EF60B69F81CF5575FFDA8201EA116B9F2:1\r\n416507FD35B215DEBB640D5BB3312207E0A:1\r\n4198A5467A580D9F56A4FA93571E942D28D:3\r\n41C25879F63E24F0859BADAEEA113576A26:1\r\n41FA6A87D662364F8E3A96B9D174EE14AA3:6\r\n42BAADCD710F9EA7E62B60E01D05469AC64:13\r\n44B2FC5E31A4F4DD5226B3E3F7247891515:2\r\n454D246498C2B4AE38B9109688A9057050D:1\r\n461AD70E484C7B36D1C0895239A9453E95F:3\r\n46549316B8759E8566A31DB4A5DCEF99D25:4\r\n46DC7CDEAF0857383C43452520619AB5717:2\r\n47C6BEAA3C33564F963995EF4928317BDF9:1\r\n48B5B3F11B3FB7F0F81287234EE5B3E2A8F:2\r\n49463421E41DACB29B74C0086689688A5F6:2\r\n497E16201345501F10F7B1244E564F6FF64:7\r\n497FFCF7846D6E50F1C3B631F9E5F52E598:2\r\n4A58E401767FA161ACC1DBEB1A9082D50B4:1\r\n4AEE78286DF73B0F3D86D3AB344CD6DB382:7\r\n4B3E4B6F3249233C26ACB5C995EEC2D905F:4\r\n4B9B443FDA4DB21A367BCC0ED2D36D2A9E4:2\r\n4BA08D26E7D66DF501348DB3BBC9850A1AE:1\r\n4C092CCF57BCF7F0CE752608B57972ACA2F:1\r\n4C1C5AD486CB1A110736DEDC91A2C064FC5:3\r\n4C50F4EB9C64756374E97AB89604F12CF29:2\r\n4C65D9C96E7CBBAB9205636CACFD58CA002:1\r\n4C98B4FF7CFAA57597E9C57AA370D651A49:5\r\n4CD9C233C66D766F7DD522BA16AE45C3ADE:6\r\n4D07954F2231BEF338B718149597F1CC5CB:5\r\n4DB38ED1F19ED25FBE0F03D00155FFBD2A1:3\r\n4E2CAB3927DCB359FEA938BD89A130F77EA:2\r\n4E94E781109936277B5B06CB1A1B19571E9:2\r\n4ECDE364CBC0AE0B283341DBCAF889DC37B:2\r\n4F39AFC1819280A809C40C3D3372BE138D5:4\r\n4F58E0EFC884BB9410B5105682E140A8857:2\r\n4FA1B9F3C571C20CBEBA1FB5DB03357380E:3\r\n4FCB0A19A9F4BB445EF9147CBFB39D55A19:1\r\n4FDDFAEE3A0E987FD60B4458529F0E66B22:4\r\n50C4D3B98306313FCB2E19B159DFE5089F3:3\r\n51B0F18F1FB141D15507F06908117FF9E5F:2\r\n53FF0293B1EFD828D27EFDF55F16F7937DE:2\r\n5465C464033C00B887595DE51BFE80CA504:1\r\n546FB8CEC465FBBB4312A3D2F0180694FF0:1\r\n54C10A810A52F61E095A71F78F8B6995265:2\r\n54ECB8CB0D2E05F3EFAE12409F9934B134D:2\r\n55F4F83B9F9AEFCF165130ABA3D03AC5C8C:2\r\n5649837FB6B77A6636A4FB65D443070F3EA:5\r\n57A36C2404BD5FAC9350862D7375191B9C5:2\r\n57D29195CDFD7344EFD11CD4A70CF540F25:3\r\n58390CEA8FB725FAB7A01B40C52C59029E8:2\r\n5887B3251745325257533ABB9D2195E311E:1\r\n58AF3A0231FE86B65D5581E0F81AAED125A:1\r\n5A13F3216DCE2D2B01A98444E3807B03E7C:1\r\n5A1684397CF06D1D50435FE71DA92CC9CE5:1\r\n5A1D0ACB70D3667ABBCCBA6A12A276130DC:1\r\n5A920A5D5263BDF5AC8E17033D156889ABF:2\r\n5ABE4E10752E33C9518388610E895274D76:2\r\n5AFC79A111BDDAB13BFF5B41582731DAD49:1\r\n5CF118797E15B3A2831436EEC2600D7DD1F:1\r\n5E2BCB2FEF09257B0306B4744418999611B:15\r\n5ECA9DCF9DD43458390131ADC7F7B3D30BE:1\r\n5ED97BB8BC5D44C6C95E4CA5F4338A02DE0:2\r\n5EFF7FF764DC1DBD43001E889F57218149D:1\r\n5F0CD063060830BFC6270EA1A9751D656F4:2\r\n5F5392AA709353B936C6BF31B247E58C1FA:2\r\n5F6E1F4AEE3D5E2F296E873642C8CFCD77B:1\r\n5FA4A27FB6FF58C9A32E6525591D1A4053B:1\r\n608C96CDA8436FB63F1DAA204E8E158A6A1:2\r\n6364DEE4BB0DD5729C334FE9DCB63637D07:1\r\n63B0ED16A3959D8C2F232DB10CED4FA7B8F:1\r\n642CD43FFC28AB87BBF93AA1CAF05B05BD1:2\r\n65804A014B6430AA2808C2A8D876A1066C9:8\r\n65ADE0384BF265A3C64B90747F1599A394B:3\r\n65E47A6E9A64EAC9C3950DA021930BE2B59:2\r\n65ECCF9A9102E9B9DE7C533CAFC2456331F:2\r\n660C46EFAF6B66B1C6CA420842416DA606D:1\r\n6720B9F1290A1B9D5FE8EF4D090A9857829:3\r\n672E22360F0A39F1C20657F6C578751A651:2\r\n67D16B114B2DF4CAD0394B3824478E2A26A:2\r\n681D0CBD255504E3B07ABFC060C480F9886:2\r\n69E987073909873541D7F546E7E5544200E:2\r\n69FFB53C7AAE39CB18370BE1B9A43978211:10\r\n6A16F2C1B70FC38AC528B259B1FAB51D8CC:4\r\n6A65A90BF869866D8C139780EB10034D322:1\r\n6AB59FDB74DF600FEC50ACA94E2FB70008D:1\r\n6B1F1336296EBADAA217C76778DEB7A1D5D:3\r\n6B2542EC15F7B80889BE89F249C4F1D511B:2\r\n6B9A3887894D369C8960609A64BC6143EF8:4\r\n6C89B56D25942AE0AE2AAAEA7496C7C5DFF:8\r\n6C8D93ECA7476506BD92458DF90C39F6756:2\r\n6CC0F555341DB4BE31786A9A4F769BD92E4:5\r\n6D677D26A96B8432A485B38CF5A43A78091:1\r\n6F03947E951A154A23E774A9A014B39C98A:2\r\n6FF835580776A26A3D31E7E397E6674400E:1\r\n703150CF3F56670C2D6376421DF207CC86D:1\r\n709ED0BDA1678377E6CE8C2816CAC559E52:1\r\n70C155A82C6EE2BFCA18E569B783B6276FF:2\r\n70F392C6D8816D8A97970A4E07AB8796D87:5\r\n710DCA1E8656C8BF2403C940E8DC73C1FA7:4\r\n71C9C81607AFDF262B33AE2E4BCE7E99426:9\r\n731A29D65AA9F26AF6378FD5C0E29A01039:1\r\n7337C3BD5008CBCC81C21FA227B2CEC513B:5\r\n7393584DA0D509F4D3A241A40C3D4248110:2\r\n74570315CF1230BAC931552D070AAA7DEFE:2\r\n7550A5F6BE01B7A448B0BF5171EE5010549:13\r\n755143A66169EA8D35662468991B728A535:1\r\n7698261205C18E685A8F92AC30C64105EFB:8\r\n771956F94167D5D1E08DC6B96D43E087551:6\r\n78CA709A939372722D02667EDDA6CFBA0F1:3\r\n7A3EB27B059AB9C0DBE28C04CE17C080120:1\r\n7B2223BF1662C54DCA023610ED8A4723009:2\r\n7C6DB6EBCDE90DE0F36F6CC226B098BC77D:2\r\n7C83C4B584C646E59925A3CC468003AA54C:7\r\n7CAEFA1DA64A7816CD95CF5C16EB086E9CD:1\r\n7CCD5B3EB6EB1B9D3EB4AF827CA572D17A6:1\r\n7D4F0DEA9585E0D1C42ABD2793A9355D875:1\r\n7D60188BAD089DC1D7BB88012375A72F199:5\r\n8075CDE2B5981A31E66C8A32BDACC272C8D:1\r\n80C2504855845C04042F8C2899613DDA434:1\r\n817EE5C907FC4CB6507BAEFE8ED0CDCE80E:2\r\n81B000246326E7A45C72244AB023AD3B238:3\r\n821A21D967813C4DDCE27E48EAD66827945:4\r\n82E11D09624F96BD7CEFD8474AC82BFF733:1\r\n82EF3E8DFA456A4C024AF143DB2F6CF620F:11\r\n8333543F4FF45F5F8F36884A6B93CBED1BD:2\r\n834BFF53842D2CD0675F42D9AFC0F746B07:2\r\n835551444C7AFD3414A00AD91C5FC40AC77:2\r\n83A5679C95CA20A34EC232230A89E6105F7:10\r\n83DB397CBA6D2413893D6B651343C7881E6:2\r\n83E1CED811F248A07D1AA95A55C598E7B26:1\r\n846F3476EDB7F368CB218D79BCE71826CD2:3\r\n853AE302D08ADDD2DDAB8BD0B2FFE67406E:2\r\n862544EBFFA510349070B107DA3EE37C95C:1\r\n87730F8E7D55C99B5FFAD3D6ADD6AEFC242:2\r\n87A5BA4DB903042A2EF6EAB5A290D9E86F1:1\r\n893BA737292FC109ED26234EE83CE31C89A:8\r\n8BAF5C45FB11DF5D3C03F42215317A766C6:6\r\n8C0266EED59C2791AD7CB27D3AADFAFA1F7:2\r\n8C08B7E88C86EFD6A36B9918CE9C201EB6C:1\r\n8C5CB86B66C554B7B46B840898832F8289E:8\r\n8D2B568A99ACA5E680AA68DCE47A09A86E1:2\r\n8D30DCA7937A5ECF3B11C17DE41892689B8:1\r\n8E0D5C9D144BACC76E52C44F5B61E8DF629:182\r\n8E409CDA87E90A91DFC5BEA3A3751756B04:1\r\n8EF6868F4EB0607A7CB113C2ACEC08F0558:2\r\n8F369299AEE0C69A685B903C6E5A212065D:3\r\n8F54CE81FA3E7715A301979CF01CD559CDD:5\r\n8F8B8EA87C75228F6A574251207494C359E:2\r\n8FE581811FA691CADE0AC8E6EA905D24DF0:1\r\n9102D1F14C10DB9CA75B38ED9A0BB3328ED:1\r\n911DC08803FEAF1C1C664353510DCD8FB3E:2\r\n92913B5A1ED91A113239E36AC3DC5319624:1\r\n92C0C2B1323CC2095774AF6AF91569593CD:1\r\n93886462AA99D5CA6A883DECB2C1369E68B:2\r\n93C394542414BB56F99CD97AB401FE42ACB:1\r\n93ED27A9ED83D48FEF022F084B367F8C16A:1\r\n941F4DBE019927FFEF89210C3509525DFF0:10\r\n946DAC1162A7F7EC16ED9603BF0CBDBCA41:1\r\n948D599B9BB64E76809EDE9FDF3ED9D7014:6\r\n94EE45F733696C8B7E1F80F2AE3DCB28BA6:3\r\n959AF1CDA257303073CD6AA805D80173027:2\r\n9718F656D19667FF839F5F5B82224A153BA:1\r\n9787F93034022C2A0E8FD9680BF92F272A6:2\r\n9829411C5B1B6AECAB7020A54D54DAA3E92:6\r\n98321C82B45C3A4350ECCE813B036664A37:1\r\n98A2E41029059231B2FE0E2FBF3546ADA1B:3\r\n98AB3980D86AB254479BAF9DE9C090AB128:2\r\n98C748A7D7F0A67B51913854E68E2FAEA32:1\r\n98DC720A8AAFAFB529348F02FFAE491F1F2:1\r\n991E745F4AB025D5BCC3B833CC45760CC08:1\r\n99376328AD893CE27992C5C304A54F7733F:2\r\n9973D2B8212808949BDC1C27B1C30C77DBC:1\r\n9A64187BCC48B58951D257C52B14FB4BFAA:1\r\n9B169DAF7CE65D21740C98E86BDBA060394:3\r\n9B2910F2CFDDD75FFD3F8A66D2A7C94EA4C:2\r\n9B3D0A0D720CD19E1666D436209FE225A84:2\r\n9B4810BF7A2AA36C1A69C7BB389C0AB468A:3\r\n9BDF0C480B0D0A11709B21CBE3817FF543D:1\r\n9C259745113253B31DD49E1134660E97821:2\r\n9D782CA5C8B5FAEDE9CB53F6FF59C525A46:4\r\n9D8FBE84AD481A6A714C8F9F902B6D22602:2\r\n9D9C70172FC7A76001F60156A015A2FC61A:1\r\n9E5A1D9A9CC5345A3A211024AA79D5D6EB3:1\r\n9EBA10FEFD4F0897B93321952A375765133:1\r\n9EE49ECA6CBCA78605AB8173563F93126AD:3\r\n9F04970A69486003E6C22ECA0176014DF41:2\r\n9F15CB4E8267D785B118793E4B3CCE1F617:11\r\n9F42FC1B5932A6E6523FE05CCA9B9276123:1\r\n9F7D4B60E60FD8AFCBCCD74041AE3805A92:3\r\n9F9EE735F041681083BFBCBD1157E1F5DDB:2\r\nA01086E4757714337CCAA928A036FE12026:1\r\nA02902B8D0543C48998493211AEC22FF650:1\r\nA08C645E088E588F9E5B9ABDFCBCD9E9230:9\r\nA09D53E76D02C217CA8FC464E813AE1E5CC:1\r\nA18BF7767F0C617D31FB278C211BD65B454:4\r\nA1AF63850F90EA187A99DDDECAFA7E3365C:3\r\nA209E7253ED38864D64D9780E03FD868127:11\r\nA23F6342DD8EFD8574594C0CF76CB9E8464:3\r\nA2BE597396092AC2D590BCAB3AD9A9DD564:2\r\nA3AB5611237C03DAA93FA05FF59788C6420:2\r\nA469A1756F617687038731E29E65EEE9A0D:11\r\nA49648ABFE19DE8EFA1228DF7B615159625:1\r\nA516C42C8CD4C7E7E328ABB90D002A9890E:25\r\nA5761127EA098A2114C94B2FDB9236FDFDE:1\r\nA590CAE00F5F2CCD9AD5BEC346216167734:4\r\nA7BE1046FB3DF8A326C6D98C1AA8EC625CF:1\r\nA91E69122C7DDDC98E6179943C4B6F27458:2\r\nA947803DC15AF833182B3EA4F7464BD1972:1\r\nAA8A90CA82095CAE59EB9B82CD3C05F9A57:3\r\nAB01CF40155A0F22CC516C48F3EC4C3EE59:4\r\nAB91F322902BFFCEC5C4FC22F2D69761736:8\r\nABED3B3777EFE04D8C02A044A7FC1FF0EFC:1\r\nAC18F44C596534157414E53436ABC7A911A:1\r\nAC419B146AFAACCA48194237AA29B959DC6:8\r\nAC660D02A9E9C9440B93DBEE477FA2CD523:3\r\nAD750A533273094F74FE3C7C294E2992EED:5\r\nAD87A86518B1462CA197B21409D60560E24:2\r\nAE4E4D5D830167A9BFA45E407A7F513FAAD:1\r\nAECFAC6488926837B3B0290FCA96F0A767B:1\r\nB078561F9279998382B4CE8C9368C3C1A17:3\r\nB0ED6D2DBBE7C5EA643AE067C9A4F5DDA90:1\r\nB2242E00508F38A9AA0A002196E4D2AFB82:4\r\nB28C37A325544401BFBFAFB9E6DD269C7C0:3\r\nB485615DBA7E3E8B56C8F637D4F88B8B309:1\r\nB5145DC5709BC0A8593821805CF79C1A760:2\r\nB51F1511A14B6210C6D589AACE63BA4288C:2\r\nB560FC1B7B6734301F89A6AA3ABF98D144F:7\r\nB5C5880DF9F0C090C21E270D40764E414D1:2\r\nB5CC2B1A08DA02D4B7489827A7F3FF9C223:2\r\nB675D0F02E3B0D944F5E76363CB7C2C46C1:3\r\nB7127FB732DFD38FBB503439374841819BE:2\r\nB87AAFC7DE1821E2335A869D815C455A0A3:3\r\nB8893A5B50CE516E52C501BB5CC71EDFF66:1\r\nB8E4141BCE85C6B5102B075DBDCAE054A78:4\r\nB907A25D1DE622E295A7AA6E645D5813D3A:3\r\nBA6F8B85EDC2133A5073468961A1756FF9A:4\r\nBBB0FDEF3A8EA131FFCC34CEDD360BAB421:4\r\nBC98BA06F816F8C0915440B51D1FCF6BD23:2\r\nBCFAE8A87705EFD6508E3BA356F427128AA:2\r\nBE187C7A53A7B0E95AEB6B68126EE7E3B85:2\r\nBF73319A343C0D4B635C447C9238A5F55EC:1\r\nBFA64A367C50A20CD78BFDFDC2BC52D6F6D:2\r\nC10E35E4531A6C6A1F99E0D6CAC8464344B:1\r\nC17DF61DB70DFD0236DF384CB7DE753700E:1\r\nC2D4DCFEA2C41CB4C5666E72894788822F8:3\r\nC3170676DAB58B394BE8266F51D2B3EC87E:1\r\nC3C305B4B22B5983B779277F177A414DBCA:1\r\nC3E067EE7579FE8F50088945F20FAA8CAA9:7\r\nC44D9395A037CB159D41964D69AD9E4EE3D:5\r\nC7846E3F271F054FB790C30F4504DE65E9C:4\r\nC84782B604BE48977583E108AC6014C5909:11\r\nC933C97C2A353C712DDBAE9506788BD0367:2\r\nC991D5F50650C377CE6D7212E809C8C6086:2\r\nCB53EC83C6D1C81F0DB1013431279D06852:2\r\nCCA584375A77554391530848AC137A42FFC:2\r\nCD2021F110673F8AA95F1C447CAB1DFEAE4:1\r\nCD2B03E36B07B4471FE33A5892E17E0D7DF:6\r\nCD8BE68452C665F7400DE9DAD5485D2F315:1\r\nCDE902213D3FDD1237BF0BE02F05F44A820:2\r\nCF2F87E596758D031C0006D1827C9908E5C:7\r\nCFF6AFD2AB482897C76BCD2D19CACEC3B55:2\r\nD021616E53238BF0DE66516613F1DE72C2F:2\r\nD0E88310DABF9931143593BDB954BFB84FF:5\r\nD107ECC5B8382B3E10F2029C22C01AB1103:4\r\nD1880BD3EAE74BC71EA1D9C550C0EE16DC0:7\r\nD197642F6CD619F04D83487A7EE33D0D81D:1\r\nD39B8E1C477C21BDFF42A0305338E10EE3C:7\r\nD4DF0C13FF004C3CFF18F26296A8162CE6D:4\r\nD5EC2E34EA08AB1F652D4BC9097CD6950D9:2\r\nD767E8EB50640AD167EB99A8B9ECE03311B:3\r\nD78095FF9E98911210386E5B169EAF42D00:2\r\nD780C58333BD88105B3550380BAD608AD00:1\r\nD78252C1708F204B5106FE0C4FE8AEF752F:1\r\nD8014AF60F20C465A6F3BAD7667C94049BC:3\r\nD83C819EE582E3C808BE5FB0ACC03384904:2\r\nD89AD7CC9D5A8E1B0517349AE1B2FD46976:2\r\nD9018B78508091B8FCA7F9BE7E0DAA76C24:3\r\nD9B25E96E6DFD439906BCD824B81D8B9762:1\r\nDA1B4D19AF7EC1E0A20985033EE36065887:2\r\nDA3C904059DBC5DFB0BB1D625B6E842F634:2\r\nDA50E8883AD0D97E2896E81D39067CE616F:1\r\nDA5B71BDF4DCC8694296B26965B824958DD:2\r\nDAA836CF8718E1B7FF44FEB58F75A76AC20:1\r\nDB08FE6509D70B4C0E9553FF66A3DDCA1FE:2\r\nDC9FA3E6AC49AA3FA958E8951BB06240B00:2\r\nDDBAE795D82E39DC56B9F833F4968E5D6AE:4\r\nDE04E96273F101F138AF73E1172F1ED0DA8:1\r\nDE7C435608A4B970752239AC436F4FAF7BB:2\r\nDF2E6BE8296B53F4BF849EF3AD1A80D30DE:1\r\nDF9E6E8A14AE5879867B337758E0A65BC65:1\r\nE0C69CD259D652F5BB3A41BADD1BA540D9C:1\r\nE0F41BF02B958F7DE9C27062905F45AA923:2\r\nE104AFC179613FE49DF005FEC12C419A349:2\r\nE190AC01EA900B96F8BF916D1F53C760C2C:3\r\nE1BD26D42BE2AD9D3BE5A473FB191208C66:1\r\nE235BEDC523A77216ED0EDA7858493533EC:2\r\nE2E4D50DCE1845D79BC5994B14F98CB022E:4\r\nE453123A30E96FB1DF0983C0551D5319C9F:2\r\nE537A2BC4DD5A7080836CF1DE7BC5ECD7C6:1\r\nE5DBEE639FA6E41634F248CFB8EAF548474:3\r\nE5ED4763425FBF2E9C780839A8D5B418970:2\r\nE72C94804E318BD07604F7FAE50B4FB1270:3\r\nE8138597E4299C64074968456AD80FEF505:2\r\nE887391253016D13B30922CEB502457E780:1\r\nE9CD985E2BF8EFC7F005508FF6BF08EE6BD:1\r\nEA2008F79BE2B0E0C02A1642725433BBB2F:15\r\nEA776CD65185506CBD7FDB53544C649D86E:2\r\nEAEB964E915FF8B1E611664084532AF3E6F:1\r\nEB92A3344B40E7EC32D8200F410D0716889:3\r\nED9038684A8B2E5BE0850F3304A51D5F5F6:2\r\nED94C46C66D9BDA358030B9B0134DCE28EC:3\r\nEDF4ED33A63B21AD9DBC7130C3702B07537:4\r\nEE0AC0C0AF4A4A712147BCAD882B18D951C:1\r\nEE47E98067FAC07ECBE31ED7090F93C5E86:2\r\nEE5260CE766F47CFC88C958EC3CCD22CBD7:3\r\nEE79A7E71B34F415EADDCF8A6B5BA1DE0CD:4\r\nEE96E27CE6C16BD725DF9D4FD37BC4D2383:1\r\nEEBFAE69E8945473348BA4A8B98B312DB0D:1\r\nEF0E14CCB17E525D76050283148A57828F8:40\r\nEF14C50B9C48EA35CCA0FD7E710C13A83E2:5\r\nEF336D650AE64FCCA4F1CEC8F25AF5786A3:1\r\nEF6A5F7ADA4D07A6696A6AB107A72376CCF:2\r\nEFBCCEE88359A2A2D6743E467532B7E6EA9:5\r\nEFF9F5650357616CDB9D960A70765BF7C95:1\r\nF0A6FC05C68CC3BB7EE1CCA13F2288A35A6:2\r\nF14D95ADD5A136DC694AAB229805F4058C2:2\r\nF17A3DDBB8BF0404FEC1CB216094F6F84DD:7\r\nF294A73A046742292B48C2462CE6A743432:2\r\nF29FDD359957C00F801CC8A1774F703D9EF:1\r\nF32D422E0FC159C6AB218D04ED0FE2AEA8F:5\r\nF33C02F3AA937009C7671989F874A5C69D6:1\r\nF39EF3E98F44B314B60503B2EF0093148EF:2\r\nF4138F5BEDB65BC363EBA6944E5CA752199:2\r\nF60D6384E1488C26DFE31099AD91648D2D8:2\r\nF6E266EAABE91404454B287DBC2B79A7FC0:1\r\nF710E71262A0C34A481186361BE1E454D76:1\r\nF73D11BC6F5AB0B1D2A722E0BE245E74977:1\r\nF78C69EBE2E4522BA28EA12235B3DC4B397:4\r\nF7A5A85FB40A11E700157A9A4C59FA28399:1\r\nF80DCE3BC56F1E7CD5C191B60146A06A735:5\r\nF94031DF36AF0BA745ACA95EA5DDBB34794:4\r\nFA7CD065154FE84F28BED8BBE1F22B5277C:1\r\nFB5F5A995FAAA87A49E8DF65F3E008F3150:1\r\nFBD0A69A6BF3A8EA34FB626F1737492060D:1\r\nFD476CEA93CE558EB387B647444088B7136:2\r\nFD8044E06D204A3BCB1C615E3C7FA73A918:4\r\nFD98E151E6D5BCC6994B7B4A692BB03BB91:2\r\nFE210EA7F291B608505254390849B8609E2:2\r\nFF2CB655CE08DB53D721D10DC1EBE159D1E:2\r\nFF535E8286A9D9394E33ED388B20F73A794:4\r\nFFCDFF228BE98F296C0CA4CE1FC8815A30E:5", 9 | "rawHeaders": [ 10 | "Date", 11 | "Fri, 23 Feb 2018 04:54:15 GMT", 12 | "Content-Type", 13 | "text/plain; charset=utf-8", 14 | "Transfer-Encoding", 15 | "chunked", 16 | "Connection", 17 | "close", 18 | "Cache-Control", 19 | "public, max-age=2678400", 20 | "Vary", 21 | "Accept-Encoding", 22 | "Arr-Disable-Session-Affinity", 23 | "True", 24 | "X-Powered-By", 25 | "ASP.NET", 26 | "CF-Cache-Status", 27 | "HIT", 28 | "Expires", 29 | "Mon, 26 Mar 2018 04:54:15 GMT", 30 | "Strict-Transport-Security", 31 | "max-age=31536000; includeSubDomains; preload", 32 | "X-Content-Type-Options", 33 | "nosniff", 34 | "Expect-CT", 35 | "max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"", 36 | "Server", 37 | "cloudflare" 38 | ] 39 | } 40 | ] -------------------------------------------------------------------------------- /tests/fixtures/unknown_password.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "scope": "https://api.pwnedpasswords.com:443", 4 | "method": "GET", 5 | "path": "/range/f05f5", 6 | "body": "", 7 | "status": 200, 8 | "response": "00986A171023FB4AA725D29E2EB02C3FC0A:1\r\n014224100D0A549DBF36984D738083CE6DF:2\r\n015EB8A75D93484AF196CC31C1188228E75:2\r\n022FA4EC86E5C365C159A1818109731D0C0:5\r\n036CA6D5B045A8D0C6DDDD9FF23CF038B9F:1\r\n037C61664DBF5EEDF3A2C056DDF99B3E9C7:4\r\n03AA9AEB33D818BF33DA77E0DFA673E32A1:1\r\n03EDE8BAD5C608ED5DA9BDB5D05EE2C83C8:2\r\n04CCE4BBB60C526E4A332BB7937AA210D9D:2\r\n0635AFBE03359A9170BB5EE22D83EC8735A:2\r\n0646E4279D40953956F9EEC5FAC371EB7EA:2\r\n070EC2E835AACD0CB8B7D3FD1612CFC8F88:1\r\n0713733D9F8FB77E113E230F859E17ADE0E:2\r\n0760303E162A147766CA7804ECBAB147B3C:4\r\n076BB7346FB10C113AE43F4691E7F690733:10\r\n07C4315593FA4719137AD520ED5494CF87F:1\r\n0808B5E4A9DEF1789ED25F00DA30C722DA8:2\r\n0843B8B82F259573D138B4B3026CA6AC5BE:4\r\n08DDC6B38489A9381CD650F52457AF3AC93:1\r\n08E03420413AD895B7AED191CB48209068F:4\r\n09EB843FAE2C005765D515314B2FC21AA04:15\r\n0C166E77BBA1CC31F5A0218519EDAA12C88:5\r\n0D97DA9C9F3C31E183E58445B9213A59739:3\r\n0E21ADEEBEBE061BCAE847EF53119951875:2\r\n0E2A2464D70F755D04F74988DE6BA1AF504:5\r\n0E99FF1B9FA531195866F209E7DDAED4569:7\r\n0F6FED5D7341036D120F0C06C9B33FD12AB:1\r\n0FAE6B1A2366B6B11D382F4C3374CD4AB53:12\r\n1250028CB1051FC6A225B4758B69012E8E9:1\r\n128046BC2C62F1D1EF8431FC2C3252CF463:3\r\n13260A2EE5AF7E2C1F6F125CA078058D7BD:4\r\n13A27605703000455AB1F8168ED2F4FE2BC:1\r\n13D967B4ABCAB0C6D222365785752AECD32:3\r\n153637B312537048926AD8D48B85D79A500:2\r\n16232F6743E2C2FA8680C53742D9399E32D:10\r\n164A19A49BB960219BDFA729BBB2099E5F1:2\r\n16767D884366539D2B2A7DE9529BC8E0DDA:5\r\n16EF6C7D15B3F874E791D9087E3525A779E:1\r\n173160FD074583D10FB5FD953B862B3AAFE:3\r\n176597524BC4A9DE8905BD61C6BAF6DDD7B:2\r\n1790709F6E69D4D4F566270142AABB8B161:4\r\n18E34929F49CA399E75C32D66641F48185F:2\r\n1A70B4DDBB15CA5C1B84D302FAF31E6C979:3\r\n1AA91937DE5DAF61E5F646873EDD8C11D7C:2\r\n1AC20E3B834BF3D0EBDF7086A498D97F43D:20\r\n1B3943EFE44D35C01FCA44E5CFEC7AC45E8:4\r\n1B3C005B39035F2C589E3786AFCD676AA9F:1\r\n1CDA711EF77BD3D85C77EF56DF5AA2EF5CA:1\r\n1D9B3020A6194181CE9D32F80A82740957F:1\r\n1DB2F0452BD9C5E78B535DFEE56ACF6E116:1\r\n1E5DCDC5FD7339933025439860EB35D1BB4:3\r\n1E92FF62948B00124B6F10304CF16FF90B4:15\r\n1ECEE1B2A65A61232487947E9F1BE7F25A8:3\r\n1FE32A50D81D0EBD94472FEEB76ADF7B6D5:5\r\n2063180F58F42C6247B6065B2765DCEF62A:16\r\n2096ED57FCA39791F946A161E0FCDED6FC0:7\r\n213A927B5DB220D03843A4444F4B756736B:1\r\n2173855A94DC125A43AAC3DD668FC804CA7:2\r\n21A6C9E8ADB67F6B27EBF26F8F7DB9D2DAE:4\r\n22644DF5BD57C34B328EFCD9E0E0154D2C9:1\r\n22CCCB3A9C20374F40BA52C458B7C751EAF:2\r\n2313FF5FBE7F0541D94A99E7159610F6188:31\r\n232105E44C1825A2E419411C4692900487D:1\r\n232962239DE21DCB0EC007F78D36EBD2AFF:1\r\n238380D7278A4255B2AF96EB60B16E19C63:7\r\n244F641B33CC61EA5D369C8BDF05E80D11F:3\r\n24E893612C2812EF5AF6ED703FB317A6146:1\r\n25444060B0255E96C79BFA901AEF4929BCF:1\r\n2643FD742C1CE1282F9A796F236D65F2053:2\r\n2818AD9527F12CD0F5D5B447FC4BC5DA03F:1\r\n29E35C8538B6540BE1183F05205CBC1DC1E:2\r\n2A0518912C95C83B13E128D3CC9C9C980CA:17\r\n2AABE9DE6E92ED91667651F0EB4C2495CC7:51\r\n2AE5F033382744E2655161E3081498B9BE8:1\r\n2B97252CF57193907947A331C12620FBE2D:2\r\n2C560B9F0E3322EDADD76A3E8524549C2E5:1\r\n2CFB5D4B68B8B8EB66B860B96D11E41386C:4\r\n2D2446A06D87562808CEBCD55EFAA3485BA:2\r\n2D43EE4A5C196A28F15A20BDB104C203F43:1\r\n2D5D3ED53F9959E8EB6F248D23C1168AC80:5\r\n2DA5909B619F7F75EB18A8F7E192B3A0BBB:2\r\n2E0FB8DB40009A0D386BEE70001507B2949:1\r\n2E1E0C8483FB90EFFF5379114527302FD65:4\r\n2EC4239CC5DD7F1E55BD8CD17CB5361B764:1\r\n2F2B2DE086B3391ECFD8C217523D62FD33F:2\r\n2F79990906D1F7A90F3C338A6E630FD9323:2\r\n2FB60412F89C82E14B420787BE7C8771209:36\r\n30C28190CC86EDA3A4BE902AF7A977196D0:6\r\n30DD2AEE6A84D0D8AF66C35B2A6BCA076E0:3\r\n317F800C6561570CF32E7BBE546B5216BF5:4\r\n31A471914DC1E248C42A5793B700E976518:1\r\n31BEACD9EBA75384C11321A05CA1A9EA593:1\r\n32216F704AAF268E9C8EA2AB985C0193147:3\r\n325C69EDBB19B8DCCDD4D93D1917C042654:1\r\n3363571FFC8DF4CBF04875F13612B7DC589:2\r\n33761BB8115DE40F12B7C5651348DAFFFF7:25\r\n337A351B65BA05D945B4AEBE3FA9FCE1384:3\r\n33AF16A95404BD8F1D16A98893052A42213:5\r\n33E6D02E1AF097E550FBEB4969B987A0FD7:1\r\n34093C41FD57F5AE74901E81C1587AF46D8:1\r\n348234F5D001434DFA6A9EC0C30984CCC0A:15\r\n34CBA5801AC07B43CD2748C0DB45B0EACF3:3\r\n36351B108BC3EC05D31FB960266957B7685:2\r\n3790AFB43D69B1C25A388193201360D9D4D:5\r\n37F1F738905395870DAC8BFF4C10DF155DE:4\r\n38DCBC283E42E0C743FB208A12E776BB494:3\r\n39499FA4DBB62AC6CAB3B99C145240BBCDE:1\r\n39A019AC8209D2613DE0106D8D9B8E28792:2\r\n3BA1E0E0506E3F250B3ABB1C8CEA88540D2:2\r\n3BED581F4961B4AAC3EDAEABDE0EDE9CB68:3\r\n3C4659415825315786C24736686940D8B6E:4\r\n3D4D5A0983DC4F82DA04277206E9144B012:5\r\n3D6D1F954EEBB52130BAE40BEED8C0B1613:2\r\n3D7687B50D9D2C1E48F87BE03306620C2D1:2\r\n3DA261201553D21CC4673164F1D84B24155:1\r\n3DCF57B818221B68AFFAE1230A58E8B0A6F:1\r\n3F75A57241412FA80FCCA031D15C83F7F58:2\r\n4006F612DBD48FDEE18D4AEA14331A4242A:1\r\n412B8CD46CF34261FE1289DA7DCABB3A740:3\r\n41F162B9B63ADBB5C140BDF3AE0DF29AB75:4\r\n420E3DC95E14999DE5B2DACBC71A32BBCBB:3\r\n42EC1E7E64DADE46FCD9335501E0F3F5B4D:2\r\n42EEE709C62ED85F0291B5ED502993C3C1D:1\r\n430FEA2742C55A00EEAFF9417270A1F52A6:2\r\n4391099F534C7343DF9BE9CC7731398EE2E:2\r\n43BBC176966D9CB3A0753472336D35A5B6E:1\r\n43D72393D35DE91E904D92B6486BAF5C027:4\r\n443A72833DD416463E472672D54A5B1FABD:1\r\n447656F587234A0DF533451A02EFCDA7369:2\r\n4584EB0CA857ED7510486A75566FB5FBA38:4\r\n460604C1AB8B86833D650D5BBFD84CE3881:1\r\n461E71EE4398FF55CD4AEE08DAA92587F9D:2\r\n466259F5287C1D60E185DBAE416AA7657A0:4\r\n466C2983BE6D03D237ECF97C983AF64F388:2\r\n47B1BF329DEE155782DE49B96FCEBD71190:3\r\n47F88BC715D202F414F9A0DDBD22CB98628:2\r\n4899A198089772D580F9AED882FB49DA3E3:4\r\n49C667177ABCA11FA8BD46814687969A682:4\r\n49D9E99C71B2B42AE762B1F422ADF0B9326:2\r\n4A3CAD779F85F1E50ABE7D3570D3D329B6F:1\r\n4A6BCE532710465A237D7C78C9F0655FBFF:5\r\n4A7FB47D46F6B9E5BBE5D6A44C1C6ED11E6:3\r\n4B063BFA485F8B2DBB78CAABCA51FEF6FD0:4\r\n4B1B246E29D3CE4B0360485F3E28B6D4830:2\r\n4B48D7E6E986E94276CFCF65E5600D0C892:1\r\n4BCB9B3C2AD3B49E6717482E26651B2CDCC:30\r\n4CD90B6DA11B2B20DFF602170C092C94546:1\r\n4D4AE19A757BB6A3DC8CD45C94C9924E280:6\r\n4DDF34AEE837110A4A493424D4CB9AAFDA2:2\r\n4E0C1895267AAC9157BEDD79F45204541D0:5\r\n4E399C94CEE51ADF45E077E2088DA6CCD2F:2\r\n4E5AED32C0D0912F8B1DA6E71773965EA3B:2\r\n4E8CFF71ED67361E29D7AB30967C7616755:1\r\n4EF116C8B1241EB2F18460C531E7923EEC3:2\r\n50076E85CCA554B86AD422C683660D7A275:3\r\n507264FD198B09472866595E7D3747ED686:2\r\n51D0AFCEBF9FD2BC616B7EAD4FBF5AA6C9D:3\r\n5262C2316BAB94AD6F5C67412D8292E53E7:5\r\n527D020DF8B86D719E17FBC2F3656A77FA7:4\r\n52B88C888CDE6F971065983635B964D2E9C:2\r\n52F23D244A3CE592D6FF3F00E62113B217D:3\r\n531C35A7C43B3013F1878037C1796B0E260:2\r\n53DBDCFD008C32C3B5A75340D63AE4437A6:3\r\n54222EF968C7AB3D7AC37C56509E59E12AE:3\r\n5446E6519596AB6877E0DD7A7915520A070:7\r\n544F0D33D0B4B48F100F9FDA62700F155A6:2\r\n55188C2E828A0CB47058934566BAFC4A59A:1\r\n55353735EDC0476229D4E37F956CA6E7F4F:3\r\n57290270283FADBA81F1C75644EFBC91C6B:7\r\n58CB966D6F4C710026009DBAC43BBC5C181:2\r\n58E7C7D170F02AD654C09E67638B591425D:2\r\n5994DDB504DA6ADDADCE7BB3C8E9132BE00:11\r\n5A1CB7E96BF91C7D80304572D5EBB70F162:1\r\n5A6C7CECAB91293E605D53E33677E8C6546:2\r\n5A8837174A4982606EB8A4ED55F5324A27F:2\r\n5AC213403EBF0403A3E0E365F9D827970EF:2\r\n5D7D102A12ED69A2C7F33EBAADD23775AD6:2\r\n5DB1A5FD2299C230689CF479360F17863F1:1\r\n5DB2EA96BB703961E197CCD1D34CE3EC100:9\r\n5E030733A9110C2D17261139D75389685DE:2\r\n5E1D220DD81F0069D3A7B830EB90086783E:3\r\n5E35A98FD64DA15EE45CCD2226DE86E8206:5\r\n5E6BFEDFEB42EEDE1FF0CED92E874CFD46A:1\r\n5EA6B35940E90D9709487E2B98085071A0B:2\r\n5EC9EE0935EAF9BDAE538335B951CECCCB0:2\r\n5ECF7E7E596198034271557E26954CE1C18:73\r\n5FBE526B0A039E874203703E315188F4101:17\r\n5FC45B0EBC936ADBE24F5B47C4BC6931424:15\r\n605ADEE95FF9B12E97223702808646EE71D:2\r\n607C32E929778008447B42B6EADEC2B8CD2:2\r\n6093BE6A5B8892D761601DFC41D29C5839B:2\r\n60CF48F364B3997BC767FB036F45BD6C91C:3\r\n6108E95A9361C5C15F1B084925C5E2E5887:17\r\n620C8236C86B5380D1D7EDC403595136546:2\r\n622033C8A4A7FD09846197E384EFD177B9D:3\r\n62EA71FC6C870C97AA06AA3034C5CED83BC:1\r\n634545DB10A20A9D5F9F4500D88463E7769:1\r\n6385D5040F666A21F20789AEABE5CB220EB:2\r\n6444228BACF065D86A11AA467145A383340:4\r\n6485289E373A3CBD6898BA9F11189B47B69:2\r\n6495E89A53286BF3047E50C61914298D765:1\r\n649FA8C00B7727C57F14849F18370CA3257:2\r\n6617B69FBF637D8B0D54E7C62FA0FB8C552:2\r\n668B7B146919D7669087B154769C2FBB48D:1\r\n66F5F86635EA0B24B8F0F993F55CA0CD09D:1\r\n672B12B5E63B953D902EC10F8EF0CDA7E57:6\r\n6789195D682D7CA09E5D7656998F7408693:4\r\n67BF7A75DB191BD447EDA52116854F80362:2\r\n682ECB35065F745F2BF1D3EA9A68064A32C:2\r\n6833A7A151B78EE75CCA8A886F529435BCA:7\r\n68565EA28082D8676AD1942FCDFF4EBB149:2\r\n6873AA2C268C212BFF4A4BAC56622BAB6FC:1\r\n687B87467A997DF27A19FD284417C5332BE:1\r\n6905190B2EF849C55B51D66355007D35538:2\r\n696B68F716F63D50987BBB515F84D38342D:2\r\n6AB0AF7CB4F355772980A771AD31C7F9F42:8\r\n6B20C1E87B2341A079A8831CCBE0D946A7D:1\r\n6BD4B8CF59C990FF394143E9BA9D8325137:6\r\n6C26AEACEA0B7B8D085DD5098D6DAE58E63:8\r\n6C8BC8FF27A1B261C7E1FA77F14E69AEDFC:2\r\n6CE87A1965519001A04DD1A522FEC6F5933:1\r\n6CFD84EEF39EF98E01B134B8138E2531F7D:2\r\n6D68DED4422B3AA570DC34991C708EB6B46:3\r\n6E3C748B89E2435CE5B9B92B14915FDEEE1:2\r\n6E63AE6AB02B17A1070B43736DF9CA19CE1:7\r\n705FE673FB6C2A46D251733A06EF4F1C98A:2\r\n70B2B485489326A8810A57D3AC7FF3B7EEF:4\r\n70E3FE36C3D1883A5A1C048EEC53B875F90:1\r\n71A1B26F27AA2D57A621CFFEAEDC0DCFB58:2\r\n725E303CDD9C54750C30C96F37C5D4C6475:1\r\n7349DC6258FF161C5B7A9C65BBCEA996243:1\r\n73702E9F277A606D38A915A4DBA020355B6:2\r\n746DBAE52D9B35301BD9B571477A8C39FE1:15\r\n74A5E9C0AED4C6EB2B5F6E0D221B0A7AF6A:6\r\n74B254BF4C369DD9BDE731143BBFD5878C1:1\r\n7548910F4C0C1AA5D0FAF8A27FD0B3B0883:1\r\n7549C933AF80F0715D051DA68BFFC0F5900:5\r\n754CCCE62CB8106929E68C479DD74785C38:2\r\n75D8E3DD8344521D9DBF9B27177C8AD9F08:1\r\n7656BD0A3467F52C6FE72F8ACDB4C32E28E:2\r\n770032739447321ACA31B51BDA8CD3C5733:3\r\n77BEA6C2697A6C75AC9A98876A1531525B6:6\r\n77E5A748EE59C063F434F485C58E6A9F3C6:1\r\n7996CD8FBC66F471CA82085DD11BE6DE9CA:2\r\n7998DC5191F4461C1C70E434F043F972D19:2\r\n79D31E1C8796A6635FED7AEBFE0254D91DC:2\r\n79F32A7A7B8C4C4484EE4EBA995CCC82612:4\r\n7AF60279FBAB25F9F5E7B09CA07FF55ECFF:3\r\n7B6C95B7577F77ADA43E3823E6BE0C2572A:71\r\n7C66750CB47266EF2050CE14EC26ADA9E57:3\r\n7CBADFA001CB299C4676ECCD88EEC826BFE:1\r\n7DD5F9B10CCDEE0032877E0F05B8B634BE5:1\r\n7DF4EEE17FD08C50CF84C721B14448728BE:2\r\n80245F3E7D024EBF24F252C7E6E5857D831:1\r\n8037DE50E2FF313C40B925CE7EC5213EB00:3\r\n80B2207B0856424C9A0C5228C3EED0AB7C6:2\r\n81CBE22E662BF6889037EBFE619FD798768:2\r\n8330A7828A55F1DAC0DE1F232937F4C9C96:20\r\n83936CB648A3377D31AF022B4826294F210:1\r\n847050CE64F8244B778025D5C57D5F9B17B:2\r\n84B18FC784801E8CAD84FAAB8376A09AF15:1\r\n84FC39A3D5E926826C8B9C4A489C64F810F:2\r\n857B8C5DA367F370C4483086A3582AA2BCE:1\r\n8584C79896D8AB35A011675BDCB2C7FDDEA:2\r\n86896C53C7FFE20102F56ADEF8574DF820F:2\r\n872DA7DA1C7BC699DEAC73B0E44FE2244ED:3\r\n87313A3327D62E17E5A0B3A80AE06FF3C1D:1\r\n879FA1CB268DFFEAA37C6CAABB51626BCE9:11\r\n87EFD14F98CA136A2319FD0F6945EDD4D24:2\r\n8840F07124B1E5AB34704271BA60C8FA0FF:2\r\n89AF13F683C1744A3A2117FB6267E05B4AC:1\r\n8A8E42905273F9594993338DCEDB6915958:3\r\n8B38D50636653B208950434E612FB7AB085:1\r\n8C3D07DFA077AC57F536AE11365FC4AB267:45\r\n8D24B6A1A6A27D6D42CABBE1E3DFA16B11F:4\r\n8D5253ACFF04C5836FEA2174023F55EFB09:5\r\n8DBC4314766D56863DB3EC7F28A2684EE43:1\r\n8DD9833898A3C74D2F73FF81D4F38C204EE:3\r\n8E3541BF1DF29CF657F56D276054FBD05D7:7\r\n8E82111803ABF51FB19738E00C34FAF8808:7\r\n8E9E6E8519F66C6F0436198662089DDE3E3:2\r\n8EEE8C3602C330FA84328E52EF0EFF7C3E3:2\r\n8F88304CD896C48B6C9B37842EEC2CC21A9:2\r\n8F8B4DAD0886714F2FDDA698DB4AAA14CC3:2\r\n8FEA4C2F4259CC54FD2E045757C8ED5B082:2\r\n9066AEC9E86EB9AA21AEA76EB59B0F99064:5\r\n90B528A5221BC21675E0F72E8CF9B4EE535:1\r\n90E217F6BB255B8486572AA8FEB3F8A7711:1\r\n910682204A1A37D5ECFF92EBC5FF68CF9F0:1\r\n915BB69E55B67CD922987251120A73D1723:2\r\n91FAD79B6A2B5683CCA5A026E89CC34FC6F:2\r\n9352609E24AEA4D3FEEEF14C269D29ED395:2\r\n93A2F8DEA94FAC49D73355B6AC0F1FBD499:3\r\n9466DAF3FD84198BD41CC0D84B21EB7D0BD:1\r\n9518926885E1E577159080BAA652E652342:2\r\n95792DE8E2E955083DEFFD5A29A46267E4C:2\r\n95E2AD2292447B57F73CE720102600B841E:1\r\n95EB3327B12156B0C4517236B671D570BE4:2\r\n9614F91B22D81C739E92163135E4879A3A5:5\r\n96346E3BF3F3BFFC22B5AAF446A98440F30:1\r\n96D286340285A41871618AF16FC82D8F340:1\r\n96DED79761FC28DDAED2FD0658070EA5A78:1\r\n97DFE3198B4169FFC9FAFE09F2E40A14321:4\r\n98075B3F4792F705563D4CD6D0746939384:3\r\n986B0DAC9D0C9B08FCE13D924268CE7F2D0:6\r\n98F83F25A628AC7EB61484B3B2BA7712576:2\r\n997755C3A264DD8F3B7727C677CD2EED55D:2\r\n9A0A806D096FA870B06740C8C2AB279429D:2\r\n9A43E2C622FAD69FAF11BE7428593DF43F4:2\r\n9A6013E8711C1A48F24134D3279C0391217:3\r\n9A673AE88842C8D27B9B5E9FEBC639EF90C:1\r\n9ABC0B29D2AF4B8F7B013D64150C1FD90F5:2\r\n9AC3ADB4800D1FA9383E8123D604040D3AF:9\r\n9B4F0768FFF041CFBAA9C7B97871BDA540B:2\r\n9D5A4A3ED9DFCB1ADFF6BCDBDCE50D10E9C:8\r\n9EE018B8F5006EF0B6379016A65247C3BE6:3\r\n9F998337CD8785E0898239F638E681AFB6C:1\r\nA03F354EDB902DF052BB2EB71E742F875B9:2\r\nA22329F6B3B9AA5B726CD8D8DC88C8157E6:1\r\nA348395E05B6AFE823557C6966D1F4397DF:4\r\nA36DF58C1EDAE5AEABB244AC128CE61A3B7:2\r\nA386EA8F8085A3DFA48EC97C2964860D289:9\r\nA3B39CAC75D39DADB4BE328002F0CC73110:1\r\nA3BD6CC6F199EB49284B020494ACF60130E:7\r\nA49D210977423FF7B1874BE4896568D11FF:2\r\nA4F63A3289617AC8A183306963FB5723344:1\r\nA5B4E38C315BEC04481F990B0CBBD79C6AF:2\r\nA638BACA01537C69E551DF1ED2E67C2E399:2\r\nA77FBC2925F3FEDD7477DADE62B07D3D961:3\r\nA797BD5B3C3186E2B4D36EDE611A3B5CE0B:3\r\nA7AB0C24AE63715676BC0AC5E0182CAA1D5:1\r\nA8D1C0D2A98D1E5954E8BD67C17E01387E6:2\r\nAAE1E3631D989099F8E8BC294D6D6315D49:2\r\nAB71074EC863A7F3E8D14A1B83440C7DF71:1\r\nABD93B454B6F39B212768457A8E931F9B8B:1\r\nACFB1B53999ABEA4D22C0800D9D3D2A83E2:4\r\nAE25028DD19CAEC1D531DC8CDF85658A8C7:2\r\nAEE2175827E0C793DD089E6B4E184567747:2\r\nAF754383144372596F40767CD00E943BFF7:86\r\nAF7A71D180585AD95AD47B83B7BE5C04CE1:1\r\nAFC59A164FD7DBBF4F39583BFBE7CF0AFBC:3\r\nAFF3AA2B7056E7ADF2EDDB90260A08CCF31:1\r\nB14FEA23D97B4E93782091DCEE8174ECBA9:2\r\nB16C52643AE707AAF11FC764D2413D28D3D:16\r\nB1A6C5FAEE020D7F68DDB34A8CEA09951C3:2\r\nB1C4F439179A58687ABBB4E706F314BB00C:1\r\nB20EE5CEB263358B4D2C03F0B9E15D47F1E:1\r\nB2DA0F5AE73788C30AC2C4905C3E7D2FFFD:1\r\nB329C355F59209FCA5BC767108D46D0B40A:7\r\nB330488A19E43682472A0A7DE9E7FA120E1:1\r\nB46EE3DB6C4F8F77BBFBA8D42A8FC8244DC:2\r\nB4BBCF05AB10F1DDCE1923C4D2E76AE2468:2\r\nB5B13DB679EE6E58E0E2FB28737269F7EB0:1\r\nB5D652A6B324571DD3A4A6072EF5EFE18C7:1\r\nB6B021FF2488B2C13F2D8BE5447B27805D0:1\r\nB6BCA94D80F609567BF0EBD0705CC4405D0:1\r\nB730B1542C600E3EFDB897E2346EF30B6C6:3\r\nB75D5C660776EF90095E35F6764439EDAC1:2\r\nB78F4B263C4A027EB8A9CD3F19DB2E8519A:2\r\nB831807337B9B0688024B5D2D7D80D200E8:4\r\nB84761D5EE256E3ED09B3DD69FF0083B8E8:6\r\nB859BE72C8B612815B39C0DAA06E5DB1CBE:3\r\nB8B4999A9460CA424124CB408EE9134BAFA:2\r\nB8C05907E9F349FD40F016FD375B76B11DE:2\r\nB9018C253C166248C85E9268290F8D79013:5\r\nB9282B9CBC249929E494EDB5FA2201C2AEF:1\r\nB9C0F1AF64D35A7E986FBBAC6C6DDC9EA5C:1\r\nBA006DC5A87614A3FD7358E851B5D02934C:1\r\nBA1251D07FDEE70ADD52AD6931B50DF0A37:1\r\nBA917D8D9191A0DCCFF75AC74414322C303:1\r\nBAD7127F1DFC016B1EE0851107E1D721027:2\r\nBB50389A1AF45D10DFBF070F8E3FA23D58F:1\r\nBD3E8909DBBB87AEEBE5793255F5DC6D57F:2\r\nBE622BEFC8F9E1ECD141D01387C1FD718AA:4\r\nBEE7B458222BB66F80034708B6DFF361B84:1\r\nBF0299DE4A9F14EF18A606FF50A27BEF1BB:1\r\nC0157730353F3BA697C261CEAF3B09F2555:1\r\nC22F9919B4E08C33847E70C529A8CB732EE:1\r\nC3182C5210879514DF09410B0F302EC6764:3\r\nC357D06875A10862413922BAF05E4282373:2\r\nC3F43AD1942EF04CD983A7A4C6BC566E695:10\r\nC469989879F08FFB3F0349A0C9EFAEBC0F0:1\r\nC48ED5F0D2D45C581D044D180A742B47813:2\r\nC59CB98016B5FD88A466814F5A79DBE56AC:1\r\nC7A5342FA6DB65982BD7D8D12189CF53320:1\r\nC7BE0DF7EE5212527FB10A64FFB3BA1A23D:3\r\nC80ECD96A6918BE18070E2A4C5ADE190BFB:38\r\nC8F3CCD7B8C104870736FC90CE9007C3496:7\r\nCA0028E9F01227C155D2913C0AB88F20BBA:3\r\nCA171E25C09827EBA41C016BDCA52EEF82B:1\r\nCA6D9994AAB7616691436BF4469E934D9CC:10\r\nCADFAE7640A745A1FC38D9A51568FC9DF88:1\r\nCB7AE05201209B9159A9C99EE0056F1FF96:2\r\nCC009758CF986C48B24EC1E391FD7393999:3\r\nCC5423BD827FEAED7593885A4201AE63F5B:26\r\nCDC42326D29F05267D16035AB0E48AC702A:2\r\nCE195EFA655D3A64F8D2AFC2734D1735122:3\r\nCE508F124C4DF28D93BDED72FA24C6285BD:1\r\nCEE5FD796570E1BCCFB04ADA531C561BC46:2\r\nCFC3A42D07FF3A123A104A3832B59630D01:5\r\nD0121F4A6EEEE1A01B7F93B16087DDE6FC6:2\r\nD0F4F8D163D18765E82B5BD0A760C674DEB:6\r\nD140325D3B26C4264A3FD46776111A9C9AA:2\r\nD1902DD1C8676C548CF2A8DE75E8FE9D133:2\r\nD2391743173A5BEAFE413A150F5EFA0EA6A:4\r\nD28148FC49D36A21306410F50C8FBFA0121:1\r\nD31F34103F64469A92454946BAC647127E6:2\r\nD3453C4E5E56342F77951509B3C9F81ABBB:3\r\nD4B99802DCE2BF71423AC2D456469E3FCD4:2\r\nD513213A8D741E2B734F284568C6E3D39C7:1\r\nD5271E1530500894F7E944D2CA047364E75:45\r\nD53EB64F39F6CC562AF66C586CDBEAAAE5E:3\r\nD589D9187A8A80D919AD262D7E418E1C778:1\r\nD618FB4ABB5E14B78A6556C048AA96620C8:4\r\nD677FBE6F5F0840ED9F6FF5FCE3CBAE778B:1\r\nD682A7EE30BDCBFAE8A4A50B1B83CB14F86:3\r\nD697BE425A5592D2A3429BC363F80343787:1\r\nD72CB180A05CB57960362F4059516DF6A14:1\r\nD7495209B65D5B60BE6BB5A600471FB1A60:2\r\nD7920244C27029434BA7769880AEF637EAD:6\r\nD91F4509604B300A419EDFE4CE022D84F58:3\r\nD9489243F6303ECDCDBDD7480191F06FA19:2\r\nD965056EB0972A237F1D133B14FAA0261A3:3\r\nDA8E7C9F31B14F127EA44A0E63978AB86D9:2\r\nDAEB42A173D80CA71C60391377C142465F8:4\r\nDB56D54362342414830CD705A7DFE987906:1\r\nDBD784BEF8E297FC596FF1ACE9DC13EE14E:2\r\nDC30991DFF536D0EE5DFB7D7D9E31A209C0:2\r\nDC55E25F25AC0FB6E151E77C16A6BD96D5A:2\r\nDD2F2AE3022F5637E39C7CDEF02E47D71D8:2\r\nDD73D20D1F683CB083D7C96EC7B9FB16242:2\r\nDE516D8D31F6EC8154F111B63622E5BDBFD:2\r\nDE51F306F811D7EF482DFEEB64B2BDF7C78:3\r\nDE6C20CBE2778C8FB44F7BA772209B2C7B3:2\r\nDF763FC865E33672D2829B95679A8E82B5F:5\r\nDF8AA2E97C4B93183A58F21356EAB2D9C87:1\r\nDFE83B3F691787117DB1991A5389D25E3DF:1\r\nE02E0F99E193FEC142463C6B9B8C4EA83CC:1\r\nE07878322549D5FC2DCD13504524B1228EB:2\r\nE0ADFFD3A5146ADB89D03BDC49FB10D7697:3\r\nE2572C091F3B714C6D9F0FFF21DAD163781:26\r\nE25D32CEC590BF8AE2F82A5A36F4151AE33:4\r\nE2A652A31BA16ADFECB9AEFA1C69CEE9B9E:1\r\nE2F0C3F884BBE53CB093C6773DEB67BA5F9:1\r\nE3561D215EF83A5BC1EB0CD031398426300:2\r\nE4A7C40385370A012057D495623AD6722E2:6\r\nE4B3F07E35E959B27ECE2EFD92AE0291D64:2\r\nE4D829D9606C87453157B8E6D91C9E3754B:23\r\nE6BABD5B0AF3758CFA4F17BD7EDFC22900A:1\r\nE6FA6C170E0B394B6F2B128250FBA3BA2AE:1\r\nE720AB9A6702F5D62A656932EB03E91B995:3\r\nE744D025D75D320383E3246B5CA47D5C498:1\r\nE7DE735F5AA52D99FFB57F75A44BCE2A3C5:3\r\nE814204F259A06BCB7C3C46AD7FF5CFCA40:2\r\nE8F692A9152CE2C5497BB2B2156E10BEE05:3\r\nEA516B2721081A139A88DDFD84975CEE170:1\r\nEA820B90816908D0656315CA5EAA8E5D114:2\r\nEB6B201B04CF449CD2FDE3279581710B719:2\r\nEC8189547605A7BA6BD31CD5ED2A6115682:1\r\nECC05D7C56A3642CE1C51D4C7B6ED8B1558:3\r\nED5E8812F0B29851F7FCB9F79E46DAF9309:2\r\nED8A70C697456EA5FC2E3165657CD1D4479:1\r\nEEE0AC0E8ED8F8E3400316EF3A9DD88ED92:2\r\nEF449D4FC385362C170EEBA29099DF0A124:2\r\nEFBE612E61950ADE309DFB55D71C548A66B:1\r\nF005A77A0A5B7542CFAEC8B1937D86042EA:1\r\nF10103F21D86B9F6AFFF08BC5EE3434F3B6:2\r\nF1588BE0706CD2566FB27A52B663AB1D618:3\r\nF20442B827E07166A2B0280F6D23D1D8CA4:2\r\nF3035E7F27CACB2EA8CA41B6B7010DED33C:3\r\nF3D85542772D10B410828920B57318E17D6:2\r\nF5DD8C1C51F26B3146444B6B5A5988B9F31:2\r\nF63CDD7C0D13601EFA57583CDA5E7DCCD16:1\r\nF6B97F59AFAC75854D5CBFB64316C262935:2\r\nF7B492024C27072CEE54A8C2498A9716088:1\r\nF884D5F23B2FAF7D14D2B323FE0615B2AFB:15\r\nF8D36495E42E8BF86031571F5E724FB646A:2\r\nFA4FDCBB7FE13686185E0CA451E8ABF5018:5\r\nFA61F95701DD8D58413F01C810364A4C25D:1\r\nFA8A0D49CDBFA9B474431B00CAE199B4E9E:2\r\nFA93DD99B18A0326C628680C82C36113BED:1\r\nFAA218CDFE92EE01A2209064A7F5D8E234D:4\r\nFADA32AE9DA5EFCA67F4FA744BB697301AC:5\r\nFB3281D30A223E0ADDB71387779D0EFE55B:1\r\nFC66063534F28C4EAD743C7BA76AAFC16DE:3\r\nFC7F8CC7AB534CDD53BA37D40E1AEF82D34:1\r\nFDB7E0A8009A05AAC62BF554DB0A6FD7DE6:28\r\nFDEFC68D2B02B31E7C43579741B4272A5CC:1\r\nFE022EAB7C71FA7BCE7ED582515EBF784A7:3\r\nFE927CC5C93E8438874BBAD6A1988442991:4\r\nFEA444A2E703FFD434FAF6709B3E51DEDAE:2\r\nFFA3A304A01FB95271AE35A8610C132DF92:4\r\nFFCD4E368CD4F0A496193EABA7451408C42:2", 9 | "rawHeaders": [ 10 | "Date", 11 | "Fri, 23 Feb 2018 04:54:16 GMT", 12 | "Content-Type", 13 | "text/plain; charset=utf-8", 14 | "Transfer-Encoding", 15 | "chunked", 16 | "Connection", 17 | "close", 18 | "Cache-Control", 19 | "public, max-age=2678400", 20 | "Vary", 21 | "Accept-Encoding", 22 | "Arr-Disable-Session-Affinity", 23 | "True", 24 | "X-Powered-By", 25 | "ASP.NET", 26 | "CF-Cache-Status", 27 | "HIT", 28 | "Expires", 29 | "Mon, 26 Mar 2018 04:54:16 GMT", 30 | "Strict-Transport-Security", 31 | "max-age=31536000; includeSubDomains; preload", 32 | "X-Content-Type-Options", 33 | "nosniff", 34 | "Expect-CT", 35 | "max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"", 36 | "Server", 37 | "cloudflare" 38 | ] 39 | } 40 | ] --------------------------------------------------------------------------------