aws-delivlib 14.0.20 → 14.0.21
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/cdk.out/{asset.7ada94e893d605ebbcf2f5b3bedc83bad3c704ab7892c1f2af45bfd79fb751e7 → asset.c9d6890bf51cba0c2d0753ecedfcbe1d4b4b727a2b56300b2da0e4e0270409c6}/index.js +4 -4
- package/cdk.out/delivlib-test.assets.json +5 -5
- package/cdk.out/delivlib-test.template.json +1 -1
- package/cdk.out/manifest.json +1 -1
- package/cdk.out/tree.json +1 -1
- package/lib/package-integrity/handler/integrity.js +4 -3
- package/lib/package-integrity/handler/integrity.ts +3 -2
- package/lib/package-integrity/handler/validate.bundle.js +1498 -334
- package/lib/package-integrity/handler/validate.sh +0 -0
- package/package.json +3 -1
|
@@ -1434,9 +1434,9 @@ var require_src = __commonJS({
|
|
|
1434
1434
|
}
|
|
1435
1435
|
});
|
|
1436
1436
|
|
|
1437
|
-
// node_modules/follow-redirects/debug.js
|
|
1437
|
+
// node_modules/axios/node_modules/follow-redirects/debug.js
|
|
1438
1438
|
var require_debug = __commonJS({
|
|
1439
|
-
"node_modules/follow-redirects/debug.js"(exports, module2) {
|
|
1439
|
+
"node_modules/axios/node_modules/follow-redirects/debug.js"(exports, module2) {
|
|
1440
1440
|
var debug;
|
|
1441
1441
|
module2.exports = function() {
|
|
1442
1442
|
if (!debug) {
|
|
@@ -1454,9 +1454,9 @@ var require_debug = __commonJS({
|
|
|
1454
1454
|
}
|
|
1455
1455
|
});
|
|
1456
1456
|
|
|
1457
|
-
// node_modules/follow-redirects/index.js
|
|
1457
|
+
// node_modules/axios/node_modules/follow-redirects/index.js
|
|
1458
1458
|
var require_follow_redirects = __commonJS({
|
|
1459
|
-
"node_modules/follow-redirects/index.js"(exports, module2) {
|
|
1459
|
+
"node_modules/axios/node_modules/follow-redirects/index.js"(exports, module2) {
|
|
1460
1460
|
var url = require("url");
|
|
1461
1461
|
var URL = url.URL;
|
|
1462
1462
|
var http = require("http");
|
|
@@ -239,21 +239,21 @@
|
|
|
239
239
|
}
|
|
240
240
|
}
|
|
241
241
|
},
|
|
242
|
-
"
|
|
242
|
+
"c9d6890bf51cba0c2d0753ecedfcbe1d4b4b727a2b56300b2da0e4e0270409c6": {
|
|
243
243
|
"source": {
|
|
244
|
-
"path": "asset.
|
|
244
|
+
"path": "asset.c9d6890bf51cba0c2d0753ecedfcbe1d4b4b727a2b56300b2da0e4e0270409c6",
|
|
245
245
|
"packaging": "zip"
|
|
246
246
|
},
|
|
247
247
|
"destinations": {
|
|
248
248
|
"712950704752-us-east-1": {
|
|
249
249
|
"bucketName": "cdk-hnb659fds-assets-712950704752-us-east-1",
|
|
250
|
-
"objectKey": "
|
|
250
|
+
"objectKey": "c9d6890bf51cba0c2d0753ecedfcbe1d4b4b727a2b56300b2da0e4e0270409c6.zip",
|
|
251
251
|
"region": "us-east-1",
|
|
252
252
|
"assumeRoleArn": "arn:${AWS::Partition}:iam::712950704752:role/cdk-hnb659fds-file-publishing-role-712950704752-us-east-1"
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
255
|
},
|
|
256
|
-
"
|
|
256
|
+
"fc5f9181c034d576ac50ca077daab8d95da6d25358a4f933f7b41292cec42455": {
|
|
257
257
|
"source": {
|
|
258
258
|
"path": "delivlib-test.template.json",
|
|
259
259
|
"packaging": "file"
|
|
@@ -261,7 +261,7 @@
|
|
|
261
261
|
"destinations": {
|
|
262
262
|
"712950704752-us-east-1": {
|
|
263
263
|
"bucketName": "cdk-hnb659fds-assets-712950704752-us-east-1",
|
|
264
|
-
"objectKey": "
|
|
264
|
+
"objectKey": "fc5f9181c034d576ac50ca077daab8d95da6d25358a4f933f7b41292cec42455.json",
|
|
265
265
|
"region": "us-east-1",
|
|
266
266
|
"assumeRoleArn": "arn:${AWS::Partition}:iam::712950704752:role/cdk-hnb659fds-file-publishing-role-712950704752-us-east-1"
|
|
267
267
|
}
|
|
@@ -6304,7 +6304,7 @@
|
|
|
6304
6304
|
"Properties": {
|
|
6305
6305
|
"Code": {
|
|
6306
6306
|
"S3Bucket": "cdk-hnb659fds-assets-712950704752-us-east-1",
|
|
6307
|
-
"S3Key": "
|
|
6307
|
+
"S3Key": "c9d6890bf51cba0c2d0753ecedfcbe1d4b4b727a2b56300b2da0e4e0270409c6.zip"
|
|
6308
6308
|
},
|
|
6309
6309
|
"Role": {
|
|
6310
6310
|
"Fn::GetAtt": [
|
package/cdk.out/manifest.json
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"validateOnSynth": false,
|
|
24
24
|
"assumeRoleArn": "arn:${AWS::Partition}:iam::712950704752:role/cdk-hnb659fds-deploy-role-712950704752-us-east-1",
|
|
25
25
|
"cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::712950704752:role/cdk-hnb659fds-cfn-exec-role-712950704752-us-east-1",
|
|
26
|
-
"stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-712950704752-us-east-1/
|
|
26
|
+
"stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-712950704752-us-east-1/fc5f9181c034d576ac50ca077daab8d95da6d25358a4f933f7b41292cec42455.json",
|
|
27
27
|
"requiresBootstrapStackVersion": 6,
|
|
28
28
|
"bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version",
|
|
29
29
|
"additionalDependencies": [
|
package/cdk.out/tree.json
CHANGED
|
@@ -8839,7 +8839,7 @@
|
|
|
8839
8839
|
"aws:cdk:cloudformation:props": {
|
|
8840
8840
|
"code": {
|
|
8841
8841
|
"s3Bucket": "cdk-hnb659fds-assets-712950704752-us-east-1",
|
|
8842
|
-
"s3Key": "
|
|
8842
|
+
"s3Key": "c9d6890bf51cba0c2d0753ecedfcbe1d4b4b727a2b56300b2da0e4e0270409c6.zip"
|
|
8843
8843
|
},
|
|
8844
8844
|
"role": {
|
|
8845
8845
|
"Fn::GetAtt": [
|
|
@@ -28,12 +28,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.get = exports.download = exports.jsonGet = exports.PyPIArtifactIntegrity = exports.NpmArtifactIntegrity = exports.RepositoryIntegrity = exports.ArtifactIntegrity = void 0;
|
|
30
30
|
const child_process_1 = require("child_process");
|
|
31
|
-
const https = __importStar(require("https"));
|
|
32
31
|
const os = __importStar(require("os"));
|
|
33
32
|
const path = __importStar(require("path"));
|
|
34
33
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
35
34
|
const adm_zip_1 = __importDefault(require("adm-zip"));
|
|
36
35
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
36
|
+
const follow = __importStar(require("follow-redirects"));
|
|
37
|
+
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
37
38
|
const fs = __importStar(require("fs-extra"));
|
|
38
39
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
39
40
|
const jstream = __importStar(require("JSONStream"));
|
|
@@ -226,7 +227,7 @@ async function download(url, targetFile) {
|
|
|
226
227
|
exports.download = download;
|
|
227
228
|
async function get(url, handler, options = {}) {
|
|
228
229
|
return new Promise((ok, ko) => {
|
|
229
|
-
const request = https.get(url, options, (res) => {
|
|
230
|
+
const request = follow.https.get(url, options, (res) => {
|
|
230
231
|
if (res.statusCode !== 200) {
|
|
231
232
|
const error = new Error(`GET ${url} - HTTP ${res.statusCode} (${res.statusMessage})`);
|
|
232
233
|
Error.captureStackTrace(error);
|
|
@@ -239,4 +240,4 @@ async function get(url, handler, options = {}) {
|
|
|
239
240
|
});
|
|
240
241
|
}
|
|
241
242
|
exports.get = get;
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW50ZWdyaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQXlDO0FBRXpDLDZDQUErQjtBQUMvQix1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLDZEQUE2RDtBQUM3RCxzREFBNkI7QUFDN0IsNkRBQTZEO0FBQzdELDZDQUErQjtBQUMvQiw2REFBNkQ7QUFDN0Qsb0RBQXNDO0FBQ3RDLDZEQUE2RDtBQUM3RCx5Q0FBMkI7QUFvQjNCOzs7O0dBSUc7QUFDSCxNQUFzQixpQkFBaUI7SUErQnJDOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUF3QjtRQUU1QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFFbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFFMUUsSUFBSTtZQUNGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxhQUFhLENBQUMsQ0FBQztZQUM1RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLENBQUM7WUFDcEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDO1lBRWxELDBDQUEwQztZQUMxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBRWhFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVwQix1QkFBdUI7WUFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLE9BQU8sT0FBTyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFckMsaUNBQWlDO1lBQ2pDLElBQUksQ0FBQyxHQUFHLENBQUMsbUNBQW1DLFVBQVUsT0FBTyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFdkMsNkJBQTZCO1lBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsa0NBQWtDLFlBQVksT0FBTyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEtBQUssT0FBTyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLElBQUk7Z0JBQ0YsSUFBQSx3QkFBUSxFQUFDLFFBQVEsS0FBSyxJQUFJLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDbEY7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDZCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDO2FBQzlDO1lBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUVyQjtnQkFBUztZQUNSLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDeEI7SUFFSCxDQUFDO0lBRVMsR0FBRyxDQUFDLE9BQWU7UUFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVPLE9BQU8sQ0FBQyxHQUFXO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwRSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLEdBQUcsbUJBQW1CLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLEdBQUcsbUJBQW1CLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzVHO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBRUY7QUFqR0QsOENBaUdDO0FBbUJEOztHQUVHO0FBQ0gsTUFBYSxtQkFBbUI7SUFFOUIsWUFBb0MsS0FBK0I7UUFBL0IsVUFBSyxHQUFMLEtBQUssQ0FBMEI7SUFBRyxDQUFDO0lBRXZFOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFFBQVE7O1FBRW5CLHFFQUFxRTtRQUNyRSxxRUFBcUU7UUFDckUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLG1DQUFJLG9CQUFvQixDQUFDLENBQUM7UUFFN0YsSUFBSSxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzFCLEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFO1lBQ2hDLFFBQVEsUUFBUSxDQUFDLElBQUksRUFBRTtnQkFDckIsS0FBSyxJQUFJO29CQUNQLFNBQVMsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7b0JBQ3ZDLE1BQU07Z0JBQ1IsS0FBSyxRQUFRO29CQUNYLFNBQVMsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7b0JBQ3hDLE1BQU07Z0JBQ1IsS0FBSyxNQUFNLENBQUM7Z0JBQ1osS0FBSyxRQUFRLENBQUM7Z0JBQ2QsS0FBSyxJQUFJO29CQUNQLDJDQUEyQztvQkFDM0MsaUJBQWlCO29CQUNqQixNQUFNO2dCQUNSO29CQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3RFO1lBQ0QsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsTUFBTSxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUM5QztTQUNGO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FFRjtBQXRDRCxrREFzQ0M7QUFFRDs7R0FFRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsaUJBQWlCO0lBQTNEOztRQUVxQixRQUFHLEdBQUcsS0FBSyxDQUFDO0lBK0JqQyxDQUFDO0lBN0JXLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBcUIsRUFBRSxNQUFjO1FBQzVELE1BQU0sVUFBVSxHQUFHLE1BQU0sT0FBTyxDQUFDLDhCQUE4QixrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN2SixNQUFNLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBWSxFQUFFLFNBQWlCO1FBQ2xELE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRVMsaUJBQWlCLENBQUMsWUFBb0I7UUFFOUMsK0JBQStCO1FBQy9CLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDO1FBRXhDLDJDQUEyQztRQUMzQyw0RUFBNEU7UUFDNUUsTUFBTSxpQkFBaUIsR0FBRyw0QkFBNEIsQ0FBQztRQUV2RCxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO1FBRWpGLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFlBQVksRUFBRSxDQUFDLENBQUM7U0FDOUQ7UUFFRCxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFL0MsQ0FBQztDQUVGO0FBakNELG9EQWlDQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSxpQkFBaUI7SUFBNUQ7O1FBRXFCLFFBQUcsR0FBRyxLQUFLLENBQUM7SUFxQ2pDLENBQUM7SUFuQ1csS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFxQixFQUFFLE1BQWM7UUFFNUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUMseUJBQXlCLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3JILE1BQU0sTUFBTSxHQUFhLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFaEcsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQzNFO1FBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxPQUFPLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDdEc7UUFFRCxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBZ0IsRUFBRSxNQUFjO1FBQ25ELE1BQU0sR0FBRyxHQUFHLElBQUksaUJBQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqQyxPQUFPLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVTLGlCQUFpQixDQUFDLFlBQW9CO1FBRTlDLGtDQUFrQztRQUNsQyxNQUFNLEtBQUssR0FBRyx3QkFBd0IsQ0FBQztRQUV2QyxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixZQUFZLEVBQUUsQ0FBQyxDQUFDO1NBQzlEO1FBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRS9DLENBQUM7Q0FFRjtBQXZDRCxzREF1Q0M7QUFFRCxTQUFnQixPQUFPLENBQUMsR0FBVyxFQUFFLFFBQW1CO0lBQ3RELE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDOUIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV2QixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbkYsQ0FBQztBQVJELDBCQVFDO0FBRU0sS0FBSyxVQUFVLFFBQVEsQ0FBQyxHQUFXLEVBQUUsVUFBa0I7SUFDNUQsT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtRQUM5QixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFQRCw0QkFPQztBQUVNLEtBQUssVUFBVSxHQUFHLENBQ3ZCLEdBQVcsRUFDWCxPQUErRixFQUMvRixVQUEwQixFQUFFO0lBRTVCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDNUIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBb0IsRUFBRSxFQUFFO1lBQy9ELElBQUksR0FBRyxDQUFDLFVBQVUsS0FBSyxHQUFHLEVBQUU7Z0JBQzFCLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sR0FBRyxXQUFXLEdBQUcsQ0FBQyxVQUFVLEtBQUssR0FBRyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7Z0JBQ3RGLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0IsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDbEI7WUFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0QixPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUMsQ0FBQyxDQUFDO0FBRUwsQ0FBQztBQWxCRCxrQkFrQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0T3B0aW9ucywgSW5jb21pbmdNZXNzYWdlIH0gZnJvbSAnaHR0cCc7XG5pbXBvcnQgKiBhcyBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IEFkbVppcCBmcm9tICdhZG0temlwJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCAqIGFzIGpzdHJlYW0gZnJvbSAnSlNPTlN0cmVhbSc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgKiBhcyB0YXIgZnJvbSAndGFyJztcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tICcuL3JlcG9zaXRvcnknO1xuXG5cbi8qKlxuICogUHVibGlzaGVkIHBhY2thZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaGVkUGFja2FnZSB7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHBhY2thZ2UgYXMgc3RvcmVkIGluIHRoZSBwYWNrYWdlIG1hbmFnZXIuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgdGhlIHBhY2thZ2UgYXMgc3RvcmVkIGluIHRoZSBwYWNrYWdlIG1hbmFnZXIuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW50ZWdyaXR5IGNsYXNzIGZvciB2YWxpZGF0aW5nIGEgbG9jYWwgYXJ0aWZhY3QgYWdhaW5zdCBpdHMgcHVibGlzaGVkIGNvdW50ZXJwYXJ0LlxuICpcbiAqIEltcGxlbWVudGF0aW9ucyBkaWZmZXIgYmFzZWQgb24gdGhlIHBhY2thZ2UgbWFuYWdlciBpbiBxdWVzdGlvbi5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFydGlmYWN0SW50ZWdyaXR5IHtcblxuICAvKipcbiAgICogVGhlIGZpbGUgZXh0ZW5zdGlvbiBvZiBhcnRpZmFjdHMgcHJvZHVjZWQgZm9yIHRoaXMgY2hlY2suIChlLmcgJ3dobCcpXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgZXh0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERvd25sb2FkIGEgcGFja2FnZSB0byB0aGUgdGFyZ2V0IGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBwa2cgVGhlIHBhY2thZ2UgdG8gZG93bmxvYWQuXG4gICAqIEBwYXJhbSB0YXJnZXRGaWxlIFRoZSBmaWxlIHBhdGggdG8gZG93bmxvYWQgdGhlIHBhY2thZ2UgdG8uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZG93bmxvYWQocGtnOiBQdWJsaXNoZWRQYWNrYWdlLCB0YXJnZXRGaWxlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBFeHRyYWN0IHRoZSBhcnRpZmFjdCBpbnRvIHRoZSB0YXJnZXQgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAcGFyYW0gYXJ0aWZhY3QgUGF0aCB0byBhbiBhcnRpZmFjdCBmaWxlLlxuICAgKiBAcGFyYW0gdGFyZ2V0RGlyIFRoZSBkaXJlY3RvcnkgdG8gZXh0cmFjdCB0by4gSXQgd2lsbCBleGlzdCBieSB0aGUgdGltZSB0aGlzIG1ldGhvZCBpcyBpbnZva2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGV4dHJhY3QoYXJ0aWZhY3Q6IHN0cmluZywgdGFyZ2V0RGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBQYXJzZSBhIGxvY2FsIGFydGlmYWN0IGZpbGUgbmFtZSBpbnRvIGEgc3RydWN0dXJlZCBwYWNrYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gYXJ0aWZhY3ROYW1lIEJhc2UgbmFtZSBvZiB0aGUgbG9jYWwgYXJ0aWZhY3QgZmlsZS5cbiAgICogQHJldHVybnMgVGhlIHBhY2thZ2UgdGhpcyBhcnRpZmFjdCBjb3JyZWxhdGVzIHRvLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHBhcnNlQXJ0aWZhY3ROYW1lKGFydGlmYWN0TmFtZTogc3RyaW5nKTogUHVibGlzaGVkUGFja2FnZTtcblxuICAvKipcbiAgICogVmFsaWRhdGUgYSBsb2NhbCBhcnRpZmFjdCBhZ2FpbnN0IGl0cyBwdWJsaXNoZWQgY291bnRlcnBhcnQuXG4gICAqXG4gICAqIEBwYXJhbSBsb2NhbEFydGlmYWN0RGlyIFRoZSBkaXJlY3Rvcnkgb2YgdGhlIGxvY2FsIGFydGlmYWN0LiBNdXN0IGNvbnRhaW4gZXhhY3RseSBvbmUgZmlsZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBleHRlbnN0aW9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHZhbGlkYXRlKGxvY2FsQXJ0aWZhY3REaXI6IHN0cmluZykge1xuXG4gICAgY29uc3QgYXJ0aWZhY3RQYXRoID0gdGhpcy5maW5kT25lKGxvY2FsQXJ0aWZhY3REaXIpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG5cbiAgICB0aGlzLmxvZyhgVmFsaWRhdGluZyAke2FydGlmYWN0UGF0aH1gKTtcbiAgICBjb25zdCB3b3JrZGlyID0gZnMubWtkdGVtcFN5bmMocGF0aC5qb2luKG9zLnRtcGRpcigpLCAnaW50ZWdyaXR5LWNoZWNrJykpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRvd25sb2FkZWQgPSBwYXRoLmpvaW4od29ya2RpciwgYCR7bmFtZX0uZG93bmxvYWRlZGApO1xuICAgICAgY29uc3QgcmVtb3RlID0gcGF0aC5qb2luKHdvcmtkaXIsIGAke25hbWV9LnJlbW90ZWApO1xuICAgICAgY29uc3QgbG9jYWwgPSBwYXRoLmpvaW4od29ya2RpciwgYCR7bmFtZX0ubG9jYWxgKTtcblxuICAgICAgLy8gcGFyc2UgdGhlIGFydGlmYWN0IG5hbWUgaW50byBhIHBhY2thZ2UuXG4gICAgICBjb25zdCBwa2cgPSB0aGlzLnBhcnNlQXJ0aWZhY3ROYW1lKHBhdGguYmFzZW5hbWUoYXJ0aWZhY3RQYXRoKSk7XG5cbiAgICAgIGZzLm1rZGlyU3luYyhyZW1vdGUpO1xuICAgICAgZnMubWtkaXJTeW5jKGxvY2FsKTtcblxuICAgICAgLy8gZG93bmxvYWQgdGhlIHBhY2thZ2VcbiAgICAgIHRoaXMubG9nKGBEb3dubG9hZGluZyAke3BrZy5uYW1lfUAke3BrZy52ZXJzaW9ufSB0byAke2Rvd25sb2FkZWR9YCk7XG4gICAgICBhd2FpdCB0aGlzLmRvd25sb2FkKHBrZywgZG93bmxvYWRlZCk7XG5cbiAgICAgIC8vIGV4dHJhY3QgdGhlIGRvd25sYW9kZWQgcGFja2FnZVxuICAgICAgdGhpcy5sb2coYEV4dHJhY3RpbmcgcmVtb3RlIGFydGlmYWN0IGZyb20gJHtkb3dubG9hZGVkfSB0byAke3JlbW90ZX1gKTtcbiAgICAgIGF3YWl0IHRoaXMuZXh0cmFjdChkb3dubG9hZGVkLCByZW1vdGUpO1xuXG4gICAgICAvLyBleHRyYWN0IHRoZSBsb2NhbCBhcnRmaWFjdFxuICAgICAgdGhpcy5sb2coYEV4dHJhY3RpbmcgbG9jYWwgYXJ0aWZhY3QgZnJvbSAke2FydGlmYWN0UGF0aH0gdG8gJHtsb2NhbH1gKTtcbiAgICAgIGF3YWl0IHRoaXMuZXh0cmFjdChhcnRpZmFjdFBhdGgsIGxvY2FsKTtcblxuICAgICAgdGhpcy5sb2coYENvbXBhcmluZyAke2xvY2FsfSA8PiAke3JlbW90ZX1gKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGV4ZWNTeW5jKGBkaWZmICR7bG9jYWx9ICR7cmVtb3RlfWAsIHsgc3RkaW86IFsnaWdub3JlJywgJ2luaGVyaXQnLCAnaW5oZXJpdCddIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke25hbWV9IHZhbGlkYXRpb24gZmFpbGVkYCk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZygnU3VjY2VzcycpO1xuXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGZzLnJlbW92ZVN5bmMod29ya2Rpcik7XG4gICAgfVxuXG4gIH1cblxuICBwcm90ZWN0ZWQgbG9nKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIGNvbnNvbGUubG9nKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0gfCAke21lc3NhZ2V9IGApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kT25lKGRpcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaWxlcyA9IGZzLnJlYWRkaXJTeW5jKGRpcikuZmlsdGVyKGYgPT4gZi5lbmRzV2l0aCh0aGlzLmV4dCkpO1xuICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gZmlsZXMgZm91bmQgaW4gJHtkaXJ9IHdpdGggZXh0ZW5zaW9uICR7dGhpcy5leHR9YCk7XG4gICAgfVxuICAgIGNvbnN0IFtmaXJzdCwgLi4ucmVzdF0gPSBmaWxlcztcbiAgICBpZiAocmVzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE11bHRpcGxlIGZpbGVzIGZvdW5kIGluICR7ZGlyfSB3aXRoIGV4dGVuc2lvbiAke3RoaXMuZXh0fTogJHtmaXJzdH0sICR7cmVzdC5qb2luKCcsICcpfWApO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aC5qb2luKGRpciwgZmlyc3QpO1xuICB9XG5cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBgUmVwb3NpdG9yeUludGVncml0eWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3NpdG9yeUludGVncml0eVByb3BzIHtcbiAgLyoqXG4gICAqIFJlcG9zaXRvcnkgdG8gdmFsaWRhdGUuXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5OiBSZXBvc2l0b3J5O1xuXG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZCB0aGF0IHByb2R1Y2VzIHRoZSBsb2NhbCBhcnRpZmFjdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0ICducHggcHJvamVuIHJlbGVhc2UnXG4gICAqL1xuICByZWFkb25seSBwYWNrQ29tbWFuZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbnRlZ3JpdHkgY2xhc3MgZm9yIHZhbGlkYXRpbmcgdGhlIGFydGlmYWN0cyBwcm9kdWNlZCBieSB0aGlzIHJlcG9zaXRvcnkgYWdhaW5zdCB0aGVpciBwdWJsaXNoZWQgY291bnRlcnBhcnRzLlxuICovXG5leHBvcnQgY2xhc3MgUmVwb3NpdG9yeUludGVncml0eSB7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IFJlcG9zaXRvcnlJbnRlZ3JpdHlQcm9wcykge31cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhlIGFydGlmYWN0cyBvZiB0aGlzIHJlcG8gYWdhaW5zdCBpdHMgcHVibGlzaGVkIGNvdW50ZXJwYXJ0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHZhbGlkYXRlKCkge1xuXG4gICAgLy8gbm90ZSB0aGF0IHJ1biAncmVsZWFzZScgYnkgZGVmYXVsdCB0byBwcmVzZXJ2ZSB0aGUgdmVyc2lvbiBudW1iZXIuXG4gICAgLy8gdGhpcyB3b24ndCBkbyBhIGJ1bXAgc2luY2UgdGhlIGNvbW1pdCB3ZSBhcmUgb24gaXMgYWxyZWFkeSB0YWdnZWQuXG4gICAgY29uc3QgYXJ0aWZhY3RzID0gdGhpcy5wcm9wcy5yZXBvc2l0b3J5LnBhY2sodGhpcy5wcm9wcy5wYWNrQ29tbWFuZCA/PyAnbnB4IHByb2plbiByZWxlYXNlJyk7XG5cbiAgICBsZXQgaW50ZWdyaXR5ID0gdW5kZWZpbmVkO1xuICAgIGZvciAoY29uc3QgYXJ0aWZhY3Qgb2YgYXJ0aWZhY3RzKSB7XG4gICAgICBzd2l0Y2ggKGFydGlmYWN0LmxhbmcpIHtcbiAgICAgICAgY2FzZSAnanMnOlxuICAgICAgICAgIGludGVncml0eSA9IG5ldyBOcG1BcnRpZmFjdEludGVncml0eSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdweXRob24nOlxuICAgICAgICAgIGludGVncml0eSA9IG5ldyBQeVBJQXJ0aWZhY3RJbnRlZ3JpdHkoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnamF2YSc6XG4gICAgICAgIGNhc2UgJ2RvdG5ldCc6XG4gICAgICAgIGNhc2UgJ2dvJzpcbiAgICAgICAgICAvLyB3ZSBkb24ndCBoYXZlIGludGVncml0eSBjaGVja3MgZm9yIHRoZXNlXG4gICAgICAgICAgLy8gYXJ0aWZhY3RzIHlldC5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGFydGlmYWN0IGxhbmd1YWdlOiAke2FydGlmYWN0Lmxhbmd9YCk7XG4gICAgICB9XG4gICAgICBpZiAoaW50ZWdyaXR5KSB7XG4gICAgICAgIGF3YWl0IGludGVncml0eS52YWxpZGF0ZShhcnRpZmFjdC5kaXJlY3RvcnkpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zb2xlLmxvZygnVmFsaWRhdGlvbiBkb25lJyk7XG4gIH1cblxufVxuXG4vKipcbiAqIE5wbUludGVnaXJ5IGlzIGFibGUgdG8gcGVyZm9ybSBpbnRlZ2lyeSBjaGVja3MgYWdhaW5zdCBwYWNrYWdlcyBzdG9yZWQgb24gbnBtanMuY29tXG4gKi9cbmV4cG9ydCBjbGFzcyBOcG1BcnRpZmFjdEludGVncml0eSBleHRlbmRzIEFydGlmYWN0SW50ZWdyaXR5IHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXh0ID0gJ3Rneic7XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGRvd25sb2FkKHBrZzogUHVibGlzaGVkUGFja2FnZSwgdGFyZ2V0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0YXJiYWxsVXJsID0gYXdhaXQganNvbkdldChgaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvJHtlbmNvZGVVUklDb21wb25lbnQocGtnLm5hbWUpfS8ke2VuY29kZVVSSUNvbXBvbmVudChwa2cudmVyc2lvbil9YCwgWydkaXN0JywgJ3RhcmJhbGwnXSk7XG4gICAgYXdhaXQgZG93bmxvYWQodGFyYmFsbFVybCwgdGFyZ2V0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBleHRyYWN0KGZpbGU6IHN0cmluZywgdGFyZ2V0RGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGFyLngoeyBjd2Q6IHRhcmdldERpciwgZmlsZTogZmlsZSwgc3RyaXA6IDEgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VBcnRpZmFjdE5hbWUoYXJ0aWZhY3ROYW1lOiBzdHJpbmcpOiBQdWJsaXNoZWRQYWNrYWdlIHtcblxuICAgIC8vIGNkazhzQDEuMC4wLWJldGEuNTkuanNpaS50Z3pcbiAgICBjb25zdCBqc2lpQXJ0aWZhY3QgPSAvKC4qKUAoLiopXFwuanNpaS4vO1xuXG4gICAgLy8gbnBtIGFydGlmYWN0OiBjZGs4cy1jbGktMS4wLjAtYmV0YTU5LnRnelxuICAgIC8vIHlhcm4gYXJ0aWZhY3Q6IGNkazhzLWNsaS12MS4wLjAtYmV0YTU5LnRneiAoYWRkIGEgJ3YnIGJlZm9yZSB0aGUgdmVyc2lvbilcbiAgICBjb25zdCBucG1Pcllhcm5BcnRpZmFjdCA9IC8oLiopLXY/KFxcZC4qKS4odGd6fHRhci5neikvO1xuXG4gICAgY29uc3QgcmVnZXggPSBhcnRpZmFjdE5hbWUuaW5jbHVkZXMoJy5qc2lpLicpID8ganNpaUFydGlmYWN0IDogbnBtT3JZYXJuQXJ0aWZhY3Q7XG5cbiAgICBjb25zdCBtYXRjaCA9IGFydGlmYWN0TmFtZS5tYXRjaChyZWdleCk7XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgYXJ0aWZhY3Q6ICR7YXJ0aWZhY3ROYW1lfWApO1xuICAgIH1cblxuICAgIHJldHVybiB7IG5hbWU6IG1hdGNoWzFdLCB2ZXJzaW9uOiBtYXRjaFsyXSB9O1xuXG4gIH1cblxufVxuXG4vKipcbiAqIFB5UElJbnRlZ2lyeSBpcyBhYmxlIHRvIHBlcmZvcm0gaW50ZWdpcnkgY2hlY2tzIGFnYWluc3QgcGFja2FnZXMgc3RvcmVkIG9uIHB5cGkub3JnXG4gKi9cbmV4cG9ydCBjbGFzcyBQeVBJQXJ0aWZhY3RJbnRlZ3JpdHkgZXh0ZW5kcyBBcnRpZmFjdEludGVncml0eSB7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGV4dCA9ICd3aGwnO1xuXG4gIHByb3RlY3RlZCBhc3luYyBkb3dubG9hZChwa2c6IFB1Ymxpc2hlZFBhY2thZ2UsIHRhcmdldDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG5cbiAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGpzb25HZXQoYGh0dHBzOi8vcHlwaS5vcmcvcHlwaS8ke2VuY29kZVVSSUNvbXBvbmVudChwa2cubmFtZSl9L2pzb25gLCBbJ3JlbGVhc2VzJywgcGtnLnZlcnNpb25dKTtcbiAgICBjb25zdCB3aGVlbHM6IHN0cmluZ1tdID0gZmlsZXMuZmlsdGVyKChmOiBhbnkpID0+IGYudXJsLmVuZHNXaXRoKCd3aGwnKSkubWFwKChmOiBhbnkpID0+IGYudXJsKTtcblxuICAgIGlmICh3aGVlbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHdoZWVscyBmb3VuZCBmb3IgcGFja2FnZSAke3BrZy5uYW1lfS0ke3BrZy52ZXJzaW9ufWApO1xuICAgIH1cblxuICAgIGlmICh3aGVlbHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNdWx0aXBsZSB3aGVlbHMgZm91bmQgZm9yIHBhY2thZ2UgJHtwa2cubmFtZX0tJHtwa2cudmVyc2lvbn06ICR7d2hlZWxzLmpvaW4oJywnKX1gKTtcbiAgICB9XG5cbiAgICBhd2FpdCBkb3dubG9hZCh3aGVlbHNbMF0sIHRhcmdldCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZXh0cmFjdChhcnRpZmFjdDogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHppcCA9IG5ldyBBZG1aaXAoYXJ0aWZhY3QpO1xuICAgIHJldHVybiB6aXAuZXh0cmFjdEFsbFRvKHRhcmdldCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VBcnRpZmFjdE5hbWUoYXJ0aWZhY3ROYW1lOiBzdHJpbmcpOiBQdWJsaXNoZWRQYWNrYWdlIHtcblxuICAgIC8vIGNkazhzLTEuMC4wYjYzLXB5My1ub25lLWFueS53aGxcbiAgICBjb25zdCByZWdleCA9IC8oLiopLXY/KFxcZC4qKS1weS4qLndobC87XG5cbiAgICBjb25zdCBtYXRjaCA9IGFydGlmYWN0TmFtZS5tYXRjaChyZWdleCk7XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgYXJ0aWZhY3Q6ICR7YXJ0aWZhY3ROYW1lfWApO1xuICAgIH1cblxuICAgIHJldHVybiB7IG5hbWU6IG1hdGNoWzFdLCB2ZXJzaW9uOiBtYXRjaFsyXSB9O1xuXG4gIH1cblxufVxuXG5leHBvcnQgZnVuY3Rpb24ganNvbkdldCh1cmw6IHN0cmluZywganNvblBhdGg/OiBzdHJpbmdbXSk6IFByb21pc2U8YW55PiB7XG4gIHJldHVybiBnZXQodXJsLCAocmVzLCBvaywga28pID0+IHtcbiAgICBjb25zdCBqc29uID0ganN0cmVhbS5wYXJzZShqc29uUGF0aCk7XG4gICAganNvbi5vbmNlKCdkYXRhJywgb2spO1xuICAgIGpzb24ub25jZSgnZXJyb3InLCBrbyk7XG5cbiAgICByZXMucGlwZShqc29uLCB7IGVuZDogdHJ1ZSB9KTtcbiAgfSwgeyBoZWFkZXJzOiB7ICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbicsICdBY2NlcHQtRW5jb2RpbmcnOiAnaWRlbnRpdHknIH0gfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkb3dubG9hZCh1cmw6IHN0cmluZywgdGFyZ2V0RmlsZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgcmV0dXJuIGdldCh1cmwsIChyZXMsIG9rLCBrbykgPT4ge1xuICAgIGNvbnN0IGZpbGUgPSBmcy5jcmVhdGVXcml0ZVN0cmVhbSh0YXJnZXRGaWxlKTtcbiAgICBmaWxlLm9uKCdmaW5pc2gnLCBvayk7XG4gICAgZmlsZS5vbignZXJyb3InLCBrbyk7XG4gICAgcmVzLnBpcGUoZmlsZSwgeyBlbmQ6IHRydWUgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0KFxuICB1cmw6IHN0cmluZyxcbiAgaGFuZGxlcjogKHJlczogSW5jb21pbmdNZXNzYWdlLCBvazogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkLCBrbzogKGVycjogRXJyb3IpID0+IHZvaWQpID0+IHZvaWQsXG4gIG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zID0ge30pIHtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKG9rLCBrbykgPT4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSBodHRwcy5nZXQodXJsLCBvcHRpb25zLCAocmVzOiBJbmNvbWluZ01lc3NhZ2UpID0+IHtcbiAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBHRVQgJHt1cmx9IC0gSFRUUCAke3Jlcy5zdGF0dXNDb2RlfSAoJHtyZXMuc3RhdHVzTWVzc2FnZX0pYCk7XG4gICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIGtvKGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJlcy5vbmNlKCdlcnJvcicsIGtvKTtcbiAgICAgIGhhbmRsZXIocmVzLCBvaywga28pO1xuICAgIH0pO1xuICAgIHJlcXVlc3Qub24oJ2Vycm9yJywga28pO1xuICB9KTtcblxufVxuIl19
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW50ZWdyaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQXlDO0FBRXpDLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsNkRBQTZEO0FBQzdELHNEQUE2QjtBQUM3Qiw2REFBNkQ7QUFDN0QseURBQTJDO0FBQzNDLDZEQUE2RDtBQUM3RCw2Q0FBK0I7QUFDL0IsNkRBQTZEO0FBQzdELG9EQUFzQztBQUN0Qyw2REFBNkQ7QUFDN0QseUNBQTJCO0FBb0IzQjs7OztHQUlHO0FBQ0gsTUFBc0IsaUJBQWlCO0lBK0JyQzs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBd0I7UUFFNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBRW5DLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBRTFFLElBQUk7WUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksYUFBYSxDQUFDLENBQUM7WUFDNUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQztZQUVsRCwwQ0FBMEM7WUFD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bXBvcnQgdHlwZSB7IFJlcXVlc3RPcHRpb25zLCBJbmNvbWluZ01lc3NhZ2UgfSBmcm9tICdodHRwJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgQWRtWmlwIGZyb20gJ2FkbS16aXAnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0ICogYXMgZm9sbG93IGZyb20gJ2ZvbGxvdy1yZWRpcmVjdHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0ICogYXMganN0cmVhbSBmcm9tICdKU09OU3RyZWFtJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCAqIGFzIHRhciBmcm9tICd0YXInO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gJy4vcmVwb3NpdG9yeSc7XG5cblxuLyoqXG4gKiBQdWJsaXNoZWQgcGFja2FnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoZWRQYWNrYWdlIHtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgcGFja2FnZSBhcyBzdG9yZWQgaW4gdGhlIHBhY2thZ2UgbWFuYWdlci5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVmVyc2lvbiBvZiB0aGUgcGFja2FnZSBhcyBzdG9yZWQgaW4gdGhlIHBhY2thZ2UgbWFuYWdlci5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbnRlZ3JpdHkgY2xhc3MgZm9yIHZhbGlkYXRpbmcgYSBsb2NhbCBhcnRpZmFjdCBhZ2FpbnN0IGl0cyBwdWJsaXNoZWQgY291bnRlcnBhcnQuXG4gKlxuICogSW1wbGVtZW50YXRpb25zIGRpZmZlciBiYXNlZCBvbiB0aGUgcGFja2FnZSBtYW5hZ2VyIGluIHF1ZXN0aW9uLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXJ0aWZhY3RJbnRlZ3JpdHkge1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSBleHRlbnN0aW9uIG9mIGFydGlmYWN0cyBwcm9kdWNlZCBmb3IgdGhpcyBjaGVjay4gKGUuZyAnd2hsJylcbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBleHQ6IHN0cmluZztcblxuICAvKipcbiAgICogRG93bmxvYWQgYSBwYWNrYWdlIHRvIHRoZSB0YXJnZXQgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIHBrZyBUaGUgcGFja2FnZSB0byBkb3dubG9hZC5cbiAgICogQHBhcmFtIHRhcmdldEZpbGUgVGhlIGZpbGUgcGF0aCB0byBkb3dubG9hZCB0aGUgcGFja2FnZSB0by5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBkb3dubG9hZChwa2c6IFB1Ymxpc2hlZFBhY2thZ2UsIHRhcmdldEZpbGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgdGhlIGFydGlmYWN0IGludG8gdGhlIHRhcmdldCBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBwYXJhbSBhcnRpZmFjdCBQYXRoIHRvIGFuIGFydGlmYWN0IGZpbGUuXG4gICAqIEBwYXJhbSB0YXJnZXREaXIgVGhlIGRpcmVjdG9yeSB0byBleHRyYWN0IHRvLiBJdCB3aWxsIGV4aXN0IGJ5IHRoZSB0aW1lIHRoaXMgbWV0aG9kIGlzIGludm9rZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZXh0cmFjdChhcnRpZmFjdDogc3RyaW5nLCB0YXJnZXREaXI6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIFBhcnNlIGEgbG9jYWwgYXJ0aWZhY3QgZmlsZSBuYW1lIGludG8gYSBzdHJ1Y3R1cmVkIHBhY2thZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBhcnRpZmFjdE5hbWUgQmFzZSBuYW1lIG9mIHRoZSBsb2NhbCBhcnRpZmFjdCBmaWxlLlxuICAgKiBAcmV0dXJucyBUaGUgcGFja2FnZSB0aGlzIGFydGlmYWN0IGNvcnJlbGF0ZXMgdG8uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcGFyc2VBcnRpZmFjdE5hbWUoYXJ0aWZhY3ROYW1lOiBzdHJpbmcpOiBQdWJsaXNoZWRQYWNrYWdlO1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhIGxvY2FsIGFydGlmYWN0IGFnYWluc3QgaXRzIHB1Ymxpc2hlZCBjb3VudGVycGFydC5cbiAgICpcbiAgICogQHBhcmFtIGxvY2FsQXJ0aWZhY3REaXIgVGhlIGRpcmVjdG9yeSBvZiB0aGUgbG9jYWwgYXJ0aWZhY3QuIE11c3QgY29udGFpbiBleGFjdGx5IG9uZSBmaWxlIHdpdGggdGhlIGFwcHJvcHJpYXRlIGV4dGVuc3Rpb24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdmFsaWRhdGUobG9jYWxBcnRpZmFjdERpcjogc3RyaW5nKSB7XG5cbiAgICBjb25zdCBhcnRpZmFjdFBhdGggPSB0aGlzLmZpbmRPbmUobG9jYWxBcnRpZmFjdERpcik7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcblxuICAgIHRoaXMubG9nKGBWYWxpZGF0aW5nICR7YXJ0aWZhY3RQYXRofWApO1xuICAgIGNvbnN0IHdvcmtkaXIgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICdpbnRlZ3JpdHktY2hlY2snKSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZG93bmxvYWRlZCA9IHBhdGguam9pbih3b3JrZGlyLCBgJHtuYW1lfS5kb3dubG9hZGVkYCk7XG4gICAgICBjb25zdCByZW1vdGUgPSBwYXRoLmpvaW4od29ya2RpciwgYCR7bmFtZX0ucmVtb3RlYCk7XG4gICAgICBjb25zdCBsb2NhbCA9IHBhdGguam9pbih3b3JrZGlyLCBgJHtuYW1lfS5sb2NhbGApO1xuXG4gICAgICAvLyBwYXJzZSB0aGUgYXJ0aWZhY3QgbmFtZSBpbnRvIGEgcGFja2FnZS5cbiAgICAgIGNvbnN0IHBrZyA9IHRoaXMucGFyc2VBcnRpZmFjdE5hbWUocGF0aC5iYXNlbmFtZShhcnRpZmFjdFBhdGgpKTtcblxuICAgICAgZnMubWtkaXJTeW5jKHJlbW90ZSk7XG4gICAgICBmcy5ta2RpclN5bmMobG9jYWwpO1xuXG4gICAgICAvLyBkb3dubG9hZCB0aGUgcGFja2FnZVxuICAgICAgdGhpcy5sb2coYERvd25sb2FkaW5nICR7cGtnLm5hbWV9QCR7cGtnLnZlcnNpb259IHRvICR7ZG93bmxvYWRlZH1gKTtcbiAgICAgIGF3YWl0IHRoaXMuZG93bmxvYWQocGtnLCBkb3dubG9hZGVkKTtcblxuICAgICAgLy8gZXh0cmFjdCB0aGUgZG93bmxhb2RlZCBwYWNrYWdlXG4gICAgICB0aGlzLmxvZyhgRXh0cmFjdGluZyByZW1vdGUgYXJ0aWZhY3QgZnJvbSAke2Rvd25sb2FkZWR9IHRvICR7cmVtb3RlfWApO1xuICAgICAgYXdhaXQgdGhpcy5leHRyYWN0KGRvd25sb2FkZWQsIHJlbW90ZSk7XG5cbiAgICAgIC8vIGV4dHJhY3QgdGhlIGxvY2FsIGFydGZpYWN0XG4gICAgICB0aGlzLmxvZyhgRXh0cmFjdGluZyBsb2NhbCBhcnRpZmFjdCBmcm9tICR7YXJ0aWZhY3RQYXRofSB0byAke2xvY2FsfWApO1xuICAgICAgYXdhaXQgdGhpcy5leHRyYWN0KGFydGlmYWN0UGF0aCwgbG9jYWwpO1xuXG4gICAgICB0aGlzLmxvZyhgQ29tcGFyaW5nICR7bG9jYWx9IDw+ICR7cmVtb3RlfWApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZXhlY1N5bmMoYGRpZmYgJHtsb2NhbH0gJHtyZW1vdGV9YCwgeyBzdGRpbzogWydpZ25vcmUnLCAnaW5oZXJpdCcsICdpbmhlcml0J10gfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX0gdmFsaWRhdGlvbiBmYWlsZWRgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nKCdTdWNjZXNzJyk7XG5cbiAgICB9IGZpbmFsbHkge1xuICAgICAgZnMucmVtb3ZlU3luYyh3b3JrZGlyKTtcbiAgICB9XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBsb2cobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgY29uc29sZS5sb2coYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSB8ICR7bWVzc2FnZX0gYCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRPbmUoZGlyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmMoZGlyKS5maWx0ZXIoZiA9PiBmLmVuZHNXaXRoKHRoaXMuZXh0KSk7XG4gICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBmaWxlcyBmb3VuZCBpbiAke2Rpcn0gd2l0aCBleHRlbnNpb24gJHt0aGlzLmV4dH1gKTtcbiAgICB9XG4gICAgY29uc3QgW2ZpcnN0LCAuLi5yZXN0XSA9IGZpbGVzO1xuICAgIGlmIChyZXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTXVsdGlwbGUgZmlsZXMgZm91bmQgaW4gJHtkaXJ9IHdpdGggZXh0ZW5zaW9uICR7dGhpcy5leHR9OiAke2ZpcnN0fSwgJHtyZXN0LmpvaW4oJywgJyl9YCk7XG4gICAgfVxuICAgIHJldHVybiBwYXRoLmpvaW4oZGlyLCBmaXJzdCk7XG4gIH1cblxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGBSZXBvc2l0b3J5SW50ZWdyaXR5YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvc2l0b3J5SW50ZWdyaXR5UHJvcHMge1xuICAvKipcbiAgICogUmVwb3NpdG9yeSB0byB2YWxpZGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnk6IFJlcG9zaXRvcnk7XG5cbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kIHRoYXQgcHJvZHVjZXMgdGhlIGxvY2FsIGFydGlmYWN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgJ25weCBwcm9qZW4gcmVsZWFzZSdcbiAgICovXG4gIHJlYWRvbmx5IHBhY2tDb21tYW5kPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEludGVncml0eSBjbGFzcyBmb3IgdmFsaWRhdGluZyB0aGUgYXJ0aWZhY3RzIHByb2R1Y2VkIGJ5IHRoaXMgcmVwb3NpdG9yeSBhZ2FpbnN0IHRoZWlyIHB1Ymxpc2hlZCBjb3VudGVycGFydHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXBvc2l0b3J5SW50ZWdyaXR5IHtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogUmVwb3NpdG9yeUludGVncml0eVByb3BzKSB7fVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgYXJ0aWZhY3RzIG9mIHRoaXMgcmVwbyBhZ2FpbnN0IGl0cyBwdWJsaXNoZWQgY291bnRlcnBhcnQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdmFsaWRhdGUoKSB7XG5cbiAgICAvLyBub3RlIHRoYXQgcnVuICdyZWxlYXNlJyBieSBkZWZhdWx0IHRvIHByZXNlcnZlIHRoZSB2ZXJzaW9uIG51bWJlci5cbiAgICAvLyB0aGlzIHdvbid0IGRvIGEgYnVtcCBzaW5jZSB0aGUgY29tbWl0IHdlIGFyZSBvbiBpcyBhbHJlYWR5IHRhZ2dlZC5cbiAgICBjb25zdCBhcnRpZmFjdHMgPSB0aGlzLnByb3BzLnJlcG9zaXRvcnkucGFjayh0aGlzLnByb3BzLnBhY2tDb21tYW5kID8/ICducHggcHJvamVuIHJlbGVhc2UnKTtcblxuICAgIGxldCBpbnRlZ3JpdHkgPSB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCBhcnRpZmFjdCBvZiBhcnRpZmFjdHMpIHtcbiAgICAgIHN3aXRjaCAoYXJ0aWZhY3QubGFuZykge1xuICAgICAgICBjYXNlICdqcyc6XG4gICAgICAgICAgaW50ZWdyaXR5ID0gbmV3IE5wbUFydGlmYWN0SW50ZWdyaXR5KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3B5dGhvbic6XG4gICAgICAgICAgaW50ZWdyaXR5ID0gbmV3IFB5UElBcnRpZmFjdEludGVncml0eSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdqYXZhJzpcbiAgICAgICAgY2FzZSAnZG90bmV0JzpcbiAgICAgICAgY2FzZSAnZ28nOlxuICAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgaW50ZWdyaXR5IGNoZWNrcyBmb3IgdGhlc2VcbiAgICAgICAgICAvLyBhcnRpZmFjdHMgeWV0LlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgYXJ0aWZhY3QgbGFuZ3VhZ2U6ICR7YXJ0aWZhY3QubGFuZ31gKTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnRlZ3JpdHkpIHtcbiAgICAgICAgYXdhaXQgaW50ZWdyaXR5LnZhbGlkYXRlKGFydGlmYWN0LmRpcmVjdG9yeSk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdWYWxpZGF0aW9uIGRvbmUnKTtcbiAgfVxuXG59XG5cbi8qKlxuICogTnBtSW50ZWdpcnkgaXMgYWJsZSB0byBwZXJmb3JtIGludGVnaXJ5IGNoZWNrcyBhZ2FpbnN0IHBhY2thZ2VzIHN0b3JlZCBvbiBucG1qcy5jb21cbiAqL1xuZXhwb3J0IGNsYXNzIE5wbUFydGlmYWN0SW50ZWdyaXR5IGV4dGVuZHMgQXJ0aWZhY3RJbnRlZ3JpdHkge1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBleHQgPSAndGd6JztcblxuICBwcm90ZWN0ZWQgYXN5bmMgZG93bmxvYWQocGtnOiBQdWJsaXNoZWRQYWNrYWdlLCB0YXJnZXQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRhcmJhbGxVcmwgPSBhd2FpdCBqc29uR2V0KGBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8ke2VuY29kZVVSSUNvbXBvbmVudChwa2cubmFtZSl9LyR7ZW5jb2RlVVJJQ29tcG9uZW50KHBrZy52ZXJzaW9uKX1gLCBbJ2Rpc3QnLCAndGFyYmFsbCddKTtcbiAgICBhd2FpdCBkb3dubG9hZCh0YXJiYWxsVXJsLCB0YXJnZXQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGV4dHJhY3QoZmlsZTogc3RyaW5nLCB0YXJnZXREaXI6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0YXIueCh7IGN3ZDogdGFyZ2V0RGlyLCBmaWxlOiBmaWxlLCBzdHJpcDogMSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUFydGlmYWN0TmFtZShhcnRpZmFjdE5hbWU6IHN0cmluZyk6IFB1Ymxpc2hlZFBhY2thZ2Uge1xuXG4gICAgLy8gY2RrOHNAMS4wLjAtYmV0YS41OS5qc2lpLnRnelxuICAgIGNvbnN0IGpzaWlBcnRpZmFjdCA9IC8oLiopQCguKilcXC5qc2lpLi87XG5cbiAgICAvLyBucG0gYXJ0aWZhY3Q6IGNkazhzLWNsaS0xLjAuMC1iZXRhNTkudGd6XG4gICAgLy8geWFybiBhcnRpZmFjdDogY2RrOHMtY2xpLXYxLjAuMC1iZXRhNTkudGd6IChhZGQgYSAndicgYmVmb3JlIHRoZSB2ZXJzaW9uKVxuICAgIGNvbnN0IG5wbU9yWWFybkFydGlmYWN0ID0gLyguKiktdj8oXFxkLiopLih0Z3p8dGFyLmd6KS87XG5cbiAgICBjb25zdCByZWdleCA9IGFydGlmYWN0TmFtZS5pbmNsdWRlcygnLmpzaWkuJykgPyBqc2lpQXJ0aWZhY3QgOiBucG1Pcllhcm5BcnRpZmFjdDtcblxuICAgIGNvbnN0IG1hdGNoID0gYXJ0aWZhY3ROYW1lLm1hdGNoKHJlZ2V4KTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBhcnRpZmFjdDogJHthcnRpZmFjdE5hbWV9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbmFtZTogbWF0Y2hbMV0sIHZlcnNpb246IG1hdGNoWzJdIH07XG5cbiAgfVxuXG59XG5cbi8qKlxuICogUHlQSUludGVnaXJ5IGlzIGFibGUgdG8gcGVyZm9ybSBpbnRlZ2lyeSBjaGVja3MgYWdhaW5zdCBwYWNrYWdlcyBzdG9yZWQgb24gcHlwaS5vcmdcbiAqL1xuZXhwb3J0IGNsYXNzIFB5UElBcnRpZmFjdEludGVncml0eSBleHRlbmRzIEFydGlmYWN0SW50ZWdyaXR5IHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXh0ID0gJ3dobCc7XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGRvd25sb2FkKHBrZzogUHVibGlzaGVkUGFja2FnZSwgdGFyZ2V0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblxuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQganNvbkdldChgaHR0cHM6Ly9weXBpLm9yZy9weXBpLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHBrZy5uYW1lKX0vanNvbmAsIFsncmVsZWFzZXMnLCBwa2cudmVyc2lvbl0pO1xuICAgIGNvbnN0IHdoZWVsczogc3RyaW5nW10gPSBmaWxlcy5maWx0ZXIoKGY6IGFueSkgPT4gZi51cmwuZW5kc1dpdGgoJ3dobCcpKS5tYXAoKGY6IGFueSkgPT4gZi51cmwpO1xuXG4gICAgaWYgKHdoZWVscy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gd2hlZWxzIGZvdW5kIGZvciBwYWNrYWdlICR7cGtnLm5hbWV9LSR7cGtnLnZlcnNpb259YCk7XG4gICAgfVxuXG4gICAgaWYgKHdoZWVscy5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE11bHRpcGxlIHdoZWVscyBmb3VuZCBmb3IgcGFja2FnZSAke3BrZy5uYW1lfS0ke3BrZy52ZXJzaW9ufTogJHt3aGVlbHMuam9pbignLCcpfWApO1xuICAgIH1cblxuICAgIGF3YWl0IGRvd25sb2FkKHdoZWVsc1swXSwgdGFyZ2V0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBleHRyYWN0KGFydGlmYWN0OiBzdHJpbmcsIHRhcmdldDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgemlwID0gbmV3IEFkbVppcChhcnRpZmFjdCk7XG4gICAgcmV0dXJuIHppcC5leHRyYWN0QWxsVG8odGFyZ2V0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUFydGlmYWN0TmFtZShhcnRpZmFjdE5hbWU6IHN0cmluZyk6IFB1Ymxpc2hlZFBhY2thZ2Uge1xuXG4gICAgLy8gY2RrOHMtMS4wLjBiNjMtcHkzLW5vbmUtYW55LndobFxuICAgIGNvbnN0IHJlZ2V4ID0gLyguKiktdj8oXFxkLiopLXB5Lioud2hsLztcblxuICAgIGNvbnN0IG1hdGNoID0gYXJ0aWZhY3ROYW1lLm1hdGNoKHJlZ2V4KTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBhcnRpZmFjdDogJHthcnRpZmFjdE5hbWV9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbmFtZTogbWF0Y2hbMV0sIHZlcnNpb246IG1hdGNoWzJdIH07XG5cbiAgfVxuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqc29uR2V0KHVybDogc3RyaW5nLCBqc29uUGF0aD86IHN0cmluZ1tdKTogUHJvbWlzZTxhbnk+IHtcbiAgcmV0dXJuIGdldCh1cmwsIChyZXMsIG9rLCBrbykgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBqc3RyZWFtLnBhcnNlKGpzb25QYXRoKTtcbiAgICBqc29uLm9uY2UoJ2RhdGEnLCBvayk7XG4gICAganNvbi5vbmNlKCdlcnJvcicsIGtvKTtcblxuICAgIHJlcy5waXBlKGpzb24sIHsgZW5kOiB0cnVlIH0pO1xuICB9LCB7IGhlYWRlcnM6IHsgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0FjY2VwdC1FbmNvZGluZyc6ICdpZGVudGl0eScgfSB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkKHVybDogc3RyaW5nLCB0YXJnZXRGaWxlOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICByZXR1cm4gZ2V0KHVybCwgKHJlcywgb2ssIGtvKSA9PiB7XG4gICAgY29uc3QgZmlsZSA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHRhcmdldEZpbGUpO1xuICAgIGZpbGUub24oJ2ZpbmlzaCcsIG9rKTtcbiAgICBmaWxlLm9uKCdlcnJvcicsIGtvKTtcbiAgICByZXMucGlwZShmaWxlLCB7IGVuZDogdHJ1ZSB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXQoXG4gIHVybDogc3RyaW5nLFxuICBoYW5kbGVyOiAocmVzOiBJbmNvbWluZ01lc3NhZ2UsIG9rOiAodmFsdWU6IHVua25vd24pID0+IHZvaWQsIGtvOiAoZXJyOiBFcnJvcikgPT4gdm9pZCkgPT4gdm9pZCxcbiAgb3B0aW9uczogUmVxdWVzdE9wdGlvbnMgPSB7fSkge1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgob2ssIGtvKSA9PiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IGZvbGxvdy5odHRwcy5nZXQodXJsLCBvcHRpb25zLCAocmVzOiBJbmNvbWluZ01lc3NhZ2UpID0+IHtcbiAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBHRVQgJHt1cmx9IC0gSFRUUCAke3Jlcy5zdGF0dXNDb2RlfSAoJHtyZXMuc3RhdHVzTWVzc2FnZX0pYCk7XG4gICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIGtvKGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJlcy5vbmNlKCdlcnJvcicsIGtvKTtcbiAgICAgIGhhbmRsZXIocmVzLCBvaywga28pO1xuICAgIH0pO1xuICAgIHJlcXVlc3Qub24oJ2Vycm9yJywga28pO1xuICB9KTtcblxufVxuIl19
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { execSync } from 'child_process';
|
|
2
2
|
import type { RequestOptions, IncomingMessage } from 'http';
|
|
3
|
-
import * as https from 'https';
|
|
4
3
|
import * as os from 'os';
|
|
5
4
|
import * as path from 'path';
|
|
6
5
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
7
6
|
import AdmZip from 'adm-zip';
|
|
8
7
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
8
|
+
import * as follow from 'follow-redirects';
|
|
9
|
+
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
9
10
|
import * as fs from 'fs-extra';
|
|
10
11
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
11
12
|
import * as jstream from 'JSONStream';
|
|
@@ -301,7 +302,7 @@ export async function get(
|
|
|
301
302
|
options: RequestOptions = {}) {
|
|
302
303
|
|
|
303
304
|
return new Promise((ok, ko) => {
|
|
304
|
-
const request = https.get(url, options, (res: IncomingMessage) => {
|
|
305
|
+
const request = follow.https.get(url, options, (res: IncomingMessage) => {
|
|
305
306
|
if (res.statusCode !== 200) {
|
|
306
307
|
const error = new Error(`GET ${url} - HTTP ${res.statusCode} (${res.statusMessage})`);
|
|
307
308
|
Error.captureStackTrace(error);
|