@datagrok-libraries/statistics 1.1.7 → 1.1.8
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/.eslintrc.json
CHANGED
package/package.json
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"friendlyName": "statistics",
|
|
7
|
-
|
|
7
|
+
"version": "1.1.8",
|
|
8
8
|
"description": "",
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"datagrok-api": "^1.13.11",
|
|
11
|
-
"@datagrok-libraries/utils": "
|
|
11
|
+
"@datagrok-libraries/utils": "^4",
|
|
12
12
|
"cash-dom": "latest",
|
|
13
13
|
"jstat": "latest",
|
|
14
14
|
"dayjs": "latest"
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"build-statistics": "tsc",
|
|
32
32
|
"build": "tsc",
|
|
33
33
|
"lint": "eslint src --ext .ts",
|
|
34
|
-
"lint-fix": "eslint src --ext .ts --fix"
|
|
34
|
+
"lint-fix": "eslint src --ext .ts --fix",
|
|
35
|
+
"build-all": "npm --prefix ./../../js-api run build && npm --prefix ./../../libraries/utils run build && npm run build"
|
|
35
36
|
}
|
|
36
37
|
}
|
|
@@ -45,4 +45,12 @@ export declare function fit(data: {
|
|
|
45
45
|
y: number[];
|
|
46
46
|
}, params: FitParam[], curveFunction: (paramValues: number[], x: number) => number, errorModel: FitErrorModel, confidenceLevel?: number, statistics?: boolean): FitResult;
|
|
47
47
|
export declare function sigmoid(params: number[], x: number): number;
|
|
48
|
+
export declare function getAuc(fittedCurve: (x: number) => number, data: {
|
|
49
|
+
x: number[];
|
|
50
|
+
y: number[];
|
|
51
|
+
}): number;
|
|
52
|
+
export declare function getDetCoeff(fittedCurve: (x: number) => number, data: {
|
|
53
|
+
x: number[];
|
|
54
|
+
y: number[];
|
|
55
|
+
}): number;
|
|
48
56
|
//# sourceMappingURL=fit-curve.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fit-curve.d.ts","sourceRoot":"","sources":["fit-curve.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,QAAQ,EAAC,MAAM,2BAA2B,CAAC;AASnD,oBAAY,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,oBAAY,SAAS,GAAG;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,CAAC,CAAC,EAAC,MAAM,KAAI,MAAM,CAAC;IACjC,aAAa,EAAE,CAAC,CAAC,EAAC,MAAM,KAAI,MAAM,CAAC;IACnC,gBAAgB,EAAE,CAAC,CAAC,EAAC,MAAM,KAAI,MAAM,CAAC;IAEtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAC,MAAM,KAAI,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,CAAC,CAAC,EAAC,MAAM,KAAI,MAAM,CAAC;IAClC,cAAc,CAAC,EAAE,CAAC,CAAC,EAAC,MAAM,KAAI,MAAM,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,4GAA4G;AAC5G,eAAO,MAAM,mBAAmB,EAAE,QAAQ,EAQzC,CAAC;AAOF,oBAAY,aAAa;IACvB,QAAQ,IAAA;IACR,YAAY,IAAA;CACb;AAED,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAM5C,oBAAY,eAAe,GAAG,SAAS,GAAG,QAAQ,CAAC;AA4CnD,eAAO,MAAM,YAAY,EAAE;IAAC,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;CAG/C,CAAC;AAGF,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,aAAa,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB;AAGD;;KAEK;AACL,wBAAgB,GAAG,CAAC,IAAI,EAAC;IAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,EAC/B,MAAM,EAAE,QAAQ,EAAE,EAClB,aAAa,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,EAC3D,UAAU,EAAE,aAAa,EACzB,eAAe,GAAE,MAAa,EAC9B,UAAU,GAAE,OAAc,GAAG,SAAS,CA2HzD;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAO3D"}
|
|
1
|
+
{"version":3,"file":"fit-curve.d.ts","sourceRoot":"","sources":["fit-curve.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,QAAQ,EAAC,MAAM,2BAA2B,CAAC;AASnD,oBAAY,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,oBAAY,SAAS,GAAG;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,CAAC,CAAC,EAAC,MAAM,KAAI,MAAM,CAAC;IACjC,aAAa,EAAE,CAAC,CAAC,EAAC,MAAM,KAAI,MAAM,CAAC;IACnC,gBAAgB,EAAE,CAAC,CAAC,EAAC,MAAM,KAAI,MAAM,CAAC;IAEtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAC,MAAM,KAAI,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,CAAC,CAAC,EAAC,MAAM,KAAI,MAAM,CAAC;IAClC,cAAc,CAAC,EAAE,CAAC,CAAC,EAAC,MAAM,KAAI,MAAM,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,4GAA4G;AAC5G,eAAO,MAAM,mBAAmB,EAAE,QAAQ,EAQzC,CAAC;AAOF,oBAAY,aAAa;IACvB,QAAQ,IAAA;IACR,YAAY,IAAA;CACb;AAED,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAM5C,oBAAY,eAAe,GAAG,SAAS,GAAG,QAAQ,CAAC;AA4CnD,eAAO,MAAM,YAAY,EAAE;IAAC,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;CAG/C,CAAC;AAGF,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,aAAa,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB;AAGD;;KAEK;AACL,wBAAgB,GAAG,CAAC,IAAI,EAAC;IAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,EAC/B,MAAM,EAAE,QAAQ,EAAE,EAClB,aAAa,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,EAC3D,UAAU,EAAE,aAAa,EACzB,eAAe,GAAE,MAAa,EAC9B,UAAU,GAAE,OAAc,GAAG,SAAS,CA2HzD;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAO3D;AAuBD,wBAAgB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EACzC,IAAI,EAAE;IAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,GAAG,MAAM,CAWxD;AAED,wBAAgB,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EACzC,IAAI,EAAE;IAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,GAAG,MAAM,CAY7D"}
|
|
@@ -185,7 +185,7 @@ function getObjectiveDerivative(of, curveFunction, data, params, selectedParam)
|
|
|
185
185
|
const drvBottom = of(curveFunction, data, paramsBottom).value;
|
|
186
186
|
return (drvTop - drvBottom) / (2 * step);
|
|
187
187
|
}
|
|
188
|
-
function getAuc(fittedCurve, data) {
|
|
188
|
+
export function getAuc(fittedCurve, data) {
|
|
189
189
|
let auc = 0;
|
|
190
190
|
let min = Math.min(...data.x);
|
|
191
191
|
let max = Math.max(...data.x);
|
|
@@ -194,7 +194,7 @@ function getAuc(fittedCurve, data) {
|
|
|
194
194
|
auc += integrationStep * fittedCurve(x);
|
|
195
195
|
return auc;
|
|
196
196
|
}
|
|
197
|
-
function getDetCoeff(fittedCurve, data) {
|
|
197
|
+
export function getDetCoeff(fittedCurve, data) {
|
|
198
198
|
let ssRes = 0;
|
|
199
199
|
let ssTot = 0;
|
|
200
200
|
const yMean = jStat.mean(data.y);
|
|
@@ -260,4 +260,4 @@ function objectiveNormalProportional(targetFunc, data, params) {
|
|
|
260
260
|
likelihood += residuesSquares[i] / sigmaSq + Math.log(2 * pi * sigmaSq);
|
|
261
261
|
return { value: -likelihood, const: sigma, mult: 0 };
|
|
262
262
|
}
|
|
263
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml0LWN1cnZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZml0LWN1cnZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1CQUFtQixDQUFBO0FBQ25ELHNCQUFzQjtBQUN0QixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDbkQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBZ0M1Qyw0R0FBNEc7QUFDNUcsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWU7SUFDN0MsUUFBUSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFDLFlBQVksRUFBRSxLQUFLLEVBQUMsQ0FBQztJQUMxRCxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBQyxDQUFDO0lBQ3JELFFBQVEsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFDLENBQUM7SUFDNUQsUUFBUSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFDLFlBQVksRUFBRSxLQUFLLEVBQUMsQ0FBQztJQUM1RCxRQUFRLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBQyxDQUFDO0lBQ3ZELFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFDLENBQUM7SUFDckQsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxF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ZnJvbSBcIi4uLy4uL2xiZmdzL2xiZmdzXCJcbi8vQHRzLWlnbm9yZTogbm8gdHlwZXNcbmltcG9ydCAqIGFzIGpTdGF0IGZyb20gJ2pzdGF0JztcbmltcG9ydCB7UHJvcGVydHl9IGZyb20gXCJkYXRhZ3Jvay1hcGkvc3JjL2VudGl0aWVzXCI7XG5pbXBvcnQge1RZUEV9IGZyb20gXCJkYXRhZ3Jvay1hcGkvc3JjL2NvbnN0XCI7XG5cbnR5cGUgTGlrZWxpaG9vZCA9IHtcbiAgdmFsdWU6IG51bWJlcixcbiAgY29uc3Q6IG51bWJlcixcbiAgbXVsdDogbnVtYmVyXG59O1xuXG5leHBvcnQgdHlwZSBGaXRQYXJhbSA9IHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbWluQm91bmQ/OiBudW1iZXI7XG4gIG1heEJvdW5kPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRml0UmVzdWx0ID0ge1xuICBwYXJhbWV0ZXJzOiBudW1iZXJbXSxcbiAgZml0dGVkQ3VydmU6ICh4Om51bWJlcik9PiBudW1iZXIsXG4gIGNvbmZpZGVuY2VUb3A6ICh4Om51bWJlcik9PiBudW1iZXIsXG4gIGNvbmZpZGVuY2VCb3R0b206ICh4Om51bWJlcik9PiBudW1iZXIsXG5cbiAgclNxdWFyZWQ/OiBudW1iZXIsXG4gIGF1Yz86IG51bWJlcixcbiAgaW52ZXJ0ZWQ/OiAoeTpudW1iZXIpPT4gbnVtYmVyLFxuICBpbnZlcnRlZFRvcD86ICh5Om51bWJlcik9PiBudW1iZXIsXG4gIGludmVydGVkQm90dG9tPzogKHk6bnVtYmVyKT0+IG51bWJlcixcbiAgaW50ZXJjZXB0WDogbnVtYmVyLCAvLyBwYXJhbWV0ZXJzWzJdXG4gIGludGVyY2VwdFk6IG51bWJlciwgLy8gZml0dGVkQ3VydmVbcGFyYW1ldGVyc1syXV1cbiAgc2xvcGU6IG51bWJlciwgLy8gcGFyYW1ldGVyc1sxXVxuICB0b3A6IG51bWJlciwgLy8gcGFyYW1ldGVyc1swXVxuICBib3R0b206IG51bWJlciwgLy8gcGFyYW1ldGVyc1szXVxufTtcblxuLyoqIFByb3BlcnRpZXMgdGhhdCBkZXNjcmliZSB7QGxpbmsgRml0UmVzdWx0fS4gVXNlZnVsIGZvciBlZGl0aW5nLCBpbml0aWFsaXphdGlvbiwgdHJhbnNmb3JtYXRpb25zLCBldGMuICovXG5leHBvcnQgY29uc3QgZml0UmVzdWx0UHJvcGVydGllczogUHJvcGVydHlbXSA9IFtcbiAgUHJvcGVydHkuanMoJ3JTcXVhcmVkJywgVFlQRS5GTE9BVCwge3VzZXJFZGl0YWJsZTogZmFsc2V9KSxcbiAgUHJvcGVydHkuanMoJ2F1YycsIFRZUEUuRkxPQVQsIHt1c2VyRWRpdGFibGU6IGZhbHNlfSksXG4gIFByb3BlcnR5LmpzKCdpbnRlcmNlcHRZJywgVFlQRS5GTE9BVCwge3VzZXJFZGl0YWJsZTogZmFsc2V9KSxcbiAgUHJvcGVydHkuanMoJ2ludGVyY2VwdFgnLCBUWVBFLkZMT0FULCB7dXNlckVkaXRhYmxlOiBmYWxzZX0pLFxuICBQcm9wZXJ0eS5qcygnc2xvcGUnLCBUWVBFLkZMT0FULCB7dXNlckVkaXRhYmxlOiBmYWxzZX0pLFxuICBQcm9wZXJ0eS5qcygndG9wJywgVFlQRS5GTE9BVCwge3VzZXJFZGl0YWJsZTogZmFsc2V9KSxcbiAgUHJvcGVydHkuanMoJ2JvdHRvbScsIFRZUEUuRkxPQVQsIHt1c2VyRWRpdGFibGU6IGZhbHNlfSksXG5dO1xuXG50eXBlIE9iamVjdGl2ZUZ1bmN0aW9uID0gKHRhcmdldEZ1bmM6IChwYXJhbXM6IG51bWJlcltdLCB4OiBudW1iZXIpID0+IG51bWJlcixcbiAgZGF0YToge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0sXG4gIHBhcmFtczogbnVtYmVyW10pID0+IExpa2VsaWhvb2Q7XG5cblxuZXhwb3J0IGVudW0gRml0RXJyb3JNb2RlbCB7XG4gIENvbnN0YW50LFxuICBQcm9wb3J0aW9uYWxcbn1cblxuZXhwb3J0IGNvbnN0IEZJVF9GVU5DVElPTl9TSUdNT0lEID0gJ1NpZ21vaWQnO1xuZXhwb3J0IGNvbnN0IEZJVF9GVU5DVElPTl9MSU5FQVIgPSAnTGluZWFyJztcblxuLy8gZXhwb3J0IGNvbnN0IEZJVF9TVEFUU19SU1FVQVJFRCA9ICdyU3F1YXJlZCc7XG4vLyBleHBvcnQgY29uc3QgRklUX1NUQVRTX0FVQyA9ICdhdWMnO1xuXG5cbmV4cG9ydCB0eXBlIEZpdEZ1bmN0aW9uVHlwZSA9ICdTaWdtb2lkJyB8ICdMaW5lYXInO1xuXG5hYnN0cmFjdCBjbGFzcyBGaXRGdW5jdGlvbiB7XG4gIGFic3RyYWN0IGdldCBuYW1lKCk6IHN0cmluZztcbiAgYWJzdHJhY3QgZ2V0IHBhcmFtZXRlck5hbWVzKCk6IHN0cmluZ1tdO1xuICBhYnN0cmFjdCB5KHBhcmFtczogbnVtYmVyW10sIHg6IG51bWJlcik6IG51bWJlcjtcbiAgYWJzdHJhY3QgZ2V0SW5pdGlhbFBhcmFtZXRlcnMoeDogbnVtYmVyW10sIHk6IG51bWJlcltdKTogbnVtYmVyW107XG59XG5cblxuY2xhc3MgTGluZWFyRnVuY3Rpb24gZXh0ZW5kcyBGaXRGdW5jdGlvbiB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7IHJldHVybiBGSVRfRlVOQ1RJT05fTElORUFSOyB9XG5cbiAgZ2V0IHBhcmFtZXRlck5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydTbG9wZScsICdJbnRlcmNlcHQnXTtcbiAgfVxuXG4gIHkocGFyYW1zOiBudW1iZXJbXSwgeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICB0aHJvdyAnTm90IGltcGxlbWVudGVkJztcbiAgfVxuXG4gIGdldEluaXRpYWxQYXJhbWV0ZXJzKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSk6IG51bWJlcltdIHtcbiAgICB0aHJvdyAnTm90IGltcGxlbWVudGVkJztcbiAgfVxufVxuXG5cbmNsYXNzIFNpZ21vaWRGdW5jdGlvbiBleHRlbmRzIEZpdEZ1bmN0aW9uIHtcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHsgcmV0dXJuIEZJVF9GVU5DVElPTl9TSUdNT0lEOyB9XG5cbiAgZ2V0IHBhcmFtZXRlck5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydUb3AnLCAnQm90dG9tJywgJ1Nsb3BlJywgJ0lDNTAnXTtcbiAgfVxuXG4gIHkocGFyYW1zOiBudW1iZXJbXSwgeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICB0aHJvdyAnTm90IGltcGxlbWVudGVkJztcbiAgfVxuXG4gIGdldEluaXRpYWxQYXJhbWV0ZXJzKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSk6IG51bWJlcltdIHtcbiAgICB0aHJvdyAnTm90IGltcGxlbWVudGVkJztcbiAgfVxufVxuXG5cbmV4cG9ydCBjb25zdCBmaXRGdW5jdGlvbnM6IHtbaW5kZXg6IHN0cmluZ106IGFueX0gPSB7XG4gIEZJVF9GVU5DVElPTl9MSU5FQVI6IG5ldyBMaW5lYXJGdW5jdGlvbigpLFxuICBGSVRfRlVOQ1RJT05fU0lHTU9JRDogbmV3IFNpZ21vaWRGdW5jdGlvbigpLFxufTtcblxuXG5leHBvcnQgaW50ZXJmYWNlIElGaXRPcHRpb25zIHtcbiAgZXJyb3JNb2RlbDogRml0RXJyb3JNb2RlbDtcbiAgY29uZmlkZW5jZUxldmVsOiBudW1iZXI7XG4gIHN0YXRpc3RpY3M6IGJvb2xlYW47XG59XG5cblxuLyoqXG4gKiBzdGF0aXN0aWNzIC0gd2hldGhlciBvciBub3QgdG8gY2FsY3VsYXRlIGZpdCBzdGF0aXN0aWNzIChwb3RlbnRpYWxseSBjb21wdXRhdGlvbmFsbHkgaW50ZW5zaXZlKVxuICogKi9cbmV4cG9ydCBmdW5jdGlvbiBmaXQoZGF0YTp7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBGaXRQYXJhbVtdLFxuICAgICAgICAgICAgICAgICAgICBjdXJ2ZUZ1bmN0aW9uOiAocGFyYW1WYWx1ZXM6IG51bWJlcltdLCB4OiBudW1iZXIpID0+IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JNb2RlbDogRml0RXJyb3JNb2RlbCxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlkZW5jZUxldmVsOiBudW1iZXIgPSAwLjA1LFxuICAgICAgICAgICAgICAgICAgICBzdGF0aXN0aWNzOiBib29sZWFuID0gdHJ1ZSk6IEZpdFJlc3VsdCB7XG5cbiAgbGV0IHBhcmFtVmFsdWVzID0gcGFyYW1zLm1hcChwID0+IHAudmFsdWUpO1xuICBsZXQgb2Y6IE9iamVjdGl2ZUZ1bmN0aW9uO1xuICBzd2l0Y2goZXJyb3JNb2RlbCkge1xuICAgIGNhc2UgRml0RXJyb3JNb2RlbC5Db25zdGFudDpcbiAgICAgIG9mID0gb2JqZWN0aXZlTm9ybWFsQ29uc3RhbnQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEZpdEVycm9yTW9kZWwuUHJvcG9ydGlvbmFsOlxuICAgICAgb2YgPSBvYmplY3RpdmVOb3JtYWxQcm9wb3J0aW9uYWw7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgb2YgPSBvYmplY3RpdmVOb3JtYWxDb25zdGFudDtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgbGV0IGl0ZXJhdGlvbnMgPSAwO1xuICBsZXQgZml4ZWQ6IG51bWJlcltdID0gW107XG4gIGxldCBvdmVyTGltaXRzID0gdHJ1ZTtcblxuICBsZXQgb3B0aW1pemFibGUgPSB7XG4gICAgZ2V0VmFsdWU6IChwYXJhbWV0ZXJzOiBudW1iZXJbXSkgPT4ge1xuICAgICAgcmV0dXJuIG9mKGN1cnZlRnVuY3Rpb24sIGRhdGEsIHBhcmFtZXRlcnMpLnZhbHVlO1xuICAgIH0sXG4gICAgZ2V0R3JhZGllbnQ6IChwYXJhbWV0ZXJzOiBudW1iZXJbXSwgZ3JhZGllbnQ6IG51bWJlcltdKSA9PiB7XG4gICAgICBjb25zdCBsZW5ndGggPSBPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKS5sZW5ndGg7XG4gICAgICBpdGVyYXRpb25zKys7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyYW1ldGVycy5sZW5ndGg7IGkrKylcbiAgICAgICAgZ3JhZGllbnRbaV0gPSBmaXhlZC5pbmNsdWRlcyhpKSA/IDAgOiBnZXRPYmplY3RpdmVEZXJpdmF0aXZlKG9mLCBjdXJ2ZUZ1bmN0aW9uLCBkYXRhLCBwYXJhbWV0ZXJzLCBpKTtcblxuICAgICAgcmV0dXJuIGdyYWRpZW50O1xuICAgIH1cbiAgfTtcblxuICB3aGlsZSAob3ZlckxpbWl0cykge1xuICAgIGxpbWl0ZWRNZW1vcnlCRkdTKG9wdGltaXphYmxlLCBwYXJhbVZhbHVlcyk7XG4gICAgbGltaXRlZE1lbW9yeUJGR1Mob3B0aW1pemFibGUsIHBhcmFtVmFsdWVzKTtcblxuICAgIG92ZXJMaW1pdHMgPSBmYWxzZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZihwYXJhbXNbaV0ubWF4Qm91bmQgIT09IHVuZGVmaW5lZCAmJiBwYXJhbVZhbHVlc1tpXSA+IHBhcmFtc1tpXS5tYXhCb3VuZCEpIHtcbiAgICAgICAgb3ZlckxpbWl0cyA9IHRydWU7XG4gICAgICAgIGZpeGVkLnB1c2goaSk7XG4gICAgICAgIHBhcmFtVmFsdWVzW2ldID0gcGFyYW1zW2ldLm1heEJvdW5kITtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZihwYXJhbXNbaV0ubWluQm91bmQgIT09IHVuZGVmaW5lZCAmJiBwYXJhbVZhbHVlc1tpXSA8IHBhcmFtc1tpXS5taW5Cb3VuZCEpIHtcbiAgICAgICAgb3ZlckxpbWl0cyA9IHRydWU7XG4gICAgICAgIGZpeGVkLnB1c2goaSk7XG4gICAgICAgIHBhcmFtVmFsdWVzW2ldID0gcGFyYW1zW2ldLm1pbkJvdW5kITtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IGZpdHRlZEN1cnZlID0gKHg6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiBjdXJ2ZUZ1bmN0aW9uKHBhcmFtVmFsdWVzLCB4KTtcbiAgfVxuXG4gIGxldCBlcnJvciA9IGVycm9yTW9kZWwgPT0gRml0RXJyb3JNb2RlbC5Qcm9wb3J0aW9uYWwgP1xuICBvZihjdXJ2ZUZ1bmN0aW9uLCBkYXRhLCBwYXJhbVZhbHVlcykubXVsdCA6XG4gIG9mKGN1cnZlRnVuY3Rpb24sIGRhdGEsIHBhcmFtVmFsdWVzKS5jb25zdDtcblxuICBsZXQgc3R1ZGVudFEgPSBqU3RhdC5zdHVkZW50dC5pbnYoMSAtIGNvbmZpZGVuY2VMZXZlbC8yLCBkYXRhLngubGVuZ3RoIC0gcGFyYW1WYWx1ZXMubGVuZ3RoKTtcblxuICBsZXQgdG9wID0gKHg6IG51bWJlcikgPT57XG4gICAgbGV0IHZhbHVlID0gY3VydmVGdW5jdGlvbihwYXJhbVZhbHVlcywgeCk7XG4gICAgaWYgKGVycm9yTW9kZWwgPT0gRml0RXJyb3JNb2RlbC5Db25zdGFudClcbiAgICAgIHJldHVybiAgdmFsdWUgKyBzdHVkZW50USplcnJvci9NYXRoLnNxcnQoZGF0YS54Lmxlbmd0aCk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuICB2YWx1ZSArIHN0dWRlbnRRKihNYXRoLmFicyh2YWx1ZSkqZXJyb3IvTWF0aC5zcXJ0KGRhdGEueC5sZW5ndGgpKTtcbiAgfVxuXG4gIGxldCBib3R0b20gPSAoeDogbnVtYmVyKSA9PiB7XG4gICAgbGV0IHZhbHVlID0gY3VydmVGdW5jdGlvbihwYXJhbVZhbHVlcywgeCk7XG4gICAgaWYgKGVycm9yTW9kZWwgPT0gRml0RXJyb3JNb2RlbC5Db25zdGFudClcbiAgICAgIHJldHVybiAgdmFsdWUgLSBzdHVkZW50USplcnJvci9NYXRoLnNxcnQoZGF0YS54Lmxlbmd0aCk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuICB2YWx1ZSAtIHN0dWRlbnRRKihNYXRoLmFicyh2YWx1ZSkqZXJyb3IvTWF0aC5zcXJ0KGRhdGEueC5sZW5ndGgpKTtcbiAgfVxuXG4gIGxldCBpbnY6ICh5OiBudW1iZXIpID0+IG51bWJlciA9ICh5OiBudW1iZXIpID0+IHtyZXR1cm4gMDt9O1xuICBsZXQgaW52VG9wOiAoeTogbnVtYmVyKSA9PiBudW1iZXIgPSAoeTogbnVtYmVyKSA9PiB7cmV0dXJuIDA7fTtcbiAgbGV0IGludkJvdHRvbTogKHk6IG51bWJlcikgPT4gbnVtYmVyID0gKHk6IG51bWJlcikgPT4ge3JldHVybiAwO307XG5cbiAgaWYgKHN0YXRpc3RpY3MpIHtcbiAgICBpbnYgPSAoeTogbnVtYmVyKSA9PiB7XG4gICAgICAvL3Nob3VsZCBjaGVjayBpZiBtb3JlIHRoYW4gYm90dG9tIGFuZCBsZXNzIHRoYW4gdG9wXG4gICAgICByZXR1cm4gcGFyYW1WYWx1ZXNbMl0vTWF0aC5wb3coKHBhcmFtVmFsdWVzWzBdIC0geSkvKHkgLSBwYXJhbVZhbHVlc1szXSksIDEvcGFyYW1WYWx1ZXNbMV0pO1xuICAgIH07XG5cbiAgICBsZXQgZXJyb3IgPSBnZXRJbnZFcnJvcihpbnYsIGRhdGEpO1xuXG4gICAgaW52VG9wID0gKHk6IG51bWJlcikgPT57XG4gICAgICBsZXQgdmFsdWUgPSBpbnYoeSk7XG4gICAgICByZXR1cm4gIHZhbHVlICsgc3R1ZGVudFEqZXJyb3IvTWF0aC5zcXJ0KGRhdGEueS5sZW5ndGgpO1xuICAgIH1cblxuICAgIGludkJvdHRvbSA9ICh5OiBudW1iZXIpID0+IHtcbiAgICAgIGxldCB2YWx1ZSA9IGludih5KTtcbiAgICAgIHJldHVybiAgdmFsdWUgLSBzdHVkZW50USplcnJvci9NYXRoLnNxcnQoZGF0YS55Lmxlbmd0aCk7XG4gICAgfVxuICB9XG5cbiAgbGV0IGZpdFJlczogRml0UmVzdWx0ID0ge1xuICAgIHBhcmFtZXRlcnM6IHBhcmFtVmFsdWVzLFxuICAgIGZpdHRlZEN1cnZlOiBmaXR0ZWRDdXJ2ZSxcbiAgICBjb25maWRlbmNlVG9wOiB0b3AsXG4gICAgY29uZmlkZW5jZUJvdHRvbTogYm90dG9tLFxuICAgIHJTcXVhcmVkOiBzdGF0aXN0aWNzID8gZ2V0RGV0Q29lZmYoZml0dGVkQ3VydmUsIGRhdGEpIDogdW5kZWZpbmVkLFxuICAgIGF1Yzogc3RhdGlzdGljcyA/IGdldEF1YyhmaXR0ZWRDdXJ2ZSwgZGF0YSkgOiB1bmRlZmluZWQsXG4gICAgaW52ZXJ0ZWQ6IHN0YXRpc3RpY3MgPyBpbnYgOiB1bmRlZmluZWQsXG4gICAgaW52ZXJ0ZWRUb3A6IHN0YXRpc3RpY3MgPyBpbnZUb3AgOiB1bmRlZmluZWQsXG4gICAgaW52ZXJ0ZWRCb3R0b206IHN0YXRpc3RpY3MgPyBpbnZCb3R0b20gOiB1bmRlZmluZWQsXG4gICAgaW50ZXJjZXB0WCA6IHBhcmFtVmFsdWVzWzJdLFxuICAgIGludGVyY2VwdFkgOiBmaXR0ZWRDdXJ2ZShwYXJhbVZhbHVlc1syXSksXG4gICAgc2xvcGU6IHBhcmFtVmFsdWVzWzFdLFxuICAgIHRvcDogcGFyYW1WYWx1ZXNbMF0sXG4gICAgYm90dG9tOiBwYXJhbVZhbHVlc1szXVxuICB9O1xuXG4gIHJldHVybiBmaXRSZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWdtb2lkKHBhcmFtczogbnVtYmVyW10sIHg6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IEEgPSBwYXJhbXNbMF07XG4gIGNvbnN0IEIgPSBwYXJhbXNbMV07XG4gIGNvbnN0IEMgPSBwYXJhbXNbMl07XG4gIGNvbnN0IEQgPSBwYXJhbXNbM107XG4gIGNvbnN0IHJlcyA9IEQgKyAoQSAtIEQpLygxICsgTWF0aC5wb3coMTAsICh4IC0gQykqQikpO1xuICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBnZXRPYmplY3RpdmVEZXJpdmF0aXZlKG9mOiBPYmplY3RpdmVGdW5jdGlvbiwgY3VydmVGdW5jdGlvbjogKHBhcmFtczogbnVtYmVyW10sIHg6IG51bWJlcikgPT4gbnVtYmVyLFxuICAgIGRhdGE6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119LCBwYXJhbXM6IG51bWJlcltdLCBzZWxlY3RlZFBhcmFtOiBudW1iZXIpOiBudW1iZXIge1xuICBsZXQgc3RlcCA9IHBhcmFtc1tzZWxlY3RlZFBhcmFtXSowLjAwMDE7XG4gIHN0ZXAgPSBzdGVwID09IDAgPyAwLjAwMSA6IHN0ZXA7XG4gIGxldCBwYXJhbXNUb3A6IG51bWJlcltdID0gW107XG4gIGxldCBwYXJhbXNCb3R0b206IG51bWJlcltdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYoaSA9PSBzZWxlY3RlZFBhcmFtKSB7XG4gICAgICBwYXJhbXNUb3AucHVzaChwYXJhbXNbaV0gKyBzdGVwKTtcbiAgICAgIHBhcmFtc0JvdHRvbS5wdXNoKHBhcmFtc1tpXSAtIHN0ZXApO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXNUb3AucHVzaChwYXJhbXNbaV0pO1xuICAgICAgcGFyYW1zQm90dG9tLnB1c2gocGFyYW1zW2ldKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgZHJ2VG9wID0gb2YoY3VydmVGdW5jdGlvbiwgZGF0YSwgcGFyYW1zVG9wKS52YWx1ZTtcbiAgY29uc3QgZHJ2Qm90dG9tID0gb2YoY3VydmVGdW5jdGlvbiwgZGF0YSwgcGFyYW1zQm90dG9tKS52YWx1ZTtcblxuICByZXR1cm4gKGRydlRvcCAtIGRydkJvdHRvbSkvKDIqc3RlcCk7XG59XG5cbmZ1bmN0aW9uIGdldEF1YyhmaXR0ZWRDdXJ2ZTogKHg6IG51bWJlcikgPT4gbnVtYmVyLFxuICAgICAgICAgICAgICAgIGRhdGE6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119KTogbnVtYmVyIHtcbiAgbGV0IGF1YyA9IDA7XG5cbiAgbGV0IG1pbiA9IE1hdGgubWluKC4uLmRhdGEueCk7XG4gIGxldCBtYXggPSBNYXRoLm1heCguLi5kYXRhLngpO1xuICBjb25zdCBpbnRlZ3JhdGlvblN0ZXAgPSAobWF4IC0gbWluKS8xMDAwO1xuXG4gIGZvcihsZXQgeCA9IG1pbjsgeCA8IG1heDsgeCs9IGludGVncmF0aW9uU3RlcClcbiAgICBhdWMgKz0gaW50ZWdyYXRpb25TdGVwKmZpdHRlZEN1cnZlKHgpO1xuXG4gIHJldHVybiBhdWM7XG59XG5cbmZ1bmN0aW9uIGdldERldENvZWZmKGZpdHRlZEN1cnZlOiAoeDogbnVtYmVyKSA9PiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICBkYXRhOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSk6IG51bWJlciB7XG4gIGxldCBzc1JlcyA9IDA7XG4gIGxldCBzc1RvdCA9IDA7XG5cbiAgY29uc3QgeU1lYW4gPSBqU3RhdC5tZWFuKGRhdGEueSk7XG5cbiAgZm9yKGxldCBpID0gMDsgaSA8IGRhdGEueC5sZW5ndGg7IGkrKykge1xuICAgIHNzUmVzICs9IE1hdGgucG93KGRhdGEueVtpXSAtIGZpdHRlZEN1cnZlKGRhdGEueFtpXSksIDIpO1xuICAgIHNzVG90ICs9IE1hdGgucG93KGRhdGEueVtpXSAtIHlNZWFuLCAyKTtcbiAgfVxuXG4gIHJldHVybiAxIC0gc3NSZXMvc3NUb3Q7XG59XG5cbmZ1bmN0aW9uIGdldEludkVycm9yIChcbiAgdGFyZ2V0RnVuYzogKHk6IG51bWJlcikgPT4gbnVtYmVyLFxuICBkYXRhOiB7eTogbnVtYmVyW10sIHg6IG51bWJlcltdfVxuKTogbnVtYmVyIHtcbiAgY29uc3QgcGkgPSBNYXRoLlBJO1xuICBsZXQgc2lnbWEgPSAwO1xuICBsZXQgc2lnbWFTcSA9IDA7XG5cbiAgbGV0IHJlc2lkdWVzU3F1YXJlcyA9IG5ldyBGbG9hdDMyQXJyYXkoZGF0YS55Lmxlbmd0aCk7XG4gIGZvcihsZXQgaSA9IDA7IGkgPCBkYXRhLnkubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBvYnMgPSBkYXRhLnhbaV07XG4gICAgY29uc3QgcHJlZCA9IHRhcmdldEZ1bmMoZGF0YS55W2ldKTtcbiAgICByZXNpZHVlc1NxdWFyZXNbaV0gPSBNYXRoLnBvdyhvYnMgLSBwcmVkLCAyKTtcbiAgfVxuXG4gIGZvcihsZXQgaSA9IDA7IGkgPCByZXNpZHVlc1NxdWFyZXMubGVuZ3RoOyBpKyspXG4gICAgc2lnbWFTcSArPSByZXNpZHVlc1NxdWFyZXNbaV07XG4gIHNpZ21hU3EgLz0gcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDtcbiAgc2lnbWEgPSBNYXRoLnNxcnQoc2lnbWFTcSk7XG5cbiAgcmV0dXJuIHNpZ21hO1xufVxuXG5mdW5jdGlvbiBvYmplY3RpdmVOb3JtYWxDb25zdGFudCAoXG4gIHRhcmdldEZ1bmM6IChwYXJhbXM6IG51bWJlcltdLCB4OiBudW1iZXIpID0+IG51bWJlcixcbiAgZGF0YToge3k6IG51bWJlcltdLCB4OiBudW1iZXJbXX0sXG4gIHBhcmFtczogbnVtYmVyW11cbik6IExpa2VsaWhvb2Qge1xuICAvL2Fzc3VyZSBvYnNlcnZlZCBhbmQgYXJncyBzYW1lIGxlbmd0aFxuICBjb25zdCBwaSA9IE1hdGguUEk7XG4gIGxldCBzaWdtYSA9IDA7XG4gIGxldCBzaWdtYVNxID0gMDtcbiAgbGV0IGxpa2VsaWhvb2QgPSAwO1xuXG4gIGxldCByZXNpZHVlc1NxdWFyZXMgPSBuZXcgRmxvYXQzMkFycmF5KGRhdGEueC5sZW5ndGgpO1xuICBmb3IobGV0IGkgPSAwOyBpIDwgZGF0YS54Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qgb2JzID0gZGF0YS55W2ldO1xuICAgIGNvbnN0IHByZWQgPSB0YXJnZXRGdW5jKHBhcmFtcywgZGF0YS54W2ldKTtcbiAgICByZXNpZHVlc1NxdWFyZXNbaV0gPSBNYXRoLnBvdyhvYnMgLSBwcmVkLCAyKTtcbiAgfVxuXG4gIGZvcihsZXQgaSA9IDA7IGkgPCByZXNpZHVlc1NxdWFyZXMubGVuZ3RoOyBpKyspXG4gICAgc2lnbWFTcSArPSByZXNpZHVlc1NxdWFyZXNbaV07XG4gIHNpZ21hU3EgLz0gcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDtcbiAgc2lnbWEgPSBNYXRoLnNxcnQoc2lnbWFTcSk7XG5cbiAgZm9yKGxldCBpID0gMDsgaSA8IHJlc2lkdWVzU3F1YXJlcy5sZW5ndGg7IGkrKylcbiAgICBsaWtlbGlob29kICs9IHJlc2lkdWVzU3F1YXJlc1tpXS9zaWdtYVNxICsgTWF0aC5sb2coMiAqIHBpICogc2lnbWFTcSk7XG5cbiAgcmV0dXJuIHt2YWx1ZTogLWxpa2VsaWhvb2QsIGNvbnN0OiBzaWdtYSwgbXVsdDogMH07XG59XG5cbmZ1bmN0aW9uIG9iamVjdGl2ZU5vcm1hbFByb3BvcnRpb25hbCAoXG50YXJnZXRGdW5jOiAocGFyYW1zOiBudW1iZXJbXSwgeDogbnVtYmVyKSA9PiBudW1iZXIsXG5kYXRhOiB7eTogbnVtYmVyW10sIHg6IG51bWJlcltdfSxcbnBhcmFtczogbnVtYmVyW11cbik6IExpa2VsaWhvb2Qge1xuICAvL2Fzc3VyZSBvYnNlcnZlZCBhbmQgYXJncyBzYW1lIGxlbmd0aFxuICBjb25zdCBwaSA9IE1hdGguUEk7XG4gIGxldCBzaWdtYSA9IDA7XG4gIGxldCBzaWdtYVNxID0gMDtcbiAgbGV0IGxpa2VsaWhvb2QgPSAwO1xuXG4gIGxldCByZXNpZHVlc1NxdWFyZXMgPSBuZXcgRmxvYXQzMkFycmF5KGRhdGEueC5sZW5ndGgpO1xuICBmb3IobGV0IGkgPSAwOyBpIDwgZGF0YS54Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qgb2JzID0gZGF0YS55W2ldO1xuICAgIGNvbnN0IHByZWQgPSB0YXJnZXRGdW5jKHBhcmFtcywgZGF0YS54W2ldKVxuICAgIHJlc2lkdWVzU3F1YXJlc1tpXSA9IE1hdGgucG93KG9icyAtIHByZWQsIDIpO1xuICB9XG5cbiAgZm9yKGxldCBpID0gMDsgaSA8IHJlc2lkdWVzU3F1YXJlcy5sZW5ndGg7IGkrKylcbiAgICBzaWdtYVNxICs9IHJlc2lkdWVzU3F1YXJlc1tpXTtcbiAgc2lnbWFTcSAvPSByZXNpZHVlc1NxdWFyZXMubGVuZ3RoO1xuICBzaWdtYSA9IE1hdGguc3FydChzaWdtYVNxKTtcblxuICBmb3IobGV0IGkgPSAwOyBpIDwgcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDsgaSsrKVxuICAgIGxpa2VsaWhvb2QgKz0gcmVzaWR1ZXNTcXVhcmVzW2ldL3NpZ21hU3EgKyBNYXRoLmxvZygyKnBpKnNpZ21hU3EpO1xuXG4gIHJldHVybiB7dmFsdWU6IC1saWtlbGlob29kLCBjb25zdDogc2lnbWEsIG11bHQ6IDB9O1xufVxuIl19
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml0LWN1cnZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZml0LWN1cnZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1CQUFtQixDQUFBO0FBQ25ELHNCQUFzQjtBQUN0QixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDbkQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBZ0M1Qyw0R0FBNEc7QUFDNUcsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWU7SUFDN0MsUUFBUSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFDLFlBQVksRUFBRSxLQUFLLEVBQUMsQ0FBQztJQUMxRCxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBQyxDQUFDO0lBQ3JELFFBQVEsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFDLENBQUM7SUFDNUQsUUFBUSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFDLFlBQVksRUFBRSxLQUFLLEVBQUMsQ0FBQztJQUM1RCxRQUFRLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBQyxDQUFDO0lBQ3ZELFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFDLENBQUM7SUFDckQsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxF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bW9yeUJGR1N9IGZyb20gXCIuLi8uLi9sYmZncy9sYmZnc1wiXG4vL0B0cy1pZ25vcmU6IG5vIHR5cGVzXG5pbXBvcnQgKiBhcyBqU3RhdCBmcm9tICdqc3RhdCc7XG5pbXBvcnQge1Byb3BlcnR5fSBmcm9tIFwiZGF0YWdyb2stYXBpL3NyYy9lbnRpdGllc1wiO1xuaW1wb3J0IHtUWVBFfSBmcm9tIFwiZGF0YWdyb2stYXBpL3NyYy9jb25zdFwiO1xuXG50eXBlIExpa2VsaWhvb2QgPSB7XG4gIHZhbHVlOiBudW1iZXIsXG4gIGNvbnN0OiBudW1iZXIsXG4gIG11bHQ6IG51bWJlclxufTtcblxuZXhwb3J0IHR5cGUgRml0UGFyYW0gPSB7XG4gIHZhbHVlOiBudW1iZXI7XG4gIG1pbkJvdW5kPzogbnVtYmVyO1xuICBtYXhCb3VuZD86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpdFJlc3VsdCA9IHtcbiAgcGFyYW1ldGVyczogbnVtYmVyW10sXG4gIGZpdHRlZEN1cnZlOiAoeDpudW1iZXIpPT4gbnVtYmVyLFxuICBjb25maWRlbmNlVG9wOiAoeDpudW1iZXIpPT4gbnVtYmVyLFxuICBjb25maWRlbmNlQm90dG9tOiAoeDpudW1iZXIpPT4gbnVtYmVyLFxuXG4gIHJTcXVhcmVkPzogbnVtYmVyLFxuICBhdWM/OiBudW1iZXIsXG4gIGludmVydGVkPzogKHk6bnVtYmVyKT0+IG51bWJlcixcbiAgaW52ZXJ0ZWRUb3A/OiAoeTpudW1iZXIpPT4gbnVtYmVyLFxuICBpbnZlcnRlZEJvdHRvbT86ICh5Om51bWJlcik9PiBudW1iZXIsXG4gIGludGVyY2VwdFg6IG51bWJlciwgLy8gcGFyYW1ldGVyc1syXVxuICBpbnRlcmNlcHRZOiBudW1iZXIsIC8vIGZpdHRlZEN1cnZlW3BhcmFtZXRlcnNbMl1dXG4gIHNsb3BlOiBudW1iZXIsIC8vIHBhcmFtZXRlcnNbMV1cbiAgdG9wOiBudW1iZXIsIC8vIHBhcmFtZXRlcnNbMF1cbiAgYm90dG9tOiBudW1iZXIsIC8vIHBhcmFtZXRlcnNbM11cbn07XG5cbi8qKiBQcm9wZXJ0aWVzIHRoYXQgZGVzY3JpYmUge0BsaW5rIEZpdFJlc3VsdH0uIFVzZWZ1bCBmb3IgZWRpdGluZywgaW5pdGlhbGl6YXRpb24sIHRyYW5zZm9ybWF0aW9ucywgZXRjLiAqL1xuZXhwb3J0IGNvbnN0IGZpdFJlc3VsdFByb3BlcnRpZXM6IFByb3BlcnR5W10gPSBbXG4gIFByb3BlcnR5LmpzKCdyU3F1YXJlZCcsIFRZUEUuRkxPQVQsIHt1c2VyRWRpdGFibGU6IGZhbHNlfSksXG4gIFByb3BlcnR5LmpzKCdhdWMnLCBUWVBFLkZMT0FULCB7dXNlckVkaXRhYmxlOiBmYWxzZX0pLFxuICBQcm9wZXJ0eS5qcygnaW50ZXJjZXB0WScsIFRZUEUuRkxPQVQsIHt1c2VyRWRpdGFibGU6IGZhbHNlfSksXG4gIFByb3BlcnR5LmpzKCdpbnRlcmNlcHRYJywgVFlQRS5GTE9BVCwge3VzZXJFZGl0YWJsZTogZmFsc2V9KSxcbiAgUHJvcGVydHkuanMoJ3Nsb3BlJywgVFlQRS5GTE9BVCwge3VzZXJFZGl0YWJsZTogZmFsc2V9KSxcbiAgUHJvcGVydHkuanMoJ3RvcCcsIFRZUEUuRkxPQVQsIHt1c2VyRWRpdGFibGU6IGZhbHNlfSksXG4gIFByb3BlcnR5LmpzKCdib3R0b20nLCBUWVBFLkZMT0FULCB7dXNlckVkaXRhYmxlOiBmYWxzZX0pLFxuXTtcblxudHlwZSBPYmplY3RpdmVGdW5jdGlvbiA9ICh0YXJnZXRGdW5jOiAocGFyYW1zOiBudW1iZXJbXSwgeDogbnVtYmVyKSA9PiBudW1iZXIsXG4gIGRhdGE6IHt4OiBudW1iZXJbXSwgeTogbnVtYmVyW119LFxuICBwYXJhbXM6IG51bWJlcltdKSA9PiBMaWtlbGlob29kO1xuXG5cbmV4cG9ydCBlbnVtIEZpdEVycm9yTW9kZWwge1xuICBDb25zdGFudCxcbiAgUHJvcG9ydGlvbmFsXG59XG5cbmV4cG9ydCBjb25zdCBGSVRfRlVOQ1RJT05fU0lHTU9JRCA9ICdTaWdtb2lkJztcbmV4cG9ydCBjb25zdCBGSVRfRlVOQ1RJT05fTElORUFSID0gJ0xpbmVhcic7XG5cbi8vIGV4cG9ydCBjb25zdCBGSVRfU1RBVFNfUlNRVUFSRUQgPSAnclNxdWFyZWQnO1xuLy8gZXhwb3J0IGNvbnN0IEZJVF9TVEFUU19BVUMgPSAnYXVjJztcblxuXG5leHBvcnQgdHlwZSBGaXRGdW5jdGlvblR5cGUgPSAnU2lnbW9pZCcgfCAnTGluZWFyJztcblxuYWJzdHJhY3QgY2xhc3MgRml0RnVuY3Rpb24ge1xuICBhYnN0cmFjdCBnZXQgbmFtZSgpOiBzdHJpbmc7XG4gIGFic3RyYWN0IGdldCBwYXJhbWV0ZXJOYW1lcygpOiBzdHJpbmdbXTtcbiAgYWJzdHJhY3QgeShwYXJhbXM6IG51bWJlcltdLCB4OiBudW1iZXIpOiBudW1iZXI7XG4gIGFic3RyYWN0IGdldEluaXRpYWxQYXJhbWV0ZXJzKHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSk6IG51bWJlcltdO1xufVxuXG5cbmNsYXNzIExpbmVhckZ1bmN0aW9uIGV4dGVuZHMgRml0RnVuY3Rpb24ge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcgeyByZXR1cm4gRklUX0ZVTkNUSU9OX0xJTkVBUjsgfVxuXG4gIGdldCBwYXJhbWV0ZXJOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnU2xvcGUnLCAnSW50ZXJjZXB0J107XG4gIH1cblxuICB5KHBhcmFtczogbnVtYmVyW10sIHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgdGhyb3cgJ05vdCBpbXBsZW1lbnRlZCc7XG4gIH1cblxuICBnZXRJbml0aWFsUGFyYW1ldGVycyh4OiBudW1iZXJbXSwgeTogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gICAgdGhyb3cgJ05vdCBpbXBsZW1lbnRlZCc7XG4gIH1cbn1cblxuXG5jbGFzcyBTaWdtb2lkRnVuY3Rpb24gZXh0ZW5kcyBGaXRGdW5jdGlvbiB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7IHJldHVybiBGSVRfRlVOQ1RJT05fU0lHTU9JRDsgfVxuXG4gIGdldCBwYXJhbWV0ZXJOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnVG9wJywgJ0JvdHRvbScsICdTbG9wZScsICdJQzUwJ107XG4gIH1cblxuICB5KHBhcmFtczogbnVtYmVyW10sIHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgdGhyb3cgJ05vdCBpbXBsZW1lbnRlZCc7XG4gIH1cblxuICBnZXRJbml0aWFsUGFyYW1ldGVycyh4OiBudW1iZXJbXSwgeTogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gICAgdGhyb3cgJ05vdCBpbXBsZW1lbnRlZCc7XG4gIH1cbn1cblxuXG5leHBvcnQgY29uc3QgZml0RnVuY3Rpb25zOiB7W2luZGV4OiBzdHJpbmddOiBhbnl9ID0ge1xuICBGSVRfRlVOQ1RJT05fTElORUFSOiBuZXcgTGluZWFyRnVuY3Rpb24oKSxcbiAgRklUX0ZVTkNUSU9OX1NJR01PSUQ6IG5ldyBTaWdtb2lkRnVuY3Rpb24oKSxcbn07XG5cblxuZXhwb3J0IGludGVyZmFjZSBJRml0T3B0aW9ucyB7XG4gIGVycm9yTW9kZWw6IEZpdEVycm9yTW9kZWw7XG4gIGNvbmZpZGVuY2VMZXZlbDogbnVtYmVyO1xuICBzdGF0aXN0aWNzOiBib29sZWFuO1xufVxuXG5cbi8qKlxuICogc3RhdGlzdGljcyAtIHdoZXRoZXIgb3Igbm90IHRvIGNhbGN1bGF0ZSBmaXQgc3RhdGlzdGljcyAocG90ZW50aWFsbHkgY29tcHV0YXRpb25hbGx5IGludGVuc2l2ZSlcbiAqICovXG5leHBvcnQgZnVuY3Rpb24gZml0KGRhdGE6e3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0sXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogRml0UGFyYW1bXSxcbiAgICAgICAgICAgICAgICAgICAgY3VydmVGdW5jdGlvbjogKHBhcmFtVmFsdWVzOiBudW1iZXJbXSwgeDogbnVtYmVyKSA9PiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yTW9kZWw6IEZpdEVycm9yTW9kZWwsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZGVuY2VMZXZlbDogbnVtYmVyID0gMC4wNSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljczogYm9vbGVhbiA9IHRydWUpOiBGaXRSZXN1bHQge1xuXG4gIGxldCBwYXJhbVZhbHVlcyA9IHBhcmFtcy5tYXAocCA9PiBwLnZhbHVlKTtcbiAgbGV0IG9mOiBPYmplY3RpdmVGdW5jdGlvbjtcbiAgc3dpdGNoKGVycm9yTW9kZWwpIHtcbiAgICBjYXNlIEZpdEVycm9yTW9kZWwuQ29uc3RhbnQ6XG4gICAgICBvZiA9IG9iamVjdGl2ZU5vcm1hbENvbnN0YW50O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBGaXRFcnJvck1vZGVsLlByb3BvcnRpb25hbDpcbiAgICAgIG9mID0gb2JqZWN0aXZlTm9ybWFsUHJvcG9ydGlvbmFsO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIG9mID0gb2JqZWN0aXZlTm9ybWFsQ29uc3RhbnQ7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGxldCBpdGVyYXRpb25zID0gMDtcbiAgbGV0IGZpeGVkOiBudW1iZXJbXSA9IFtdO1xuICBsZXQgb3ZlckxpbWl0cyA9IHRydWU7XG5cbiAgbGV0IG9wdGltaXphYmxlID0ge1xuICAgIGdldFZhbHVlOiAocGFyYW1ldGVyczogbnVtYmVyW10pID0+IHtcbiAgICAgIHJldHVybiBvZihjdXJ2ZUZ1bmN0aW9uLCBkYXRhLCBwYXJhbWV0ZXJzKS52YWx1ZTtcbiAgICB9LFxuICAgIGdldEdyYWRpZW50OiAocGFyYW1ldGVyczogbnVtYmVyW10sIGdyYWRpZW50OiBudW1iZXJbXSkgPT4ge1xuICAgICAgY29uc3QgbGVuZ3RoID0gT2JqZWN0LmtleXMocGFyYW1ldGVycykubGVuZ3RoO1xuICAgICAgaXRlcmF0aW9ucysrO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtZXRlcnMubGVuZ3RoOyBpKyspXG4gICAgICAgIGdyYWRpZW50W2ldID0gZml4ZWQuaW5jbHVkZXMoaSkgPyAwIDogZ2V0T2JqZWN0aXZlRGVyaXZhdGl2ZShvZiwgY3VydmVGdW5jdGlvbiwgZGF0YSwgcGFyYW1ldGVycywgaSk7XG5cbiAgICAgIHJldHVybiBncmFkaWVudDtcbiAgICB9XG4gIH07XG5cbiAgd2hpbGUgKG92ZXJMaW1pdHMpIHtcbiAgICBsaW1pdGVkTWVtb3J5QkZHUyhvcHRpbWl6YWJsZSwgcGFyYW1WYWx1ZXMpO1xuICAgIGxpbWl0ZWRNZW1vcnlCRkdTKG9wdGltaXphYmxlLCBwYXJhbVZhbHVlcyk7XG5cbiAgICBvdmVyTGltaXRzID0gZmFsc2U7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbVZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYocGFyYW1zW2ldLm1heEJvdW5kICE9PSB1bmRlZmluZWQgJiYgcGFyYW1WYWx1ZXNbaV0gPiBwYXJhbXNbaV0ubWF4Qm91bmQhKSB7XG4gICAgICAgIG92ZXJMaW1pdHMgPSB0cnVlO1xuICAgICAgICBmaXhlZC5wdXNoKGkpO1xuICAgICAgICBwYXJhbVZhbHVlc1tpXSA9IHBhcmFtc1tpXS5tYXhCb3VuZCE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYocGFyYW1zW2ldLm1pbkJvdW5kICE9PSB1bmRlZmluZWQgJiYgcGFyYW1WYWx1ZXNbaV0gPCBwYXJhbXNbaV0ubWluQm91bmQhKSB7XG4gICAgICAgIG92ZXJMaW1pdHMgPSB0cnVlO1xuICAgICAgICBmaXhlZC5wdXNoKGkpO1xuICAgICAgICBwYXJhbVZhbHVlc1tpXSA9IHBhcmFtc1tpXS5taW5Cb3VuZCE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCBmaXR0ZWRDdXJ2ZSA9ICh4OiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gY3VydmVGdW5jdGlvbihwYXJhbVZhbHVlcywgeCk7XG4gIH1cblxuICBsZXQgZXJyb3IgPSBlcnJvck1vZGVsID09IEZpdEVycm9yTW9kZWwuUHJvcG9ydGlvbmFsID9cbiAgb2YoY3VydmVGdW5jdGlvbiwgZGF0YSwgcGFyYW1WYWx1ZXMpLm11bHQgOlxuICBvZihjdXJ2ZUZ1bmN0aW9uLCBkYXRhLCBwYXJhbVZhbHVlcykuY29uc3Q7XG5cbiAgbGV0IHN0dWRlbnRRID0galN0YXQuc3R1ZGVudHQuaW52KDEgLSBjb25maWRlbmNlTGV2ZWwvMiwgZGF0YS54Lmxlbmd0aCAtIHBhcmFtVmFsdWVzLmxlbmd0aCk7XG5cbiAgbGV0IHRvcCA9ICh4OiBudW1iZXIpID0+e1xuICAgIGxldCB2YWx1ZSA9IGN1cnZlRnVuY3Rpb24ocGFyYW1WYWx1ZXMsIHgpO1xuICAgIGlmIChlcnJvck1vZGVsID09IEZpdEVycm9yTW9kZWwuQ29uc3RhbnQpXG4gICAgICByZXR1cm4gIHZhbHVlICsgc3R1ZGVudFEqZXJyb3IvTWF0aC5zcXJ0KGRhdGEueC5sZW5ndGgpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiAgdmFsdWUgKyBzdHVkZW50USooTWF0aC5hYnModmFsdWUpKmVycm9yL01hdGguc3FydChkYXRhLngubGVuZ3RoKSk7XG4gIH1cblxuICBsZXQgYm90dG9tID0gKHg6IG51bWJlcikgPT4ge1xuICAgIGxldCB2YWx1ZSA9IGN1cnZlRnVuY3Rpb24ocGFyYW1WYWx1ZXMsIHgpO1xuICAgIGlmIChlcnJvck1vZGVsID09IEZpdEVycm9yTW9kZWwuQ29uc3RhbnQpXG4gICAgICByZXR1cm4gIHZhbHVlIC0gc3R1ZGVudFEqZXJyb3IvTWF0aC5zcXJ0KGRhdGEueC5sZW5ndGgpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiAgdmFsdWUgLSBzdHVkZW50USooTWF0aC5hYnModmFsdWUpKmVycm9yL01hdGguc3FydChkYXRhLngubGVuZ3RoKSk7XG4gIH1cblxuICBsZXQgaW52OiAoeTogbnVtYmVyKSA9PiBudW1iZXIgPSAoeTogbnVtYmVyKSA9PiB7cmV0dXJuIDA7fTtcbiAgbGV0IGludlRvcDogKHk6IG51bWJlcikgPT4gbnVtYmVyID0gKHk6IG51bWJlcikgPT4ge3JldHVybiAwO307XG4gIGxldCBpbnZCb3R0b206ICh5OiBudW1iZXIpID0+IG51bWJlciA9ICh5OiBudW1iZXIpID0+IHtyZXR1cm4gMDt9O1xuXG4gIGlmIChzdGF0aXN0aWNzKSB7XG4gICAgaW52ID0gKHk6IG51bWJlcikgPT4ge1xuICAgICAgLy9zaG91bGQgY2hlY2sgaWYgbW9yZSB0aGFuIGJvdHRvbSBhbmQgbGVzcyB0aGFuIHRvcFxuICAgICAgcmV0dXJuIHBhcmFtVmFsdWVzWzJdL01hdGgucG93KChwYXJhbVZhbHVlc1swXSAtIHkpLyh5IC0gcGFyYW1WYWx1ZXNbM10pLCAxL3BhcmFtVmFsdWVzWzFdKTtcbiAgICB9O1xuXG4gICAgbGV0IGVycm9yID0gZ2V0SW52RXJyb3IoaW52LCBkYXRhKTtcblxuICAgIGludlRvcCA9ICh5OiBudW1iZXIpID0+e1xuICAgICAgbGV0IHZhbHVlID0gaW52KHkpO1xuICAgICAgcmV0dXJuICB2YWx1ZSArIHN0dWRlbnRRKmVycm9yL01hdGguc3FydChkYXRhLnkubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpbnZCb3R0b20gPSAoeTogbnVtYmVyKSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSBpbnYoeSk7XG4gICAgICByZXR1cm4gIHZhbHVlIC0gc3R1ZGVudFEqZXJyb3IvTWF0aC5zcXJ0KGRhdGEueS5sZW5ndGgpO1xuICAgIH1cbiAgfVxuXG4gIGxldCBmaXRSZXM6IEZpdFJlc3VsdCA9IHtcbiAgICBwYXJhbWV0ZXJzOiBwYXJhbVZhbHVlcyxcbiAgICBmaXR0ZWRDdXJ2ZTogZml0dGVkQ3VydmUsXG4gICAgY29uZmlkZW5jZVRvcDogdG9wLFxuICAgIGNvbmZpZGVuY2VCb3R0b206IGJvdHRvbSxcbiAgICByU3F1YXJlZDogc3RhdGlzdGljcyA/IGdldERldENvZWZmKGZpdHRlZEN1cnZlLCBkYXRhKSA6IHVuZGVmaW5lZCxcbiAgICBhdWM6IHN0YXRpc3RpY3MgPyBnZXRBdWMoZml0dGVkQ3VydmUsIGRhdGEpIDogdW5kZWZpbmVkLFxuICAgIGludmVydGVkOiBzdGF0aXN0aWNzID8gaW52IDogdW5kZWZpbmVkLFxuICAgIGludmVydGVkVG9wOiBzdGF0aXN0aWNzID8gaW52VG9wIDogdW5kZWZpbmVkLFxuICAgIGludmVydGVkQm90dG9tOiBzdGF0aXN0aWNzID8gaW52Qm90dG9tIDogdW5kZWZpbmVkLFxuICAgIGludGVyY2VwdFggOiBwYXJhbVZhbHVlc1syXSxcbiAgICBpbnRlcmNlcHRZIDogZml0dGVkQ3VydmUocGFyYW1WYWx1ZXNbMl0pLFxuICAgIHNsb3BlOiBwYXJhbVZhbHVlc1sxXSxcbiAgICB0b3A6IHBhcmFtVmFsdWVzWzBdLFxuICAgIGJvdHRvbTogcGFyYW1WYWx1ZXNbM11cbiAgfTtcblxuICByZXR1cm4gZml0UmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbW9pZChwYXJhbXM6IG51bWJlcltdLCB4OiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBBID0gcGFyYW1zWzBdO1xuICBjb25zdCBCID0gcGFyYW1zWzFdO1xuICBjb25zdCBDID0gcGFyYW1zWzJdO1xuICBjb25zdCBEID0gcGFyYW1zWzNdO1xuICBjb25zdCByZXMgPSBEICsgKEEgLSBEKS8oMSArIE1hdGgucG93KDEwLCAoeCAtIEMpKkIpKTtcbiAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gZ2V0T2JqZWN0aXZlRGVyaXZhdGl2ZShvZjogT2JqZWN0aXZlRnVuY3Rpb24sIGN1cnZlRnVuY3Rpb246IChwYXJhbXM6IG51bWJlcltdLCB4OiBudW1iZXIpID0+IG51bWJlcixcbiAgICBkYXRhOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSwgcGFyYW1zOiBudW1iZXJbXSwgc2VsZWN0ZWRQYXJhbTogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IHN0ZXAgPSBwYXJhbXNbc2VsZWN0ZWRQYXJhbV0qMC4wMDAxO1xuICBzdGVwID0gc3RlcCA9PSAwID8gMC4wMDEgOiBzdGVwO1xuICBsZXQgcGFyYW1zVG9wOiBudW1iZXJbXSA9IFtdO1xuICBsZXQgcGFyYW1zQm90dG9tOiBudW1iZXJbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtcy5sZW5ndGg7IGkrKykge1xuICAgIGlmKGkgPT0gc2VsZWN0ZWRQYXJhbSkge1xuICAgICAgcGFyYW1zVG9wLnB1c2gocGFyYW1zW2ldICsgc3RlcCk7XG4gICAgICBwYXJhbXNCb3R0b20ucHVzaChwYXJhbXNbaV0gLSBzdGVwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyYW1zVG9wLnB1c2gocGFyYW1zW2ldKTtcbiAgICAgIHBhcmFtc0JvdHRvbS5wdXNoKHBhcmFtc1tpXSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGRydlRvcCA9IG9mKGN1cnZlRnVuY3Rpb24sIGRhdGEsIHBhcmFtc1RvcCkudmFsdWU7XG4gIGNvbnN0IGRydkJvdHRvbSA9IG9mKGN1cnZlRnVuY3Rpb24sIGRhdGEsIHBhcmFtc0JvdHRvbSkudmFsdWU7XG5cbiAgcmV0dXJuIChkcnZUb3AgLSBkcnZCb3R0b20pLygyKnN0ZXApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXVjKGZpdHRlZEN1cnZlOiAoeDogbnVtYmVyKSA9PiBudW1iZXIsXG4gICAgICAgICAgICAgICAgZGF0YToge3g6IG51bWJlcltdLCB5OiBudW1iZXJbXX0pOiBudW1iZXIge1xuICBsZXQgYXVjID0gMDtcblxuICBsZXQgbWluID0gTWF0aC5taW4oLi4uZGF0YS54KTtcbiAgbGV0IG1heCA9IE1hdGgubWF4KC4uLmRhdGEueCk7XG4gIGNvbnN0IGludGVncmF0aW9uU3RlcCA9IChtYXggLSBtaW4pLzEwMDA7XG5cbiAgZm9yKGxldCB4ID0gbWluOyB4IDwgbWF4OyB4Kz0gaW50ZWdyYXRpb25TdGVwKVxuICAgIGF1YyArPSBpbnRlZ3JhdGlvblN0ZXAqZml0dGVkQ3VydmUoeCk7XG5cbiAgcmV0dXJuIGF1Yztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERldENvZWZmKGZpdHRlZEN1cnZlOiAoeDogbnVtYmVyKSA9PiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICBkYXRhOiB7eDogbnVtYmVyW10sIHk6IG51bWJlcltdfSk6IG51bWJlciB7XG4gIGxldCBzc1JlcyA9IDA7XG4gIGxldCBzc1RvdCA9IDA7XG5cbiAgY29uc3QgeU1lYW4gPSBqU3RhdC5tZWFuKGRhdGEueSk7XG5cbiAgZm9yKGxldCBpID0gMDsgaSA8IGRhdGEueC5sZW5ndGg7IGkrKykge1xuICAgIHNzUmVzICs9IE1hdGgucG93KGRhdGEueVtpXSAtIGZpdHRlZEN1cnZlKGRhdGEueFtpXSksIDIpO1xuICAgIHNzVG90ICs9IE1hdGgucG93KGRhdGEueVtpXSAtIHlNZWFuLCAyKTtcbiAgfVxuXG4gIHJldHVybiAxIC0gc3NSZXMvc3NUb3Q7XG59XG5cbmZ1bmN0aW9uIGdldEludkVycm9yIChcbiAgdGFyZ2V0RnVuYzogKHk6IG51bWJlcikgPT4gbnVtYmVyLFxuICBkYXRhOiB7eTogbnVtYmVyW10sIHg6IG51bWJlcltdfVxuKTogbnVtYmVyIHtcbiAgY29uc3QgcGkgPSBNYXRoLlBJO1xuICBsZXQgc2lnbWEgPSAwO1xuICBsZXQgc2lnbWFTcSA9IDA7XG5cbiAgbGV0IHJlc2lkdWVzU3F1YXJlcyA9IG5ldyBGbG9hdDMyQXJyYXkoZGF0YS55Lmxlbmd0aCk7XG4gIGZvcihsZXQgaSA9IDA7IGkgPCBkYXRhLnkubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBvYnMgPSBkYXRhLnhbaV07XG4gICAgY29uc3QgcHJlZCA9IHRhcmdldEZ1bmMoZGF0YS55W2ldKTtcbiAgICByZXNpZHVlc1NxdWFyZXNbaV0gPSBNYXRoLnBvdyhvYnMgLSBwcmVkLCAyKTtcbiAgfVxuXG4gIGZvcihsZXQgaSA9IDA7IGkgPCByZXNpZHVlc1NxdWFyZXMubGVuZ3RoOyBpKyspXG4gICAgc2lnbWFTcSArPSByZXNpZHVlc1NxdWFyZXNbaV07XG4gIHNpZ21hU3EgLz0gcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDtcbiAgc2lnbWEgPSBNYXRoLnNxcnQoc2lnbWFTcSk7XG5cbiAgcmV0dXJuIHNpZ21hO1xufVxuXG5mdW5jdGlvbiBvYmplY3RpdmVOb3JtYWxDb25zdGFudCAoXG4gIHRhcmdldEZ1bmM6IChwYXJhbXM6IG51bWJlcltdLCB4OiBudW1iZXIpID0+IG51bWJlcixcbiAgZGF0YToge3k6IG51bWJlcltdLCB4OiBudW1iZXJbXX0sXG4gIHBhcmFtczogbnVtYmVyW11cbik6IExpa2VsaWhvb2Qge1xuICAvL2Fzc3VyZSBvYnNlcnZlZCBhbmQgYXJncyBzYW1lIGxlbmd0aFxuICBjb25zdCBwaSA9IE1hdGguUEk7XG4gIGxldCBzaWdtYSA9IDA7XG4gIGxldCBzaWdtYVNxID0gMDtcbiAgbGV0IGxpa2VsaWhvb2QgPSAwO1xuXG4gIGxldCByZXNpZHVlc1NxdWFyZXMgPSBuZXcgRmxvYXQzMkFycmF5KGRhdGEueC5sZW5ndGgpO1xuICBmb3IobGV0IGkgPSAwOyBpIDwgZGF0YS54Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qgb2JzID0gZGF0YS55W2ldO1xuICAgIGNvbnN0IHByZWQgPSB0YXJnZXRGdW5jKHBhcmFtcywgZGF0YS54W2ldKTtcbiAgICByZXNpZHVlc1NxdWFyZXNbaV0gPSBNYXRoLnBvdyhvYnMgLSBwcmVkLCAyKTtcbiAgfVxuXG4gIGZvcihsZXQgaSA9IDA7IGkgPCByZXNpZHVlc1NxdWFyZXMubGVuZ3RoOyBpKyspXG4gICAgc2lnbWFTcSArPSByZXNpZHVlc1NxdWFyZXNbaV07XG4gIHNpZ21hU3EgLz0gcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDtcbiAgc2lnbWEgPSBNYXRoLnNxcnQoc2lnbWFTcSk7XG5cbiAgZm9yKGxldCBpID0gMDsgaSA8IHJlc2lkdWVzU3F1YXJlcy5sZW5ndGg7IGkrKylcbiAgICBsaWtlbGlob29kICs9IHJlc2lkdWVzU3F1YXJlc1tpXS9zaWdtYVNxICsgTWF0aC5sb2coMiAqIHBpICogc2lnbWFTcSk7XG5cbiAgcmV0dXJuIHt2YWx1ZTogLWxpa2VsaWhvb2QsIGNvbnN0OiBzaWdtYSwgbXVsdDogMH07XG59XG5cbmZ1bmN0aW9uIG9iamVjdGl2ZU5vcm1hbFByb3BvcnRpb25hbCAoXG50YXJnZXRGdW5jOiAocGFyYW1zOiBudW1iZXJbXSwgeDogbnVtYmVyKSA9PiBudW1iZXIsXG5kYXRhOiB7eTogbnVtYmVyW10sIHg6IG51bWJlcltdfSxcbnBhcmFtczogbnVtYmVyW11cbik6IExpa2VsaWhvb2Qge1xuICAvL2Fzc3VyZSBvYnNlcnZlZCBhbmQgYXJncyBzYW1lIGxlbmd0aFxuICBjb25zdCBwaSA9IE1hdGguUEk7XG4gIGxldCBzaWdtYSA9IDA7XG4gIGxldCBzaWdtYVNxID0gMDtcbiAgbGV0IGxpa2VsaWhvb2QgPSAwO1xuXG4gIGxldCByZXNpZHVlc1NxdWFyZXMgPSBuZXcgRmxvYXQzMkFycmF5KGRhdGEueC5sZW5ndGgpO1xuICBmb3IobGV0IGkgPSAwOyBpIDwgZGF0YS54Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qgb2JzID0gZGF0YS55W2ldO1xuICAgIGNvbnN0IHByZWQgPSB0YXJnZXRGdW5jKHBhcmFtcywgZGF0YS54W2ldKVxuICAgIHJlc2lkdWVzU3F1YXJlc1tpXSA9IE1hdGgucG93KG9icyAtIHByZWQsIDIpO1xuICB9XG5cbiAgZm9yKGxldCBpID0gMDsgaSA8IHJlc2lkdWVzU3F1YXJlcy5sZW5ndGg7IGkrKylcbiAgICBzaWdtYVNxICs9IHJlc2lkdWVzU3F1YXJlc1tpXTtcbiAgc2lnbWFTcSAvPSByZXNpZHVlc1NxdWFyZXMubGVuZ3RoO1xuICBzaWdtYSA9IE1hdGguc3FydChzaWdtYVNxKTtcblxuICBmb3IobGV0IGkgPSAwOyBpIDwgcmVzaWR1ZXNTcXVhcmVzLmxlbmd0aDsgaSsrKVxuICAgIGxpa2VsaWhvb2QgKz0gcmVzaWR1ZXNTcXVhcmVzW2ldL3NpZ21hU3EgKyBNYXRoLmxvZygyKnBpKnNpZ21hU3EpO1xuXG4gIHJldHVybiB7dmFsdWU6IC1saWtlbGlob29kLCBjb25zdDogc2lnbWEsIG11bHQ6IDB9O1xufVxuIl19
|
package/tsconfig.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// "incremental": true, /* Enable incremental compilation */
|
|
7
7
|
"target": "es2018", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
|
|
8
8
|
"module": "es2020", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
|
|
9
|
-
"lib": ["
|
|
9
|
+
"lib": ["ES2021", "dom"], /* Specify library files to be included in the compilation. */
|
|
10
10
|
// "allowJs": true, /* Allow javascript files to be compiled. */
|
|
11
11
|
// "checkJs": true, /* Report errors in .js files. */
|
|
12
12
|
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */
|