@svta/cml-throughput 0.19.0 → 0.21.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.
package/README.md ADDED
@@ -0,0 +1,33 @@
1
+ # @svta/cml-throughput
2
+
3
+ Throughput estimation functionality.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm i @svta/cml-throughput
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```typescript
14
+ import { EwmaEstimator } from "@svta/cml-throughput/EwmaEstimator";
15
+
16
+ const estimator = new EwmaEstimator({ fastHalfLife: 2, slowHalfLife: 5 });
17
+
18
+ // 500 bps
19
+ estimator.sample({
20
+ startTime: 0,
21
+ encodedBodySize: 125,
22
+ duration: 2000,
23
+ });
24
+
25
+ // 250 bps
26
+ estimator.sample({
27
+ startTime: 2000,
28
+ encodedBodySize: 125,
29
+ duration: 4000,
30
+ });
31
+
32
+ assert(estimator.getEstimate() === 412);
33
+ ```
package/dist/index.d.ts CHANGED
@@ -1,13 +1,129 @@
1
+ import { ResourceTiming } from "@svta/cml-utils";
2
+
3
+ //#region src/ThroughputEstimator.d.ts
4
+
1
5
  /**
2
- * Throughput estimation functionality.
3
- *
4
- * @packageDocumentation
5
- */
6
- export * from './ArithmeticMeanEstimator.js';
7
- export * from './Ewma.js';
8
- export * from './EwmaEstimator.js';
9
- export type * from './EwmaEstimatorOptions.js';
10
- export * from './HarmonicMeanEstimator.js';
11
- export type * from './ThroughputEstimator.js';
12
- export * from './ZlemaEstimator.js';
6
+ * Throughput Estimator.
7
+ *
8
+ *
9
+ * @beta
10
+ */
11
+ type ThroughputEstimator = {
12
+ /**
13
+ * Adds a sample to the throughput estimator
14
+ *
15
+ * @param sample - The timing sample to add
16
+ */
17
+ sample(sample: ResourceTiming): void;
18
+ /**
19
+ * Returns the current estimate of the throughput (in bytes per second)
20
+ *
21
+ * @returns The current estimate of the throughput
22
+ */
23
+ getEstimate(): number;
24
+ };
25
+ //#endregion
26
+ //#region src/ArithmeticMeanEstimator.d.ts
27
+ /**
28
+ * Arithmetic Mean throughput estimator
29
+ *
30
+ *
31
+ * @beta
32
+ */
33
+ declare class ArithmeticMeanEstimator implements ThroughputEstimator {
34
+ private samples;
35
+ sample(sample: ResourceTiming): void;
36
+ getEstimate(): number;
37
+ }
38
+ //#endregion
39
+ //#region src/Ewma.d.ts
40
+ /**
41
+ * Exponential Weighted Moving Average (EWMA)
42
+ *
43
+ *
44
+ * @beta
45
+ */
46
+ declare class Ewma {
47
+ private alpha;
48
+ private estimate;
49
+ private totalDuration;
50
+ constructor(alpha: number);
51
+ /**
52
+ * Samples the value of the resource and updates the estimate.
53
+ */
54
+ sample(weight: number, value: number): void;
55
+ /**
56
+ * Returns the estimate of the value (in units, as `value` during sampling)
57
+ *
58
+ * For example, if the value is throughput (in bits per seconds), the estimate
59
+ * will also be in bits per seconds.
60
+ */
61
+ getEstimate(): number;
62
+ /**
63
+ * Returns the total duration of the resource (in units, as `weight` during sampling)
64
+ */
65
+ getTotalDuration(): number;
66
+ }
67
+ //#endregion
68
+ //#region src/EwmaEstimatorOptions.d.ts
69
+ /**
70
+ * Exponential Weighted Moving Average (EWMA) Estimator Options
71
+ *
72
+ *
73
+ * @beta
74
+ */
75
+ type EwmaEstimatorOptions = {
76
+ defaultEstimate?: number;
77
+ minTotalBytes?: number;
78
+ minBodySize?: number;
79
+ fastHalfLife: number;
80
+ slowHalfLife: number;
81
+ };
82
+ //#endregion
83
+ //#region src/EwmaEstimator.d.ts
84
+ /**
85
+ * Exponential Weighted Moving Average (EWMA) throughput estimator based on 2 half-lives
86
+ *
87
+ *
88
+ * @beta
89
+ */
90
+ declare class EwmaEstimator implements ThroughputEstimator {
91
+ private defaultEstimate;
92
+ private minTotalBytes;
93
+ private minBodySize;
94
+ private totalBytes;
95
+ private fastEwma;
96
+ private slowEwma;
97
+ constructor(options: EwmaEstimatorOptions);
98
+ sample(sample: ResourceTiming): void;
99
+ getEstimate(): number;
100
+ }
101
+ //#endregion
102
+ //#region src/HarmonicMeanEstimator.d.ts
103
+ /**
104
+ * Harmonic Mean throughput estimator
105
+ *
106
+ *
107
+ * @beta
108
+ */
109
+ declare class HarmonicMeanEstimator implements ThroughputEstimator {
110
+ private samples;
111
+ sample(sample: ResourceTiming): void;
112
+ getEstimate(): number;
113
+ }
114
+ //#endregion
115
+ //#region src/ZlemaEstimator.d.ts
116
+ /**
117
+ * Zero-Lag Exponential Moving Average (ZLEMA) throughput estimator
118
+ *
119
+ *
120
+ * @beta
121
+ */
122
+ declare class ZlemaEstimator implements ThroughputEstimator {
123
+ private samples;
124
+ sample(sample: ResourceTiming): void;
125
+ getEstimate(): number;
126
+ }
127
+ //#endregion
128
+ export { ArithmeticMeanEstimator, Ewma, EwmaEstimator, EwmaEstimatorOptions, HarmonicMeanEstimator, ThroughputEstimator, ZlemaEstimator };
13
129
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,8BAA8B,CAAC;AAC7C,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,mBAAmB,2BAA2B,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,mBAAmB,0BAA0B,CAAC;AAC9C,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/ThroughputEstimator.ts","../src/ArithmeticMeanEstimator.ts","../src/Ewma.ts","../src/EwmaEstimatorOptions.ts","../src/EwmaEstimator.ts","../src/HarmonicMeanEstimator.ts","../src/ZlemaEstimator.ts"],"sourcesContent":[],"mappings":";;;;;;AAQA;;;;ACEa,KDFD,mBAAA,GCEC;;;;ACJb;;iBFQgB;;AGRhB;;;;ECMA,WAAa,EAAA,EAAA,MAAA;CAQgB;;;;AJZ7B;;;;ACEA;cAAa,uBAAA,YAAmC;;iBAGzB;ECPvB,WAAa,CAAA,CAAA,EAAA,MAAA;;;;;;;AFEb;;;cEFa,IAAA;EDIb,QAAa,KAAA;;;;ECJb;;;;ECAA;;;;ACMA;;EAsBuB,WAAA,CAAA,CAAA,EAAA,MAAA;EAtBe;;;;;;;;;;AJJtC;;;KGFY,oBAAA;EFIZ,eAAa,CAAA,EAAA,MAAA;;;;ECJb,YAAa,EAAA,MAAA;;;;AFEb;;;;ACEA;;cGEa,aAAA,YAAyB;;EFNtC,QAAa,aAAA;;;;ECAb,QAAY,QAAA;uBCciB;iBAcN;;AAtBvB;;;;AJJA;;;;ACEA;cIAa,qBAAA,YAAiC;;iBAGvB;EHPvB,WAAa,CAAA,CAAA,EAAA,MAAA;;;;;AFEb;;;;ACEA;cKAa,cAAA,YAA0B;;iBAGhB;EJPvB,WAAa,CAAA,CAAA,EAAA,MAAA"}
package/dist/index.js CHANGED
@@ -1,11 +1,153 @@
1
+ import { getBandwidthBps } from "@svta/cml-utils";
2
+
3
+ //#region src/ArithmeticMeanEstimator.ts
1
4
  /**
2
- * Throughput estimation functionality.
3
- *
4
- * @packageDocumentation
5
- */
6
- export * from './ArithmeticMeanEstimator.js';
7
- export * from './Ewma.js';
8
- export * from './EwmaEstimator.js';
9
- export * from './HarmonicMeanEstimator.js';
10
- export * from './ZlemaEstimator.js';
5
+ * Arithmetic Mean throughput estimator
6
+ *
7
+ *
8
+ * @beta
9
+ */
10
+ var ArithmeticMeanEstimator = class {
11
+ constructor() {
12
+ this.samples = [];
13
+ }
14
+ sample(sample) {
15
+ this.samples.push(sample);
16
+ }
17
+ getEstimate() {
18
+ let value = 0;
19
+ for (const sample of this.samples) value += getBandwidthBps(sample);
20
+ return value / this.samples.length;
21
+ }
22
+ };
23
+
24
+ //#endregion
25
+ //#region src/Ewma.ts
26
+ /**
27
+ * Exponential Weighted Moving Average (EWMA)
28
+ *
29
+ *
30
+ * @beta
31
+ */
32
+ var Ewma = class {
33
+ constructor(alpha) {
34
+ this.alpha = alpha;
35
+ this.estimate = 0;
36
+ this.totalDuration = 0;
37
+ }
38
+ /**
39
+ * Samples the value of the resource and updates the estimate.
40
+ */
41
+ sample(weight, value) {
42
+ const adjustedAlpha = Math.pow(this.alpha, weight);
43
+ this.estimate = adjustedAlpha * value + (1 - adjustedAlpha) * this.estimate;
44
+ this.totalDuration += weight;
45
+ }
46
+ /**
47
+ * Returns the estimate of the value (in units, as `value` during sampling)
48
+ *
49
+ * For example, if the value is throughput (in bits per seconds), the estimate
50
+ * will also be in bits per seconds.
51
+ */
52
+ getEstimate() {
53
+ const zeroFactor = 1 - Math.pow(this.alpha, this.totalDuration);
54
+ return this.estimate / zeroFactor;
55
+ }
56
+ /**
57
+ * Returns the total duration of the resource (in units, as `weight` during sampling)
58
+ */
59
+ getTotalDuration() {
60
+ return this.totalDuration;
61
+ }
62
+ };
63
+
64
+ //#endregion
65
+ //#region src/EwmaEstimator.ts
66
+ /**
67
+ * Exponential Weighted Moving Average (EWMA) throughput estimator based on 2 half-lives
68
+ *
69
+ *
70
+ * @beta
71
+ */
72
+ var EwmaEstimator = class {
73
+ constructor(options) {
74
+ this.totalBytes = 0;
75
+ this.minTotalBytes = options.minTotalBytes || 0;
76
+ this.minBodySize = options.minBodySize || 0;
77
+ this.defaultEstimate = options.defaultEstimate ?? NaN;
78
+ this.slowEwma = new Ewma(options.slowHalfLife);
79
+ this.fastEwma = new Ewma(options.fastHalfLife);
80
+ if (!isNaN(this.defaultEstimate)) {
81
+ this.fastEwma.sample(1, this.defaultEstimate);
82
+ this.slowEwma.sample(1, this.defaultEstimate);
83
+ }
84
+ }
85
+ sample(sample) {
86
+ const { encodedBodySize, duration } = sample;
87
+ if (!Number.isFinite(encodedBodySize) || !Number.isFinite(duration)) return;
88
+ if (encodedBodySize < this.minBodySize) return;
89
+ const durationSeconds = sample.duration / 1e3;
90
+ const bandwidthBps = getBandwidthBps(sample);
91
+ this.totalBytes += encodedBodySize;
92
+ this.slowEwma.sample(durationSeconds, bandwidthBps);
93
+ this.fastEwma.sample(durationSeconds, bandwidthBps);
94
+ }
95
+ getEstimate() {
96
+ if (this.totalBytes < this.minTotalBytes) return this.defaultEstimate;
97
+ return Math.floor(Math.min(this.fastEwma.getEstimate(), this.slowEwma.getEstimate()));
98
+ }
99
+ };
100
+
101
+ //#endregion
102
+ //#region src/HarmonicMeanEstimator.ts
103
+ /**
104
+ * Harmonic Mean throughput estimator
105
+ *
106
+ *
107
+ * @beta
108
+ */
109
+ var HarmonicMeanEstimator = class {
110
+ constructor() {
111
+ this.samples = [];
112
+ }
113
+ sample(sample) {
114
+ this.samples.push(sample);
115
+ }
116
+ getEstimate() {
117
+ let value = 0;
118
+ for (const sample of this.samples) value += 1 / getBandwidthBps(sample);
119
+ return this.samples.length / value;
120
+ }
121
+ };
122
+
123
+ //#endregion
124
+ //#region src/ZlemaEstimator.ts
125
+ /**
126
+ * Zero-Lag Exponential Moving Average (ZLEMA) throughput estimator
127
+ *
128
+ *
129
+ * @beta
130
+ */
131
+ var ZlemaEstimator = class {
132
+ constructor() {
133
+ this.samples = [];
134
+ }
135
+ sample(sample) {
136
+ this.samples.push(sample);
137
+ }
138
+ getEstimate() {
139
+ if (this.samples.length === 0) return NaN;
140
+ const alpha = 2 / (this.samples.length + 1);
141
+ let ema, zlema;
142
+ ema = zlema = getBandwidthBps(this.samples[this.samples.length - 1]);
143
+ for (const sample of this.samples) {
144
+ ema = alpha * getBandwidthBps(sample) + (1 - alpha) * ema;
145
+ zlema = alpha * ema + (1 - alpha) * zlema;
146
+ }
147
+ return zlema;
148
+ }
149
+ };
150
+
151
+ //#endregion
152
+ export { ArithmeticMeanEstimator, Ewma, EwmaEstimator, HarmonicMeanEstimator, ZlemaEstimator };
11
153
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,8BAA8B,CAAC;AAC7C,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AAEnC,cAAc,4BAA4B,CAAC;AAE3C,cAAc,qBAAqB,CAAC","sourcesContent":["/**\n * Throughput estimation functionality.\n *\n * @packageDocumentation\n */\nexport * from './ArithmeticMeanEstimator.js';\nexport * from './Ewma.js';\nexport * from './EwmaEstimator.js';\nexport type * from './EwmaEstimatorOptions.js';\nexport * from './HarmonicMeanEstimator.js';\nexport type * from './ThroughputEstimator.js';\nexport * from './ZlemaEstimator.js';\n"]}
1
+ {"version":3,"file":"index.js","names":["value: number","value: number","ema: number","zlema: number"],"sources":["../src/ArithmeticMeanEstimator.ts","../src/Ewma.ts","../src/EwmaEstimator.ts","../src/HarmonicMeanEstimator.ts","../src/ZlemaEstimator.ts"],"sourcesContent":["import type { ResourceTiming } from '@svta/cml-utils'\nimport { getBandwidthBps } from '@svta/cml-utils'\nimport type { ThroughputEstimator } from './ThroughputEstimator.ts'\n\n/**\n * Arithmetic Mean throughput estimator\n *\n *\n * @beta\n */\nexport class ArithmeticMeanEstimator implements ThroughputEstimator {\n\tprivate samples: ResourceTiming[] = []\n\n\tpublic sample(sample: ResourceTiming): void {\n\t\tthis.samples.push(sample)\n\t}\n\n\tpublic getEstimate(): number {\n\t\tlet value: number = 0\n\n\t\tfor (const sample of this.samples) {\n\t\t\tvalue += getBandwidthBps(sample)\n\t\t}\n\n\t\treturn value / this.samples.length\n\t}\n}\n","/**\n * Exponential Weighted Moving Average (EWMA)\n *\n *\n * @beta\n */\nexport class Ewma {\n\t// The smoothing factor for the EWMA\n\tprivate alpha: number\n\t// The current estimate of the throughput (in bits per second)\n\tprivate estimate: number\n\t// The total duration of the resource (in seconds)\n\tprivate totalDuration: number\n\n\tconstructor(alpha: number) {\n\t\tthis.alpha = alpha\n\t\tthis.estimate = 0\n\t\tthis.totalDuration = 0\n\t}\n\n\t/**\n\t * Samples the value of the resource and updates the estimate.\n\t */\n\tpublic sample(weight: number, value: number): void {\n\t\tconst adjustedAlpha = Math.pow(this.alpha, weight)\n\t\tthis.estimate = adjustedAlpha * value + (1 - adjustedAlpha) * this.estimate\n\t\tthis.totalDuration += weight\n\t}\n\n\t/**\n\t * Returns the estimate of the value (in units, as `value` during sampling)\n\t *\n\t * For example, if the value is throughput (in bits per seconds), the estimate\n\t * will also be in bits per seconds.\n\t */\n\tpublic getEstimate(): number {\n\t\tconst zeroFactor = 1 - Math.pow(this.alpha, this.totalDuration)\n\t\treturn this.estimate / zeroFactor\n\t}\n\n\t/**\n\t * Returns the total duration of the resource (in units, as `weight` during sampling)\n\t */\n\tpublic getTotalDuration(): number {\n\t\treturn this.totalDuration\n\t}\n}\n","import type { ResourceTiming } from '@svta/cml-utils'\nimport { getBandwidthBps } from '@svta/cml-utils'\nimport { Ewma } from './Ewma.ts'\nimport type { EwmaEstimatorOptions } from './EwmaEstimatorOptions.ts'\nimport type { ThroughputEstimator } from './ThroughputEstimator.ts'\n\n/**\n * Exponential Weighted Moving Average (EWMA) throughput estimator based on 2 half-lives\n *\n *\n * @beta\n */\nexport class EwmaEstimator implements ThroughputEstimator {\n\tprivate defaultEstimate: number\n\tprivate minTotalBytes: number\n\tprivate minBodySize: number\n\tprivate totalBytes: number = 0\n\tprivate fastEwma: Ewma\n\tprivate slowEwma: Ewma\n\n\tpublic constructor(options: EwmaEstimatorOptions) {\n\t\tthis.minTotalBytes = options.minTotalBytes || 0\n\t\tthis.minBodySize = options.minBodySize || 0\n\t\tthis.defaultEstimate = options.defaultEstimate ?? NaN\n\n\t\tthis.slowEwma = new Ewma(options.slowHalfLife)\n\t\tthis.fastEwma = new Ewma(options.fastHalfLife)\n\n\t\tif (!isNaN(this.defaultEstimate)) {\n\t\t\tthis.fastEwma.sample(1, this.defaultEstimate)\n\t\t\tthis.slowEwma.sample(1, this.defaultEstimate)\n\t\t}\n\t}\n\n\tpublic sample(sample: ResourceTiming): void {\n\t\tconst { encodedBodySize, duration } = sample\n\n\t\tif (!Number.isFinite(encodedBodySize) || !Number.isFinite(duration)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (encodedBodySize < this.minBodySize) {\n\t\t\treturn\n\t\t}\n\n\t\tconst durationSeconds = sample.duration / 1000\n\t\tconst bandwidthBps = getBandwidthBps(sample)\n\t\tthis.totalBytes += encodedBodySize\n\n\t\tthis.slowEwma.sample(durationSeconds, bandwidthBps)\n\t\tthis.fastEwma.sample(durationSeconds, bandwidthBps)\n\t}\n\n\tpublic getEstimate(): number {\n\t\tif (this.totalBytes < this.minTotalBytes) {\n\t\t\treturn this.defaultEstimate\n\t\t}\n\n\t\treturn Math.floor(Math.min(this.fastEwma.getEstimate(), this.slowEwma.getEstimate()))\n\t}\n}\n","import type { ResourceTiming } from '@svta/cml-utils'\nimport { getBandwidthBps } from '@svta/cml-utils'\nimport type { ThroughputEstimator } from './ThroughputEstimator.ts'\n\n/**\n * Harmonic Mean throughput estimator\n *\n *\n * @beta\n */\nexport class HarmonicMeanEstimator implements ThroughputEstimator {\n\tprivate samples: ResourceTiming[] = []\n\n\tpublic sample(sample: ResourceTiming): void {\n\t\tthis.samples.push(sample)\n\t}\n\n\tpublic getEstimate(): number {\n\t\tlet value: number = 0\n\n\t\tfor (const sample of this.samples) {\n\t\t\tvalue += 1 / getBandwidthBps(sample)\n\t\t}\n\n\t\treturn this.samples.length / value\n\t}\n}\n","import type { ResourceTiming } from '@svta/cml-utils'\nimport { getBandwidthBps } from '@svta/cml-utils'\nimport type { ThroughputEstimator } from './ThroughputEstimator.ts'\n\n/**\n * Zero-Lag Exponential Moving Average (ZLEMA) throughput estimator\n *\n *\n * @beta\n */\nexport class ZlemaEstimator implements ThroughputEstimator {\n\tprivate samples: ResourceTiming[] = []\n\n\tpublic sample(sample: ResourceTiming): void {\n\t\tthis.samples.push(sample)\n\t}\n\n\tpublic getEstimate(): number {\n\t\tif (this.samples.length === 0) {\n\t\t\treturn NaN\n\t\t}\n\n\t\tconst alpha = 2 / (this.samples.length + 1)\n\n\t\tlet ema: number, zlema: number\n\n\t\tema = zlema = getBandwidthBps(this.samples[this.samples.length - 1])\n\n\t\tfor (const sample of this.samples) {\n\t\t\tema = alpha * getBandwidthBps(sample) + (1 - alpha) * ema\n\t\t\tzlema = alpha * ema + (1 - alpha) * zlema\n\t\t}\n\n\t\treturn zlema\n\t}\n}\n"],"mappings":";;;;;;;;;AAUA,IAAa,0BAAb,MAAoE;;iBAC/B,EAAE;;CAEtC,AAAO,OAAO,QAA8B;AAC3C,OAAK,QAAQ,KAAK,OAAO;;CAG1B,AAAO,cAAsB;EAC5B,IAAIA,QAAgB;AAEpB,OAAK,MAAM,UAAU,KAAK,QACzB,UAAS,gBAAgB,OAAO;AAGjC,SAAO,QAAQ,KAAK,QAAQ;;;;;;;;;;;;AClB9B,IAAa,OAAb,MAAkB;CAQjB,YAAY,OAAe;AAC1B,OAAK,QAAQ;AACb,OAAK,WAAW;AAChB,OAAK,gBAAgB;;;;;CAMtB,AAAO,OAAO,QAAgB,OAAqB;EAClD,MAAM,gBAAgB,KAAK,IAAI,KAAK,OAAO,OAAO;AAClD,OAAK,WAAW,gBAAgB,SAAS,IAAI,iBAAiB,KAAK;AACnE,OAAK,iBAAiB;;;;;;;;CASvB,AAAO,cAAsB;EAC5B,MAAM,aAAa,IAAI,KAAK,IAAI,KAAK,OAAO,KAAK,cAAc;AAC/D,SAAO,KAAK,WAAW;;;;;CAMxB,AAAO,mBAA2B;AACjC,SAAO,KAAK;;;;;;;;;;;;AChCd,IAAa,gBAAb,MAA0D;CAQzD,AAAO,YAAY,SAA+B;oBAJrB;AAK5B,OAAK,gBAAgB,QAAQ,iBAAiB;AAC9C,OAAK,cAAc,QAAQ,eAAe;AAC1C,OAAK,kBAAkB,QAAQ,mBAAmB;AAElD,OAAK,WAAW,IAAI,KAAK,QAAQ,aAAa;AAC9C,OAAK,WAAW,IAAI,KAAK,QAAQ,aAAa;AAE9C,MAAI,CAAC,MAAM,KAAK,gBAAgB,EAAE;AACjC,QAAK,SAAS,OAAO,GAAG,KAAK,gBAAgB;AAC7C,QAAK,SAAS,OAAO,GAAG,KAAK,gBAAgB;;;CAI/C,AAAO,OAAO,QAA8B;EAC3C,MAAM,EAAE,iBAAiB,aAAa;AAEtC,MAAI,CAAC,OAAO,SAAS,gBAAgB,IAAI,CAAC,OAAO,SAAS,SAAS,CAClE;AAGD,MAAI,kBAAkB,KAAK,YAC1B;EAGD,MAAM,kBAAkB,OAAO,WAAW;EAC1C,MAAM,eAAe,gBAAgB,OAAO;AAC5C,OAAK,cAAc;AAEnB,OAAK,SAAS,OAAO,iBAAiB,aAAa;AACnD,OAAK,SAAS,OAAO,iBAAiB,aAAa;;CAGpD,AAAO,cAAsB;AAC5B,MAAI,KAAK,aAAa,KAAK,cAC1B,QAAO,KAAK;AAGb,SAAO,KAAK,MAAM,KAAK,IAAI,KAAK,SAAS,aAAa,EAAE,KAAK,SAAS,aAAa,CAAC,CAAC;;;;;;;;;;;;AChDvF,IAAa,wBAAb,MAAkE;;iBAC7B,EAAE;;CAEtC,AAAO,OAAO,QAA8B;AAC3C,OAAK,QAAQ,KAAK,OAAO;;CAG1B,AAAO,cAAsB;EAC5B,IAAIC,QAAgB;AAEpB,OAAK,MAAM,UAAU,KAAK,QACzB,UAAS,IAAI,gBAAgB,OAAO;AAGrC,SAAO,KAAK,QAAQ,SAAS;;;;;;;;;;;;ACd/B,IAAa,iBAAb,MAA2D;;iBACtB,EAAE;;CAEtC,AAAO,OAAO,QAA8B;AAC3C,OAAK,QAAQ,KAAK,OAAO;;CAG1B,AAAO,cAAsB;AAC5B,MAAI,KAAK,QAAQ,WAAW,EAC3B,QAAO;EAGR,MAAM,QAAQ,KAAK,KAAK,QAAQ,SAAS;EAEzC,IAAIC,KAAaC;AAEjB,QAAM,QAAQ,gBAAgB,KAAK,QAAQ,KAAK,QAAQ,SAAS,GAAG;AAEpE,OAAK,MAAM,UAAU,KAAK,SAAS;AAClC,SAAM,QAAQ,gBAAgB,OAAO,IAAI,IAAI,SAAS;AACtD,WAAQ,QAAQ,OAAO,IAAI,SAAS;;AAGrC,SAAO"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@svta/cml-throughput",
3
- "version": "0.19.0",
3
+ "version": "0.21.0",
4
4
  "description": "Throughput estimation functionality",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
- "homepage": "https://github.com/streaming-video-technology-alliance/common-media-library",
7
+ "homepage": "https://github.com/streaming-video-technology-alliance/common-media-library/tree/main/libs/throughput",
8
8
  "authors": "Casey Occhialini <1508707+littlespex@users.noreply.github.com>",
9
9
  "repository": {
10
10
  "type": "git",
@@ -28,23 +28,6 @@
28
28
  "types": "./dist/index.d.ts",
29
29
  "import": "./dist/index.js",
30
30
  "default": "./dist/index.js"
31
- },
32
- "./*.js": {
33
- "import": "./dist/*.js",
34
- "default": "./dist/*.js"
35
- },
36
- "./*": {
37
- "types": "./dist/*.d.ts",
38
- "import": "./dist/*.js",
39
- "default": "./dist/*.js"
40
- }
41
- },
42
- "typesVersions": {
43
- "*": {
44
- "*": [
45
- "dist/*",
46
- "dist/cjs/*"
47
- ]
48
31
  }
49
32
  },
50
33
  "keywords": [
@@ -54,10 +37,8 @@
54
37
  "bandwidth"
55
38
  ],
56
39
  "scripts": {
57
- "build": "tsc",
58
- "postbuild": "api-extractor run --local",
59
- "test": "node --no-warnings --test **/*.test.ts",
60
- "prepublishOnly": "npm run build"
40
+ "build": "node ../../scripts/build.ts",
41
+ "test": "node ../../scripts/test.ts"
61
42
  },
62
43
  "engines": {
63
44
  "node": ">=20"
@@ -1,14 +0,0 @@
1
- import type { ResourceTiming } from '@svta/cml-utils/ResourceTiming.js';
2
- import type { ThroughputEstimator } from './ThroughputEstimator.js';
3
- /**
4
- * Arithmetic Mean throughput estimator
5
- *
6
- *
7
- * @beta
8
- */
9
- export declare class ArithmeticMeanEstimator implements ThroughputEstimator {
10
- private samples;
11
- sample(sample: ResourceTiming): void;
12
- getEstimate(): number;
13
- }
14
- //# sourceMappingURL=ArithmeticMeanEstimator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ArithmeticMeanEstimator.d.ts","sourceRoot":"","sources":["../src/ArithmeticMeanEstimator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IAClE,OAAO,CAAC,OAAO,CAAwB;IAEhC,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAIpC,WAAW,IAAI,MAAM;CAS5B"}
@@ -1,23 +0,0 @@
1
- import { getBandwidthBps } from '@svta/cml-utils/getBandwidthBps.js';
2
- /**
3
- * Arithmetic Mean throughput estimator
4
- *
5
- *
6
- * @beta
7
- */
8
- export class ArithmeticMeanEstimator {
9
- constructor() {
10
- this.samples = [];
11
- }
12
- sample(sample) {
13
- this.samples.push(sample);
14
- }
15
- getEstimate() {
16
- let value = 0;
17
- for (let i = 0; i < this.samples.length; i++) {
18
- value += getBandwidthBps(this.samples[i]);
19
- }
20
- return value / this.samples.length;
21
- }
22
- }
23
- //# sourceMappingURL=ArithmeticMeanEstimator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ArithmeticMeanEstimator.js","sourceRoot":"","sources":["../src/ArithmeticMeanEstimator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAIrE;;;;;GAKG;AACH,MAAM,OAAO,uBAAuB;IAApC;QACS,YAAO,GAAqB,EAAE,CAAC;IAexC,CAAC;IAbO,MAAM,CAAC,MAAsB;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAEM,WAAW;QACjB,IAAI,KAAK,GAAW,CAAC,CAAC;QAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,KAAK,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACpC,CAAC;CACD","sourcesContent":["import { getBandwidthBps } from '@svta/cml-utils/getBandwidthBps.js';\nimport type { ResourceTiming } from '@svta/cml-utils/ResourceTiming.js';\nimport type { ThroughputEstimator } from './ThroughputEstimator.js';\n\n/**\n * Arithmetic Mean throughput estimator\n *\n *\n * @beta\n */\nexport class ArithmeticMeanEstimator implements ThroughputEstimator {\n\tprivate samples: ResourceTiming[] = [];\n\n\tpublic sample(sample: ResourceTiming): void {\n\t\tthis.samples.push(sample);\n\t}\n\n\tpublic getEstimate(): number {\n\t\tlet value: number = 0;\n\n\t\tfor (let i = 0; i < this.samples.length; i++) {\n\t\t\tvalue += getBandwidthBps(this.samples[i]);\n\t\t}\n\n\t\treturn value / this.samples.length;\n\t}\n}\n"]}
package/dist/Ewma.d.ts DELETED
@@ -1,28 +0,0 @@
1
- /**
2
- * Exponential Weighted Moving Average (EWMA)
3
- *
4
- *
5
- * @beta
6
- */
7
- export declare class Ewma {
8
- private alpha;
9
- private estimate;
10
- private totalDuration;
11
- constructor(alpha: number);
12
- /**
13
- * Samples the value of the resource and updates the estimate.
14
- */
15
- sample(weight: number, value: number): void;
16
- /**
17
- * Returns the estimate of the value (in units, as `value` during sampling)
18
- *
19
- * For example, if the value is throughput (in bits per seconds), the estimate
20
- * will also be in bits per seconds.
21
- */
22
- getEstimate(): number;
23
- /**
24
- * Returns the total duration of the resource (in units, as `weight` during sampling)
25
- */
26
- getTotalDuration(): number;
27
- }
28
- //# sourceMappingURL=Ewma.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Ewma.d.ts","sourceRoot":"","sources":["../src/Ewma.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,IAAI;IAEhB,OAAO,CAAC,KAAK,CAAS;IAEtB,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,aAAa,CAAS;gBAElB,KAAK,EAAE,MAAM;IAMzB;;OAEG;IACI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMlD;;;;;OAKG;IACI,WAAW,IAAI,MAAM;IAK5B;;OAEG;IACI,gBAAgB,IAAI,MAAM;CAGjC"}
package/dist/Ewma.js DELETED
@@ -1,38 +0,0 @@
1
- /**
2
- * Exponential Weighted Moving Average (EWMA)
3
- *
4
- *
5
- * @beta
6
- */
7
- export class Ewma {
8
- constructor(alpha) {
9
- this.alpha = alpha;
10
- this.estimate = 0;
11
- this.totalDuration = 0;
12
- }
13
- /**
14
- * Samples the value of the resource and updates the estimate.
15
- */
16
- sample(weight, value) {
17
- const adjustedAlpha = Math.pow(this.alpha, weight);
18
- this.estimate = adjustedAlpha * value + (1 - adjustedAlpha) * this.estimate;
19
- this.totalDuration += weight;
20
- }
21
- /**
22
- * Returns the estimate of the value (in units, as `value` during sampling)
23
- *
24
- * For example, if the value is throughput (in bits per seconds), the estimate
25
- * will also be in bits per seconds.
26
- */
27
- getEstimate() {
28
- const zeroFactor = 1 - Math.pow(this.alpha, this.totalDuration);
29
- return this.estimate / zeroFactor;
30
- }
31
- /**
32
- * Returns the total duration of the resource (in units, as `weight` during sampling)
33
- */
34
- getTotalDuration() {
35
- return this.totalDuration;
36
- }
37
- }
38
- //# sourceMappingURL=Ewma.js.map
package/dist/Ewma.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Ewma.js","sourceRoot":"","sources":["../src/Ewma.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,IAAI;IAQhB,YAAY,KAAa;QACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,MAAc,EAAE,KAAa;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,aAAa,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC5E,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACI,WAAW;QACjB,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,gBAAgB;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;CACD","sourcesContent":["/**\n * Exponential Weighted Moving Average (EWMA)\n *\n *\n * @beta\n */\nexport class Ewma {\n\t// The smoothing factor for the EWMA\n\tprivate alpha: number;\n\t// The current estimate of the throughput (in bits per second)\n\tprivate estimate: number;\n\t// The total duration of the resource (in seconds)\n\tprivate totalDuration: number;\n\n\tconstructor(alpha: number) {\n\t\tthis.alpha = alpha;\n\t\tthis.estimate = 0;\n\t\tthis.totalDuration = 0;\n\t}\n\n\t/**\n\t * Samples the value of the resource and updates the estimate.\n\t */\n\tpublic sample(weight: number, value: number): void {\n\t\tconst adjustedAlpha = Math.pow(this.alpha, weight);\n\t\tthis.estimate = adjustedAlpha * value + (1 - adjustedAlpha) * this.estimate;\n\t\tthis.totalDuration += weight;\n\t}\n\n\t/**\n\t * Returns the estimate of the value (in units, as `value` during sampling)\n\t *\n\t * For example, if the value is throughput (in bits per seconds), the estimate\n\t * will also be in bits per seconds.\n\t */\n\tpublic getEstimate(): number {\n\t\tconst zeroFactor = 1 - Math.pow(this.alpha, this.totalDuration);\n\t\treturn this.estimate / zeroFactor;\n\t}\n\n\t/**\n\t * Returns the total duration of the resource (in units, as `weight` during sampling)\n\t */\n\tpublic getTotalDuration(): number {\n\t\treturn this.totalDuration;\n\t}\n}\n"]}
@@ -1,18 +0,0 @@
1
- import type { ResourceTiming } from '@svta/cml-utils/ResourceTiming.js';
2
- import type { EwmaEstimatorOptions } from './EwmaEstimatorOptions.js';
3
- import type { ThroughputEstimator } from './ThroughputEstimator.js';
4
- /**
5
- * Exponential Weighted Moving Average (EWMA) throughput estimator based on 2 half-lives
6
- *
7
- *
8
- * @beta
9
- */
10
- export declare class EwmaEstimator implements ThroughputEstimator {
11
- private fastEwma;
12
- private slowEwma;
13
- constructor(options: EwmaEstimatorOptions);
14
- sample(sample: ResourceTiming): void;
15
- getEstimate(): number;
16
- canEstimate(): boolean;
17
- }
18
- //# sourceMappingURL=EwmaEstimator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EwmaEstimator.d.ts","sourceRoot":"","sources":["../src/EwmaEstimator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGxE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE;;;;;GAKG;AACH,qBAAa,aAAc,YAAW,mBAAmB;IACxD,OAAO,CAAC,QAAQ,CAAO;IACvB,OAAO,CAAC,QAAQ,CAAO;gBAEJ,OAAO,EAAE,oBAAoB;IAKzC,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAcpC,WAAW,IAAI,MAAM;IAcrB,WAAW,IAAI,OAAO;CAM7B"}
@@ -1,45 +0,0 @@
1
- import { getBandwidthBps } from '@svta/cml-utils/getBandwidthBps.js';
2
- import { Ewma } from './Ewma.js';
3
- /**
4
- * Exponential Weighted Moving Average (EWMA) throughput estimator based on 2 half-lives
5
- *
6
- *
7
- * @beta
8
- */
9
- export class EwmaEstimator {
10
- constructor(options) {
11
- this.slowEwma = new Ewma(options.slowHalfLife);
12
- this.fastEwma = new Ewma(options.fastHalfLife);
13
- }
14
- sample(sample) {
15
- // TODO: shaka
16
- // 1. If `sample.encodedBodySize` is less than `this.minBytes_`, don't do anything
17
- // TODO: dash.js
18
- // 1. If `sample.encodedBodySize` is NaN or Infinity, don't do anything
19
- // TODO: hls.js
20
- // 1. If `durationSeconds` is less than `this.minDelayMs_`, make it `this.minDelayMs_` (default is 50ms)
21
- const durationSeconds = sample.duration / 1000;
22
- const bandwidthBps = getBandwidthBps(sample);
23
- this.slowEwma.sample(durationSeconds, bandwidthBps);
24
- this.fastEwma.sample(durationSeconds, bandwidthBps);
25
- }
26
- getEstimate() {
27
- // TODO: shaka
28
- // 1. Returns `defaultEstimate` for this.totalBytes < `options.minTotalBytes`
29
- // 1.1. Returns `options.defaultBandwidthEstimate`
30
- // 1.2. or `navigator.connection.downlink * 1e6` if available
31
- // TODO: dash.js
32
- // 1. Returns `NaN` for this.totalDuration <= 0
33
- // 2. `Math.max` for latency calculation
34
- // TODO: hls.js
35
- // 1. Returns `defaultEstimate` for this.totalDuration < `this.minDuration`
36
- // 1.1. Returns `config.abrEwmaDefaultEstimate` (default: 500 kbps)
37
- return Math.min(this.fastEwma.getEstimate(), this.slowEwma.getEstimate());
38
- }
39
- canEstimate() {
40
- // TODO: shaka, `this.totalBytes >= options.minTotalBytes`
41
- // TODO: hls.js, `this.totalDuration >= this.minDuration`
42
- return true;
43
- }
44
- }
45
- //# sourceMappingURL=EwmaEstimator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EwmaEstimator.js","sourceRoot":"","sources":["../src/EwmaEstimator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC;;;;;GAKG;AACH,MAAM,OAAO,aAAa;IAIzB,YAAmB,OAA6B;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;IAEM,MAAM,CAAC,MAAsB;QACnC,cAAc;QACd,kFAAkF;QAClF,gBAAgB;QAChB,uEAAuE;QACvE,eAAe;QACf,wGAAwG;QACxG,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC/C,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAE7C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IACrD,CAAC;IAEM,WAAW;QACjB,cAAc;QACd,6EAA6E;QAC7E,kDAAkD;QAClD,6DAA6D;QAC7D,gBAAgB;QAChB,+CAA+C;QAC/C,wCAAwC;QACxC,eAAe;QACf,2EAA2E;QAC3E,mEAAmE;QACnE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3E,CAAC;IAEM,WAAW;QACjB,0DAA0D;QAC1D,yDAAyD;QAEzD,OAAO,IAAI,CAAC;IACb,CAAC;CACD","sourcesContent":["import type { ResourceTiming } from '@svta/cml-utils/ResourceTiming.js';\nimport { getBandwidthBps } from '@svta/cml-utils/getBandwidthBps.js';\nimport { Ewma } from './Ewma.js';\nimport type { EwmaEstimatorOptions } from './EwmaEstimatorOptions.js';\nimport type { ThroughputEstimator } from './ThroughputEstimator.js';\n\n/**\n * Exponential Weighted Moving Average (EWMA) throughput estimator based on 2 half-lives\n *\n *\n * @beta\n */\nexport class EwmaEstimator implements ThroughputEstimator {\n\tprivate fastEwma: Ewma;\n\tprivate slowEwma: Ewma;\n\n\tpublic constructor(options: EwmaEstimatorOptions) {\n\t\tthis.slowEwma = new Ewma(options.slowHalfLife);\n\t\tthis.fastEwma = new Ewma(options.fastHalfLife);\n\t}\n\n\tpublic sample(sample: ResourceTiming): void {\n\t\t// TODO: shaka\n\t\t// 1. If `sample.encodedBodySize` is less than `this.minBytes_`, don't do anything\n\t\t// TODO: dash.js\n\t\t// 1. If `sample.encodedBodySize` is NaN or Infinity, don't do anything\n\t\t// TODO: hls.js\n\t\t// 1. If `durationSeconds` is less than `this.minDelayMs_`, make it `this.minDelayMs_` (default is 50ms)\n\t\tconst durationSeconds = sample.duration / 1000;\n\t\tconst bandwidthBps = getBandwidthBps(sample);\n\n\t\tthis.slowEwma.sample(durationSeconds, bandwidthBps);\n\t\tthis.fastEwma.sample(durationSeconds, bandwidthBps);\n\t}\n\n\tpublic getEstimate(): number {\n\t\t// TODO: shaka\n\t\t// 1. Returns `defaultEstimate` for this.totalBytes < `options.minTotalBytes`\n\t\t// 1.1. Returns `options.defaultBandwidthEstimate`\n\t\t// 1.2. or `navigator.connection.downlink * 1e6` if available\n\t\t// TODO: dash.js\n\t\t// 1. Returns `NaN` for this.totalDuration <= 0\n\t\t// 2. `Math.max` for latency calculation\n\t\t// TODO: hls.js\n\t\t// 1. Returns `defaultEstimate` for this.totalDuration < `this.minDuration`\n\t\t// 1.1. Returns `config.abrEwmaDefaultEstimate` (default: 500 kbps)\n\t\treturn Math.min(this.fastEwma.getEstimate(), this.slowEwma.getEstimate());\n\t}\n\n\tpublic canEstimate(): boolean {\n\t\t// TODO: shaka, `this.totalBytes >= options.minTotalBytes`\n\t\t// TODO: hls.js, `this.totalDuration >= this.minDuration`\n\n\t\treturn true;\n\t}\n}\n"]}
@@ -1,11 +0,0 @@
1
- /**
2
- * Exponential Weighted Moving Average (EWMA) Estimator Options
3
- *
4
- *
5
- * @beta
6
- */
7
- export type EwmaEstimatorOptions = {
8
- fastHalfLife: number;
9
- slowHalfLife: number;
10
- };
11
- //# sourceMappingURL=EwmaEstimatorOptions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EwmaEstimatorOptions.d.ts","sourceRoot":"","sources":["../src/EwmaEstimatorOptions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=EwmaEstimatorOptions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EwmaEstimatorOptions.js","sourceRoot":"","sources":["../src/EwmaEstimatorOptions.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Exponential Weighted Moving Average (EWMA) Estimator Options\n *\n *\n * @beta\n */\nexport type EwmaEstimatorOptions = {\n\tfastHalfLife: number;\n\tslowHalfLife: number;\n};\n"]}
@@ -1,14 +0,0 @@
1
- import type { ResourceTiming } from '@svta/cml-utils/ResourceTiming.js';
2
- import type { ThroughputEstimator } from './ThroughputEstimator.js';
3
- /**
4
- * Harmonic Mean throughput estimator
5
- *
6
- *
7
- * @beta
8
- */
9
- export declare class HarmonicMeanEstimator implements ThroughputEstimator {
10
- private samples;
11
- sample(sample: ResourceTiming): void;
12
- getEstimate(): number;
13
- }
14
- //# sourceMappingURL=HarmonicMeanEstimator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HarmonicMeanEstimator.d.ts","sourceRoot":"","sources":["../src/HarmonicMeanEstimator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,mBAAmB;IAChE,OAAO,CAAC,OAAO,CAAwB;IAEhC,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAIpC,WAAW,IAAI,MAAM;CAS5B"}
@@ -1,23 +0,0 @@
1
- import { getBandwidthBps } from '@svta/cml-utils/getBandwidthBps.js';
2
- /**
3
- * Harmonic Mean throughput estimator
4
- *
5
- *
6
- * @beta
7
- */
8
- export class HarmonicMeanEstimator {
9
- constructor() {
10
- this.samples = [];
11
- }
12
- sample(sample) {
13
- this.samples.push(sample);
14
- }
15
- getEstimate() {
16
- let value = 0;
17
- for (let i = 0; i < this.samples.length; i++) {
18
- value += 1 / getBandwidthBps(this.samples[i]);
19
- }
20
- return this.samples.length / value;
21
- }
22
- }
23
- //# sourceMappingURL=HarmonicMeanEstimator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HarmonicMeanEstimator.js","sourceRoot":"","sources":["../src/HarmonicMeanEstimator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAGrE;;;;;GAKG;AACH,MAAM,OAAO,qBAAqB;IAAlC;QACS,YAAO,GAAqB,EAAE,CAAC;IAexC,CAAC;IAbO,MAAM,CAAC,MAAsB;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAEM,WAAW;QACjB,IAAI,KAAK,GAAW,CAAC,CAAC;QAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,KAAK,IAAI,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;IACpC,CAAC;CACD","sourcesContent":["import type { ResourceTiming } from '@svta/cml-utils/ResourceTiming.js';\nimport { getBandwidthBps } from '@svta/cml-utils/getBandwidthBps.js';\nimport type { ThroughputEstimator } from './ThroughputEstimator.js';\n\n/**\n * Harmonic Mean throughput estimator\n *\n *\n * @beta\n */\nexport class HarmonicMeanEstimator implements ThroughputEstimator {\n\tprivate samples: ResourceTiming[] = [];\n\n\tpublic sample(sample: ResourceTiming): void {\n\t\tthis.samples.push(sample);\n\t}\n\n\tpublic getEstimate(): number {\n\t\tlet value: number = 0;\n\n\t\tfor (let i = 0; i < this.samples.length; i++) {\n\t\t\tvalue += 1 / getBandwidthBps(this.samples[i]);\n\t\t}\n\n\t\treturn this.samples.length / value;\n\t}\n}\n"]}
@@ -1,22 +0,0 @@
1
- import type { ResourceTiming } from '@svta/cml-utils/ResourceTiming.js';
2
- /**
3
- * Throughput Estimator.
4
- *
5
- *
6
- * @beta
7
- */
8
- export type ThroughputEstimator = {
9
- /**
10
- * Adds a sample to the throughput estimator
11
- *
12
- * @param sample - The timing sample to add
13
- */
14
- sample(sample: ResourceTiming): void;
15
- /**
16
- * Returns the current estimate of the throughput (in bytes per second)
17
- *
18
- * @returns The current estimate of the throughput
19
- */
20
- getEstimate(): number;
21
- };
22
- //# sourceMappingURL=ThroughputEstimator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThroughputEstimator.d.ts","sourceRoot":"","sources":["../src/ThroughputEstimator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG;IACjC;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAErC;;;;OAIG;IACH,WAAW,IAAI,MAAM,CAAC;CACtB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ThroughputEstimator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThroughputEstimator.js","sourceRoot":"","sources":["../src/ThroughputEstimator.ts"],"names":[],"mappings":"","sourcesContent":["import type { ResourceTiming } from '@svta/cml-utils/ResourceTiming.js';\n\n/**\n * Throughput Estimator.\n *\n *\n * @beta\n */\nexport type ThroughputEstimator = {\n\t/**\n\t * Adds a sample to the throughput estimator\n\t *\n\t * @param sample - The timing sample to add\n\t */\n\tsample(sample: ResourceTiming): void;\n\n\t/**\n\t * Returns the current estimate of the throughput (in bytes per second)\n\t *\n\t * @returns The current estimate of the throughput\n\t */\n\tgetEstimate(): number;\n};\n"]}
@@ -1,14 +0,0 @@
1
- import type { ResourceTiming } from '@svta/cml-utils/ResourceTiming.js';
2
- import type { ThroughputEstimator } from './ThroughputEstimator.js';
3
- /**
4
- * Zero-Lag Exponential Moving Average (ZLEMA) throughput estimator
5
- *
6
- *
7
- * @beta
8
- */
9
- export declare class ZlemaEstimator implements ThroughputEstimator {
10
- private samples;
11
- sample(sample: ResourceTiming): void;
12
- getEstimate(): number;
13
- }
14
- //# sourceMappingURL=ZlemaEstimator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ZlemaEstimator.d.ts","sourceRoot":"","sources":["../src/ZlemaEstimator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,mBAAmB;IACzD,OAAO,CAAC,OAAO,CAAwB;IAEhC,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAIpC,WAAW,IAAI,MAAM;CAkB5B"}
@@ -1,29 +0,0 @@
1
- import { getBandwidthBps } from '@svta/cml-utils/getBandwidthBps.js';
2
- /**
3
- * Zero-Lag Exponential Moving Average (ZLEMA) throughput estimator
4
- *
5
- *
6
- * @beta
7
- */
8
- export class ZlemaEstimator {
9
- constructor() {
10
- this.samples = [];
11
- }
12
- sample(sample) {
13
- this.samples.push(sample);
14
- }
15
- getEstimate() {
16
- if (this.samples.length === 0) {
17
- return NaN;
18
- }
19
- const alpha = 2 / (this.samples.length + 1);
20
- let ema, zlema;
21
- ema = zlema = getBandwidthBps(this.samples[this.samples.length - 1]);
22
- for (let i = 0; i < this.samples.length; i++) {
23
- ema = alpha * getBandwidthBps(this.samples[i]) + (1 - alpha) * ema;
24
- zlema = alpha * ema + (1 - alpha) * zlema;
25
- }
26
- return zlema;
27
- }
28
- }
29
- //# sourceMappingURL=ZlemaEstimator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ZlemaEstimator.js","sourceRoot":"","sources":["../src/ZlemaEstimator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAGrE;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IAA3B;QACS,YAAO,GAAqB,EAAE,CAAC;IAwBxC,CAAC;IAtBO,MAAM,CAAC,MAAsB;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAEM,WAAW;QACjB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE5C,IAAI,GAAW,EAAE,KAAa,CAAC;QAE/B,GAAG,GAAG,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAErE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,GAAG,GAAG,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;YACnE,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;QAC3C,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;CACD","sourcesContent":["import type { ResourceTiming } from '@svta/cml-utils/ResourceTiming.js';\nimport { getBandwidthBps } from '@svta/cml-utils/getBandwidthBps.js';\nimport type { ThroughputEstimator } from './ThroughputEstimator.js';\n\n/**\n * Zero-Lag Exponential Moving Average (ZLEMA) throughput estimator\n *\n *\n * @beta\n */\nexport class ZlemaEstimator implements ThroughputEstimator {\n\tprivate samples: ResourceTiming[] = [];\n\n\tpublic sample(sample: ResourceTiming): void {\n\t\tthis.samples.push(sample);\n\t}\n\n\tpublic getEstimate(): number {\n\t\tif (this.samples.length === 0) {\n\t\t\treturn NaN;\n\t\t}\n\n\t\tconst alpha = 2 / (this.samples.length + 1);\n\n\t\tlet ema: number, zlema: number;\n\n\t\tema = zlema = getBandwidthBps(this.samples[this.samples.length - 1]);\n\n\t\tfor (let i = 0; i < this.samples.length; i++) {\n\t\t\tema = alpha * getBandwidthBps(this.samples[i]) + (1 - alpha) * ema;\n\t\t\tzlema = alpha * ema + (1 - alpha) * zlema;\n\t\t}\n\n\t\treturn zlema;\n\t}\n}\n"]}
@@ -1 +0,0 @@
1
- {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.promise.d.ts","../../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../utils/dist/ResourceTiming.d.ts","../../utils/dist/getBandwidthBps.d.ts","../src/ThroughputEstimator.ts","../src/ArithmeticMeanEstimator.ts","../src/Ewma.ts","../src/EwmaEstimatorOptions.ts","../src/EwmaEstimator.ts","../src/HarmonicMeanEstimator.ts","../src/ZlemaEstimator.ts","../src/index.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client-stats.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/accepts/index.d.ts","../../../node_modules/@types/argparse/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/@types/command-line-args/index.d.ts","../../../node_modules/@types/content-disposition/index.d.ts","../../../node_modules/@types/mime/index.d.ts","../../../node_modules/@types/send/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/http-errors/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/express/index.d.ts","../../../node_modules/@types/keygrip/index.d.ts","../../../node_modules/@types/cookies/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/hast/index.d.ts","../../../node_modules/@types/http-assert/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/koa-compose/index.d.ts","../../../node_modules/@types/koa/index.d.ts","../../../node_modules/@types/m3u8-parser/index.d.ts","../../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts","../../../node_modules/@types/parse5/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/semver/functions/inc.d.ts","../../../node_modules/@types/semver/classes/semver.d.ts","../../../node_modules/@types/semver/functions/parse.d.ts","../../../node_modules/@types/semver/functions/valid.d.ts","../../../node_modules/@types/semver/functions/clean.d.ts","../../../node_modules/@types/semver/functions/diff.d.ts","../../../node_modules/@types/semver/functions/major.d.ts","../../../node_modules/@types/semver/functions/minor.d.ts","../../../node_modules/@types/semver/functions/patch.d.ts","../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../node_modules/@types/semver/functions/compare.d.ts","../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../node_modules/@types/semver/functions/sort.d.ts","../../../node_modules/@types/semver/functions/rsort.d.ts","../../../node_modules/@types/semver/functions/gt.d.ts","../../../node_modules/@types/semver/functions/lt.d.ts","../../../node_modules/@types/semver/functions/eq.d.ts","../../../node_modules/@types/semver/functions/neq.d.ts","../../../node_modules/@types/semver/functions/gte.d.ts","../../../node_modules/@types/semver/functions/lte.d.ts","../../../node_modules/@types/semver/functions/cmp.d.ts","../../../node_modules/@types/semver/functions/coerce.d.ts","../../../node_modules/@types/semver/classes/comparator.d.ts","../../../node_modules/@types/semver/classes/range.d.ts","../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../node_modules/@types/semver/ranges/valid.d.ts","../../../node_modules/@types/semver/ranges/outside.d.ts","../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../node_modules/@types/semver/ranges/subset.d.ts","../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../node_modules/@types/semver/index.d.ts","../../../node_modules/@types/ws/index.d.ts","../../../node_modules/@types/xml2js/lib/processors.d.ts","../../../node_modules/@types/xml2js/index.d.ts"],"fileIdsList":[[82,83,84,94,148,165,166],[94,148,165,166],[82,83,84,86,87,94,148,165,166],[82,94,148,165,166],[84,85,86,87,88,89,90,94,148,165,166],[94,148,162,165,166,198],[94,148,162,165,166,198,201],[94,148,162,165,166,198,201,212,213],[94,148,159,162,165,166,198,206,207,208],[94,148,165,166,202,209,211],[94,148,165,166,216],[94,148,165,166,221],[94,147,148,159,162,163,165,166,168,174,191,198,199,204,210,213,214,218,220],[94,145,146,148,165,166],[94,147,148,165,166],[148,165,166],[94,148,153,165,166,183],[94,148,149,154,159,165,166,168,180,191],[94,148,149,150,159,165,166,168],[94,148,151,165,166,192],[94,148,152,153,160,165,166,169],[94,148,153,165,166,180,188],[94,148,154,156,159,165,166,168],[94,147,148,155,165,166],[94,148,156,157,165,166],[94,148,158,159,165,166],[94,147,148,159,165,166],[94,148,159,160,161,165,166,180,191],[94,148,159,160,161,165,166,175,180,183],[94,140,148,156,159,162,165,166,168,180,191],[94,148,159,160,162,163,165,166,168,180,188,191],[94,148,162,164,165,166,180,188,191],[92,93,94,95,96,97,98,99,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197],[94,148,159,165,166],[94,148,165,166,167,191],[94,148,156,159,165,166,168,180],[94,148,165,166,169],[94,148,165,166,170],[94,147,148,165,166,171],[94,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197],[94,148,165,166,173],[94,148,165,166,174],[94,148,159,165,166,175,176],[94,148,165,166,175,177,192,194],[94,148,159,165,166,180,181,183],[94,148,165,166,182,183],[94,148,165,166,180,181],[94,148,165,166,183],[94,148,165,166,184],[94,145,148,165,166,180,185],[94,148,159,165,166,186,187],[94,148,165,166,186,187],[94,148,153,165,166,168,180,188],[94,148,165,166,189],[94,148,165,166,168,190],[94,148,162,165,166,174,191],[94,148,153,165,166,192],[94,148,165,166,180,193],[94,148,165,166,167,194],[94,148,165,166,195],[94,148,153,165,166],[94,140,148,165,166],[94,148,165,166,196],[94,140,148,159,161,165,166,171,180,183,191,193,194,196],[94,148,165,166,180,197],[94,148,165,166,223],[94,148,165,166,224],[94,148,165,166,227,265],[94,148,165,166,227,250,265],[94,148,165,166,226,265],[94,148,165,166,265],[94,148,165,166,227],[94,148,165,166,227,251,265],[94,148,165,166,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264],[94,148,165,166,251,265],[94,148,160,165,166,180,198,205],[94,148,162,165,166,198,206,210],[94,148,159,162,164,165,166,168,180,188,191,197,198],[94,148,159,165,166,198,267],[94,106,109,112,113,148,165,166,191],[94,109,148,165,166,180,191],[94,109,113,148,165,166,191],[94,148,165,166,180],[94,103,148,165,166],[94,107,148,165,166],[94,105,106,109,148,165,166,191],[94,148,165,166,168,188],[94,148,165,166,198],[94,103,148,165,166,198],[94,105,109,148,165,166,168,191],[94,100,101,102,104,108,148,159,165,166,180,191],[94,109,117,125,148,165,166],[94,101,107,148,165,166],[94,109,134,135,148,165,166],[94,101,104,109,148,165,166,183,191,198],[94,109,148,165,166],[94,105,109,148,165,166,191],[94,100,148,165,166],[94,103,104,105,107,108,109,110,111,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,135,136,137,138,139,148,165,166],[94,109,127,130,148,156,165,166],[94,109,117,118,119,148,165,166],[94,107,109,118,120,148,165,166],[94,108,148,165,166],[94,101,103,109,148,165,166],[94,109,113,118,120,148,165,166],[94,113,148,165,166],[94,107,109,112,148,165,166,191],[94,101,105,109,117,148,165,166],[94,109,127,148,165,166],[94,120,148,165,166],[94,103,109,134,148,165,166,183,196,198]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"8bf8b5e44e3c9c36f98e1007e8b7018c0f38d8adc07aecef42f5200114547c70","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"07f073f19d67f74d732b1adea08e1dc66b1b58d77cb5b43931dee3d798a2fd53","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},"9f11daf89ceae49cec44d40060a65c7506a0e1de71dfde8e45aaefa74cd74466","5c64a1ed5e59d218e839f483ddb477acfd938c57779208a8df148cd03f0e825b",{"version":"f0db6e14577200b86eea700cad5d46a072772f0a92834d4c6b93b7fe719aa8ab","signature":"9cafcef128f2a70c9d115aad47586b68ef5137219388f1af2e9358b4705d2b3c"},{"version":"a8086f9f9ea56c4b10d6dea6f72f14a2d5f70c42ac06b6dc1d4bab3552ffeaad","signature":"31c27d68ef57e7eb81b1b71eaab7b662532f1f15a3771a3354a794e577a51deb"},{"version":"3b28bee20b5999b81216f8f698c7d5a814cf9b1120c12e98afd2c5b7e587bcee","signature":"69d05e4bac64c37179c649a36ed9cabb854118575307d48ff04e2e6c15d382cc"},{"version":"9aff121c0dccadc663c72254582d3d0a7ce852865218fe2e7125e55f1497dc4a","signature":"3dc5b21815536ffd78d9a0dcfa6066e9e9b3d7ab07acb0b7fce19fef3a1dc941"},{"version":"cde9448e55c30b26b6e2ba07974022b1897fecf9e2674fb86a0517e4330a7988","signature":"0cec878aa8dcd2dad00d9bb15f8dbbda0f5dbb31d34cf195302655cd0e26964b"},{"version":"dc3e6fd9d8d598576bdac379677121f72e3716a0ef0435d5467dcad3052db53a","signature":"10b9331d8df9408ba225738d248635a839ae4e2e7e85e874a6880d446ecacd85"},{"version":"98c22a4f93c07a1d4f0d2ff3247dd7b6d657a3d5fc98f9ef1b59bffc4a9ace1c","signature":"cc2ac7b76e5cdd7ac22df09df76138b549da03d9888db65ef26113d254312d36"},"0a5721ac7fca5d51ca2a081f84d7112b13ff2ce5026322a3b8d6c343c6dcd259",{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0671b50bb99cc7ad46e9c68fa0e7f15ba4bc898b59c31a17ea4611fab5095da","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"aa83e100f0c74a06c9d24f40a096c9e9cc3c02704250d01541e22c0ae9264eda","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"3c8e93af4d6ce21eb4c8d005ad6dc02e7b5e6781f429d52a35290210f495a674","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"00b21ef538da5a2bbe419e2144f3be50661768e1e039ef2b57bb89f96aff9b18","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"e843e840f484f7e59b2ef9488501a301e3300a8e3e56aa84a02ddf915c7ce07d","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"78b29846349d4dfdd88bd6650cc5d2baaa67f2e89dc8a80c8e26ef7995386583","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"18f8cfbb14ba9405e67d30968ae67b8d19133867d13ebc49c8ed37ec64ce9bdb","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"830171b27c5fdf9bcbe4cf7d428fcf3ae2c67780fb7fbdccdf70d1623d938bc4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f68328826a275104d92bd576c796c570f66365f25ea8bbaaa208727bce132d5f","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"18334defc3d0a0e1966f5f3c23c7c83b62c77811e51045c5a7ff3883b446f81f","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b17fcd63aa13734bf1d01419f4d6031b1c6a5fb2cbdb45e9839fb1762bdf0df","impliedFormat":1},{"version":"c4e8e8031808b158cfb5ac5c4b38d4a26659aec4b57b6a7e2ba0a141439c208c","impliedFormat":1},{"version":"2c91d8366ff2506296191c26fd97cc1990bab3ee22576275d28b654a21261a44","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"beb77fcd86c8cee62c32b2fb82753f5bc0e171d938e20af3cb0b8925db78d60b","impliedFormat":1},{"version":"289e9894a4668c61b5ffed09e196c1f0c2f87ca81efcaebdf6357cfb198dac14","impliedFormat":1},{"version":"25a1105595236f09f5bce42398be9f9ededc8d538c258579ab662d509aa3b98e","impliedFormat":1},{"version":"aa9224557befad144262c85b463c0a7ba8a3a0ad2a7c907349f8bb8bc3fe4abc","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"8d86c8d8c43e04cc3dde9953e571656812c8964a3651203af7b3a1df832a34df","affectsGlobalScope":true,"impliedFormat":1},{"version":"0121911fcc364eb821d058cf4c3b9339f197eccbe298098a4c6be0396b607d90","impliedFormat":1},{"version":"c6176c7b9f3769ba7f076c7a791588562c653cc0ba08fb2184f87bf78db2a87c","impliedFormat":1},{"version":"6def204d0b267101d3a42300a7363f53406c5d86b932e76e2365bf89689a85c4","impliedFormat":1},{"version":"4f766affd1281935fe5f7fd5d7af693a7c26d81adef7c1aefb84b9cd573a9cbb","impliedFormat":1},{"version":"165a0c1f95bc939c72f18a280fc707fba6f2f349539246b050cfc09eb1d9f446","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"c0bb1b65757c72bbf8ddf7eaa532223bacf58041ff16c883e76f45506596e925","impliedFormat":1},{"version":"c8b85f7aed29f8f52b813f800611406b0bfe5cf3224d20a4bdda7c7f73ce368e","affectsGlobalScope":true,"impliedFormat":1},{"version":"7baae9bf5b50e572e7742c886c73c6f8fa50b34190bc5f0fd20dd7e706fda832","impliedFormat":1},{"version":"e99b0e71f07128fc32583e88ccd509a1aaa9524c290efb2f48c22f9bf8ba83b1","impliedFormat":1},{"version":"76957a6d92b94b9e2852cf527fea32ad2dc0ef50f67fe2b14bd027c9ceef2d86","impliedFormat":1},{"version":"5e9f8c1e042b0f598a9be018fc8c3cb670fe579e9f2e18e3388b63327544fe16","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8a99a5e6ed33c4a951b67cc1fd5b64fd6ad719f5747845c165ca12f6c21ba16","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"70b57b5529051497e9f6482b76d91c0dcbb103d9ead8a0549f5bab8f65e5d031","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"1013eb2e2547ad8c100aca52ef9df8c3f209edee32bb387121bb3227f7c00088","impliedFormat":1},{"version":"b827f8800f42858f0a751a605c003b7ab571ff7af184436f36cef9bdfebae808","impliedFormat":1},{"version":"363eedb495912790e867da6ff96e81bf792c8cfe386321e8163b71823a35719a","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"6b306cd4282bbb54d4a6bb23cfb7a271160983dfc38c67b5a132504cfcc34896","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea713aa14a670b1ea0fbaaca4fd204e645f71ca7653a834a8ec07ee889c45de6","impliedFormat":1},{"version":"450172a56b944c2d83f45cc11c9a388ea967cd301a21202aa0a23c34c7506a18","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"3af7d02e5d6ecbf363e61fb842ee55d3518a140fd226bdfb24a3bca6768c58df","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"7dfa742c23851808a77ec27062fbbd381c8c36bb3cfdff46cb8af6c6c233bfc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb078cfcd14dc0b1700a48272958f803f30f13f99111c5978c75c3a0aa07e40e","affectsGlobalScope":true,"impliedFormat":1},{"version":"784490137935e1e38c49b9289110e74a1622baf8a8907888dcbe9e476d7c5e44","impliedFormat":1},{"version":"420fdd37c51263be9db3fcac35ffd836216c71e6000e6a9740bb950fb0540654","impliedFormat":1},{"version":"73b0bff83ee76e3a9320e93c7fc15596e858b33c687c39a57567e75c43f2a324","impliedFormat":1},{"version":"3c947600f6f5664cca690c07fcf8567ca58d029872b52c31c2f51d06fbdb581b","affectsGlobalScope":true,"impliedFormat":1},{"version":"493c64d062139b1849b0e9c4c3a6465e1227d2b42be9e26ec577ca728984c041","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1},{"version":"87f287f296f3ff07dbd14ea7853c2400d995dccd7bd83206196d6c0974774e96","impliedFormat":1},{"version":"dc3b172ee27054dbcedcf5007b78c256021db936f6313a9ce9a3ecbb503fd646","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"5b7206ca5f2f6eeaac6daa285664f424e0b728f3e31937da89deb8696c5f1dbc","impliedFormat":1},{"version":"0504070e7eaba788f5d0d5926782ed177f1db01cee28363c488fae94950c0bbc","impliedFormat":1},{"version":"d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","impliedFormat":1},{"version":"b78cd10245a90e27e62d0558564f5d9a16576294eee724a59ae21b91f9269e4a","impliedFormat":1},{"version":"baac9896d29bcc55391d769e408ff400d61273d832dd500f21de766205255acb","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"a8932b7a5ef936687cc5b2492b525e2ad5e7ed321becfea4a17d5a6c80f49e92","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"0e13570a7e86c6d83dd92e81758a930f63747483e2cd34ef36fcdb47d1f9726a","impliedFormat":1},{"version":"d26a79f97f25eb1c5fc36a8552e4decc7ad11104a016d31b1307c3afaf48feb1","impliedFormat":1},{"version":"6847334317c1bc1e6fc4b679b0095bbd2b6ee3b85fe3f26fc26bac462f68ef5e","impliedFormat":1},{"version":"2224f3072e3cc07906eeed5c71746779511fba2dd224addc5489bcdb489bdee5","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"fbf802b3a028f5eb22ad406ee5fc7c368f0acfd3a2a6d0f805120766f5717ec8","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"7e8d3f08435ad2cefe67f58182618bfc9a0a29db08cf2544b94cbcae754a9bd9","impliedFormat":1},{"version":"8cf9b9045a614f883b623c2f1a631ec6a93321747e933330b2eec0ee47164a34","impliedFormat":1},{"version":"b0f87d06834f4d3ff5b99dfb2f81f4a7a046dc99cecbdbf897fd50479cd98182","impliedFormat":1},{"version":"fc37aca06f6b8b296c42412a2e75ab53d30cd1fa8a340a3bb328a723fd678377","impliedFormat":1},{"version":"5f2c582b9ef260cb9559a64221b38606378c1fabe17694592cdfe5975a6d7efa","impliedFormat":1},{"version":"8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","impliedFormat":1},{"version":"ce6a3f09b8db73a7e9701aca91a04b4fabaf77436dd35b24482f9ee816016b17","impliedFormat":1},{"version":"20e086e5b64fdd52396de67761cc0e94693494deadb731264aac122adf08de3f","impliedFormat":1},{"version":"6e78f75403b3ec65efb41c70d392aeda94360f11cedc9fb2c039c9ea23b30962","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"eefd2bbc8edb14c3bd1246794e5c070a80f9b8f3730bd42efb80df3cc50b9039","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"a56fe175741cc8841835eb72e61fa5a34adcbc249ede0e3494c229f0750f6b85","impliedFormat":1},{"version":"bc81aff061c53a7140270555f4b22da4ecfe8601e8027cf5aa175fbdc7927c31","impliedFormat":1},{"version":"c0288f54de6f544706a3150c8b579b1a975870695c4be866f727ece6a16f3976","impliedFormat":1},{"version":"f8636a916949481bc363ae24cbeb8451fa98fd2d07329e0664a46567278c9adb","impliedFormat":1}],"root":[[84,91]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationMap":true,"erasableSyntaxOnly":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":false,"inlineSources":true,"isolatedDeclarations":true,"module":99,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noPropertyAccessFromIndexSignature":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","preserveConstEnums":true,"removeComments":false,"rewriteRelativeImportExtensions":true,"sourceMap":true,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":6,"verbatimModuleSyntax":true},"referencedMap":[[85,1],[86,2],[88,3],[87,2],[89,1],[84,4],[90,1],[91,5],[82,2],[83,4],[199,6],[200,2],[202,7],[203,2],[201,6],[204,2],[214,8],[215,2],[209,9],[212,10],[217,11],[218,2],[210,2],[219,2],[213,2],[220,12],[221,13],[222,2],[205,2],[145,14],[146,14],[147,15],[94,16],[148,17],[149,18],[150,19],[92,2],[151,20],[152,21],[153,22],[154,23],[155,24],[156,25],[157,25],[158,26],[159,27],[160,28],[161,29],[95,2],[93,2],[162,30],[163,31],[164,32],[198,33],[165,34],[166,2],[167,35],[168,36],[169,37],[170,38],[171,39],[172,40],[173,41],[174,42],[175,43],[176,43],[177,44],[178,2],[179,2],[180,45],[182,46],[181,47],[183,48],[184,49],[185,50],[186,51],[187,52],[188,53],[189,54],[190,55],[191,56],[192,57],[193,58],[194,59],[195,60],[96,2],[97,61],[98,2],[99,2],[141,62],[142,63],[143,2],[144,48],[196,64],[197,65],[224,66],[223,67],[207,2],[208,2],[225,2],[250,68],[251,69],[227,70],[230,71],[248,68],[249,68],[239,68],[238,72],[236,68],[231,68],[244,68],[242,68],[246,68],[226,68],[243,68],[247,68],[232,68],[233,68],[245,68],[228,68],[234,68],[235,68],[237,68],[241,68],[252,73],[240,68],[229,68],[265,74],[264,2],[259,73],[261,75],[260,73],[253,73],[254,73],[256,73],[258,73],[262,75],[263,75],[255,75],[257,75],[206,76],[211,77],[216,2],[266,78],[268,79],[267,2],[80,2],[81,2],[15,2],[13,2],[14,2],[17,2],[16,2],[2,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[24,2],[25,2],[3,2],[26,2],[27,2],[4,2],[28,2],[32,2],[29,2],[30,2],[31,2],[33,2],[34,2],[35,2],[5,2],[36,2],[37,2],[38,2],[39,2],[6,2],[43,2],[40,2],[41,2],[42,2],[44,2],[7,2],[45,2],[50,2],[51,2],[46,2],[47,2],[48,2],[49,2],[8,2],[55,2],[52,2],[53,2],[54,2],[56,2],[9,2],[57,2],[58,2],[59,2],[61,2],[60,2],[62,2],[63,2],[10,2],[64,2],[65,2],[66,2],[11,2],[67,2],[68,2],[69,2],[70,2],[71,2],[1,2],[72,2],[73,2],[12,2],[77,2],[75,2],[79,2],[74,2],[78,2],[76,2],[117,80],[129,81],[115,82],[130,83],[139,84],[106,85],[107,86],[105,87],[138,88],[133,89],[137,90],[109,91],[126,92],[108,93],[136,94],[103,95],[104,89],[110,96],[111,2],[116,97],[114,96],[101,98],[140,99],[131,100],[120,101],[119,96],[121,102],[124,103],[118,104],[122,105],[134,88],[112,106],[113,107],[125,108],[102,83],[128,109],[127,96],[123,110],[132,2],[100,2],[135,111]],"version":"5.8.2"}