maxmind 2.10.0 → 2.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/.github/main.workflow +16 -0
  2. package/LICENSE +1 -1
  3. package/README.md +45 -2
  4. package/examples/README.md +2 -0
  5. package/index.d.ts +118 -114
  6. package/lib/bigint.js +2 -2
  7. package/lib/metadata.js +1 -1
  8. package/package.json +6 -5
  9. package/tslint.json +4 -0
  10. package/.nyc_output/b65d0aee5ae72eefe674695f0b3cc653.json +0 -1
  11. package/.nyc_output/c194a11003d542e533dda0e03e1c0249.json +0 -1
  12. package/.nyc_output/e5178fde26f4197a251893de3577725e.json +0 -1
  13. package/scripts/lint +0 -20
  14. package/scripts/release +0 -17
  15. package/scripts/test +0 -24
  16. package/test/data/.git +0 -1
  17. package/test/data/.gitattributes +0 -1
  18. package/test/data/.gitconfig +0 -2
  19. package/test/data/.perltidyallrc +0 -11
  20. package/test/data/.tidyallrc +0 -7
  21. package/test/data/LICENSE +0 -4
  22. package/test/data/MaxMind-DB-spec.md +0 -558
  23. package/test/data/README.md +0 -4
  24. package/test/data/perltidyrc +0 -12
  25. package/test/data/source-data/GeoIP2-Anonymous-IP-Test.json +0 -32
  26. package/test/data/source-data/GeoIP2-City-Test.json +0 -12376
  27. package/test/data/source-data/GeoIP2-Connection-Type-Test.json +0 -102
  28. package/test/data/source-data/GeoIP2-Country-Test.json +0 -10975
  29. package/test/data/source-data/GeoIP2-Domain-Test.json +0 -452
  30. package/test/data/source-data/GeoIP2-Enterprise-Test.json +0 -96
  31. package/test/data/source-data/GeoIP2-ISP-Test.json +0 -12585
  32. package/test/data/source-data/GeoIP2-Precision-City-Test.json +0 -12456
  33. package/test/data/source-data/GeoIP2-Precision-ISP-Test.json +0 -12593
  34. package/test/data/source-data/README +0 -13
  35. package/test/data/test-data/GeoIP2-Anonymous-IP-Test.mmdb +0 -0
  36. package/test/data/test-data/GeoIP2-City-Test-Broken-Double-Format.mmdb +0 -0
  37. package/test/data/test-data/GeoIP2-City-Test.mmdb +0 -0
  38. package/test/data/test-data/GeoIP2-Connection-Type-Test.mmdb +0 -0
  39. package/test/data/test-data/GeoIP2-Country-Test.mmdb +0 -0
  40. package/test/data/test-data/GeoIP2-Domain-Test.mmdb +0 -0
  41. package/test/data/test-data/GeoIP2-Enterprise-Test.mmdb +0 -0
  42. package/test/data/test-data/GeoIP2-ISP-Test.mmdb +0 -0
  43. package/test/data/test-data/GeoIP2-Precision-City-Test.mmdb +0 -0
  44. package/test/data/test-data/GeoIP2-Precision-ISP-Test.mmdb +0 -0
  45. package/test/data/test-data/MaxMind-DB-no-ipv4-search-tree.mmdb +0 -0
  46. package/test/data/test-data/MaxMind-DB-string-value-entries.mmdb +0 -0
  47. package/test/data/test-data/MaxMind-DB-test-broken-pointers-24.mmdb +0 -0
  48. package/test/data/test-data/MaxMind-DB-test-broken-search-tree-24.mmdb +0 -0
  49. package/test/data/test-data/MaxMind-DB-test-decoder.mmdb +0 -0
  50. package/test/data/test-data/MaxMind-DB-test-ipv4-24.mmdb +0 -0
  51. package/test/data/test-data/MaxMind-DB-test-ipv4-28.mmdb +0 -0
  52. package/test/data/test-data/MaxMind-DB-test-ipv4-32.mmdb +0 -0
  53. package/test/data/test-data/MaxMind-DB-test-ipv6-24.mmdb +0 -0
  54. package/test/data/test-data/MaxMind-DB-test-ipv6-28.mmdb +0 -0
  55. package/test/data/test-data/MaxMind-DB-test-ipv6-32.mmdb +0 -0
  56. package/test/data/test-data/MaxMind-DB-test-metadata-pointers.mmdb +0 -0
  57. package/test/data/test-data/MaxMind-DB-test-mixed-24.mmdb +0 -0
  58. package/test/data/test-data/MaxMind-DB-test-mixed-28.mmdb +0 -0
  59. package/test/data/test-data/MaxMind-DB-test-mixed-32.mmdb +0 -0
  60. package/test/data/test-data/MaxMind-DB-test-nested.mmdb +0 -0
  61. package/test/data/test-data/README.md +0 -26
  62. package/test/data/test-data/maps-with-pointers.raw +0 -0
  63. package/test/data/test-data/write-test-data.pl +0 -561
  64. package/test/data/tidyall.ini +0 -5
  65. package/test/databases/GeoIP2-City-Test.mmdb.gz +0 -0
  66. package/test/databases/broken.dat +0 -0
  67. package/test/databases/legacy.dat +0 -0
  68. package/test/decoder.js +0 -78
  69. package/test/e2e.js +0 -146
  70. package/test/index.js +0 -176
  71. package/test/ip.js +0 -89
  72. package/test/is-gzip.js +0 -21
  73. package/test/reader.js +0 -124
@@ -0,0 +1,16 @@
1
+ workflow "New workflow" {
2
+ on = "push"
3
+ resolves = ["Deps", "Lint"]
4
+ }
5
+
6
+ action "Deps" {
7
+ uses = "actions/npm@de7a3705a9510ee12702e124482fad6af249991b"
8
+ runs = "npm install"
9
+ }
10
+
11
+ action "Lint" {
12
+ uses = "actions/npm@de7a3705a9510ee12702e124482fad6af249991b"
13
+ runs = "npm run lint"
14
+ needs = "Deps"
15
+ }
16
+
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2018 Dmitry Shirokov
3
+ Copyright (c) 2019 Dmitry Shirokov
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of
6
6
  this software and associated documentation files (the "Software"), to deal in
package/README.md CHANGED
@@ -2,8 +2,8 @@ node-maxmind [![Build Status](https://api.travis-ci.org/runk/node-maxmind.svg?br
2
2
  ========
3
3
 
4
4
 
5
- Pure Javascript module for Geo IP lookup using Maxmind binary databases (aka mmdb or geoip2).
6
- Fastest Maxmind lookup library available - up to [17,000% faster](https://github.com/runk/node-maxmind-benchmark) than other libraries. Module has 100% test coverage with comprehensive test suite. It natively works with binary Maxmind database format and doesn't require any "CSV - {specific lib format}" conversions as some other modules do. Maxmind binary databases are highly optimized for size and performance so there's no point working with other than that format.
5
+ Vanilla Javascript module for Geo IP lookup using Maxmind binary databases (aka mmdb or geoip2).
6
+ Fastest Maxmind lookup library available - up to [17,000% faster](https://github.com/runk/node-maxmind-benchmark) than other libraries. Module has 100% test coverage with comprehensive test suite. It natively works with binary Maxmind database format and doesn't require any "CSV - {specific lib format}" conversions as some other modules do. Maxmind binary databases are highly optimized for size and performance so there's no point using other formats.
7
7
 
8
8
 
9
9
  ## GEO databases
@@ -20,6 +20,8 @@ npm i maxmind
20
20
 
21
21
  ## Usage
22
22
 
23
+ ### JavaScript
24
+
23
25
  ```javascript
24
26
  var maxmind = require('maxmind');
25
27
 
@@ -43,6 +45,47 @@ var orgLookup = maxmind.openSync('/path/to/GeoOrg.mmdb');
43
45
  var organization = orgLookup.get('66.6.44.4');
44
46
  ```
45
47
 
48
+ ### TypeScript
49
+
50
+ ```typescript
51
+ import * as maxmind from 'maxmind';
52
+
53
+ maxmind.open<maxmind.CityResponse>('/path/to/GeoLite2-City.mmdb', (err, cityLookup) => {
54
+ let city = cityLookup.get('8.8.8.8'); // inferred type maxmind.CityResponse
55
+ });
56
+
57
+
58
+ // sync version
59
+
60
+ let cityLookup = maxmind.openSync<maxmind.CityResponse>('/path/to/GeoLite2-City.mmdb');
61
+ let city = cityLookup.get('8.8.8.8'); // inferred type maxmind.CityResponse
62
+
63
+
64
+ // use Reader class directly
65
+
66
+ let cityLookup: maxmind.Reader<maxmind.CityResponse> = null;
67
+ myLib.downloadFromCloudToStream(someCloudMaxmindDbUrl, (err, buffer) => {
68
+ if (!err) {
69
+ cityLookup = new maxmind.Reader(buffer);
70
+ }
71
+ });
72
+
73
+ if (cityLookup) {
74
+ let city = cityLookup.get('8.8.8.8'); // inferred type maxmind.CityResponse
75
+ }
76
+ ```
77
+
78
+ Supported response types:
79
+
80
+ ```
81
+ - CountryResponse
82
+ - CityResponse
83
+ - AnonymousIPResponse
84
+ - AsnResponse
85
+ - ConnectionTypeResponse
86
+ - DomainResponse
87
+ - IspResponse
88
+ ```
46
89
 
47
90
  ## V6 Support
48
91
 
@@ -0,0 +1,2 @@
1
+ # Examples
2
+
package/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export interface IOpenOpts {
1
+ export interface OpenOpts {
2
2
  cache?: {
3
3
  max: number,
4
4
  };
@@ -7,81 +7,82 @@ export interface IOpenOpts {
7
7
  watchForUpdatesHook?: () => void;
8
8
  }
9
9
 
10
- export interface INames {
11
- de?: string;
12
- en: string;
13
- es?: string;
14
- fr?: string;
15
- ja?: string;
16
- 'pt-BR'?: string;
17
- ru?: string;
18
- 'zh-CN'?: string;
10
+ export interface Names {
11
+ readonly de?: string;
12
+ readonly en: string;
13
+ readonly es?: string;
14
+ readonly fr?: string;
15
+ readonly ja?: string;
16
+ readonly 'pt-BR'?: string;
17
+ readonly ru?: string;
18
+ readonly 'zh-CN'?: string;
19
19
  }
20
20
 
21
- export interface ICity {
22
- confidence?: number;
23
- geoname_id: number;
24
- names: INames;
21
+ export interface CityRecord {
22
+ readonly confidence?: number;
23
+ readonly geoname_id: number;
24
+ readonly names: Names;
25
25
  }
26
26
 
27
- export interface IContinent {
28
- code: 'AF' | 'AN' | 'AS' | 'EU' | 'NA' | 'OC' | 'SA';
29
- geoname_id: number;
30
- names: INames;
27
+ export interface ContinentRecord {
28
+ readonly code: 'AF' | 'AN' | 'AS' | 'EU' | 'NA' | 'OC' | 'SA';
29
+ readonly geoname_id: number;
30
+ readonly names: Names;
31
31
  }
32
32
 
33
- export interface IBaseCountry {
34
- geoname_id: number;
35
- is_in_european_union?: boolean;
36
- iso_code: string;
37
- names: INames;
33
+ export interface RegisteredCountryRecord {
34
+ readonly geoname_id: number;
35
+ readonly is_in_european_union?: boolean;
36
+ readonly iso_code: string;
37
+ readonly names: Names;
38
38
  }
39
39
 
40
- export interface ICountry extends IBaseCountry {
41
- confidence?: number;
40
+ export interface CountryRecord extends RegisteredCountryRecord {
41
+ readonly confidence?: number;
42
42
  }
43
43
 
44
- export interface ILocation {
45
- accuracy_radius?: number;
46
- average_income?: number;
47
- latitude?: number;
48
- longitude?: number;
49
- metro_code?: number;
50
- population_density?: number;
51
- time_zone?: string;
44
+ export interface LocationRecord {
45
+ readonly accuracy_radius: number;
46
+ readonly average_income?: number;
47
+ readonly latitude: number;
48
+ readonly longitude: number;
49
+ readonly metro_code?: number;
50
+ readonly population_density?: number;
51
+ readonly time_zone?: string;
52
52
  }
53
53
 
54
- export interface IPostal {
55
- code?: string;
56
- confidence?: number;
54
+ export interface PostalRecord {
55
+ readonly code: string;
56
+ readonly confidence?: number;
57
57
  }
58
58
 
59
- export interface IRepresentedCountry extends IBaseCountry {
60
- type: string;
59
+ export interface RepresentedCountryRecord extends RegisteredCountryRecord {
60
+ readonly type: string;
61
61
  }
62
62
 
63
- export interface ISubdivisions {
64
- confidence?: number;
65
- geoname_id?: number;
66
- iso_code?: string;
67
- names?: INames;
63
+ export interface SubdivisionsRecord {
64
+ readonly confidence?: number;
65
+ readonly geoname_id: number;
66
+ readonly iso_code: string;
67
+ readonly names: Names;
68
68
  }
69
69
 
70
- export interface ITraits {
71
- autonomous_system_number?: number;
72
- autonomous_system_organization?: string;
73
- domain?: string;
74
- ip_address: string;
75
- is_anonymous?: boolean;
76
- is_anonymous_proxy?: boolean;
77
- is_anonymous_vpn?: boolean;
78
- is_hosting_provider?: boolean;
79
- is_public_proxy?: boolean;
80
- is_satellite_provider?: boolean;
81
- is_tor_exit_node?: boolean;
82
- isp?: string;
83
- organization?: string;
84
- user_type?: 'business'
70
+ export interface TraitsRecord {
71
+ readonly autonomous_system_number?: number;
72
+ readonly autonomous_system_organization?: string;
73
+ readonly domain?: string;
74
+ ip_address?: string;
75
+ readonly is_anonymous?: boolean;
76
+ readonly is_anonymous_proxy?: boolean;
77
+ readonly is_anonymous_vpn?: boolean;
78
+ readonly is_hosting_provider?: boolean;
79
+ readonly is_legitimate_proxy?: boolean;
80
+ readonly is_public_proxy?: boolean;
81
+ readonly is_satellite_provider?: boolean;
82
+ readonly is_tor_exit_node?: boolean;
83
+ readonly isp?: string;
84
+ readonly organization?: string;
85
+ readonly user_type?: 'business'
85
86
  | 'cafe'
86
87
  | 'cellular'
87
88
  | 'college'
@@ -98,82 +99,85 @@ export interface ITraits {
98
99
  | 'traveler';
99
100
  }
100
101
 
101
- export interface ICountryResponse {
102
- continent?: IContinent;
103
- country?: ICountry;
104
- registered_country?: IBaseCountry;
105
- represented_country?: IRepresentedCountry;
106
- traits?: ITraits;
102
+ export interface CountryResponse {
103
+ readonly continent?: ContinentRecord;
104
+ readonly country?: CountryRecord;
105
+ readonly registered_country?: RegisteredCountryRecord;
106
+ readonly represented_country?: RepresentedCountryRecord;
107
+ readonly traits?: TraitsRecord;
107
108
  }
108
109
 
109
- export interface ICityResponse extends ICountryResponse {
110
- city?: ICity;
111
- location?: ILocation;
112
- postal?: IPostal;
113
- subdivisions?: ISubdivisions[];
110
+ export interface CityResponse extends CountryResponse {
111
+ readonly city?: CityRecord;
112
+ readonly location?: LocationRecord;
113
+ readonly postal?: PostalRecord;
114
+ readonly subdivisions?: SubdivisionsRecord[];
114
115
  }
115
116
 
116
- export interface IAnonymousIPResponse {
117
- ip_address: string;
118
- is_anonymous?: boolean;
119
- is_anonymous_proxy?: boolean;
120
- is_anonymous_vpn?: boolean;
121
- is_hosting_provider?: boolean;
122
- is_public_proxy?: boolean;
123
- is_tor_exit_node?: boolean;
117
+ export interface AnonymousIPResponse {
118
+ ip_address?: string;
119
+ readonly is_anonymous?: boolean;
120
+ readonly is_anonymous_proxy?: boolean;
121
+ readonly is_anonymous_vpn?: boolean;
122
+ readonly is_hosting_provider?: boolean;
123
+ readonly is_public_proxy?: boolean;
124
+ readonly is_tor_exit_node?: boolean;
124
125
  }
125
126
 
126
- export interface IAsnResponse {
127
- autonomous_system_number: number;
128
- autonomous_system_organization: string;
129
- ip_address: string;
127
+ export interface AsnResponse {
128
+ readonly autonomous_system_number: number;
129
+ readonly autonomous_system_organization: string;
130
+ ip_address?: string;
130
131
  }
131
132
 
132
- export interface IConnectionTypeResponse {
133
- connection_type: string;
134
- ip_address: string;
133
+ export interface ConnectionTypeResponse {
134
+ readonly connection_type: string;
135
+ ip_address?: string;
135
136
  }
136
137
 
137
- export interface IDomainResponse {
138
- domain: string;
139
- ip_address: string;
138
+ export interface DomainResponse {
139
+ readonly domain: string;
140
+ ip_address?: string;
140
141
  }
141
142
 
142
- export interface IIspResponse extends IAsnResponse {
143
- isp: string;
144
- organization: string;
143
+ export interface IspResponse extends AsnResponse {
144
+ readonly isp: string;
145
+ readonly organization: string;
145
146
  }
146
147
 
147
- export interface IMetadata {
148
- binaryFormatMajorVersion: number;
149
- binaryFormatMinorVersion: number;
150
- buildEpoch: Date;
151
- databaseType: string;
152
- languages: string[];
153
- description: any;
154
- ipVersion: number;
155
- nodeCount: number;
156
- recordSize: number;
157
- nodeByteSize: number;
158
- searchTreeSize: number;
159
- treeDepth: number;
160
- }
148
+ export type Response = CountryResponse
149
+ | CityResponse
150
+ | AnonymousIPResponse
151
+ | AsnResponse
152
+ | ConnectionTypeResponse
153
+ | DomainResponse
154
+ | IspResponse;
161
155
 
162
- export interface IReader {
163
- get: (ipAddress: string) => ICityResponse | null;
164
- metadata: IMetadata;
156
+ export interface Metadata {
157
+ readonly binaryFormatMajorVersion: number;
158
+ readonly binaryFormatMinorVersion: number;
159
+ readonly buildEpoch: Date;
160
+ readonly databaseType: string;
161
+ readonly languages: string[];
162
+ readonly description: any;
163
+ readonly ipVersion: number;
164
+ readonly nodeCount: number;
165
+ readonly recordSize: number;
166
+ readonly nodeByteSize: number;
167
+ readonly searchTreeSize: number;
168
+ readonly treeDepth: number;
165
169
  }
166
170
 
167
- export class Reader implements IReader {
168
- public metadata: IMetadata;
169
- public get: (ipAddress: string) => ICityResponse | null;
170
- constructor(buffer: Buffer, opts?: IOpenOpts);
171
+ export class Reader<T extends Response = any> {
172
+ public metadata: Metadata;
173
+ public get: (ipAddress: string) => T | null;
174
+ constructor(buffer: Buffer, opts?: OpenOpts);
171
175
  }
172
176
 
173
- export type openCb = (err: Error, cb: IReader) => void;
177
+ export type openCb<T extends Response = any> = (err: Error, cb: Reader<T>) => void;
174
178
 
175
- export function open(filepath: string, opts?: IOpenOpts | openCb, cb?: openCb): void;
179
+ export function open<T extends Response = any>(filepath: string, opts?: OpenOpts | openCb<T>, cb?: openCb<T>): void;
176
180
 
177
- export function openSync(filepath: string, opts?: IOpenOpts): IReader;
181
+ export function openSync<T extends Response = any>(filepath: string, opts?: OpenOpts): Reader<T>;
178
182
 
179
183
  export function validate(ipAddress: string): boolean;
package/lib/bigint.js CHANGED
@@ -7,7 +7,7 @@ var bigInt = require('big-integer');
7
7
  /* istanbul ignore file */
8
8
  module.exports = (typeof BigInt === 'undefined') ?
9
9
  function polyfill(offset, size) {
10
- var buffer = new Buffer(size);
10
+ var buffer = Buffer.alloc(size);
11
11
  this.db.copy(buffer, 0, offset, offset + size);
12
12
 
13
13
  var integer = 0;
@@ -20,7 +20,7 @@ module.exports = (typeof BigInt === 'undefined') ?
20
20
  return integer.toString();
21
21
  } :
22
22
  function native(offset, size) {
23
- var buffer = new Buffer(size);
23
+ var buffer = Buffer.alloc(size);
24
24
  this.db.copy(buffer, 0, offset, offset + size);
25
25
 
26
26
  var integer = BigInt(0); // eslint-disable-line no-undef
package/lib/metadata.js CHANGED
@@ -4,7 +4,7 @@ var assert = require('assert');
4
4
  var Decoder = require('./decoder');
5
5
  var utils = require('./utils');
6
6
 
7
- var METADATA_START_MARKER = new Buffer('ABCDEF4D61784D696E642E636F6D', 'hex');
7
+ var METADATA_START_MARKER = Buffer.from('ABCDEF4D61784D696E642E636F6D', 'hex');
8
8
 
9
9
 
10
10
  module.exports = Metadata;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "maxmind",
3
- "version": "2.10.0",
3
+ "version": "2.12.0",
4
4
  "homepage": "https://github.com/runk/node-maxmind",
5
5
  "description": "IP lookup using Maxmind databases",
6
6
  "keywords": [
@@ -24,18 +24,19 @@
24
24
  ],
25
25
  "dependencies": {
26
26
  "big-integer": "^1.6.31",
27
- "tiny-lru": "^1.6.1"
27
+ "tiny-lru": "^6.0.0"
28
28
  },
29
29
  "devDependencies": {
30
+ "@types/node": "10.12.20",
30
31
  "eslint": "2.13.1",
31
32
  "github-publish-release": "5.0.1",
32
33
  "ip-address": "5.8.9",
33
34
  "istanbul": "0.4.5",
34
35
  "mocha": "5.2.0",
35
36
  "nyc": "13.1.0",
36
- "sinon": "7.1.1",
37
- "tslint": "5.11.0",
38
- "typescript": "3.1.6"
37
+ "sinon": "7.2.3",
38
+ "tslint": "5.12.1",
39
+ "typescript": "3.3.1"
39
40
  },
40
41
  "repository": {
41
42
  "type": "git",
package/tslint.json CHANGED
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "extends": "tslint:recommended",
3
3
  "rules": {
4
+ "interface-name": [
5
+ true,
6
+ "never-prefix"
7
+ ],
4
8
  "quotemark": [
5
9
  true,
6
10
  "single"
@@ -1 +0,0 @@
1
- {"/Users/dmitry/projects/node-maxmind/lib/decoder.js":{"path":"/Users/dmitry/projects/node-maxmind/lib/decoder.js","statementMap":{"0":{"start":{"line":3,"column":13},"end":{"line":3,"column":30}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":35}},"2":{"start":{"line":5,"column":10},"end":{"line":5,"column":29}},"3":{"start":{"line":6,"column":12},"end":{"line":6,"column":30}},"4":{"start":{"line":8,"column":12},"end":{"line":25,"column":1}},"5":{"start":{"line":27,"column":25},"end":{"line":27,"column":45}},"6":{"start":{"line":30,"column":2},"end":{"line":30,"column":42}},"7":{"start":{"line":34,"column":0},"end":{"line":34,"column":25}},"8":{"start":{"line":37,"column":2},"end":{"line":37,"column":50}},"9":{"start":{"line":38,"column":2},"end":{"line":38,"column":36}},"10":{"start":{"line":40,"column":2},"end":{"line":40,"column":20}},"11":{"start":{"line":41,"column":2},"end":{"line":41,"column":32}},"12":{"start":{"line":42,"column":2},"end":{"line":42,"column":42}},"13":{"start":{"line":43,"column":2},"end":{"line":43,"column":35}},"14":{"start":{"line":47,"column":0},"end":{"line":69,"column":2}},"15":{"start":{"line":49,"column":15},"end":{"line":49,"column":32}},"16":{"start":{"line":50,"column":11},"end":{"line":50,"column":31}},"17":{"start":{"line":52,"column":2},"end":{"line":55,"column":3}},"18":{"start":{"line":53,"column":4},"end":{"line":53,"column":47}},"19":{"start":{"line":54,"column":4},"end":{"line":54,"column":64}},"20":{"start":{"line":57,"column":2},"end":{"line":65,"column":3}},"21":{"start":{"line":58,"column":4},"end":{"line":58,"column":30}},"22":{"start":{"line":59,"column":4},"end":{"line":61,"column":5}},"23":{"start":{"line":60,"column":6},"end":{"line":60,"column":83}},"24":{"start":{"line":63,"column":4},"end":{"line":63,"column":22}},"25":{"start":{"line":64,"column":4},"end":{"line":64,"column":13}},"26":{"start":{"line":67,"column":13},"end":{"line":67,"column":52}},"27":{"start":{"line":68,"column":2},"end":{"line":68,"column":58}},"28":{"start":{"line":72,"column":0},"end":{"line":81,"column":2}},"29":{"start":{"line":73,"column":15},"end":{"line":73,"column":37}},"30":{"start":{"line":74,"column":2},"end":{"line":76,"column":3}},"31":{"start":{"line":75,"column":4},"end":{"line":75,"column":18}},"32":{"start":{"line":78,"column":15},"end":{"line":78,"column":34}},"33":{"start":{"line":79,"column":2},"end":{"line":79,"column":33}},"34":{"start":{"line":80,"column":2},"end":{"line":80,"column":16}},"35":{"start":{"line":84,"column":0},"end":{"line":124,"column":2}},"36":{"start":{"line":85,"column":18},"end":{"line":85,"column":31}},"37":{"start":{"line":96,"column":2},"end":{"line":121,"column":3}},"38":{"start":{"line":98,"column":6},"end":{"line":98,"column":64}},"39":{"start":{"line":100,"column":6},"end":{"line":100,"column":42}},"40":{"start":{"line":102,"column":6},"end":{"line":102,"column":62}},"41":{"start":{"line":104,"column":6},"end":{"line":104,"column":64}},"42":{"start":{"line":106,"column":6},"end":{"line":106,"column":44}},"43":{"start":{"line":108,"column":6},"end":{"line":108,"column":54}},"44":{"start":{"line":110,"column":6},"end":{"line":110,"column":63}},"45":{"start":{"line":112,"column":6},"end":{"line":112,"column":63}},"46":{"start":{"line":114,"column":6},"end":{"line":114,"column":62}},"47":{"start":{"line":116,"column":6},"end":{"line":116,"column":63}},"48":{"start":{"line":118,"column":6},"end":{"line":118,"column":62}},"49":{"start":{"line":120,"column":6},"end":{"line":120,"column":62}},"50":{"start":{"line":123,"column":2},"end":{"line":123,"column":67}},"51":{"start":{"line":127,"column":0},"end":{"line":166,"column":2}},"52":{"start":{"line":138,"column":13},"end":{"line":138,"column":28}},"53":{"start":{"line":146,"column":2},"end":{"line":147,"column":32}},"54":{"start":{"line":147,"column":4},"end":{"line":147,"column":32}},"55":{"start":{"line":151,"column":2},"end":{"line":152,"column":52}},"56":{"start":{"line":152,"column":4},"end":{"line":152,"column":52}},"57":{"start":{"line":156,"column":2},"end":{"line":157,"column":73}},"58":{"start":{"line":157,"column":4},"end":{"line":157,"column":73}},"59":{"start":{"line":162,"column":2},"end":{"line":165,"column":4}},"60":{"start":{"line":169,"column":0},"end":{"line":171,"column":2}},"61":{"start":{"line":170,"column":2},"end":{"line":170,"column":46}},"62":{"start":{"line":174,"column":0},"end":{"line":213,"column":2}},"63":{"start":{"line":181,"column":21},"end":{"line":181,"column":40}},"64":{"start":{"line":183,"column":16},"end":{"line":183,"column":65}},"65":{"start":{"line":184,"column":15},"end":{"line":184,"column":16}},"66":{"start":{"line":190,"column":2},"end":{"line":209,"column":3}},"67":{"start":{"line":191,"column":4},"end":{"line":191,"column":58}},"68":{"start":{"line":195,"column":9},"end":{"line":209,"column":3}},"69":{"start":{"line":196,"column":4},"end":{"line":196,"column":79}},"70":{"start":{"line":200,"column":9},"end":{"line":209,"column":3}},"71":{"start":{"line":201,"column":4},"end":{"line":201,"column":100}},"72":{"start":{"line":208,"column":4},"end":{"line":208,"column":48}},"73":{"start":{"line":211,"column":2},"end":{"line":211,"column":28}},"74":{"start":{"line":212,"column":2},"end":{"line":212,"column":42}},"75":{"start":{"line":216,"column":0},"end":{"line":227,"column":2}},"76":{"start":{"line":218,"column":14},"end":{"line":218,"column":16}},"77":{"start":{"line":220,"column":2},"end":{"line":224,"column":3}},"78":{"start":{"line":221,"column":4},"end":{"line":221,"column":30}},"79":{"start":{"line":222,"column":4},"end":{"line":222,"column":24}},"80":{"start":{"line":223,"column":4},"end":{"line":223,"column":26}},"81":{"start":{"line":226,"column":2},"end":{"line":226,"column":31}},"82":{"start":{"line":230,"column":0},"end":{"line":232,"column":2}},"83":{"start":{"line":231,"column":2},"end":{"line":231,"column":20}},"84":{"start":{"line":235,"column":0},"end":{"line":237,"column":2}},"85":{"start":{"line":236,"column":2},"end":{"line":236,"column":44}},"86":{"start":{"line":240,"column":0},"end":{"line":242,"column":2}},"87":{"start":{"line":241,"column":2},"end":{"line":241,"column":43}},"88":{"start":{"line":245,"column":0},"end":{"line":259,"column":2}},"89":{"start":{"line":248,"column":12},"end":{"line":248,"column":14}},"90":{"start":{"line":250,"column":2},"end":{"line":256,"column":3}},"91":{"start":{"line":251,"column":4},"end":{"line":251,"column":30}},"92":{"start":{"line":252,"column":4},"end":{"line":252,"column":20}},"93":{"start":{"line":253,"column":4},"end":{"line":253,"column":34}},"94":{"start":{"line":254,"column":4},"end":{"line":254,"column":24}},"95":{"start":{"line":255,"column":4},"end":{"line":255,"column":25}},"96":{"start":{"line":258,"column":2},"end":{"line":258,"column":29}},"97":{"start":{"line":262,"column":0},"end":{"line":265,"column":2}},"98":{"start":{"line":263,"column":2},"end":{"line":263,"column":26}},"99":{"start":{"line":263,"column":17},"end":{"line":263,"column":26}},"100":{"start":{"line":264,"column":2},"end":{"line":264,"column":43}},"101":{"start":{"line":268,"column":0},"end":{"line":279,"column":2}},"102":{"start":{"line":269,"column":2},"end":{"line":277,"column":3}},"103":{"start":{"line":270,"column":12},"end":{"line":270,"column":21}},"104":{"start":{"line":271,"column":12},"end":{"line":271,"column":35}},"105":{"start":{"line":272,"column":12},"end":{"line":272,"column":75}},"106":{"start":{"line":273,"column":12},"end":{"line":273,"column":96}},"107":{"start":{"line":274,"column":12},"end":{"line":274,"column":117}},"108":{"start":{"line":275,"column":12},"end":{"line":275,"column":52}},"109":{"start":{"line":276,"column":13},"end":{"line":276,"column":53}},"110":{"start":{"line":278,"column":2},"end":{"line":278,"column":11}},"111":{"start":{"line":282,"column":0},"end":{"line":293,"column":2}},"112":{"start":{"line":283,"column":15},"end":{"line":283,"column":31}},"113":{"start":{"line":284,"column":2},"end":{"line":284,"column":49}},"114":{"start":{"line":286,"column":16},"end":{"line":286,"column":17}},"115":{"start":{"line":287,"column":22},"end":{"line":287,"column":30}},"116":{"start":{"line":288,"column":2},"end":{"line":290,"column":3}},"117":{"start":{"line":289,"column":4},"end":{"line":289,"column":90}},"118":{"start":{"line":292,"column":2},"end":{"line":292,"column":28}},"119":{"start":{"line":296,"column":0},"end":{"line":298,"column":2}},"120":{"start":{"line":297,"column":2},"end":{"line":297,"column":50}}},"fnMap":{"0":{"name":"cursor","decl":{"start":{"line":29,"column":9},"end":{"line":29,"column":15}},"loc":{"start":{"line":29,"column":31},"end":{"line":31,"column":1}},"line":29},"1":{"name":"Decoder","decl":{"start":{"line":36,"column":9},"end":{"line":36,"column":16}},"loc":{"start":{"line":36,"column":39},"end":{"line":44,"column":1}},"line":36},"2":{"name":"(anonymous_2)","decl":{"start":{"line":47,"column":27},"end":{"line":47,"column":28}},"loc":{"start":{"line":47,"column":44},"end":{"line":69,"column":1}},"line":47},"3":{"name":"(anonymous_3)","decl":{"start":{"line":72,"column":31},"end":{"line":72,"column":32}},"loc":{"start":{"line":72,"column":48},"end":{"line":81,"column":1}},"line":72},"4":{"name":"(anonymous_4)","decl":{"start":{"line":84,"column":33},"end":{"line":84,"column":34}},"loc":{"start":{"line":84,"column":62},"end":{"line":124,"column":1}},"line":84},"5":{"name":"(anonymous_5)","decl":{"start":{"line":127,"column":37},"end":{"line":127,"column":38}},"loc":{"start":{"line":127,"column":64},"end":{"line":166,"column":1}},"line":127},"6":{"name":"(anonymous_6)","decl":{"start":{"line":169,"column":32},"end":{"line":169,"column":33}},"loc":{"start":{"line":169,"column":55},"end":{"line":171,"column":1}},"line":169},"7":{"name":"(anonymous_7)","decl":{"start":{"line":174,"column":34},"end":{"line":174,"column":35}},"loc":{"start":{"line":174,"column":61},"end":{"line":213,"column":1}},"line":174},"8":{"name":"(anonymous_8)","decl":{"start":{"line":216,"column":32},"end":{"line":216,"column":33}},"loc":{"start":{"line":216,"column":55},"end":{"line":227,"column":1}},"line":216},"9":{"name":"(anonymous_9)","decl":{"start":{"line":230,"column":34},"end":{"line":230,"column":35}},"loc":{"start":{"line":230,"column":49},"end":{"line":232,"column":1}},"line":230},"10":{"name":"(anonymous_10)","decl":{"start":{"line":235,"column":33},"end":{"line":235,"column":34}},"loc":{"start":{"line":235,"column":50},"end":{"line":237,"column":1}},"line":235},"11":{"name":"(anonymous_11)","decl":{"start":{"line":240,"column":32},"end":{"line":240,"column":33}},"loc":{"start":{"line":240,"column":49},"end":{"line":242,"column":1}},"line":240},"12":{"name":"(anonymous_12)","decl":{"start":{"line":245,"column":30},"end":{"line":245,"column":31}},"loc":{"start":{"line":245,"column":53},"end":{"line":259,"column":1}},"line":245},"13":{"name":"(anonymous_13)","decl":{"start":{"line":262,"column":32},"end":{"line":262,"column":33}},"loc":{"start":{"line":262,"column":55},"end":{"line":265,"column":1}},"line":262},"14":{"name":"(anonymous_14)","decl":{"start":{"line":268,"column":31},"end":{"line":268,"column":32}},"loc":{"start":{"line":268,"column":54},"end":{"line":279,"column":1}},"line":268},"15":{"name":"(anonymous_15)","decl":{"start":{"line":282,"column":34},"end":{"line":282,"column":35}},"loc":{"start":{"line":282,"column":57},"end":{"line":293,"column":1}},"line":282},"16":{"name":"(anonymous_16)","decl":{"start":{"line":296,"column":33},"end":{"line":296,"column":34}},"loc":{"start":{"line":296,"column":56},"end":{"line":298,"column":1}},"line":296}},"branchMap":{"0":{"loc":{"start":{"line":38,"column":20},"end":{"line":38,"column":35}},"type":"binary-expr","locations":[{"start":{"line":38,"column":20},"end":{"line":38,"column":30}},{"start":{"line":38,"column":34},"end":{"line":38,"column":35}}],"line":38},"1":{"loc":{"start":{"line":40,"column":9},"end":{"line":40,"column":19}},"type":"binary-expr","locations":[{"start":{"line":40,"column":9},"end":{"line":40,"column":13}},{"start":{"line":40,"column":17},"end":{"line":40,"column":19}}],"line":40},"2":{"loc":{"start":{"line":41,"column":15},"end":{"line":41,"column":31}},"type":"binary-expr","locations":[{"start":{"line":41,"column":15},"end":{"line":41,"column":25}},{"start":{"line":41,"column":29},"end":{"line":41,"column":31}}],"line":41},"3":{"loc":{"start":{"line":42,"column":19},"end":{"line":42,"column":41}},"type":"binary-expr","locations":[{"start":{"line":42,"column":19},"end":{"line":42,"column":33}},{"start":{"line":42,"column":37},"end":{"line":42,"column":41}}],"line":42},"4":{"loc":{"start":{"line":52,"column":2},"end":{"line":55,"column":3}},"type":"if","locations":[{"start":{"line":52,"column":2},"end":{"line":55,"column":3}},{"start":{"line":52,"column":2},"end":{"line":55,"column":3}}],"line":52},"5":{"loc":{"start":{"line":57,"column":2},"end":{"line":65,"column":3}},"type":"if","locations":[{"start":{"line":57,"column":2},"end":{"line":65,"column":3}},{"start":{"line":57,"column":2},"end":{"line":65,"column":3}}],"line":57},"6":{"loc":{"start":{"line":59,"column":4},"end":{"line":61,"column":5}},"type":"if","locations":[{"start":{"line":59,"column":4},"end":{"line":61,"column":5}},{"start":{"line":59,"column":4},"end":{"line":61,"column":5}}],"line":59},"7":{"loc":{"start":{"line":74,"column":2},"end":{"line":76,"column":3}},"type":"if","locations":[{"start":{"line":74,"column":2},"end":{"line":76,"column":3}},{"start":{"line":74,"column":2},"end":{"line":76,"column":3}}],"line":74},"8":{"loc":{"start":{"line":96,"column":2},"end":{"line":121,"column":3}},"type":"switch","locations":[{"start":{"line":97,"column":4},"end":{"line":98,"column":64}},{"start":{"line":99,"column":4},"end":{"line":100,"column":42}},{"start":{"line":101,"column":4},"end":{"line":102,"column":62}},{"start":{"line":103,"column":4},"end":{"line":104,"column":64}},{"start":{"line":105,"column":4},"end":{"line":106,"column":44}},{"start":{"line":107,"column":4},"end":{"line":108,"column":54}},{"start":{"line":109,"column":4},"end":{"line":110,"column":63}},{"start":{"line":111,"column":4},"end":{"line":112,"column":63}},{"start":{"line":113,"column":4},"end":{"line":114,"column":62}},{"start":{"line":115,"column":4},"end":{"line":116,"column":63}},{"start":{"line":117,"column":4},"end":{"line":118,"column":62}},{"start":{"line":119,"column":4},"end":{"line":120,"column":62}}],"line":96},"9":{"loc":{"start":{"line":146,"column":2},"end":{"line":147,"column":32}},"type":"if","locations":[{"start":{"line":146,"column":2},"end":{"line":147,"column":32}},{"start":{"line":146,"column":2},"end":{"line":147,"column":32}}],"line":146},"10":{"loc":{"start":{"line":151,"column":2},"end":{"line":152,"column":52}},"type":"if","locations":[{"start":{"line":151,"column":2},"end":{"line":152,"column":52}},{"start":{"line":151,"column":2},"end":{"line":152,"column":52}}],"line":151},"11":{"loc":{"start":{"line":156,"column":2},"end":{"line":157,"column":73}},"type":"if","locations":[{"start":{"line":156,"column":2},"end":{"line":157,"column":73}},{"start":{"line":156,"column":2},"end":{"line":157,"column":73}}],"line":156},"12":{"loc":{"start":{"line":190,"column":2},"end":{"line":209,"column":3}},"type":"if","locations":[{"start":{"line":190,"column":2},"end":{"line":209,"column":3}},{"start":{"line":190,"column":2},"end":{"line":209,"column":3}}],"line":190},"13":{"loc":{"start":{"line":195,"column":9},"end":{"line":209,"column":3}},"type":"if","locations":[{"start":{"line":195,"column":9},"end":{"line":209,"column":3}},{"start":{"line":195,"column":9},"end":{"line":209,"column":3}}],"line":195},"14":{"loc":{"start":{"line":200,"column":9},"end":{"line":209,"column":3}},"type":"if","locations":[{"start":{"line":200,"column":9},"end":{"line":209,"column":3}},{"start":{"line":200,"column":9},"end":{"line":209,"column":3}}],"line":200},"15":{"loc":{"start":{"line":263,"column":2},"end":{"line":263,"column":26}},"type":"if","locations":[{"start":{"line":263,"column":2},"end":{"line":263,"column":26}},{"start":{"line":263,"column":2},"end":{"line":263,"column":26}}],"line":263},"16":{"loc":{"start":{"line":269,"column":2},"end":{"line":277,"column":3}},"type":"switch","locations":[{"start":{"line":270,"column":4},"end":{"line":270,"column":21}},{"start":{"line":271,"column":4},"end":{"line":271,"column":35}},{"start":{"line":272,"column":4},"end":{"line":272,"column":75}},{"start":{"line":273,"column":4},"end":{"line":273,"column":96}},{"start":{"line":274,"column":4},"end":{"line":274,"column":117}},{"start":{"line":275,"column":4},"end":{"line":275,"column":52}},{"start":{"line":276,"column":4},"end":{"line":276,"column":53}}],"line":269}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0,0,0,0,0,0,0,0,0,0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0,0,0,0,0,0]}},"/Users/dmitry/projects/node-maxmind/lib/ip.js":{"path":"/Users/dmitry/projects/node-maxmind/lib/ip.js","statementMap":{"0":{"start":{"line":3,"column":10},"end":{"line":3,"column":24}},"1":{"start":{"line":6,"column":16},"end":{"line":15,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":24}},"3":{"start":{"line":9,"column":11},"end":{"line":9,"column":26}},"4":{"start":{"line":10,"column":9},"end":{"line":10,"column":24}},"5":{"start":{"line":11,"column":9},"end":{"line":11,"column":24}},"6":{"start":{"line":12,"column":9},"end":{"line":12,"column":24}},"7":{"start":{"line":14,"column":2},"end":{"line":14,"column":26}},"8":{"start":{"line":18,"column":16},"end":{"line":61,"column":1}},"9":{"start":{"line":19,"column":13},"end":{"line":19,"column":61}},"10":{"start":{"line":24,"column":12},"end":{"line":27,"column":3}},"11":{"start":{"line":25,"column":4},"end":{"line":25,"column":37}},"12":{"start":{"line":26,"column":4},"end":{"line":26,"column":41}},"13":{"start":{"line":30,"column":2},"end":{"line":34,"column":3}},"14":{"start":{"line":31,"column":4},"end":{"line":33,"column":7}},"15":{"start":{"line":32,"column":6},"end":{"line":32,"column":53}},"16":{"start":{"line":36,"column":14},"end":{"line":36,"column":31}},"17":{"start":{"line":37,"column":11},"end":{"line":37,"column":19}},"18":{"start":{"line":38,"column":12},"end":{"line":38,"column":20}},"19":{"start":{"line":40,"column":2},"end":{"line":47,"column":3}},"20":{"start":{"line":41,"column":4},"end":{"line":41,"column":29}},"21":{"start":{"line":42,"column":4},"end":{"line":46,"column":5}},"22":{"start":{"line":43,"column":6},"end":{"line":43,"column":38}},"23":{"start":{"line":44,"column":6},"end":{"line":44,"column":31}},"24":{"start":{"line":45,"column":6},"end":{"line":45,"column":37}},"25":{"start":{"line":50,"column":2},"end":{"line":58,"column":3}},"26":{"start":{"line":51,"column":4},"end":{"line":51,"column":30}},"27":{"start":{"line":52,"column":17},"end":{"line":52,"column":41}},"28":{"start":{"line":53,"column":4},"end":{"line":57,"column":5}},"29":{"start":{"line":54,"column":6},"end":{"line":54,"column":38}},"30":{"start":{"line":55,"column":6},"end":{"line":55,"column":42}},"31":{"start":{"line":56,"column":6},"end":{"line":56,"column":48}},"32":{"start":{"line":60,"column":2},"end":{"line":60,"column":14}},"33":{"start":{"line":64,"column":0},"end":{"line":66,"column":2}},"34":{"start":{"line":65,"column":2},"end":{"line":65,"column":66}},"35":{"start":{"line":69,"column":0},"end":{"line":78,"column":2}},"36":{"start":{"line":71,"column":15},"end":{"line":71,"column":23}},"37":{"start":{"line":74,"column":15},"end":{"line":74,"column":28}},"38":{"start":{"line":77,"column":2},"end":{"line":77,"column":45}},"39":{"start":{"line":81,"column":0},"end":{"line":84,"column":2}},"40":{"start":{"line":82,"column":16},"end":{"line":82,"column":28}},"41":{"start":{"line":83,"column":2},"end":{"line":83,"column":40}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":17}},"loc":{"start":{"line":6,"column":29},"end":{"line":15,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":18,"column":16},"end":{"line":18,"column":17}},"loc":{"start":{"line":18,"column":29},"end":{"line":61,"column":1}},"line":18},"2":{"name":"(anonymous_2)","decl":{"start":{"line":24,"column":12},"end":{"line":24,"column":13}},"loc":{"start":{"line":24,"column":24},"end":{"line":27,"column":3}},"line":24},"3":{"name":"(anonymous_3)","decl":{"start":{"line":31,"column":50},"end":{"line":31,"column":51}},"loc":{"start":{"line":31,"column":78},"end":{"line":33,"column":5}},"line":31},"4":{"name":"(anonymous_4)","decl":{"start":{"line":64,"column":16},"end":{"line":64,"column":17}},"loc":{"start":{"line":64,"column":29},"end":{"line":66,"column":1}},"line":64},"5":{"name":"(anonymous_5)","decl":{"start":{"line":69,"column":16},"end":{"line":69,"column":17}},"loc":{"start":{"line":69,"column":42},"end":{"line":78,"column":1}},"line":69},"6":{"name":"(anonymous_6)","decl":{"start":{"line":81,"column":19},"end":{"line":81,"column":20}},"loc":{"start":{"line":81,"column":32},"end":{"line":84,"column":1}},"line":81}},"branchMap":{"0":{"loc":{"start":{"line":26,"column":11},"end":{"line":26,"column":40}},"type":"cond-expr","locations":[{"start":{"line":26,"column":29},"end":{"line":26,"column":30}},{"start":{"line":26,"column":33},"end":{"line":26,"column":40}}],"line":26},"1":{"loc":{"start":{"line":30,"column":2},"end":{"line":34,"column":3}},"type":"if","locations":[{"start":{"line":30,"column":2},"end":{"line":34,"column":3}},{"start":{"line":30,"column":2},"end":{"line":34,"column":3}}],"line":30},"2":{"loc":{"start":{"line":40,"column":2},"end":{"line":47,"column":3}},"type":"if","locations":[{"start":{"line":40,"column":2},"end":{"line":47,"column":3}},{"start":{"line":40,"column":2},"end":{"line":47,"column":3}}],"line":40},"3":{"loc":{"start":{"line":50,"column":2},"end":{"line":58,"column":3}},"type":"if","locations":[{"start":{"line":50,"column":2},"end":{"line":58,"column":3}},{"start":{"line":50,"column":2},"end":{"line":58,"column":3}}],"line":50},"4":{"loc":{"start":{"line":65,"column":9},"end":{"line":65,"column":65}},"type":"cond-expr","locations":[{"start":{"line":65,"column":36},"end":{"line":65,"column":49}},{"start":{"line":65,"column":52},"end":{"line":65,"column":65}}],"line":65},"5":{"loc":{"start":{"line":83,"column":9},"end":{"line":83,"column":39}},"type":"binary-expr","locations":[{"start":{"line":83,"column":9},"end":{"line":83,"column":22}},{"start":{"line":83,"column":26},"end":{"line":83,"column":39}}],"line":83}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0]}},"/Users/dmitry/projects/node-maxmind/lib/is-gzip.js":{"path":"/Users/dmitry/projects/node-maxmind/lib/is-gzip.js","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":9,"column":2}},"1":{"start":{"line":4,"column":2},"end":{"line":6,"column":3}},"2":{"start":{"line":5,"column":4},"end":{"line":5,"column":17}},"3":{"start":{"line":8,"column":2},"end":{"line":8,"column":63}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":17},"end":{"line":3,"column":18}},"loc":{"start":{"line":3,"column":31},"end":{"line":9,"column":1}},"line":3}},"branchMap":{"0":{"loc":{"start":{"line":4,"column":2},"end":{"line":6,"column":3}},"type":"if","locations":[{"start":{"line":4,"column":2},"end":{"line":6,"column":3}},{"start":{"line":4,"column":2},"end":{"line":6,"column":3}}],"line":4},"1":{"loc":{"start":{"line":4,"column":6},"end":{"line":4,"column":28}},"type":"binary-expr","locations":[{"start":{"line":4,"column":6},"end":{"line":4,"column":10}},{"start":{"line":4,"column":14},"end":{"line":4,"column":28}}],"line":4},"2":{"loc":{"start":{"line":8,"column":9},"end":{"line":8,"column":62}},"type":"binary-expr","locations":[{"start":{"line":8,"column":9},"end":{"line":8,"column":24}},{"start":{"line":8,"column":28},"end":{"line":8,"column":43}},{"start":{"line":8,"column":47},"end":{"line":8,"column":62}}],"line":8}},"s":{"0":0,"1":0,"2":0,"3":0},"f":{"0":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0,0]}},"/Users/dmitry/projects/node-maxmind/lib/metadata.js":{"path":"/Users/dmitry/projects/node-maxmind/lib/metadata.js","statementMap":{"0":{"start":{"line":3,"column":13},"end":{"line":3,"column":30}},"1":{"start":{"line":4,"column":14},"end":{"line":4,"column":34}},"2":{"start":{"line":5,"column":12},"end":{"line":5,"column":30}},"3":{"start":{"line":7,"column":28},"end":{"line":7,"column":77}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":26}},"5":{"start":{"line":13,"column":15},"end":{"line":13,"column":33}},"6":{"start":{"line":14,"column":16},"end":{"line":14,"column":39}},"7":{"start":{"line":15,"column":17},"end":{"line":15,"column":45}},"8":{"start":{"line":17,"column":2},"end":{"line":19,"column":3}},"9":{"start":{"line":18,"column":4},"end":{"line":18,"column":105}},"10":{"start":{"line":21,"column":2},"end":{"line":21,"column":71}},"11":{"start":{"line":22,"column":2},"end":{"line":22,"column":71}},"12":{"start":{"line":23,"column":2},"end":{"line":23,"column":58}},"13":{"start":{"line":24,"column":2},"end":{"line":24,"column":45}},"14":{"start":{"line":25,"column":2},"end":{"line":25,"column":38}},"15":{"start":{"line":26,"column":2},"end":{"line":26,"column":42}},"16":{"start":{"line":27,"column":2},"end":{"line":27,"column":39}},"17":{"start":{"line":28,"column":2},"end":{"line":28,"column":39}},"18":{"start":{"line":30,"column":2},"end":{"line":30,"column":41}},"19":{"start":{"line":31,"column":2},"end":{"line":31,"column":80}},"20":{"start":{"line":33,"column":2},"end":{"line":33,"column":42}},"21":{"start":{"line":34,"column":2},"end":{"line":34,"column":59}},"22":{"start":{"line":37,"column":2},"end":{"line":37,"column":51}},"23":{"start":{"line":41,"column":0},"end":{"line":50,"column":2}},"24":{"start":{"line":42,"column":14},"end":{"line":42,"column":15}},"25":{"start":{"line":43,"column":11},"end":{"line":43,"column":43}},"26":{"start":{"line":44,"column":12},"end":{"line":44,"column":25}},"27":{"start":{"line":46,"column":2},"end":{"line":48,"column":3}},"28":{"start":{"line":47,"column":4},"end":{"line":47,"column":78}},"29":{"start":{"line":49,"column":2},"end":{"line":49,"column":23}},"30":{"start":{"line":53,"column":0},"end":{"line":66,"column":2}},"31":{"start":{"line":54,"column":29},"end":{"line":54,"column":31}},"32":{"start":{"line":56,"column":2},"end":{"line":63,"column":3}},"33":{"start":{"line":57,"column":16},"end":{"line":57,"column":58}},"34":{"start":{"line":60,"column":4},"end":{"line":62,"column":5}},"35":{"start":{"line":61,"column":6},"end":{"line":61,"column":18}},"36":{"start":{"line":65,"column":2},"end":{"line":65,"column":15}}},"fnMap":{"0":{"name":"Metadata","decl":{"start":{"line":12,"column":9},"end":{"line":12,"column":17}},"loc":{"start":{"line":12,"column":22},"end":{"line":38,"column":1}},"line":12},"1":{"name":"(anonymous_1)","decl":{"start":{"line":41,"column":31},"end":{"line":41,"column":32}},"loc":{"start":{"line":41,"column":44},"end":{"line":50,"column":1}},"line":41},"2":{"name":"(anonymous_2)","decl":{"start":{"line":53,"column":36},"end":{"line":53,"column":37}},"loc":{"start":{"line":53,"column":49},"end":{"line":66,"column":1}},"line":53}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":2},"end":{"line":19,"column":3}},"type":"if","locations":[{"start":{"line":17,"column":2},"end":{"line":19,"column":3}},{"start":{"line":17,"column":2},"end":{"line":19,"column":3}}],"line":17},"1":{"loc":{"start":{"line":18,"column":20},"end":{"line":18,"column":103}},"type":"cond-expr","locations":[{"start":{"line":18,"column":46},"end":{"line":18,"column":70}},{"start":{"line":18,"column":73},"end":{"line":18,"column":103}}],"line":18},"2":{"loc":{"start":{"line":46,"column":9},"end":{"line":46,"column":37}},"type":"binary-expr","locations":[{"start":{"line":46,"column":9},"end":{"line":46,"column":22}},{"start":{"line":46,"column":26},"end":{"line":46,"column":37}}],"line":46},"3":{"loc":{"start":{"line":47,"column":13},"end":{"line":47,"column":77}},"type":"cond-expr","locations":[{"start":{"line":47,"column":67},"end":{"line":47,"column":68}},{"start":{"line":47,"column":71},"end":{"line":47,"column":77}}],"line":47},"4":{"loc":{"start":{"line":60,"column":4},"end":{"line":62,"column":5}},"type":"if","locations":[{"start":{"line":60,"column":4},"end":{"line":62,"column":5}},{"start":{"line":60,"column":4},"end":{"line":62,"column":5}}],"line":60},"5":{"loc":{"start":{"line":60,"column":8},"end":{"line":60,"column":64}},"type":"binary-expr","locations":[{"start":{"line":60,"column":8},"end":{"line":60,"column":24}},{"start":{"line":60,"column":28},"end":{"line":60,"column":44}},{"start":{"line":60,"column":48},"end":{"line":60,"column":64}}],"line":60}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0},"f":{"0":0,"1":0,"2":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0,0]}},"/Users/dmitry/projects/node-maxmind/lib/reader.js":{"path":"/Users/dmitry/projects/node-maxmind/lib/reader.js","statementMap":{"0":{"start":{"line":3,"column":15},"end":{"line":3,"column":36}},"1":{"start":{"line":4,"column":14},"end":{"line":4,"column":34}},"2":{"start":{"line":5,"column":13},"end":{"line":5,"column":28}},"3":{"start":{"line":6,"column":12},"end":{"line":6,"column":30}},"4":{"start":{"line":8,"column":34},"end":{"line":8,"column":36}},"5":{"start":{"line":11,"column":0},"end":{"line":11,"column":24}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":20}},"7":{"start":{"line":15,"column":2},"end":{"line":15,"column":22}},"8":{"start":{"line":18,"column":0},"end":{"line":29,"column":2}},"9":{"start":{"line":19,"column":2},"end":{"line":19,"column":15}},"10":{"start":{"line":21,"column":2},"end":{"line":21,"column":40}},"11":{"start":{"line":22,"column":2},"end":{"line":26,"column":4}},"12":{"start":{"line":28,"column":2},"end":{"line":28,"column":51}},"13":{"start":{"line":31,"column":0},"end":{"line":46,"column":2}},"14":{"start":{"line":32,"column":2},"end":{"line":45,"column":3}},"15":{"start":{"line":34,"column":6},"end":{"line":34,"column":41}},"16":{"start":{"line":35,"column":6},"end":{"line":35,"column":43}},"17":{"start":{"line":36,"column":6},"end":{"line":36,"column":12}},"18":{"start":{"line":38,"column":6},"end":{"line":38,"column":41}},"19":{"start":{"line":39,"column":6},"end":{"line":39,"column":43}},"20":{"start":{"line":40,"column":6},"end":{"line":40,"column":12}},"21":{"start":{"line":42,"column":6},"end":{"line":42,"column":41}},"22":{"start":{"line":43,"column":6},"end":{"line":43,"column":43}},"23":{"start":{"line":44,"column":6},"end":{"line":44,"column":12}},"24":{"start":{"line":49,"column":0},"end":{"line":52,"column":2}},"25":{"start":{"line":50,"column":16},"end":{"line":50,"column":49}},"26":{"start":{"line":51,"column":2},"end":{"line":51,"column":59}},"27":{"start":{"line":55,"column":0},"end":{"line":96,"column":2}},"28":{"start":{"line":56,"column":19},"end":{"line":56,"column":42}},"29":{"start":{"line":57,"column":18},"end":{"line":57,"column":41}},"30":{"start":{"line":62,"column":19},"end":{"line":62,"column":92}},"31":{"start":{"line":71,"column":19},"end":{"line":71,"column":29}},"32":{"start":{"line":74,"column":2},"end":{"line":95,"column":3}},"33":{"start":{"line":75,"column":4},"end":{"line":75,"column":51}},"34":{"start":{"line":76,"column":4},"end":{"line":76,"column":53}},"35":{"start":{"line":78,"column":4},"end":{"line":80,"column":32}},"36":{"start":{"line":84,"column":4},"end":{"line":94,"column":5}},"37":{"start":{"line":85,"column":6},"end":{"line":85,"column":27}},"38":{"start":{"line":88,"column":11},"end":{"line":94,"column":5}},"39":{"start":{"line":89,"column":6},"end":{"line":89,"column":21}},"40":{"start":{"line":93,"column":6},"end":{"line":93,"column":18}},"41":{"start":{"line":99,"column":22},"end":{"line":105,"column":1}},"42":{"start":{"line":100,"column":2},"end":{"line":104,"column":4}},"43":{"start":{"line":107,"column":21},"end":{"line":113,"column":1}},"44":{"start":{"line":108,"column":2},"end":{"line":112,"column":4}},"45":{"start":{"line":116,"column":21},"end":{"line":123,"column":1}},"46":{"start":{"line":117,"column":2},"end":{"line":122,"column":4}},"47":{"start":{"line":125,"column":22},"end":{"line":132,"column":1}},"48":{"start":{"line":126,"column":2},"end":{"line":131,"column":4}},"49":{"start":{"line":134,"column":21},"end":{"line":136,"column":1}},"50":{"start":{"line":135,"column":2},"end":{"line":135,"column":44}},"51":{"start":{"line":138,"column":22},"end":{"line":140,"column":1}},"52":{"start":{"line":139,"column":2},"end":{"line":139,"column":48}},"53":{"start":{"line":143,"column":0},"end":{"line":153,"column":2}},"54":{"start":{"line":151,"column":17},"end":{"line":151,"column":81}},"55":{"start":{"line":152,"column":2},"end":{"line":152,"column":49}}},"fnMap":{"0":{"name":"Reader","decl":{"start":{"line":13,"column":9},"end":{"line":13,"column":15}},"loc":{"start":{"line":13,"column":26},"end":{"line":16,"column":1}},"line":13},"1":{"name":"(anonymous_1)","decl":{"start":{"line":18,"column":24},"end":{"line":18,"column":25}},"loc":{"start":{"line":18,"column":43},"end":{"line":29,"column":1}},"line":18},"2":{"name":"(anonymous_2)","decl":{"start":{"line":31,"column":37},"end":{"line":31,"column":38}},"loc":{"start":{"line":31,"column":58},"end":{"line":46,"column":1}},"line":31},"3":{"name":"(anonymous_3)","decl":{"start":{"line":49,"column":23},"end":{"line":49,"column":24}},"loc":{"start":{"line":49,"column":43},"end":{"line":52,"column":1}},"line":49},"4":{"name":"(anonymous_4)","decl":{"start":{"line":55,"column":37},"end":{"line":55,"column":38}},"loc":{"start":{"line":55,"column":57},"end":{"line":96,"column":1}},"line":55},"5":{"name":"(anonymous_5)","decl":{"start":{"line":99,"column":22},"end":{"line":99,"column":23}},"loc":{"start":{"line":99,"column":39},"end":{"line":105,"column":1}},"line":99},"6":{"name":"(anonymous_6)","decl":{"start":{"line":107,"column":21},"end":{"line":107,"column":22}},"loc":{"start":{"line":107,"column":38},"end":{"line":113,"column":1}},"line":107},"7":{"name":"(anonymous_7)","decl":{"start":{"line":116,"column":21},"end":{"line":116,"column":22}},"loc":{"start":{"line":116,"column":38},"end":{"line":123,"column":1}},"line":116},"8":{"name":"(anonymous_8)","decl":{"start":{"line":125,"column":22},"end":{"line":125,"column":23}},"loc":{"start":{"line":125,"column":39},"end":{"line":132,"column":1}},"line":125},"9":{"name":"(anonymous_9)","decl":{"start":{"line":134,"column":21},"end":{"line":134,"column":22}},"loc":{"start":{"line":134,"column":38},"end":{"line":136,"column":1}},"line":134},"10":{"name":"(anonymous_10)","decl":{"start":{"line":138,"column":22},"end":{"line":138,"column":23}},"loc":{"start":{"line":138,"column":39},"end":{"line":140,"column":1}},"line":138},"11":{"name":"(anonymous_11)","decl":{"start":{"line":143,"column":38},"end":{"line":143,"column":39}},"loc":{"start":{"line":143,"column":56},"end":{"line":153,"column":1}},"line":143}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":9},"end":{"line":14,"column":19}},"type":"binary-expr","locations":[{"start":{"line":14,"column":9},"end":{"line":14,"column":13}},{"start":{"line":14,"column":17},"end":{"line":14,"column":19}}],"line":14},"1":{"loc":{"start":{"line":32,"column":2},"end":{"line":45,"column":3}},"type":"switch","locations":[{"start":{"line":33,"column":4},"end":{"line":36,"column":12}},{"start":{"line":37,"column":4},"end":{"line":40,"column":12}},{"start":{"line":41,"column":4},"end":{"line":44,"column":12}}],"line":32},"2":{"loc":{"start":{"line":51,"column":9},"end":{"line":51,"column":58}},"type":"cond-expr","locations":[{"start":{"line":51,"column":19},"end":{"line":51,"column":51}},{"start":{"line":51,"column":54},"end":{"line":51,"column":58}}],"line":51},"3":{"loc":{"start":{"line":62,"column":19},"end":{"line":62,"column":92}},"type":"cond-expr","locations":[{"start":{"line":62,"column":80},"end":{"line":62,"column":88}},{"start":{"line":62,"column":91},"end":{"line":62,"column":92}}],"line":62},"4":{"loc":{"start":{"line":62,"column":20},"end":{"line":62,"column":76}},"type":"binary-expr","locations":[{"start":{"line":62,"column":20},"end":{"line":62,"column":49}},{"start":{"line":62,"column":53},"end":{"line":62,"column":76}}],"line":62},"5":{"loc":{"start":{"line":78,"column":14},"end":{"line":80,"column":31}},"type":"cond-expr","locations":[{"start":{"line":79,"column":6},"end":{"line":79,"column":32}},{"start":{"line":80,"column":6},"end":{"line":80,"column":31}}],"line":78},"6":{"loc":{"start":{"line":84,"column":4},"end":{"line":94,"column":5}},"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":94,"column":5}},{"start":{"line":84,"column":4},"end":{"line":94,"column":5}}],"line":84},"7":{"loc":{"start":{"line":88,"column":11},"end":{"line":94,"column":5}},"type":"if","locations":[{"start":{"line":88,"column":11},"end":{"line":94,"column":5}},{"start":{"line":88,"column":11},"end":{"line":94,"column":5}}],"line":88}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0},"b":{"0":[0,0],"1":[0,0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0]}},"/Users/dmitry/projects/node-maxmind/lib/utils.js":{"path":"/Users/dmitry/projects/node-maxmind/lib/utils.js","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":5,"column":2}},"1":{"start":{"line":4,"column":2},"end":{"line":4,"column":22}},"2":{"start":{"line":7,"column":0},"end":{"line":9,"column":2}},"3":{"start":{"line":8,"column":2},"end":{"line":8,"column":34}},"4":{"start":{"line":11,"column":0},"end":{"line":13,"column":2}},"5":{"start":{"line":12,"column":2},"end":{"line":12,"column":46}},"6":{"start":{"line":15,"column":0},"end":{"line":19,"column":72}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":18},"end":{"line":3,"column":19}},"loc":{"start":{"line":3,"column":33},"end":{"line":5,"column":1}},"line":3},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":18},"end":{"line":7,"column":19}},"loc":{"start":{"line":7,"column":36},"end":{"line":9,"column":1}},"line":7},"2":{"name":"(anonymous_2)","decl":{"start":{"line":11,"column":18},"end":{"line":11,"column":19}},"loc":{"start":{"line":11,"column":39},"end":{"line":13,"column":1}},"line":11}},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"f":{"0":0,"1":0,"2":0},"b":{}}}