ag-psd 14.3.1 → 14.3.5
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/CHANGELOG.md +3 -0
- package/README.md +2 -1
- package/dist/abr.js +4 -4
- package/dist/additionalInfo.js +6 -3
- package/dist/bundle.js +230 -125
- package/dist/descriptor.js +5 -1
- package/dist/helpers.d.ts +6 -5
- package/dist/helpers.js +13 -11
- package/dist/imageResources.js +3 -1
- package/dist/psd.d.ts +1 -0
- package/dist/psd.js +1 -1
- package/dist/psdReader.d.ts +1 -0
- package/dist/psdReader.js +199 -105
- package/dist/psdWriter.js +9 -9
- package/dist-es/abr.js +4 -4
- package/dist-es/additionalInfo.js +6 -3
- package/dist-es/descriptor.js +5 -1
- package/dist-es/helpers.d.ts +6 -5
- package/dist-es/helpers.js +13 -11
- package/dist-es/imageResources.js +3 -1
- package/dist-es/psd.d.ts +1 -0
- package/dist-es/psd.js +1 -1
- package/dist-es/psdReader.d.ts +1 -0
- package/dist-es/psdReader.js +199 -105
- package/dist-es/psdWriter.js +9 -9
- package/package.json +1 -1
package/dist/additionalInfo.js
CHANGED
|
@@ -777,6 +777,9 @@ addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
|
|
|
777
777
|
resolution: descriptor_1.parseUnits(desc.Rslt),
|
|
778
778
|
warp: parseWarp((desc.quiltWarp || desc.warp)),
|
|
779
779
|
};
|
|
780
|
+
if (desc.nonAffineTransform && desc.nonAffineTransform.some(function (x, i) { return x !== desc.Trnf[i]; })) {
|
|
781
|
+
target.placedLayer.nonAffineTransform = desc.nonAffineTransform;
|
|
782
|
+
}
|
|
780
783
|
if (desc.Crop)
|
|
781
784
|
target.placedLayer.crop = desc.Crop;
|
|
782
785
|
if (desc.comp)
|
|
@@ -785,7 +788,7 @@ addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
|
|
|
785
788
|
target.placedLayer.compInfo = desc.compInfo;
|
|
786
789
|
psdReader_1.skipBytes(reader, left()); // HACK
|
|
787
790
|
}, function (writer, target) {
|
|
788
|
-
var _a;
|
|
791
|
+
var _a, _b;
|
|
789
792
|
psdWriter_1.writeSignature(writer, 'soLD');
|
|
790
793
|
psdWriter_1.writeInt32(writer, 4); // version
|
|
791
794
|
var placed = target.placedLayer;
|
|
@@ -795,7 +798,7 @@ addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
|
|
|
795
798
|
}, duration: {
|
|
796
799
|
numerator: 0,
|
|
797
800
|
denominator: 600
|
|
798
|
-
}, frameCount: 1, Annt: 16, Type: placedLayerTypes.indexOf(placed.type), Trnf: placed.transform, nonAffineTransform: placed.transform, quiltWarp: {}, warp: encodeWarp(placed.warp || {}), 'Sz ': {
|
|
801
|
+
}, frameCount: 1, Annt: 16, Type: placedLayerTypes.indexOf(placed.type), Trnf: placed.transform, nonAffineTransform: (_b = placed.nonAffineTransform) !== null && _b !== void 0 ? _b : placed.transform, quiltWarp: {}, warp: encodeWarp(placed.warp || {}), 'Sz ': {
|
|
799
802
|
Wdth: placed.width || 0,
|
|
800
803
|
Hght: placed.height || 0, // TODO: find size ?
|
|
801
804
|
}, Rslt: placed.resolution ? descriptor_1.unitsValue(placed.resolution, 'resolution') : { units: 'Density', value: 72 } });
|
|
@@ -2547,4 +2550,4 @@ function serializeEffectObject(obj, objName, reportErrors) {
|
|
|
2547
2550
|
return result;
|
|
2548
2551
|
}
|
|
2549
2552
|
|
|
2550
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,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LEdBQUcsc0JBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxNQUFNLENBQUMsU0FBUyxHQUFHO1FBQ2xCLFlBQVksRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2xDLFNBQVMsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQy9CLFFBQVEsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0tBQzlCLENBQUM7SUFFRixJQUFJLEtBQUssR0FBRyxJQUFJO1FBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQ3JELENBQUMsRUFDRCxVQUFDLE1BQU0sRUFBRSxNQUFNO0lBQ2QsSUFBTSxLQUFLLEdBQ1YsQ0FBQyxNQUFNLENBQUMsU0FBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxNQUFNLENBQUMsU0FBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsQ0FBQyxNQUFNLENBQUMsU0FBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxNQUFNLENBQUMsU0FBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUxQyx1QkFBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQ0QsQ0FBQztBQUVGLFVBQVUsQ0FDVCxNQUFNLEVBQ04sTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUNwQixVQUFDLE1BQU0sRUFBRSxNQUFNO0lBQ2QsSUFBTSxLQUFLLEdBQUcsc0JBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxxQkFBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyQixN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QU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUMvRTtTQUFNLElBQUksTUFBTSxJQUFJLEtBQUssRUFBRTtRQUMzQixPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztLQUNoRTtTQUFNLElBQUksTUFBTSxJQUFJLEtBQUssRUFBRTtRQUMzQixPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7S0FDNUU7U0FBTSxJQUFJLE1BQU0sSUFBSSxLQUFLLEVBQUU7UUFDM0IsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztLQUM1QjtTQUFNLElBQUksTUFBTSxJQUFJLEtBQUssRUFBRTtRQUMzQixPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7S0FDN0Q7U0FBTTtRQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztLQUNoRDtBQUNGLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxLQUF3QjtJQUMvQyxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ1gsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7S0FDM0M7U0FBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUU7UUFDeEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7S0FDNUU7U0FBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUU7UUFDeEIsT0FBTyxFQUFFLE1BQU0sRUFBRSx1QkFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0tBQ3JGO1NBQU0sSUFBSSxHQUFHLElBQUksS0FBSyxFQUFFO1FBQ3hCLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztLQUM5RjtTQUFNLElBQUksR0FBRyxJQUFJLEtBQUssRUFBRTtRQUN4QixPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztLQUMxRTtTQUFNLElBQUksR0FBRyxJQUFJLEtBQUssRUFBRTtRQUN4QixPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUMzQjtTQUFNO1FBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0tBQ3ZDO0FBQ0YsQ0FBQztBQU1ELFNBQVMsaUJBQWlCLENBQUMsR0FBUSxFQUFFLFlBQXFCO0lBQ3pELElBQU0sTUFBTSxHQUFlLEVBQVMsQ0FBQztJQUVyQyxLQUFrQixVQUFnQixFQUFoQixLQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQWhCLGNBQWdCLEVBQWhCLElBQWdCLEVBQUU7UUFBL0IsSUFBTSxHQUFHLFNBQUE7UUFDYixJQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFckIsUUFBUSxHQUFHLEVBQUU7WUFDWixLQUFLLE1BQU07Z0JBQUUsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUFDLE1BQU07WUFDM0MsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFBQyxNQUFNO1lBQ2xELEtBQUssTUFBTTtnQkFBRSxNQUFNLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQUMsTUFBTTtZQUMvQyxLQUFLLE1BQU07Z0JBQUUsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUFDLE1BQU07WUFDekMsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFBQyxNQUFNO1lBQzFDLEtBQUssTUFBTTtnQkFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQUMsTUFBTTtZQUMxQyxLQUFLLE1BQU07Z0JBQUUsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUFDLE1BQU07WUFDM0MsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDbkQsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDNUQsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDekQsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxRQUFRLEdBQUcsaUJBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUN2RCxLQUFLLE1BQU07Z0JBQUUsTUFBTSxDQUFDLFNBQVMsR0FBRyxpQkFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQ3hELEtBQUssTUFBTTtnQkFBRSxNQUFNLENBQUMsa0JBQWtCLEdBQUcsaUJBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUNqRSxLQUFLLE1BQU07Z0JBQUUsTUFBTSxDQUFDLGVBQWUsR0FBRyxpQkFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQzlELEtBQUssTUFBTTtnQkFBRSxNQUFNLENBQUMsS0FBSyxHQUFHLGlCQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDcEQsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxTQUFTLEdBQUcsaUJBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUN4RCxLQUFLLE1BQU07Z0JBQUUsTUFBTSxDQUFDLFNBQVMsR0FBRyxpQkFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQVEsQ0FBQztnQkFBQyxNQUFNO1lBQy9ELEtBQUssTUFBTTtnQkFBRSxNQUFNLENBQUMsU0FBUyxHQUFHLGlCQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBUSxDQUFDO2dCQUFDLE1BQU07WUFDL0QsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsaUJBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUNyRCxLQUFLLE1BQU07Z0JBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxpQkFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQ25ELEtBQUssTUFBTTtnQkFBRSxNQUFNLENBQUMsT0FBTyxHQUFHLHlCQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUN2RCxLQUFLLE1BQU07Z0JBQUUsTUFBTSxDQUFDLGdCQUFnQixHQUFHLHlCQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUNoRSxLQUFLLE1BQU07Z0JBQUUsTUFBTSxDQUFDLGFBQWEsR0FBRyx5QkFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDN0QsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsdUJBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQ25ELEtBQUssTUFBTTtnQkFBRSxNQUFNLENBQUMsS0FBSyxHQUFHLHVCQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUNuRCxLQUFLLE1BQU07Z0JBQUUsTUFBTSxDQUFDLFFBQVEsR0FBRyx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDdEQsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsdUJBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQ3BELEtBQUssTUFBTTtnQkFBRSxNQUFNLENBQUMsUUFBUSxHQUFHLHlCQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUN4RCxLQUFLLE1BQU07Z0JBQUUsTUFBTSxDQUFDLElBQUksR0FBRyx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDbEQsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcseUJBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQ3JELEtBQUssTUFBTTtnQkFBRSxNQUFNLENBQUMsS0FBSyxHQUFHLHlCQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUNyRCxLQUFLLE1BQU07Z0JBQUUsTUFBTSxDQUFDLEtBQUssR0FBRyx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDbkQsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcseUJBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQ3RELEtBQUssTUFBTTtnQkFBRSxNQUFNLENBQUMsUUFBUSxHQUFHLHVCQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUN0RCxLQUFLLE1BQU07Z0JBQUUsTUFBTSxDQUFDLEtBQUssR0FBRyx5QkFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDckQsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQUMsTUFBTTtZQUN6RSxLQUFLLE9BQU87Z0JBQUUsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQUMsTUFBTTtZQUNqRSxLQUFLLE1BQU07Z0JBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSx5QkFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUseUJBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFBQyxNQUFNO1lBQzdGLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxNQUFNO2dCQUNWLE1BQU0sQ0FBQyxPQUFPLEdBQUc7b0JBQ2hCLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDO29CQUNqQixLQUFLLEVBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQTFCLENBQTBCLENBQUM7aUJBQ2xFLENBQUM7Z0JBQ0YsTUFBTTtZQUNQLEtBQUssTUFBTTtnQkFBRSxNQUFNLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQ3pELEtBQUssWUFBWSxDQUFDO1lBQ2xCLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssZUFBZSxDQUFDO1lBQ3JCLEtBQUssU0FBUyxDQUFDO1lBQ2YsS0FBSyxjQUFjLENBQUM7WUFDcEIsS0FBSyxnQkFBZ0I7Z0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFBQyxNQUFNO1lBQ2hEO2dCQUNDLFlBQVksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUF3QixHQUFHLE9BQUksRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNuRTtLQUNEO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxHQUFRLEVBQUUsT0FBZSxFQUFFLFlBQXFCO0lBQzlFLElBQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztJQUV2QixLQUFxQixVQUFnQixFQUFoQixLQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQWhCLGNBQWdCLEVBQWhCLElBQWdCLEVBQUU7UUFBbEMsSUFBTSxNQUFNLFNBQUE7UUFDaEIsSUFBTSxHQUFHLEdBQXFCLE1BQWEsQ0FBQztRQUM1QyxJQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFckIsUUFBUSxHQUFHLEVBQUU7WUFDWixLQUFLLFNBQVM7Z0JBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUFDLE1BQU07WUFDM0MsS0FBSyxnQkFBZ0I7Z0JBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUFDLE1BQU07WUFDbEQsS0FBSyxhQUFhO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFBQyxNQUFNO1lBQy9DLEtBQUssT0FBTztnQkFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQUMsTUFBTTtZQUN6QyxLQUFLLFFBQVE7Z0JBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUFDLE1BQU07WUFDMUMsS0FBSyxRQUFRO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFBQyxNQUFNO1lBQzFDLEtBQUssU0FBUztnQkFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQUMsTUFBTTtZQUMzQyxLQUFLLE9BQU87Z0JBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQzFELEtBQUssZ0JBQWdCO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDaEUsS0FBSyxhQUFhO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDN0QsS0FBSyxVQUFVO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsaUJBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUN2RCxLQUFLLFdBQVc7Z0JBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLGlCQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDM0QsS0FBSyxvQkFBb0I7Z0JBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxpQkFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQ2pFLEtBQUssaUJBQWlCO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsaUJBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUM5RCxLQUFLLE9BQU87Z0JBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxpQkFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQ3BELEtBQUssV0FBVztnQkFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLGlCQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDeEQsS0FBSyxXQUFXO2dCQUNmLElBQUksT0FBTyxLQUFLLE9BQU8sRUFBRTtvQkFDeEIsTUFBTSxDQUFDLElBQUksR0FBRyxpQkFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDL0I7cUJBQU07b0JBQ04sTUFBTSxDQUFDLElBQUksR0FBRyxpQkFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDL0I7Z0JBQ0QsTUFBTTtZQUNQLEtBQUssUUFBUTtnQkFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLGlCQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDckQsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsaUJBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUNuRCxLQUFLLFNBQVM7Z0JBQUUsTUFBTSxDQUFDLElBQUksR0FBRyx5QkFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDdkQsS0FBSyxrQkFBa0I7Z0JBQUUsTUFBTSxDQUFDLElBQUksR0FBRyx5QkFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDaEUsS0FBSyxlQUFlO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcseUJBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQzdELEtBQUssT0FBTztnQkFDWCxJQUFJLE9BQU8sS0FBSyxpQkFBaUIsRUFBRTtvQkFDbEMsTUFBTSxDQUFDLElBQUksR0FBRyx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUM5QjtxQkFBTTtvQkFDTixNQUFNLENBQUMsSUFBSSxHQUFHLHVCQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQzlCO2dCQUNELE1BQU07WUFDUCxLQUFLLFVBQVU7Z0JBQUUsTUFBTSxDQUFDLElBQUksR0FBRyx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDdEQsS0FBSyxRQUFRO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsdUJBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUN6RCxLQUFLLFVBQVU7Z0JBQUUsTUFBTSxDQUFDLElBQUksR0FBRyx5QkFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDeEQsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsdUJBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUN2RCxLQUFLLE9BQU87Z0JBQUUsTUFBTSxDQUFDLElBQUksR0FBRyx5QkFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDckQsS0FBSyxPQUFPO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcseUJBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQ3JELEtBQUssT0FBTztnQkFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLHVCQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDeEQsS0FBSyxRQUFRO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcseUJBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQ3RELEtBQUssVUFBVTtnQkFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLHVCQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDM0QsS0FBSyxPQUFPO2dCQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyx5QkFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDeEQsS0FBSyxTQUFTO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUFDLE1BQU07WUFDeEUsS0FBSyxPQUFPO2dCQUFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUFDLE1BQU07WUFDakUsS0FBSyxRQUFRO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUseUJBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLHlCQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQUMsTUFBTTtZQUM3RixLQUFLLFNBQVMsQ0FBQyxDQUFDO2dCQUNmLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHO29CQUMvQyxNQUFNLEVBQUcsR0FBcUIsQ0FBQyxJQUFJO29CQUNuQyxNQUFNLEVBQUcsR0FBcUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBMUIsQ0FBMEIsQ0FBQztpQkFDekUsQ0FBQztnQkFDRixNQUFNO2FBQ047WUFDRCxLQUFLLFVBQVU7Z0JBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQzdELEtBQUssWUFBWSxDQUFDO1lBQ2xCLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssZUFBZSxDQUFDO1lBQ3JCLEtBQUssU0FBUyxDQUFDO1lBQ2YsS0FBSyxjQUFjLENBQUM7WUFDcEIsS0FBSyxnQkFBZ0I7Z0JBQ3BCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQ2xCLE1BQU07WUFDUDtnQkFDQyxZQUFZLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBd0IsR0FBRyxhQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDekU7S0FDRDtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2YsQ0FBQyIsImZpbGUiOiJhZGRpdGlvbmFsSW5mby5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21CeXRlQXJyYXksIHRvQnl0ZUFycmF5IH0gZnJvbSAnYmFzZTY0LWpzJztcbmltcG9ydCB7IHJlYWRFZmZlY3RzLCB3cml0ZUVmZmVjdHMgfSBmcm9tICcuL2VmZmVjdHNIZWxwZXJzJztcbmltcG9ydCB7IGNsYW1wLCBjcmVhdGVFbnVtLCBsYXllckNvbG9ycywgTU9DS19IQU5ETEVSUyB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQge1xuXHRMYXllckFkZGl0aW9uYWxJbmZvLCBMYXllckVmZmVjdFNoYWRvdywgTGF5ZXJFZmZlY3RzT3V0ZXJHbG93LCBMYXllckVmZmVjdElubmVyR2xvdywgTGF5ZXJFZmZlY3RCZXZlbCxcblx0TGF5ZXJFZmZlY3RTb2xpZEZpbGwsIExheWVyRWZmZWN0UGF0dGVybk92ZXJsYXksIExheWVyRWZmZWN0R3JhZGllbnRPdmVybGF5LCBMYXllckVmZmVjdFNhdGluLCBFZmZlY3RDb250b3VyLFxuXHRFZmZlY3ROb2lzZUdyYWRpZW50LCBCZXppZXJQYXRoLCBQc2QsIFZlY3RvckNvbnRlbnQsIExheWVyRWZmZWN0U3Ryb2tlLCBFeHRyYUdyYWRpZW50SW5mbywgRWZmZWN0UGF0dGVybixcblx0RXh0cmFQYXR0ZXJuSW5mbywgUmVhZE9wdGlvbnMsIEJyaWdodG5lc3NBZGp1c3RtZW50LCBFeHBvc3VyZUFkanVzdG1lbnQsIFZpYnJhbmNlQWRqdXN0bWVudCxcblx0Q29sb3JCYWxhbmNlQWRqdXN0bWVudCwgQmxhY2tBbmRXaGl0ZUFkanVzdG1lbnQsIFBob3RvRmlsdGVyQWRqdXN0bWVudCwgQ2hhbm5lbE1peGVyQ2hhbm5lbCxcblx0Q2hhbm5lbE1peGVyQWRqdXN0bWVudCwgUG9zdGVyaXplQWRqdXN0bWVudCwgVGhyZXNob2xkQWRqdXN0bWVudCwgR3JhZGllbnRNYXBBZGp1c3RtZW50LCBDTVlLLFxuXHRTZWxlY3RpdmVDb2xvckFkanVzdG1lbnQsIENvbG9yTG9va3VwQWRqdXN0bWVudCwgTGV2ZWxzQWRqdXN0bWVudENoYW5uZWwsIExldmVsc0FkanVzdG1lbnQsXG5cdEN1cnZlc0FkanVzdG1lbnQsIEN1cnZlc0FkanVzdG1lbnRDaGFubmVsLCBIdWVTYXR1cmF0aW9uQWRqdXN0bWVudCwgSHVlU2F0dXJhdGlvbkFkanVzdG1lbnRDaGFubmVsLFxuXHRQcmVzZXRJbmZvLCBDb2xvciwgQ29sb3JCYWxhbmNlVmFsdWVzLCBXcml0ZU9wdGlvbnMsIExpbmtlZEZpbGUsIFBsYWNlZExheWVyVHlwZSwgV2FycCwgRWZmZWN0U29saWRHcmFkaWVudCxcblx0S2V5RGVzY3JpcHRvckl0ZW0sIEJvb2xlYW5PcGVyYXRpb24sIExheWVyRWZmZWN0c0luZm8sIEFubm90YXRpb24sIExheWVyVmVjdG9yTWFzayxcbn0gZnJvbSAnLi9wc2QnO1xuaW1wb3J0IHtcblx0UHNkUmVhZGVyLCByZWFkU2lnbmF0dXJlLCByZWFkVW5pY29kZVN0cmluZywgc2tpcEJ5dGVzLCByZWFkVWludDMyLCByZWFkVWludDgsIHJlYWRGbG9hdDY0LCByZWFkVWludDE2LFxuXHRyZWFkQnl0ZXMsIHJlYWRJbnQxNiwgY2hlY2tTaWduYXR1cmUsIHJlYWRGbG9hdDMyLCByZWFkRml4ZWRQb2ludFBhdGgzMiwgcmVhZFNlY3Rpb24sIHJlYWRDb2xvciwgcmVhZEludDMyLFxuXHRyZWFkUGFzY2FsU3RyaW5nLCByZWFkVW5pY29kZVN0cmluZ1dpdGhMZW5ndGgsIHJlYWRBc2NpaVN0cmluZywgcmVhZFBhdHRlcm4sXG59IGZyb20gJy4vcHNkUmVhZGVyJztcbmltcG9ydCB7XG5cdFBzZFdyaXRlciwgd3JpdGVaZXJvcywgd3JpdGVTaWduYXR1cmUsIHdyaXRlQnl0ZXMsIHdyaXRlVWludDMyLCB3cml0ZVVpbnQxNiwgd3JpdGVGbG9hdDY0LCB3cml0ZVVpbnQ4LFxuXHR3cml0ZUludDE2LCB3cml0ZUZsb2F0MzIsIHdyaXRlRml4ZWRQb2ludFBhdGgzMiwgd3JpdGVVbmljb2RlU3RyaW5nLCB3cml0ZVNlY3Rpb24sIHdyaXRlVW5pY29kZVN0cmluZ1dpdGhQYWRkaW5nLFxuXHR3cml0ZUNvbG9yLCB3cml0ZVBhc2NhbFN0cmluZywgd3JpdGVJbnQzMixcbn0gZnJvbSAnLi9wc2RXcml0ZXInO1xuaW1wb3J0IHtcblx0QW5udCwgQkVTbCwgQkVTcywgQkVURSwgQmxuTSwgYnZsVCwgQ2xyUywgRGVzY2lwdG9yR3JhZGllbnQsIERlc2NyaXB0b3JDb2xvciwgRGVzY3JpcHRvckdyYWRpZW50Q29udGVudCxcblx0RGVzY3JpcHRvclBhdHRlcm5Db250ZW50LCBEZXNjcmlwdG9yVW5pdHNWYWx1ZSwgRGVzY3JpcHRvclZlY3RvckNvbnRlbnQsIEZyRmwsIEZTdGwsIEdyZFQsIElHU3IsIE9ybnQsXG5cdHBhcnNlQW5nbGUsIHBhcnNlUGVyY2VudCwgcGFyc2VQZXJjZW50T3JBbmdsZSwgcGFyc2VVbml0cywgcGFyc2VVbml0c09yTnVtYmVyLCBRdWlsdFdhcnBEZXNjcmlwdG9yLCByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IsIFN0cm9rZURlc2NyaXB0b3IsXG5cdHN0cm9rZVN0eWxlTGluZUFsaWdubWVudCwgc3Ryb2tlU3R5bGVMaW5lQ2FwVHlwZSwgc3Ryb2tlU3R5bGVMaW5lSm9pblR5cGUsIFRleHREZXNjcmlwdG9yLCB0ZXh0R3JpZGRpbmcsXG5cdHVuaXRzQW5nbGUsIHVuaXRzUGVyY2VudCwgdW5pdHNWYWx1ZSwgV2FycERlc2NyaXB0b3IsIHdhcnBTdHlsZSwgd3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvclxufSBmcm9tICcuL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgc2VyaWFsaXplRW5naW5lRGF0YSwgcGFyc2VFbmdpbmVEYXRhIH0gZnJvbSAnLi9lbmdpbmVEYXRhJztcbmltcG9ydCB7IGVuY29kZUVuZ2luZURhdGEsIGRlY29kZUVuZ2luZURhdGEgfSBmcm9tICcuL3RleHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuZGVkV3JpdGVPcHRpb25zIGV4dGVuZHMgV3JpdGVPcHRpb25zIHtcblx0bGF5ZXJJZHM6IG51bWJlcltdO1xufVxuXG50eXBlIEhhc01ldGhvZCA9ICh0YXJnZXQ6IExheWVyQWRkaXRpb25hbEluZm8pID0+IGJvb2xlYW47XG50eXBlIFJlYWRNZXRob2QgPSAocmVhZGVyOiBQc2RSZWFkZXIsIHRhcmdldDogTGF5ZXJBZGRpdGlvbmFsSW5mbywgbGVmdDogKCkgPT4gbnVtYmVyLCBwc2Q6IFBzZCwgb3B0aW9uczogUmVhZE9wdGlvbnMpID0+IHZvaWQ7XG50eXBlIFdyaXRlTWV0aG9kID0gKHdyaXRlcjogUHNkV3JpdGVyLCB0YXJnZXQ6IExheWVyQWRkaXRpb25hbEluZm8sIHBzZDogUHNkLCBvcHRpb25zOiBFeHRlbmRlZFdyaXRlT3B0aW9ucykgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBJbmZvSGFuZGxlciB7XG5cdGtleTogc3RyaW5nO1xuXHRoYXM6IEhhc01ldGhvZDtcblx0cmVhZDogUmVhZE1ldGhvZDtcblx0d3JpdGU6IFdyaXRlTWV0aG9kO1xufVxuXG5leHBvcnQgY29uc3QgaW5mb0hhbmRsZXJzOiBJbmZvSGFuZGxlcltdID0gW107XG5leHBvcnQgY29uc3QgaW5mb0hhbmRsZXJzTWFwOiB7IFtrZXk6IHN0cmluZ106IEluZm9IYW5kbGVyIH0gPSB7fTtcblxuZnVuY3Rpb24gYWRkSGFuZGxlcihrZXk6IHN0cmluZywgaGFzOiBIYXNNZXRob2QsIHJlYWQ6IFJlYWRNZXRob2QsIHdyaXRlOiBXcml0ZU1ldGhvZCkge1xuXHRjb25zdCBoYW5kbGVyOiBJbmZvSGFuZGxlciA9IHsga2V5LCBoYXMsIHJlYWQsIHdyaXRlIH07XG5cdGluZm9IYW5kbGVycy5wdXNoKGhhbmRsZXIpO1xuXHRpbmZvSGFuZGxlcnNNYXBbaGFuZGxlci5rZXldID0gaGFuZGxlcjtcbn1cblxuZnVuY3Rpb24gYWRkSGFuZGxlckFsaWFzKGtleTogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZykge1xuXHRpbmZvSGFuZGxlcnNNYXBba2V5XSA9IGluZm9IYW5kbGVyc01hcFt0YXJnZXRdO1xufVxuXG5mdW5jdGlvbiBoYXNLZXkoa2V5OiBrZXlvZiBMYXllckFkZGl0aW9uYWxJbmZvKSB7XG5cdHJldHVybiAodGFyZ2V0OiBMYXllckFkZGl0aW9uYWxJbmZvKSA9PiB0YXJnZXRba2V5XSAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiByZWFkTGVuZ3RoNjQocmVhZGVyOiBQc2RSZWFkZXIpIHtcblx0aWYgKHJlYWRVaW50MzIocmVhZGVyKSkgdGhyb3cgbmV3IEVycm9yKGBSZXNvdXJjZSBzaXplIGFib3ZlIDQgR0IgbGltaXQgYXQgJHtyZWFkZXIub2Zmc2V0LnRvU3RyaW5nKDE2KX1gKTtcblx0cmV0dXJuIHJlYWRVaW50MzIocmVhZGVyKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVMZW5ndGg2NCh3cml0ZXI6IFBzZFdyaXRlciwgbGVuZ3RoOiBudW1iZXIpIHtcblx0d3JpdGVVaW50MzIod3JpdGVyLCAwKTtcblx0d3JpdGVVaW50MzIod3JpdGVyLCBsZW5ndGgpO1xufVxuXG5hZGRIYW5kbGVyKFxuXHQnVHlTaCcsXG5cdGhhc0tleSgndGV4dCcpLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnRCeXRlcykgPT4ge1xuXHRcdGlmIChyZWFkSW50MTYocmVhZGVyKSAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFR5U2ggdmVyc2lvbmApO1xuXG5cdFx0Y29uc3QgdHJhbnNmb3JtOiBudW1iZXJbXSA9IFtdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgNjsgaSsrKSB0cmFuc2Zvcm0ucHVzaChyZWFkRmxvYXQ2NChyZWFkZXIpKTtcblxuXHRcdGlmIChyZWFkSW50MTYocmVhZGVyKSAhPT0gNTApIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBUeVNoIHRleHQgdmVyc2lvbmApO1xuXHRcdGNvbnN0IHRleHQ6IFRleHREZXNjcmlwdG9yID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcik7XG5cblx0XHRpZiAocmVhZEludDE2KHJlYWRlcikgIT09IDEpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBUeVNoIHdhcnAgdmVyc2lvbmApO1xuXHRcdGNvbnN0IHdhcnA6IFdhcnBEZXNjcmlwdG9yID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcik7XG5cblx0XHR0YXJnZXQudGV4dCA9IHtcblx0XHRcdHRyYW5zZm9ybSxcblx0XHRcdGxlZnQ6IHJlYWRGbG9hdDMyKHJlYWRlciksXG5cdFx0XHR0b3A6IHJlYWRGbG9hdDMyKHJlYWRlciksXG5cdFx0XHRyaWdodDogcmVhZEZsb2F0MzIocmVhZGVyKSxcblx0XHRcdGJvdHRvbTogcmVhZEZsb2F0MzIocmVhZGVyKSxcblx0XHRcdHRleHQ6IHRleHRbJ1R4dCAnXS5yZXBsYWNlKC9cXHIvZywgJ1xcbicpLFxuXHRcdFx0aW5kZXg6IHRleHQuVGV4dEluZGV4IHx8IDAsXG5cdFx0XHRncmlkZGluZzogdGV4dEdyaWRkaW5nLmRlY29kZSh0ZXh0LnRleHRHcmlkZGluZyksXG5cdFx0XHRhbnRpQWxpYXM6IEFubnQuZGVjb2RlKHRleHQuQW50QSksXG5cdFx0XHRvcmllbnRhdGlvbjogT3JudC5kZWNvZGUodGV4dC5Pcm50KSxcblx0XHRcdHdhcnA6IHtcblx0XHRcdFx0c3R5bGU6IHdhcnBTdHlsZS5kZWNvZGUod2FycC53YXJwU3R5bGUpLFxuXHRcdFx0XHR2YWx1ZTogd2FycC53YXJwVmFsdWUgfHwgMCxcblx0XHRcdFx0cGVyc3BlY3RpdmU6IHdhcnAud2FycFBlcnNwZWN0aXZlIHx8IDAsXG5cdFx0XHRcdHBlcnNwZWN0aXZlT3RoZXI6IHdhcnAud2FycFBlcnNwZWN0aXZlT3RoZXIgfHwgMCxcblx0XHRcdFx0cm90YXRlOiBPcm50LmRlY29kZSh3YXJwLndhcnBSb3RhdGUpLFxuXHRcdFx0fSxcblx0XHR9O1xuXG5cdFx0aWYgKHRleHQuRW5naW5lRGF0YSkge1xuXHRcdFx0Y29uc3QgZW5naW5lRGF0YSA9IGRlY29kZUVuZ2luZURhdGEocGFyc2VFbmdpbmVEYXRhKHRleHQuRW5naW5lRGF0YSkpO1xuXG5cdFx0XHQvLyBjb25zdCBiZWZvcmUgPSBwYXJzZUVuZ2luZURhdGEodGV4dC5FbmdpbmVEYXRhKTtcblx0XHRcdC8vIGNvbnN0IGFmdGVyID0gZW5jb2RlRW5naW5lRGF0YShlbmdpbmVEYXRhKTtcblx0XHRcdC8vIHJlcXVpcmUoJ2ZzJykud3JpdGVGaWxlU3luYygnYmVmb3JlLnR4dCcsIHJlcXVpcmUoJ3V0aWwnKS5pbnNwZWN0KGJlZm9yZSwgZmFsc2UsIDk5LCBmYWxzZSksICd1dGY4Jyk7XG5cdFx0XHQvLyByZXF1aXJlKCdmcycpLndyaXRlRmlsZVN5bmMoJ2FmdGVyLnR4dCcsIHJlcXVpcmUoJ3V0aWwnKS5pbnNwZWN0KGFmdGVyLCBmYWxzZSwgOTksIGZhbHNlKSwgJ3V0ZjgnKTtcblxuXHRcdFx0Ly8gY29uc29sZS5sb2cocmVxdWlyZSgndXRpbCcpLmluc3BlY3QocGFyc2VFbmdpbmVEYXRhKHRleHQuRW5naW5lRGF0YSksIGZhbHNlLCA5OSwgdHJ1ZSkpO1xuXHRcdFx0dGFyZ2V0LnRleHQgPSB7IC4uLnRhcmdldC50ZXh0LCAuLi5lbmdpbmVEYXRhIH07XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhyZXF1aXJlKCd1dGlsJykuaW5zcGVjdCh0YXJnZXQudGV4dCwgZmFsc2UsIDk5LCB0cnVlKSk7XG5cdFx0fVxuXG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdEJ5dGVzKCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCB0ZXh0ID0gdGFyZ2V0LnRleHQhO1xuXHRcdGNvbnN0IHdhcnAgPSB0ZXh0LndhcnAgfHwge307XG5cdFx0Y29uc3QgdHJhbnNmb3JtID0gdGV4dC50cmFuc2Zvcm0gfHwgWzEsIDAsIDAsIDEsIDAsIDBdO1xuXG5cdFx0Y29uc3QgdGV4dERlc2NyaXB0b3I6IFRleHREZXNjcmlwdG9yID0ge1xuXHRcdFx0J1R4dCAnOiAodGV4dC50ZXh0IHx8ICcnKS5yZXBsYWNlKC9cXHI/XFxuL2csICdcXHInKSxcblx0XHRcdHRleHRHcmlkZGluZzogdGV4dEdyaWRkaW5nLmVuY29kZSh0ZXh0LmdyaWRkaW5nKSxcblx0XHRcdE9ybnQ6IE9ybnQuZW5jb2RlKHRleHQub3JpZW50YXRpb24pLFxuXHRcdFx0QW50QTogQW5udC5lbmNvZGUodGV4dC5hbnRpQWxpYXMpLFxuXHRcdFx0VGV4dEluZGV4OiB0ZXh0LmluZGV4IHx8IDAsXG5cdFx0XHRFbmdpbmVEYXRhOiBzZXJpYWxpemVFbmdpbmVEYXRhKGVuY29kZUVuZ2luZURhdGEodGV4dCkpLFxuXHRcdH07XG5cblx0XHR3cml0ZUludDE2KHdyaXRlciwgMSk7IC8vIHZlcnNpb25cblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgNjsgaSsrKSB7XG5cdFx0XHR3cml0ZUZsb2F0NjQod3JpdGVyLCB0cmFuc2Zvcm1baV0pO1xuXHRcdH1cblxuXHRcdHdyaXRlSW50MTYod3JpdGVyLCA1MCk7IC8vIHRleHQgdmVyc2lvblxuXHRcdHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgJ1R4THInLCB0ZXh0RGVzY3JpcHRvcik7XG5cblx0XHR3cml0ZUludDE2KHdyaXRlciwgMSk7IC8vIHdhcnAgdmVyc2lvblxuXHRcdHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgJ3dhcnAnLCBlbmNvZGVXYXJwKHdhcnApKTtcblxuXHRcdHdyaXRlRmxvYXQzMih3cml0ZXIsIHRleHQubGVmdCEpO1xuXHRcdHdyaXRlRmxvYXQzMih3cml0ZXIsIHRleHQudG9wISk7XG5cdFx0d3JpdGVGbG9hdDMyKHdyaXRlciwgdGV4dC5yaWdodCEpO1xuXHRcdHdyaXRlRmxvYXQzMih3cml0ZXIsIHRleHQuYm90dG9tISk7XG5cblx0XHQvLyB3cml0ZVplcm9zKHdyaXRlciwgMik7XG5cdH0sXG4pO1xuXG4vLyB2ZWN0b3IgZmlsbHNcblxuYWRkSGFuZGxlcihcblx0J1NvQ28nLFxuXHR0YXJnZXQgPT4gdGFyZ2V0LnZlY3RvckZpbGwgIT09IHVuZGVmaW5lZCAmJiB0YXJnZXQudmVjdG9yU3Ryb2tlID09PSB1bmRlZmluZWQgJiZcblx0XHR0YXJnZXQudmVjdG9yRmlsbC50eXBlID09PSAnY29sb3InLFxuXHQocmVhZGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBkZXNjcmlwdG9yID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcik7XG5cdFx0dGFyZ2V0LnZlY3RvckZpbGwgPSBwYXJzZVZlY3RvckNvbnRlbnQoZGVzY3JpcHRvcik7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IHsgZGVzY3JpcHRvciB9ID0gc2VyaWFsaXplVmVjdG9yQ29udGVudCh0YXJnZXQudmVjdG9yRmlsbCEpO1xuXHRcdHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgJ251bGwnLCBkZXNjcmlwdG9yKTtcblx0fSxcbik7XG5cbmFkZEhhbmRsZXIoXG5cdCdHZEZsJyxcblx0dGFyZ2V0ID0+IHRhcmdldC52ZWN0b3JGaWxsICE9PSB1bmRlZmluZWQgJiYgdGFyZ2V0LnZlY3RvclN0cm9rZSA9PT0gdW5kZWZpbmVkICYmXG5cdFx0KHRhcmdldC52ZWN0b3JGaWxsLnR5cGUgPT09ICdzb2xpZCcgfHwgdGFyZ2V0LnZlY3RvckZpbGwudHlwZSA9PT0gJ25vaXNlJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdGNvbnN0IGRlc2NyaXB0b3IgPSByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyKTtcblx0XHR0YXJnZXQudmVjdG9yRmlsbCA9IHBhcnNlVmVjdG9yQ29udGVudChkZXNjcmlwdG9yKTtcblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCB7IGRlc2NyaXB0b3IgfSA9IHNlcmlhbGl6ZVZlY3RvckNvbnRlbnQodGFyZ2V0LnZlY3RvckZpbGwhKTtcblx0XHR3cml0ZVZlcnNpb25BbmREZXNjcmlwdG9yKHdyaXRlciwgJycsICdudWxsJywgZGVzY3JpcHRvcik7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQnUHRGbCcsXG5cdHRhcmdldCA9PiB0YXJnZXQudmVjdG9yRmlsbCAhPT0gdW5kZWZpbmVkICYmIHRhcmdldC52ZWN0b3JTdHJva2UgPT09IHVuZGVmaW5lZCAmJlxuXHRcdHRhcmdldC52ZWN0b3JGaWxsLnR5cGUgPT09ICdwYXR0ZXJuJyxcblx0KHJlYWRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgZGVzY3JpcHRvciA9IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpO1xuXHRcdHRhcmdldC52ZWN0b3JGaWxsID0gcGFyc2VWZWN0b3JDb250ZW50KGRlc2NyaXB0b3IpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCB7IGRlc2NyaXB0b3IgfSA9IHNlcmlhbGl6ZVZlY3RvckNvbnRlbnQodGFyZ2V0LnZlY3RvckZpbGwhKTtcblx0XHR3cml0ZVZlcnNpb25BbmREZXNjcmlwdG9yKHdyaXRlciwgJycsICdudWxsJywgZGVzY3JpcHRvcik7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQndnNjZycsXG5cdHRhcmdldCA9PiB0YXJnZXQudmVjdG9yRmlsbCAhPT0gdW5kZWZpbmVkICYmIHRhcmdldC52ZWN0b3JTdHJva2UgIT09IHVuZGVmaW5lZCxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0cmVhZFNpZ25hdHVyZShyZWFkZXIpOyAvLyBrZXlcblx0XHRjb25zdCBkZXNjID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcik7XG5cdFx0dGFyZ2V0LnZlY3RvckZpbGwgPSBwYXJzZVZlY3RvckNvbnRlbnQoZGVzYyk7XG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgeyBkZXNjcmlwdG9yLCBrZXkgfSA9IHNlcmlhbGl6ZVZlY3RvckNvbnRlbnQodGFyZ2V0LnZlY3RvckZpbGwhKTtcblx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsIGtleSk7XG5cdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAnbnVsbCcsIGRlc2NyaXB0b3IpO1xuXHR9LFxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRCZXppZXJLbm90KHJlYWRlcjogUHNkUmVhZGVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikge1xuXHRjb25zdCB5MCA9IHJlYWRGaXhlZFBvaW50UGF0aDMyKHJlYWRlcikgKiBoZWlnaHQ7XG5cdGNvbnN0IHgwID0gcmVhZEZpeGVkUG9pbnRQYXRoMzIocmVhZGVyKSAqIHdpZHRoO1xuXHRjb25zdCB5MSA9IHJlYWRGaXhlZFBvaW50UGF0aDMyKHJlYWRlcikgKiBoZWlnaHQ7XG5cdGNvbnN0IHgxID0gcmVhZEZpeGVkUG9pbnRQYXRoMzIocmVhZGVyKSAqIHdpZHRoO1xuXHRjb25zdCB5MiA9IHJlYWRGaXhlZFBvaW50UGF0aDMyKHJlYWRlcikgKiBoZWlnaHQ7XG5cdGNvbnN0IHgyID0gcmVhZEZpeGVkUG9pbnRQYXRoMzIocmVhZGVyKSAqIHdpZHRoO1xuXHRyZXR1cm4gW3gwLCB5MCwgeDEsIHkxLCB4MiwgeTJdO1xufVxuXG5mdW5jdGlvbiB3cml0ZUJlemllcktub3Qod3JpdGVyOiBQc2RXcml0ZXIsIHBvaW50czogbnVtYmVyW10sIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSB7XG5cdHdyaXRlRml4ZWRQb2ludFBhdGgzMih3cml0ZXIsIHBvaW50c1sxXSAvIGhlaWdodCk7IC8vIHkwXG5cdHdyaXRlRml4ZWRQb2ludFBhdGgzMih3cml0ZXIsIHBvaW50c1swXSAvIHdpZHRoKTsgLy8geDBcblx0d3JpdGVGaXhlZFBvaW50UGF0aDMyKHdyaXRlciwgcG9pbnRzWzNdIC8gaGVpZ2h0KTsgLy8geTFcblx0d3JpdGVGaXhlZFBvaW50UGF0aDMyKHdyaXRlciwgcG9pbnRzWzJdIC8gd2lkdGgpOyAvLyB4MVxuXHR3cml0ZUZpeGVkUG9pbnRQYXRoMzIod3JpdGVyLCBwb2ludHNbNV0gLyBoZWlnaHQpOyAvLyB5MlxuXHR3cml0ZUZpeGVkUG9pbnRQYXRoMzIod3JpdGVyLCBwb2ludHNbNF0gLyB3aWR0aCk7IC8vIHgyXG59XG5cbmV4cG9ydCBjb25zdCBib29sZWFuT3BlcmF0aW9uczogQm9vbGVhbk9wZXJhdGlvbltdID0gWydleGNsdWRlJywgJ2NvbWJpbmUnLCAnc3VidHJhY3QnLCAnaW50ZXJzZWN0J107XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVmVjdG9yTWFzayhyZWFkZXI6IFBzZFJlYWRlciwgdmVjdG9yTWFzazogTGF5ZXJWZWN0b3JNYXNrLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgc2l6ZTogbnVtYmVyKSB7XG5cdGNvbnN0IGVuZCA9IHJlYWRlci5vZmZzZXQgKyBzaXplO1xuXHRjb25zdCBwYXRocyA9IHZlY3Rvck1hc2sucGF0aHM7XG5cdGxldCBwYXRoOiBCZXppZXJQYXRoIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG5cdHdoaWxlICgoZW5kIC0gcmVhZGVyLm9mZnNldCkgPj0gMjYpIHtcblx0XHRjb25zdCBzZWxlY3RvciA9IHJlYWRVaW50MTYocmVhZGVyKTtcblxuXHRcdHN3aXRjaCAoc2VsZWN0b3IpIHtcblx0XHRcdGNhc2UgMDogLy8gQ2xvc2VkIHN1YnBhdGggbGVuZ3RoIHJlY29yZFxuXHRcdFx0Y2FzZSAzOiB7IC8vIE9wZW4gc3VicGF0aCBsZW5ndGggcmVjb3JkXG5cdFx0XHRcdHJlYWRVaW50MTYocmVhZGVyKTsgLy8gY291bnRcblx0XHRcdFx0Y29uc3QgYm9vbE9wID0gcmVhZEludDE2KHJlYWRlcik7XG5cdFx0XHRcdHJlYWRVaW50MTYocmVhZGVyKTsgLy8gYWx3YXlzIDEgP1xuXHRcdFx0XHRza2lwQnl0ZXMocmVhZGVyLCAxOCk7XG5cdFx0XHRcdC8vIFRPRE86ICdjb21iaW5lJyBoZXJlIG1pZ2h0IGJlIHdyb25nXG5cdFx0XHRcdHBhdGggPSB7IG9wZW46IHNlbGVjdG9yID09PSAzLCBvcGVyYXRpb246IGJvb2xPcCA9PT0gLTEgPyAnY29tYmluZScgOiBib29sZWFuT3BlcmF0aW9uc1tib29sT3BdLCBrbm90czogW10gfTtcblx0XHRcdFx0cGF0aHMucHVzaChwYXRoKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIDE6IC8vIENsb3NlZCBzdWJwYXRoIEJlemllciBrbm90LCBsaW5rZWRcblx0XHRcdGNhc2UgMjogLy8gQ2xvc2VkIHN1YnBhdGggQmV6aWVyIGtub3QsIHVubGlua2VkXG5cdFx0XHRjYXNlIDQ6IC8vIE9wZW4gc3VicGF0aCBCZXppZXIga25vdCwgbGlua2VkXG5cdFx0XHRjYXNlIDU6IC8vIE9wZW4gc3VicGF0aCBCZXppZXIga25vdCwgdW5saW5rZWRcblx0XHRcdFx0cGF0aCEua25vdHMucHVzaCh7IGxpbmtlZDogKHNlbGVjdG9yID09PSAxIHx8IHNlbGVjdG9yID09PSA0KSwgcG9pbnRzOiByZWFkQmV6aWVyS25vdChyZWFkZXIsIHdpZHRoLCBoZWlnaHQpIH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgNjogLy8gUGF0aCBmaWxsIHJ1bGUgcmVjb3JkXG5cdFx0XHRcdHNraXBCeXRlcyhyZWFkZXIsIDI0KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDc6IHsgLy8gQ2xpcGJvYXJkIHJlY29yZFxuXHRcdFx0XHQvLyBUT0RPOiBjaGVjayBpZiB0aGVzZSBuZWVkIHRvIGJlIG11bHRpcGxpZWQgYnkgZG9jdW1lbnQgc2l6ZVxuXHRcdFx0XHRjb25zdCB0b3AgPSByZWFkRml4ZWRQb2ludFBhdGgzMihyZWFkZXIpO1xuXHRcdFx0XHRjb25zdCBsZWZ0ID0gcmVhZEZpeGVkUG9pbnRQYXRoMzIocmVhZGVyKTtcblx0XHRcdFx0Y29uc3QgYm90dG9tID0gcmVhZEZpeGVkUG9pbnRQYXRoMzIocmVhZGVyKTtcblx0XHRcdFx0Y29uc3QgcmlnaHQgPSByZWFkRml4ZWRQb2ludFBhdGgzMihyZWFkZXIpO1xuXHRcdFx0XHRjb25zdCByZXNvbHV0aW9uID0gcmVhZEZpeGVkUG9pbnRQYXRoMzIocmVhZGVyKTtcblx0XHRcdFx0c2tpcEJ5dGVzKHJlYWRlciwgNCk7XG5cdFx0XHRcdHZlY3Rvck1hc2suY2xpcGJvYXJkID0geyB0b3AsIGxlZnQsIGJvdHRvbSwgcmlnaHQsIHJlc29sdXRpb24gfTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIDg6IC8vIEluaXRpYWwgZmlsbCBydWxlIHJlY29yZFxuXHRcdFx0XHR2ZWN0b3JNYXNrLmZpbGxTdGFydHNXaXRoQWxsUGl4ZWxzID0gISFyZWFkVWludDE2KHJlYWRlcik7XG5cdFx0XHRcdHNraXBCeXRlcyhyZWFkZXIsIDIyKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdm1zayBzZWN0aW9uJyk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHBhdGhzO1xufVxuXG5hZGRIYW5kbGVyKFxuXHQndm1zaycsXG5cdGhhc0tleSgndmVjdG9yTWFzaycpLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQsIHsgd2lkdGgsIGhlaWdodCB9KSA9PiB7XG5cdFx0aWYgKHJlYWRVaW50MzIocmVhZGVyKSAhPT0gMykgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZtc2sgdmVyc2lvbicpO1xuXG5cdFx0dGFyZ2V0LnZlY3Rvck1hc2sgPSB7IHBhdGhzOiBbXSB9O1xuXHRcdGNvbnN0IHZlY3Rvck1hc2sgPSB0YXJnZXQudmVjdG9yTWFzaztcblxuXHRcdGNvbnN0IGZsYWdzID0gcmVhZFVpbnQzMihyZWFkZXIpO1xuXHRcdHZlY3Rvck1hc2suaW52ZXJ0ID0gKGZsYWdzICYgMSkgIT09IDA7XG5cdFx0dmVjdG9yTWFzay5ub3RMaW5rID0gKGZsYWdzICYgMikgIT09IDA7XG5cdFx0dmVjdG9yTWFzay5kaXNhYmxlID0gKGZsYWdzICYgNCkgIT09IDA7XG5cblx0XHRyZWFkVmVjdG9yTWFzayhyZWFkZXIsIHZlY3Rvck1hc2ssIHdpZHRoLCBoZWlnaHQsIGxlZnQoKSk7XG5cblx0XHQvLyBkcmF3QmV6aWVyUGF0aHModmVjdG9yTWFzay5wYXRocywgd2lkdGgsIGhlaWdodCwgJ291dC5wbmcnKTtcblxuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCwgeyB3aWR0aCwgaGVpZ2h0IH0pID0+IHtcblx0XHRjb25zdCB2ZWN0b3JNYXNrID0gdGFyZ2V0LnZlY3Rvck1hc2shO1xuXHRcdGNvbnN0IGZsYWdzID1cblx0XHRcdCh2ZWN0b3JNYXNrLmludmVydCA/IDEgOiAwKSB8XG5cdFx0XHQodmVjdG9yTWFzay5ub3RMaW5rID8gMiA6IDApIHxcblx0XHRcdCh2ZWN0b3JNYXNrLmRpc2FibGUgPyA0IDogMCk7XG5cblx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIDMpOyAvLyB2ZXJzaW9uXG5cdFx0d3JpdGVVaW50MzIod3JpdGVyLCBmbGFncyk7XG5cblx0XHQvLyBpbml0aWFsIGVudHJ5XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCA2KTtcblx0XHR3cml0ZVplcm9zKHdyaXRlciwgMjQpO1xuXG5cdFx0Y29uc3QgY2xpcGJvYXJkID0gdmVjdG9yTWFzay5jbGlwYm9hcmQ7XG5cdFx0aWYgKGNsaXBib2FyZCkge1xuXHRcdFx0d3JpdGVVaW50MTYod3JpdGVyLCA3KTtcblx0XHRcdHdyaXRlRml4ZWRQb2ludFBhdGgzMih3cml0ZXIsIGNsaXBib2FyZC50b3ApO1xuXHRcdFx0d3JpdGVGaXhlZFBvaW50UGF0aDMyKHdyaXRlciwgY2xpcGJvYXJkLmxlZnQpO1xuXHRcdFx0d3JpdGVGaXhlZFBvaW50UGF0aDMyKHdyaXRlciwgY2xpcGJvYXJkLmJvdHRvbSk7XG5cdFx0XHR3cml0ZUZpeGVkUG9pbnRQYXRoMzIod3JpdGVyLCBjbGlwYm9hcmQucmlnaHQpO1xuXHRcdFx0d3JpdGVGaXhlZFBvaW50UGF0aDMyKHdyaXRlciwgY2xpcGJvYXJkLnJlc29sdXRpb24pO1xuXHRcdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDQpO1xuXHRcdH1cblxuXHRcdGlmICh2ZWN0b3JNYXNrLmZpbGxTdGFydHNXaXRoQWxsUGl4ZWxzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHdyaXRlVWludDE2KHdyaXRlciwgOCk7XG5cdFx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIHZlY3Rvck1hc2suZmlsbFN0YXJ0c1dpdGhBbGxQaXhlbHMgPyAxIDogMCk7XG5cdFx0XHR3cml0ZVplcm9zKHdyaXRlciwgMjIpO1xuXHRcdH1cblxuXHRcdGZvciAoY29uc3QgcGF0aCBvZiB2ZWN0b3JNYXNrLnBhdGhzKSB7XG5cdFx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIHBhdGgub3BlbiA/IDMgOiAwKTtcblx0XHRcdHdyaXRlVWludDE2KHdyaXRlciwgcGF0aC5rbm90cy5sZW5ndGgpO1xuXHRcdFx0d3JpdGVVaW50MTYod3JpdGVyLCBNYXRoLmFicyhib29sZWFuT3BlcmF0aW9ucy5pbmRleE9mKHBhdGgub3BlcmF0aW9uKSkpOyAvLyBkZWZhdWx0IHRvIDEgaWYgbm90IGZvdW5kXG5cdFx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIDEpO1xuXHRcdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDE4KTsgLy8gVE9ETzogdGhlc2UgYXJlIHNvbWV0aW1lcyBub24temVyb1xuXG5cdFx0XHRjb25zdCBsaW5rZWRLbm90ID0gcGF0aC5vcGVuID8gNCA6IDE7XG5cdFx0XHRjb25zdCB1bmxpbmtlZEtub3QgPSBwYXRoLm9wZW4gPyA1IDogMjtcblxuXHRcdFx0Zm9yIChjb25zdCB7IGxpbmtlZCwgcG9pbnRzIH0gb2YgcGF0aC5rbm90cykge1xuXHRcdFx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIGxpbmtlZCA/IGxpbmtlZEtub3QgOiB1bmxpbmtlZEtub3QpO1xuXHRcdFx0XHR3cml0ZUJlemllcktub3Qod3JpdGVyLCBwb2ludHMsIHdpZHRoLCBoZWlnaHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcbik7XG5cbi8vIFRPRE86IG5lZWQgdG8gd3JpdGUgdm1zayBpZiBoYXMgb3V0bGluZSA/XG5hZGRIYW5kbGVyQWxpYXMoJ3ZzbXMnLCAndm1zaycpO1xuLy8gYWRkSGFuZGxlckFsaWFzKCd2bXNrJywgJ3ZzbXMnKTtcblxuaW50ZXJmYWNlIFZvZ2tEZXNjcmlwdG9yIHtcblx0a2V5RGVzY3JpcHRvckxpc3Q6IHtcblx0XHRrZXlTaGFwZUludmFsaWRhdGVkPzogYm9vbGVhbjtcblx0XHRrZXlPcmlnaW5UeXBlPzogbnVtYmVyO1xuXHRcdGtleU9yaWdpblJlc29sdXRpb24/OiBudW1iZXI7XG5cdFx0a2V5T3JpZ2luUlJlY3RSYWRpaT86IHtcblx0XHRcdHVuaXRWYWx1ZVF1YWRWZXJzaW9uOiBudW1iZXI7XG5cdFx0XHR0b3BSaWdodDogRGVzY3JpcHRvclVuaXRzVmFsdWU7XG5cdFx0XHR0b3BMZWZ0OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcblx0XHRcdGJvdHRvbUxlZnQ6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xuXHRcdFx0Ym90dG9tUmlnaHQ6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xuXHRcdH07XG5cdFx0a2V5T3JpZ2luU2hhcGVCQm94Pzoge1xuXHRcdFx0dW5pdFZhbHVlUXVhZFZlcnNpb246IG51bWJlcjtcblx0XHRcdCdUb3AgJzogRGVzY3JpcHRvclVuaXRzVmFsdWU7XG5cdFx0XHRMZWZ0OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcblx0XHRcdEJ0b206IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xuXHRcdFx0UmdodDogRGVzY3JpcHRvclVuaXRzVmFsdWU7XG5cdFx0fTtcblx0XHRrZXlPcmlnaW5Cb3hDb3JuZXJzPzoge1xuXHRcdFx0cmVjdGFuZ2xlQ29ybmVyQTogeyBIcnpuOiBudW1iZXI7IFZydGM6IG51bWJlcjsgfTtcblx0XHRcdHJlY3RhbmdsZUNvcm5lckI6IHsgSHJ6bjogbnVtYmVyOyBWcnRjOiBudW1iZXI7IH07XG5cdFx0XHRyZWN0YW5nbGVDb3JuZXJDOiB7IEhyem46IG51bWJlcjsgVnJ0YzogbnVtYmVyOyB9O1xuXHRcdFx0cmVjdGFuZ2xlQ29ybmVyRDogeyBIcnpuOiBudW1iZXI7IFZydGM6IG51bWJlcjsgfTtcblx0XHR9O1xuXHRcdFRybmY/OiB7IHh4OiBudW1iZXI7IHh5OiBudW1iZXI7IHl4OiBudW1iZXI7IHl5OiBudW1iZXI7IHR4OiBudW1iZXI7IHR5OiBudW1iZXI7IH0sXG5cdFx0a2V5T3JpZ2luSW5kZXg6IG51bWJlcjtcblx0fVtdO1xufVxuXG5hZGRIYW5kbGVyKFxuXHQndm9naycsXG5cdGhhc0tleSgndmVjdG9yT3JpZ2luYXRpb24nKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0aWYgKHJlYWRJbnQzMihyZWFkZXIpICE9PSAxKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdm9nayB2ZXJzaW9uYCk7XG5cdFx0Y29uc3QgZGVzYyA9IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpIGFzIFZvZ2tEZXNjcmlwdG9yO1xuXHRcdC8vIGNvbnNvbGUubG9nKHJlcXVpcmUoJ3V0aWwnKS5pbnNwZWN0KGRlc2MsIGZhbHNlLCA5OSwgdHJ1ZSkpO1xuXG5cdFx0dGFyZ2V0LnZlY3Rvck9yaWdpbmF0aW9uID0geyBrZXlEZXNjcmlwdG9yTGlzdDogW10gfTtcblxuXHRcdGZvciAoY29uc3QgaSBvZiBkZXNjLmtleURlc2NyaXB0b3JMaXN0KSB7XG5cdFx0XHRjb25zdCBpdGVtOiBLZXlEZXNjcmlwdG9ySXRlbSA9IHt9O1xuXG5cdFx0XHRpZiAoaS5rZXlTaGFwZUludmFsaWRhdGVkICE9IG51bGwpIGl0ZW0ua2V5U2hhcGVJbnZhbGlkYXRlZCA9IGkua2V5U2hhcGVJbnZhbGlkYXRlZDtcblx0XHRcdGlmIChpLmtleU9yaWdpblR5cGUgIT0gbnVsbCkgaXRlbS5rZXlPcmlnaW5UeXBlID0gaS5rZXlPcmlnaW5UeXBlO1xuXHRcdFx0aWYgKGkua2V5T3JpZ2luUmVzb2x1dGlvbiAhPSBudWxsKSBpdGVtLmtleU9yaWdpblJlc29sdXRpb24gPSBpLmtleU9yaWdpblJlc29sdXRpb247XG5cdFx0XHRpZiAoaS5rZXlPcmlnaW5TaGFwZUJCb3gpIHtcblx0XHRcdFx0aXRlbS5rZXlPcmlnaW5TaGFwZUJvdW5kaW5nQm94ID0ge1xuXHRcdFx0XHRcdHRvcDogcGFyc2VVbml0cyhpLmtleU9yaWdpblNoYXBlQkJveFsnVG9wICddKSxcblx0XHRcdFx0XHRsZWZ0OiBwYXJzZVVuaXRzKGkua2V5T3JpZ2luU2hhcGVCQm94LkxlZnQpLFxuXHRcdFx0XHRcdGJvdHRvbTogcGFyc2VVbml0cyhpLmtleU9yaWdpblNoYXBlQkJveC5CdG9tKSxcblx0XHRcdFx0XHRyaWdodDogcGFyc2VVbml0cyhpLmtleU9yaWdpblNoYXBlQkJveC5SZ2h0KSxcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHJlY3RSYWRpaSA9IGkua2V5T3JpZ2luUlJlY3RSYWRpaTtcblx0XHRcdGlmIChyZWN0UmFkaWkpIHtcblx0XHRcdFx0aXRlbS5rZXlPcmlnaW5SUmVjdFJhZGlpID0ge1xuXHRcdFx0XHRcdHRvcFJpZ2h0OiBwYXJzZVVuaXRzKHJlY3RSYWRpaS50b3BSaWdodCksXG5cdFx0XHRcdFx0dG9wTGVmdDogcGFyc2VVbml0cyhyZWN0UmFkaWkudG9wTGVmdCksXG5cdFx0XHRcdFx0Ym90dG9tTGVmdDogcGFyc2VVbml0cyhyZWN0UmFkaWkuYm90dG9tTGVmdCksXG5cdFx0XHRcdFx0Ym90dG9tUmlnaHQ6IHBhcnNlVW5pdHMocmVjdFJhZGlpLmJvdHRvbVJpZ2h0KSxcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvcm5lcnMgPSBpLmtleU9yaWdpbkJveENvcm5lcnM7XG5cdFx0XHRpZiAoY29ybmVycykge1xuXHRcdFx0XHRpdGVtLmtleU9yaWdpbkJveENvcm5lcnMgPSBbXG5cdFx0XHRcdFx0eyB4OiBjb3JuZXJzLnJlY3RhbmdsZUNvcm5lckEuSHJ6biwgeTogY29ybmVycy5yZWN0YW5nbGVDb3JuZXJBLlZydGMgfSxcblx0XHRcdFx0XHR7IHg6IGNvcm5lcnMucmVjdGFuZ2xlQ29ybmVyQi5IcnpuLCB5OiBjb3JuZXJzLnJlY3RhbmdsZUNvcm5lckIuVnJ0YyB9LFxuXHRcdFx0XHRcdHsgeDogY29ybmVycy5yZWN0YW5nbGVDb3JuZXJDLkhyem4sIHk6IGNvcm5lcnMucmVjdGFuZ2xlQ29ybmVyQy5WcnRjIH0sXG5cdFx0XHRcdFx0eyB4OiBjb3JuZXJzLnJlY3RhbmdsZUNvcm5lckQuSHJ6biwgeTogY29ybmVycy5yZWN0YW5nbGVDb3JuZXJELlZydGMgfSxcblx0XHRcdFx0XTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHRybmYgPSBpLlRybmY7XG5cdFx0XHRpZiAodHJuZikge1xuXHRcdFx0XHRpdGVtLnRyYW5zZm9ybSA9IFt0cm5mLnh4LCB0cm5mLnh5LCB0cm5mLnh5LCB0cm5mLnl5LCB0cm5mLnR4LCB0cm5mLnR5XTtcblx0XHRcdH1cblxuXHRcdFx0dGFyZ2V0LnZlY3Rvck9yaWdpbmF0aW9uLmtleURlc2NyaXB0b3JMaXN0LnB1c2goaXRlbSk7XG5cdFx0fVxuXG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0dGFyZ2V0O1xuXHRcdGNvbnN0IG9yaWcgPSB0YXJnZXQudmVjdG9yT3JpZ2luYXRpb24hO1xuXHRcdGNvbnN0IGRlc2M6IFZvZ2tEZXNjcmlwdG9yID0geyBrZXlEZXNjcmlwdG9yTGlzdDogW10gfTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgb3JpZy5rZXlEZXNjcmlwdG9yTGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgaXRlbSA9IG9yaWcua2V5RGVzY3JpcHRvckxpc3RbaV07XG5cblx0XHRcdGlmIChpdGVtLmtleVNoYXBlSW52YWxpZGF0ZWQpIHtcblx0XHRcdFx0ZGVzYy5rZXlEZXNjcmlwdG9yTGlzdC5wdXNoKHsga2V5U2hhcGVJbnZhbGlkYXRlZDogdHJ1ZSwga2V5T3JpZ2luSW5kZXg6IGkgfSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkZXNjLmtleURlc2NyaXB0b3JMaXN0LnB1c2goe1xuXHRcdFx0XHRcdGtleU9yaWdpblR5cGU6IGl0ZW0ua2V5T3JpZ2luVHlwZSA/PyA0LFxuXHRcdFx0XHRcdGtleU9yaWdpblJlc29sdXRpb246IGl0ZW0ua2V5T3JpZ2luUmVzb2x1dGlvbiA/PyA3Mixcblx0XHRcdFx0fSBhcyBhbnkpO1xuXG5cdFx0XHRcdGNvbnN0IG91dCA9IGRlc2Mua2V5RGVzY3JpcHRvckxpc3RbZGVzYy5rZXlEZXNjcmlwdG9yTGlzdC5sZW5ndGggLSAxXTtcblxuXHRcdFx0XHRjb25zdCByYWRpaSA9IGl0ZW0ua2V5T3JpZ2luUlJlY3RSYWRpaTtcblx0XHRcdFx0aWYgKHJhZGlpKSB7XG5cdFx0XHRcdFx0b3V0LmtleU9yaWdpblJSZWN0UmFkaWkgPSB7XG5cdFx0XHRcdFx0XHR1bml0VmFsdWVRdWFkVmVyc2lvbjogMSxcblx0XHRcdFx0XHRcdHRvcFJpZ2h0OiB1bml0c1ZhbHVlKHJhZGlpLnRvcFJpZ2h0LCAndG9wUmlnaHQnKSxcblx0XHRcdFx0XHRcdHRvcExlZnQ6IHVuaXRzVmFsdWUocmFkaWkudG9wTGVmdCwgJ3RvcExlZnQnKSxcblx0XHRcdFx0XHRcdGJvdHRvbUxlZnQ6IHVuaXRzVmFsdWUocmFkaWkuYm90dG9tTGVmdCwgJ2JvdHRvbUxlZnQnKSxcblx0XHRcdFx0XHRcdGJvdHRvbVJpZ2h0OiB1bml0c1ZhbHVlKHJhZGlpLmJvdHRvbVJpZ2h0LCAnYm90dG9tUmlnaHQnKSxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgYm94ID0gaXRlbS5rZXlPcmlnaW5TaGFwZUJvdW5kaW5nQm94O1xuXHRcdFx0XHRpZiAoYm94KSB7XG5cdFx0XHRcdFx0b3V0LmtleU9yaWdpblNoYXBlQkJveCA9IHtcblx0XHRcdFx0XHRcdHVuaXRWYWx1ZVF1YWRWZXJzaW9uOiAxLFxuXHRcdFx0XHRcdFx0J1RvcCAnOiB1bml0c1ZhbHVlKGJveC50b3AsICd0b3AnKSxcblx0XHRcdFx0XHRcdExlZnQ6IHVuaXRzVmFsdWUoYm94LmxlZnQsICdsZWZ0JyksXG5cdFx0XHRcdFx0XHRCdG9tOiB1bml0c1ZhbHVlKGJveC5ib3R0b20sICdib3R0b20nKSxcblx0XHRcdFx0XHRcdFJnaHQ6IHVuaXRzVmFsdWUoYm94LnJpZ2h0LCAncmlnaHQnKSxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgY29ybmVycyA9IGl0ZW0ua2V5T3JpZ2luQm94Q29ybmVycztcblx0XHRcdFx0aWYgKGNvcm5lcnMgJiYgY29ybmVycy5sZW5ndGggPT09IDQpIHtcblx0XHRcdFx0XHRvdXQua2V5T3JpZ2luQm94Q29ybmVycyA9IHtcblx0XHRcdFx0XHRcdHJlY3RhbmdsZUNvcm5lckE6IHsgSHJ6bjogY29ybmVyc1swXS54LCBWcnRjOiBjb3JuZXJzWzBdLnkgfSxcblx0XHRcdFx0XHRcdHJlY3RhbmdsZUNvcm5lckI6IHsgSHJ6bjogY29ybmVyc1sxXS54LCBWcnRjOiBjb3JuZXJzWzFdLnkgfSxcblx0XHRcdFx0XHRcdHJlY3RhbmdsZUNvcm5lckM6IHsgSHJ6bjogY29ybmVyc1syXS54LCBWcnRjOiBjb3JuZXJzWzJdLnkgfSxcblx0XHRcdFx0XHRcdHJlY3RhbmdsZUNvcm5lckQ6IHsgSHJ6bjogY29ybmVyc1szXS54LCBWcnRjOiBjb3JuZXJzWzNdLnkgfSxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgdHJhbnNmb3JtID0gaXRlbS50cmFuc2Zvcm07XG5cdFx0XHRcdGlmICh0cmFuc2Zvcm0gJiYgdHJhbnNmb3JtLmxlbmd0aCA9PT0gNikge1xuXHRcdFx0XHRcdG91dC5Ucm5mID0ge1xuXHRcdFx0XHRcdFx0eHg6IHRyYW5zZm9ybVswXSxcblx0XHRcdFx0XHRcdHh5OiB0cmFuc2Zvcm1bMV0sXG5cdFx0XHRcdFx0XHR5eDogdHJhbnNmb3JtWzJdLFxuXHRcdFx0XHRcdFx0eXk6IHRyYW5zZm9ybVszXSxcblx0XHRcdFx0XHRcdHR4OiB0cmFuc2Zvcm1bNF0sXG5cdFx0XHRcdFx0XHR0eTogdHJhbnNmb3JtWzVdLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRvdXQua2V5T3JpZ2luSW5kZXggPSBpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHdyaXRlSW50MzIod3JpdGVyLCAxKTsgLy8gdmVyc2lvblxuXHRcdHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgJ251bGwnLCBkZXNjKTtcblx0fVxuKTtcblxuYWRkSGFuZGxlcihcblx0J2xtZngnLFxuXHR0YXJnZXQgPT4gdGFyZ2V0LmVmZmVjdHMgIT09IHVuZGVmaW5lZCAmJiBoYXNNdWx0aUVmZmVjdHModGFyZ2V0LmVmZmVjdHMpLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQsIF8sIG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCB2ZXJzaW9uID0gcmVhZFVpbnQzMihyZWFkZXIpO1xuXHRcdGlmICh2ZXJzaW9uICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbG1meCB2ZXJzaW9uJyk7XG5cblx0XHRjb25zdCBkZXNjOiBMbWZ4RGVzY3JpcHRvciA9IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpO1xuXHRcdC8vIGNvbnNvbGUubG9nKHJlcXVpcmUoJ3V0aWwnKS5pbnNwZWN0KGluZm8sIGZhbHNlLCA5OSwgdHJ1ZSkpO1xuXG5cdFx0Ly8gZGlzY2FyZCBpZiByZWFkIGluICdsckZYJyBvciAnbGZ4Micgc2VjdGlvblxuXHRcdHRhcmdldC5lZmZlY3RzID0gcGFyc2VFZmZlY3RzKGRlc2MsICEhb3B0aW9ucy5sb2dNaXNzaW5nRmVhdHVyZXMpO1xuXG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0LCBfLCBvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3QgZGVzYyA9IHNlcmlhbGl6ZUVmZmVjdHModGFyZ2V0LmVmZmVjdHMhLCAhIW9wdGlvbnMubG9nTWlzc2luZ0ZlYXR1cmVzLCB0cnVlKTtcblxuXHRcdHdyaXRlVWludDMyKHdyaXRlciwgMCk7IC8vIHZlcnNpb25cblx0XHR3cml0ZVZlcnNpb25BbmREZXNjcmlwdG9yKHdyaXRlciwgJycsICdudWxsJywgZGVzYyk7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQnbHJGWCcsXG5cdGhhc0tleSgnZWZmZWN0cycpLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQpID0+IHtcblx0XHRpZiAoIXRhcmdldC5lZmZlY3RzKSB0YXJnZXQuZWZmZWN0cyA9IHJlYWRFZmZlY3RzKHJlYWRlcik7XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHR3cml0ZUVmZmVjdHMod3JpdGVyLCB0YXJnZXQuZWZmZWN0cyEpO1xuXHR9LFxuKTtcblxuYWRkSGFuZGxlcihcblx0J2x1bmknLFxuXHRoYXNLZXkoJ25hbWUnKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0dGFyZ2V0Lm5hbWUgPSByZWFkVW5pY29kZVN0cmluZyhyZWFkZXIpO1xuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdHdyaXRlVW5pY29kZVN0cmluZyh3cml0ZXIsIHRhcmdldC5uYW1lISk7XG5cdFx0Ly8gd3JpdGVVaW50MTYod3JpdGVyLCAwKTsgLy8gcGFkZGluZyAoYnV0IG5vdCBleHRlbmRpbmcgc3RyaW5nIGxlbmd0aClcblx0fSxcbik7XG5cbmFkZEhhbmRsZXIoXG5cdCdsbnNyJyxcblx0aGFzS2V5KCduYW1lU291cmNlJyksXG5cdChyZWFkZXIsIHRhcmdldCkgPT4gdGFyZ2V0Lm5hbWVTb3VyY2UgPSByZWFkU2lnbmF0dXJlKHJlYWRlciksXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4gd3JpdGVTaWduYXR1cmUod3JpdGVyLCB0YXJnZXQubmFtZVNvdXJjZSEpLFxuKTtcblxuYWRkSGFuZGxlcihcblx0J2x5aWQnLFxuXHRoYXNLZXkoJ2lkJyksXG5cdChyZWFkZXIsIHRhcmdldCkgPT4gdGFyZ2V0LmlkID0gcmVhZFVpbnQzMihyZWFkZXIpLFxuXHQod3JpdGVyLCB0YXJnZXQsIF9wc2QsIG9wdGlvbnMpID0+IHtcblx0XHRsZXQgaWQgPSB0YXJnZXQuaWQhO1xuXHRcdHdoaWxlIChvcHRpb25zLmxheWVySWRzLmluZGV4T2YoaWQpICE9PSAtMSkgaWQgKz0gMTAwOyAvLyBtYWtlIHN1cmUgd2UgZG9uJ3QgaGF2ZSBkdXBsaWNhdGUgbGF5ZXIgaWRzXG5cdFx0d3JpdGVVaW50MzIod3JpdGVyLCBpZCk7XG5cdFx0b3B0aW9ucy5sYXllcklkcy5wdXNoKGlkKTtcblx0fSxcbik7XG5cbmFkZEhhbmRsZXIoXG5cdCdsc2N0Jyxcblx0aGFzS2V5KCdzZWN0aW9uRGl2aWRlcicpLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQpID0+IHtcblx0XHR0YXJnZXQuc2VjdGlvbkRpdmlkZXIgPSB7IHR5cGU6IHJlYWRVaW50MzIocmVhZGVyKSB9O1xuXG5cdFx0aWYgKGxlZnQoKSkge1xuXHRcdFx0Y2hlY2tTaWduYXR1cmUocmVhZGVyLCAnOEJJTScpO1xuXHRcdFx0dGFyZ2V0LnNlY3Rpb25EaXZpZGVyLmtleSA9IHJlYWRTaWduYXR1cmUocmVhZGVyKTtcblx0XHR9XG5cblx0XHRpZiAobGVmdCgpKSB7XG5cdFx0XHQvLyAwID0gbm9ybWFsXG5cdFx0XHQvLyAxID0gc2NlbmUgZ3JvdXAsIGFmZmVjdHMgdGhlIGFuaW1hdGlvbiB0aW1lbGluZS5cblx0XHRcdHRhcmdldC5zZWN0aW9uRGl2aWRlci5zdWJUeXBlID0gcmVhZFVpbnQzMihyZWFkZXIpO1xuXHRcdH1cblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0d3JpdGVVaW50MzIod3JpdGVyLCB0YXJnZXQuc2VjdGlvbkRpdmlkZXIhLnR5cGUpO1xuXG5cdFx0aWYgKHRhcmdldC5zZWN0aW9uRGl2aWRlciEua2V5KSB7XG5cdFx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsICc4QklNJyk7XG5cdFx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsIHRhcmdldC5zZWN0aW9uRGl2aWRlciEua2V5KTtcblxuXHRcdFx0aWYgKHRhcmdldC5zZWN0aW9uRGl2aWRlciEuc3ViVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHdyaXRlVWludDMyKHdyaXRlciwgdGFyZ2V0LnNlY3Rpb25EaXZpZGVyIS5zdWJUeXBlKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG4pO1xuXG4vLyBpdCBzZWVtcyBsc2RrIGlzIHVzZWQgd2hlbiB0aGVyZSdzIGEgbGF5ZXIgaXMgbmVzdGVkIG1vcmUgdGhhbiA2IGxldmVscywgYnV0IEkgZG9uJ3Qga25vdyB3aHk/XG4vLyBtYXliZSBzb21lIGxpbWl0YXRpb24gb2Ygb2xkIHZlcnNpb24gb2YgUFM/XG5hZGRIYW5kbGVyQWxpYXMoJ2xzZGsnLCAnbHNjdCcpO1xuXG5hZGRIYW5kbGVyKFxuXHQnY2xibCcsXG5cdGhhc0tleSgnYmxlbmRDbGlwcGVuZEVsZW1lbnRzJyksXG5cdChyZWFkZXIsIHRhcmdldCkgPT4ge1xuXHRcdHRhcmdldC5ibGVuZENsaXBwZW5kRWxlbWVudHMgPSAhIXJlYWRVaW50OChyZWFkZXIpO1xuXHRcdHNraXBCeXRlcyhyZWFkZXIsIDMpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgdGFyZ2V0LmJsZW5kQ2xpcHBlbmRFbGVtZW50cyA/IDEgOiAwKTtcblx0XHR3cml0ZVplcm9zKHdyaXRlciwgMyk7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQnaW5meCcsXG5cdGhhc0tleSgnYmxlbmRJbnRlcmlvckVsZW1lbnRzJyksXG5cdChyZWFkZXIsIHRhcmdldCkgPT4ge1xuXHRcdHRhcmdldC5ibGVuZEludGVyaW9yRWxlbWVudHMgPSAhIXJlYWRVaW50OChyZWFkZXIpO1xuXHRcdHNraXBCeXRlcyhyZWFkZXIsIDMpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgdGFyZ2V0LmJsZW5kSW50ZXJpb3JFbGVtZW50cyA/IDEgOiAwKTtcblx0XHR3cml0ZVplcm9zKHdyaXRlciwgMyk7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQna25rbycsXG5cdGhhc0tleSgna25vY2tvdXQnKSxcblx0KHJlYWRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0dGFyZ2V0Lmtub2Nrb3V0ID0gISFyZWFkVWludDgocmVhZGVyKTtcblx0XHRza2lwQnl0ZXMocmVhZGVyLCAzKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0d3JpdGVVaW50OCh3cml0ZXIsIHRhcmdldC5rbm9ja291dCA/IDEgOiAwKTtcblx0XHR3cml0ZVplcm9zKHdyaXRlciwgMyk7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQnbHNwZicsXG5cdGhhc0tleSgncHJvdGVjdGVkJyksXG5cdChyZWFkZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGZsYWdzID0gcmVhZFVpbnQzMihyZWFkZXIpO1xuXHRcdHRhcmdldC5wcm90ZWN0ZWQgPSB7XG5cdFx0XHR0cmFuc3BhcmVuY3k6IChmbGFncyAmIDB4MDEpICE9PSAwLFxuXHRcdFx0Y29tcG9zaXRlOiAoZmxhZ3MgJiAweDAyKSAhPT0gMCxcblx0XHRcdHBvc2l0aW9uOiAoZmxhZ3MgJiAweDA0KSAhPT0gMCxcblx0XHR9O1xuXG5cdFx0aWYgKGZsYWdzICYgMHgwOCkgdGFyZ2V0LnByb3RlY3RlZC5hcnRib2FyZHMgPSB0cnVlO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBmbGFncyA9XG5cdFx0XHQodGFyZ2V0LnByb3RlY3RlZCEudHJhbnNwYXJlbmN5ID8gMHgwMSA6IDApIHxcblx0XHRcdCh0YXJnZXQucHJvdGVjdGVkIS5jb21wb3NpdGUgPyAweDAyIDogMCkgfFxuXHRcdFx0KHRhcmdldC5wcm90ZWN0ZWQhLnBvc2l0aW9uID8gMHgwNCA6IDApIHxcblx0XHRcdCh0YXJnZXQucHJvdGVjdGVkIS5hcnRib2FyZHMgPyAweDA4IDogMCk7XG5cblx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIGZsYWdzKTtcblx0fSxcbik7XG5cbmFkZEhhbmRsZXIoXG5cdCdsY2xyJyxcblx0aGFzS2V5KCdsYXllckNvbG9yJyksXG5cdChyZWFkZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGNvbG9yID0gcmVhZFVpbnQxNihyZWFkZXIpO1xuXHRcdHNraXBCeXRlcyhyZWFkZXIsIDYpO1xuXHRcdHRhcmdldC5sYXllckNvbG9yID0gbGF5ZXJDb2xvcnNbY29sb3JdO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBpbmRleCA9IGxheWVyQ29sb3JzLmluZGV4T2YodGFyZ2V0LmxheWVyQ29sb3IhKTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIGluZGV4ID09PSAtMSA/IDAgOiBpbmRleCk7XG5cdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDYpO1xuXHR9LFxuKTtcblxuaW50ZXJmYWNlIEN1c3RvbURlc2NyaXB0b3Ige1xuXHRsYXllclRpbWU/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBGcmFtZUxpc3REZXNjcmlwdG9yIHtcblx0TGFJRDogbnVtYmVyO1xuXHRMYVN0OiB7XG5cdFx0ZW5hYj86IGJvb2xlYW47XG5cdFx0SU1zaz86IHsgT2ZzdDogeyBIcnpuOiBudW1iZXI7IFZydGM6IG51bWJlcjsgfSB9O1xuXHRcdFZNc2s/OiB7IE9mc3Q6IHsgSHJ6bjogbnVtYmVyOyBWcnRjOiBudW1iZXI7IH0gfTtcblx0XHRGWFJmPzogeyBIcnpuOiBudW1iZXI7IFZydGM6IG51bWJlcjsgfTtcblx0XHRGckxzOiBudW1iZXJbXTtcblx0fVtdO1xufVxuXG5hZGRIYW5kbGVyKFxuXHQnc2htZCcsXG5cdGhhc0tleSgndGltZXN0YW1wJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCwgXywgb3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IGNvdW50ID0gcmVhZFVpbnQzMihyZWFkZXIpO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG5cdFx0XHRjaGVja1NpZ25hdHVyZShyZWFkZXIsICc4QklNJyk7XG5cdFx0XHRjb25zdCBrZXkgPSByZWFkU2lnbmF0dXJlKHJlYWRlcik7XG5cdFx0XHRyZWFkVWludDgocmVhZGVyKTsgLy8gY29weVxuXHRcdFx0c2tpcEJ5dGVzKHJlYWRlciwgMyk7XG5cblx0XHRcdHJlYWRTZWN0aW9uKHJlYWRlciwgMSwgbGVmdCA9PiB7XG5cdFx0XHRcdGlmIChrZXkgPT09ICdjdXN0Jykge1xuXHRcdFx0XHRcdGNvbnN0IGRlc2MgPSByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyKSBhcyBDdXN0b21EZXNjcmlwdG9yO1xuXHRcdFx0XHRcdGlmIChkZXNjLmxheWVyVGltZSAhPT0gdW5kZWZpbmVkKSB0YXJnZXQudGltZXN0YW1wID0gZGVzYy5sYXllclRpbWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAoa2V5ID09PSAnbWxzdCcpIHtcblx0XHRcdFx0XHRjb25zdCBkZXNjID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcikgYXMgRnJhbWVMaXN0RGVzY3JpcHRvcjtcblx0XHRcdFx0XHRvcHRpb25zLmxvZ0RldkZlYXR1cmVzICYmIGNvbnNvbGUubG9nKCdtbHN0JywgZGVzYyk7XG5cdFx0XHRcdFx0Ly8gb3B0aW9ucy5sb2dEZXZGZWF0dXJlcyAmJiBjb25zb2xlLmxvZygnbWxzdCcsIHJlcXVpcmUoJ3V0aWwnKS5pbnNwZWN0KGRlc2MsIGZhbHNlLCA5OSwgdHJ1ZSkpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGtleSA9PT0gJ21keW4nKSB7XG5cdFx0XHRcdFx0Ly8gZnJhbWUgZmxhZ3Ncblx0XHRcdFx0XHRjb25zdCB1bmtub3duID0gcmVhZFVpbnQxNihyZWFkZXIpO1xuXHRcdFx0XHRcdGNvbnN0IHByb3BhZ2F0ZSA9IHJlYWRVaW50OChyZWFkZXIpO1xuXHRcdFx0XHRcdGNvbnN0IGZsYWdzID0gcmVhZFVpbnQ4KHJlYWRlcik7XG5cdFx0XHRcdFx0Y29uc3QgdW5pZnlMYXllclBvc2l0aW9uID0gKGZsYWdzICYgMSkgIT09IDA7XG5cdFx0XHRcdFx0Y29uc3QgdW5pZnlMYXllclN0eWxlID0gKGZsYWdzICYgMikgIT09IDA7XG5cdFx0XHRcdFx0Y29uc3QgdW5pZnlMYXllclZpc2liaWxpdHkgPSAoZmxhZ3MgJiA0KSAhPT0gMDtcblx0XHRcdFx0XHRvcHRpb25zLmxvZ0RldkZlYXR1cmVzICYmIGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdFx0J21keW4nLCAndW5rbm93bjonLCB1bmtub3duLCAncHJvcGFnYXRlOicsIHByb3BhZ2F0ZSxcblx0XHRcdFx0XHRcdCdmbGFnczonLCBmbGFncywgeyB1bmlmeUxheWVyUG9zaXRpb24sIHVuaWZ5TGF5ZXJTdHlsZSwgdW5pZnlMYXllclZpc2liaWxpdHkgfSk7XG5cblx0XHRcdFx0XHQvLyBjb25zdCBkZXNjID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcikgYXMgRnJhbWVMaXN0RGVzY3JpcHRvcjtcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZygnbWR5bicsIHJlcXVpcmUoJ3V0aWwnKS5pbnNwZWN0KGRlc2MsIGZhbHNlLCA5OSwgdHJ1ZSkpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdG9wdGlvbnMubG9nRGV2RmVhdHVyZXMgJiYgY29uc29sZS5sb2coJ1VuaGFuZGxlZCBtZXRhZGF0YScsIGtleSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgZGVzYzogQ3VzdG9tRGVzY3JpcHRvciA9IHtcblx0XHRcdGxheWVyVGltZTogdGFyZ2V0LnRpbWVzdGFtcCEsXG5cdFx0fTtcblxuXHRcdHdyaXRlVWludDMyKHdyaXRlciwgMSk7IC8vIGNvdW50XG5cblx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsICc4QklNJyk7XG5cdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCAnY3VzdCcpO1xuXHRcdHdyaXRlVWludDgod3JpdGVyLCAwKTsgLy8gY29weSAoYWx3YXlzIGZhbHNlKVxuXHRcdHdyaXRlWmVyb3Mod3JpdGVyLCAzKTtcblx0XHR3cml0ZVNlY3Rpb24od3JpdGVyLCAyLCAoKSA9PiB3cml0ZVZlcnNpb25BbmREZXNjcmlwdG9yKHdyaXRlciwgJycsICdtZXRhZGF0YScsIGRlc2MpLCB0cnVlKTtcblx0fSxcbik7XG5cbmFkZEhhbmRsZXIoXG5cdCd2c3RrJyxcblx0aGFzS2V5KCd2ZWN0b3JTdHJva2UnKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0Y29uc3QgZGVzYyA9IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpIGFzIFN0cm9rZURlc2NyaXB0b3I7XG5cdFx0Ly8gY29uc29sZS5sb2cocmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZGVzYywgZmFsc2UsIDk5LCB0cnVlKSk7XG5cblx0XHR0YXJnZXQudmVjdG9yU3Ryb2tlID0ge1xuXHRcdFx0c3Ryb2tlRW5hYmxlZDogZGVzYy5zdHJva2VFbmFibGVkLFxuXHRcdFx0ZmlsbEVuYWJsZWQ6IGRlc2MuZmlsbEVuYWJsZWQsXG5cdFx0XHRsaW5lV2lkdGg6IHBhcnNlVW5pdHMoZGVzYy5zdHJva2VTdHlsZUxpbmVXaWR0aCksXG5cdFx0XHRsaW5lRGFzaE9mZnNldDogcGFyc2VVbml0cyhkZXNjLnN0cm9rZVN0eWxlTGluZURhc2hPZmZzZXQpLFxuXHRcdFx0bWl0ZXJMaW1pdDogZGVzYy5zdHJva2VTdHlsZU1pdGVyTGltaXQsXG5cdFx0XHRsaW5lQ2FwVHlwZTogc3Ryb2tlU3R5bGVMaW5lQ2FwVHlwZS5kZWNvZGUoZGVzYy5zdHJva2VTdHlsZUxpbmVDYXBUeXBlKSxcblx0XHRcdGxpbmVKb2luVHlwZTogc3Ryb2tlU3R5bGVMaW5lSm9pblR5cGUuZGVjb2RlKGRlc2Muc3Ryb2tlU3R5bGVMaW5lSm9pblR5cGUpLFxuXHRcdFx0bGluZUFsaWdubWVudDogc3Ryb2tlU3R5bGVMaW5lQWxpZ25tZW50LmRlY29kZShkZXNjLnN0cm9rZVN0eWxlTGluZUFsaWdubWVudCksXG5cdFx0XHRzY2FsZUxvY2s6IGRlc2Muc3Ryb2tlU3R5bGVTY2FsZUxvY2ssXG5cdFx0XHRzdHJva2VBZGp1c3Q6IGRlc2Muc3Ryb2tlU3R5bGVTdHJva2VBZGp1c3QsXG5cdFx0XHRsaW5lRGFzaFNldDogZGVzYy5zdHJva2VTdHlsZUxpbmVEYXNoU2V0Lm1hcChwYXJzZVVuaXRzKSxcblx0XHRcdGJsZW5kTW9kZTogQmxuTS5kZWNvZGUoZGVzYy5zdHJva2VTdHlsZUJsZW5kTW9kZSksXG5cdFx0XHRvcGFjaXR5OiBwYXJzZVBlcmNlbnQoZGVzYy5zdHJva2VTdHlsZU9wYWNpdHkpLFxuXHRcdFx0Y29udGVudDogcGFyc2VWZWN0b3JDb250ZW50KGRlc2Muc3Ryb2tlU3R5bGVDb250ZW50KSxcblx0XHRcdHJlc29sdXRpb246IGRlc2Muc3Ryb2tlU3R5bGVSZXNvbHV0aW9uLFxuXHRcdH07XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBzdHJva2UgPSB0YXJnZXQudmVjdG9yU3Ryb2tlITtcblx0XHRjb25zdCBkZXNjcmlwdG9yOiBTdHJva2VEZXNjcmlwdG9yID0ge1xuXHRcdFx0c3Ryb2tlU3R5bGVWZXJzaW9uOiAyLFxuXHRcdFx0c3Ryb2tlRW5hYmxlZDogISFzdHJva2Uuc3Ryb2tlRW5hYmxlZCxcblx0XHRcdGZpbGxFbmFibGVkOiAhIXN0cm9rZS5maWxsRW5hYmxlZCxcblx0XHRcdHN0cm9rZVN0eWxlTGluZVdpZHRoOiBzdHJva2UubGluZVdpZHRoIHx8IHsgdmFsdWU6IDMsIHVuaXRzOiAnUG9pbnRzJyB9LFxuXHRcdFx0c3Ryb2tlU3R5bGVMaW5lRGFzaE9mZnNldDogc3Ryb2tlLmxpbmVEYXNoT2Zmc2V0IHx8IHsgdmFsdWU6IDAsIHVuaXRzOiAnUG9pbnRzJyB9LFxuXHRcdFx0c3Ryb2tlU3R5bGVNaXRlckxpbWl0OiBzdHJva2UubWl0ZXJMaW1pdCA/PyAxMDAsXG5cdFx0XHRzdHJva2VTdHlsZUxpbmVDYXBUeXBlOiBzdHJva2VTdHlsZUxpbmVDYXBUeXBlLmVuY29kZShzdHJva2UubGluZUNhcFR5cGUpLFxuXHRcdFx0c3Ryb2tlU3R5bGVMaW5lSm9pblR5cGU6IHN0cm9rZVN0eWxlTGluZUpvaW5UeXBlLmVuY29kZShzdHJva2UubGluZUpvaW5UeXBlKSxcblx0XHRcdHN0cm9rZVN0eWxlTGluZUFsaWdubWVudDogc3Ryb2tlU3R5bGVMaW5lQWxpZ25tZW50LmVuY29kZShzdHJva2UubGluZUFsaWdubWVudCksXG5cdFx0XHRzdHJva2VTdHlsZVNjYWxlTG9jazogISFzdHJva2Uuc2NhbGVMb2NrLFxuXHRcdFx0c3Ryb2tlU3R5bGVTdHJva2VBZGp1c3Q6ICEhc3Ryb2tlLnN0cm9rZUFkanVzdCxcblx0XHRcdHN0cm9rZVN0eWxlTGluZURhc2hTZXQ6IHN0cm9rZS5saW5lRGFzaFNldCB8fCBbXSxcblx0XHRcdHN0cm9rZVN0eWxlQmxlbmRNb2RlOiBCbG5NLmVuY29kZShzdHJva2UuYmxlbmRNb2RlKSxcblx0XHRcdHN0cm9rZVN0eWxlT3BhY2l0eTogdW5pdHNQZXJjZW50KHN0cm9rZS5vcGFjaXR5ID8/IDEpLFxuXHRcdFx0c3Ryb2tlU3R5bGVDb250ZW50OiBzZXJpYWxpemVWZWN0b3JDb250ZW50KFxuXHRcdFx0XHRzdHJva2UuY29udGVudCB8fCB7IHR5cGU6ICdjb2xvcicsIGNvbG9yOiB7IHI6IDAsIGc6IDAsIGI6IDAgfSB9KS5kZXNjcmlwdG9yLFxuXHRcdFx0c3Ryb2tlU3R5bGVSZXNvbHV0aW9uOiBzdHJva2UucmVzb2x1dGlvbiA/PyA3Mixcblx0XHR9O1xuXG5cdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAnc3Ryb2tlU3R5bGUnLCBkZXNjcmlwdG9yKTtcblx0fSxcbik7XG5cbmludGVyZmFjZSBBcnRiRGVzY3JpcHRvciB7XG5cdGFydGJvYXJkUmVjdDogeyAnVG9wICc6IG51bWJlcjsgTGVmdDogbnVtYmVyOyBCdG9tOiBudW1iZXI7IFJnaHQ6IG51bWJlcjsgfTtcblx0Z3VpZGVJbmRlY2VzOiBhbnlbXTtcblx0YXJ0Ym9hcmRQcmVzZXROYW1lOiBzdHJpbmc7XG5cdCdDbHIgJzogRGVzY3JpcHRvckNvbG9yO1xuXHRhcnRib2FyZEJhY2tncm91bmRUeXBlOiBudW1iZXI7XG59XG5cbmFkZEhhbmRsZXIoXG5cdCdhcnRiJywgLy8gcGVyLWxheWVyIGFyYm9hcmQgaW5mb1xuXHRoYXNLZXkoJ2FydGJvYXJkJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdGNvbnN0IGRlc2MgPSByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyKSBhcyBBcnRiRGVzY3JpcHRvcjtcblx0XHRjb25zdCByZWN0ID0gZGVzYy5hcnRib2FyZFJlY3Q7XG5cdFx0dGFyZ2V0LmFydGJvYXJkID0ge1xuXHRcdFx0cmVjdDogeyB0b3A6IHJlY3RbJ1RvcCAnXSwgbGVmdDogcmVjdC5MZWZ0LCBib3R0b206IHJlY3QuQnRvbSwgcmlnaHQ6IHJlY3QuUmdodCB9LFxuXHRcdFx0Z3VpZGVJbmRpY2VzOiBkZXNjLmd1aWRlSW5kZWNlcyxcblx0XHRcdHByZXNldE5hbWU6IGRlc2MuYXJ0Ym9hcmRQcmVzZXROYW1lLFxuXHRcdFx0Y29sb3I6IHBhcnNlQ29sb3IoZGVzY1snQ2xyICddKSxcblx0XHRcdGJhY2tncm91bmRUeXBlOiBkZXNjLmFydGJvYXJkQmFja2dyb3VuZFR5cGUsXG5cdFx0fTtcblxuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGFydGJvYXJkID0gdGFyZ2V0LmFydGJvYXJkITtcblx0XHRjb25zdCByZWN0ID0gYXJ0Ym9hcmQucmVjdDtcblx0XHRjb25zdCBkZXNjOiBBcnRiRGVzY3JpcHRvciA9IHtcblx0XHRcdGFydGJvYXJkUmVjdDogeyAnVG9wICc6IHJlY3QudG9wLCBMZWZ0OiByZWN0LmxlZnQsIEJ0b206IHJlY3QuYm90dG9tLCBSZ2h0OiByZWN0LnJpZ2h0IH0sXG5cdFx0XHRndWlkZUluZGVjZXM6IGFydGJvYXJkLmd1aWRlSW5kaWNlcyB8fCBbXSxcblx0XHRcdGFydGJvYXJkUHJlc2V0TmFtZTogYXJ0Ym9hcmQucHJlc2V0TmFtZSB8fCAnJyxcblx0XHRcdCdDbHIgJzogc2VyaWFsaXplQ29sb3IoYXJ0Ym9hcmQuY29sb3IpLFxuXHRcdFx0YXJ0Ym9hcmRCYWNrZ3JvdW5kVHlwZTogYXJ0Ym9hcmQuYmFja2dyb3VuZFR5cGUgPz8gMSxcblx0XHR9O1xuXG5cdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAnYXJ0Ym9hcmQnLCBkZXNjKTtcblx0fSxcbik7XG5cbmFkZEhhbmRsZXIoXG5cdCdzbjJQJyxcblx0aGFzS2V5KCd1c2luZ0FsaWduZWRSZW5kZXJpbmcnKSxcblx0KHJlYWRlciwgdGFyZ2V0KSA9PiB0YXJnZXQudXNpbmdBbGlnbmVkUmVuZGVyaW5nID0gISFyZWFkVWludDMyKHJlYWRlciksXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4gd3JpdGVVaW50MzIod3JpdGVyLCB0YXJnZXQudXNpbmdBbGlnbmVkUmVuZGVyaW5nID8gMSA6IDApLFxuKTtcblxuY29uc3QgcGxhY2VkTGF5ZXJUeXBlczogUGxhY2VkTGF5ZXJUeXBlW10gPSBbJ3Vua25vd24nLCAndmVjdG9yJywgJ3Jhc3RlcicsICdpbWFnZSBzdGFjayddO1xuXG5mdW5jdGlvbiBwYXJzZVdhcnAod2FycDogV2FycERlc2NyaXB0b3IgJiBRdWlsdFdhcnBEZXNjcmlwdG9yKTogV2FycCB7XG5cdGNvbnN0IHJlc3VsdDogV2FycCA9IHtcblx0XHRzdHlsZTogd2FycFN0eWxlLmRlY29kZSh3YXJwLndhcnBTdHlsZSksXG5cdFx0dmFsdWU6IHdhcnAud2FycFZhbHVlIHx8IDAsXG5cdFx0cGVyc3BlY3RpdmU6IHdhcnAud2FycFBlcnNwZWN0aXZlIHx8IDAsXG5cdFx0cGVyc3BlY3RpdmVPdGhlcjogd2FycC53YXJwUGVyc3BlY3RpdmVPdGhlciB8fCAwLFxuXHRcdHJvdGF0ZTogT3JudC5kZWNvZGUod2FycC53YXJwUm90YXRlKSxcblx0XHRib3VuZHM6IHdhcnAuYm91bmRzICYmIHtcblx0XHRcdHRvcDogcGFyc2VVbml0c09yTnVtYmVyKHdhcnAuYm91bmRzWydUb3AgJ10pLFxuXHRcdFx0bGVmdDogcGFyc2VVbml0c09yTnVtYmVyKHdhcnAuYm91bmRzLkxlZnQpLFxuXHRcdFx0Ym90dG9tOiBwYXJzZVVuaXRzT3JOdW1iZXIod2FycC5ib3VuZHMuQnRvbSksXG5cdFx0XHRyaWdodDogcGFyc2VVbml0c09yTnVtYmVyKHdhcnAuYm91bmRzLlJnaHQpLFxuXHRcdH0sXG5cdFx0dU9yZGVyOiB3YXJwLnVPcmRlcixcblx0XHR2T3JkZXI6IHdhcnAudk9yZGVyLFxuXHR9O1xuXG5cdGlmICh3YXJwLmRlZm9ybU51bVJvd3MgIT0gbnVsbCB8fCB3YXJwLmRlZm9ybU51bUNvbHMgIT0gbnVsbCkge1xuXHRcdHJlc3VsdC5kZWZvcm1OdW1Sb3dzID0gd2FycC5kZWZvcm1OdW1Sb3dzO1xuXHRcdHJlc3VsdC5kZWZvcm1OdW1Db2xzID0gd2FycC5kZWZvcm1OdW1Db2xzO1xuXHR9XG5cblx0Y29uc3QgZW52ZWxvcGVXYXJwID0gd2FycC5jdXN0b21FbnZlbG9wZVdhcnA7XG5cdGlmIChlbnZlbG9wZVdhcnApIHtcblx0XHRyZXN1bHQuY3VzdG9tRW52ZWxvcGVXYXJwID0ge1xuXHRcdFx0bWVzaFBvaW50czogW10sXG5cdFx0fTtcblxuXHRcdGNvbnN0IHhzID0gZW52ZWxvcGVXYXJwLm1lc2hQb2ludHMuZmluZChpID0+IGkudHlwZSA9PT0gJ0hyem4nKT8udmFsdWVzIHx8IFtdO1xuXHRcdGNvbnN0IHlzID0gZW52ZWxvcGVXYXJwLm1lc2hQb2ludHMuZmluZChpID0+IGkudHlwZSA9PT0gJ1ZydGMnKT8udmFsdWVzIHx8IFtdO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0cmVzdWx0LmN1c3RvbUVudmVsb3BlV2FycCEubWVzaFBvaW50cy5wdXNoKHsgeDogeHNbaV0sIHk6IHlzW2ldIH0pO1xuXHRcdH1cblxuXHRcdGlmIChlbnZlbG9wZVdhcnAucXVpbHRTbGljZVggfHwgZW52ZWxvcGVXYXJwLnF1aWx0U2xpY2VZKSB7XG5cdFx0XHRyZXN1bHQuY3VzdG9tRW52ZWxvcGVXYXJwLnF1aWx0U2xpY2VYID0gZW52ZWxvcGVXYXJwLnF1aWx0U2xpY2VYPy5bMF0/LnZhbHVlcyB8fCBbXTtcblx0XHRcdHJlc3VsdC5jdXN0b21FbnZlbG9wZVdhcnAucXVpbHRTbGljZVkgPSBlbnZlbG9wZVdhcnAucXVpbHRTbGljZVk/LlswXT8udmFsdWVzIHx8IFtdO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGlzUXVpbHRXYXJwKHdhcnA6IFdhcnApIHtcblx0cmV0dXJuIHdhcnAuZGVmb3JtTnVtQ29scyAhPSBudWxsIHx8IHdhcnAuZGVmb3JtTnVtUm93cyAhPSBudWxsIHx8XG5cdFx0d2FycC5jdXN0b21FbnZlbG9wZVdhcnA/LnF1aWx0U2xpY2VYIHx8IHdhcnAuY3VzdG9tRW52ZWxvcGVXYXJwPy5xdWlsdFNsaWNlWTtcbn1cblxuZnVuY3Rpb24gZW5jb2RlV2FycCh3YXJwOiBXYXJwKTogV2FycERlc2NyaXB0b3Ige1xuXHRjb25zdCBib3VuZHMgPSB3YXJwLmJvdW5kcztcblx0Y29uc3QgZGVzYzogV2FycERlc2NyaXB0b3IgPSB7XG5cdFx0d2FycFN0eWxlOiB3YXJwU3R5bGUuZW5jb2RlKHdhcnAuc3R5bGUpLFxuXHRcdHdhcnBWYWx1ZTogd2FycC52YWx1ZSB8fCAwLFxuXHRcdHdhcnBQZXJzcGVjdGl2ZTogd2FycC5wZXJzcGVjdGl2ZSB8fCAwLFxuXHRcdHdhcnBQZXJzcGVjdGl2ZU90aGVyOiB3YXJwLnBlcnNwZWN0aXZlT3RoZXIgfHwgMCxcblx0XHR3YXJwUm90YXRlOiBPcm50LmVuY29kZSh3YXJwLnJvdGF0ZSksXG5cdFx0Ym91bmRzOiB7XG5cdFx0XHQnVG9wICc6IHVuaXRzVmFsdWUoYm91bmRzICYmIGJvdW5kcy50b3AgfHwgeyB1bml0czogJ1BpeGVscycsIHZhbHVlOiAwIH0sICdib3VuZHMudG9wJyksXG5cdFx0XHRMZWZ0OiB1bml0c1ZhbHVlKGJvdW5kcyAmJiBib3VuZHMubGVmdCB8fCB7IHVuaXRzOiAnUGl4ZWxzJywgdmFsdWU6IDAgfSwgJ2JvdW5kcy5sZWZ0JyksXG5cdFx0XHRCdG9tOiB1bml0c1ZhbHVlKGJvdW5kcyAmJiBib3VuZHMuYm90dG9tIHx8IHsgdW5pdHM6ICdQaXhlbHMnLCB2YWx1ZTogMCB9LCAnYm91bmRzLmJvdHRvbScpLFxuXHRcdFx0UmdodDogdW5pdHNWYWx1ZShib3VuZHMgJiYgYm91bmRzLnJpZ2h0IHx8IHsgdW5pdHM6ICdQaXhlbHMnLCB2YWx1ZTogMCB9LCAnYm91bmRzLnJpZ2h0JyksXG5cdFx0fSxcblx0XHR1T3JkZXI6IHdhcnAudU9yZGVyIHx8IDAsXG5cdFx0dk9yZGVyOiB3YXJwLnZPcmRlciB8fCAwLFxuXHR9O1xuXG5cdGNvbnN0IGlzUXVpbHQgPSBpc1F1aWx0V2FycCh3YXJwKTtcblxuXHRpZiAoaXNRdWlsdCkge1xuXHRcdGNvbnN0IGRlc2MyID0gZGVzYyBhcyBRdWlsdFdhcnBEZXNjcmlwdG9yO1xuXHRcdGRlc2MyLmRlZm9ybU51bVJvd3MgPSB3YXJwLmRlZm9ybU51bVJvd3MgfHwgMDtcblx0XHRkZXNjMi5kZWZvcm1OdW1Db2xzID0gd2FycC5kZWZvcm1OdW1Db2xzIHx8IDA7XG5cdH1cblxuXHRjb25zdCBjdXN0b21FbnZlbG9wZVdhcnAgPSB3YXJwLmN1c3RvbUVudmVsb3BlV2FycDtcblx0aWYgKGN1c3RvbUVudmVsb3BlV2FycCkge1xuXHRcdGNvbnN0IG1lc2hQb2ludHMgPSBjdXN0b21FbnZlbG9wZVdhcnAubWVzaFBvaW50cyB8fCBbXTtcblxuXHRcdGlmIChpc1F1aWx0KSB7XG5cdFx0XHRjb25zdCBkZXNjMiA9IGRlc2MgYXMgUXVpbHRXYXJwRGVzY3JpcHRvcjtcblx0XHRcdGRlc2MyLmN1c3RvbUVudmVsb3BlV2FycCA9IHtcblx0XHRcdFx0cXVpbHRTbGljZVg6IFt7XG5cdFx0XHRcdFx0dHlwZTogJ3F1aWx0U2xpY2VYJyxcblx0XHRcdFx0XHR2YWx1ZXM6IGN1c3RvbUVudmVsb3BlV2FycC5xdWlsdFNsaWNlWCB8fCBbXSxcblx0XHRcdFx0fV0sXG5cdFx0XHRcdHF1aWx0U2xpY2VZOiBbe1xuXHRcdFx0XHRcdHR5cGU6ICdxdWlsdFNsaWNlWScsXG5cdFx0XHRcdFx0dmFsdWVzOiBjdXN0b21FbnZlbG9wZVdhcnAucXVpbHRTbGljZVkgfHwgW10sXG5cdFx0XHRcdH1dLFxuXHRcdFx0XHRtZXNoUG9pbnRzOiBbXG5cdFx0XHRcdFx0eyB0eXBlOiAnSHJ6bicsIHZhbHVlczogbWVzaFBvaW50cy5tYXAocCA9PiBwLngpIH0sXG5cdFx0XHRcdFx0eyB0eXBlOiAnVnJ0YycsIHZhbHVlczogbWVzaFBvaW50cy5tYXAocCA9PiBwLnkpIH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkZXNjLmN1c3RvbUVudmVsb3BlV2FycCA9IHtcblx0XHRcdFx0bWVzaFBvaW50czogW1xuXHRcdFx0XHRcdHsgdHlwZTogJ0hyem4nLCB2YWx1ZXM6IG1lc2hQb2ludHMubWFwKHAgPT4gcC54KSB9LFxuXHRcdFx0XHRcdHsgdHlwZTogJ1ZydGMnLCB2YWx1ZXM6IG1lc2hQb2ludHMubWFwKHAgPT4gcC55KSB9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZGVzYztcbn1cblxuYWRkSGFuZGxlcihcblx0J1BsTGQnLFxuXHRoYXNLZXkoJ3BsYWNlZExheWVyJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdGlmIChyZWFkU2lnbmF0dXJlKHJlYWRlcikgIT09ICdwbGNMJykgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFBsTGQgc2lnbmF0dXJlYCk7XG5cdFx0aWYgKHJlYWRJbnQzMihyZWFkZXIpICE9PSAzKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgUGxMZCB2ZXJzaW9uYCk7XG5cdFx0Y29uc3QgaWQgPSByZWFkUGFzY2FsU3RyaW5nKHJlYWRlciwgMSk7XG5cdFx0cmVhZEludDMyKHJlYWRlcik7IC8vIHBhZ2VOdW1iZXJcblx0XHRyZWFkSW50MzIocmVhZGVyKTsgLy8gdG90YWxQYWdlcywgVE9ETzogY2hlY2sgaG93IHRoaXMgd29ya3MgP1xuXHRcdHJlYWRJbnQzMihyZWFkZXIpOyAvLyBhbml0QWxpYXNQb2xpY3kgMTZcblx0XHRjb25zdCBwbGFjZWRMYXllclR5cGUgPSByZWFkSW50MzIocmVhZGVyKTsgLy8gMCA9IHVua25vd24sIDEgPSB2ZWN0b3IsIDIgPSByYXN0ZXIsIDMgPSBpbWFnZSBzdGFja1xuXHRcdGlmICghcGxhY2VkTGF5ZXJUeXBlc1twbGFjZWRMYXllclR5cGVdKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUGxMZCB0eXBlJyk7XG5cdFx0Y29uc3QgdHJhbnNmb3JtOiBudW1iZXJbXSA9IFtdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgODsgaSsrKSB0cmFuc2Zvcm0ucHVzaChyZWFkRmxvYXQ2NChyZWFkZXIpKTsgLy8geCwgeSBvZiA0IGNvcm5lcnMgb2YgdGhlIHRyYW5zZm9ybVxuXHRcdGNvbnN0IHdhcnBWZXJzaW9uID0gcmVhZEludDMyKHJlYWRlcik7XG5cdFx0aWYgKHdhcnBWZXJzaW9uICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgV2FycCB2ZXJzaW9uICR7d2FycFZlcnNpb259YCk7XG5cdFx0Y29uc3Qgd2FycDogV2FycERlc2NyaXB0b3IgJiBRdWlsdFdhcnBEZXNjcmlwdG9yID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcik7XG5cblx0XHR0YXJnZXQucGxhY2VkTGF5ZXIgPSB0YXJnZXQucGxhY2VkTGF5ZXIgfHwgeyAvLyBza2lwIGlmIFNvTGQgYWxyZWFkeSBzZXQgaXRcblx0XHRcdGlkLFxuXHRcdFx0dHlwZTogcGxhY2VkTGF5ZXJUeXBlc1twbGFjZWRMYXllclR5cGVdLFxuXHRcdFx0Ly8gcGFnZU51bWJlcixcblx0XHRcdC8vIHRvdGFsUGFnZXMsXG5cdFx0XHR0cmFuc2Zvcm0sXG5cdFx0XHR3YXJwOiBwYXJzZVdhcnAod2FycCksXG5cdFx0fTtcblxuXHRcdC8vIGNvbnNvbGUubG9nKCdQbExkIHdhcnAnLCByZXF1aXJlKCd1dGlsJykuaW5zcGVjdCh3YXJwLCBmYWxzZSwgOTksIHRydWUpKTtcblx0XHQvLyBjb25zb2xlLmxvZygnUGxMZCcsIHJlcXVpcmUoJ3V0aWwnKS5pbnNwZWN0KHRhcmdldC5wbGFjZWRMYXllciwgZmFsc2UsIDk5LCB0cnVlKSk7XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBwbGFjZWQgPSB0YXJnZXQucGxhY2VkTGF5ZXIhO1xuXHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgJ3BsY0wnKTtcblx0XHR3cml0ZUludDMyKHdyaXRlciwgMyk7IC8vIHZlcnNpb25cblx0XHR3cml0ZVBhc2NhbFN0cmluZyh3cml0ZXIsIHBsYWNlZC5pZCwgMSk7XG5cdFx0d3JpdGVJbnQzMih3cml0ZXIsIDEpOyAvLyBwYWdlTnVtYmVyXG5cdFx0d3JpdGVJbnQzMih3cml0ZXIsIDEpOyAvLyB0b3RhbFBhZ2VzXG5cdFx0d3JpdGVJbnQzMih3cml0ZXIsIDE2KTsgLy8gYW5pdEFsaWFzUG9saWN5XG5cdFx0aWYgKHBsYWNlZExheWVyVHlwZXMuaW5kZXhPZihwbGFjZWQudHlwZSkgPT09IC0xKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcGxhY2VkTGF5ZXIgdHlwZScpO1xuXHRcdHdyaXRlSW50MzIod3JpdGVyLCBwbGFjZWRMYXllclR5cGVzLmluZGV4T2YocGxhY2VkLnR5cGUpKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IDg7IGkrKykgd3JpdGVGbG9hdDY0KHdyaXRlciwgcGxhY2VkLnRyYW5zZm9ybVtpXSk7XG5cdFx0d3JpdGVJbnQzMih3cml0ZXIsIDApOyAvLyB3YXJwIHZlcnNpb25cblx0XHRjb25zdCBpc1F1aWx0ID0gcGxhY2VkLndhcnAgJiYgaXNRdWlsdFdhcnAocGxhY2VkLndhcnApO1xuXHRcdGNvbnN0IHR5cGUgPSBpc1F1aWx0ID8gJ3F1aWx0V2FycCcgOiAnd2FycCc7XG5cdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCB0eXBlLCBlbmNvZGVXYXJwKHBsYWNlZC53YXJwIHx8IHt9KSwgdHlwZSk7XG5cdH0sXG4pO1xuXG5pbnRlcmZhY2UgU29MZERlc2NyaXB0b3Ige1xuXHRJZG50OiBzdHJpbmc7XG5cdHBsYWNlZDogc3RyaW5nO1xuXHRQZ05tOiBudW1iZXI7XG5cdHRvdGFsUGFnZXM6IG51bWJlcjtcblx0Q3JvcD86IG51bWJlcjtcblx0ZnJhbWVTdGVwOiB7IG51bWVyYXRvcjogbnVtYmVyOyBkZW5vbWluYXRvcjogbnVtYmVyOyB9O1xuXHRkdXJhdGlvbjogeyBudW1lcmF0b3I6IG51bWJlcjsgZGVub21pbmF0b3I6IG51bWJlcjsgfTtcblx0ZnJhbWVDb3VudDogbnVtYmVyO1xuXHRBbm50OiBudW1iZXI7XG5cdFR5cGU6IG51bWJlcjtcblx0VHJuZjogbnVtYmVyW107XG5cdG5vbkFmZmluZVRyYW5zZm9ybTogbnVtYmVyW107XG5cdHF1aWx0V2FycD86IFF1aWx0V2FycERlc2NyaXB0b3I7XG5cdHdhcnA6IFdhcnBEZXNjcmlwdG9yO1xuXHQnU3ogICc6IHsgV2R0aDogbnVtYmVyOyBIZ2h0OiBudW1iZXI7IH07XG5cdFJzbHQ6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xuXHRjb21wPzogbnVtYmVyO1xuXHRjb21wSW5mbz86IHsgY29tcElEOiBudW1iZXI7IG9yaWdpbmFsQ29tcElEOiBudW1iZXI7IH07XG59XG5cbmFkZEhhbmRsZXIoXG5cdCdTb0xkJyxcblx0aGFzS2V5KCdwbGFjZWRMYXllcicpLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQpID0+IHtcblx0XHRpZiAocmVhZFNpZ25hdHVyZShyZWFkZXIpICE9PSAnc29MRCcpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBTb0xkIHR5cGVgKTtcblx0XHRpZiAocmVhZEludDMyKHJlYWRlcikgIT09IDQpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBTb0xkIHZlcnNpb25gKTtcblx0XHRjb25zdCBkZXNjOiBTb0xkRGVzY3JpcHRvciA9IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpO1xuXHRcdC8vIGNvbnNvbGUubG9nKCdTb0xkJywgcmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZGVzYywgZmFsc2UsIDk5LCB0cnVlKSk7XG5cdFx0Ly8gY29uc29sZS5sb2coJ1NvTGQud2FycCcsIHJlcXVpcmUoJ3V0aWwnKS5pbnNwZWN0KGRlc2Mud2FycCwgZmFsc2UsIDk5LCB0cnVlKSk7XG5cdFx0Ly8gY29uc29sZS5sb2coJ1NvTGQucXVpbHRXYXJwJywgcmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZGVzYy5xdWlsdFdhcnAsIGZhbHNlLCA5OSwgdHJ1ZSkpO1xuXG5cdFx0dGFyZ2V0LnBsYWNlZExheWVyID0ge1xuXHRcdFx0aWQ6IGRlc2MuSWRudCxcblx0XHRcdHBsYWNlZDogZGVzYy5wbGFjZWQsXG5cdFx0XHR0eXBlOiBwbGFjZWRMYXllclR5cGVzW2Rlc2MuVHlwZV0sXG5cdFx0XHQvLyBwYWdlTnVtYmVyOiBpbmZvLlBnTm0sXG5cdFx0XHQvLyB0b3RhbFBhZ2VzOiBpbmZvLnRvdGFsUGFnZXMsXG5cdFx0XHQvLyBmcmFtZVN0ZXA6IGluZm8uZnJhbWVTdGVwLFxuXHRcdFx0Ly8gZHVyYXRpb246IGluZm8uZHVyYXRpb24sXG5cdFx0XHQvLyBmcmFtZUNvdW50OiBpbmZvLmZyYW1lQ291bnQsXG5cdFx0XHR0cmFuc2Zvcm06IGRlc2MuVHJuZixcblx0XHRcdHdpZHRoOiBkZXNjWydTeiAgJ10uV2R0aCxcblx0XHRcdGhlaWdodDogZGVzY1snU3ogICddLkhnaHQsXG5cdFx0XHRyZXNvbHV0aW9uOiBwYXJzZVVuaXRzKGRlc2MuUnNsdCksXG5cdFx0XHR3YXJwOiBwYXJzZVdhcnAoKGRlc2MucXVpbHRXYXJwIHx8IGRlc2Mud2FycCkgYXMgYW55KSxcblx0XHR9O1xuXG5cdFx0aWYgKGRlc2MuQ3JvcCkgdGFyZ2V0LnBsYWNlZExheWVyLmNyb3AgPSBkZXNjLkNyb3A7XG5cdFx0aWYgKGRlc2MuY29tcCkgdGFyZ2V0LnBsYWNlZExheWVyLmNvbXAgPSBkZXNjLmNvbXA7XG5cdFx0aWYgKGRlc2MuY29tcEluZm8pIHRhcmdldC5wbGFjZWRMYXllci5jb21wSW5mbyA9IGRlc2MuY29tcEluZm87XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpOyAvLyBIQUNLXG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgJ3NvTEQnKTtcblx0XHR3cml0ZUludDMyKHdyaXRlciwgNCk7IC8vIHZlcnNpb25cblxuXHRcdGNvbnN0IHBsYWNlZCA9IHRhcmdldC5wbGFjZWRMYXllciE7XG5cdFx0Y29uc3QgZGVzYzogU29MZERlc2NyaXB0b3IgPSB7XG5cdFx0XHRJZG50OiBwbGFjZWQuaWQsXG5cdFx0XHRwbGFjZWQ6IHBsYWNlZC5wbGFjZWQgPz8gcGxhY2VkLmlkLCAvLyA/Pz9cblx0XHRcdFBnTm06IDEsXG5cdFx0XHR0b3RhbFBhZ2VzOiAxLFxuXHRcdFx0Li4uKHBsYWNlZC5jcm9wID8geyBDcm9wOiBwbGFjZWQuY3JvcCB9IDoge30pLFxuXHRcdFx0ZnJhbWVTdGVwOiB7XG5cdFx0XHRcdG51bWVyYXRvcjogMCxcblx0XHRcdFx0ZGVub21pbmF0b3I6IDYwMFxuXHRcdFx0fSxcblx0XHRcdGR1cmF0aW9uOiB7XG5cdFx0XHRcdG51bWVyYXRvcjogMCxcblx0XHRcdFx0ZGVub21pbmF0b3I6IDYwMFxuXHRcdFx0fSxcblx0XHRcdGZyYW1lQ291bnQ6IDEsXG5cdFx0XHRBbm50OiAxNixcblx0XHRcdFR5cGU6IHBsYWNlZExheWVyVHlwZXMuaW5kZXhPZihwbGFjZWQudHlwZSksXG5cdFx0XHRUcm5mOiBwbGFjZWQudHJhbnNmb3JtLFxuXHRcdFx0bm9uQWZmaW5lVHJhbnNmb3JtOiBwbGFjZWQudHJhbnNmb3JtLFxuXHRcdFx0cXVpbHRXYXJwOiB7fSBhcyBhbnksXG5cdFx0XHR3YXJwOiBlbmNvZGVXYXJwKHBsYWNlZC53YXJwIHx8IHt9KSxcblx0XHRcdCdTeiAgJzoge1xuXHRcdFx0XHRXZHRoOiBwbGFjZWQud2lkdGggfHwgMCwgLy8gVE9ETzogZmluZCBzaXplID9cblx0XHRcdFx0SGdodDogcGxhY2VkLmhlaWdodCB8fCAwLCAvLyBUT0RPOiBmaW5kIHNpemUgP1xuXHRcdFx0fSxcblx0XHRcdFJzbHQ6IHBsYWNlZC5yZXNvbHV0aW9uID8gdW5pdHNWYWx1ZShwbGFjZWQucmVzb2x1dGlvbiwgJ3Jlc29sdXRpb24nKSA6IHsgdW5pdHM6ICdEZW5zaXR5JywgdmFsdWU6IDcyIH0sXG5cdFx0fTtcblxuXHRcdGlmIChwbGFjZWQud2FycCAmJiBpc1F1aWx0V2FycChwbGFjZWQud2FycCkpIHtcblx0XHRcdGNvbnN0IHF1aWx0V2FycCA9IGVuY29kZVdhcnAocGxhY2VkLndhcnApIGFzIFF1aWx0V2FycERlc2NyaXB0b3I7XG5cdFx0XHRkZXNjLnF1aWx0V2FycCA9IHF1aWx0V2FycDtcblx0XHRcdGRlc2Mud2FycCA9IHtcblx0XHRcdFx0d2FycFN0eWxlOiAnd2FycFN0eWxlLndhcnBOb25lJyxcblx0XHRcdFx0d2FycFZhbHVlOiBxdWlsdFdhcnAud2FycFZhbHVlLFxuXHRcdFx0XHR3YXJwUGVyc3BlY3RpdmU6IHF1aWx0V2FycC53YXJwUGVyc3BlY3RpdmUsXG5cdFx0XHRcdHdhcnBQZXJzcGVjdGl2ZU90aGVyOiBxdWlsdFdhcnAud2FycFBlcnNwZWN0aXZlT3RoZXIsXG5cdFx0XHRcdHdhcnBSb3RhdGU6IHF1aWx0V2FycC53YXJwUm90YXRlLFxuXHRcdFx0XHRib3VuZHM6IHF1aWx0V2FycC5ib3VuZHMsXG5cdFx0XHRcdHVPcmRlcjogcXVpbHRXYXJwLnVPcmRlcixcblx0XHRcdFx0dk9yZGVyOiBxdWlsdFdhcnAudk9yZGVyLFxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGVsZXRlIGRlc2MucXVpbHRXYXJwO1xuXHRcdH1cblxuXHRcdGlmIChwbGFjZWQuY29tcCkgZGVzYy5jb21wID0gcGxhY2VkLmNvbXA7XG5cdFx0aWYgKHBsYWNlZC5jb21wSW5mbykgZGVzYy5jb21wSW5mbyA9IHBsYWNlZC5jb21wSW5mbztcblxuXHRcdHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgJ251bGwnLCBkZXNjLCBkZXNjLnF1aWx0V2FycCA/ICdxdWlsdFdhcnAnIDogJ3dhcnAnKTtcblx0fSxcbik7XG5cbmFkZEhhbmRsZXIoXG5cdCdmeHJwJyxcblx0aGFzS2V5KCdyZWZlcmVuY2VQb2ludCcpLFxuXHQocmVhZGVyLCB0YXJnZXQpID0+IHtcblx0XHR0YXJnZXQucmVmZXJlbmNlUG9pbnQgPSB7XG5cdFx0XHR4OiByZWFkRmxvYXQ2NChyZWFkZXIpLFxuXHRcdFx0eTogcmVhZEZsb2F0NjQocmVhZGVyKSxcblx0XHR9O1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHR3cml0ZUZsb2F0NjQod3JpdGVyLCB0YXJnZXQucmVmZXJlbmNlUG9pbnQhLngpO1xuXHRcdHdyaXRlRmxvYXQ2NCh3cml0ZXIsIHRhcmdldC5yZWZlcmVuY2VQb2ludCEueSk7XG5cdH0sXG4pO1xuXG5pZiAoTU9DS19IQU5ETEVSUykge1xuXHRhZGRIYW5kbGVyKFxuXHRcdCdQYXR0Jyxcblx0XHR0YXJnZXQgPT4gKHRhcmdldCBhcyBhbnkpLl9QYXR0ICE9PSB1bmRlZmluZWQsXG5cdFx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZygnYWRkaXRpb25hbCBpbmZvOiBQYXR0Jyk7XG5cdFx0XHQodGFyZ2V0IGFzIGFueSkuX1BhdHQgPSByZWFkQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHRcdH0sXG5cdFx0KHdyaXRlciwgdGFyZ2V0KSA9PiBmYWxzZSAmJiB3cml0ZUJ5dGVzKHdyaXRlciwgKHRhcmdldCBhcyBhbnkpLl9QYXR0KSxcblx0KTtcbn0gZWxzZSB7XG5cdGFkZEhhbmRsZXIoXG5cdFx0J1BhdHQnLCAvLyBUT0RPOiBoYW5kbGUgYWxzbyBQYXQyICYgUGF0M1xuXHRcdHRhcmdldCA9PiAhdGFyZ2V0LFxuXHRcdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdFx0aWYgKCFsZWZ0KCkpIHJldHVybjtcblxuXHRcdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTsgcmV0dXJuOyAvLyBub3Qgc3VwcG9ydGVkIHlldFxuXHRcdFx0dGFyZ2V0OyByZWFkUGF0dGVybjtcblxuXHRcdFx0Ly8gaWYgKCF0YXJnZXQucGF0dGVybnMpIHRhcmdldC5wYXR0ZXJucyA9IFtdO1xuXHRcdFx0Ly8gdGFyZ2V0LnBhdHRlcm5zLnB1c2gocmVhZFBhdHRlcm4ocmVhZGVyKSk7XG5cdFx0XHQvLyBza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHRcdH0sXG5cdFx0KF93cml0ZXIsIF90YXJnZXQpID0+IHtcblx0XHR9LFxuXHQpO1xufVxuXG5mdW5jdGlvbiByZWFkUmVjdChyZWFkZXI6IFBzZFJlYWRlcikge1xuXHRjb25zdCB0b3AgPSByZWFkSW50MzIocmVhZGVyKTtcblx0Y29uc3QgbGVmdCA9IHJlYWRJbnQzMihyZWFkZXIpO1xuXHRjb25zdCBib3R0b20gPSByZWFkSW50MzIocmVhZGVyKTtcblx0Y29uc3QgcmlnaHQgPSByZWFkSW50MzIocmVhZGVyKTtcblx0cmV0dXJuIHsgdG9wLCBsZWZ0LCBib3R0b20sIHJpZ2h0IH07XG59XG5cbmZ1bmN0aW9uIHdyaXRlUmVjdCh3cml0ZXI6IFBzZFdyaXRlciwgcmVjdDogeyBsZWZ0OiBudW1iZXI7IHRvcDogbnVtYmVyOyByaWdodDogbnVtYmVyOyBib3R0b206IG51bWJlciB9KSB7XG5cdHdyaXRlSW50MzIod3JpdGVyLCByZWN0LnRvcCk7XG5cdHdyaXRlSW50MzIod3JpdGVyLCByZWN0LmxlZnQpO1xuXHR3cml0ZUludDMyKHdyaXRlciwgcmVjdC5ib3R0b20pO1xuXHR3cml0ZUludDMyKHdyaXRlciwgcmVjdC5yaWdodCk7XG59XG5cbmFkZEhhbmRsZXIoXG5cdCdBbm5vJyxcblx0dGFyZ2V0ID0+ICh0YXJnZXQgYXMgUHNkKS5hbm5vdGF0aW9ucyAhPT0gdW5kZWZpbmVkLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQpID0+IHtcblx0XHRjb25zdCBtYWpvciA9IHJlYWRVaW50MTYocmVhZGVyKTtcblx0XHRjb25zdCBtaW5vciA9IHJlYWRVaW50MTYocmVhZGVyKTtcblx0XHRpZiAobWFqb3IgIT09IDIgfHwgbWlub3IgIT09IDEpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBBbm5vIHZlcnNpb24nKTtcblx0XHRjb25zdCBjb3VudCA9IHJlYWRVaW50MzIocmVhZGVyKTtcblx0XHRjb25zdCBhbm5vdGF0aW9uczogQW5ub3RhdGlvbltdID0gW107XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcblx0XHRcdC8qY29uc3QgbGVuZ3RoID0qLyByZWFkVWludDMyKHJlYWRlcik7XG5cdFx0XHRjb25zdCB0eXBlID0gcmVhZFNpZ25hdHVyZShyZWFkZXIpO1xuXHRcdFx0Y29uc3Qgb3BlbiA9ICEhcmVhZFVpbnQ4KHJlYWRlcik7XG5cdFx0XHQvKmNvbnN0IGZsYWdzID0qLyByZWFkVWludDgocmVhZGVyKTsgLy8gYWx3YXlzIDI4XG5cdFx0XHQvKmNvbnN0IG9wdGlvbmFsQmxvY2tzID0qLyByZWFkVWludDE2KHJlYWRlcik7XG5cdFx0XHRjb25zdCBpY29uTG9jYXRpb24gPSByZWFkUmVjdChyZWFkZXIpO1xuXHRcdFx0Y29uc3QgcG9wdXBMb2NhdGlvbiA9IHJlYWRSZWN0KHJlYWRlcik7XG5cdFx0XHRjb25zdCBjb2xvciA9IHJlYWRDb2xvcihyZWFkZXIpO1xuXHRcdFx0Y29uc3QgYXV0aG9yID0gcmVhZFBhc2NhbFN0cmluZyhyZWFkZXIsIDIpO1xuXHRcdFx0Y29uc3QgbmFtZSA9IHJlYWRQYXNjYWxTdHJpbmcocmVhZGVyLCAyKTtcblx0XHRcdGNvbnN0IGRhdGUgPSByZWFkUGFzY2FsU3RyaW5nKHJlYWRlciwgMik7XG5cdFx0XHQvKmNvbnN0IGNvbnRlbnRMZW5ndGggPSovIHJlYWRVaW50MzIocmVhZGVyKTtcblx0XHRcdC8qY29uc3QgZGF0YVR5cGUgPSovIHJlYWRTaWduYXR1cmUocmVhZGVyKTtcblx0XHRcdGNvbnN0IGRhdGFMZW5ndGggPSByZWFkVWludDMyKHJlYWRlcik7XG5cdFx0XHRsZXQgZGF0YTogc3RyaW5nIHwgVWludDhBcnJheTtcblxuXHRcdFx0aWYgKHR5cGUgPT09ICd0eHRBJykge1xuXHRcdFx0XHRpZiAoZGF0YUxlbmd0aCA+PSAyICYmIHJlYWRVaW50MTYocmVhZGVyKSA9PT0gMHhmZWZmKSB7XG5cdFx0XHRcdFx0ZGF0YSA9IHJlYWRVbmljb2RlU3RyaW5nV2l0aExlbmd0aChyZWFkZXIsIChkYXRhTGVuZ3RoIC0gMikgLyAyKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZWFkZXIub2Zmc2V0IC09IDI7XG5cdFx0XHRcdFx0ZGF0YSA9IHJlYWRBc2NpaVN0cmluZyhyZWFkZXIsIGRhdGFMZW5ndGgpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZGF0YSA9IGRhdGEucmVwbGFjZSgvXFxyL2csICdcXG4nKTtcblx0XHRcdH0gZWxzZSBpZiAodHlwZSA9PT0gJ3NuZEEnKSB7XG5cdFx0XHRcdGRhdGEgPSByZWFkQnl0ZXMocmVhZGVyLCBkYXRhTGVuZ3RoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignVW5rbm93biBhbm5vdGF0aW9uIHR5cGUnKTtcblx0XHRcdH1cblxuXHRcdFx0YW5ub3RhdGlvbnMucHVzaCh7XG5cdFx0XHRcdHR5cGU6IHR5cGUgPT09ICd0eHRBJyA/ICd0ZXh0JyA6ICdzb3VuZCcsIG9wZW4sIGljb25Mb2NhdGlvbiwgcG9wdXBMb2NhdGlvbiwgY29sb3IsIGF1dGhvciwgbmFtZSwgZGF0ZSwgZGF0YSxcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdCh0YXJnZXQgYXMgUHNkKS5hbm5vdGF0aW9ucyA9IGFubm90YXRpb25zO1xuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGFubm90YXRpb25zID0gKHRhcmdldCBhcyBQc2QpLmFubm90YXRpb25zITtcblxuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgMik7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCAxKTtcblx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIGFubm90YXRpb25zLmxlbmd0aCk7XG5cblx0XHRmb3IgKGNvbnN0IGFubm90YXRpb24gb2YgYW5ub3RhdGlvbnMpIHtcblx0XHRcdGNvbnN0IHNvdW5kID0gYW5ub3RhdGlvbi50eXBlID09PSAnc291bmQnO1xuXG5cdFx0XHRpZiAoc291bmQgJiYgIShhbm5vdGF0aW9uLmRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkgdGhyb3cgbmV3IEVycm9yKCdTb3VuZCBhbm5vdGF0aW9uIGRhdGEgc2hvdWxkIGJlIFVpbnQ4QXJyYXknKTtcblx0XHRcdGlmICghc291bmQgJiYgdHlwZW9mIGFubm90YXRpb24uZGF0YSAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBFcnJvcignVGV4dCBhbm5vdGF0aW9uIGRhdGEgc2hvdWxkIGJlIHN0cmluZycpO1xuXG5cdFx0XHRjb25zdCBsZW5ndGhPZmZzZXQgPSB3cml0ZXIub2Zmc2V0O1xuXHRcdFx0d3JpdGVVaW50MzIod3JpdGVyLCAwKTsgLy8gbGVuZ3RoXG5cdFx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsIHNvdW5kID8gJ3NuZEEnIDogJ3R4dEEnKTtcblx0XHRcdHdyaXRlVWludDgod3JpdGVyLCBhbm5vdGF0aW9uLm9wZW4gPyAxIDogMCk7XG5cdFx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgMjgpO1xuXHRcdFx0d3JpdGVVaW50MTYod3JpdGVyLCAxKTtcblx0XHRcdHdyaXRlUmVjdCh3cml0ZXIsIGFubm90YXRpb24uaWNvbkxvY2F0aW9uKTtcblx0XHRcdHdyaXRlUmVjdCh3cml0ZXIsIGFubm90YXRpb24ucG9wdXBMb2NhdGlvbik7XG5cdFx0XHR3cml0ZUNvbG9yKHdyaXRlciwgYW5ub3RhdGlvbi5jb2xvcik7XG5cdFx0XHR3cml0ZVBhc2NhbFN0cmluZyh3cml0ZXIsIGFubm90YXRpb24uYXV0aG9yIHx8ICcnLCAyKTtcblx0XHRcdHdyaXRlUGFzY2FsU3RyaW5nKHdyaXRlciwgYW5ub3RhdGlvbi5uYW1lIHx8ICcnLCAyKTtcblx0XHRcdHdyaXRlUGFzY2FsU3RyaW5nKHdyaXRlciwgYW5ub3RhdGlvbi5kYXRlIHx8ICcnLCAyKTtcblx0XHRcdGNvbnN0IGNvbnRlbnRPZmZzZXQgPSB3cml0ZXIub2Zmc2V0O1xuXHRcdFx0d3JpdGVVaW50MzIod3JpdGVyLCAwKTsgLy8gY29udGVudCBsZW5ndGhcblx0XHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgc291bmQgPyAnc25kTScgOiAndHh0QycpO1xuXHRcdFx0d3JpdGVVaW50MzIod3JpdGVyLCAwKTsgLy8gZGF0YSBsZW5ndGhcblx0XHRcdGNvbnN0IGRhdGFPZmZzZXQgPSB3cml0ZXIub2Zmc2V0O1xuXG5cdFx0XHRpZiAoc291bmQpIHtcblx0XHRcdFx0d3JpdGVCeXRlcyh3cml0ZXIsIGFubm90YXRpb24uZGF0YSBhcyBVaW50OEFycmF5KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHdyaXRlVWludDE2KHdyaXRlciwgMHhmZWZmKTsgLy8gdW5pY29kZSBzdHJpbmcgaW5kaWNhdG9yXG5cdFx0XHRcdGNvbnN0IHRleHQgPSAoYW5ub3RhdGlvbi5kYXRhIGFzIHN0cmluZykucmVwbGFjZSgvXFxuL2csICdcXHInKTtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB3cml0ZVVpbnQxNih3cml0ZXIsIHRleHQuY2hhckNvZGVBdChpKSk7XG5cdFx0XHR9XG5cblx0XHRcdHdyaXRlci52aWV3LnNldFVpbnQzMihsZW5ndGhPZmZzZXQsIHdyaXRlci5vZmZzZXQgLSBsZW5ndGhPZmZzZXQsIGZhbHNlKTtcblx0XHRcdHdyaXRlci52aWV3LnNldFVpbnQzMihjb250ZW50T2Zmc2V0LCB3cml0ZXIub2Zmc2V0IC0gY29udGVudE9mZnNldCwgZmFsc2UpO1xuXHRcdFx0d3JpdGVyLnZpZXcuc2V0VWludDMyKGRhdGFPZmZzZXQgLSA0LCB3cml0ZXIub2Zmc2V0IC0gZGF0YU9mZnNldCwgZmFsc2UpO1xuXHRcdH1cblx0fVxuKTtcblxuaW50ZXJmYWNlIEZpbGVPcGVuRGVzY3JpcHRvciB7XG5cdGNvbXBJbmZvOiB7IGNvbXBJRDogbnVtYmVyOyBvcmlnaW5hbENvbXBJRDogbnVtYmVyOyB9O1xufVxuXG5hZGRIYW5kbGVyKFxuXHQnbG5rMicsXG5cdCh0YXJnZXQ6IGFueSkgPT4gISEodGFyZ2V0IGFzIFBzZCkubGlua2VkRmlsZXMgJiYgKHRhcmdldCBhcyBQc2QpLmxpbmtlZEZpbGVzIS5sZW5ndGggPiAwLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQsIF8sIG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCBwc2QgPSB0YXJnZXQgYXMgUHNkO1xuXHRcdHBzZC5saW5rZWRGaWxlcyA9IFtdO1xuXG5cdFx0d2hpbGUgKGxlZnQoKSA+IDgpIHtcblx0XHRcdGxldCBzaXplID0gcmVhZExlbmd0aDY0KHJlYWRlcik7IC8vIHNpemVcblx0XHRcdGNvbnN0IHN0YXJ0T2Zmc2V0ID0gcmVhZGVyLm9mZnNldDtcblx0XHRcdGNvbnN0IHR5cGUgPSByZWFkU2lnbmF0dXJlKHJlYWRlcikgYXMgJ2xpRkQnIHwgJ2xpRkUnIHwgJ2xpRkEnO1xuXHRcdFx0Y29uc3QgdmVyc2lvbiA9IHJlYWRJbnQzMihyZWFkZXIpO1xuXHRcdFx0Y29uc3QgaWQgPSByZWFkUGFzY2FsU3RyaW5nKHJlYWRlciwgMSk7XG5cdFx0XHRjb25zdCBuYW1lID0gcmVhZFVuaWNvZGVTdHJpbmcocmVhZGVyKTtcblx0XHRcdGNvbnN0IGZpbGVUeXBlID0gcmVhZFNpZ25hdHVyZShyZWFkZXIpLnRyaW0oKTsgLy8gJyAgICAnIGlmIGVtcHR5XG5cdFx0XHRjb25zdCBmaWxlQ3JlYXRvciA9IHJlYWRTaWduYXR1cmUocmVhZGVyKS50cmltKCk7IC8vICcgICAgJyBvciAnXFwwXFwwXFwwXFwwJyBpZiBlbXB0eVxuXHRcdFx0Y29uc3QgZGF0YVNpemUgPSByZWFkTGVuZ3RoNjQocmVhZGVyKTtcblx0XHRcdGNvbnN0IGhhc0ZpbGVPcGVuRGVzY3JpcHRvciA9IHJlYWRVaW50OChyZWFkZXIpO1xuXHRcdFx0Y29uc3QgZmlsZU9wZW5EZXNjcmlwdG9yID0gaGFzRmlsZU9wZW5EZXNjcmlwdG9yID8gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcikgYXMgRmlsZU9wZW5EZXNjcmlwdG9yIDogdW5kZWZpbmVkO1xuXHRcdFx0Y29uc3QgbGlua2VkRmlsZURlc2NyaXB0b3IgPSB0eXBlID09PSAnbGlGRScgPyByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyKSA6IHVuZGVmaW5lZDtcblx0XHRcdGNvbnN0IGZpbGU6IExpbmtlZEZpbGUgPSB7IGlkLCBuYW1lLCBkYXRhOiB1bmRlZmluZWQgfTtcblxuXHRcdFx0aWYgKGZpbGVUeXBlKSBmaWxlLnR5cGUgPSBmaWxlVHlwZTtcblx0XHRcdGlmIChmaWxlQ3JlYXRvcikgZmlsZS5jcmVhdG9yID0gZmlsZUNyZWF0b3I7XG5cdFx0XHRpZiAoZmlsZU9wZW5EZXNjcmlwdG9yKSBmaWxlLmRlc2NyaXB0b3IgPSBmaWxlT3BlbkRlc2NyaXB0b3I7XG5cblx0XHRcdGlmICh0eXBlID09PSAnbGlGRScgJiYgdmVyc2lvbiA+IDMpIHtcblx0XHRcdFx0Y29uc3QgeWVhciA9IHJlYWRJbnQzMihyZWFkZXIpO1xuXHRcdFx0XHRjb25zdCBtb250aCA9IHJlYWRVaW50OChyZWFkZXIpO1xuXHRcdFx0XHRjb25zdCBkYXkgPSByZWFkVWludDgocmVhZGVyKTtcblx0XHRcdFx0Y29uc3QgaG91ciA9IHJlYWRVaW50OChyZWFkZXIpO1xuXHRcdFx0XHRjb25zdCBtaW51dGUgPSByZWFkVWludDgocmVhZGVyKTtcblx0XHRcdFx0Y29uc3Qgc2Vjb25kcyA9IHJlYWRGbG9hdDY0KHJlYWRlcik7XG5cdFx0XHRcdGNvbnN0IHdob2xlU2Vjb25kcyA9IE1hdGguZmxvb3Ioc2Vjb25kcyk7XG5cdFx0XHRcdGNvbnN0IG1zID0gKHNlY29uZHMgLSB3aG9sZVNlY29uZHMpICogMTAwMDtcblx0XHRcdFx0ZmlsZS50aW1lID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCB3aG9sZVNlY29uZHMsIG1zKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZmlsZVNpemUgPSB0eXBlID09PSAnbGlGRScgPyByZWFkTGVuZ3RoNjQocmVhZGVyKSA6IDA7XG5cdFx0XHRpZiAodHlwZSA9PT0gJ2xpRkEnKSBza2lwQnl0ZXMocmVhZGVyLCA4KTtcblx0XHRcdGlmICh0eXBlID09PSAnbGlGRCcpIGZpbGUuZGF0YSA9IHJlYWRCeXRlcyhyZWFkZXIsIGRhdGFTaXplKTtcblx0XHRcdGlmICh2ZXJzaW9uID49IDUpIGZpbGUuY2hpbGREb2N1bWVudElEID0gcmVhZFVuaWNvZGVTdHJpbmcocmVhZGVyKTtcblx0XHRcdGlmICh2ZXJzaW9uID49IDYpIGZpbGUuYXNzZXRNb2RUaW1lID0gcmVhZEZsb2F0NjQocmVhZGVyKTtcblx0XHRcdGlmICh2ZXJzaW9uID49IDcpIGZpbGUuYXNzZXRMb2NrZWRTdGF0ZSA9IHJlYWRVaW50OChyZWFkZXIpO1xuXHRcdFx0aWYgKHR5cGUgPT09ICdsaUZFJykgZmlsZS5kYXRhID0gcmVhZEJ5dGVzKHJlYWRlciwgZmlsZVNpemUpO1xuXG5cdFx0XHRpZiAob3B0aW9ucy5za2lwTGlua2VkRmlsZXNEYXRhKSBmaWxlLmRhdGEgPSB1bmRlZmluZWQ7XG5cblx0XHRcdHBzZC5saW5rZWRGaWxlcy5wdXNoKGZpbGUpO1xuXHRcdFx0bGlua2VkRmlsZURlc2NyaXB0b3I7XG5cblx0XHRcdHdoaWxlIChzaXplICUgNCkgc2l6ZSsrO1xuXHRcdFx0cmVhZGVyLm9mZnNldCA9IHN0YXJ0T2Zmc2V0ICsgc2l6ZTtcblx0XHR9XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpOyAvLyA/XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IHBzZCA9IHRhcmdldCBhcyBQc2Q7XG5cblx0XHRmb3IgKGNvbnN0IGZpbGUgb2YgcHNkLmxpbmtlZEZpbGVzISkge1xuXHRcdFx0bGV0IHZlcnNpb24gPSAyO1xuXG5cdFx0XHRpZiAoZmlsZS5hc3NldExvY2tlZFN0YXRlICE9IG51bGwpIHZlcnNpb24gPSA3O1xuXHRcdFx0ZWxzZSBpZiAoZmlsZS5hc3NldE1vZFRpbWUgIT0gbnVsbCkgdmVyc2lvbiA9IDY7XG5cdFx0XHRlbHNlIGlmIChmaWxlLmNoaWxkRG9jdW1lbnRJRCAhPSBudWxsKSB2ZXJzaW9uID0gNTtcblx0XHRcdC8vIFRPRE86IGVsc2UgaWYgKGZpbGUudGltZSAhPSBudWxsKSB2ZXJzaW9uID0gMzsgKG9ubHkgZm9yIGxpRkUpXG5cblx0XHRcdHdyaXRlVWludDMyKHdyaXRlciwgMCk7XG5cdFx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIDApOyAvLyBzaXplXG5cdFx0XHRjb25zdCBzaXplT2Zmc2V0ID0gd3JpdGVyLm9mZnNldDtcblx0XHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgZmlsZS5kYXRhID8gJ2xpRkQnIDogJ2xpRkEnKTtcblx0XHRcdHdyaXRlSW50MzIod3JpdGVyLCB2ZXJzaW9uKTtcblx0XHRcdHdyaXRlUGFzY2FsU3RyaW5nKHdyaXRlciwgZmlsZS5pZCB8fCAnJywgMSk7XG5cdFx0XHR3cml0ZVVuaWNvZGVTdHJpbmdXaXRoUGFkZGluZyh3cml0ZXIsIGZpbGUubmFtZSB8fCAnJyk7XG5cdFx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsIGZpbGUudHlwZSA/IGAke2ZpbGUudHlwZX0gICAgYC5zdWJzdHIoMCwgNCkgOiAnICAgICcpO1xuXHRcdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCBmaWxlLmNyZWF0b3IgPyBgJHtmaWxlLmNyZWF0b3J9ICAgIGAuc3Vic3RyKDAsIDQpIDogJ1xcMFxcMFxcMFxcMCcpO1xuXHRcdFx0d3JpdGVMZW5ndGg2NCh3cml0ZXIsIGZpbGUuZGF0YSA/IGZpbGUuZGF0YS5ieXRlTGVuZ3RoIDogMCk7XG5cblx0XHRcdGlmIChmaWxlLmRlc2NyaXB0b3IgJiYgZmlsZS5kZXNjcmlwdG9yLmNvbXBJbmZvKSB7XG5cdFx0XHRcdGNvbnN0IGRlc2M6IEZpbGVPcGVuRGVzY3JpcHRvciA9IHtcblx0XHRcdFx0XHRjb21wSW5mbzogZmlsZS5kZXNjcmlwdG9yLmNvbXBJbmZvLFxuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdHdyaXRlVWludDgod3JpdGVyLCAxKTtcblx0XHRcdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAnbnVsbCcsIGRlc2MpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0d3JpdGVVaW50OCh3cml0ZXIsIDApO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZmlsZS5kYXRhKSB3cml0ZUJ5dGVzKHdyaXRlciwgZmlsZS5kYXRhKTtcblx0XHRcdGVsc2Ugd3JpdGVMZW5ndGg2NCh3cml0ZXIsIDApO1xuXHRcdFx0aWYgKHZlcnNpb24gPj0gNSkgd3JpdGVVbmljb2RlU3RyaW5nV2l0aFBhZGRpbmcod3JpdGVyLCBmaWxlLmNoaWxkRG9jdW1lbnRJRCB8fCAnJyk7XG5cdFx0XHRpZiAodmVyc2lvbiA+PSA2KSB3cml0ZUZsb2F0NjQod3JpdGVyLCBmaWxlLmFzc2V0TW9kVGltZSB8fCAwKTtcblx0XHRcdGlmICh2ZXJzaW9uID49IDcpIHdyaXRlVWludDgod3JpdGVyLCBmaWxlLmFzc2V0TG9ja2VkU3RhdGUgfHwgMCk7XG5cblx0XHRcdGxldCBzaXplID0gd3JpdGVyLm9mZnNldCAtIHNpemVPZmZzZXQ7XG5cdFx0XHR3cml0ZXIudmlldy5zZXRVaW50MzIoc2l6ZU9mZnNldCAtIDQsIHNpemUsIGZhbHNlKTsgLy8gd3JpdGUgc2l6ZVxuXG5cdFx0XHR3aGlsZSAoc2l6ZSAlIDQpIHtcblx0XHRcdFx0c2l6ZSsrO1xuXHRcdFx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgMCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuKTtcbmFkZEhhbmRsZXJBbGlhcygnbG5rRCcsICdsbmsyJyk7XG5hZGRIYW5kbGVyQWxpYXMoJ2xuazMnLCAnbG5rMicpO1xuXG4vLyB0aGlzIHNlZW1zIHRvIGp1c3QgYmUgemVybyBzaXplIGJsb2NrLCBpZ25vcmUgaXRcbmFkZEhhbmRsZXIoXG5cdCdsbmtFJyxcblx0dGFyZ2V0ID0+ICh0YXJnZXQgYXMgYW55KS5fbG5rRSAhPT0gdW5kZWZpbmVkLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQsIF9wc2RzLCBvcHRpb25zKSA9PiB7XG5cdFx0aWYgKG9wdGlvbnMubG9nTWlzc2luZ0ZlYXR1cmVzICYmIGxlZnQoKSkge1xuXHRcdFx0Y29uc29sZS5sb2coYE5vbi1lbXB0eSBsbmtFIGxheWVyIGluZm8gKCR7bGVmdCgpfSBieXRlcylgKTtcblx0XHR9XG5cblx0XHRpZiAoTU9DS19IQU5ETEVSUykge1xuXHRcdFx0KHRhcmdldCBhcyBhbnkpLl9sbmtFID0gcmVhZEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0XHR9XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4gTU9DS19IQU5ETEVSUyAmJiB3cml0ZUJ5dGVzKHdyaXRlciwgKHRhcmdldCBhcyBhbnkpLl9sbmtFKSxcbik7XG5cbmludGVyZmFjZSBFeHRlbnNpb25EZXNjIHtcblx0Z2VuZXJhdG9yU2V0dGluZ3M6IHtcblx0XHRnZW5lcmF0b3JfNDVfYXNzZXRzOiB7IGpzb246IHN0cmluZzsgfTtcblx0XHRsYXllclRpbWU6IG51bWJlcjtcblx0fTtcbn1cblxuYWRkSGFuZGxlcihcblx0J3B0aHMnLFxuXHRoYXNLZXkoJ3BhdGhMaXN0JyksXG5cdChyZWFkZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGRlc2NyaXB0b3IgPSByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyKTtcblxuXHRcdHRhcmdldC5wYXRoTGlzdCA9IFtdOyAvLyBUT0RPOiByZWFkIHBhdGhzIChmaW5kIGV4YW1wbGUgd2l0aCBub24tZW1wdHkgbGlzdClcblxuXHRcdGRlc2NyaXB0b3I7XG5cdFx0Ly8gY29uc29sZS5sb2coJ3B0aHMnLCBkZXNjcmlwdG9yKTsgLy8gVE9ETzogcmVtb3ZlIHRoaXNcblx0fSxcblx0KHdyaXRlciwgX3RhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGRlc2NyaXB0b3IgPSB7XG5cdFx0XHRwYXRoTGlzdDogW10sIC8vIFRPRE86IHdyaXRlIHBhdGhzXG5cdFx0fTtcblxuXHRcdHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgJ3BhdGhzRGF0YUNsYXNzJywgZGVzY3JpcHRvcik7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQnbHl2cicsXG5cdGhhc0tleSgndmVyc2lvbicpLFxuXHQocmVhZGVyLCB0YXJnZXQpID0+IHRhcmdldC52ZXJzaW9uID0gcmVhZFVpbnQzMihyZWFkZXIpLFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHdyaXRlVWludDMyKHdyaXRlciwgdGFyZ2V0LnZlcnNpb24hKSxcbik7XG5cbmZ1bmN0aW9uIGFkanVzdG1lbnRUeXBlKHR5cGU6IHN0cmluZykge1xuXHRyZXR1cm4gKHRhcmdldDogTGF5ZXJBZGRpdGlvbmFsSW5mbykgPT4gISF0YXJnZXQuYWRqdXN0bWVudCAmJiB0YXJnZXQuYWRqdXN0bWVudC50eXBlID09PSB0eXBlO1xufVxuXG5hZGRIYW5kbGVyKFxuXHQnYnJpdCcsXG5cdGFkanVzdG1lbnRUeXBlKCdicmlnaHRuZXNzL2NvbnRyYXN0JyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdGlmICghdGFyZ2V0LmFkanVzdG1lbnQpIHsgLy8gaWdub3JlIGlmIGdvdCBvbmUgZnJvbSBDZ0VkIGJsb2NrXG5cdFx0XHR0YXJnZXQuYWRqdXN0bWVudCA9IHtcblx0XHRcdFx0dHlwZTogJ2JyaWdodG5lc3MvY29udHJhc3QnLFxuXHRcdFx0XHRicmlnaHRuZXNzOiByZWFkSW50MTYocmVhZGVyKSxcblx0XHRcdFx0Y29udHJhc3Q6IHJlYWRJbnQxNihyZWFkZXIpLFxuXHRcdFx0XHRtZWFuVmFsdWU6IHJlYWRJbnQxNihyZWFkZXIpLFxuXHRcdFx0XHRsYWJDb2xvck9ubHk6ICEhcmVhZFVpbnQ4KHJlYWRlciksXG5cdFx0XHRcdHVzZUxlZ2FjeTogdHJ1ZSxcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgaW5mbyA9IHRhcmdldC5hZGp1c3RtZW50IGFzIEJyaWdodG5lc3NBZGp1c3RtZW50O1xuXHRcdHdyaXRlSW50MTYod3JpdGVyLCBpbmZvLmJyaWdodG5lc3MgfHwgMCk7XG5cdFx0d3JpdGVJbnQxNih3cml0ZXIsIGluZm8uY29udHJhc3QgfHwgMCk7XG5cdFx0d3JpdGVJbnQxNih3cml0ZXIsIGluZm8ubWVhblZhbHVlID8/IDEyNyk7XG5cdFx0d3JpdGVVaW50OCh3cml0ZXIsIGluZm8ubGFiQ29sb3JPbmx5ID8gMSA6IDApO1xuXHRcdHdyaXRlWmVyb3Mod3JpdGVyLCAxKTtcblx0fSxcbik7XG5cbmZ1bmN0aW9uIHJlYWRMZXZlbHNDaGFubmVsKHJlYWRlcjogUHNkUmVhZGVyKTogTGV2ZWxzQWRqdXN0bWVudENoYW5uZWwge1xuXHRjb25zdCBzaGFkb3dJbnB1dCA9IHJlYWRJbnQxNihyZWFkZXIpO1xuXHRjb25zdCBoaWdobGlnaHRJbnB1dCA9IHJlYWRJbnQxNihyZWFkZXIpO1xuXHRjb25zdCBzaGFkb3dPdXRwdXQgPSByZWFkSW50MTYocmVhZGVyKTtcblx0Y29uc3QgaGlnaGxpZ2h0T3V0cHV0ID0gcmVhZEludDE2KHJlYWRlcik7XG5cdGNvbnN0IG1pZHRvbmVJbnB1dCA9IHJlYWRJbnQxNihyZWFkZXIpIC8gMTAwO1xuXHRyZXR1cm4geyBzaGFkb3dJbnB1dCwgaGlnaGxpZ2h0SW5wdXQsIHNoYWRvd091dHB1dCwgaGlnaGxpZ2h0T3V0cHV0LCBtaWR0b25lSW5wdXQgfTtcbn1cblxuZnVuY3Rpb24gd3JpdGVMZXZlbHNDaGFubmVsKHdyaXRlcjogUHNkV3JpdGVyLCBjaGFubmVsOiBMZXZlbHNBZGp1c3RtZW50Q2hhbm5lbCkge1xuXHR3cml0ZUludDE2KHdyaXRlciwgY2hhbm5lbC5zaGFkb3dJbnB1dCk7XG5cdHdyaXRlSW50MTYod3JpdGVyLCBjaGFubmVsLmhpZ2hsaWdodElucHV0KTtcblx0d3JpdGVJbnQxNih3cml0ZXIsIGNoYW5uZWwuc2hhZG93T3V0cHV0KTtcblx0d3JpdGVJbnQxNih3cml0ZXIsIGNoYW5uZWwuaGlnaGxpZ2h0T3V0cHV0KTtcblx0d3JpdGVJbnQxNih3cml0ZXIsIE1hdGgucm91bmQoY2hhbm5lbC5taWR0b25lSW5wdXQgKiAxMDApKTtcbn1cblxuYWRkSGFuZGxlcihcblx0J2xldmwnLFxuXHRhZGp1c3RtZW50VHlwZSgnbGV2ZWxzJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdGlmIChyZWFkVWludDE2KHJlYWRlcikgIT09IDIpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBsZXZsIHZlcnNpb24nKTtcblxuXHRcdHRhcmdldC5hZGp1c3RtZW50ID0ge1xuXHRcdFx0Li4udGFyZ2V0LmFkanVzdG1lbnQgYXMgUHJlc2V0SW5mbyxcblx0XHRcdHR5cGU6ICdsZXZlbHMnLFxuXHRcdFx0cmdiOiByZWFkTGV2ZWxzQ2hhbm5lbChyZWFkZXIpLFxuXHRcdFx0cmVkOiByZWFkTGV2ZWxzQ2hhbm5lbChyZWFkZXIpLFxuXHRcdFx0Z3JlZW46IHJlYWRMZXZlbHNDaGFubmVsKHJlYWRlciksXG5cdFx0XHRibHVlOiByZWFkTGV2ZWxzQ2hhbm5lbChyZWFkZXIpLFxuXHRcdH07XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBpbmZvID0gdGFyZ2V0LmFkanVzdG1lbnQgYXMgTGV2ZWxzQWRqdXN0bWVudDtcblx0XHRjb25zdCBkZWZhdWx0Q2hhbm5lbCA9IHtcblx0XHRcdHNoYWRvd0lucHV0OiAwLFxuXHRcdFx0aGlnaGxpZ2h0SW5wdXQ6IDI1NSxcblx0XHRcdHNoYWRvd091dHB1dDogMCxcblx0XHRcdGhpZ2hsaWdodE91dHB1dDogMjU1LFxuXHRcdFx0bWlkdG9uZUlucHV0OiAxLFxuXHRcdH07XG5cblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIDIpOyAvLyB2ZXJzaW9uXG5cdFx0d3JpdGVMZXZlbHNDaGFubmVsKHdyaXRlciwgaW5mby5yZ2IgfHwgZGVmYXVsdENoYW5uZWwpO1xuXHRcdHdyaXRlTGV2ZWxzQ2hhbm5lbCh3cml0ZXIsIGluZm8ucmVkIHx8IGRlZmF1bHRDaGFubmVsKTtcblx0XHR3cml0ZUxldmVsc0NoYW5uZWwod3JpdGVyLCBpbmZvLmJsdWUgfHwgZGVmYXVsdENoYW5uZWwpO1xuXHRcdHdyaXRlTGV2ZWxzQ2hhbm5lbCh3cml0ZXIsIGluZm8uZ3JlZW4gfHwgZGVmYXVsdENoYW5uZWwpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgNTk7IGkrKykgd3JpdGVMZXZlbHNDaGFubmVsKHdyaXRlciwgZGVmYXVsdENoYW5uZWwpO1xuXHR9LFxuKTtcblxuZnVuY3Rpb24gcmVhZEN1cnZlQ2hhbm5lbChyZWFkZXI6IFBzZFJlYWRlcikge1xuXHRjb25zdCBub2RlcyA9IHJlYWRVaW50MTYocmVhZGVyKTtcblx0Y29uc3QgY2hhbm5lbDogQ3VydmVzQWRqdXN0bWVudENoYW5uZWwgPSBbXTtcblxuXHRmb3IgKGxldCBqID0gMDsgaiA8IG5vZGVzOyBqKyspIHtcblx0XHRjb25zdCBvdXRwdXQgPSByZWFkSW50MTYocmVhZGVyKTtcblx0XHRjb25zdCBpbnB1dCA9IHJlYWRJbnQxNihyZWFkZXIpO1xuXHRcdGNoYW5uZWwucHVzaCh7IGlucHV0LCBvdXRwdXQgfSk7XG5cdH1cblxuXHRyZXR1cm4gY2hhbm5lbDtcbn1cblxuZnVuY3Rpb24gd3JpdGVDdXJ2ZUNoYW5uZWwod3JpdGVyOiBQc2RXcml0ZXIsIGNoYW5uZWw6IEN1cnZlc0FkanVzdG1lbnRDaGFubmVsKSB7XG5cdHdyaXRlVWludDE2KHdyaXRlciwgY2hhbm5lbC5sZW5ndGgpO1xuXG5cdGZvciAoY29uc3QgbiBvZiBjaGFubmVsKSB7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBuLm91dHB1dCk7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBuLmlucHV0KTtcblx0fVxufVxuXG5hZGRIYW5kbGVyKFxuXHQnY3VydicsXG5cdGFkanVzdG1lbnRUeXBlKCdjdXJ2ZXMnKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0cmVhZFVpbnQ4KHJlYWRlcik7XG5cdFx0aWYgKHJlYWRVaW50MTYocmVhZGVyKSAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGN1cnYgdmVyc2lvbicpO1xuXHRcdHJlYWRVaW50MTYocmVhZGVyKTtcblx0XHRjb25zdCBjaGFubmVscyA9IHJlYWRVaW50MTYocmVhZGVyKTtcblx0XHRjb25zdCBpbmZvOiBDdXJ2ZXNBZGp1c3RtZW50ID0geyB0eXBlOiAnY3VydmVzJyB9O1xuXG5cdFx0aWYgKGNoYW5uZWxzICYgMSkgaW5mby5yZ2IgPSByZWFkQ3VydmVDaGFubmVsKHJlYWRlcik7XG5cdFx0aWYgKGNoYW5uZWxzICYgMikgaW5mby5yZWQgPSByZWFkQ3VydmVDaGFubmVsKHJlYWRlcik7XG5cdFx0aWYgKGNoYW5uZWxzICYgNCkgaW5mby5ncmVlbiA9IHJlYWRDdXJ2ZUNoYW5uZWwocmVhZGVyKTtcblx0XHRpZiAoY2hhbm5lbHMgJiA4KSBpbmZvLmJsdWUgPSByZWFkQ3VydmVDaGFubmVsKHJlYWRlcik7XG5cblx0XHR0YXJnZXQuYWRqdXN0bWVudCA9IHtcblx0XHRcdC4uLnRhcmdldC5hZGp1c3RtZW50IGFzIFByZXNldEluZm8sXG5cdFx0XHQuLi5pbmZvLFxuXHRcdH07XG5cblx0XHQvLyBpZ25vcmluZywgZHVwbGljYXRlIGluZm9ybWF0aW9uXG5cdFx0Ly8gY2hlY2tTaWduYXR1cmUocmVhZGVyLCAnQ3J2ICcpO1xuXG5cdFx0Ly8gY29uc3QgY1ZlcnNpb24gPSByZWFkVWludDE2KHJlYWRlcik7XG5cdFx0Ly8gcmVhZFVpbnQxNihyZWFkZXIpO1xuXHRcdC8vIGNvbnN0IGNoYW5uZWxDb3VudCA9IHJlYWRVaW50MTYocmVhZGVyKTtcblxuXHRcdC8vIGZvciAobGV0IGkgPSAwOyBpIDwgY2hhbm5lbENvdW50OyBpKyspIHtcblx0XHQvLyBcdGNvbnN0IGluZGV4ID0gcmVhZFVpbnQxNihyZWFkZXIpO1xuXHRcdC8vIFx0Y29uc3Qgbm9kZXMgPSByZWFkVWludDE2KHJlYWRlcik7XG5cblx0XHQvLyBcdGZvciAobGV0IGogPSAwOyBqIDwgbm9kZXM7IGorKykge1xuXHRcdC8vIFx0XHRjb25zdCBvdXRwdXQgPSByZWFkSW50MTYocmVhZGVyKTtcblx0XHQvLyBcdFx0Y29uc3QgaW5wdXQgPSByZWFkSW50MTYocmVhZGVyKTtcblx0XHQvLyBcdH1cblx0XHQvLyB9XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBpbmZvID0gdGFyZ2V0LmFkanVzdG1lbnQgYXMgQ3VydmVzQWRqdXN0bWVudDtcblx0XHRjb25zdCB7IHJnYiwgcmVkLCBncmVlbiwgYmx1ZSB9ID0gaW5mbztcblx0XHRsZXQgY2hhbm5lbHMgPSAwO1xuXHRcdGxldCBjaGFubmVsQ291bnQgPSAwO1xuXG5cdFx0aWYgKHJnYiAmJiByZ2IubGVuZ3RoKSB7IGNoYW5uZWxzIHw9IDE7IGNoYW5uZWxDb3VudCsrOyB9XG5cdFx0aWYgKHJlZCAmJiByZWQubGVuZ3RoKSB7IGNoYW5uZWxzIHw9IDI7IGNoYW5uZWxDb3VudCsrOyB9XG5cdFx0aWYgKGdyZWVuICYmIGdyZWVuLmxlbmd0aCkgeyBjaGFubmVscyB8PSA0OyBjaGFubmVsQ291bnQrKzsgfVxuXHRcdGlmIChibHVlICYmIGJsdWUubGVuZ3RoKSB7IGNoYW5uZWxzIHw9IDg7IGNoYW5uZWxDb3VudCsrOyB9XG5cblx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgMCk7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCAxKTsgLy8gdmVyc2lvblxuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgMCk7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBjaGFubmVscyk7XG5cblx0XHRpZiAocmdiICYmIHJnYi5sZW5ndGgpIHdyaXRlQ3VydmVDaGFubmVsKHdyaXRlciwgcmdiKTtcblx0XHRpZiAocmVkICYmIHJlZC5sZW5ndGgpIHdyaXRlQ3VydmVDaGFubmVsKHdyaXRlciwgcmVkKTtcblx0XHRpZiAoZ3JlZW4gJiYgZ3JlZW4ubGVuZ3RoKSB3cml0ZUN1cnZlQ2hhbm5lbCh3cml0ZXIsIGdyZWVuKTtcblx0XHRpZiAoYmx1ZSAmJiBibHVlLmxlbmd0aCkgd3JpdGVDdXJ2ZUNoYW5uZWwod3JpdGVyLCBibHVlKTtcblxuXHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgJ0NydiAnKTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIDQpOyAvLyB2ZXJzaW9uXG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCAwKTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIGNoYW5uZWxDb3VudCk7XG5cblx0XHRpZiAocmdiICYmIHJnYi5sZW5ndGgpIHsgd3JpdGVVaW50MTYod3JpdGVyLCAwKTsgd3JpdGVDdXJ2ZUNoYW5uZWwod3JpdGVyLCByZ2IpOyB9XG5cdFx0aWYgKHJlZCAmJiByZWQubGVuZ3RoKSB7IHdyaXRlVWludDE2KHdyaXRlciwgMSk7IHdyaXRlQ3VydmVDaGFubmVsKHdyaXRlciwgcmVkKTsgfVxuXHRcdGlmIChncmVlbiAmJiBncmVlbi5sZW5ndGgpIHsgd3JpdGVVaW50MTYod3JpdGVyLCAyKTsgd3JpdGVDdXJ2ZUNoYW5uZWwod3JpdGVyLCBncmVlbik7IH1cblx0XHRpZiAoYmx1ZSAmJiBibHVlLmxlbmd0aCkgeyB3cml0ZVVpbnQxNih3cml0ZXIsIDMpOyB3cml0ZUN1cnZlQ2hhbm5lbCh3cml0ZXIsIGJsdWUpOyB9XG5cblx0XHR3cml0ZVplcm9zKHdyaXRlciwgMik7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQnZXhwQScsXG5cdGFkanVzdG1lbnRUeXBlKCdleHBvc3VyZScpLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQpID0+IHtcblx0XHRpZiAocmVhZFVpbnQxNihyZWFkZXIpICE9PSAxKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZXhwQSB2ZXJzaW9uJyk7XG5cblx0XHR0YXJnZXQuYWRqdXN0bWVudCA9IHtcblx0XHRcdC4uLnRhcmdldC5hZGp1c3RtZW50IGFzIFByZXNldEluZm8sXG5cdFx0XHR0eXBlOiAnZXhwb3N1cmUnLFxuXHRcdFx0ZXhwb3N1cmU6IHJlYWRGbG9hdDMyKHJlYWRlciksXG5cdFx0XHRvZmZzZXQ6IHJlYWRGbG9hdDMyKHJlYWRlciksXG5cdFx0XHRnYW1tYTogcmVhZEZsb2F0MzIocmVhZGVyKSxcblx0XHR9O1xuXG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgaW5mbyA9IHRhcmdldC5hZGp1c3RtZW50IGFzIEV4cG9zdXJlQWRqdXN0bWVudDtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIDEpOyAvLyB2ZXJzaW9uXG5cdFx0d3JpdGVGbG9hdDMyKHdyaXRlciwgaW5mby5leHBvc3VyZSEpO1xuXHRcdHdyaXRlRmxvYXQzMih3cml0ZXIsIGluZm8ub2Zmc2V0ISk7XG5cdFx0d3JpdGVGbG9hdDMyKHdyaXRlciwgaW5mby5nYW1tYSEpO1xuXHRcdHdyaXRlWmVyb3Mod3JpdGVyLCAyKTtcblx0fSxcbik7XG5cbmludGVyZmFjZSBWaWJyYW5jZURlc2NyaXB0b3Ige1xuXHR2aWJyYW5jZT86IG51bWJlcjtcblx0U3RydD86IG51bWJlcjtcbn1cblxuYWRkSGFuZGxlcihcblx0J3ZpYkEnLFxuXHRhZGp1c3RtZW50VHlwZSgndmlicmFuY2UnKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0Y29uc3QgZGVzYzogVmlicmFuY2VEZXNjcmlwdG9yID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcik7XG5cdFx0dGFyZ2V0LmFkanVzdG1lbnQgPSB7IHR5cGU6ICd2aWJyYW5jZScgfTtcblx0XHRpZiAoZGVzYy52aWJyYW5jZSAhPT0gdW5kZWZpbmVkKSB0YXJnZXQuYWRqdXN0bWVudC52aWJyYW5jZSA9IGRlc2MudmlicmFuY2U7XG5cdFx0aWYgKGRlc2MuU3RydCAhPT0gdW5kZWZpbmVkKSB0YXJnZXQuYWRqdXN0bWVudC5zYXR1cmF0aW9uID0gZGVzYy5TdHJ0O1xuXG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgaW5mbyA9IHRhcmdldC5hZGp1c3RtZW50IGFzIFZpYnJhbmNlQWRqdXN0bWVudDtcblx0XHRjb25zdCBkZXNjOiBWaWJyYW5jZURlc2NyaXB0b3IgPSB7fTtcblx0XHRpZiAoaW5mby52aWJyYW5jZSAhPT0gdW5kZWZpbmVkKSBkZXNjLnZpYnJhbmNlID0gaW5mby52aWJyYW5jZTtcblx0XHRpZiAoaW5mby5zYXR1cmF0aW9uICE9PSB1bmRlZmluZWQpIGRlc2MuU3RydCA9IGluZm8uc2F0dXJhdGlvbjtcblxuXHRcdHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgJ251bGwnLCBkZXNjKTtcblx0fSxcbik7XG5cbmZ1bmN0aW9uIHJlYWRIdWVDaGFubmVsKHJlYWRlcjogUHNkUmVhZGVyKTogSHVlU2F0dXJhdGlvbkFkanVzdG1lbnRDaGFubmVsIHtcblx0cmV0dXJuIHtcblx0XHRhOiByZWFkSW50MTYocmVhZGVyKSxcblx0XHRiOiByZWFkSW50MTYocmVhZGVyKSxcblx0XHRjOiByZWFkSW50MTYocmVhZGVyKSxcblx0XHRkOiByZWFkSW50MTYocmVhZGVyKSxcblx0XHRodWU6IHJlYWRJbnQxNihyZWFkZXIpLFxuXHRcdHNhdHVyYXRpb246IHJlYWRJbnQxNihyZWFkZXIpLFxuXHRcdGxpZ2h0bmVzczogcmVhZEludDE2KHJlYWRlciksXG5cdH07XG59XG5cbmZ1bmN0aW9uIHdyaXRlSHVlQ2hhbm5lbCh3cml0ZXI6IFBzZFdyaXRlciwgY2hhbm5lbDogSHVlU2F0dXJhdGlvbkFkanVzdG1lbnRDaGFubmVsIHwgdW5kZWZpbmVkKSB7XG5cdGNvbnN0IGMgPSBjaGFubmVsIHx8IHt9IGFzIFBhcnRpYWw8SHVlU2F0dXJhdGlvbkFkanVzdG1lbnRDaGFubmVsPjtcblx0d3JpdGVJbnQxNih3cml0ZXIsIGMuYSB8fCAwKTtcblx0d3JpdGVJbnQxNih3cml0ZXIsIGMuYiB8fCAwKTtcblx0d3JpdGVJbnQxNih3cml0ZXIsIGMuYyB8fCAwKTtcblx0d3JpdGVJbnQxNih3cml0ZXIsIGMuZCB8fCAwKTtcblx0d3JpdGVJbnQxNih3cml0ZXIsIGMuaHVlIHx8IDApO1xuXHR3cml0ZUludDE2KHdyaXRlciwgYy5zYXR1cmF0aW9uIHx8IDApO1xuXHR3cml0ZUludDE2KHdyaXRlciwgYy5saWdodG5lc3MgfHwgMCk7XG59XG5cbmFkZEhhbmRsZXIoXG5cdCdodWUyJyxcblx0YWRqdXN0bWVudFR5cGUoJ2h1ZS9zYXR1cmF0aW9uJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdGlmIChyZWFkVWludDE2KHJlYWRlcikgIT09IDIpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBodWUyIHZlcnNpb24nKTtcblxuXHRcdHRhcmdldC5hZGp1c3RtZW50ID0ge1xuXHRcdFx0Li4udGFyZ2V0LmFkanVzdG1lbnQgYXMgUHJlc2V0SW5mbyxcblx0XHRcdHR5cGU6ICdodWUvc2F0dXJhdGlvbicsXG5cdFx0XHRtYXN0ZXI6IHJlYWRIdWVDaGFubmVsKHJlYWRlciksXG5cdFx0XHRyZWRzOiByZWFkSHVlQ2hhbm5lbChyZWFkZXIpLFxuXHRcdFx0eWVsbG93czogcmVhZEh1ZUNoYW5uZWwocmVhZGVyKSxcblx0XHRcdGdyZWVuczogcmVhZEh1ZUNoYW5uZWwocmVhZGVyKSxcblx0XHRcdGN5YW5zOiByZWFkSHVlQ2hhbm5lbChyZWFkZXIpLFxuXHRcdFx0Ymx1ZXM6IHJlYWRIdWVDaGFubmVsKHJlYWRlciksXG5cdFx0XHRtYWdlbnRhczogcmVhZEh1ZUNoYW5uZWwocmVhZGVyKSxcblx0XHR9O1xuXG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgaW5mbyA9IHRhcmdldC5hZGp1c3RtZW50IGFzIEh1ZVNhdHVyYXRpb25BZGp1c3RtZW50O1xuXG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCAyKTsgLy8gdmVyc2lvblxuXHRcdHdyaXRlSHVlQ2hhbm5lbCh3cml0ZXIsIGluZm8ubWFzdGVyKTtcblx0XHR3cml0ZUh1ZUNoYW5uZWwod3JpdGVyLCBpbmZvLnJlZHMpO1xuXHRcdHdyaXRlSHVlQ2hhbm5lbCh3cml0ZXIsIGluZm8ueWVsbG93cyk7XG5cdFx0d3JpdGVIdWVDaGFubmVsKHdyaXRlciwgaW5mby5ncmVlbnMpO1xuXHRcdHdyaXRlSHVlQ2hhbm5lbCh3cml0ZXIsIGluZm8uY3lhbnMpO1xuXHRcdHdyaXRlSHVlQ2hhbm5lbCh3cml0ZXIsIGluZm8uYmx1ZXMpO1xuXHRcdHdyaXRlSHVlQ2hhbm5lbCh3cml0ZXIsIGluZm8ubWFnZW50YXMpO1xuXHR9LFxuKTtcblxuZnVuY3Rpb24gcmVhZENvbG9yQmFsYW5jZShyZWFkZXI6IFBzZFJlYWRlcik6IENvbG9yQmFsYW5jZVZhbHVlcyB7XG5cdHJldHVybiB7XG5cdFx0Y3lhblJlZDogcmVhZEludDE2KHJlYWRlciksXG5cdFx0bWFnZW50YUdyZWVuOiByZWFkSW50MTYocmVhZGVyKSxcblx0XHR5ZWxsb3dCbHVlOiByZWFkSW50MTYocmVhZGVyKSxcblx0fTtcbn1cblxuZnVuY3Rpb24gd3JpdGVDb2xvckJhbGFuY2Uod3JpdGVyOiBQc2RXcml0ZXIsIHZhbHVlOiBQYXJ0aWFsPENvbG9yQmFsYW5jZVZhbHVlcz4pIHtcblx0d3JpdGVJbnQxNih3cml0ZXIsIHZhbHVlLmN5YW5SZWQgfHwgMCk7XG5cdHdyaXRlSW50MTYod3JpdGVyLCB2YWx1ZS5tYWdlbnRhR3JlZW4gfHwgMCk7XG5cdHdyaXRlSW50MTYod3JpdGVyLCB2YWx1ZS55ZWxsb3dCbHVlIHx8IDApO1xufVxuXG5hZGRIYW5kbGVyKFxuXHQnYmxuYycsXG5cdGFkanVzdG1lbnRUeXBlKCdjb2xvciBiYWxhbmNlJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdHRhcmdldC5hZGp1c3RtZW50ID0ge1xuXHRcdFx0dHlwZTogJ2NvbG9yIGJhbGFuY2UnLFxuXHRcdFx0c2hhZG93czogcmVhZENvbG9yQmFsYW5jZShyZWFkZXIpLFxuXHRcdFx0bWlkdG9uZXM6IHJlYWRDb2xvckJhbGFuY2UocmVhZGVyKSxcblx0XHRcdGhpZ2hsaWdodHM6IHJlYWRDb2xvckJhbGFuY2UocmVhZGVyKSxcblx0XHRcdHByZXNlcnZlTHVtaW5vc2l0eTogISFyZWFkVWludDgocmVhZGVyKSxcblx0XHR9O1xuXG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgaW5mbyA9IHRhcmdldC5hZGp1c3RtZW50IGFzIENvbG9yQmFsYW5jZUFkanVzdG1lbnQ7XG5cdFx0d3JpdGVDb2xvckJhbGFuY2Uod3JpdGVyLCBpbmZvLnNoYWRvd3MgfHwge30pO1xuXHRcdHdyaXRlQ29sb3JCYWxhbmNlKHdyaXRlciwgaW5mby5taWR0b25lcyB8fCB7fSk7XG5cdFx0d3JpdGVDb2xvckJhbGFuY2Uod3JpdGVyLCBpbmZvLmhpZ2hsaWdodHMgfHwge30pO1xuXHRcdHdyaXRlVWludDgod3JpdGVyLCBpbmZvLnByZXNlcnZlTHVtaW5vc2l0eSA/IDEgOiAwKTtcblx0XHR3cml0ZVplcm9zKHdyaXRlciwgMSk7XG5cdH0sXG4pO1xuXG5pbnRlcmZhY2UgQmxhY2tBbmRXaGl0ZURlc2NyaXB0b3Ige1xuXHQnUmQgICc6IG51bWJlcjtcblx0WWxsdzogbnVtYmVyO1xuXHQnR3JuICc6IG51bWJlcjtcblx0J0N5biAnOiBudW1iZXI7XG5cdCdCbCAgJzogbnVtYmVyO1xuXHRNZ250OiBudW1iZXI7XG5cdHVzZVRpbnQ6IGJvb2xlYW47XG5cdHRpbnRDb2xvcj86IERlc2NyaXB0b3JDb2xvcjtcblx0YndQcmVzZXRLaW5kOiBudW1iZXI7XG5cdGJsYWNrQW5kV2hpdGVQcmVzZXRGaWxlTmFtZTogc3RyaW5nO1xufVxuXG5hZGRIYW5kbGVyKFxuXHQnYmx3aCcsXG5cdGFkanVzdG1lbnRUeXBlKCdibGFjayAmIHdoaXRlJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdGNvbnN0IGRlc2M6IEJsYWNrQW5kV2hpdGVEZXNjcmlwdG9yID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcik7XG5cdFx0dGFyZ2V0LmFkanVzdG1lbnQgPSB7XG5cdFx0XHR0eXBlOiAnYmxhY2sgJiB3aGl0ZScsXG5cdFx0XHRyZWRzOiBkZXNjWydSZCAgJ10sXG5cdFx0XHR5ZWxsb3dzOiBkZXNjLllsbHcsXG5cdFx0XHRncmVlbnM6IGRlc2NbJ0dybiAnXSxcblx0XHRcdGN5YW5zOiBkZXNjWydDeW4gJ10sXG5cdFx0XHRibHVlczogZGVzY1snQmwgICddLFxuXHRcdFx0bWFnZW50YXM6IGRlc2MuTWdudCxcblx0XHRcdHVzZVRpbnQ6ICEhZGVzYy51c2VUaW50LFxuXHRcdFx0cHJlc2V0S2luZDogZGVzYy5id1ByZXNldEtpbmQsXG5cdFx0XHRwcmVzZXRGaWxlTmFtZTogZGVzYy5ibGFja0FuZFdoaXRlUHJlc2V0RmlsZU5hbWUsXG5cdFx0fTtcblxuXHRcdGlmIChkZXNjLnRpbnRDb2xvciAhPT0gdW5kZWZpbmVkKSB0YXJnZXQuYWRqdXN0bWVudC50aW50Q29sb3IgPSBwYXJzZUNvbG9yKGRlc2MudGludENvbG9yKTtcblxuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGluZm8gPSB0YXJnZXQuYWRqdXN0bWVudCBhcyBCbGFja0FuZFdoaXRlQWRqdXN0bWVudDtcblx0XHRjb25zdCBkZXNjOiBCbGFja0FuZFdoaXRlRGVzY3JpcHRvciA9IHtcblx0XHRcdCdSZCAgJzogaW5mby5yZWRzIHx8IDAsXG5cdFx0XHRZbGx3OiBpbmZvLnllbGxvd3MgfHwgMCxcblx0XHRcdCdHcm4gJzogaW5mby5ncmVlbnMgfHwgMCxcblx0XHRcdCdDeW4gJzogaW5mby5jeWFucyB8fCAwLFxuXHRcdFx0J0JsICAnOiBpbmZvLmJsdWVzIHx8IDAsXG5cdFx0XHRNZ250OiBpbmZvLm1hZ2VudGFzIHx8IDAsXG5cdFx0XHR1c2VUaW50OiAhIWluZm8udXNlVGludCxcblx0XHRcdHRpbnRDb2xvcjogc2VyaWFsaXplQ29sb3IoaW5mby50aW50Q29sb3IpLFxuXHRcdFx0YndQcmVzZXRLaW5kOiBpbmZvLnByZXNldEtpbmQgfHwgMCxcblx0XHRcdGJsYWNrQW5kV2hpdGVQcmVzZXRGaWxlTmFtZTogaW5mby5wcmVzZXRGaWxlTmFtZSB8fCAnJyxcblx0XHR9O1xuXG5cdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAnbnVsbCcsIGRlc2MpO1xuXHR9LFxuKTtcblxuYWRkSGFuZGxlcihcblx0J3BoZmwnLFxuXHRhZGp1c3RtZW50VHlwZSgncGhvdG8gZmlsdGVyJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdGNvbnN0IHZlcnNpb24gPSByZWFkVWludDE2KHJlYWRlcik7XG5cdFx0aWYgKHZlcnNpb24gIT09IDIgJiYgdmVyc2lvbiAhPT0gMykgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHBoZmwgdmVyc2lvbicpO1xuXG5cdFx0bGV0IGNvbG9yOiBDb2xvcjtcblxuXHRcdGlmICh2ZXJzaW9uID09PSAyKSB7XG5cdFx0XHRjb2xvciA9IHJlYWRDb2xvcihyZWFkZXIpO1xuXHRcdH0gZWxzZSB7IC8vIHZlcnNpb24gM1xuXHRcdFx0Ly8gVE9ETzogdGVzdCB0aGlzLCB0aGlzIGlzIHByb2JhYmx5IHdyb25nXG5cdFx0XHRjb2xvciA9IHtcblx0XHRcdFx0bDogcmVhZEludDMyKHJlYWRlcikgLyAxMDAsXG5cdFx0XHRcdGE6IHJlYWRJbnQzMihyZWFkZXIpIC8gMTAwLFxuXHRcdFx0XHRiOiByZWFkSW50MzIocmVhZGVyKSAvIDEwMCxcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0dGFyZ2V0LmFkanVzdG1lbnQgPSB7XG5cdFx0XHR0eXBlOiAncGhvdG8gZmlsdGVyJyxcblx0XHRcdGNvbG9yLFxuXHRcdFx0ZGVuc2l0eTogcmVhZFVpbnQzMihyZWFkZXIpIC8gMTAwLFxuXHRcdFx0cHJlc2VydmVMdW1pbm9zaXR5OiAhIXJlYWRVaW50OChyZWFkZXIpLFxuXHRcdH07XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBpbmZvID0gdGFyZ2V0LmFkanVzdG1lbnQgYXMgUGhvdG9GaWx0ZXJBZGp1c3RtZW50O1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgMik7IC8vIHZlcnNpb25cblx0XHR3cml0ZUNvbG9yKHdyaXRlciwgaW5mby5jb2xvciB8fCB7IGw6IDAsIGE6IDAsIGI6IDAgfSk7XG5cdFx0d3JpdGVVaW50MzIod3JpdGVyLCAoaW5mby5kZW5zaXR5IHx8IDApICogMTAwKTtcblx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgaW5mby5wcmVzZXJ2ZUx1bWlub3NpdHkgPyAxIDogMCk7XG5cdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDMpO1xuXHR9LFxuKTtcblxuZnVuY3Rpb24gcmVhZE1peHJDaGFubmVsKHJlYWRlcjogUHNkUmVhZGVyKTogQ2hhbm5lbE1peGVyQ2hhbm5lbCB7XG5cdGNvbnN0IHJlZCA9IHJlYWRJbnQxNihyZWFkZXIpO1xuXHRjb25zdCBncmVlbiA9IHJlYWRJbnQxNihyZWFkZXIpO1xuXHRjb25zdCBibHVlID0gcmVhZEludDE2KHJlYWRlcik7XG5cdHNraXBCeXRlcyhyZWFkZXIsIDIpO1xuXHRjb25zdCBjb25zdGFudCA9IHJlYWRJbnQxNihyZWFkZXIpO1xuXHRyZXR1cm4geyByZWQsIGdyZWVuLCBibHVlLCBjb25zdGFudCB9O1xufVxuXG5mdW5jdGlvbiB3cml0ZU1peHJDaGFubmVsKHdyaXRlcjogUHNkV3JpdGVyLCBjaGFubmVsOiBDaGFubmVsTWl4ZXJDaGFubmVsIHwgdW5kZWZpbmVkKSB7XG5cdGNvbnN0IGMgPSBjaGFubmVsIHx8IHt9IGFzIFBhcnRpYWw8Q2hhbm5lbE1peGVyQ2hhbm5lbD47XG5cdHdyaXRlSW50MTYod3JpdGVyLCBjLnJlZCEpO1xuXHR3cml0ZUludDE2KHdyaXRlciwgYy5ncmVlbiEpO1xuXHR3cml0ZUludDE2KHdyaXRlciwgYy5ibHVlISk7XG5cdHdyaXRlWmVyb3Mod3JpdGVyLCAyKTtcblx0d3JpdGVJbnQxNih3cml0ZXIsIGMuY29uc3RhbnQhKTtcbn1cblxuYWRkSGFuZGxlcihcblx0J21peHInLFxuXHRhZGp1c3RtZW50VHlwZSgnY2hhbm5lbCBtaXhlcicpLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQpID0+IHtcblx0XHRpZiAocmVhZFVpbnQxNihyZWFkZXIpICE9PSAxKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbWl4ciB2ZXJzaW9uJyk7XG5cblx0XHRjb25zdCBhZGp1c3RtZW50OiBDaGFubmVsTWl4ZXJBZGp1c3RtZW50ID0gdGFyZ2V0LmFkanVzdG1lbnQgPSB7XG5cdFx0XHQuLi50YXJnZXQuYWRqdXN0bWVudCBhcyBQcmVzZXRJbmZvLFxuXHRcdFx0dHlwZTogJ2NoYW5uZWwgbWl4ZXInLFxuXHRcdFx0bW9ub2Nocm9tZTogISFyZWFkVWludDE2KHJlYWRlciksXG5cdFx0fTtcblxuXHRcdGlmICghYWRqdXN0bWVudC5tb25vY2hyb21lKSB7XG5cdFx0XHRhZGp1c3RtZW50LnJlZCA9IHJlYWRNaXhyQ2hhbm5lbChyZWFkZXIpO1xuXHRcdFx0YWRqdXN0bWVudC5ncmVlbiA9IHJlYWRNaXhyQ2hhbm5lbChyZWFkZXIpO1xuXHRcdFx0YWRqdXN0bWVudC5ibHVlID0gcmVhZE1peHJDaGFubmVsKHJlYWRlcik7XG5cdFx0fVxuXG5cdFx0YWRqdXN0bWVudC5ncmF5ID0gcmVhZE1peHJDaGFubmVsKHJlYWRlcik7XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBpbmZvID0gdGFyZ2V0LmFkanVzdG1lbnQgYXMgQ2hhbm5lbE1peGVyQWRqdXN0bWVudDtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIDEpOyAvLyB2ZXJzaW9uXG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBpbmZvLm1vbm9jaHJvbWUgPyAxIDogMCk7XG5cblx0XHRpZiAoaW5mby5tb25vY2hyb21lKSB7XG5cdFx0XHR3cml0ZU1peHJDaGFubmVsKHdyaXRlciwgaW5mby5ncmF5KTtcblx0XHRcdHdyaXRlWmVyb3Mod3JpdGVyLCAzICogNSAqIDIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR3cml0ZU1peHJDaGFubmVsKHdyaXRlciwgaW5mby5yZWQpO1xuXHRcdFx0d3JpdGVNaXhyQ2hhbm5lbCh3cml0ZXIsIGluZm8uZ3JlZW4pO1xuXHRcdFx0d3JpdGVNaXhyQ2hhbm5lbCh3cml0ZXIsIGluZm8uYmx1ZSk7XG5cdFx0XHR3cml0ZU1peHJDaGFubmVsKHdyaXRlciwgaW5mby5ncmF5KTtcblx0XHR9XG5cdH0sXG4pO1xuXG5jb25zdCBjb2xvckxvb2t1cFR5cGUgPSBjcmVhdGVFbnVtPCczZGx1dCcgfCAnYWJzdHJhY3RQcm9maWxlJyB8ICdkZXZpY2VMaW5rUHJvZmlsZSc+KCdjb2xvckxvb2t1cFR5cGUnLCAnM0RMVVQnLCB7XG5cdCczZGx1dCc6ICczRExVVCcsXG5cdGFic3RyYWN0UHJvZmlsZTogJ2Fic3RyYWN0UHJvZmlsZScsXG5cdGRldmljZUxpbmtQcm9maWxlOiAnZGV2aWNlTGlua1Byb2ZpbGUnLFxufSk7XG5cbmNvbnN0IExVVEZvcm1hdFR5cGUgPSBjcmVhdGVFbnVtPCdsb29rJyB8ICdjdWJlJyB8ICczZGwnPignTFVURm9ybWF0VHlwZScsICdsb29rJywge1xuXHRsb29rOiAnTFVURm9ybWF0TE9PSycsXG5cdGN1YmU6ICdMVVRGb3JtYXRDVUJFJyxcblx0JzNkbCc6ICdMVVRGb3JtYXQzREwnLFxufSk7XG5cbmNvbnN0IGNvbG9yTG9va3VwT3JkZXIgPSBjcmVhdGVFbnVtPCdyZ2InIHwgJ2Jncic+KCdjb2xvckxvb2t1cE9yZGVyJywgJ3JnYicsIHtcblx0cmdiOiAncmdiT3JkZXInLFxuXHRiZ3I6ICdiZ3JPcmRlcicsXG59KTtcblxuaW50ZXJmYWNlIENvbG9yTG9va3VwRGVzY3JpcHRvciB7XG5cdGxvb2t1cFR5cGU/OiBzdHJpbmc7XG5cdCdObSAgJz86IHN0cmluZztcblx0RHRocj86IGJvb2xlYW47XG5cdHByb2ZpbGU/OiBVaW50OEFycmF5O1xuXHRMVVRGb3JtYXQ/OiBzdHJpbmc7XG5cdGRhdGFPcmRlcj86IHN0cmluZztcblx0dGFibGVPcmRlcj86IHN0cmluZztcblx0TFVUM0RGaWxlRGF0YT86IFVpbnQ4QXJyYXk7XG5cdExVVDNERmlsZU5hbWU/OiBzdHJpbmc7XG59XG5cbmFkZEhhbmRsZXIoXG5cdCdjbHJMJyxcblx0YWRqdXN0bWVudFR5cGUoJ2NvbG9yIGxvb2t1cCcpLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQpID0+IHtcblx0XHRpZiAocmVhZFVpbnQxNihyZWFkZXIpICE9PSAxKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY2xyTCB2ZXJzaW9uJyk7XG5cblx0XHRjb25zdCBkZXNjOiBDb2xvckxvb2t1cERlc2NyaXB0b3IgPSByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyKTtcblx0XHR0YXJnZXQuYWRqdXN0bWVudCA9IHsgdHlwZTogJ2NvbG9yIGxvb2t1cCcgfTtcblx0XHRjb25zdCBpbmZvID0gdGFyZ2V0LmFkanVzdG1lbnQ7XG5cblx0XHRpZiAoZGVzYy5sb29rdXBUeXBlICE9PSB1bmRlZmluZWQpIGluZm8ubG9va3VwVHlwZSA9IGNvbG9yTG9va3VwVHlwZS5kZWNvZGUoZGVzYy5sb29rdXBUeXBlKTtcblx0XHRpZiAoZGVzY1snTm0gICddICE9PSB1bmRlZmluZWQpIGluZm8ubmFtZSA9IGRlc2NbJ05tICAnXTtcblx0XHRpZiAoZGVzYy5EdGhyICE9PSB1bmRlZmluZWQpIGluZm8uZGl0aGVyID0gZGVzYy5EdGhyO1xuXHRcdGlmIChkZXNjLnByb2ZpbGUgIT09IHVuZGVmaW5lZCkgaW5mby5wcm9maWxlID0gZGVzYy5wcm9maWxlO1xuXHRcdGlmIChkZXNjLkxVVEZvcm1hdCAhPT0gdW5kZWZpbmVkKSBpbmZvLmx1dEZvcm1hdCA9IExVVEZvcm1hdFR5cGUuZGVjb2RlKGRlc2MuTFVURm9ybWF0KTtcblx0XHRpZiAoZGVzYy5kYXRhT3JkZXIgIT09IHVuZGVmaW5lZCkgaW5mby5kYXRhT3JkZXIgPSBjb2xvckxvb2t1cE9yZGVyLmRlY29kZShkZXNjLmRhdGFPcmRlcik7XG5cdFx0aWYgKGRlc2MudGFibGVPcmRlciAhPT0gdW5kZWZpbmVkKSBpbmZvLnRhYmxlT3JkZXIgPSBjb2xvckxvb2t1cE9yZGVyLmRlY29kZShkZXNjLnRhYmxlT3JkZXIpO1xuXHRcdGlmIChkZXNjLkxVVDNERmlsZURhdGEgIT09IHVuZGVmaW5lZCkgaW5mby5sdXQzREZpbGVEYXRhID0gZGVzYy5MVVQzREZpbGVEYXRhO1xuXHRcdGlmIChkZXNjLkxVVDNERmlsZU5hbWUgIT09IHVuZGVmaW5lZCkgaW5mby5sdXQzREZpbGVOYW1lID0gZGVzYy5MVVQzREZpbGVOYW1lO1xuXG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgaW5mbyA9IHRhcmdldC5hZGp1c3RtZW50IGFzIENvbG9yTG9va3VwQWRqdXN0bWVudDtcblx0XHRjb25zdCBkZXNjOiBDb2xvckxvb2t1cERlc2NyaXB0b3IgPSB7fTtcblxuXHRcdGlmIChpbmZvLmxvb2t1cFR5cGUgIT09IHVuZGVmaW5lZCkgZGVzYy5sb29rdXBUeXBlID0gY29sb3JMb29rdXBUeXBlLmVuY29kZShpbmZvLmxvb2t1cFR5cGUpO1xuXHRcdGlmIChpbmZvLm5hbWUgIT09IHVuZGVmaW5lZCkgZGVzY1snTm0gICddID0gaW5mby5uYW1lO1xuXHRcdGlmIChpbmZvLmRpdGhlciAhPT0gdW5kZWZpbmVkKSBkZXNjLkR0aHIgPSBpbmZvLmRpdGhlcjtcblx0XHRpZiAoaW5mby5wcm9maWxlICE9PSB1bmRlZmluZWQpIGRlc2MucHJvZmlsZSA9IGluZm8ucHJvZmlsZTtcblx0XHRpZiAoaW5mby5sdXRGb3JtYXQgIT09IHVuZGVmaW5lZCkgZGVzYy5MVVRGb3JtYXQgPSBMVVRGb3JtYXRUeXBlLmVuY29kZShpbmZvLmx1dEZvcm1hdCk7XG5cdFx0aWYgKGluZm8uZGF0YU9yZGVyICE9PSB1bmRlZmluZWQpIGRlc2MuZGF0YU9yZGVyID0gY29sb3JMb29rdXBPcmRlci5lbmNvZGUoaW5mby5kYXRhT3JkZXIpO1xuXHRcdGlmIChpbmZvLnRhYmxlT3JkZXIgIT09IHVuZGVmaW5lZCkgZGVzYy50YWJsZU9yZGVyID0gY29sb3JMb29rdXBPcmRlci5lbmNvZGUoaW5mby50YWJsZU9yZGVyKTtcblx0XHRpZiAoaW5mby5sdXQzREZpbGVEYXRhICE9PSB1bmRlZmluZWQpIGRlc2MuTFVUM0RGaWxlRGF0YSA9IGluZm8ubHV0M0RGaWxlRGF0YTtcblx0XHRpZiAoaW5mby5sdXQzREZpbGVOYW1lICE9PSB1bmRlZmluZWQpIGRlc2MuTFVUM0RGaWxlTmFtZSA9IGluZm8ubHV0M0RGaWxlTmFtZTtcblxuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgMSk7IC8vIHZlcnNpb25cblx0XHR3cml0ZVZlcnNpb25BbmREZXNjcmlwdG9yKHdyaXRlciwgJycsICdudWxsJywgZGVzYyk7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQnbnZydCcsXG5cdGFkanVzdG1lbnRUeXBlKCdpbnZlcnQnKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0dGFyZ2V0LmFkanVzdG1lbnQgPSB7IHR5cGU6ICdpbnZlcnQnIH07XG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KCkgPT4ge1xuXHRcdC8vIG5vdGhpbmcgdG8gd3JpdGUgaGVyZVxuXHR9LFxuKTtcblxuYWRkSGFuZGxlcihcblx0J3Bvc3QnLFxuXHRhZGp1c3RtZW50VHlwZSgncG9zdGVyaXplJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdHRhcmdldC5hZGp1c3RtZW50ID0ge1xuXHRcdFx0dHlwZTogJ3Bvc3Rlcml6ZScsXG5cdFx0XHRsZXZlbHM6IHJlYWRVaW50MTYocmVhZGVyKSxcblx0XHR9O1xuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGluZm8gPSB0YXJnZXQuYWRqdXN0bWVudCBhcyBQb3N0ZXJpemVBZGp1c3RtZW50O1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgaW5mby5sZXZlbHMgPz8gNCk7XG5cdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDIpO1xuXHR9LFxuKTtcblxuYWRkSGFuZGxlcihcblx0J3RocnMnLFxuXHRhZGp1c3RtZW50VHlwZSgndGhyZXNob2xkJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdHRhcmdldC5hZGp1c3RtZW50ID0ge1xuXHRcdFx0dHlwZTogJ3RocmVzaG9sZCcsXG5cdFx0XHRsZXZlbDogcmVhZFVpbnQxNihyZWFkZXIpLFxuXHRcdH07XG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgaW5mbyA9IHRhcmdldC5hZGp1c3RtZW50IGFzIFRocmVzaG9sZEFkanVzdG1lbnQ7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBpbmZvLmxldmVsID8/IDEyOCk7XG5cdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDIpO1xuXHR9LFxuKTtcblxuY29uc3QgZ3JkbUNvbG9yTW9kZWxzID0gWycnLCAnJywgJycsICdyZ2InLCAnaHNiJywgJycsICdsYWInXTtcblxuYWRkSGFuZGxlcihcblx0J2dyZG0nLFxuXHRhZGp1c3RtZW50VHlwZSgnZ3JhZGllbnQgbWFwJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdGlmIChyZWFkVWludDE2KHJlYWRlcikgIT09IDEpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBncmRtIHZlcnNpb24nKTtcblxuXHRcdGNvbnN0IGluZm86IEdyYWRpZW50TWFwQWRqdXN0bWVudCA9IHtcblx0XHRcdHR5cGU6ICdncmFkaWVudCBtYXAnLFxuXHRcdFx0Z3JhZGllbnRUeXBlOiAnc29saWQnLFxuXHRcdH07XG5cblx0XHRpbmZvLnJldmVyc2UgPSAhIXJlYWRVaW50OChyZWFkZXIpO1xuXHRcdGluZm8uZGl0aGVyID0gISFyZWFkVWludDgocmVhZGVyKTtcblx0XHRpbmZvLm5hbWUgPSByZWFkVW5pY29kZVN0cmluZyhyZWFkZXIpO1xuXHRcdGluZm8uY29sb3JTdG9wcyA9IFtdO1xuXHRcdGluZm8ub3BhY2l0eVN0b3BzID0gW107XG5cblx0XHRjb25zdCBzdG9wc0NvdW50ID0gcmVhZFVpbnQxNihyZWFkZXIpO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzdG9wc0NvdW50OyBpKyspIHtcblx0XHRcdGluZm8uY29sb3JTdG9wcy5wdXNoKHtcblx0XHRcdFx0bG9jYXRpb246IHJlYWRVaW50MzIocmVhZGVyKSxcblx0XHRcdFx0bWlkcG9pbnQ6IHJlYWRVaW50MzIocmVhZGVyKSAvIDEwMCxcblx0XHRcdFx0Y29sb3I6IHJlYWRDb2xvcihyZWFkZXIpLFxuXHRcdFx0fSk7XG5cdFx0XHRza2lwQnl0ZXMocmVhZGVyLCAyKTtcblx0XHR9XG5cblx0XHRjb25zdCBvcGFjaXR5U3RvcHNDb3VudCA9IHJlYWRVaW50MTYocmVhZGVyKTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgb3BhY2l0eVN0b3BzQ291bnQ7IGkrKykge1xuXHRcdFx0aW5mby5vcGFjaXR5U3RvcHMucHVzaCh7XG5cdFx0XHRcdGxvY2F0aW9uOiByZWFkVWludDMyKHJlYWRlciksXG5cdFx0XHRcdG1pZHBvaW50OiByZWFkVWludDMyKHJlYWRlcikgLyAxMDAsXG5cdFx0XHRcdG9wYWNpdHk6IHJlYWRVaW50MTYocmVhZGVyKSAvIDB4ZmYsXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRjb25zdCBleHBhbnNpb25Db3VudCA9IHJlYWRVaW50MTYocmVhZGVyKTtcblx0XHRpZiAoZXhwYW5zaW9uQ291bnQgIT09IDIpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBncmRtIGV4cGFuc2lvbiBjb3VudCcpO1xuXG5cdFx0Y29uc3QgaW50ZXJwb2xhdGlvbiA9IHJlYWRVaW50MTYocmVhZGVyKTtcblx0XHRpbmZvLnNtb290aG5lc3MgPSBpbnRlcnBvbGF0aW9uIC8gNDA5NjtcblxuXHRcdGNvbnN0IGxlbmd0aCA9IHJlYWRVaW50MTYocmVhZGVyKTtcblx0XHRpZiAobGVuZ3RoICE9PSAzMikgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGdyZG0gbGVuZ3RoJyk7XG5cblx0XHRpbmZvLmdyYWRpZW50VHlwZSA9IHJlYWRVaW50MTYocmVhZGVyKSA/ICdub2lzZScgOiAnc29saWQnO1xuXHRcdGluZm8ucmFuZG9tU2VlZCA9IHJlYWRVaW50MzIocmVhZGVyKTtcblx0XHRpbmZvLmFkZFRyYW5zcGFyZW5jeSA9ICEhcmVhZFVpbnQxNihyZWFkZXIpO1xuXHRcdGluZm8ucmVzdHJpY3RDb2xvcnMgPSAhIXJlYWRVaW50MTYocmVhZGVyKTtcblx0XHRpbmZvLnJvdWdobmVzcyA9IHJlYWRVaW50MzIocmVhZGVyKSAvIDQwOTY7XG5cdFx0aW5mby5jb2xvck1vZGVsID0gKGdyZG1Db2xvck1vZGVsc1tyZWFkVWludDE2KHJlYWRlcildIHx8ICdyZ2InKSBhcyAncmdiJyB8ICdoc2InIHwgJ2xhYic7XG5cblx0XHRpbmZvLm1pbiA9IFtcblx0XHRcdHJlYWRVaW50MTYocmVhZGVyKSAvIDB4ODAwMCxcblx0XHRcdHJlYWRVaW50MTYocmVhZGVyKSAvIDB4ODAwMCxcblx0XHRcdHJlYWRVaW50MTYocmVhZGVyKSAvIDB4ODAwMCxcblx0XHRcdHJlYWRVaW50MTYocmVhZGVyKSAvIDB4ODAwMCxcblx0XHRdO1xuXG5cdFx0aW5mby5tYXggPSBbXG5cdFx0XHRyZWFkVWludDE2KHJlYWRlcikgLyAweDgwMDAsXG5cdFx0XHRyZWFkVWludDE2KHJlYWRlcikgLyAweDgwMDAsXG5cdFx0XHRyZWFkVWludDE2KHJlYWRlcikgLyAweDgwMDAsXG5cdFx0XHRyZWFkVWludDE2KHJlYWRlcikgLyAweDgwMDAsXG5cdFx0XTtcblxuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cblx0XHRmb3IgKGNvbnN0IHMgb2YgaW5mby5jb2xvclN0b3BzKSBzLmxvY2F0aW9uIC89IGludGVycG9sYXRpb247XG5cdFx0Zm9yIChjb25zdCBzIG9mIGluZm8ub3BhY2l0eVN0b3BzKSBzLmxvY2F0aW9uIC89IGludGVycG9sYXRpb247XG5cblx0XHR0YXJnZXQuYWRqdXN0bWVudCA9IGluZm87XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGluZm8gPSB0YXJnZXQuYWRqdXN0bWVudCBhcyBHcmFkaWVudE1hcEFkanVzdG1lbnQ7XG5cblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIDEpOyAvLyB2ZXJzaW9uXG5cdFx0d3JpdGVVaW50OCh3cml0ZXIsIGluZm8ucmV2ZXJzZSA/IDEgOiAwKTtcblx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgaW5mby5kaXRoZXIgPyAxIDogMCk7XG5cdFx0d3JpdGVVbmljb2RlU3RyaW5nV2l0aFBhZGRpbmcod3JpdGVyLCBpbmZvLm5hbWUgfHwgJycpO1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgaW5mby5jb2xvclN0b3BzICYmIGluZm8uY29sb3JTdG9wcy5sZW5ndGggfHwgMCk7XG5cblx0XHRjb25zdCBpbnRlcnBvbGF0aW9uID0gTWF0aC5yb3VuZCgoaW5mby5zbW9vdGhuZXNzID8/IDEpICogNDA5Nik7XG5cblx0XHRmb3IgKGNvbnN0IHMgb2YgaW5mby5jb2xvclN0b3BzIHx8IFtdKSB7XG5cdFx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIE1hdGgucm91bmQocy5sb2NhdGlvbiAqIGludGVycG9sYXRpb24pKTtcblx0XHRcdHdyaXRlVWludDMyKHdyaXRlciwgTWF0aC5yb3VuZChzLm1pZHBvaW50ICogMTAwKSk7XG5cdFx0XHR3cml0ZUNvbG9yKHdyaXRlciwgcy5jb2xvcik7XG5cdFx0XHR3cml0ZVplcm9zKHdyaXRlciwgMik7XG5cdFx0fVxuXG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBpbmZvLm9wYWNpdHlTdG9wcyAmJiBpbmZvLm9wYWNpdHlTdG9wcy5sZW5ndGggfHwgMCk7XG5cblx0XHRmb3IgKGNvbnN0IHMgb2YgaW5mby5vcGFjaXR5U3RvcHMgfHwgW10pIHtcblx0XHRcdHdyaXRlVWludDMyKHdyaXRlciwgTWF0aC5yb3VuZChzLmxvY2F0aW9uICogaW50ZXJwb2xhdGlvbikpO1xuXHRcdFx0d3JpdGVVaW50MzIod3JpdGVyLCBNYXRoLnJvdW5kKHMubWlkcG9pbnQgKiAxMDApKTtcblx0XHRcdHdyaXRlVWludDE2KHdyaXRlciwgTWF0aC5yb3VuZChzLm9wYWNpdHkgKiAweGZmKSk7XG5cdFx0fVxuXG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCAyKTsgLy8gZXhwYW5zaW9uIGNvdW50XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBpbnRlcnBvbGF0aW9uKTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIDMyKTsgLy8gbGVuZ3RoXG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBpbmZvLmdyYWRpZW50VHlwZSA9PT0gJ25vaXNlJyA/IDEgOiAwKTtcblx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIGluZm8ucmFuZG9tU2VlZCB8fCAwKTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIGluZm8uYWRkVHJhbnNwYXJlbmN5ID8gMSA6IDApO1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgaW5mby5yZXN0cmljdENvbG9ycyA/IDEgOiAwKTtcblx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIE1hdGgucm91bmQoKGluZm8ucm91Z2huZXNzID8/IDEpICogNDA5NikpO1xuXHRcdGNvbnN0IGNvbG9yTW9kZWwgPSBncmRtQ29sb3JNb2RlbHMuaW5kZXhPZihpbmZvLmNvbG9yTW9kZWwgPz8gJ3JnYicpO1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgY29sb3JNb2RlbCA9PT0gLTEgPyAzIDogY29sb3JNb2RlbCk7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IDQ7IGkrKylcblx0XHRcdHdyaXRlVWludDE2KHdyaXRlciwgTWF0aC5yb3VuZCgoaW5mby5taW4gJiYgaW5mby5taW5baV0gfHwgMCkgKiAweDgwMDApKTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgNDsgaSsrKVxuXHRcdFx0d3JpdGVVaW50MTYod3JpdGVyLCBNYXRoLnJvdW5kKChpbmZvLm1heCAmJiBpbmZvLm1heFtpXSB8fCAwKSAqIDB4ODAwMCkpO1xuXG5cdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDQpO1xuXHR9LFxuKTtcblxuZnVuY3Rpb24gcmVhZFNlbGVjdGl2ZUNvbG9ycyhyZWFkZXI6IFBzZFJlYWRlcik6IENNWUsge1xuXHRyZXR1cm4ge1xuXHRcdGM6IHJlYWRJbnQxNihyZWFkZXIpLFxuXHRcdG06IHJlYWRJbnQxNihyZWFkZXIpLFxuXHRcdHk6IHJlYWRJbnQxNihyZWFkZXIpLFxuXHRcdGs6IHJlYWRJbnQxNihyZWFkZXIpLFxuXHR9O1xufVxuXG5mdW5jdGlvbiB3cml0ZVNlbGVjdGl2ZUNvbG9ycyh3cml0ZXI6IFBzZFdyaXRlciwgY215azogQ01ZSyB8IHVuZGVmaW5lZCkge1xuXHRjb25zdCBjID0gY215ayB8fCB7fSBhcyBQYXJ0aWFsPENNWUs+O1xuXHR3cml0ZUludDE2KHdyaXRlciwgYy5jISk7XG5cdHdyaXRlSW50MTYod3JpdGVyLCBjLm0hKTtcblx0d3JpdGVJbnQxNih3cml0ZXIsIGMueSEpO1xuXHR3cml0ZUludDE2KHdyaXRlciwgYy5rISk7XG59XG5cbmFkZEhhbmRsZXIoXG5cdCdzZWxjJyxcblx0YWRqdXN0bWVudFR5cGUoJ3NlbGVjdGl2ZSBjb2xvcicpLFxuXHQocmVhZGVyLCB0YXJnZXQpID0+IHtcblx0XHRpZiAocmVhZFVpbnQxNihyZWFkZXIpICE9PSAxKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc2VsYyB2ZXJzaW9uJyk7XG5cblx0XHRjb25zdCBtb2RlID0gcmVhZFVpbnQxNihyZWFkZXIpID8gJ2Fic29sdXRlJyA6ICdyZWxhdGl2ZSc7XG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgOCk7XG5cblx0XHR0YXJnZXQuYWRqdXN0bWVudCA9IHtcblx0XHRcdHR5cGU6ICdzZWxlY3RpdmUgY29sb3InLFxuXHRcdFx0bW9kZSxcblx0XHRcdHJlZHM6IHJlYWRTZWxlY3RpdmVDb2xvcnMocmVhZGVyKSxcblx0XHRcdHllbGxvd3M6IHJlYWRTZWxlY3RpdmVDb2xvcnMocmVhZGVyKSxcblx0XHRcdGdyZWVuczogcmVhZFNlbGVjdGl2ZUNvbG9ycyhyZWFkZXIpLFxuXHRcdFx0Y3lhbnM6IHJlYWRTZWxlY3RpdmVDb2xvcnMocmVhZGVyKSxcblx0XHRcdGJsdWVzOiByZWFkU2VsZWN0aXZlQ29sb3JzKHJlYWRlciksXG5cdFx0XHRtYWdlbnRhczogcmVhZFNlbGVjdGl2ZUNvbG9ycyhyZWFkZXIpLFxuXHRcdFx0d2hpdGVzOiByZWFkU2VsZWN0aXZlQ29sb3JzKHJlYWRlciksXG5cdFx0XHRuZXV0cmFsczogcmVhZFNlbGVjdGl2ZUNvbG9ycyhyZWFkZXIpLFxuXHRcdFx0YmxhY2tzOiByZWFkU2VsZWN0aXZlQ29sb3JzKHJlYWRlciksXG5cdFx0fTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgaW5mbyA9IHRhcmdldC5hZGp1c3RtZW50IGFzIFNlbGVjdGl2ZUNvbG9yQWRqdXN0bWVudDtcblxuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgMSk7IC8vIHZlcnNpb25cblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIGluZm8ubW9kZSA9PT0gJ2Fic29sdXRlJyA/IDEgOiAwKTtcblx0XHR3cml0ZVplcm9zKHdyaXRlciwgOCk7XG5cdFx0d3JpdGVTZWxlY3RpdmVDb2xvcnMod3JpdGVyLCBpbmZvLnJlZHMpO1xuXHRcdHdyaXRlU2VsZWN0aXZlQ29sb3JzKHdyaXRlciwgaW5mby55ZWxsb3dzKTtcblx0XHR3cml0ZVNlbGVjdGl2ZUNvbG9ycyh3cml0ZXIsIGluZm8uZ3JlZW5zKTtcblx0XHR3cml0ZVNlbGVjdGl2ZUNvbG9ycyh3cml0ZXIsIGluZm8uY3lhbnMpO1xuXHRcdHdyaXRlU2VsZWN0aXZlQ29sb3JzKHdyaXRlciwgaW5mby5ibHVlcyk7XG5cdFx0d3JpdGVTZWxlY3RpdmVDb2xvcnMod3JpdGVyLCBpbmZvLm1hZ2VudGFzKTtcblx0XHR3cml0ZVNlbGVjdGl2ZUNvbG9ycyh3cml0ZXIsIGluZm8ud2hpdGVzKTtcblx0XHR3cml0ZVNlbGVjdGl2ZUNvbG9ycyh3cml0ZXIsIGluZm8ubmV1dHJhbHMpO1xuXHRcdHdyaXRlU2VsZWN0aXZlQ29sb3JzKHdyaXRlciwgaW5mby5ibGFja3MpO1xuXHR9LFxuKTtcblxuaW50ZXJmYWNlIEJyaWdodG5lc3NDb250cmFzdERlc2NyaXB0b3Ige1xuXHRWcnNuOiBudW1iZXI7XG5cdEJyZ2g6IG51bWJlcjtcblx0Q250cjogbnVtYmVyO1xuXHRtZWFuczogbnVtYmVyO1xuXHQnTGFiICc6IGJvb2xlYW47XG5cdHVzZUxlZ2FjeTogYm9vbGVhbjtcblx0QXV0bzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFByZXNldERlc2NyaXB0b3Ige1xuXHRWcnNuOiBudW1iZXI7XG5cdHByZXNldEtpbmQ6IG51bWJlcjtcblx0cHJlc2V0RmlsZU5hbWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEN1cnZlc1ByZXNldERlc2NyaXB0b3Ige1xuXHRWcnNuOiBudW1iZXI7XG5cdGN1cnZlc1ByZXNldEtpbmQ6IG51bWJlcjtcblx0Y3VydmVzUHJlc2V0RmlsZU5hbWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIE1peGVyUHJlc2V0RGVzY3JpcHRvciB7XG5cdFZyc246IG51bWJlcjtcblx0bWl4ZXJQcmVzZXRLaW5kOiBudW1iZXI7XG5cdG1peGVyUHJlc2V0RmlsZU5hbWU6IHN0cmluZztcbn1cblxuYWRkSGFuZGxlcihcblx0J0NnRWQnLFxuXHR0YXJnZXQgPT4ge1xuXHRcdGNvbnN0IGEgPSB0YXJnZXQuYWRqdXN0bWVudDtcblxuXHRcdGlmICghYSkgcmV0dXJuIGZhbHNlO1xuXG5cdFx0cmV0dXJuIChhLnR5cGUgPT09ICdicmlnaHRuZXNzL2NvbnRyYXN0JyAmJiAhYS51c2VMZWdhY3kpIHx8XG5cdFx0XHQoKGEudHlwZSA9PT0gJ2xldmVscycgfHwgYS50eXBlID09PSAnY3VydmVzJyB8fCBhLnR5cGUgPT09ICdleHBvc3VyZScgfHwgYS50eXBlID09PSAnY2hhbm5lbCBtaXhlcicgfHxcblx0XHRcdFx0YS50eXBlID09PSAnaHVlL3NhdHVyYXRpb24nKSAmJiBhLnByZXNldEZpbGVOYW1lICE9PSB1bmRlZmluZWQpO1xuXHR9LFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQpID0+IHtcblx0XHRjb25zdCBkZXNjID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcikgYXNcblx0XHRcdEJyaWdodG5lc3NDb250cmFzdERlc2NyaXB0b3IgfCBQcmVzZXREZXNjcmlwdG9yIHwgQ3VydmVzUHJlc2V0RGVzY3JpcHRvciB8IE1peGVyUHJlc2V0RGVzY3JpcHRvcjtcblx0XHRpZiAoZGVzYy5WcnNuICE9PSAxKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQ2dFZCB2ZXJzaW9uJyk7XG5cblx0XHQvLyB0aGlzIHNlY3Rpb24gY2FuIHNwZWNpZnkgcHJlc2V0IGZpbGUgbmFtZSBmb3Igb3RoZXIgYWRqdXN0bWVudCB0eXBlc1xuXHRcdGlmICgncHJlc2V0RmlsZU5hbWUnIGluIGRlc2MpIHtcblx0XHRcdHRhcmdldC5hZGp1c3RtZW50ID0ge1xuXHRcdFx0XHQuLi50YXJnZXQuYWRqdXN0bWVudCBhcyBMZXZlbHNBZGp1c3RtZW50IHwgRXhwb3N1cmVBZGp1c3RtZW50IHwgSHVlU2F0dXJhdGlvbkFkanVzdG1lbnQsXG5cdFx0XHRcdHByZXNldEtpbmQ6IGRlc2MucHJlc2V0S2luZCxcblx0XHRcdFx0cHJlc2V0RmlsZU5hbWU6IGRlc2MucHJlc2V0RmlsZU5hbWUsXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSBpZiAoJ2N1cnZlc1ByZXNldEZpbGVOYW1lJyBpbiBkZXNjKSB7XG5cdFx0XHR0YXJnZXQuYWRqdXN0bWVudCA9IHtcblx0XHRcdFx0Li4udGFyZ2V0LmFkanVzdG1lbnQgYXMgQ3VydmVzQWRqdXN0bWVudCxcblx0XHRcdFx0cHJlc2V0S2luZDogZGVzYy5jdXJ2ZXNQcmVzZXRLaW5kLFxuXHRcdFx0XHRwcmVzZXRGaWxlTmFtZTogZGVzYy5jdXJ2ZXNQcmVzZXRGaWxlTmFtZSxcblx0XHRcdH07XG5cdFx0fSBlbHNlIGlmICgnbWl4ZXJQcmVzZXRGaWxlTmFtZScgaW4gZGVzYykge1xuXHRcdFx0dGFyZ2V0LmFkanVzdG1lbnQgPSB7XG5cdFx0XHRcdC4uLnRhcmdldC5hZGp1c3RtZW50IGFzIEN1cnZlc0FkanVzdG1lbnQsXG5cdFx0XHRcdHByZXNldEtpbmQ6IGRlc2MubWl4ZXJQcmVzZXRLaW5kLFxuXHRcdFx0XHRwcmVzZXRGaWxlTmFtZTogZGVzYy5taXhlclByZXNldEZpbGVOYW1lLFxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGFyZ2V0LmFkanVzdG1lbnQgPSB7XG5cdFx0XHRcdHR5cGU6ICdicmlnaHRuZXNzL2NvbnRyYXN0Jyxcblx0XHRcdFx0YnJpZ2h0bmVzczogZGVzYy5CcmdoLFxuXHRcdFx0XHRjb250cmFzdDogZGVzYy5DbnRyLFxuXHRcdFx0XHRtZWFuVmFsdWU6IGRlc2MubWVhbnMsXG5cdFx0XHRcdHVzZUxlZ2FjeTogISFkZXNjLnVzZUxlZ2FjeSxcblx0XHRcdFx0bGFiQ29sb3JPbmx5OiAhIWRlc2NbJ0xhYiAnXSxcblx0XHRcdFx0YXV0bzogISFkZXNjLkF1dG8sXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGluZm8gPSB0YXJnZXQuYWRqdXN0bWVudCE7XG5cblx0XHRpZiAoaW5mby50eXBlID09PSAnbGV2ZWxzJyB8fCBpbmZvLnR5cGUgPT09ICdleHBvc3VyZScgfHwgaW5mby50eXBlID09PSAnaHVlL3NhdHVyYXRpb24nKSB7XG5cdFx0XHRjb25zdCBkZXNjOiBQcmVzZXREZXNjcmlwdG9yID0ge1xuXHRcdFx0XHRWcnNuOiAxLFxuXHRcdFx0XHRwcmVzZXRLaW5kOiBpbmZvLnByZXNldEtpbmQgPz8gMSxcblx0XHRcdFx0cHJlc2V0RmlsZU5hbWU6IGluZm8ucHJlc2V0RmlsZU5hbWUgfHwgJycsXG5cdFx0XHR9O1xuXHRcdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAnbnVsbCcsIGRlc2MpO1xuXHRcdH0gZWxzZSBpZiAoaW5mby50eXBlID09PSAnY3VydmVzJykge1xuXHRcdFx0Y29uc3QgZGVzYzogQ3VydmVzUHJlc2V0RGVzY3JpcHRvciA9IHtcblx0XHRcdFx0VnJzbjogMSxcblx0XHRcdFx0Y3VydmVzUHJlc2V0S2luZDogaW5mby5wcmVzZXRLaW5kID8/IDEsXG5cdFx0XHRcdGN1cnZlc1ByZXNldEZpbGVOYW1lOiBpbmZvLnByZXNldEZpbGVOYW1lIHx8ICcnLFxuXHRcdFx0fTtcblx0XHRcdHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgJ251bGwnLCBkZXNjKTtcblx0XHR9IGVsc2UgaWYgKGluZm8udHlwZSA9PT0gJ2NoYW5uZWwgbWl4ZXInKSB7XG5cdFx0XHRjb25zdCBkZXNjOiBNaXhlclByZXNldERlc2NyaXB0b3IgPSB7XG5cdFx0XHRcdFZyc246IDEsXG5cdFx0XHRcdG1peGVyUHJlc2V0S2luZDogaW5mby5wcmVzZXRLaW5kID8/IDEsXG5cdFx0XHRcdG1peGVyUHJlc2V0RmlsZU5hbWU6IGluZm8ucHJlc2V0RmlsZU5hbWUgfHwgJycsXG5cdFx0XHR9O1xuXHRcdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAnbnVsbCcsIGRlc2MpO1xuXHRcdH0gZWxzZSBpZiAoaW5mby50eXBlID09PSAnYnJpZ2h0bmVzcy9jb250cmFzdCcpIHtcblx0XHRcdGNvbnN0IGRlc2M6IEJyaWdodG5lc3NDb250cmFzdERlc2NyaXB0b3IgPSB7XG5cdFx0XHRcdFZyc246IDEsXG5cdFx0XHRcdEJyZ2g6IGluZm8uYnJpZ2h0bmVzcyB8fCAwLFxuXHRcdFx0XHRDbnRyOiBpbmZvLmNvbnRyYXN0IHx8IDAsXG5cdFx0XHRcdG1lYW5zOiBpbmZvLm1lYW5WYWx1ZSA/PyAxMjcsXG5cdFx0XHRcdCdMYWIgJzogISFpbmZvLmxhYkNvbG9yT25seSxcblx0XHRcdFx0dXNlTGVnYWN5OiAhIWluZm8udXNlTGVnYWN5LFxuXHRcdFx0XHRBdXRvOiAhIWluZm8uYXV0byxcblx0XHRcdH07XG5cdFx0XHR3cml0ZVZlcnNpb25BbmREZXNjcmlwdG9yKHdyaXRlciwgJycsICdudWxsJywgZGVzYyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignVW5oYW5kbGVkIENnRWQgY2FzZScpO1xuXHRcdH1cblx0fSxcbik7XG5cbmFkZEhhbmRsZXIoXG5cdCdUeHQyJyxcblx0aGFzS2V5KCdlbmdpbmVEYXRhJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdGNvbnN0IGRhdGEgPSByZWFkQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHRcdHRhcmdldC5lbmdpbmVEYXRhID0gZnJvbUJ5dGVBcnJheShkYXRhKTtcblx0XHQvLyBjb25zdCBlbmdpbmVEYXRhID0gcGFyc2VFbmdpbmVEYXRhKGRhdGEpO1xuXHRcdC8vIGNvbnNvbGUubG9nKHJlcXVpcmUoJ3V0aWwnKS5pbnNwZWN0KGVuZ2luZURhdGEsIGZhbHNlLCA5OSwgdHJ1ZSkpO1xuXHRcdC8vIHJlcXVpcmUoJ2ZzJykud3JpdGVGaWxlU3luYygncmVzb3VyY2VzL2VuZ2luZURhdGEyU2ltcGxlLnR4dCcsIHJlcXVpcmUoJ3V0aWwnKS5pbnNwZWN0KGVuZ2luZURhdGEsIGZhbHNlLCA5OSwgZmFsc2UpLCAndXRmOCcpO1xuXHRcdC8vIHJlcXVpcmUoJ2ZzJykud3JpdGVGaWxlU3luYygndGVzdF9kYXRhLmpzb24nLCBKU09OLnN0cmluZ2lmeShlZCwgbnVsbCwgMiksICd1dGY4Jyk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGJ1ZmZlciA9IHRvQnl0ZUFycmF5KHRhcmdldC5lbmdpbmVEYXRhISk7XG5cdFx0d3JpdGVCeXRlcyh3cml0ZXIsIGJ1ZmZlcik7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQnRk1zaycsXG5cdGhhc0tleSgnZmlsdGVyTWFzaycpLFxuXHQocmVhZGVyLCB0YXJnZXQpID0+IHtcblx0XHR0YXJnZXQuZmlsdGVyTWFzayA9IHtcblx0XHRcdGNvbG9yU3BhY2U6IHJlYWRDb2xvcihyZWFkZXIpLFxuXHRcdFx0b3BhY2l0eTogcmVhZFVpbnQxNihyZWFkZXIpIC8gMHhmZixcblx0XHR9O1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHR3cml0ZUNvbG9yKHdyaXRlciwgdGFyZ2V0LmZpbHRlck1hc2shLmNvbG9yU3BhY2UpO1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgY2xhbXAodGFyZ2V0LmZpbHRlck1hc2shLm9wYWNpdHkgPz8gMSwgMCwgMSkgKiAweGZmKTtcblx0fSxcbik7XG5cbmludGVyZmFjZSBBcnRkRGVzY3JpcHRvciB7XG5cdCdDbnQgJzogbnVtYmVyO1xuXHRhdXRvRXhwYW5kT2Zmc2V0OiB7IEhyem46IG51bWJlcjsgVnJ0YzogbnVtYmVyOyB9O1xuXHRvcmlnaW46IHsgSHJ6bjogbnVtYmVyOyBWcnRjOiBudW1iZXI7IH07XG5cdGF1dG9FeHBhbmRFbmFibGVkOiBib29sZWFuO1xuXHRhdXRvTmVzdEVuYWJsZWQ6IGJvb2xlYW47XG5cdGF1dG9Qb3NpdGlvbkVuYWJsZWQ6IGJvb2xlYW47XG5cdHNocmlua3dyYXBPblNhdmVFbmFibGVkOiBib29sZWFuO1xuXHRkb2NEZWZhdWx0TmV3QXJ0Ym9hcmRCYWNrZ3JvdW5kQ29sb3I6IERlc2NyaXB0b3JDb2xvcjtcblx0ZG9jRGVmYXVsdE5ld0FydGJvYXJkQmFja2dyb3VuZFR5cGU6IG51bWJlcjtcbn1cblxuYWRkSGFuZGxlcihcblx0J2FydGQnLCAvLyBkb2N1bWVudC13aWRlIGFydGJvYXJkIGluZm9cblx0dGFyZ2V0ID0+ICh0YXJnZXQgYXMgUHNkKS5hcnRib2FyZHMgIT09IHVuZGVmaW5lZCxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0Y29uc3QgZGVzYyA9IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpIGFzIEFydGREZXNjcmlwdG9yO1xuXHRcdCh0YXJnZXQgYXMgUHNkKS5hcnRib2FyZHMgPSB7XG5cdFx0XHRjb3VudDogZGVzY1snQ250ICddLFxuXHRcdFx0YXV0b0V4cGFuZE9mZnNldDogeyBob3Jpem9udGFsOiBkZXNjLmF1dG9FeHBhbmRPZmZzZXQuSHJ6biwgdmVydGljYWw6IGRlc2MuYXV0b0V4cGFuZE9mZnNldC5WcnRjIH0sXG5cdFx0XHRvcmlnaW46IHsgaG9yaXpvbnRhbDogZGVzYy5vcmlnaW4uSHJ6biwgdmVydGljYWw6IGRlc2Mub3JpZ2luLlZydGMgfSxcblx0XHRcdGF1dG9FeHBhbmRFbmFibGVkOiBkZXNjLmF1dG9FeHBhbmRFbmFibGVkLFxuXHRcdFx0YXV0b05lc3RFbmFibGVkOiBkZXNjLmF1dG9OZXN0RW5hYmxlZCxcblx0XHRcdGF1dG9Qb3NpdGlvbkVuYWJsZWQ6IGRlc2MuYXV0b1Bvc2l0aW9uRW5hYmxlZCxcblx0XHRcdHNocmlua3dyYXBPblNhdmVFbmFibGVkOiBkZXNjLnNocmlua3dyYXBPblNhdmVFbmFibGVkLFxuXHRcdFx0ZG9jRGVmYXVsdE5ld0FydGJvYXJkQmFja2dyb3VuZENvbG9yOiBwYXJzZUNvbG9yKGRlc2MuZG9jRGVmYXVsdE5ld0FydGJvYXJkQmFja2dyb3VuZENvbG9yKSxcblx0XHRcdGRvY0RlZmF1bHROZXdBcnRib2FyZEJhY2tncm91bmRUeXBlOiBkZXNjLmRvY0RlZmF1bHROZXdBcnRib2FyZEJhY2tncm91bmRUeXBlLFxuXHRcdH07XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBhcnRiID0gKHRhcmdldCBhcyBQc2QpLmFydGJvYXJkcyE7XG5cdFx0Y29uc3QgZGVzYzogQXJ0ZERlc2NyaXB0b3IgPSB7XG5cdFx0XHQnQ250ICc6IGFydGIuY291bnQsXG5cdFx0XHRhdXRvRXhwYW5kT2Zmc2V0OiBhcnRiLmF1dG9FeHBhbmRPZmZzZXQgPyB7IEhyem46IGFydGIuYXV0b0V4cGFuZE9mZnNldC5ob3Jpem9udGFsLCBWcnRjOiBhcnRiLmF1dG9FeHBhbmRPZmZzZXQudmVydGljYWwgfSA6IHsgSHJ6bjogMCwgVnJ0YzogMCB9LFxuXHRcdFx0b3JpZ2luOiBhcnRiLm9yaWdpbiA/IHsgSHJ6bjogYXJ0Yi5vcmlnaW4uaG9yaXpvbnRhbCwgVnJ0YzogYXJ0Yi5vcmlnaW4udmVydGljYWwgfSA6IHsgSHJ6bjogMCwgVnJ0YzogMCB9LFxuXHRcdFx0YXV0b0V4cGFuZEVuYWJsZWQ6IGFydGIuYXV0b0V4cGFuZEVuYWJsZWQgPz8gdHJ1ZSxcblx0XHRcdGF1dG9OZXN0RW5hYmxlZDogYXJ0Yi5hdXRvTmVzdEVuYWJsZWQgPz8gdHJ1ZSxcblx0XHRcdGF1dG9Qb3NpdGlvbkVuYWJsZWQ6IGFydGIuYXV0b1Bvc2l0aW9uRW5hYmxlZCA/PyB0cnVlLFxuXHRcdFx0c2hyaW5rd3JhcE9uU2F2ZUVuYWJsZWQ6IGFydGIuc2hyaW5rd3JhcE9uU2F2ZUVuYWJsZWQgPz8gdHJ1ZSxcblx0XHRcdGRvY0RlZmF1bHROZXdBcnRib2FyZEJhY2tncm91bmRDb2xvcjogc2VyaWFsaXplQ29sb3IoYXJ0Yi5kb2NEZWZhdWx0TmV3QXJ0Ym9hcmRCYWNrZ3JvdW5kQ29sb3IpLFxuXHRcdFx0ZG9jRGVmYXVsdE5ld0FydGJvYXJkQmFja2dyb3VuZFR5cGU6IGFydGIuZG9jRGVmYXVsdE5ld0FydGJvYXJkQmFja2dyb3VuZFR5cGUgPz8gMSxcblx0XHR9O1xuXHRcdHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgJ251bGwnLCBkZXNjLCAnYXJ0ZCcpO1xuXHR9LFxuKTtcblxuaW50ZXJmYWNlIEVmZmVjdERlc2NyaXB0b3IgZXh0ZW5kcyBQYXJ0aWFsPERlc2NyaXB0b3JHcmFkaWVudENvbnRlbnQ+LCBQYXJ0aWFsPERlc2NyaXB0b3JQYXR0ZXJuQ29udGVudD4ge1xuXHRlbmFiPzogYm9vbGVhbjtcblx0U3R5bDogc3RyaW5nO1xuXHRQbnRUPzogc3RyaW5nO1xuXHQnTWQgICc/OiBzdHJpbmc7XG5cdE9wY3Q/OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcblx0J1N6ICAnPzogRGVzY3JpcHRvclVuaXRzVmFsdWU7XG5cdCdDbHIgJz86IERlc2NyaXB0b3JDb2xvcjtcblx0cHJlc2VudD86IGJvb2xlYW47XG5cdHNob3dJbkRpYWxvZz86IGJvb2xlYW47XG5cdG92ZXJwcmludD86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBMZngyRGVzY3JpcHRvciB7XG5cdCdTY2wgJz86IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xuXHRtYXN0ZXJGWFN3aXRjaD86IGJvb2xlYW47XG5cdERyU2g/OiBFZmZlY3REZXNjcmlwdG9yO1xuXHRJclNoPzogRWZmZWN0RGVzY3JpcHRvcjtcblx0T3JHbD86IEVmZmVjdERlc2NyaXB0b3I7XG5cdElyR2w/OiBFZmZlY3REZXNjcmlwdG9yO1xuXHRlYmJsPzogRWZmZWN0RGVzY3JpcHRvcjtcblx0U29GaT86IEVmZmVjdERlc2NyaXB0b3I7XG5cdHBhdHRlcm5GaWxsPzogRWZmZWN0RGVzY3JpcHRvcjtcblx0R3JGbD86IEVmZmVjdERlc2NyaXB0b3I7XG5cdENoRlg/OiBFZmZlY3REZXNjcmlwdG9yO1xuXHRGckZYPzogRWZmZWN0RGVzY3JpcHRvcjtcbn1cblxuaW50ZXJmYWNlIExtZnhEZXNjcmlwdG9yIHtcblx0J1NjbCAnPzogRGVzY3JpcHRvclVuaXRzVmFsdWU7XG5cdG1hc3RlckZYU3dpdGNoPzogYm9vbGVhbjtcblx0bnVtTW9kaWZ5aW5nRlg/OiBudW1iZXI7XG5cdE9yR2w/OiBFZmZlY3REZXNjcmlwdG9yO1xuXHRJckdsPzogRWZmZWN0RGVzY3JpcHRvcjtcblx0ZWJibD86IEVmZmVjdERlc2NyaXB0b3I7XG5cdENoRlg/OiBFZmZlY3REZXNjcmlwdG9yO1xuXHRkcm9wU2hhZG93TXVsdGk/OiBFZmZlY3REZXNjcmlwdG9yW107XG5cdGlubmVyU2hhZG93TXVsdGk/OiBFZmZlY3REZXNjcmlwdG9yW107XG5cdHNvbGlkRmlsbE11bHRpPzogRWZmZWN0RGVzY3JpcHRvcltdO1xuXHRncmFkaWVudEZpbGxNdWx0aT86IEVmZmVjdERlc2NyaXB0b3JbXTtcblx0ZnJhbWVGWE11bHRpPzogRWZmZWN0RGVzY3JpcHRvcltdO1xuXHRwYXR0ZXJuRmlsbD86IEVmZmVjdERlc2NyaXB0b3I7IC8vID8/P1xufVxuXG5mdW5jdGlvbiBwYXJzZUZ4T2JqZWN0KGZ4OiBFZmZlY3REZXNjcmlwdG9yKSB7XG5cdGNvbnN0IHN0cm9rZTogTGF5ZXJFZmZlY3RTdHJva2UgPSB7XG5cdFx0ZW5hYmxlZDogISFmeC5lbmFiLFxuXHRcdHBvc2l0aW9uOiBGU3RsLmRlY29kZShmeC5TdHlsKSxcblx0XHRmaWxsVHlwZTogRnJGbC5kZWNvZGUoZnguUG50VCEpLFxuXHRcdGJsZW5kTW9kZTogQmxuTS5kZWNvZGUoZnhbJ01kICAnXSEpLFxuXHRcdG9wYWNpdHk6IHBhcnNlUGVyY2VudChmeC5PcGN0KSxcblx0XHRzaXplOiBwYXJzZVVuaXRzKGZ4WydTeiAgJ10hKSxcblx0fTtcblxuXHRpZiAoZngucHJlc2VudCAhPT0gdW5kZWZpbmVkKSBzdHJva2UucHJlc2VudCA9IGZ4LnByZXNlbnQ7XG5cdGlmIChmeC5zaG93SW5EaWFsb2cgIT09IHVuZGVmaW5lZCkgc3Ryb2tlLnNob3dJbkRpYWxvZyA9IGZ4LnNob3dJbkRpYWxvZztcblx0aWYgKGZ4Lm92ZXJwcmludCAhPT0gdW5kZWZpbmVkKSBzdHJva2Uub3ZlcnByaW50ID0gZngub3ZlcnByaW50O1xuXHRpZiAoZnhbJ0NsciAnXSkgc3Ryb2tlLmNvbG9yID0gcGFyc2VDb2xvcihmeFsnQ2xyICddKTtcblx0aWYgKGZ4LkdyYWQpIHN0cm9rZS5ncmFkaWVudCA9IHBhcnNlR3JhZGllbnRDb250ZW50KGZ4IGFzIGFueSk7XG5cdGlmIChmeC5QdHJuKSBzdHJva2UucGF0dGVybiA9IHBhcnNlUGF0dGVybkNvbnRlbnQoZnggYXMgYW55KTtcblxuXHRyZXR1cm4gc3Ryb2tlO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVGeE9iamVjdChzdHJva2U6IExheWVyRWZmZWN0U3Ryb2tlKSB7XG5cdGxldCBGckZYOiBFZmZlY3REZXNjcmlwdG9yID0ge30gYXMgYW55O1xuXHRGckZYLmVuYWIgPSAhIXN0cm9rZS5lbmFibGVkO1xuXHRpZiAoc3Ryb2tlLnByZXNlbnQgIT09IHVuZGVmaW5lZCkgRnJGWC5wcmVzZW50ID0gISFzdHJva2UucHJlc2VudDtcblx0aWYgKHN0cm9rZS5zaG93SW5EaWFsb2cgIT09IHVuZGVmaW5lZCkgRnJGWC5zaG93SW5EaWFsb2cgPSAhIXN0cm9rZS5zaG93SW5EaWFsb2c7XG5cdEZyRlguU3R5bCA9IEZTdGwuZW5jb2RlKHN0cm9rZS5wb3NpdGlvbik7XG5cdEZyRlguUG50VCA9IEZyRmwuZW5jb2RlKHN0cm9rZS5maWxsVHlwZSk7XG5cdEZyRlhbJ01kICAnXSA9IEJsbk0uZW5jb2RlKHN0cm9rZS5ibGVuZE1vZGUpO1xuXHRGckZYLk9wY3QgPSB1bml0c1BlcmNlbnQoc3Ryb2tlLm9wYWNpdHkpO1xuXHRGckZYWydTeiAgJ10gPSB1bml0c1ZhbHVlKHN0cm9rZS5zaXplLCAnc2l6ZScpO1xuXHRpZiAoc3Ryb2tlLmNvbG9yKSBGckZYWydDbHIgJ10gPSBzZXJpYWxpemVDb2xvcihzdHJva2UuY29sb3IpO1xuXHRpZiAoc3Ryb2tlLmdyYWRpZW50KSBGckZYID0geyAuLi5GckZYLCAuLi5zZXJpYWxpemVHcmFkaWVudENvbnRlbnQoc3Ryb2tlLmdyYWRpZW50KSB9O1xuXHRpZiAoc3Ryb2tlLnBhdHRlcm4pIEZyRlggPSB7IC4uLkZyRlgsIC4uLnNlcmlhbGl6ZVBhdHRlcm5Db250ZW50KHN0cm9rZS5wYXR0ZXJuKSB9O1xuXHRpZiAoc3Ryb2tlLm92ZXJwcmludCAhPT0gdW5kZWZpbmVkKSBGckZYLm92ZXJwcmludCA9ICEhc3Ryb2tlLm92ZXJwcmludDtcblx0cmV0dXJuIEZyRlg7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRWZmZWN0cyhpbmZvOiBMZngyRGVzY3JpcHRvciAmIExtZnhEZXNjcmlwdG9yLCBsb2c6IGJvb2xlYW4pIHtcblx0Y29uc3QgZWZmZWN0czogTGF5ZXJFZmZlY3RzSW5mbyA9IHt9O1xuXHRpZiAoIWluZm8ubWFzdGVyRlhTd2l0Y2gpIGVmZmVjdHMuZGlzYWJsZWQgPSB0cnVlO1xuXHRpZiAoaW5mb1snU2NsICddKSBlZmZlY3RzLnNjYWxlID0gcGFyc2VQZXJjZW50KGluZm9bJ1NjbCAnXSk7XG5cdGlmIChpbmZvLkRyU2gpIGVmZmVjdHMuZHJvcFNoYWRvdyA9IFtwYXJzZUVmZmVjdE9iamVjdChpbmZvLkRyU2gsIGxvZyldO1xuXHRpZiAoaW5mby5kcm9wU2hhZG93TXVsdGkpIGVmZmVjdHMuZHJvcFNoYWRvdyA9IGluZm8uZHJvcFNoYWRvd011bHRpLm1hcChpID0+IHBhcnNlRWZmZWN0T2JqZWN0KGksIGxvZykpO1xuXHRpZiAoaW5mby5JclNoKSBlZmZlY3RzLmlubmVyU2hhZG93ID0gW3BhcnNlRWZmZWN0T2JqZWN0KGluZm8uSXJTaCwgbG9nKV07XG5cdGlmIChpbmZvLmlubmVyU2hhZG93TXVsdGkpIGVmZmVjdHMuaW5uZXJTaGFkb3cgPSBpbmZvLmlubmVyU2hhZG93TXVsdGkubWFwKGkgPT4gcGFyc2VFZmZlY3RPYmplY3QoaSwgbG9nKSk7XG5cdGlmIChpbmZvLk9yR2wpIGVmZmVjdHMub3V0ZXJHbG93ID0gcGFyc2VFZmZlY3RPYmplY3QoaW5mby5PckdsLCBsb2cpO1xuXHRpZiAoaW5mby5JckdsKSBlZmZlY3RzLmlubmVyR2xvdyA9IHBhcnNlRWZmZWN0T2JqZWN0KGluZm8uSXJHbCwgbG9nKTtcblx0aWYgKGluZm8uZWJibCkgZWZmZWN0cy5iZXZlbCA9IHBhcnNlRWZmZWN0T2JqZWN0KGluZm8uZWJibCwgbG9nKTtcblx0aWYgKGluZm8uU29GaSkgZWZmZWN0cy5zb2xpZEZpbGwgPSBbcGFyc2VFZmZlY3RPYmplY3QoaW5mby5Tb0ZpLCBsb2cpXTtcblx0aWYgKGluZm8uc29saWRGaWxsTXVsdGkpIGVmZmVjdHMuc29saWRGaWxsID0gaW5mby5zb2xpZEZpbGxNdWx0aS5tYXAoaSA9PiBwYXJzZUVmZmVjdE9iamVjdChpLCBsb2cpKTtcblx0aWYgKGluZm8ucGF0dGVybkZpbGwpIGVmZmVjdHMucGF0dGVybk92ZXJsYXkgPSBwYXJzZUVmZmVjdE9iamVjdChpbmZvLnBhdHRlcm5GaWxsLCBsb2cpO1xuXHRpZiAoaW5mby5HckZsKSBlZmZlY3RzLmdyYWRpZW50T3ZlcmxheSA9IFtwYXJzZUVmZmVjdE9iamVjdChpbmZvLkdyRmwsIGxvZyldO1xuXHRpZiAoaW5mby5ncmFkaWVudEZpbGxNdWx0aSkgZWZmZWN0cy5ncmFkaWVudE92ZXJsYXkgPSBpbmZvLmdyYWRpZW50RmlsbE11bHRpLm1hcChpID0+IHBhcnNlRWZmZWN0T2JqZWN0KGksIGxvZykpO1xuXHRpZiAoaW5mby5DaEZYKSBlZmZlY3RzLnNhdGluID0gcGFyc2VFZmZlY3RPYmplY3QoaW5mby5DaEZYLCBsb2cpO1xuXHRpZiAoaW5mby5GckZYKSBlZmZlY3RzLnN0cm9rZSA9IFtwYXJzZUZ4T2JqZWN0KGluZm8uRnJGWCldO1xuXHRpZiAoaW5mby5mcmFtZUZYTXVsdGkpIGVmZmVjdHMuc3Ryb2tlID0gaW5mby5mcmFtZUZYTXVsdGkubWFwKGkgPT4gcGFyc2VGeE9iamVjdChpKSk7XG5cdHJldHVybiBlZmZlY3RzO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVFZmZlY3RzKGU6IExheWVyRWZmZWN0c0luZm8sIGxvZzogYm9vbGVhbiwgbXVsdGk6IGJvb2xlYW4pIHtcblx0Y29uc3QgaW5mbzogTGZ4MkRlc2NyaXB0b3IgJiBMbWZ4RGVzY3JpcHRvciA9IG11bHRpID8ge1xuXHRcdCdTY2wgJzogdW5pdHNQZXJjZW50KGUuc2NhbGUgPz8gMSksXG5cdFx0bWFzdGVyRlhTd2l0Y2g6ICFlLmRpc2FibGVkLFxuXHR9IDoge1xuXHRcdG1hc3RlckZYU3dpdGNoOiAhZS5kaXNhYmxlZCxcblx0XHQnU2NsICc6IHVuaXRzUGVyY2VudChlLnNjYWxlID8/IDEpLFxuXHR9O1xuXG5cdGNvbnN0IGFycmF5S2V5czogKGtleW9mIExheWVyRWZmZWN0c0luZm8pW10gPSBbJ2Ryb3BTaGFkb3cnLCAnaW5uZXJTaGFkb3cnLCAnc29saWRGaWxsJywgJ2dyYWRpZW50T3ZlcmxheScsICdzdHJva2UnXTtcblx0Zm9yIChjb25zdCBrZXkgb2YgYXJyYXlLZXlzKSB7XG5cdFx0aWYgKGVba2V5XSAmJiAhQXJyYXkuaXNBcnJheShlW2tleV0pKSB0aHJvdyBuZXcgRXJyb3IoYCR7a2V5fSBzaG91bGQgYmUgYW4gYXJyYXlgKTtcblx0fVxuXG5cdGlmIChlLmRyb3BTaGFkb3c/LlswXSAmJiAhbXVsdGkpIGluZm8uRHJTaCA9IHNlcmlhbGl6ZUVmZmVjdE9iamVjdChlLmRyb3BTaGFkb3dbMF0sICdkcm9wU2hhZG93JywgbG9nKTtcblx0aWYgKGUuZHJvcFNoYWRvdz8uWzBdICYmIG11bHRpKSBpbmZvLmRyb3BTaGFkb3dNdWx0aSA9IGUuZHJvcFNoYWRvdy5tYXAoaSA9PiBzZXJpYWxpemVFZmZlY3RPYmplY3QoaSwgJ2Ryb3BTaGFkb3cnLCBsb2cpKTtcblx0aWYgKGUuaW5uZXJTaGFkb3c/LlswXSAmJiAhbXVsdGkpIGluZm8uSXJTaCA9IHNlcmlhbGl6ZUVmZmVjdE9iamVjdChlLmlubmVyU2hhZG93WzBdLCAnaW5uZXJTaGFkb3cnLCBsb2cpO1xuXHRpZiAoZS5pbm5lclNoYWRvdz8uWzBdICYmIG11bHRpKSBpbmZvLmlubmVyU2hhZG93TXVsdGkgPSBlLmlubmVyU2hhZG93Lm1hcChpID0+IHNlcmlhbGl6ZUVmZmVjdE9iamVjdChpLCAnaW5uZXJTaGFkb3cnLCBsb2cpKTtcblx0aWYgKGUub3V0ZXJHbG93KSBpbmZvLk9yR2wgPSBzZXJpYWxpemVFZmZlY3RPYmplY3QoZS5vdXRlckdsb3csICdvdXRlckdsb3cnLCBsb2cpO1xuXHRpZiAoZS5zb2xpZEZpbGw/LlswXSAmJiBtdWx0aSkgaW5mby5zb2xpZEZpbGxNdWx0aSA9IGUuc29saWRGaWxsLm1hcChpID0+IHNlcmlhbGl6ZUVmZmVjdE9iamVjdChpLCAnc29saWRGaWxsJywgbG9nKSk7XG5cdGlmIChlLmdyYWRpZW50T3ZlcmxheT8uWzBdICYmIG11bHRpKSBpbmZvLmdyYWRpZW50RmlsbE11bHRpID0gZS5ncmFkaWVudE92ZXJsYXkubWFwKGkgPT4gc2VyaWFsaXplRWZmZWN0T2JqZWN0KGksICdncmFkaWVudE92ZXJsYXknLCBsb2cpKTtcblx0aWYgKGUuc3Ryb2tlPy5bMF0gJiYgbXVsdGkpIGluZm8uZnJhbWVGWE11bHRpID0gZS5zdHJva2UubWFwKGkgPT4gc2VyaWFsaXplRnhPYmplY3QoaSkpO1xuXHRpZiAoZS5pbm5lckdsb3cpIGluZm8uSXJHbCA9IHNlcmlhbGl6ZUVmZmVjdE9iamVjdChlLmlubmVyR2xvdywgJ2lubmVyR2xvdycsIGxvZyk7XG5cdGlmIChlLmJldmVsKSBpbmZvLmViYmwgPSBzZXJpYWxpemVFZmZlY3RPYmplY3QoZS5iZXZlbCwgJ2JldmVsJywgbG9nKTtcblx0aWYgKGUuc29saWRGaWxsPy5bMF0gJiYgIW11bHRpKSBpbmZvLlNvRmkgPSBzZXJpYWxpemVFZmZlY3RPYmplY3QoZS5zb2xpZEZpbGxbMF0sICdzb2xpZEZpbGwnLCBsb2cpO1xuXHRpZiAoZS5wYXR0ZXJuT3ZlcmxheSkgaW5mby5wYXR0ZXJuRmlsbCA9IHNlcmlhbGl6ZUVmZmVjdE9iamVjdChlLnBhdHRlcm5PdmVybGF5LCAncGF0dGVybk92ZXJsYXknLCBsb2cpO1xuXHRpZiAoZS5ncmFkaWVudE92ZXJsYXk/LlswXSAmJiAhbXVsdGkpIGluZm8uR3JGbCA9IHNlcmlhbGl6ZUVmZmVjdE9iamVjdChlLmdyYWRpZW50T3ZlcmxheVswXSwgJ2dyYWRpZW50T3ZlcmxheScsIGxvZyk7XG5cdGlmIChlLnNhdGluKSBpbmZvLkNoRlggPSBzZXJpYWxpemVFZmZlY3RPYmplY3QoZS5zYXRpbiwgJ3NhdGluJywgbG9nKTtcblx0aWYgKGUuc3Ryb2tlPy5bMF0gJiYgIW11bHRpKSBpbmZvLkZyRlggPSBzZXJpYWxpemVGeE9iamVjdChlLnN0cm9rZT8uWzBdKTtcblxuXHRpZiAobXVsdGkpIHtcblx0XHRpbmZvLm51bU1vZGlmeWluZ0ZYID0gMDtcblxuXHRcdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGUpKSB7XG5cdFx0XHRjb25zdCB2YWx1ZSA9IChlIGFzIGFueSlba2V5XTtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuXHRcdFx0XHRmb3IgKGNvbnN0IGVmZmVjdCBvZiB2YWx1ZSkge1xuXHRcdFx0XHRcdGlmIChlZmZlY3QuZW5hYmxlZCkgaW5mby5udW1Nb2RpZnlpbmdGWCsrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGluZm87XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNNdWx0aUVmZmVjdHMoZWZmZWN0czogTGF5ZXJFZmZlY3RzSW5mbykge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMoZWZmZWN0cykubWFwKGtleSA9PiAoZWZmZWN0cyBhcyBhbnkpW2tleV0pLnNvbWUodiA9PiBBcnJheS5pc0FycmF5KHYpICYmIHYubGVuZ3RoID4gMSk7XG59XG5cbmFkZEhhbmRsZXIoXG5cdCdsZngyJyxcblx0dGFyZ2V0ID0+IHRhcmdldC5lZmZlY3RzICE9PSB1bmRlZmluZWQgJiYgIWhhc011bHRpRWZmZWN0cyh0YXJnZXQuZWZmZWN0cyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCwgXywgb3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IHZlcnNpb24gPSByZWFkVWludDMyKHJlYWRlcik7XG5cdFx0aWYgKHZlcnNpb24gIT09IDApIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBsZngyIHZlcnNpb25gKTtcblxuXHRcdGNvbnN0IGRlc2M6IExmeDJEZXNjcmlwdG9yID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcik7XG5cdFx0Ly8gY29uc29sZS5sb2cocmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZGVzYywgZmFsc2UsIDk5LCB0cnVlKSk7XG5cblx0XHQvLyBUT0RPOiBkb24ndCBkaXNjYXJkIGlmIHdlIGdvdCBpdCBmcm9tIGxtZnhcblx0XHQvLyBkaXNjYXJkIGlmIHJlYWQgaW4gJ2xyRlgnIHNlY3Rpb25cblx0XHR0YXJnZXQuZWZmZWN0cyA9IHBhcnNlRWZmZWN0cyhkZXNjLCAhIW9wdGlvbnMubG9nTWlzc2luZ0ZlYXR1cmVzKTtcblxuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCwgXywgb3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IGRlc2MgPSBzZXJpYWxpemVFZmZlY3RzKHRhcmdldC5lZmZlY3RzISwgISFvcHRpb25zLmxvZ01pc3NpbmdGZWF0dXJlcywgZmFsc2UpO1xuXHRcdC8vIGNvbnNvbGUubG9nKHJlcXVpcmUoJ3V0aWwnKS5pbnNwZWN0KGRlc2MsIGZhbHNlLCA5OSwgdHJ1ZSkpO1xuXG5cdFx0d3JpdGVVaW50MzIod3JpdGVyLCAwKTsgLy8gdmVyc2lvblxuXHRcdHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgJ251bGwnLCBkZXNjKTtcblx0fSxcbik7XG5cbmludGVyZmFjZSBDaW5mRGVzY3JpcHRvciB7XG5cdFZyc246IHsgbWFqb3I6IG51bWJlcjsgbWlub3I6IG51bWJlcjsgZml4OiBudW1iZXI7IH07XG5cdHBzVmVyc2lvbj86IHsgbWFqb3I6IG51bWJlcjsgbWlub3I6IG51bWJlcjsgZml4OiBudW1iZXI7IH07XG5cdGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cdHJlYXNvbjogc3RyaW5nO1xuXHRFbmduOiBzdHJpbmc7IC8vICdFbmduLmNvbXBDb3JlJztcblx0ZW5hYmxlQ29tcENvcmU6IHN0cmluZzsgLy8gJ2VuYWJsZS5mZWF0dXJlJztcblx0ZW5hYmxlQ29tcENvcmVHUFU6IHN0cmluZzsgLy8gJ2VuYWJsZS5mZWF0dXJlJztcblx0ZW5hYmxlQ29tcENvcmVUaHJlYWRzPzogc3RyaW5nOyAvLyAnZW5hYmxlLmZlYXR1cmUnO1xuXHRjb21wQ29yZVN1cHBvcnQ6IHN0cmluZzsgLy8gJ3JlYXNvbi5zdXBwb3J0ZWQnO1xuXHRjb21wQ29yZUdQVVN1cHBvcnQ6IHN0cmluZzsgLy8gJ3JlYXNvbi5mZWF0dXJlRGlzYWJsZWQnO1xufVxuXG5hZGRIYW5kbGVyKFxuXHQnY2luZicsXG5cdGhhc0tleSgnY29tcG9zaXRvclVzZWQnKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0Y29uc3QgZGVzYyA9IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpIGFzIENpbmZEZXNjcmlwdG9yO1xuXHRcdC8vIGNvbnNvbGUubG9nKHJlcXVpcmUoJ3V0aWwnKS5pbnNwZWN0KGRlc2MsIGZhbHNlLCA5OSwgdHJ1ZSkpO1xuXG5cdFx0dGFyZ2V0LmNvbXBvc2l0b3JVc2VkID0ge1xuXHRcdFx0ZGVzY3JpcHRpb246IGRlc2MuZGVzY3JpcHRpb24sXG5cdFx0XHRyZWFzb246IGRlc2MucmVhc29uLFxuXHRcdFx0ZW5naW5lOiBkZXNjLkVuZ24uc3BsaXQoJy4nKVsxXSxcblx0XHRcdGVuYWJsZUNvbXBDb3JlOiBkZXNjLmVuYWJsZUNvbXBDb3JlLnNwbGl0KCcuJylbMV0sXG5cdFx0XHRlbmFibGVDb21wQ29yZUdQVTogZGVzYy5lbmFibGVDb21wQ29yZUdQVS5zcGxpdCgnLicpWzFdLFxuXHRcdFx0Y29tcENvcmVTdXBwb3J0OiBkZXNjLmNvbXBDb3JlU3VwcG9ydC5zcGxpdCgnLicpWzFdLFxuXHRcdFx0Y29tcENvcmVHUFVTdXBwb3J0OiBkZXNjLmNvbXBDb3JlR1BVU3VwcG9ydC5zcGxpdCgnLicpWzFdLFxuXHRcdH07XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBjaW5mID0gdGFyZ2V0LmNvbXBvc2l0b3JVc2VkITtcblx0XHRjb25zdCBkZXNjOiBDaW5mRGVzY3JpcHRvciA9IHtcblx0XHRcdFZyc246IHsgbWFqb3I6IDEsIG1pbm9yOiAwLCBmaXg6IDAgfSwgLy8gVEVNUFxuXHRcdFx0Ly8gcHNWZXJzaW9uOiB7IG1ham9yOiAyMiwgbWlub3I6IDMsIGZpeDogMSB9LCAvLyBURVNUSU5HXG5cdFx0XHRkZXNjcmlwdGlvbjogY2luZi5kZXNjcmlwdGlvbixcblx0XHRcdHJlYXNvbjogY2luZi5yZWFzb24sXG5cdFx0XHRFbmduOiBgRW5nbi4ke2NpbmYuZW5naW5lfWAsXG5cdFx0XHRlbmFibGVDb21wQ29yZTogYGVuYWJsZS4ke2NpbmYuZW5hYmxlQ29tcENvcmV9YCxcblx0XHRcdGVuYWJsZUNvbXBDb3JlR1BVOiBgZW5hYmxlLiR7Y2luZi5lbmFibGVDb21wQ29yZUdQVX1gLFxuXHRcdFx0Ly8gZW5hYmxlQ29tcENvcmVUaHJlYWRzOiBgZW5hYmxlLmZlYXR1cmVgLCAvLyBURVNUSU5HXG5cdFx0XHRjb21wQ29yZVN1cHBvcnQ6IGByZWFzb24uJHtjaW5mLmNvbXBDb3JlU3VwcG9ydH1gLFxuXHRcdFx0Y29tcENvcmVHUFVTdXBwb3J0OiBgcmVhc29uLiR7Y2luZi5jb21wQ29yZUdQVVN1cHBvcnR9YCxcblx0XHR9O1xuXHRcdHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgJ251bGwnLCBkZXNjKTtcblx0fSxcbik7XG5cbi8vIGV4dGVuc2lvbiBzZXR0aW5ncyA/LCBpZ25vcmUgaXRcbmFkZEhhbmRsZXIoXG5cdCdleHRuJyxcblx0dGFyZ2V0ID0+ICh0YXJnZXQgYXMgYW55KS5fZXh0biAhPT0gdW5kZWZpbmVkLFxuXHQocmVhZGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBkZXNjOiBFeHRlbnNpb25EZXNjID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcik7XG5cdFx0Ly8gY29uc29sZS5sb2cocmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZGVzYywgZmFsc2UsIDk5LCB0cnVlKSk7XG5cblx0XHRpZiAoTU9DS19IQU5ETEVSUykgKHRhcmdldCBhcyBhbnkpLl9leHRuID0gZGVzYztcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Ly8gVE9ETzogbmVlZCB0byBhZGQgY29ycmVjdCB0eXBlcyBmb3IgZGVzYyBmaWVsZHMgKHJlc291cmNlcy9zcmMucHNkKVxuXHRcdGlmIChNT0NLX0hBTkRMRVJTKSB3cml0ZVZlcnNpb25BbmREZXNjcmlwdG9yKHdyaXRlciwgJycsICdudWxsJywgKHRhcmdldCBhcyBhbnkpLl9leHRuKTtcblx0fSxcbik7XG5cbmFkZEhhbmRsZXIoXG5cdCdpT3BhJyxcblx0aGFzS2V5KCdmaWxsT3BhY2l0eScpLFxuXHQocmVhZGVyLCB0YXJnZXQpID0+IHtcblx0XHR0YXJnZXQuZmlsbE9wYWNpdHkgPSByZWFkVWludDgocmVhZGVyKSAvIDB4ZmY7XG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgMyk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdHdyaXRlVWludDgod3JpdGVyLCB0YXJnZXQuZmlsbE9wYWNpdHkhICogMHhmZik7XG5cdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDMpO1xuXHR9LFxuKTtcblxuYWRkSGFuZGxlcihcblx0J3RzbHknLFxuXHRoYXNLZXkoJ3RyYW5zcGFyZW5jeVNoYXBlc0xheWVyJyksXG5cdChyZWFkZXIsIHRhcmdldCkgPT4ge1xuXHRcdHRhcmdldC50cmFuc3BhcmVuY3lTaGFwZXNMYXllciA9ICEhcmVhZFVpbnQ4KHJlYWRlcik7XG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgMyk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdHdyaXRlVWludDgod3JpdGVyLCB0YXJnZXQudHJhbnNwYXJlbmN5U2hhcGVzTGF5ZXIgPyAxIDogMCk7XG5cdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDMpO1xuXHR9LFxuKTtcblxuLy8gZGVzY3JpcHRvciBoZWxwZXJzXG5cbmZ1bmN0aW9uIHBhcnNlR3JhZGllbnQoZ3JhZDogRGVzY2lwdG9yR3JhZGllbnQpOiBFZmZlY3RTb2xpZEdyYWRpZW50IHwgRWZmZWN0Tm9pc2VHcmFkaWVudCB7XG5cdGlmIChncmFkLkdyZEYgPT09ICdHcmRGLkNzdFMnKSB7XG5cdFx0Y29uc3Qgc2FtcGxlczogbnVtYmVyID0gZ3JhZC5JbnRyIHx8IDQwOTY7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0dHlwZTogJ3NvbGlkJyxcblx0XHRcdG5hbWU6IGdyYWRbJ05tICAnXSxcblx0XHRcdHNtb290aG5lc3M6IGdyYWQuSW50ciAvIDQwOTYsXG5cdFx0XHRjb2xvclN0b3BzOiBncmFkLkNscnMubWFwKHMgPT4gKHtcblx0XHRcdFx0Y29sb3I6IHBhcnNlQ29sb3Ioc1snQ2xyICddKSxcblx0XHRcdFx0bG9jYXRpb246IHMuTGN0biAvIHNhbXBsZXMsXG5cdFx0XHRcdG1pZHBvaW50OiBzLk1kcG4gLyAxMDAsXG5cdFx0XHR9KSksXG5cdFx0XHRvcGFjaXR5U3RvcHM6IGdyYWQuVHJucy5tYXAocyA9PiAoe1xuXHRcdFx0XHRvcGFjaXR5OiBwYXJzZVBlcmNlbnQocy5PcGN0KSxcblx0XHRcdFx0bG9jYXRpb246IHMuTGN0biAvIHNhbXBsZXMsXG5cdFx0XHRcdG1pZHBvaW50OiBzLk1kcG4gLyAxMDAsXG5cdFx0XHR9KSksXG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dHlwZTogJ25vaXNlJyxcblx0XHRcdG5hbWU6IGdyYWRbJ05tICAnXSxcblx0XHRcdHJvdWdobmVzczogZ3JhZC5TbXRoIC8gNDA5Nixcblx0XHRcdGNvbG9yTW9kZWw6IENsclMuZGVjb2RlKGdyYWQuQ2xyUyksXG5cdFx0XHRyYW5kb21TZWVkOiBncmFkLlJuZFMsXG5cdFx0XHRyZXN0cmljdENvbG9yczogISFncmFkLlZjdEMsXG5cdFx0XHRhZGRUcmFuc3BhcmVuY3k6ICEhZ3JhZC5TaFRyLFxuXHRcdFx0bWluOiBncmFkWydNbm0gJ10ubWFwKHggPT4geCAvIDEwMCksXG5cdFx0XHRtYXg6IGdyYWRbJ014bSAnXS5tYXAoeCA9PiB4IC8gMTAwKSxcblx0XHR9O1xuXHR9XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZUdyYWRpZW50KGdyYWQ6IEVmZmVjdFNvbGlkR3JhZGllbnQgfCBFZmZlY3ROb2lzZUdyYWRpZW50KTogRGVzY2lwdG9yR3JhZGllbnQge1xuXHRpZiAoZ3JhZC50eXBlID09PSAnc29saWQnKSB7XG5cdFx0Y29uc3Qgc2FtcGxlcyA9IE1hdGgucm91bmQoKGdyYWQuc21vb3RobmVzcyA/PyAxKSAqIDQwOTYpO1xuXHRcdHJldHVybiB7XG5cdFx0XHQnTm0gICc6IGdyYWQubmFtZSB8fCAnJyxcblx0XHRcdEdyZEY6ICdHcmRGLkNzdFMnLFxuXHRcdFx0SW50cjogc2FtcGxlcyxcblx0XHRcdENscnM6IGdyYWQuY29sb3JTdG9wcy5tYXAocyA9PiAoe1xuXHRcdFx0XHQnQ2xyICc6IHNlcmlhbGl6ZUNvbG9yKHMuY29sb3IpLFxuXHRcdFx0XHRUeXBlOiAnQ2xyeS5Vc3JTJyxcblx0XHRcdFx0TGN0bjogTWF0aC5yb3VuZChzLmxvY2F0aW9uICogc2FtcGxlcyksXG5cdFx0XHRcdE1kcG46IE1hdGgucm91bmQoKHMubWlkcG9pbnQgPz8gMC41KSAqIDEwMCksXG5cdFx0XHR9KSksXG5cdFx0XHRUcm5zOiBncmFkLm9wYWNpdHlTdG9wcy5tYXAocyA9PiAoe1xuXHRcdFx0XHRPcGN0OiB1bml0c1BlcmNlbnQocy5vcGFjaXR5KSxcblx0XHRcdFx0TGN0bjogTWF0aC5yb3VuZChzLmxvY2F0aW9uICogc2FtcGxlcyksXG5cdFx0XHRcdE1kcG46IE1hdGgucm91bmQoKHMubWlkcG9pbnQgPz8gMC41KSAqIDEwMCksXG5cdFx0XHR9KSksXG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0R3JkRjogJ0dyZEYuQ2xOcycsXG5cdFx0XHQnTm0gICc6IGdyYWQubmFtZSB8fCAnJyxcblx0XHRcdFNoVHI6ICEhZ3JhZC5hZGRUcmFuc3BhcmVuY3ksXG5cdFx0XHRWY3RDOiAhIWdyYWQucmVzdHJpY3RDb2xvcnMsXG5cdFx0XHRDbHJTOiBDbHJTLmVuY29kZShncmFkLmNvbG9yTW9kZWwpLFxuXHRcdFx0Um5kUzogZ3JhZC5yYW5kb21TZWVkIHx8IDAsXG5cdFx0XHRTbXRoOiBNYXRoLnJvdW5kKChncmFkLnJvdWdobmVzcyA/PyAxKSAqIDQwOTYpLFxuXHRcdFx0J01ubSAnOiAoZ3JhZC5taW4gfHwgWzAsIDAsIDAsIDBdKS5tYXAoeCA9PiB4ICogMTAwKSxcblx0XHRcdCdNeG0gJzogKGdyYWQubWF4IHx8IFsxLCAxLCAxLCAxXSkubWFwKHggPT4geCAqIDEwMCksXG5cdFx0fTtcblx0fVxufVxuXG5mdW5jdGlvbiBwYXJzZUdyYWRpZW50Q29udGVudChkZXNjcmlwdG9yOiBEZXNjcmlwdG9yR3JhZGllbnRDb250ZW50KSB7XG5cdGNvbnN0IHJlc3VsdCA9IHBhcnNlR3JhZGllbnQoZGVzY3JpcHRvci5HcmFkKSBhcyAoRWZmZWN0U29saWRHcmFkaWVudCB8IEVmZmVjdE5vaXNlR3JhZGllbnQpICYgRXh0cmFHcmFkaWVudEluZm87XG5cdHJlc3VsdC5zdHlsZSA9IEdyZFQuZGVjb2RlKGRlc2NyaXB0b3IuVHlwZSk7XG5cdGlmIChkZXNjcmlwdG9yLkR0aHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0LmRpdGhlciA9IGRlc2NyaXB0b3IuRHRocjtcblx0aWYgKGRlc2NyaXB0b3IuUnZycyAhPT0gdW5kZWZpbmVkKSByZXN1bHQucmV2ZXJzZSA9IGRlc2NyaXB0b3IuUnZycztcblx0aWYgKGRlc2NyaXB0b3IuQW5nbCAhPT0gdW5kZWZpbmVkKSByZXN1bHQuYW5nbGUgPSBwYXJzZUFuZ2xlKGRlc2NyaXB0b3IuQW5nbCk7XG5cdGlmIChkZXNjcmlwdG9yWydTY2wgJ10gIT09IHVuZGVmaW5lZCkgcmVzdWx0LnNjYWxlID0gcGFyc2VQZXJjZW50KGRlc2NyaXB0b3JbJ1NjbCAnXSk7XG5cdGlmIChkZXNjcmlwdG9yLkFsZ24gIT09IHVuZGVmaW5lZCkgcmVzdWx0LmFsaWduID0gZGVzY3JpcHRvci5BbGduO1xuXHRpZiAoZGVzY3JpcHRvci5PZnN0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXN1bHQub2Zmc2V0ID0ge1xuXHRcdFx0eDogcGFyc2VQZXJjZW50KGRlc2NyaXB0b3IuT2ZzdC5IcnpuKSxcblx0XHRcdHk6IHBhcnNlUGVyY2VudChkZXNjcmlwdG9yLk9mc3QuVnJ0Yylcblx0XHR9O1xuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlUGF0dGVybkNvbnRlbnQoZGVzY3JpcHRvcjogRGVzY3JpcHRvclBhdHRlcm5Db250ZW50KSB7XG5cdGNvbnN0IHJlc3VsdDogRWZmZWN0UGF0dGVybiAmIEV4dHJhUGF0dGVybkluZm8gPSB7XG5cdFx0bmFtZTogZGVzY3JpcHRvci5QdHJuWydObSAgJ10sXG5cdFx0aWQ6IGRlc2NyaXB0b3IuUHRybi5JZG50LFxuXHR9O1xuXHRpZiAoZGVzY3JpcHRvci5MbmtkICE9PSB1bmRlZmluZWQpIHJlc3VsdC5saW5rZWQgPSBkZXNjcmlwdG9yLkxua2Q7XG5cdGlmIChkZXNjcmlwdG9yLnBoYXNlICE9PSB1bmRlZmluZWQpIHJlc3VsdC5waGFzZSA9IHsgeDogZGVzY3JpcHRvci5waGFzZS5IcnpuLCB5OiBkZXNjcmlwdG9yLnBoYXNlLlZydGMgfTtcblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gcGFyc2VWZWN0b3JDb250ZW50KGRlc2NyaXB0b3I6IERlc2NyaXB0b3JWZWN0b3JDb250ZW50KTogVmVjdG9yQ29udGVudCB7XG5cdGlmICgnR3JhZCcgaW4gZGVzY3JpcHRvcikge1xuXHRcdHJldHVybiBwYXJzZUdyYWRpZW50Q29udGVudChkZXNjcmlwdG9yKTtcblx0fSBlbHNlIGlmICgnUHRybicgaW4gZGVzY3JpcHRvcikge1xuXHRcdHJldHVybiB7IHR5cGU6ICdwYXR0ZXJuJywgLi4ucGFyc2VQYXR0ZXJuQ29udGVudChkZXNjcmlwdG9yKSB9O1xuXHR9IGVsc2UgaWYgKCdDbHIgJyBpbiBkZXNjcmlwdG9yKSB7XG5cdFx0cmV0dXJuIHsgdHlwZTogJ2NvbG9yJywgY29sb3I6IHBhcnNlQ29sb3IoZGVzY3JpcHRvclsnQ2xyICddKSB9O1xuXHR9IGVsc2Uge1xuXHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2ZWN0b3IgY29udGVudCcpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZUdyYWRpZW50Q29udGVudChjb250ZW50OiAoRWZmZWN0U29saWRHcmFkaWVudCB8IEVmZmVjdE5vaXNlR3JhZGllbnQpICYgRXh0cmFHcmFkaWVudEluZm8pIHtcblx0Y29uc3QgcmVzdWx0OiBEZXNjcmlwdG9yR3JhZGllbnRDb250ZW50ID0ge30gYXMgYW55O1xuXHRpZiAoY29udGVudC5kaXRoZXIgIT09IHVuZGVmaW5lZCkgcmVzdWx0LkR0aHIgPSBjb250ZW50LmRpdGhlcjtcblx0aWYgKGNvbnRlbnQucmV2ZXJzZSAhPT0gdW5kZWZpbmVkKSByZXN1bHQuUnZycyA9IGNvbnRlbnQucmV2ZXJzZTtcblx0aWYgKGNvbnRlbnQuYW5nbGUgIT09IHVuZGVmaW5lZCkgcmVzdWx0LkFuZ2wgPSB1bml0c0FuZ2xlKGNvbnRlbnQuYW5nbGUpO1xuXHRyZXN1bHQuVHlwZSA9IEdyZFQuZW5jb2RlKGNvbnRlbnQuc3R5bGUpO1xuXHRpZiAoY29udGVudC5hbGlnbiAhPT0gdW5kZWZpbmVkKSByZXN1bHQuQWxnbiA9IGNvbnRlbnQuYWxpZ247XG5cdGlmIChjb250ZW50LnNjYWxlICE9PSB1bmRlZmluZWQpIHJlc3VsdFsnU2NsICddID0gdW5pdHNQZXJjZW50KGNvbnRlbnQuc2NhbGUpO1xuXHRpZiAoY29udGVudC5vZmZzZXQpIHtcblx0XHRyZXN1bHQuT2ZzdCA9IHtcblx0XHRcdEhyem46IHVuaXRzUGVyY2VudChjb250ZW50Lm9mZnNldC54KSxcblx0XHRcdFZydGM6IHVuaXRzUGVyY2VudChjb250ZW50Lm9mZnNldC55KSxcblx0XHR9O1xuXHR9XG5cdHJlc3VsdC5HcmFkID0gc2VyaWFsaXplR3JhZGllbnQoY29udGVudCk7XG5cdHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZVBhdHRlcm5Db250ZW50KGNvbnRlbnQ6IEVmZmVjdFBhdHRlcm4gJiBFeHRyYVBhdHRlcm5JbmZvKSB7XG5cdGNvbnN0IHJlc3VsdDogRGVzY3JpcHRvclBhdHRlcm5Db250ZW50ID0ge1xuXHRcdFB0cm46IHtcblx0XHRcdCdObSAgJzogY29udGVudC5uYW1lIHx8ICcnLFxuXHRcdFx0SWRudDogY29udGVudC5pZCB8fCAnJyxcblx0XHR9XG5cdH07XG5cdGlmIChjb250ZW50LmxpbmtlZCAhPT0gdW5kZWZpbmVkKSByZXN1bHQuTG5rZCA9ICEhY29udGVudC5saW5rZWQ7XG5cdGlmIChjb250ZW50LnBoYXNlICE9PSB1bmRlZmluZWQpIHJlc3VsdC5waGFzZSA9IHsgSHJ6bjogY29udGVudC5waGFzZS54LCBWcnRjOiBjb250ZW50LnBoYXNlLnkgfTtcblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplVmVjdG9yQ29udGVudChjb250ZW50OiBWZWN0b3JDb250ZW50KTogeyBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yVmVjdG9yQ29udGVudDsga2V5OiBzdHJpbmc7IH0ge1xuXHRpZiAoY29udGVudC50eXBlID09PSAnY29sb3InKSB7XG5cdFx0cmV0dXJuIHsga2V5OiAnU29DbycsIGRlc2NyaXB0b3I6IHsgJ0NsciAnOiBzZXJpYWxpemVDb2xvcihjb250ZW50LmNvbG9yKSB9IH07XG5cdH0gZWxzZSBpZiAoY29udGVudC50eXBlID09PSAncGF0dGVybicpIHtcblx0XHRyZXR1cm4geyBrZXk6ICdQdEZsJywgZGVzY3JpcHRvcjogc2VyaWFsaXplUGF0dGVybkNvbnRlbnQoY29udGVudCkgfTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4geyBrZXk6ICdHZEZsJywgZGVzY3JpcHRvcjogc2VyaWFsaXplR3JhZGllbnRDb250ZW50KGNvbnRlbnQpIH07XG5cdH1cbn1cblxuZnVuY3Rpb24gcGFyc2VDb2xvcihjb2xvcjogRGVzY3JpcHRvckNvbG9yKTogQ29sb3Ige1xuXHRpZiAoJ0ggICAnIGluIGNvbG9yKSB7XG5cdFx0cmV0dXJuIHsgaDogcGFyc2VQZXJjZW50T3JBbmdsZShjb2xvclsnSCAgICddKSwgczogY29sb3IuU3RydCwgYjogY29sb3IuQnJnaCB9O1xuXHR9IGVsc2UgaWYgKCdSZCAgJyBpbiBjb2xvcikge1xuXHRcdHJldHVybiB7IHI6IGNvbG9yWydSZCAgJ10sIGc6IGNvbG9yWydHcm4gJ10sIGI6IGNvbG9yWydCbCAgJ10gfTtcblx0fSBlbHNlIGlmICgnQ3luICcgaW4gY29sb3IpIHtcblx0XHRyZXR1cm4geyBjOiBjb2xvclsnQ3luICddLCBtOiBjb2xvci5NZ250LCB5OiBjb2xvclsnWWx3ICddLCBrOiBjb2xvci5CbGNrIH07XG5cdH0gZWxzZSBpZiAoJ0dyeSAnIGluIGNvbG9yKSB7XG5cdFx0cmV0dXJuIHsgazogY29sb3JbJ0dyeSAnXSB9O1xuXHR9IGVsc2UgaWYgKCdMbW5jJyBpbiBjb2xvcikge1xuXHRcdHJldHVybiB7IGw6IGNvbG9yLkxtbmMsIGE6IGNvbG9yWydBICAgJ10sIGI6IGNvbG9yWydCICAgJ10gfTtcblx0fSBlbHNlIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGNvbG9yIGRlc2NyaXB0b3InKTtcblx0fVxufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVDb2xvcihjb2xvcjogQ29sb3IgfCB1bmRlZmluZWQpOiBEZXNjcmlwdG9yQ29sb3Ige1xuXHRpZiAoIWNvbG9yKSB7XG5cdFx0cmV0dXJuIHsgJ1JkICAnOiAwLCAnR3JuICc6IDAsICdCbCAgJzogMCB9O1xuXHR9IGVsc2UgaWYgKCdyJyBpbiBjb2xvcikge1xuXHRcdHJldHVybiB7ICdSZCAgJzogY29sb3IuciB8fCAwLCAnR3JuICc6IGNvbG9yLmcgfHwgMCwgJ0JsICAnOiBjb2xvci5iIHx8IDAgfTtcblx0fSBlbHNlIGlmICgnaCcgaW4gY29sb3IpIHtcblx0XHRyZXR1cm4geyAnSCAgICc6IHVuaXRzQW5nbGUoY29sb3IuaCAqIDM2MCksIFN0cnQ6IGNvbG9yLnMgfHwgMCwgQnJnaDogY29sb3IuYiB8fCAwIH07XG5cdH0gZWxzZSBpZiAoJ2MnIGluIGNvbG9yKSB7XG5cdFx0cmV0dXJuIHsgJ0N5biAnOiBjb2xvci5jIHx8IDAsIE1nbnQ6IGNvbG9yLm0gfHwgMCwgJ1lsdyAnOiBjb2xvci55IHx8IDAsIEJsY2s6IGNvbG9yLmsgfHwgMCB9O1xuXHR9IGVsc2UgaWYgKCdsJyBpbiBjb2xvcikge1xuXHRcdHJldHVybiB7IExtbmM6IGNvbG9yLmwgfHwgMCwgJ0EgICAnOiBjb2xvci5hIHx8IDAsICdCICAgJzogY29sb3IuYiB8fCAwIH07XG5cdH0gZWxzZSBpZiAoJ2snIGluIGNvbG9yKSB7XG5cdFx0cmV0dXJuIHsgJ0dyeSAnOiBjb2xvci5rIH07XG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvbG9yIHZhbHVlJyk7XG5cdH1cbn1cblxudHlwZSBBbGxFZmZlY3RzID0gTGF5ZXJFZmZlY3RTaGFkb3cgJiBMYXllckVmZmVjdHNPdXRlckdsb3cgJiBMYXllckVmZmVjdFN0cm9rZSAmXG5cdExheWVyRWZmZWN0SW5uZXJHbG93ICYgTGF5ZXJFZmZlY3RCZXZlbCAmIExheWVyRWZmZWN0U29saWRGaWxsICZcblx0TGF5ZXJFZmZlY3RQYXR0ZXJuT3ZlcmxheSAmIExheWVyRWZmZWN0U2F0aW4gJiBMYXllckVmZmVjdEdyYWRpZW50T3ZlcmxheTtcblxuZnVuY3Rpb24gcGFyc2VFZmZlY3RPYmplY3Qob2JqOiBhbnksIHJlcG9ydEVycm9yczogYm9vbGVhbikge1xuXHRjb25zdCByZXN1bHQ6IEFsbEVmZmVjdHMgPSB7fSBhcyBhbnk7XG5cblx0Zm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob2JqKSkge1xuXHRcdGNvbnN0IHZhbCA9IG9ialtrZXldO1xuXG5cdFx0c3dpdGNoIChrZXkpIHtcblx0XHRcdGNhc2UgJ2VuYWInOiByZXN1bHQuZW5hYmxlZCA9ICEhdmFsOyBicmVhaztcblx0XHRcdGNhc2UgJ3VnbGcnOiByZXN1bHQudXNlR2xvYmFsTGlnaHQgPSAhIXZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICdBbnRBJzogcmVzdWx0LmFudGlhbGlhc2VkID0gISF2YWw7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnQWxnbic6IHJlc3VsdC5hbGlnbiA9ICEhdmFsOyBicmVhaztcblx0XHRcdGNhc2UgJ0R0aHInOiByZXN1bHQuZGl0aGVyID0gISF2YWw7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnSW52cic6IHJlc3VsdC5pbnZlcnQgPSAhIXZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICdSdnJzJzogcmVzdWx0LnJldmVyc2UgPSAhIXZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICdDbHIgJzogcmVzdWx0LmNvbG9yID0gcGFyc2VDb2xvcih2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ2hnbEMnOiByZXN1bHQuaGlnaGxpZ2h0Q29sb3IgPSBwYXJzZUNvbG9yKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnc2R3Qyc6IHJlc3VsdC5zaGFkb3dDb2xvciA9IHBhcnNlQ29sb3IodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdTdHlsJzogcmVzdWx0LnBvc2l0aW9uID0gRlN0bC5kZWNvZGUodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdNZCAgJzogcmVzdWx0LmJsZW5kTW9kZSA9IEJsbk0uZGVjb2RlKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnaGdsTSc6IHJlc3VsdC5oaWdobGlnaHRCbGVuZE1vZGUgPSBCbG5NLmRlY29kZSh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ3Nkd00nOiByZXN1bHQuc2hhZG93QmxlbmRNb2RlID0gQmxuTS5kZWNvZGUodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdidmxTJzogcmVzdWx0LnN0eWxlID0gQkVTbC5kZWNvZGUodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdidmxEJzogcmVzdWx0LmRpcmVjdGlvbiA9IEJFU3MuZGVjb2RlKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnYnZsVCc6IHJlc3VsdC50ZWNobmlxdWUgPSBidmxULmRlY29kZSh2YWwpIGFzIGFueTsgYnJlYWs7XG5cdFx0XHRjYXNlICdHbHdUJzogcmVzdWx0LnRlY2huaXF1ZSA9IEJFVEUuZGVjb2RlKHZhbCkgYXMgYW55OyBicmVhaztcblx0XHRcdGNhc2UgJ2dsd1MnOiByZXN1bHQuc291cmNlID0gSUdTci5kZWNvZGUodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdUeXBlJzogcmVzdWx0LnR5cGUgPSBHcmRULmRlY29kZSh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ09wY3QnOiByZXN1bHQub3BhY2l0eSA9IHBhcnNlUGVyY2VudCh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ2hnbE8nOiByZXN1bHQuaGlnaGxpZ2h0T3BhY2l0eSA9IHBhcnNlUGVyY2VudCh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ3Nkd08nOiByZXN1bHQuc2hhZG93T3BhY2l0eSA9IHBhcnNlUGVyY2VudCh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ2xhZ2wnOiByZXN1bHQuYW5nbGUgPSBwYXJzZUFuZ2xlKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnQW5nbCc6IHJlc3VsdC5hbmdsZSA9IHBhcnNlQW5nbGUodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdMYWxkJzogcmVzdWx0LmFsdGl0dWRlID0gcGFyc2VBbmdsZSh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ1NmdG4nOiByZXN1bHQuc29mdGVuID0gcGFyc2VVbml0cyh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ3NyZ1InOiByZXN1bHQuc3RyZW5ndGggPSBwYXJzZVBlcmNlbnQodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdibHVyJzogcmVzdWx0LnNpemUgPSBwYXJzZVVuaXRzKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnTm9zZSc6IHJlc3VsdC5ub2lzZSA9IHBhcnNlUGVyY2VudCh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ0lucHInOiByZXN1bHQucmFuZ2UgPSBwYXJzZVBlcmNlbnQodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdDa210JzogcmVzdWx0LmNob2tlID0gcGFyc2VVbml0cyh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ1NoZE4nOiByZXN1bHQuaml0dGVyID0gcGFyc2VQZXJjZW50KHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnRHN0bic6IHJlc3VsdC5kaXN0YW5jZSA9IHBhcnNlVW5pdHModmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdTY2wgJzogcmVzdWx0LnNjYWxlID0gcGFyc2VQZXJjZW50KHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRybic6IHJlc3VsdC5wYXR0ZXJuID0geyBuYW1lOiB2YWxbJ05tICAnXSwgaWQ6IHZhbC5JZG50IH07IGJyZWFrO1xuXHRcdFx0Y2FzZSAncGhhc2UnOiByZXN1bHQucGhhc2UgPSB7IHg6IHZhbC5IcnpuLCB5OiB2YWwuVnJ0YyB9OyBicmVhaztcblx0XHRcdGNhc2UgJ09mc3QnOiByZXN1bHQub2Zmc2V0ID0geyB4OiBwYXJzZVBlcmNlbnQodmFsLkhyem4pLCB5OiBwYXJzZVBlcmNlbnQodmFsLlZydGMpIH07IGJyZWFrO1xuXHRcdFx0Y2FzZSAnTXBnUyc6XG5cdFx0XHRjYXNlICdUcm5TJzpcblx0XHRcdFx0cmVzdWx0LmNvbnRvdXIgPSB7XG5cdFx0XHRcdFx0bmFtZTogdmFsWydObSAgJ10sXG5cdFx0XHRcdFx0Y3VydmU6ICh2YWxbJ0NydiAnXSBhcyBhbnlbXSkubWFwKHAgPT4gKHsgeDogcC5IcnpuLCB5OiBwLlZydGMgfSkpLFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ0dyYWQnOiByZXN1bHQuZ3JhZGllbnQgPSBwYXJzZUdyYWRpZW50KHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAndXNlVGV4dHVyZSc6XG5cdFx0XHRjYXNlICd1c2VTaGFwZSc6XG5cdFx0XHRjYXNlICdsYXllckNvbmNlYWxzJzpcblx0XHRcdGNhc2UgJ3ByZXNlbnQnOlxuXHRcdFx0Y2FzZSAnc2hvd0luRGlhbG9nJzpcblx0XHRcdGNhc2UgJ2FudGlhbGlhc0dsb3NzJzogcmVzdWx0W2tleV0gPSB2YWw7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0cmVwb3J0RXJyb3JzICYmIGNvbnNvbGUubG9nKGBJbnZhbGlkIGVmZmVjdCBrZXk6ICcke2tleX0nOmAsIHZhbCk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplRWZmZWN0T2JqZWN0KG9iajogYW55LCBvYmpOYW1lOiBzdHJpbmcsIHJlcG9ydEVycm9yczogYm9vbGVhbikge1xuXHRjb25zdCByZXN1bHQ6IGFueSA9IHt9O1xuXG5cdGZvciAoY29uc3Qgb2JqS2V5IG9mIE9iamVjdC5rZXlzKG9iaikpIHtcblx0XHRjb25zdCBrZXk6IGtleW9mIEFsbEVmZmVjdHMgPSBvYmpLZXkgYXMgYW55O1xuXHRcdGNvbnN0IHZhbCA9IG9ialtrZXldO1xuXG5cdFx0c3dpdGNoIChrZXkpIHtcblx0XHRcdGNhc2UgJ2VuYWJsZWQnOiByZXN1bHQuZW5hYiA9ICEhdmFsOyBicmVhaztcblx0XHRcdGNhc2UgJ3VzZUdsb2JhbExpZ2h0JzogcmVzdWx0LnVnbGcgPSAhIXZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICdhbnRpYWxpYXNlZCc6IHJlc3VsdC5BbnRBID0gISF2YWw7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnYWxpZ24nOiByZXN1bHQuQWxnbiA9ICEhdmFsOyBicmVhaztcblx0XHRcdGNhc2UgJ2RpdGhlcic6IHJlc3VsdC5EdGhyID0gISF2YWw7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnaW52ZXJ0JzogcmVzdWx0LkludnIgPSAhIXZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICdyZXZlcnNlJzogcmVzdWx0LlJ2cnMgPSAhIXZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICdjb2xvcic6IHJlc3VsdFsnQ2xyICddID0gc2VyaWFsaXplQ29sb3IodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdoaWdobGlnaHRDb2xvcic6IHJlc3VsdC5oZ2xDID0gc2VyaWFsaXplQ29sb3IodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdzaGFkb3dDb2xvcic6IHJlc3VsdC5zZHdDID0gc2VyaWFsaXplQ29sb3IodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdwb3NpdGlvbic6IHJlc3VsdC5TdHlsID0gRlN0bC5lbmNvZGUodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdibGVuZE1vZGUnOiByZXN1bHRbJ01kICAnXSA9IEJsbk0uZW5jb2RlKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnaGlnaGxpZ2h0QmxlbmRNb2RlJzogcmVzdWx0LmhnbE0gPSBCbG5NLmVuY29kZSh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ3NoYWRvd0JsZW5kTW9kZSc6IHJlc3VsdC5zZHdNID0gQmxuTS5lbmNvZGUodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdzdHlsZSc6IHJlc3VsdC5idmxTID0gQkVTbC5lbmNvZGUodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdkaXJlY3Rpb24nOiByZXN1bHQuYnZsRCA9IEJFU3MuZW5jb2RlKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAndGVjaG5pcXVlJzpcblx0XHRcdFx0aWYgKG9iak5hbWUgPT09ICdiZXZlbCcpIHtcblx0XHRcdFx0XHRyZXN1bHQuYnZsVCA9IGJ2bFQuZW5jb2RlKHZhbCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmVzdWx0Lkdsd1QgPSBCRVRFLmVuY29kZSh2YWwpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnc291cmNlJzogcmVzdWx0Lmdsd1MgPSBJR1NyLmVuY29kZSh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ3R5cGUnOiByZXN1bHQuVHlwZSA9IEdyZFQuZW5jb2RlKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnb3BhY2l0eSc6IHJlc3VsdC5PcGN0ID0gdW5pdHNQZXJjZW50KHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnaGlnaGxpZ2h0T3BhY2l0eSc6IHJlc3VsdC5oZ2xPID0gdW5pdHNQZXJjZW50KHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnc2hhZG93T3BhY2l0eSc6IHJlc3VsdC5zZHdPID0gdW5pdHNQZXJjZW50KHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnYW5nbGUnOlxuXHRcdFx0XHRpZiAob2JqTmFtZSA9PT0gJ2dyYWRpZW50T3ZlcmxheScpIHtcblx0XHRcdFx0XHRyZXN1bHQuQW5nbCA9IHVuaXRzQW5nbGUodmFsKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXN1bHQubGFnbCA9IHVuaXRzQW5nbGUodmFsKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2FsdGl0dWRlJzogcmVzdWx0LkxhbGQgPSB1bml0c0FuZ2xlKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnc29mdGVuJzogcmVzdWx0LlNmdG4gPSB1bml0c1ZhbHVlKHZhbCwga2V5KTsgYnJlYWs7XG5cdFx0XHRjYXNlICdzdHJlbmd0aCc6IHJlc3VsdC5zcmdSID0gdW5pdHNQZXJjZW50KHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnc2l6ZSc6IHJlc3VsdC5ibHVyID0gdW5pdHNWYWx1ZSh2YWwsIGtleSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnbm9pc2UnOiByZXN1bHQuTm9zZSA9IHVuaXRzUGVyY2VudCh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ3JhbmdlJzogcmVzdWx0LklucHIgPSB1bml0c1BlcmNlbnQodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdjaG9rZSc6IHJlc3VsdC5Da210ID0gdW5pdHNWYWx1ZSh2YWwsIGtleSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnaml0dGVyJzogcmVzdWx0LlNoZE4gPSB1bml0c1BlcmNlbnQodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdkaXN0YW5jZSc6IHJlc3VsdC5Ec3RuID0gdW5pdHNWYWx1ZSh2YWwsIGtleSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnc2NhbGUnOiByZXN1bHRbJ1NjbCAnXSA9IHVuaXRzUGVyY2VudCh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ3BhdHRlcm4nOiByZXN1bHQuUHRybiA9IHsgJ05tICAnOiB2YWwubmFtZSwgSWRudDogdmFsLmlkIH07IGJyZWFrO1xuXHRcdFx0Y2FzZSAncGhhc2UnOiByZXN1bHQucGhhc2UgPSB7IEhyem46IHZhbC54LCBWcnRjOiB2YWwueSB9OyBicmVhaztcblx0XHRcdGNhc2UgJ29mZnNldCc6IHJlc3VsdC5PZnN0ID0geyBIcnpuOiB1bml0c1BlcmNlbnQodmFsLngpLCBWcnRjOiB1bml0c1BlcmNlbnQodmFsLnkpIH07IGJyZWFrO1xuXHRcdFx0Y2FzZSAnY29udG91cic6IHtcblx0XHRcdFx0cmVzdWx0W29iak5hbWUgPT09ICdzYXRpbicgPyAnTXBnUycgOiAnVHJuUyddID0ge1xuXHRcdFx0XHRcdCdObSAgJzogKHZhbCBhcyBFZmZlY3RDb250b3VyKS5uYW1lLFxuXHRcdFx0XHRcdCdDcnYgJzogKHZhbCBhcyBFZmZlY3RDb250b3VyKS5jdXJ2ZS5tYXAocCA9PiAoeyBIcnpuOiBwLngsIFZydGM6IHAueSB9KSksXG5cdFx0XHRcdH07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSAnZ3JhZGllbnQnOiByZXN1bHQuR3JhZCA9IHNlcmlhbGl6ZUdyYWRpZW50KHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAndXNlVGV4dHVyZSc6XG5cdFx0XHRjYXNlICd1c2VTaGFwZSc6XG5cdFx0XHRjYXNlICdsYXllckNvbmNlYWxzJzpcblx0XHRcdGNhc2UgJ3ByZXNlbnQnOlxuXHRcdFx0Y2FzZSAnc2hvd0luRGlhbG9nJzpcblx0XHRcdGNhc2UgJ2FudGlhbGlhc0dsb3NzJzpcblx0XHRcdFx0cmVzdWx0W2tleV0gPSB2YWw7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0cmVwb3J0RXJyb3JzICYmIGNvbnNvbGUubG9nKGBJbnZhbGlkIGVmZmVjdCBrZXk6ICcke2tleX0nIHZhbHVlOmAsIHZhbCk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHJlc3VsdDtcbn1cbiJdLCJzb3VyY2VSb290IjoiRDpcXFByb2plY3RzXFxnaXRodWJcXGFnLXBzZFxcc3JjIn0=
|
|
2553
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,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LEdBQUcsc0JBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxNQUFNLENBQUMsU0FBUyxHQUFHO1FBQ2xCLFlBQVksRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2xDLFNBQVMsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQy9CLFFBQVEsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0tBQzlCLENBQUM7SUFFRixJQUFJLEtBQUssR0FBRyxJQUFJO1FBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQ3JELENBQUMsRUFDRCxVQUFDLE1BQU0sRUFBRSxNQUFNO0lBQ2QsSUFBTSxLQUFLLEdBQ1YsQ0FBQyxNQUFNLENBQUMsU0FBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxNQUFNLENBQUMsU0FBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsQ0FBQyxNQUFNLENBQUMsU0FBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxNQUFNLENBQUMsU0FBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUxQyx1QkFBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQ0QsQ0FBQztBQUVGLFVBQVUsQ0FDVCxNQUFNLEVBQ04sTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUNwQixVQUFDLE1BQU0sRUFBRSxNQUFNO0lBQ2QsSUFBTSxLQUFLLEdBQUcsc0JBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxxQkFBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyQixN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QUFDO0lBQ3hELElBQU0sSUFBSSxHQUEwQixFQUFFLENBQUM7SUFFdkMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVM7UUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdGLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTO1FBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdEQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVM7UUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkQsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVM7UUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDNUQsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVM7UUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hGLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTO1FBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNGLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTO1FBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlGLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTO1FBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlFLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTO1FBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBRTlFLHVCQUFXLENBQUMsTUFBTSxFQUFF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LElBQUksTUFBTSxLQUFLLEVBQUU7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFFMUQsSUFBSSxDQUFDLFlBQVksR0FBRyxzQkFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMzRCxJQUFJLENBQUMsVUFBVSxHQUFHLHNCQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsc0JBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxzQkFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLElBQUksQ0FBQyxTQUFTLEdBQUcsc0JBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDM0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxzQkFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksS0FBSyxDQUEwQixDQUFDO0lBRTFGLElBQUksQ0FBQyxHQUFHLEdBQUc7UUFDVixzQkFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU07UUFDM0Isc0JBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNO1FBQzNCLHNCQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTTtRQUMzQixzQkFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU07S0FDM0IsQ0FBQztJQUVGLElBQUksQ0FBQyxHQUFHLEdBQUc7UUFDVixzQkFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU07UUFDM0Isc0JBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNO1FBQzNCLHNCQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTTtRQUMzQixzQkFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU07S0FDM0IsQ0FBQztJQUVGLHFCQUFTLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFMUIs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QUFDO1lBQzFCLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBQSxJQUFJLENBQUMsU0FBUyxtQ0FBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDOUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxHQUFHLEdBQUcsRUFBUCxDQUFPLENBQUM7WUFDcEQsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxHQUFHLEdBQUcsRUFBUCxDQUFPLENBQUM7U0FDcEQsQ0FBQztLQUNGO0FBQ0YsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsVUFBcUM7SUFDbEUsSUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQW9FLENBQUM7SUFDakgsTUFBTSxDQUFDLEtBQUssR0FBRyxpQkFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLFNBQVM7UUFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDbkUsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLFNBQVM7UUFBRSxNQUFNLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDcEUsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLFNBQVM7UUFBRSxNQUFNLENBQUMsS0FBSyxHQUFHLHVCQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlFLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLFNBQVM7UUFBRSxNQUFN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QU07Z0JBQUUsTUFBTSxDQUFDLFFBQVEsR0FBRyx5QkFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDeEQsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsdUJBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQ2xELEtBQUssTUFBTTtnQkFBRSxNQUFNLENBQUMsS0FBSyxHQUFHLHlCQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUNyRCxLQUFLLE1BQU07Z0JBQUUsTUFBTSxDQUFDLEtBQUssR0FBRyx5QkFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDckQsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsdUJBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQ25ELEtBQUssTUFBTTtnQkFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLHlCQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUN0RCxLQUFLLE1BQU07Z0JBQUUsTUFBTSxDQUFDLFFBQVEsR0FBRyx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDdEQsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcseUJBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQ3JELEtBQUssTUFBTTtnQkFBRSxNQUFNLENBQUMsT0FBTyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUFDLE1BQU07WUFDekUsS0FBSyxPQUFPO2dCQUFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUFDLE1BQU07WUFDakUsS0FBSyxNQUFNO2dCQUFFLE1BQU0sQ0FB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LENBQUMsR0FBRztvQkFDL0MsTUFBTSxFQUFHLEdBQXFCLENBQUMsSUFBSTtvQkFDbkMsTUFBTSxFQUFHLEdBQXFCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQTFCLENBQTBCLENBQUM7aUJBQ3pFLENBQUM7Z0JBQ0YsTUFBTTthQUNOO1lBQ0QsS0FBSyxVQUFVO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUM3RCxLQUFLLFlBQVksQ0FBQztZQUNsQixLQUFLLFVBQVUsQ0FBQztZQUNoQixLQUFLLGVBQWUsQ0FBQztZQUNyQixLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssY0FBYyxDQUFDO1lBQ3BCLEtBQUssZ0JBQWdCO2dCQUNwQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO2dCQUNsQixNQUFNO1lBQ1A7Z0JBQ0MsWUFBWSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQXdCLEdBQUcsYUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3pFO0tBQ0Q7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNmLENBQUMiLCJmaWxlIjoiYWRkaXRpb25hbEluZm8uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcm9tQnl0ZUFycmF5LCB0b0J5dGVBcnJheSB9IGZyb20gJ2Jhc2U2NC1qcyc7XG5pbXBvcnQgeyByZWFkRWZmZWN0cywgd3JpdGVFZmZlY3RzIH0gZnJvbSAnLi9lZmZlY3RzSGVscGVycyc7XG5pbXBvcnQgeyBjbGFtcCwgY3JlYXRlRW51bSwgbGF5ZXJDb2xvcnMsIE1PQ0tfSEFORExFUlMgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHtcblx0TGF5ZXJBZGRpdGlvbmFsSW5mbywgTGF5ZXJFZmZlY3RTaGFkb3csIExheWVyRWZmZWN0c091dGVyR2xvdywgTGF5ZXJFZmZlY3RJbm5lckdsb3csIExheWVyRWZmZWN0QmV2ZWwsXG5cdExheWVyRWZmZWN0U29saWRGaWxsLCBMYXllckVmZmVjdFBhdHRlcm5PdmVybGF5LCBMYXllckVmZmVjdEdyYWRpZW50T3ZlcmxheSwgTGF5ZXJFZmZlY3RTYXRpbiwgRWZmZWN0Q29udG91cixcblx0RWZmZWN0Tm9pc2VHcmFkaWVudCwgQmV6aWVyUGF0aCwgUHNkLCBWZWN0b3JDb250ZW50LCBMYXllckVmZmVjdFN0cm9rZSwgRXh0cmFHcmFkaWVudEluZm8sIEVmZmVjdFBhdHRlcm4sXG5cdEV4dHJhUGF0dGVybkluZm8sIFJlYWRPcHRpb25zLCBCcmlnaHRuZXNzQWRqdXN0bWVudCwgRXhwb3N1cmVBZGp1c3RtZW50LCBWaWJyYW5jZUFkanVzdG1lbnQsXG5cdENvbG9yQmFsYW5jZUFkanVzdG1lbnQsIEJsYWNrQW5kV2hpdGVBZGp1c3RtZW50LCBQaG90b0ZpbHRlckFkanVzdG1lbnQsIENoYW5uZWxNaXhlckNoYW5uZWwsXG5cdENoYW5uZWxNaXhlckFkanVzdG1lbnQsIFBvc3Rlcml6ZUFkanVzdG1lbnQsIFRocmVzaG9sZEFkanVzdG1lbnQsIEdyYWRpZW50TWFwQWRqdXN0bWVudCwgQ01ZSyxcblx0U2VsZWN0aXZlQ29sb3JBZGp1c3RtZW50LCBDb2xvckxvb2t1cEFkanVzdG1lbnQsIExldmVsc0FkanVzdG1lbnRDaGFubmVsLCBMZXZlbHNBZGp1c3RtZW50LFxuXHRDdXJ2ZXNBZGp1c3RtZW50LCBDdXJ2ZXNBZGp1c3RtZW50Q2hhbm5lbCwgSHVlU2F0dXJhdGlvbkFkanVzdG1lbnQsIEh1ZVNhdHVyYXRpb25BZGp1c3RtZW50Q2hhbm5lbCxcblx0UHJlc2V0SW5mbywgQ29sb3IsIENvbG9yQmFsYW5jZVZhbHVlcywgV3JpdGVPcHRpb25zLCBMaW5rZWRGaWxlLCBQbGFjZWRMYXllclR5cGUsIFdhcnAsIEVmZmVjdFNvbGlkR3JhZGllbnQsXG5cdEtleURlc2NyaXB0b3JJdGVtLCBCb29sZWFuT3BlcmF0aW9uLCBMYXllckVmZmVjdHNJbmZvLCBBbm5vdGF0aW9uLCBMYXllclZlY3Rvck1hc2ssXG59IGZyb20gJy4vcHNkJztcbmltcG9ydCB7XG5cdFBzZFJlYWRlciwgcmVhZFNpZ25hdHVyZSwgcmVhZFVuaWNvZGVTdHJpbmcsIHNraXBCeXRlcywgcmVhZFVpbnQzMiwgcmVhZFVpbnQ4LCByZWFkRmxvYXQ2NCwgcmVhZFVpbnQxNixcblx0cmVhZEJ5dGVzLCByZWFkSW50MTYsIGNoZWNrU2lnbmF0dXJlLCByZWFkRmxvYXQzMiwgcmVhZEZpeGVkUG9pbnRQYXRoMzIsIHJlYWRTZWN0aW9uLCByZWFkQ29sb3IsIHJlYWRJbnQzMixcblx0cmVhZFBhc2NhbFN0cmluZywgcmVhZFVuaWNvZGVTdHJpbmdXaXRoTGVuZ3RoLCByZWFkQXNjaWlTdHJpbmcsIHJlYWRQYXR0ZXJuLFxufSBmcm9tICcuL3BzZFJlYWRlcic7XG5pbXBvcnQge1xuXHRQc2RXcml0ZXIsIHdyaXRlWmVyb3MsIHdyaXRlU2lnbmF0dXJlLCB3cml0ZUJ5dGVzLCB3cml0ZVVpbnQzMiwgd3JpdGVVaW50MTYsIHdyaXRlRmxvYXQ2NCwgd3JpdGVVaW50OCxcblx0d3JpdGVJbnQxNiwgd3JpdGVGbG9hdDMyLCB3cml0ZUZpeGVkUG9pbnRQYXRoMzIsIHdyaXRlVW5pY29kZVN0cmluZywgd3JpdGVTZWN0aW9uLCB3cml0ZVVuaWNvZGVTdHJpbmdXaXRoUGFkZGluZyxcblx0d3JpdGVDb2xvciwgd3JpdGVQYXNjYWxTdHJpbmcsIHdyaXRlSW50MzIsXG59IGZyb20gJy4vcHNkV3JpdGVyJztcbmltcG9ydCB7XG5cdEFubnQsIEJFU2wsIEJFU3MsIEJFVEUsIEJsbk0sIGJ2bFQsIENsclMsIERlc2NpcHRvckdyYWRpZW50LCBEZXNjcmlwdG9yQ29sb3IsIERlc2NyaXB0b3JHcmFkaWVudENvbnRlbnQsXG5cdERlc2NyaXB0b3JQYXR0ZXJuQ29udGVudCwgRGVzY3JpcHRvclVuaXRzVmFsdWUsIERlc2NyaXB0b3JWZWN0b3JDb250ZW50LCBGckZsLCBGU3RsLCBHcmRULCBJR1NyLCBPcm50LFxuXHRwYXJzZUFuZ2xlLCBwYXJzZVBlcmNlbnQsIHBhcnNlUGVyY2VudE9yQW5nbGUsIHBhcnNlVW5pdHMsIHBhcnNlVW5pdHNPck51bWJlciwgUXVpbHRXYXJwRGVzY3JpcHRvciwgcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yLCBTdHJva2VEZXNjcmlwdG9yLFxuXHRzdHJva2VTdHlsZUxpbmVBbGlnbm1lbnQsIHN0cm9rZVN0eWxlTGluZUNhcFR5cGUsIHN0cm9rZVN0eWxlTGluZUpvaW5UeXBlLCBUZXh0RGVzY3JpcHRvciwgdGV4dEdyaWRkaW5nLFxuXHR1bml0c0FuZ2xlLCB1bml0c1BlcmNlbnQsIHVuaXRzVmFsdWUsIFdhcnBEZXNjcmlwdG9yLCB3YXJwU3R5bGUsIHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Jcbn0gZnJvbSAnLi9kZXNjcmlwdG9yJztcbmltcG9ydCB7IHNlcmlhbGl6ZUVuZ2luZURhdGEsIHBhcnNlRW5naW5lRGF0YSB9IGZyb20gJy4vZW5naW5lRGF0YSc7XG5pbXBvcnQgeyBlbmNvZGVFbmdpbmVEYXRhLCBkZWNvZGVFbmdpbmVEYXRhIH0gZnJvbSAnLi90ZXh0JztcblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbmRlZFdyaXRlT3B0aW9ucyBleHRlbmRzIFdyaXRlT3B0aW9ucyB7XG5cdGxheWVySWRzOiBudW1iZXJbXTtcbn1cblxudHlwZSBIYXNNZXRob2QgPSAodGFyZ2V0OiBMYXllckFkZGl0aW9uYWxJbmZvKSA9PiBib29sZWFuO1xudHlwZSBSZWFkTWV0aG9kID0gKHJlYWRlcjogUHNkUmVhZGVyLCB0YXJnZXQ6IExheWVyQWRkaXRpb25hbEluZm8sIGxlZnQ6ICgpID0+IG51bWJlciwgcHNkOiBQc2QsIG9wdGlvbnM6IFJlYWRPcHRpb25zKSA9PiB2b2lkO1xudHlwZSBXcml0ZU1ldGhvZCA9ICh3cml0ZXI6IFBzZFdyaXRlciwgdGFyZ2V0OiBMYXllckFkZGl0aW9uYWxJbmZvLCBwc2Q6IFBzZCwgb3B0aW9uczogRXh0ZW5kZWRXcml0ZU9wdGlvbnMpID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5mb0hhbmRsZXIge1xuXHRrZXk6IHN0cmluZztcblx0aGFzOiBIYXNNZXRob2Q7XG5cdHJlYWQ6IFJlYWRNZXRob2Q7XG5cdHdyaXRlOiBXcml0ZU1ldGhvZDtcbn1cblxuZXhwb3J0IGNvbnN0IGluZm9IYW5kbGVyczogSW5mb0hhbmRsZXJbXSA9IFtdO1xuZXhwb3J0IGNvbnN0IGluZm9IYW5kbGVyc01hcDogeyBba2V5OiBzdHJpbmddOiBJbmZvSGFuZGxlciB9ID0ge307XG5cbmZ1bmN0aW9uIGFkZEhhbmRsZXIoa2V5OiBzdHJpbmcsIGhhczogSGFzTWV0aG9kLCByZWFkOiBSZWFkTWV0aG9kLCB3cml0ZTogV3JpdGVNZXRob2QpIHtcblx0Y29uc3QgaGFuZGxlcjogSW5mb0hhbmRsZXIgPSB7IGtleSwgaGFzLCByZWFkLCB3cml0ZSB9O1xuXHRpbmZvSGFuZGxlcnMucHVzaChoYW5kbGVyKTtcblx0aW5mb0hhbmRsZXJzTWFwW2hhbmRsZXIua2V5XSA9IGhhbmRsZXI7XG59XG5cbmZ1bmN0aW9uIGFkZEhhbmRsZXJBbGlhcyhrZXk6IHN0cmluZywgdGFyZ2V0OiBzdHJpbmcpIHtcblx0aW5mb0hhbmRsZXJzTWFwW2tleV0gPSBpbmZvSGFuZGxlcnNNYXBbdGFyZ2V0XTtcbn1cblxuZnVuY3Rpb24gaGFzS2V5KGtleToga2V5b2YgTGF5ZXJBZGRpdGlvbmFsSW5mbykge1xuXHRyZXR1cm4gKHRhcmdldDogTGF5ZXJBZGRpdGlvbmFsSW5mbykgPT4gdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gcmVhZExlbmd0aDY0KHJlYWRlcjogUHNkUmVhZGVyKSB7XG5cdGlmIChyZWFkVWludDMyKHJlYWRlcikpIHRocm93IG5ldyBFcnJvcihgUmVzb3VyY2Ugc2l6ZSBhYm92ZSA0IEdCIGxpbWl0IGF0ICR7cmVhZGVyLm9mZnNldC50b1N0cmluZygxNil9YCk7XG5cdHJldHVybiByZWFkVWludDMyKHJlYWRlcik7XG59XG5cbmZ1bmN0aW9uIHdyaXRlTGVuZ3RoNjQod3JpdGVyOiBQc2RXcml0ZXIsIGxlbmd0aDogbnVtYmVyKSB7XG5cdHdyaXRlVWludDMyKHdyaXRlciwgMCk7XG5cdHdyaXRlVWludDMyKHdyaXRlciwgbGVuZ3RoKTtcbn1cblxuYWRkSGFuZGxlcihcblx0J1R5U2gnLFxuXHRoYXNLZXkoJ3RleHQnKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0Qnl0ZXMpID0+IHtcblx0XHRpZiAocmVhZEludDE2KHJlYWRlcikgIT09IDEpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBUeVNoIHZlcnNpb25gKTtcblxuXHRcdGNvbnN0IHRyYW5zZm9ybTogbnVtYmVyW10gPSBbXTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IDY7IGkrKykgdHJhbnNmb3JtLnB1c2gocmVhZEZsb2F0NjQocmVhZGVyKSk7XG5cblx0XHRpZiAocmVhZEludDE2KHJlYWRlcikgIT09IDUwKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgVHlTaCB0ZXh0IHZlcnNpb25gKTtcblx0XHRjb25zdCB0ZXh0OiBUZXh0RGVzY3JpcHRvciA9IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpO1xuXG5cdFx0aWYgKHJlYWRJbnQxNihyZWFkZXIpICE9PSAxKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgVHlTaCB3YXJwIHZlcnNpb25gKTtcblx0XHRjb25zdCB3YXJwOiBXYXJwRGVzY3JpcHRvciA9IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpO1xuXG5cdFx0dGFyZ2V0LnRleHQgPSB7XG5cdFx0XHR0cmFuc2Zvcm0sXG5cdFx0XHRsZWZ0OiByZWFkRmxvYXQzMihyZWFkZXIpLFxuXHRcdFx0dG9wOiByZWFkRmxvYXQzMihyZWFkZXIpLFxuXHRcdFx0cmlnaHQ6IHJlYWRGbG9hdDMyKHJlYWRlciksXG5cdFx0XHRib3R0b206IHJlYWRGbG9hdDMyKHJlYWRlciksXG5cdFx0XHR0ZXh0OiB0ZXh0WydUeHQgJ10ucmVwbGFjZSgvXFxyL2csICdcXG4nKSxcblx0XHRcdGluZGV4OiB0ZXh0LlRleHRJbmRleCB8fCAwLFxuXHRcdFx0Z3JpZGRpbmc6IHRleHRHcmlkZGluZy5kZWNvZGUodGV4dC50ZXh0R3JpZGRpbmcpLFxuXHRcdFx0YW50aUFsaWFzOiBBbm50LmRlY29kZSh0ZXh0LkFudEEpLFxuXHRcdFx0b3JpZW50YXRpb246IE9ybnQuZGVjb2RlKHRleHQuT3JudCksXG5cdFx0XHR3YXJwOiB7XG5cdFx0XHRcdHN0eWxlOiB3YXJwU3R5bGUuZGVjb2RlKHdhcnAud2FycFN0eWxlKSxcblx0XHRcdFx0dmFsdWU6IHdhcnAud2FycFZhbHVlIHx8IDAsXG5cdFx0XHRcdHBlcnNwZWN0aXZlOiB3YXJwLndhcnBQZXJzcGVjdGl2ZSB8fCAwLFxuXHRcdFx0XHRwZXJzcGVjdGl2ZU90aGVyOiB3YXJwLndhcnBQZXJzcGVjdGl2ZU90aGVyIHx8IDAsXG5cdFx0XHRcdHJvdGF0ZTogT3JudC5kZWNvZGUod2FycC53YXJwUm90YXRlKSxcblx0XHRcdH0sXG5cdFx0fTtcblxuXHRcdGlmICh0ZXh0LkVuZ2luZURhdGEpIHtcblx0XHRcdGNvbnN0IGVuZ2luZURhdGEgPSBkZWNvZGVFbmdpbmVEYXRhKHBhcnNlRW5naW5lRGF0YSh0ZXh0LkVuZ2luZURhdGEpKTtcblxuXHRcdFx0Ly8gY29uc3QgYmVmb3JlID0gcGFyc2VFbmdpbmVEYXRhKHRleHQuRW5naW5lRGF0YSk7XG5cdFx0XHQvLyBjb25zdCBhZnRlciA9IGVuY29kZUVuZ2luZURhdGEoZW5naW5lRGF0YSk7XG5cdFx0XHQvLyByZXF1aXJlKCdmcycpLndyaXRlRmlsZVN5bmMoJ2JlZm9yZS50eHQnLCByZXF1aXJlKCd1dGlsJykuaW5zcGVjdChiZWZvcmUsIGZhbHNlLCA5OSwgZmFsc2UpLCAndXRmOCcpO1xuXHRcdFx0Ly8gcmVxdWlyZSgnZnMnKS53cml0ZUZpbGVTeW5jKCdhZnRlci50eHQnLCByZXF1aXJlKCd1dGlsJykuaW5zcGVjdChhZnRlciwgZmFsc2UsIDk5LCBmYWxzZSksICd1dGY4Jyk7XG5cblx0XHRcdC8vIGNvbnNvbGUubG9nKHJlcXVpcmUoJ3V0aWwnKS5pbnNwZWN0KHBhcnNlRW5naW5lRGF0YSh0ZXh0LkVuZ2luZURhdGEpLCBmYWxzZSwgOTksIHRydWUpKTtcblx0XHRcdHRhcmdldC50ZXh0ID0geyAuLi50YXJnZXQudGV4dCwgLi4uZW5naW5lRGF0YSB9O1xuXHRcdFx0Ly8gY29uc29sZS5sb2cocmVxdWlyZSgndXRpbCcpLmluc3BlY3QodGFyZ2V0LnRleHQsIGZhbHNlLCA5OSwgdHJ1ZSkpO1xuXHRcdH1cblxuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnRCeXRlcygpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgdGV4dCA9IHRhcmdldC50ZXh0ITtcblx0XHRjb25zdCB3YXJwID0gdGV4dC53YXJwIHx8IHt9O1xuXHRcdGNvbnN0IHRyYW5zZm9ybSA9IHRleHQudHJhbnNmb3JtIHx8IFsxLCAwLCAwLCAxLCAwLCAwXTtcblxuXHRcdGNvbnN0IHRleHREZXNjcmlwdG9yOiBUZXh0RGVzY3JpcHRvciA9IHtcblx0XHRcdCdUeHQgJzogKHRleHQudGV4dCB8fCAnJykucmVwbGFjZSgvXFxyP1xcbi9nLCAnXFxyJyksXG5cdFx0XHR0ZXh0R3JpZGRpbmc6IHRleHRHcmlkZGluZy5lbmNvZGUodGV4dC5ncmlkZGluZyksXG5cdFx0XHRPcm50OiBPcm50LmVuY29kZSh0ZXh0Lm9yaWVudGF0aW9uKSxcblx0XHRcdEFudEE6IEFubnQuZW5jb2RlKHRleHQuYW50aUFsaWFzKSxcblx0XHRcdFRleHRJbmRleDogdGV4dC5pbmRleCB8fCAwLFxuXHRcdFx0RW5naW5lRGF0YTogc2VyaWFsaXplRW5naW5lRGF0YShlbmNvZGVFbmdpbmVEYXRhKHRleHQpKSxcblx0XHR9O1xuXG5cdFx0d3JpdGVJbnQxNih3cml0ZXIsIDEpOyAvLyB2ZXJzaW9uXG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IDY7IGkrKykge1xuXHRcdFx0d3JpdGVGbG9hdDY0KHdyaXRlciwgdHJhbnNmb3JtW2ldKTtcblx0XHR9XG5cblx0XHR3cml0ZUludDE2KHdyaXRlciwgNTApOyAvLyB0ZXh0IHZlcnNpb25cblx0XHR3cml0ZVZlcnNpb25BbmREZXNjcmlwdG9yKHdyaXRlciwgJycsICdUeExyJywgdGV4dERlc2NyaXB0b3IpO1xuXG5cdFx0d3JpdGVJbnQxNih3cml0ZXIsIDEpOyAvLyB3YXJwIHZlcnNpb25cblx0XHR3cml0ZVZlcnNpb25BbmREZXNjcmlwdG9yKHdyaXRlciwgJycsICd3YXJwJywgZW5jb2RlV2FycCh3YXJwKSk7XG5cblx0XHR3cml0ZUZsb2F0MzIod3JpdGVyLCB0ZXh0LmxlZnQhKTtcblx0XHR3cml0ZUZsb2F0MzIod3JpdGVyLCB0ZXh0LnRvcCEpO1xuXHRcdHdyaXRlRmxvYXQzMih3cml0ZXIsIHRleHQucmlnaHQhKTtcblx0XHR3cml0ZUZsb2F0MzIod3JpdGVyLCB0ZXh0LmJvdHRvbSEpO1xuXG5cdFx0Ly8gd3JpdGVaZXJvcyh3cml0ZXIsIDIpO1xuXHR9LFxuKTtcblxuLy8gdmVjdG9yIGZpbGxzXG5cbmFkZEhhbmRsZXIoXG5cdCdTb0NvJyxcblx0dGFyZ2V0ID0+IHRhcmdldC52ZWN0b3JGaWxsICE9PSB1bmRlZmluZWQgJiYgdGFyZ2V0LnZlY3RvclN0cm9rZSA9PT0gdW5kZWZpbmVkICYmXG5cdFx0dGFyZ2V0LnZlY3RvckZpbGwudHlwZSA9PT0gJ2NvbG9yJyxcblx0KHJlYWRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgZGVzY3JpcHRvciA9IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpO1xuXHRcdHRhcmdldC52ZWN0b3JGaWxsID0gcGFyc2VWZWN0b3JDb250ZW50KGRlc2NyaXB0b3IpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCB7IGRlc2NyaXB0b3IgfSA9IHNlcmlhbGl6ZVZlY3RvckNvbnRlbnQodGFyZ2V0LnZlY3RvckZpbGwhKTtcblx0XHR3cml0ZVZlcnNpb25BbmREZXNjcmlwdG9yKHdyaXRlciwgJycsICdudWxsJywgZGVzY3JpcHRvcik7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQnR2RGbCcsXG5cdHRhcmdldCA9PiB0YXJnZXQudmVjdG9yRmlsbCAhPT0gdW5kZWZpbmVkICYmIHRhcmdldC52ZWN0b3JTdHJva2UgPT09IHVuZGVmaW5lZCAmJlxuXHRcdCh0YXJnZXQudmVjdG9yRmlsbC50eXBlID09PSAnc29saWQnIHx8IHRhcmdldC52ZWN0b3JGaWxsLnR5cGUgPT09ICdub2lzZScpLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQpID0+IHtcblx0XHRjb25zdCBkZXNjcmlwdG9yID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcik7XG5cdFx0dGFyZ2V0LnZlY3RvckZpbGwgPSBwYXJzZVZlY3RvckNvbnRlbnQoZGVzY3JpcHRvcik7XG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgeyBkZXNjcmlwdG9yIH0gPSBzZXJpYWxpemVWZWN0b3JDb250ZW50KHRhcmdldC52ZWN0b3JGaWxsISk7XG5cdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAnbnVsbCcsIGRlc2NyaXB0b3IpO1xuXHR9LFxuKTtcblxuYWRkSGFuZGxlcihcblx0J1B0RmwnLFxuXHR0YXJnZXQgPT4gdGFyZ2V0LnZlY3RvckZpbGwgIT09IHVuZGVmaW5lZCAmJiB0YXJnZXQudmVjdG9yU3Ryb2tlID09PSB1bmRlZmluZWQgJiZcblx0XHR0YXJnZXQudmVjdG9yRmlsbC50eXBlID09PSAncGF0dGVybicsXG5cdChyZWFkZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGRlc2NyaXB0b3IgPSByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyKTtcblx0XHR0YXJnZXQudmVjdG9yRmlsbCA9IHBhcnNlVmVjdG9yQ29udGVudChkZXNjcmlwdG9yKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgeyBkZXNjcmlwdG9yIH0gPSBzZXJpYWxpemVWZWN0b3JDb250ZW50KHRhcmdldC52ZWN0b3JGaWxsISk7XG5cdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAnbnVsbCcsIGRlc2NyaXB0b3IpO1xuXHR9LFxuKTtcblxuYWRkSGFuZGxlcihcblx0J3ZzY2cnLFxuXHR0YXJnZXQgPT4gdGFyZ2V0LnZlY3RvckZpbGwgIT09IHVuZGVmaW5lZCAmJiB0YXJnZXQudmVjdG9yU3Ryb2tlICE9PSB1bmRlZmluZWQsXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdHJlYWRTaWduYXR1cmUocmVhZGVyKTsgLy8ga2V5XG5cdFx0Y29uc3QgZGVzYyA9IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpO1xuXHRcdHRhcmdldC52ZWN0b3JGaWxsID0gcGFyc2VWZWN0b3JDb250ZW50KGRlc2MpO1xuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IHsgZGVzY3JpcHRvciwga2V5IH0gPSBzZXJpYWxpemVWZWN0b3JDb250ZW50KHRhcmdldC52ZWN0b3JGaWxsISk7XG5cdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCBrZXkpO1xuXHRcdHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgJ251bGwnLCBkZXNjcmlwdG9yKTtcblx0fSxcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkQmV6aWVyS25vdChyZWFkZXI6IFBzZFJlYWRlciwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpIHtcblx0Y29uc3QgeTAgPSByZWFkRml4ZWRQb2ludFBhdGgzMihyZWFkZXIpICogaGVpZ2h0O1xuXHRjb25zdCB4MCA9IHJlYWRGaXhlZFBvaW50UGF0aDMyKHJlYWRlcikgKiB3aWR0aDtcblx0Y29uc3QgeTEgPSByZWFkRml4ZWRQb2ludFBhdGgzMihyZWFkZXIpICogaGVpZ2h0O1xuXHRjb25zdCB4MSA9IHJlYWRGaXhlZFBvaW50UGF0aDMyKHJlYWRlcikgKiB3aWR0aDtcblx0Y29uc3QgeTIgPSByZWFkRml4ZWRQb2ludFBhdGgzMihyZWFkZXIpICogaGVpZ2h0O1xuXHRjb25zdCB4MiA9IHJlYWRGaXhlZFBvaW50UGF0aDMyKHJlYWRlcikgKiB3aWR0aDtcblx0cmV0dXJuIFt4MCwgeTAsIHgxLCB5MSwgeDIsIHkyXTtcbn1cblxuZnVuY3Rpb24gd3JpdGVCZXppZXJLbm90KHdyaXRlcjogUHNkV3JpdGVyLCBwb2ludHM6IG51bWJlcltdLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikge1xuXHR3cml0ZUZpeGVkUG9pbnRQYXRoMzIod3JpdGVyLCBwb2ludHNbMV0gLyBoZWlnaHQpOyAvLyB5MFxuXHR3cml0ZUZpeGVkUG9pbnRQYXRoMzIod3JpdGVyLCBwb2ludHNbMF0gLyB3aWR0aCk7IC8vIHgwXG5cdHdyaXRlRml4ZWRQb2ludFBhdGgzMih3cml0ZXIsIHBvaW50c1szXSAvIGhlaWdodCk7IC8vIHkxXG5cdHdyaXRlRml4ZWRQb2ludFBhdGgzMih3cml0ZXIsIHBvaW50c1syXSAvIHdpZHRoKTsgLy8geDFcblx0d3JpdGVGaXhlZFBvaW50UGF0aDMyKHdyaXRlciwgcG9pbnRzWzVdIC8gaGVpZ2h0KTsgLy8geTJcblx0d3JpdGVGaXhlZFBvaW50UGF0aDMyKHdyaXRlciwgcG9pbnRzWzRdIC8gd2lkdGgpOyAvLyB4MlxufVxuXG5leHBvcnQgY29uc3QgYm9vbGVhbk9wZXJhdGlvbnM6IEJvb2xlYW5PcGVyYXRpb25bXSA9IFsnZXhjbHVkZScsICdjb21iaW5lJywgJ3N1YnRyYWN0JywgJ2ludGVyc2VjdCddO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFZlY3Rvck1hc2socmVhZGVyOiBQc2RSZWFkZXIsIHZlY3Rvck1hc2s6IExheWVyVmVjdG9yTWFzaywgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIHNpemU6IG51bWJlcikge1xuXHRjb25zdCBlbmQgPSByZWFkZXIub2Zmc2V0ICsgc2l6ZTtcblx0Y29uc3QgcGF0aHMgPSB2ZWN0b3JNYXNrLnBhdGhzO1xuXHRsZXQgcGF0aDogQmV6aWVyUGF0aCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuXHR3aGlsZSAoKGVuZCAtIHJlYWRlci5vZmZzZXQpID49IDI2KSB7XG5cdFx0Y29uc3Qgc2VsZWN0b3IgPSByZWFkVWludDE2KHJlYWRlcik7XG5cblx0XHRzd2l0Y2ggKHNlbGVjdG9yKSB7XG5cdFx0XHRjYXNlIDA6IC8vIENsb3NlZCBzdWJwYXRoIGxlbmd0aCByZWNvcmRcblx0XHRcdGNhc2UgMzogeyAvLyBPcGVuIHN1YnBhdGggbGVuZ3RoIHJlY29yZFxuXHRcdFx0XHRyZWFkVWludDE2KHJlYWRlcik7IC8vIGNvdW50XG5cdFx0XHRcdGNvbnN0IGJvb2xPcCA9IHJlYWRJbnQxNihyZWFkZXIpO1xuXHRcdFx0XHRyZWFkVWludDE2KHJlYWRlcik7IC8vIGFsd2F5cyAxID9cblx0XHRcdFx0c2tpcEJ5dGVzKHJlYWRlciwgMTgpO1xuXHRcdFx0XHQvLyBUT0RPOiAnY29tYmluZScgaGVyZSBtaWdodCBiZSB3cm9uZ1xuXHRcdFx0XHRwYXRoID0geyBvcGVuOiBzZWxlY3RvciA9PT0gMywgb3BlcmF0aW9uOiBib29sT3AgPT09IC0xID8gJ2NvbWJpbmUnIDogYm9vbGVhbk9wZXJhdGlvbnNbYm9vbE9wXSwga25vdHM6IFtdIH07XG5cdFx0XHRcdHBhdGhzLnB1c2gocGF0aCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSAxOiAvLyBDbG9zZWQgc3VicGF0aCBCZXppZXIga25vdCwgbGlua2VkXG5cdFx0XHRjYXNlIDI6IC8vIENsb3NlZCBzdWJwYXRoIEJlemllciBrbm90LCB1bmxpbmtlZFxuXHRcdFx0Y2FzZSA0OiAvLyBPcGVuIHN1YnBhdGggQmV6aWVyIGtub3QsIGxpbmtlZFxuXHRcdFx0Y2FzZSA1OiAvLyBPcGVuIHN1YnBhdGggQmV6aWVyIGtub3QsIHVubGlua2VkXG5cdFx0XHRcdHBhdGghLmtub3RzLnB1c2goeyBsaW5rZWQ6IChzZWxlY3RvciA9PT0gMSB8fCBzZWxlY3RvciA9PT0gNCksIHBvaW50czogcmVhZEJlemllcktub3QocmVhZGVyLCB3aWR0aCwgaGVpZ2h0KSB9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDY6IC8vIFBhdGggZmlsbCBydWxlIHJlY29yZFxuXHRcdFx0XHRza2lwQnl0ZXMocmVhZGVyLCAyNCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSA3OiB7IC8vIENsaXBib2FyZCByZWNvcmRcblx0XHRcdFx0Ly8gVE9ETzogY2hlY2sgaWYgdGhlc2UgbmVlZCB0byBiZSBtdWx0aXBsaWVkIGJ5IGRvY3VtZW50IHNpemVcblx0XHRcdFx0Y29uc3QgdG9wID0gcmVhZEZpeGVkUG9pbnRQYXRoMzIocmVhZGVyKTtcblx0XHRcdFx0Y29uc3QgbGVmdCA9IHJlYWRGaXhlZFBvaW50UGF0aDMyKHJlYWRlcik7XG5cdFx0XHRcdGNvbnN0IGJvdHRvbSA9IHJlYWRGaXhlZFBvaW50UGF0aDMyKHJlYWRlcik7XG5cdFx0XHRcdGNvbnN0IHJpZ2h0ID0gcmVhZEZpeGVkUG9pbnRQYXRoMzIocmVhZGVyKTtcblx0XHRcdFx0Y29uc3QgcmVzb2x1dGlvbiA9IHJlYWRGaXhlZFBvaW50UGF0aDMyKHJlYWRlcik7XG5cdFx0XHRcdHNraXBCeXRlcyhyZWFkZXIsIDQpO1xuXHRcdFx0XHR2ZWN0b3JNYXNrLmNsaXBib2FyZCA9IHsgdG9wLCBsZWZ0LCBib3R0b20sIHJpZ2h0LCByZXNvbHV0aW9uIH07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSA4OiAvLyBJbml0aWFsIGZpbGwgcnVsZSByZWNvcmRcblx0XHRcdFx0dmVjdG9yTWFzay5maWxsU3RhcnRzV2l0aEFsbFBpeGVscyA9ICEhcmVhZFVpbnQxNihyZWFkZXIpO1xuXHRcdFx0XHRza2lwQnl0ZXMocmVhZGVyLCAyMik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZtc2sgc2VjdGlvbicpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBwYXRocztcbn1cblxuYWRkSGFuZGxlcihcblx0J3Ztc2snLFxuXHRoYXNLZXkoJ3ZlY3Rvck1hc2snKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0LCB7IHdpZHRoLCBoZWlnaHQgfSkgPT4ge1xuXHRcdGlmIChyZWFkVWludDMyKHJlYWRlcikgIT09IDMpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2bXNrIHZlcnNpb24nKTtcblxuXHRcdHRhcmdldC52ZWN0b3JNYXNrID0geyBwYXRoczogW10gfTtcblx0XHRjb25zdCB2ZWN0b3JNYXNrID0gdGFyZ2V0LnZlY3Rvck1hc2s7XG5cblx0XHRjb25zdCBmbGFncyA9IHJlYWRVaW50MzIocmVhZGVyKTtcblx0XHR2ZWN0b3JNYXNrLmludmVydCA9IChmbGFncyAmIDEpICE9PSAwO1xuXHRcdHZlY3Rvck1hc2subm90TGluayA9IChmbGFncyAmIDIpICE9PSAwO1xuXHRcdHZlY3Rvck1hc2suZGlzYWJsZSA9IChmbGFncyAmIDQpICE9PSAwO1xuXG5cdFx0cmVhZFZlY3Rvck1hc2socmVhZGVyLCB2ZWN0b3JNYXNrLCB3aWR0aCwgaGVpZ2h0LCBsZWZ0KCkpO1xuXG5cdFx0Ly8gZHJhd0JlemllclBhdGhzKHZlY3Rvck1hc2sucGF0aHMsIHdpZHRoLCBoZWlnaHQsICdvdXQucG5nJyk7XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQsIHsgd2lkdGgsIGhlaWdodCB9KSA9PiB7XG5cdFx0Y29uc3QgdmVjdG9yTWFzayA9IHRhcmdldC52ZWN0b3JNYXNrITtcblx0XHRjb25zdCBmbGFncyA9XG5cdFx0XHQodmVjdG9yTWFzay5pbnZlcnQgPyAxIDogMCkgfFxuXHRcdFx0KHZlY3Rvck1hc2subm90TGluayA/IDIgOiAwKSB8XG5cdFx0XHQodmVjdG9yTWFzay5kaXNhYmxlID8gNCA6IDApO1xuXG5cdFx0d3JpdGVVaW50MzIod3JpdGVyLCAzKTsgLy8gdmVyc2lvblxuXHRcdHdyaXRlVWludDMyKHdyaXRlciwgZmxhZ3MpO1xuXG5cdFx0Ly8gaW5pdGlhbCBlbnRyeVxuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgNik7XG5cdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDI0KTtcblxuXHRcdGNvbnN0IGNsaXBib2FyZCA9IHZlY3Rvck1hc2suY2xpcGJvYXJkO1xuXHRcdGlmIChjbGlwYm9hcmQpIHtcblx0XHRcdHdyaXRlVWludDE2KHdyaXRlciwgNyk7XG5cdFx0XHR3cml0ZUZpeGVkUG9pbnRQYXRoMzIod3JpdGVyLCBjbGlwYm9hcmQudG9wKTtcblx0XHRcdHdyaXRlRml4ZWRQb2ludFBhdGgzMih3cml0ZXIsIGNsaXBib2FyZC5sZWZ0KTtcblx0XHRcdHdyaXRlRml4ZWRQb2ludFBhdGgzMih3cml0ZXIsIGNsaXBib2FyZC5ib3R0b20pO1xuXHRcdFx0d3JpdGVGaXhlZFBvaW50UGF0aDMyKHdyaXRlciwgY2xpcGJvYXJkLnJpZ2h0KTtcblx0XHRcdHdyaXRlRml4ZWRQb2ludFBhdGgzMih3cml0ZXIsIGNsaXBib2FyZC5yZXNvbHV0aW9uKTtcblx0XHRcdHdyaXRlWmVyb3Mod3JpdGVyLCA0KTtcblx0XHR9XG5cblx0XHRpZiAodmVjdG9yTWFzay5maWxsU3RhcnRzV2l0aEFsbFBpeGVscyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIDgpO1xuXHRcdFx0d3JpdGVVaW50MTYod3JpdGVyLCB2ZWN0b3JNYXNrLmZpbGxTdGFydHNXaXRoQWxsUGl4ZWxzID8gMSA6IDApO1xuXHRcdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDIyKTtcblx0XHR9XG5cblx0XHRmb3IgKGNvbnN0IHBhdGggb2YgdmVjdG9yTWFzay5wYXRocykge1xuXHRcdFx0d3JpdGVVaW50MTYod3JpdGVyLCBwYXRoLm9wZW4gPyAzIDogMCk7XG5cdFx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIHBhdGgua25vdHMubGVuZ3RoKTtcblx0XHRcdHdyaXRlVWludDE2KHdyaXRlciwgTWF0aC5hYnMoYm9vbGVhbk9wZXJhdGlvbnMuaW5kZXhPZihwYXRoLm9wZXJhdGlvbikpKTsgLy8gZGVmYXVsdCB0byAxIGlmIG5vdCBmb3VuZFxuXHRcdFx0d3JpdGVVaW50MTYod3JpdGVyLCAxKTtcblx0XHRcdHdyaXRlWmVyb3Mod3JpdGVyLCAxOCk7IC8vIFRPRE86IHRoZXNlIGFyZSBzb21ldGltZXMgbm9uLXplcm9cblxuXHRcdFx0Y29uc3QgbGlua2VkS25vdCA9IHBhdGgub3BlbiA/IDQgOiAxO1xuXHRcdFx0Y29uc3QgdW5saW5rZWRLbm90ID0gcGF0aC5vcGVuID8gNSA6IDI7XG5cblx0XHRcdGZvciAoY29uc3QgeyBsaW5rZWQsIHBvaW50cyB9IG9mIHBhdGgua25vdHMpIHtcblx0XHRcdFx0d3JpdGVVaW50MTYod3JpdGVyLCBsaW5rZWQgPyBsaW5rZWRLbm90IDogdW5saW5rZWRLbm90KTtcblx0XHRcdFx0d3JpdGVCZXppZXJLbm90KHdyaXRlciwgcG9pbnRzLCB3aWR0aCwgaGVpZ2h0KTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG4pO1xuXG4vLyBUT0RPOiBuZWVkIHRvIHdyaXRlIHZtc2sgaWYgaGFzIG91dGxpbmUgP1xuYWRkSGFuZGxlckFsaWFzKCd2c21zJywgJ3Ztc2snKTtcbi8vIGFkZEhhbmRsZXJBbGlhcygndm1zaycsICd2c21zJyk7XG5cbmludGVyZmFjZSBWb2drRGVzY3JpcHRvciB7XG5cdGtleURlc2NyaXB0b3JMaXN0OiB7XG5cdFx0a2V5U2hhcGVJbnZhbGlkYXRlZD86IGJvb2xlYW47XG5cdFx0a2V5T3JpZ2luVHlwZT86IG51bWJlcjtcblx0XHRrZXlPcmlnaW5SZXNvbHV0aW9uPzogbnVtYmVyO1xuXHRcdGtleU9yaWdpblJSZWN0UmFkaWk/OiB7XG5cdFx0XHR1bml0VmFsdWVRdWFkVmVyc2lvbjogbnVtYmVyO1xuXHRcdFx0dG9wUmlnaHQ6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xuXHRcdFx0dG9wTGVmdDogRGVzY3JpcHRvclVuaXRzVmFsdWU7XG5cdFx0XHRib3R0b21MZWZ0OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcblx0XHRcdGJvdHRvbVJpZ2h0OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcblx0XHR9O1xuXHRcdGtleU9yaWdpblNoYXBlQkJveD86IHtcblx0XHRcdHVuaXRWYWx1ZVF1YWRWZXJzaW9uOiBudW1iZXI7XG5cdFx0XHQnVG9wICc6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xuXHRcdFx0TGVmdDogRGVzY3JpcHRvclVuaXRzVmFsdWU7XG5cdFx0XHRCdG9tOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcblx0XHRcdFJnaHQ6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xuXHRcdH07XG5cdFx0a2V5T3JpZ2luQm94Q29ybmVycz86IHtcblx0XHRcdHJlY3RhbmdsZUNvcm5lckE6IHsgSHJ6bjogbnVtYmVyOyBWcnRjOiBudW1iZXI7IH07XG5cdFx0XHRyZWN0YW5nbGVDb3JuZXJCOiB7IEhyem46IG51bWJlcjsgVnJ0YzogbnVtYmVyOyB9O1xuXHRcdFx0cmVjdGFuZ2xlQ29ybmVyQzogeyBIcnpuOiBudW1iZXI7IFZydGM6IG51bWJlcjsgfTtcblx0XHRcdHJlY3RhbmdsZUNvcm5lckQ6IHsgSHJ6bjogbnVtYmVyOyBWcnRjOiBudW1iZXI7IH07XG5cdFx0fTtcblx0XHRUcm5mPzogeyB4eDogbnVtYmVyOyB4eTogbnVtYmVyOyB5eDogbnVtYmVyOyB5eTogbnVtYmVyOyB0eDogbnVtYmVyOyB0eTogbnVtYmVyOyB9LFxuXHRcdGtleU9yaWdpbkluZGV4OiBudW1iZXI7XG5cdH1bXTtcbn1cblxuYWRkSGFuZGxlcihcblx0J3ZvZ2snLFxuXHRoYXNLZXkoJ3ZlY3Rvck9yaWdpbmF0aW9uJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdGlmIChyZWFkSW50MzIocmVhZGVyKSAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHZvZ2sgdmVyc2lvbmApO1xuXHRcdGNvbnN0IGRlc2MgPSByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyKSBhcyBWb2drRGVzY3JpcHRvcjtcblx0XHQvLyBjb25zb2xlLmxvZyhyZXF1aXJlKCd1dGlsJykuaW5zcGVjdChkZXNjLCBmYWxzZSwgOTksIHRydWUpKTtcblxuXHRcdHRhcmdldC52ZWN0b3JPcmlnaW5hdGlvbiA9IHsga2V5RGVzY3JpcHRvckxpc3Q6IFtdIH07XG5cblx0XHRmb3IgKGNvbnN0IGkgb2YgZGVzYy5rZXlEZXNjcmlwdG9yTGlzdCkge1xuXHRcdFx0Y29uc3QgaXRlbTogS2V5RGVzY3JpcHRvckl0ZW0gPSB7fTtcblxuXHRcdFx0aWYgKGkua2V5U2hhcGVJbnZhbGlkYXRlZCAhPSBudWxsKSBpdGVtLmtleVNoYXBlSW52YWxpZGF0ZWQgPSBpLmtleVNoYXBlSW52YWxpZGF0ZWQ7XG5cdFx0XHRpZiAoaS5rZXlPcmlnaW5UeXBlICE9IG51bGwpIGl0ZW0ua2V5T3JpZ2luVHlwZSA9IGkua2V5T3JpZ2luVHlwZTtcblx0XHRcdGlmIChpLmtleU9yaWdpblJlc29sdXRpb24gIT0gbnVsbCkgaXRlbS5rZXlPcmlnaW5SZXNvbHV0aW9uID0gaS5rZXlPcmlnaW5SZXNvbHV0aW9uO1xuXHRcdFx0aWYgKGkua2V5T3JpZ2luU2hhcGVCQm94KSB7XG5cdFx0XHRcdGl0ZW0ua2V5T3JpZ2luU2hhcGVCb3VuZGluZ0JveCA9IHtcblx0XHRcdFx0XHR0b3A6IHBhcnNlVW5pdHMoaS5rZXlPcmlnaW5TaGFwZUJCb3hbJ1RvcCAnXSksXG5cdFx0XHRcdFx0bGVmdDogcGFyc2VVbml0cyhpLmtleU9yaWdpblNoYXBlQkJveC5MZWZ0KSxcblx0XHRcdFx0XHRib3R0b206IHBhcnNlVW5pdHMoaS5rZXlPcmlnaW5TaGFwZUJCb3guQnRvbSksXG5cdFx0XHRcdFx0cmlnaHQ6IHBhcnNlVW5pdHMoaS5rZXlPcmlnaW5TaGFwZUJCb3guUmdodCksXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHRjb25zdCByZWN0UmFkaWkgPSBpLmtleU9yaWdpblJSZWN0UmFkaWk7XG5cdFx0XHRpZiAocmVjdFJhZGlpKSB7XG5cdFx0XHRcdGl0ZW0ua2V5T3JpZ2luUlJlY3RSYWRpaSA9IHtcblx0XHRcdFx0XHR0b3BSaWdodDogcGFyc2VVbml0cyhyZWN0UmFkaWkudG9wUmlnaHQpLFxuXHRcdFx0XHRcdHRvcExlZnQ6IHBhcnNlVW5pdHMocmVjdFJhZGlpLnRvcExlZnQpLFxuXHRcdFx0XHRcdGJvdHRvbUxlZnQ6IHBhcnNlVW5pdHMocmVjdFJhZGlpLmJvdHRvbUxlZnQpLFxuXHRcdFx0XHRcdGJvdHRvbVJpZ2h0OiBwYXJzZVVuaXRzKHJlY3RSYWRpaS5ib3R0b21SaWdodCksXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBjb3JuZXJzID0gaS5rZXlPcmlnaW5Cb3hDb3JuZXJzO1xuXHRcdFx0aWYgKGNvcm5lcnMpIHtcblx0XHRcdFx0aXRlbS5rZXlPcmlnaW5Cb3hDb3JuZXJzID0gW1xuXHRcdFx0XHRcdHsgeDogY29ybmVycy5yZWN0YW5nbGVDb3JuZXJBLkhyem4sIHk6IGNvcm5lcnMucmVjdGFuZ2xlQ29ybmVyQS5WcnRjIH0sXG5cdFx0XHRcdFx0eyB4OiBjb3JuZXJzLnJlY3RhbmdsZUNvcm5lckIuSHJ6biwgeTogY29ybmVycy5yZWN0YW5nbGVDb3JuZXJCLlZydGMgfSxcblx0XHRcdFx0XHR7IHg6IGNvcm5lcnMucmVjdGFuZ2xlQ29ybmVyQy5IcnpuLCB5OiBjb3JuZXJzLnJlY3RhbmdsZUNvcm5lckMuVnJ0YyB9LFxuXHRcdFx0XHRcdHsgeDogY29ybmVycy5yZWN0YW5nbGVDb3JuZXJELkhyem4sIHk6IGNvcm5lcnMucmVjdGFuZ2xlQ29ybmVyRC5WcnRjIH0sXG5cdFx0XHRcdF07XG5cdFx0XHR9XG5cdFx0XHRjb25zdCB0cm5mID0gaS5Ucm5mO1xuXHRcdFx0aWYgKHRybmYpIHtcblx0XHRcdFx0aXRlbS50cmFuc2Zvcm0gPSBbdHJuZi54eCwgdHJuZi54eSwgdHJuZi54eSwgdHJuZi55eSwgdHJuZi50eCwgdHJuZi50eV07XG5cdFx0XHR9XG5cblx0XHRcdHRhcmdldC52ZWN0b3JPcmlnaW5hdGlvbi5rZXlEZXNjcmlwdG9yTGlzdC5wdXNoKGl0ZW0pO1xuXHRcdH1cblxuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdHRhcmdldDtcblx0XHRjb25zdCBvcmlnID0gdGFyZ2V0LnZlY3Rvck9yaWdpbmF0aW9uITtcblx0XHRjb25zdCBkZXNjOiBWb2drRGVzY3JpcHRvciA9IHsga2V5RGVzY3JpcHRvckxpc3Q6IFtdIH07XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG9yaWcua2V5RGVzY3JpcHRvckxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGl0ZW0gPSBvcmlnLmtleURlc2NyaXB0b3JMaXN0W2ldO1xuXG5cdFx0XHRpZiAoaXRlbS5rZXlTaGFwZUludmFsaWRhdGVkKSB7XG5cdFx0XHRcdGRlc2Mua2V5RGVzY3JpcHRvckxpc3QucHVzaCh7IGtleVNoYXBlSW52YWxpZGF0ZWQ6IHRydWUsIGtleU9yaWdpbkluZGV4OiBpIH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGVzYy5rZXlEZXNjcmlwdG9yTGlzdC5wdXNoKHtcblx0XHRcdFx0XHRrZXlPcmlnaW5UeXBlOiBpdGVtLmtleU9yaWdpblR5cGUgPz8gNCxcblx0XHRcdFx0XHRrZXlPcmlnaW5SZXNvbHV0aW9uOiBpdGVtLmtleU9yaWdpblJlc29sdXRpb24gPz8gNzIsXG5cdFx0XHRcdH0gYXMgYW55KTtcblxuXHRcdFx0XHRjb25zdCBvdXQgPSBkZXNjLmtleURlc2NyaXB0b3JMaXN0W2Rlc2Mua2V5RGVzY3JpcHRvckxpc3QubGVuZ3RoIC0gMV07XG5cblx0XHRcdFx0Y29uc3QgcmFkaWkgPSBpdGVtLmtleU9yaWdpblJSZWN0UmFkaWk7XG5cdFx0XHRcdGlmIChyYWRpaSkge1xuXHRcdFx0XHRcdG91dC5rZXlPcmlnaW5SUmVjdFJhZGlpID0ge1xuXHRcdFx0XHRcdFx0dW5pdFZhbHVlUXVhZFZlcnNpb246IDEsXG5cdFx0XHRcdFx0XHR0b3BSaWdodDogdW5pdHNWYWx1ZShyYWRpaS50b3BSaWdodCwgJ3RvcFJpZ2h0JyksXG5cdFx0XHRcdFx0XHR0b3BMZWZ0OiB1bml0c1ZhbHVlKHJhZGlpLnRvcExlZnQsICd0b3BMZWZ0JyksXG5cdFx0XHRcdFx0XHRib3R0b21MZWZ0OiB1bml0c1ZhbHVlKHJhZGlpLmJvdHRvbUxlZnQsICdib3R0b21MZWZ0JyksXG5cdFx0XHRcdFx0XHRib3R0b21SaWdodDogdW5pdHNWYWx1ZShyYWRpaS5ib3R0b21SaWdodCwgJ2JvdHRvbVJpZ2h0JyksXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGJveCA9IGl0ZW0ua2V5T3JpZ2luU2hhcGVCb3VuZGluZ0JveDtcblx0XHRcdFx0aWYgKGJveCkge1xuXHRcdFx0XHRcdG91dC5rZXlPcmlnaW5TaGFwZUJCb3ggPSB7XG5cdFx0XHRcdFx0XHR1bml0VmFsdWVRdWFkVmVyc2lvbjogMSxcblx0XHRcdFx0XHRcdCdUb3AgJzogdW5pdHNWYWx1ZShib3gudG9wLCAndG9wJyksXG5cdFx0XHRcdFx0XHRMZWZ0OiB1bml0c1ZhbHVlKGJveC5sZWZ0LCAnbGVmdCcpLFxuXHRcdFx0XHRcdFx0QnRvbTogdW5pdHNWYWx1ZShib3guYm90dG9tLCAnYm90dG9tJyksXG5cdFx0XHRcdFx0XHRSZ2h0OiB1bml0c1ZhbHVlKGJveC5yaWdodCwgJ3JpZ2h0JyksXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGNvcm5lcnMgPSBpdGVtLmtleU9yaWdpbkJveENvcm5lcnM7XG5cdFx0XHRcdGlmIChjb3JuZXJzICYmIGNvcm5lcnMubGVuZ3RoID09PSA0KSB7XG5cdFx0XHRcdFx0b3V0LmtleU9yaWdpbkJveENvcm5lcnMgPSB7XG5cdFx0XHRcdFx0XHRyZWN0YW5nbGVDb3JuZXJBOiB7IEhyem46IGNvcm5lcnNbMF0ueCwgVnJ0YzogY29ybmVyc1swXS55IH0sXG5cdFx0XHRcdFx0XHRyZWN0YW5nbGVDb3JuZXJCOiB7IEhyem46IGNvcm5lcnNbMV0ueCwgVnJ0YzogY29ybmVyc1sxXS55IH0sXG5cdFx0XHRcdFx0XHRyZWN0YW5nbGVDb3JuZXJDOiB7IEhyem46IGNvcm5lcnNbMl0ueCwgVnJ0YzogY29ybmVyc1syXS55IH0sXG5cdFx0XHRcdFx0XHRyZWN0YW5nbGVDb3JuZXJEOiB7IEhyem46IGNvcm5lcnNbM10ueCwgVnJ0YzogY29ybmVyc1szXS55IH0sXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IHRyYW5zZm9ybSA9IGl0ZW0udHJhbnNmb3JtO1xuXHRcdFx0XHRpZiAodHJhbnNmb3JtICYmIHRyYW5zZm9ybS5sZW5ndGggPT09IDYpIHtcblx0XHRcdFx0XHRvdXQuVHJuZiA9IHtcblx0XHRcdFx0XHRcdHh4OiB0cmFuc2Zvcm1bMF0sXG5cdFx0XHRcdFx0XHR4eTogdHJhbnNmb3JtWzFdLFxuXHRcdFx0XHRcdFx0eXg6IHRyYW5zZm9ybVsyXSxcblx0XHRcdFx0XHRcdHl5OiB0cmFuc2Zvcm1bM10sXG5cdFx0XHRcdFx0XHR0eDogdHJhbnNmb3JtWzRdLFxuXHRcdFx0XHRcdFx0dHk6IHRyYW5zZm9ybVs1XSxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0b3V0LmtleU9yaWdpbkluZGV4ID0gaTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR3cml0ZUludDMyKHdyaXRlciwgMSk7IC8vIHZlcnNpb25cblx0XHR3cml0ZVZlcnNpb25BbmREZXNjcmlwdG9yKHdyaXRlciwgJycsICdudWxsJywgZGVzYyk7XG5cdH1cbik7XG5cbmFkZEhhbmRsZXIoXG5cdCdsbWZ4Jyxcblx0dGFyZ2V0ID0+IHRhcmdldC5lZmZlY3RzICE9PSB1bmRlZmluZWQgJiYgaGFzTXVsdGlFZmZlY3RzKHRhcmdldC5lZmZlY3RzKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0LCBfLCBvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3QgdmVyc2lvbiA9IHJlYWRVaW50MzIocmVhZGVyKTtcblx0XHRpZiAodmVyc2lvbiAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGxtZnggdmVyc2lvbicpO1xuXG5cdFx0Y29uc3QgZGVzYzogTG1meERlc2NyaXB0b3IgPSByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyKTtcblx0XHQvLyBjb25zb2xlLmxvZyhyZXF1aXJlKCd1dGlsJykuaW5zcGVjdChpbmZvLCBmYWxzZSwgOTksIHRydWUpKTtcblxuXHRcdC8vIGRpc2NhcmQgaWYgcmVhZCBpbiAnbHJGWCcgb3IgJ2xmeDInIHNlY3Rpb25cblx0XHR0YXJnZXQuZWZmZWN0cyA9IHBhcnNlRWZmZWN0cyhkZXNjLCAhIW9wdGlvbnMubG9nTWlzc2luZ0ZlYXR1cmVzKTtcblxuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCwgXywgb3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IGRlc2MgPSBzZXJpYWxpemVFZmZlY3RzKHRhcmdldC5lZmZlY3RzISwgISFvcHRpb25zLmxvZ01pc3NpbmdGZWF0dXJlcywgdHJ1ZSk7XG5cblx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIDApOyAvLyB2ZXJzaW9uXG5cdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAnbnVsbCcsIGRlc2MpO1xuXHR9LFxuKTtcblxuYWRkSGFuZGxlcihcblx0J2xyRlgnLFxuXHRoYXNLZXkoJ2VmZmVjdHMnKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0aWYgKCF0YXJnZXQuZWZmZWN0cykgdGFyZ2V0LmVmZmVjdHMgPSByZWFkRWZmZWN0cyhyZWFkZXIpO1xuXG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0d3JpdGVFZmZlY3RzKHdyaXRlciwgdGFyZ2V0LmVmZmVjdHMhKTtcblx0fSxcbik7XG5cbmFkZEhhbmRsZXIoXG5cdCdsdW5pJyxcblx0aGFzS2V5KCduYW1lJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdHRhcmdldC5uYW1lID0gcmVhZFVuaWNvZGVTdHJpbmcocmVhZGVyKTtcblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHR3cml0ZVVuaWNvZGVTdHJpbmcod3JpdGVyLCB0YXJnZXQubmFtZSEpO1xuXHRcdC8vIHdyaXRlVWludDE2KHdyaXRlciwgMCk7IC8vIHBhZGRpbmcgKGJ1dCBub3QgZXh0ZW5kaW5nIHN0cmluZyBsZW5ndGgpXG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQnbG5zcicsXG5cdGhhc0tleSgnbmFtZVNvdXJjZScpLFxuXHQocmVhZGVyLCB0YXJnZXQpID0+IHRhcmdldC5uYW1lU291cmNlID0gcmVhZFNpZ25hdHVyZShyZWFkZXIpLFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgdGFyZ2V0Lm5hbWVTb3VyY2UhKSxcbik7XG5cbmFkZEhhbmRsZXIoXG5cdCdseWlkJyxcblx0aGFzS2V5KCdpZCcpLFxuXHQocmVhZGVyLCB0YXJnZXQpID0+IHRhcmdldC5pZCA9IHJlYWRVaW50MzIocmVhZGVyKSxcblx0KHdyaXRlciwgdGFyZ2V0LCBfcHNkLCBvcHRpb25zKSA9PiB7XG5cdFx0bGV0IGlkID0gdGFyZ2V0LmlkITtcblx0XHR3aGlsZSAob3B0aW9ucy5sYXllcklkcy5pbmRleE9mKGlkKSAhPT0gLTEpIGlkICs9IDEwMDsgLy8gbWFrZSBzdXJlIHdlIGRvbid0IGhhdmUgZHVwbGljYXRlIGxheWVyIGlkc1xuXHRcdHdyaXRlVWludDMyKHdyaXRlciwgaWQpO1xuXHRcdG9wdGlvbnMubGF5ZXJJZHMucHVzaChpZCk7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQnbHNjdCcsXG5cdGhhc0tleSgnc2VjdGlvbkRpdmlkZXInKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0dGFyZ2V0LnNlY3Rpb25EaXZpZGVyID0geyB0eXBlOiByZWFkVWludDMyKHJlYWRlcikgfTtcblxuXHRcdGlmIChsZWZ0KCkpIHtcblx0XHRcdGNoZWNrU2lnbmF0dXJlKHJlYWRlciwgJzhCSU0nKTtcblx0XHRcdHRhcmdldC5zZWN0aW9uRGl2aWRlci5rZXkgPSByZWFkU2lnbmF0dXJlKHJlYWRlcik7XG5cdFx0fVxuXG5cdFx0aWYgKGxlZnQoKSkge1xuXHRcdFx0Ly8gMCA9IG5vcm1hbFxuXHRcdFx0Ly8gMSA9IHNjZW5lIGdyb3VwLCBhZmZlY3RzIHRoZSBhbmltYXRpb24gdGltZWxpbmUuXG5cdFx0XHR0YXJnZXQuc2VjdGlvbkRpdmlkZXIuc3ViVHlwZSA9IHJlYWRVaW50MzIocmVhZGVyKTtcblx0XHR9XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdHdyaXRlVWludDMyKHdyaXRlciwgdGFyZ2V0LnNlY3Rpb25EaXZpZGVyIS50eXBlKTtcblxuXHRcdGlmICh0YXJnZXQuc2VjdGlvbkRpdmlkZXIhLmtleSkge1xuXHRcdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCAnOEJJTScpO1xuXHRcdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCB0YXJnZXQuc2VjdGlvbkRpdmlkZXIhLmtleSk7XG5cblx0XHRcdGlmICh0YXJnZXQuc2VjdGlvbkRpdmlkZXIhLnN1YlR5cGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIHRhcmdldC5zZWN0aW9uRGl2aWRlciEuc3ViVHlwZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuKTtcblxuLy8gaXQgc2VlbXMgbHNkayBpcyB1c2VkIHdoZW4gdGhlcmUncyBhIGxheWVyIGlzIG5lc3RlZCBtb3JlIHRoYW4gNiBsZXZlbHMsIGJ1dCBJIGRvbid0IGtub3cgd2h5P1xuLy8gbWF5YmUgc29tZSBsaW1pdGF0aW9uIG9mIG9sZCB2ZXJzaW9uIG9mIFBTP1xuYWRkSGFuZGxlckFsaWFzKCdsc2RrJywgJ2xzY3QnKTtcblxuYWRkSGFuZGxlcihcblx0J2NsYmwnLFxuXHRoYXNLZXkoJ2JsZW5kQ2xpcHBlbmRFbGVtZW50cycpLFxuXHQocmVhZGVyLCB0YXJnZXQpID0+IHtcblx0XHR0YXJnZXQuYmxlbmRDbGlwcGVuZEVsZW1lbnRzID0gISFyZWFkVWludDgocmVhZGVyKTtcblx0XHRza2lwQnl0ZXMocmVhZGVyLCAzKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0d3JpdGVVaW50OCh3cml0ZXIsIHRhcmdldC5ibGVuZENsaXBwZW5kRWxlbWVudHMgPyAxIDogMCk7XG5cdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDMpO1xuXHR9LFxuKTtcblxuYWRkSGFuZGxlcihcblx0J2luZngnLFxuXHRoYXNLZXkoJ2JsZW5kSW50ZXJpb3JFbGVtZW50cycpLFxuXHQocmVhZGVyLCB0YXJnZXQpID0+IHtcblx0XHR0YXJnZXQuYmxlbmRJbnRlcmlvckVsZW1lbnRzID0gISFyZWFkVWludDgocmVhZGVyKTtcblx0XHRza2lwQnl0ZXMocmVhZGVyLCAzKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0d3JpdGVVaW50OCh3cml0ZXIsIHRhcmdldC5ibGVuZEludGVyaW9yRWxlbWVudHMgPyAxIDogMCk7XG5cdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDMpO1xuXHR9LFxuKTtcblxuYWRkSGFuZGxlcihcblx0J2tua28nLFxuXHRoYXNLZXkoJ2tub2Nrb3V0JyksXG5cdChyZWFkZXIsIHRhcmdldCkgPT4ge1xuXHRcdHRhcmdldC5rbm9ja291dCA9ICEhcmVhZFVpbnQ4KHJlYWRlcik7XG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgMyk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdHdyaXRlVWludDgod3JpdGVyLCB0YXJnZXQua25vY2tvdXQgPyAxIDogMCk7XG5cdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDMpO1xuXHR9LFxuKTtcblxuYWRkSGFuZGxlcihcblx0J2xzcGYnLFxuXHRoYXNLZXkoJ3Byb3RlY3RlZCcpLFxuXHQocmVhZGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBmbGFncyA9IHJlYWRVaW50MzIocmVhZGVyKTtcblx0XHR0YXJnZXQucHJvdGVjdGVkID0ge1xuXHRcdFx0dHJhbnNwYXJlbmN5OiAoZmxhZ3MgJiAweDAxKSAhPT0gMCxcblx0XHRcdGNvbXBvc2l0ZTogKGZsYWdzICYgMHgwMikgIT09IDAsXG5cdFx0XHRwb3NpdGlvbjogKGZsYWdzICYgMHgwNCkgIT09IDAsXG5cdFx0fTtcblxuXHRcdGlmIChmbGFncyAmIDB4MDgpIHRhcmdldC5wcm90ZWN0ZWQuYXJ0Ym9hcmRzID0gdHJ1ZTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgZmxhZ3MgPVxuXHRcdFx0KHRhcmdldC5wcm90ZWN0ZWQhLnRyYW5zcGFyZW5jeSA/IDB4MDEgOiAwKSB8XG5cdFx0XHQodGFyZ2V0LnByb3RlY3RlZCEuY29tcG9zaXRlID8gMHgwMiA6IDApIHxcblx0XHRcdCh0YXJnZXQucHJvdGVjdGVkIS5wb3NpdGlvbiA/IDB4MDQgOiAwKSB8XG5cdFx0XHQodGFyZ2V0LnByb3RlY3RlZCEuYXJ0Ym9hcmRzID8gMHgwOCA6IDApO1xuXG5cdFx0d3JpdGVVaW50MzIod3JpdGVyLCBmbGFncyk7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQnbGNscicsXG5cdGhhc0tleSgnbGF5ZXJDb2xvcicpLFxuXHQocmVhZGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBjb2xvciA9IHJlYWRVaW50MTYocmVhZGVyKTtcblx0XHRza2lwQnl0ZXMocmVhZGVyLCA2KTtcblx0XHR0YXJnZXQubGF5ZXJDb2xvciA9IGxheWVyQ29sb3JzW2NvbG9yXTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgaW5kZXggPSBsYXllckNvbG9ycy5pbmRleE9mKHRhcmdldC5sYXllckNvbG9yISk7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBpbmRleCA9PT0gLTEgPyAwIDogaW5kZXgpO1xuXHRcdHdyaXRlWmVyb3Mod3JpdGVyLCA2KTtcblx0fSxcbik7XG5cbmludGVyZmFjZSBDdXN0b21EZXNjcmlwdG9yIHtcblx0bGF5ZXJUaW1lPzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgRnJhbWVMaXN0RGVzY3JpcHRvciB7XG5cdExhSUQ6IG51bWJlcjtcblx0TGFTdDoge1xuXHRcdGVuYWI/OiBib29sZWFuO1xuXHRcdElNc2s/OiB7IE9mc3Q6IHsgSHJ6bjogbnVtYmVyOyBWcnRjOiBudW1iZXI7IH0gfTtcblx0XHRWTXNrPzogeyBPZnN0OiB7IEhyem46IG51bWJlcjsgVnJ0YzogbnVtYmVyOyB9IH07XG5cdFx0RlhSZj86IHsgSHJ6bjogbnVtYmVyOyBWcnRjOiBudW1iZXI7IH07XG5cdFx0RnJMczogbnVtYmVyW107XG5cdH1bXTtcbn1cblxuYWRkSGFuZGxlcihcblx0J3NobWQnLFxuXHRoYXNLZXkoJ3RpbWVzdGFtcCcpLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQsIF8sIG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCBjb3VudCA9IHJlYWRVaW50MzIocmVhZGVyKTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuXHRcdFx0Y2hlY2tTaWduYXR1cmUocmVhZGVyLCAnOEJJTScpO1xuXHRcdFx0Y29uc3Qga2V5ID0gcmVhZFNpZ25hdHVyZShyZWFkZXIpO1xuXHRcdFx0cmVhZFVpbnQ4KHJlYWRlcik7IC8vIGNvcHlcblx0XHRcdHNraXBCeXRlcyhyZWFkZXIsIDMpO1xuXG5cdFx0XHRyZWFkU2VjdGlvbihyZWFkZXIsIDEsIGxlZnQgPT4ge1xuXHRcdFx0XHRpZiAoa2V5ID09PSAnY3VzdCcpIHtcblx0XHRcdFx0XHRjb25zdCBkZXNjID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcikgYXMgQ3VzdG9tRGVzY3JpcHRvcjtcblx0XHRcdFx0XHRpZiAoZGVzYy5sYXllclRpbWUgIT09IHVuZGVmaW5lZCkgdGFyZ2V0LnRpbWVzdGFtcCA9IGRlc2MubGF5ZXJUaW1lO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGtleSA9PT0gJ21sc3QnKSB7XG5cdFx0XHRcdFx0Y29uc3QgZGVzYyA9IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpIGFzIEZyYW1lTGlzdERlc2NyaXB0b3I7XG5cdFx0XHRcdFx0b3B0aW9ucy5sb2dEZXZGZWF0dXJlcyAmJiBjb25zb2xlLmxvZygnbWxzdCcsIGRlc2MpO1xuXHRcdFx0XHRcdC8vIG9wdGlvbnMubG9nRGV2RmVhdHVyZXMgJiYgY29uc29sZS5sb2coJ21sc3QnLCByZXF1aXJlKCd1dGlsJykuaW5zcGVjdChkZXNjLCBmYWxzZSwgOTksIHRydWUpKTtcblx0XHRcdFx0fSBlbHNlIGlmIChrZXkgPT09ICdtZHluJykge1xuXHRcdFx0XHRcdC8vIGZyYW1lIGZsYWdzXG5cdFx0XHRcdFx0Y29uc3QgdW5rbm93biA9IHJlYWRVaW50MTYocmVhZGVyKTtcblx0XHRcdFx0XHRjb25zdCBwcm9wYWdhdGUgPSByZWFkVWludDgocmVhZGVyKTtcblx0XHRcdFx0XHRjb25zdCBmbGFncyA9IHJlYWRVaW50OChyZWFkZXIpO1xuXHRcdFx0XHRcdGNvbnN0IHVuaWZ5TGF5ZXJQb3NpdGlvbiA9IChmbGFncyAmIDEpICE9PSAwO1xuXHRcdFx0XHRcdGNvbnN0IHVuaWZ5TGF5ZXJTdHlsZSA9IChmbGFncyAmIDIpICE9PSAwO1xuXHRcdFx0XHRcdGNvbnN0IHVuaWZ5TGF5ZXJWaXNpYmlsaXR5ID0gKGZsYWdzICYgNCkgIT09IDA7XG5cdFx0XHRcdFx0b3B0aW9ucy5sb2dEZXZGZWF0dXJlcyAmJiBjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRcdCdtZHluJywgJ3Vua25vd246JywgdW5rbm93biwgJ3Byb3BhZ2F0ZTonLCBwcm9wYWdhdGUsXG5cdFx0XHRcdFx0XHQnZmxhZ3M6JywgZmxhZ3MsIHsgdW5pZnlMYXllclBvc2l0aW9uLCB1bmlmeUxheWVyU3R5bGUsIHVuaWZ5TGF5ZXJWaXNpYmlsaXR5IH0pO1xuXG5cdFx0XHRcdFx0Ly8gY29uc3QgZGVzYyA9IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpIGFzIEZyYW1lTGlzdERlc2NyaXB0b3I7XG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ21keW4nLCByZXF1aXJlKCd1dGlsJykuaW5zcGVjdChkZXNjLCBmYWxzZSwgOTksIHRydWUpKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRvcHRpb25zLmxvZ0RldkZlYXR1cmVzICYmIGNvbnNvbGUubG9nKCdVbmhhbmRsZWQgbWV0YWRhdGEnLCBrZXkpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGRlc2M6IEN1c3RvbURlc2NyaXB0b3IgPSB7XG5cdFx0XHRsYXllclRpbWU6IHRhcmdldC50aW1lc3RhbXAhLFxuXHRcdH07XG5cblx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIDEpOyAvLyBjb3VudFxuXG5cdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCAnOEJJTScpO1xuXHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgJ2N1c3QnKTtcblx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgMCk7IC8vIGNvcHkgKGFsd2F5cyBmYWxzZSlcblx0XHR3cml0ZVplcm9zKHdyaXRlciwgMyk7XG5cdFx0d3JpdGVTZWN0aW9uKHdyaXRlciwgMiwgKCkgPT4gd3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAnbWV0YWRhdGEnLCBkZXNjKSwgdHJ1ZSk7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQndnN0aycsXG5cdGhhc0tleSgndmVjdG9yU3Ryb2tlJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdGNvbnN0IGRlc2MgPSByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyKSBhcyBTdHJva2VEZXNjcmlwdG9yO1xuXHRcdC8vIGNvbnNvbGUubG9nKHJlcXVpcmUoJ3V0aWwnKS5pbnNwZWN0KGRlc2MsIGZhbHNlLCA5OSwgdHJ1ZSkpO1xuXG5cdFx0dGFyZ2V0LnZlY3RvclN0cm9rZSA9IHtcblx0XHRcdHN0cm9rZUVuYWJsZWQ6IGRlc2Muc3Ryb2tlRW5hYmxlZCxcblx0XHRcdGZpbGxFbmFibGVkOiBkZXNjLmZpbGxFbmFibGVkLFxuXHRcdFx0bGluZVdpZHRoOiBwYXJzZVVuaXRzKGRlc2Muc3Ryb2tlU3R5bGVMaW5lV2lkdGgpLFxuXHRcdFx0bGluZURhc2hPZmZzZXQ6IHBhcnNlVW5pdHMoZGVzYy5zdHJva2VTdHlsZUxpbmVEYXNoT2Zmc2V0KSxcblx0XHRcdG1pdGVyTGltaXQ6IGRlc2Muc3Ryb2tlU3R5bGVNaXRlckxpbWl0LFxuXHRcdFx0bGluZUNhcFR5cGU6IHN0cm9rZVN0eWxlTGluZUNhcFR5cGUuZGVjb2RlKGRlc2Muc3Ryb2tlU3R5bGVMaW5lQ2FwVHlwZSksXG5cdFx0XHRsaW5lSm9pblR5cGU6IHN0cm9rZVN0eWxlTGluZUpvaW5UeXBlLmRlY29kZShkZXNjLnN0cm9rZVN0eWxlTGluZUpvaW5UeXBlKSxcblx0XHRcdGxpbmVBbGlnbm1lbnQ6IHN0cm9rZVN0eWxlTGluZUFsaWdubWVudC5kZWNvZGUoZGVzYy5zdHJva2VTdHlsZUxpbmVBbGlnbm1lbnQpLFxuXHRcdFx0c2NhbGVMb2NrOiBkZXNjLnN0cm9rZVN0eWxlU2NhbGVMb2NrLFxuXHRcdFx0c3Ryb2tlQWRqdXN0OiBkZXNjLnN0cm9rZVN0eWxlU3Ryb2tlQWRqdXN0LFxuXHRcdFx0bGluZURhc2hTZXQ6IGRlc2Muc3Ryb2tlU3R5bGVMaW5lRGFzaFNldC5tYXAocGFyc2VVbml0cyksXG5cdFx0XHRibGVuZE1vZGU6IEJsbk0uZGVjb2RlKGRlc2Muc3Ryb2tlU3R5bGVCbGVuZE1vZGUpLFxuXHRcdFx0b3BhY2l0eTogcGFyc2VQZXJjZW50KGRlc2Muc3Ryb2tlU3R5bGVPcGFjaXR5KSxcblx0XHRcdGNvbnRlbnQ6IHBhcnNlVmVjdG9yQ29udGVudChkZXNjLnN0cm9rZVN0eWxlQ29udGVudCksXG5cdFx0XHRyZXNvbHV0aW9uOiBkZXNjLnN0cm9rZVN0eWxlUmVzb2x1dGlvbixcblx0XHR9O1xuXG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3Qgc3Ryb2tlID0gdGFyZ2V0LnZlY3RvclN0cm9rZSE7XG5cdFx0Y29uc3QgZGVzY3JpcHRvcjogU3Ryb2tlRGVzY3JpcHRvciA9IHtcblx0XHRcdHN0cm9rZVN0eWxlVmVyc2lvbjogMixcblx0XHRcdHN0cm9rZUVuYWJsZWQ6ICEhc3Ryb2tlLnN0cm9rZUVuYWJsZWQsXG5cdFx0XHRmaWxsRW5hYmxlZDogISFzdHJva2UuZmlsbEVuYWJsZWQsXG5cdFx0XHRzdHJva2VTdHlsZUxpbmVXaWR0aDogc3Ryb2tlLmxpbmVXaWR0aCB8fCB7IHZhbHVlOiAzLCB1bml0czogJ1BvaW50cycgfSxcblx0XHRcdHN0cm9rZVN0eWxlTGluZURhc2hPZmZzZXQ6IHN0cm9rZS5saW5lRGFzaE9mZnNldCB8fCB7IHZhbHVlOiAwLCB1bml0czogJ1BvaW50cycgfSxcblx0XHRcdHN0cm9rZVN0eWxlTWl0ZXJMaW1pdDogc3Ryb2tlLm1pdGVyTGltaXQgPz8gMTAwLFxuXHRcdFx0c3Ryb2tlU3R5bGVMaW5lQ2FwVHlwZTogc3Ryb2tlU3R5bGVMaW5lQ2FwVHlwZS5lbmNvZGUoc3Ryb2tlLmxpbmVDYXBUeXBlKSxcblx0XHRcdHN0cm9rZVN0eWxlTGluZUpvaW5UeXBlOiBzdHJva2VTdHlsZUxpbmVKb2luVHlwZS5lbmNvZGUoc3Ryb2tlLmxpbmVKb2luVHlwZSksXG5cdFx0XHRzdHJva2VTdHlsZUxpbmVBbGlnbm1lbnQ6IHN0cm9rZVN0eWxlTGluZUFsaWdubWVudC5lbmNvZGUoc3Ryb2tlLmxpbmVBbGlnbm1lbnQpLFxuXHRcdFx0c3Ryb2tlU3R5bGVTY2FsZUxvY2s6ICEhc3Ryb2tlLnNjYWxlTG9jayxcblx0XHRcdHN0cm9rZVN0eWxlU3Ryb2tlQWRqdXN0OiAhIXN0cm9rZS5zdHJva2VBZGp1c3QsXG5cdFx0XHRzdHJva2VTdHlsZUxpbmVEYXNoU2V0OiBzdHJva2UubGluZURhc2hTZXQgfHwgW10sXG5cdFx0XHRzdHJva2VTdHlsZUJsZW5kTW9kZTogQmxuTS5lbmNvZGUoc3Ryb2tlLmJsZW5kTW9kZSksXG5cdFx0XHRzdHJva2VTdHlsZU9wYWNpdHk6IHVuaXRzUGVyY2VudChzdHJva2Uub3BhY2l0eSA/PyAxKSxcblx0XHRcdHN0cm9rZVN0eWxlQ29udGVudDogc2VyaWFsaXplVmVjdG9yQ29udGVudChcblx0XHRcdFx0c3Ryb2tlLmNvbnRlbnQgfHwgeyB0eXBlOiAnY29sb3InLCBjb2xvcjogeyByOiAwLCBnOiAwLCBiOiAwIH0gfSkuZGVzY3JpcHRvcixcblx0XHRcdHN0cm9rZVN0eWxlUmVzb2x1dGlvbjogc3Ryb2tlLnJlc29sdXRpb24gPz8gNzIsXG5cdFx0fTtcblxuXHRcdHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgJ3N0cm9rZVN0eWxlJywgZGVzY3JpcHRvcik7XG5cdH0sXG4pO1xuXG5pbnRlcmZhY2UgQXJ0YkRlc2NyaXB0b3Ige1xuXHRhcnRib2FyZFJlY3Q6IHsgJ1RvcCAnOiBudW1iZXI7IExlZnQ6IG51bWJlcjsgQnRvbTogbnVtYmVyOyBSZ2h0OiBudW1iZXI7IH07XG5cdGd1aWRlSW5kZWNlczogYW55W107XG5cdGFydGJvYXJkUHJlc2V0TmFtZTogc3RyaW5nO1xuXHQnQ2xyICc6IERlc2NyaXB0b3JDb2xvcjtcblx0YXJ0Ym9hcmRCYWNrZ3JvdW5kVHlwZTogbnVtYmVyO1xufVxuXG5hZGRIYW5kbGVyKFxuXHQnYXJ0YicsIC8vIHBlci1sYXllciBhcmJvYXJkIGluZm9cblx0aGFzS2V5KCdhcnRib2FyZCcpLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQpID0+IHtcblx0XHRjb25zdCBkZXNjID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcikgYXMgQXJ0YkRlc2NyaXB0b3I7XG5cdFx0Y29uc3QgcmVjdCA9IGRlc2MuYXJ0Ym9hcmRSZWN0O1xuXHRcdHRhcmdldC5hcnRib2FyZCA9IHtcblx0XHRcdHJlY3Q6IHsgdG9wOiByZWN0WydUb3AgJ10sIGxlZnQ6IHJlY3QuTGVmdCwgYm90dG9tOiByZWN0LkJ0b20sIHJpZ2h0OiByZWN0LlJnaHQgfSxcblx0XHRcdGd1aWRlSW5kaWNlczogZGVzYy5ndWlkZUluZGVjZXMsXG5cdFx0XHRwcmVzZXROYW1lOiBkZXNjLmFydGJvYXJkUHJlc2V0TmFtZSxcblx0XHRcdGNvbG9yOiBwYXJzZUNvbG9yKGRlc2NbJ0NsciAnXSksXG5cdFx0XHRiYWNrZ3JvdW5kVHlwZTogZGVzYy5hcnRib2FyZEJhY2tncm91bmRUeXBlLFxuXHRcdH07XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBhcnRib2FyZCA9IHRhcmdldC5hcnRib2FyZCE7XG5cdFx0Y29uc3QgcmVjdCA9IGFydGJvYXJkLnJlY3Q7XG5cdFx0Y29uc3QgZGVzYzogQXJ0YkRlc2NyaXB0b3IgPSB7XG5cdFx0XHRhcnRib2FyZFJlY3Q6IHsgJ1RvcCAnOiByZWN0LnRvcCwgTGVmdDogcmVjdC5sZWZ0LCBCdG9tOiByZWN0LmJvdHRvbSwgUmdodDogcmVjdC5yaWdodCB9LFxuXHRcdFx0Z3VpZGVJbmRlY2VzOiBhcnRib2FyZC5ndWlkZUluZGljZXMgfHwgW10sXG5cdFx0XHRhcnRib2FyZFByZXNldE5hbWU6IGFydGJvYXJkLnByZXNldE5hbWUgfHwgJycsXG5cdFx0XHQnQ2xyICc6IHNlcmlhbGl6ZUNvbG9yKGFydGJvYXJkLmNvbG9yKSxcblx0XHRcdGFydGJvYXJkQmFja2dyb3VuZFR5cGU6IGFydGJvYXJkLmJhY2tncm91bmRUeXBlID8/IDEsXG5cdFx0fTtcblxuXHRcdHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgJ2FydGJvYXJkJywgZGVzYyk7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQnc24yUCcsXG5cdGhhc0tleSgndXNpbmdBbGlnbmVkUmVuZGVyaW5nJyksXG5cdChyZWFkZXIsIHRhcmdldCkgPT4gdGFyZ2V0LnVzaW5nQWxpZ25lZFJlbmRlcmluZyA9ICEhcmVhZFVpbnQzMihyZWFkZXIpLFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHdyaXRlVWludDMyKHdyaXRlciwgdGFyZ2V0LnVzaW5nQWxpZ25lZFJlbmRlcmluZyA/IDEgOiAwKSxcbik7XG5cbmNvbnN0IHBsYWNlZExheWVyVHlwZXM6IFBsYWNlZExheWVyVHlwZVtdID0gWyd1bmtub3duJywgJ3ZlY3RvcicsICdyYXN0ZXInLCAnaW1hZ2Ugc3RhY2snXTtcblxuZnVuY3Rpb24gcGFyc2VXYXJwKHdhcnA6IFdhcnBEZXNjcmlwdG9yICYgUXVpbHRXYXJwRGVzY3JpcHRvcik6IFdhcnAge1xuXHRjb25zdCByZXN1bHQ6IFdhcnAgPSB7XG5cdFx0c3R5bGU6IHdhcnBTdHlsZS5kZWNvZGUod2FycC53YXJwU3R5bGUpLFxuXHRcdHZhbHVlOiB3YXJwLndhcnBWYWx1ZSB8fCAwLFxuXHRcdHBlcnNwZWN0aXZlOiB3YXJwLndhcnBQZXJzcGVjdGl2ZSB8fCAwLFxuXHRcdHBlcnNwZWN0aXZlT3RoZXI6IHdhcnAud2FycFBlcnNwZWN0aXZlT3RoZXIgfHwgMCxcblx0XHRyb3RhdGU6IE9ybnQuZGVjb2RlKHdhcnAud2FycFJvdGF0ZSksXG5cdFx0Ym91bmRzOiB3YXJwLmJvdW5kcyAmJiB7XG5cdFx0XHR0b3A6IHBhcnNlVW5pdHNPck51bWJlcih3YXJwLmJvdW5kc1snVG9wICddKSxcblx0XHRcdGxlZnQ6IHBhcnNlVW5pdHNPck51bWJlcih3YXJwLmJvdW5kcy5MZWZ0KSxcblx0XHRcdGJvdHRvbTogcGFyc2VVbml0c09yTnVtYmVyKHdhcnAuYm91bmRzLkJ0b20pLFxuXHRcdFx0cmlnaHQ6IHBhcnNlVW5pdHNPck51bWJlcih3YXJwLmJvdW5kcy5SZ2h0KSxcblx0XHR9LFxuXHRcdHVPcmRlcjogd2FycC51T3JkZXIsXG5cdFx0dk9yZGVyOiB3YXJwLnZPcmRlcixcblx0fTtcblxuXHRpZiAod2FycC5kZWZvcm1OdW1Sb3dzICE9IG51bGwgfHwgd2FycC5kZWZvcm1OdW1Db2xzICE9IG51bGwpIHtcblx0XHRyZXN1bHQuZGVmb3JtTnVtUm93cyA9IHdhcnAuZGVmb3JtTnVtUm93cztcblx0XHRyZXN1bHQuZGVmb3JtTnVtQ29scyA9IHdhcnAuZGVmb3JtTnVtQ29scztcblx0fVxuXG5cdGNvbnN0IGVudmVsb3BlV2FycCA9IHdhcnAuY3VzdG9tRW52ZWxvcGVXYXJwO1xuXHRpZiAoZW52ZWxvcGVXYXJwKSB7XG5cdFx0cmVzdWx0LmN1c3RvbUVudmVsb3BlV2FycCA9IHtcblx0XHRcdG1lc2hQb2ludHM6IFtdLFxuXHRcdH07XG5cblx0XHRjb25zdCB4cyA9IGVudmVsb3BlV2FycC5tZXNoUG9pbnRzLmZpbmQoaSA9PiBpLnR5cGUgPT09ICdIcnpuJyk/LnZhbHVlcyB8fCBbXTtcblx0XHRjb25zdCB5cyA9IGVudmVsb3BlV2FycC5tZXNoUG9pbnRzLmZpbmQoaSA9PiBpLnR5cGUgPT09ICdWcnRjJyk/LnZhbHVlcyB8fCBbXTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHJlc3VsdC5jdXN0b21FbnZlbG9wZVdhcnAhLm1lc2hQb2ludHMucHVzaCh7IHg6IHhzW2ldLCB5OiB5c1tpXSB9KTtcblx0XHR9XG5cblx0XHRpZiAoZW52ZWxvcGVXYXJwLnF1aWx0U2xpY2VYIHx8IGVudmVsb3BlV2FycC5xdWlsdFNsaWNlWSkge1xuXHRcdFx0cmVzdWx0LmN1c3RvbUVudmVsb3BlV2FycC5xdWlsdFNsaWNlWCA9IGVudmVsb3BlV2FycC5xdWlsdFNsaWNlWD8uWzBdPy52YWx1ZXMgfHwgW107XG5cdFx0XHRyZXN1bHQuY3VzdG9tRW52ZWxvcGVXYXJwLnF1aWx0U2xpY2VZID0gZW52ZWxvcGVXYXJwLnF1aWx0U2xpY2VZPy5bMF0/LnZhbHVlcyB8fCBbXTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBpc1F1aWx0V2FycCh3YXJwOiBXYXJwKSB7XG5cdHJldHVybiB3YXJwLmRlZm9ybU51bUNvbHMgIT0gbnVsbCB8fCB3YXJwLmRlZm9ybU51bVJvd3MgIT0gbnVsbCB8fFxuXHRcdHdhcnAuY3VzdG9tRW52ZWxvcGVXYXJwPy5xdWlsdFNsaWNlWCB8fCB3YXJwLmN1c3RvbUVudmVsb3BlV2FycD8ucXVpbHRTbGljZVk7XG59XG5cbmZ1bmN0aW9uIGVuY29kZVdhcnAod2FycDogV2FycCk6IFdhcnBEZXNjcmlwdG9yIHtcblx0Y29uc3QgYm91bmRzID0gd2FycC5ib3VuZHM7XG5cdGNvbnN0IGRlc2M6IFdhcnBEZXNjcmlwdG9yID0ge1xuXHRcdHdhcnBTdHlsZTogd2FycFN0eWxlLmVuY29kZSh3YXJwLnN0eWxlKSxcblx0XHR3YXJwVmFsdWU6IHdhcnAudmFsdWUgfHwgMCxcblx0XHR3YXJwUGVyc3BlY3RpdmU6IHdhcnAucGVyc3BlY3RpdmUgfHwgMCxcblx0XHR3YXJwUGVyc3BlY3RpdmVPdGhlcjogd2FycC5wZXJzcGVjdGl2ZU90aGVyIHx8IDAsXG5cdFx0d2FycFJvdGF0ZTogT3JudC5lbmNvZGUod2FycC5yb3RhdGUpLFxuXHRcdGJvdW5kczoge1xuXHRcdFx0J1RvcCAnOiB1bml0c1ZhbHVlKGJvdW5kcyAmJiBib3VuZHMudG9wIHx8IHsgdW5pdHM6ICdQaXhlbHMnLCB2YWx1ZTogMCB9LCAnYm91bmRzLnRvcCcpLFxuXHRcdFx0TGVmdDogdW5pdHNWYWx1ZShib3VuZHMgJiYgYm91bmRzLmxlZnQgfHwgeyB1bml0czogJ1BpeGVscycsIHZhbHVlOiAwIH0sICdib3VuZHMubGVmdCcpLFxuXHRcdFx0QnRvbTogdW5pdHNWYWx1ZShib3VuZHMgJiYgYm91bmRzLmJvdHRvbSB8fCB7IHVuaXRzOiAnUGl4ZWxzJywgdmFsdWU6IDAgfSwgJ2JvdW5kcy5ib3R0b20nKSxcblx0XHRcdFJnaHQ6IHVuaXRzVmFsdWUoYm91bmRzICYmIGJvdW5kcy5yaWdodCB8fCB7IHVuaXRzOiAnUGl4ZWxzJywgdmFsdWU6IDAgfSwgJ2JvdW5kcy5yaWdodCcpLFxuXHRcdH0sXG5cdFx0dU9yZGVyOiB3YXJwLnVPcmRlciB8fCAwLFxuXHRcdHZPcmRlcjogd2FycC52T3JkZXIgfHwgMCxcblx0fTtcblxuXHRjb25zdCBpc1F1aWx0ID0gaXNRdWlsdFdhcnAod2FycCk7XG5cblx0aWYgKGlzUXVpbHQpIHtcblx0XHRjb25zdCBkZXNjMiA9IGRlc2MgYXMgUXVpbHRXYXJwRGVzY3JpcHRvcjtcblx0XHRkZXNjMi5kZWZvcm1OdW1Sb3dzID0gd2FycC5kZWZvcm1OdW1Sb3dzIHx8IDA7XG5cdFx0ZGVzYzIuZGVmb3JtTnVtQ29scyA9IHdhcnAuZGVmb3JtTnVtQ29scyB8fCAwO1xuXHR9XG5cblx0Y29uc3QgY3VzdG9tRW52ZWxvcGVXYXJwID0gd2FycC5jdXN0b21FbnZlbG9wZVdhcnA7XG5cdGlmIChjdXN0b21FbnZlbG9wZVdhcnApIHtcblx0XHRjb25zdCBtZXNoUG9pbnRzID0gY3VzdG9tRW52ZWxvcGVXYXJwLm1lc2hQb2ludHMgfHwgW107XG5cblx0XHRpZiAoaXNRdWlsdCkge1xuXHRcdFx0Y29uc3QgZGVzYzIgPSBkZXNjIGFzIFF1aWx0V2FycERlc2NyaXB0b3I7XG5cdFx0XHRkZXNjMi5jdXN0b21FbnZlbG9wZVdhcnAgPSB7XG5cdFx0XHRcdHF1aWx0U2xpY2VYOiBbe1xuXHRcdFx0XHRcdHR5cGU6ICdxdWlsdFNsaWNlWCcsXG5cdFx0XHRcdFx0dmFsdWVzOiBjdXN0b21FbnZlbG9wZVdhcnAucXVpbHRTbGljZVggfHwgW10sXG5cdFx0XHRcdH1dLFxuXHRcdFx0XHRxdWlsdFNsaWNlWTogW3tcblx0XHRcdFx0XHR0eXBlOiAncXVpbHRTbGljZVknLFxuXHRcdFx0XHRcdHZhbHVlczogY3VzdG9tRW52ZWxvcGVXYXJwLnF1aWx0U2xpY2VZIHx8IFtdLFxuXHRcdFx0XHR9XSxcblx0XHRcdFx0bWVzaFBvaW50czogW1xuXHRcdFx0XHRcdHsgdHlwZTogJ0hyem4nLCB2YWx1ZXM6IG1lc2hQb2ludHMubWFwKHAgPT4gcC54KSB9LFxuXHRcdFx0XHRcdHsgdHlwZTogJ1ZydGMnLCB2YWx1ZXM6IG1lc2hQb2ludHMubWFwKHAgPT4gcC55KSB9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGVzYy5jdXN0b21FbnZlbG9wZVdhcnAgPSB7XG5cdFx0XHRcdG1lc2hQb2ludHM6IFtcblx0XHRcdFx0XHR7IHR5cGU6ICdIcnpuJywgdmFsdWVzOiBtZXNoUG9pbnRzLm1hcChwID0+IHAueCkgfSxcblx0XHRcdFx0XHR7IHR5cGU6ICdWcnRjJywgdmFsdWVzOiBtZXNoUG9pbnRzLm1hcChwID0+IHAueSkgfSxcblx0XHRcdFx0XSxcblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGRlc2M7XG59XG5cbmFkZEhhbmRsZXIoXG5cdCdQbExkJyxcblx0aGFzS2V5KCdwbGFjZWRMYXllcicpLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQpID0+IHtcblx0XHRpZiAocmVhZFNpZ25hdHVyZShyZWFkZXIpICE9PSAncGxjTCcpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBQbExkIHNpZ25hdHVyZWApO1xuXHRcdGlmIChyZWFkSW50MzIocmVhZGVyKSAhPT0gMykgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFBsTGQgdmVyc2lvbmApO1xuXHRcdGNvbnN0IGlkID0gcmVhZFBhc2NhbFN0cmluZyhyZWFkZXIsIDEpO1xuXHRcdHJlYWRJbnQzMihyZWFkZXIpOyAvLyBwYWdlTnVtYmVyXG5cdFx0cmVhZEludDMyKHJlYWRlcik7IC8vIHRvdGFsUGFnZXMsIFRPRE86IGNoZWNrIGhvdyB0aGlzIHdvcmtzID9cblx0XHRyZWFkSW50MzIocmVhZGVyKTsgLy8gYW5pdEFsaWFzUG9saWN5IDE2XG5cdFx0Y29uc3QgcGxhY2VkTGF5ZXJUeXBlID0gcmVhZEludDMyKHJlYWRlcik7IC8vIDAgPSB1bmtub3duLCAxID0gdmVjdG9yLCAyID0gcmFzdGVyLCAzID0gaW1hZ2Ugc3RhY2tcblx0XHRpZiAoIXBsYWNlZExheWVyVHlwZXNbcGxhY2VkTGF5ZXJUeXBlXSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBsTGQgdHlwZScpO1xuXHRcdGNvbnN0IHRyYW5zZm9ybTogbnVtYmVyW10gPSBbXTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IDg7IGkrKykgdHJhbnNmb3JtLnB1c2gocmVhZEZsb2F0NjQocmVhZGVyKSk7IC8vIHgsIHkgb2YgNCBjb3JuZXJzIG9mIHRoZSB0cmFuc2Zvcm1cblx0XHRjb25zdCB3YXJwVmVyc2lvbiA9IHJlYWRJbnQzMihyZWFkZXIpO1xuXHRcdGlmICh3YXJwVmVyc2lvbiAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFdhcnAgdmVyc2lvbiAke3dhcnBWZXJzaW9ufWApO1xuXHRcdGNvbnN0IHdhcnA6IFdhcnBEZXNjcmlwdG9yICYgUXVpbHRXYXJwRGVzY3JpcHRvciA9IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpO1xuXG5cdFx0dGFyZ2V0LnBsYWNlZExheWVyID0gdGFyZ2V0LnBsYWNlZExheWVyIHx8IHsgLy8gc2tpcCBpZiBTb0xkIGFscmVhZHkgc2V0IGl0XG5cdFx0XHRpZCxcblx0XHRcdHR5cGU6IHBsYWNlZExheWVyVHlwZXNbcGxhY2VkTGF5ZXJUeXBlXSxcblx0XHRcdC8vIHBhZ2VOdW1iZXIsXG5cdFx0XHQvLyB0b3RhbFBhZ2VzLFxuXHRcdFx0dHJhbnNmb3JtLFxuXHRcdFx0d2FycDogcGFyc2VXYXJwKHdhcnApLFxuXHRcdH07XG5cblx0XHQvLyBjb25zb2xlLmxvZygnUGxMZCB3YXJwJywgcmVxdWlyZSgndXRpbCcpLmluc3BlY3Qod2FycCwgZmFsc2UsIDk5LCB0cnVlKSk7XG5cdFx0Ly8gY29uc29sZS5sb2coJ1BsTGQnLCByZXF1aXJlKCd1dGlsJykuaW5zcGVjdCh0YXJnZXQucGxhY2VkTGF5ZXIsIGZhbHNlLCA5OSwgdHJ1ZSkpO1xuXG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgcGxhY2VkID0gdGFyZ2V0LnBsYWNlZExheWVyITtcblx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsICdwbGNMJyk7XG5cdFx0d3JpdGVJbnQzMih3cml0ZXIsIDMpOyAvLyB2ZXJzaW9uXG5cdFx0d3JpdGVQYXNjYWxTdHJpbmcod3JpdGVyLCBwbGFjZWQuaWQsIDEpO1xuXHRcdHdyaXRlSW50MzIod3JpdGVyLCAxKTsgLy8gcGFnZU51bWJlclxuXHRcdHdyaXRlSW50MzIod3JpdGVyLCAxKTsgLy8gdG90YWxQYWdlc1xuXHRcdHdyaXRlSW50MzIod3JpdGVyLCAxNik7IC8vIGFuaXRBbGlhc1BvbGljeVxuXHRcdGlmIChwbGFjZWRMYXllclR5cGVzLmluZGV4T2YocGxhY2VkLnR5cGUpID09PSAtMSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHBsYWNlZExheWVyIHR5cGUnKTtcblx0XHR3cml0ZUludDMyKHdyaXRlciwgcGxhY2VkTGF5ZXJUeXBlcy5pbmRleE9mKHBsYWNlZC50eXBlKSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlRmxvYXQ2NCh3cml0ZXIsIHBsYWNlZC50cmFuc2Zvcm1baV0pO1xuXHRcdHdyaXRlSW50MzIod3JpdGVyLCAwKTsgLy8gd2FycCB2ZXJzaW9uXG5cdFx0Y29uc3QgaXNRdWlsdCA9IHBsYWNlZC53YXJwICYmIGlzUXVpbHRXYXJwKHBsYWNlZC53YXJwKTtcblx0XHRjb25zdCB0eXBlID0gaXNRdWlsdCA/ICdxdWlsdFdhcnAnIDogJ3dhcnAnO1xuXHRcdHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgdHlwZSwgZW5jb2RlV2FycChwbGFjZWQud2FycCB8fCB7fSksIHR5cGUpO1xuXHR9LFxuKTtcblxuaW50ZXJmYWNlIFNvTGREZXNjcmlwdG9yIHtcblx0SWRudDogc3RyaW5nO1xuXHRwbGFjZWQ6IHN0cmluZztcblx0UGdObTogbnVtYmVyO1xuXHR0b3RhbFBhZ2VzOiBudW1iZXI7XG5cdENyb3A/OiBudW1iZXI7XG5cdGZyYW1lU3RlcDogeyBudW1lcmF0b3I6IG51bWJlcjsgZGVub21pbmF0b3I6IG51bWJlcjsgfTtcblx0ZHVyYXRpb246IHsgbnVtZXJhdG9yOiBudW1iZXI7IGRlbm9taW5hdG9yOiBudW1iZXI7IH07XG5cdGZyYW1lQ291bnQ6IG51bWJlcjtcblx0QW5udDogbnVtYmVyO1xuXHRUeXBlOiBudW1iZXI7XG5cdFRybmY6IG51bWJlcltdO1xuXHRub25BZmZpbmVUcmFuc2Zvcm06IG51bWJlcltdO1xuXHRxdWlsdFdhcnA/OiBRdWlsdFdhcnBEZXNjcmlwdG9yO1xuXHR3YXJwOiBXYXJwRGVzY3JpcHRvcjtcblx0J1N6ICAnOiB7IFdkdGg6IG51bWJlcjsgSGdodDogbnVtYmVyOyB9O1xuXHRSc2x0OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcblx0Y29tcD86IG51bWJlcjtcblx0Y29tcEluZm8/OiB7IGNvbXBJRDogbnVtYmVyOyBvcmlnaW5hbENvbXBJRDogbnVtYmVyOyB9O1xufVxuXG5hZGRIYW5kbGVyKFxuXHQnU29MZCcsXG5cdGhhc0tleSgncGxhY2VkTGF5ZXInKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0aWYgKHJlYWRTaWduYXR1cmUocmVhZGVyKSAhPT0gJ3NvTEQnKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgU29MZCB0eXBlYCk7XG5cdFx0aWYgKHJlYWRJbnQzMihyZWFkZXIpICE9PSA0KSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgU29MZCB2ZXJzaW9uYCk7XG5cdFx0Y29uc3QgZGVzYzogU29MZERlc2NyaXB0b3IgPSByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyKTtcblx0XHQvLyBjb25zb2xlLmxvZygnU29MZCcsIHJlcXVpcmUoJ3V0aWwnKS5pbnNwZWN0KGRlc2MsIGZhbHNlLCA5OSwgdHJ1ZSkpO1xuXHRcdC8vIGNvbnNvbGUubG9nKCdTb0xkLndhcnAnLCByZXF1aXJlKCd1dGlsJykuaW5zcGVjdChkZXNjLndhcnAsIGZhbHNlLCA5OSwgdHJ1ZSkpO1xuXHRcdC8vIGNvbnNvbGUubG9nKCdTb0xkLnF1aWx0V2FycCcsIHJlcXVpcmUoJ3V0aWwnKS5pbnNwZWN0KGRlc2MucXVpbHRXYXJwLCBmYWxzZSwgOTksIHRydWUpKTtcblxuXHRcdHRhcmdldC5wbGFjZWRMYXllciA9IHtcblx0XHRcdGlkOiBkZXNjLklkbnQsXG5cdFx0XHRwbGFjZWQ6IGRlc2MucGxhY2VkLFxuXHRcdFx0dHlwZTogcGxhY2VkTGF5ZXJUeXBlc1tkZXNjLlR5cGVdLFxuXHRcdFx0Ly8gcGFnZU51bWJlcjogaW5mby5QZ05tLFxuXHRcdFx0Ly8gdG90YWxQYWdlczogaW5mby50b3RhbFBhZ2VzLFxuXHRcdFx0Ly8gZnJhbWVTdGVwOiBpbmZvLmZyYW1lU3RlcCxcblx0XHRcdC8vIGR1cmF0aW9uOiBpbmZvLmR1cmF0aW9uLFxuXHRcdFx0Ly8gZnJhbWVDb3VudDogaW5mby5mcmFtZUNvdW50LFxuXHRcdFx0dHJhbnNmb3JtOiBkZXNjLlRybmYsXG5cdFx0XHR3aWR0aDogZGVzY1snU3ogICddLldkdGgsXG5cdFx0XHRoZWlnaHQ6IGRlc2NbJ1N6ICAnXS5IZ2h0LFxuXHRcdFx0cmVzb2x1dGlvbjogcGFyc2VVbml0cyhkZXNjLlJzbHQpLFxuXHRcdFx0d2FycDogcGFyc2VXYXJwKChkZXNjLnF1aWx0V2FycCB8fCBkZXNjLndhcnApIGFzIGFueSksXG5cdFx0fTtcblxuXHRcdGlmIChkZXNjLm5vbkFmZmluZVRyYW5zZm9ybSAmJiBkZXNjLm5vbkFmZmluZVRyYW5zZm9ybS5zb21lKCh4LCBpKSA9PiB4ICE9PSBkZXNjLlRybmZbaV0pKSB7XG5cdFx0XHR0YXJnZXQucGxhY2VkTGF5ZXIubm9uQWZmaW5lVHJhbnNmb3JtID0gZGVzYy5ub25BZmZpbmVUcmFuc2Zvcm07XG5cdFx0fVxuXG5cdFx0aWYgKGRlc2MuQ3JvcCkgdGFyZ2V0LnBsYWNlZExheWVyLmNyb3AgPSBkZXNjLkNyb3A7XG5cdFx0aWYgKGRlc2MuY29tcCkgdGFyZ2V0LnBsYWNlZExheWVyLmNvbXAgPSBkZXNjLmNvbXA7XG5cdFx0aWYgKGRlc2MuY29tcEluZm8pIHRhcmdldC5wbGFjZWRMYXllci5jb21wSW5mbyA9IGRlc2MuY29tcEluZm87XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpOyAvLyBIQUNLXG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgJ3NvTEQnKTtcblx0XHR3cml0ZUludDMyKHdyaXRlciwgNCk7IC8vIHZlcnNpb25cblxuXHRcdGNvbnN0IHBsYWNlZCA9IHRhcmdldC5wbGFjZWRMYXllciE7XG5cdFx0Y29uc3QgZGVzYzogU29MZERlc2NyaXB0b3IgPSB7XG5cdFx0XHRJZG50OiBwbGFjZWQuaWQsXG5cdFx0XHRwbGFjZWQ6IHBsYWNlZC5wbGFjZWQgPz8gcGxhY2VkLmlkLCAvLyA/Pz9cblx0XHRcdFBnTm06IDEsXG5cdFx0XHR0b3RhbFBhZ2VzOiAxLFxuXHRcdFx0Li4uKHBsYWNlZC5jcm9wID8geyBDcm9wOiBwbGFjZWQuY3JvcCB9IDoge30pLFxuXHRcdFx0ZnJhbWVTdGVwOiB7XG5cdFx0XHRcdG51bWVyYXRvcjogMCxcblx0XHRcdFx0ZGVub21pbmF0b3I6IDYwMFxuXHRcdFx0fSxcblx0XHRcdGR1cmF0aW9uOiB7XG5cdFx0XHRcdG51bWVyYXRvcjogMCxcblx0XHRcdFx0ZGVub21pbmF0b3I6IDYwMFxuXHRcdFx0fSxcblx0XHRcdGZyYW1lQ291bnQ6IDEsXG5cdFx0XHRBbm50OiAxNixcblx0XHRcdFR5cGU6IHBsYWNlZExheWVyVHlwZXMuaW5kZXhPZihwbGFjZWQudHlwZSksXG5cdFx0XHRUcm5mOiBwbGFjZWQudHJhbnNmb3JtLFxuXHRcdFx0bm9uQWZmaW5lVHJhbnNmb3JtOiBwbGFjZWQubm9uQWZmaW5lVHJhbnNmb3JtID8/IHBsYWNlZC50cmFuc2Zvcm0sXG5cdFx0XHRxdWlsdFdhcnA6IHt9IGFzIGFueSxcblx0XHRcdHdhcnA6IGVuY29kZVdhcnAocGxhY2VkLndhcnAgfHwge30pLFxuXHRcdFx0J1N6ICAnOiB7XG5cdFx0XHRcdFdkdGg6IHBsYWNlZC53aWR0aCB8fCAwLCAvLyBUT0RPOiBmaW5kIHNpemUgP1xuXHRcdFx0XHRIZ2h0OiBwbGFjZWQuaGVpZ2h0IHx8IDAsIC8vIFRPRE86IGZpbmQgc2l6ZSA/XG5cdFx0XHR9LFxuXHRcdFx0UnNsdDogcGxhY2VkLnJlc29sdXRpb24gPyB1bml0c1ZhbHVlKHBsYWNlZC5yZXNvbHV0aW9uLCAncmVzb2x1dGlvbicpIDogeyB1bml0czogJ0RlbnNpdHknLCB2YWx1ZTogNzIgfSxcblx0XHR9O1xuXG5cdFx0aWYgKHBsYWNlZC53YXJwICYmIGlzUXVpbHRXYXJwKHBsYWNlZC53YXJwKSkge1xuXHRcdFx0Y29uc3QgcXVpbHRXYXJwID0gZW5jb2RlV2FycChwbGFjZWQud2FycCkgYXMgUXVpbHRXYXJwRGVzY3JpcHRvcjtcblx0XHRcdGRlc2MucXVpbHRXYXJwID0gcXVpbHRXYXJwO1xuXHRcdFx0ZGVzYy53YXJwID0ge1xuXHRcdFx0XHR3YXJwU3R5bGU6ICd3YXJwU3R5bGUud2FycE5vbmUnLFxuXHRcdFx0XHR3YXJwVmFsdWU6IHF1aWx0V2FycC53YXJwVmFsdWUsXG5cdFx0XHRcdHdhcnBQZXJzcGVjdGl2ZTogcXVpbHRXYXJwLndhcnBQZXJzcGVjdGl2ZSxcblx0XHRcdFx0d2FycFBlcnNwZWN0aXZlT3RoZXI6IHF1aWx0V2FycC53YXJwUGVyc3BlY3RpdmVPdGhlcixcblx0XHRcdFx0d2FycFJvdGF0ZTogcXVpbHRXYXJwLndhcnBSb3RhdGUsXG5cdFx0XHRcdGJvdW5kczogcXVpbHRXYXJwLmJvdW5kcyxcblx0XHRcdFx0dU9yZGVyOiBxdWlsdFdhcnAudU9yZGVyLFxuXHRcdFx0XHR2T3JkZXI6IHF1aWx0V2FycC52T3JkZXIsXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkZWxldGUgZGVzYy5xdWlsdFdhcnA7XG5cdFx0fVxuXG5cdFx0aWYgKHBsYWNlZC5jb21wKSBkZXNjLmNvbXAgPSBwbGFjZWQuY29tcDtcblx0XHRpZiAocGxhY2VkLmNvbXBJbmZvKSBkZXNjLmNvbXBJbmZvID0gcGxhY2VkLmNvbXBJbmZvO1xuXG5cdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAnbnVsbCcsIGRlc2MsIGRlc2MucXVpbHRXYXJwID8gJ3F1aWx0V2FycCcgOiAnd2FycCcpO1xuXHR9LFxuKTtcblxuYWRkSGFuZGxlcihcblx0J2Z4cnAnLFxuXHRoYXNLZXkoJ3JlZmVyZW5jZVBvaW50JyksXG5cdChyZWFkZXIsIHRhcmdldCkgPT4ge1xuXHRcdHRhcmdldC5yZWZlcmVuY2VQb2ludCA9IHtcblx0XHRcdHg6IHJlYWRGbG9hdDY0KHJlYWRlciksXG5cdFx0XHR5OiByZWFkRmxvYXQ2NChyZWFkZXIpLFxuXHRcdH07XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdHdyaXRlRmxvYXQ2NCh3cml0ZXIsIHRhcmdldC5yZWZlcmVuY2VQb2ludCEueCk7XG5cdFx0d3JpdGVGbG9hdDY0KHdyaXRlciwgdGFyZ2V0LnJlZmVyZW5jZVBvaW50IS55KTtcblx0fSxcbik7XG5cbmlmIChNT0NLX0hBTkRMRVJTKSB7XG5cdGFkZEhhbmRsZXIoXG5cdFx0J1BhdHQnLFxuXHRcdHRhcmdldCA9PiAodGFyZ2V0IGFzIGFueSkuX1BhdHQgIT09IHVuZGVmaW5lZCxcblx0XHQocmVhZGVyLCB0YXJnZXQsIGxlZnQpID0+IHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKCdhZGRpdGlvbmFsIGluZm86IFBhdHQnKTtcblx0XHRcdCh0YXJnZXQgYXMgYW55KS5fUGF0dCA9IHJlYWRCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdFx0fSxcblx0XHQod3JpdGVyLCB0YXJnZXQpID0+IGZhbHNlICYmIHdyaXRlQnl0ZXMod3JpdGVyLCAodGFyZ2V0IGFzIGFueSkuX1BhdHQpLFxuXHQpO1xufSBlbHNlIHtcblx0YWRkSGFuZGxlcihcblx0XHQnUGF0dCcsIC8vIFRPRE86IGhhbmRsZSBhbHNvIFBhdDIgJiBQYXQzXG5cdFx0dGFyZ2V0ID0+ICF0YXJnZXQsXG5cdFx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0XHRpZiAoIWxlZnQoKSkgcmV0dXJuO1xuXG5cdFx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpOyByZXR1cm47IC8vIG5vdCBzdXBwb3J0ZWQgeWV0XG5cdFx0XHR0YXJnZXQ7IHJlYWRQYXR0ZXJuO1xuXG5cdFx0XHQvLyBpZiAoIXRhcmdldC5wYXR0ZXJucykgdGFyZ2V0LnBhdHRlcm5zID0gW107XG5cdFx0XHQvLyB0YXJnZXQucGF0dGVybnMucHVzaChyZWFkUGF0dGVybihyZWFkZXIpKTtcblx0XHRcdC8vIHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdFx0fSxcblx0XHQoX3dyaXRlciwgX3RhcmdldCkgPT4ge1xuXHRcdH0sXG5cdCk7XG59XG5cbmZ1bmN0aW9uIHJlYWRSZWN0KHJlYWRlcjogUHNkUmVhZGVyKSB7XG5cdGNvbnN0IHRvcCA9IHJlYWRJbnQzMihyZWFkZXIpO1xuXHRjb25zdCBsZWZ0ID0gcmVhZEludDMyKHJlYWRlcik7XG5cdGNvbnN0IGJvdHRvbSA9IHJlYWRJbnQzMihyZWFkZXIpO1xuXHRjb25zdCByaWdodCA9IHJlYWRJbnQzMihyZWFkZXIpO1xuXHRyZXR1cm4geyB0b3AsIGxlZnQsIGJvdHRvbSwgcmlnaHQgfTtcbn1cblxuZnVuY3Rpb24gd3JpdGVSZWN0KHdyaXRlcjogUHNkV3JpdGVyLCByZWN0OiB7IGxlZnQ6IG51bWJlcjsgdG9wOiBudW1iZXI7IHJpZ2h0OiBudW1iZXI7IGJvdHRvbTogbnVtYmVyIH0pIHtcblx0d3JpdGVJbnQzMih3cml0ZXIsIHJlY3QudG9wKTtcblx0d3JpdGVJbnQzMih3cml0ZXIsIHJlY3QubGVmdCk7XG5cdHdyaXRlSW50MzIod3JpdGVyLCByZWN0LmJvdHRvbSk7XG5cdHdyaXRlSW50MzIod3JpdGVyLCByZWN0LnJpZ2h0KTtcbn1cblxuYWRkSGFuZGxlcihcblx0J0Fubm8nLFxuXHR0YXJnZXQgPT4gKHRhcmdldCBhcyBQc2QpLmFubm90YXRpb25zICE9PSB1bmRlZmluZWQsXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdGNvbnN0IG1ham9yID0gcmVhZFVpbnQxNihyZWFkZXIpO1xuXHRcdGNvbnN0IG1pbm9yID0gcmVhZFVpbnQxNihyZWFkZXIpO1xuXHRcdGlmIChtYWpvciAhPT0gMiB8fCBtaW5vciAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEFubm8gdmVyc2lvbicpO1xuXHRcdGNvbnN0IGNvdW50ID0gcmVhZFVpbnQzMihyZWFkZXIpO1xuXHRcdGNvbnN0IGFubm90YXRpb25zOiBBbm5vdGF0aW9uW10gPSBbXTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuXHRcdFx0Lypjb25zdCBsZW5ndGggPSovIHJlYWRVaW50MzIocmVhZGVyKTtcblx0XHRcdGNvbnN0IHR5cGUgPSByZWFkU2lnbmF0dXJlKHJlYWRlcik7XG5cdFx0XHRjb25zdCBvcGVuID0gISFyZWFkVWludDgocmVhZGVyKTtcblx0XHRcdC8qY29uc3QgZmxhZ3MgPSovIHJlYWRVaW50OChyZWFkZXIpOyAvLyBhbHdheXMgMjhcblx0XHRcdC8qY29uc3Qgb3B0aW9uYWxCbG9ja3MgPSovIHJlYWRVaW50MTYocmVhZGVyKTtcblx0XHRcdGNvbnN0IGljb25Mb2NhdGlvbiA9IHJlYWRSZWN0KHJlYWRlcik7XG5cdFx0XHRjb25zdCBwb3B1cExvY2F0aW9uID0gcmVhZFJlY3QocmVhZGVyKTtcblx0XHRcdGNvbnN0IGNvbG9yID0gcmVhZENvbG9yKHJlYWRlcik7XG5cdFx0XHRjb25zdCBhdXRob3IgPSByZWFkUGFzY2FsU3RyaW5nKHJlYWRlciwgMik7XG5cdFx0XHRjb25zdCBuYW1lID0gcmVhZFBhc2NhbFN0cmluZyhyZWFkZXIsIDIpO1xuXHRcdFx0Y29uc3QgZGF0ZSA9IHJlYWRQYXNjYWxTdHJpbmcocmVhZGVyLCAyKTtcblx0XHRcdC8qY29uc3QgY29udGVudExlbmd0aCA9Ki8gcmVhZFVpbnQzMihyZWFkZXIpO1xuXHRcdFx0Lypjb25zdCBkYXRhVHlwZSA9Ki8gcmVhZFNpZ25hdHVyZShyZWFkZXIpO1xuXHRcdFx0Y29uc3QgZGF0YUxlbmd0aCA9IHJlYWRVaW50MzIocmVhZGVyKTtcblx0XHRcdGxldCBkYXRhOiBzdHJpbmcgfCBVaW50OEFycmF5O1xuXG5cdFx0XHRpZiAodHlwZSA9PT0gJ3R4dEEnKSB7XG5cdFx0XHRcdGlmIChkYXRhTGVuZ3RoID49IDIgJiYgcmVhZFVpbnQxNihyZWFkZXIpID09PSAweGZlZmYpIHtcblx0XHRcdFx0XHRkYXRhID0gcmVhZFVuaWNvZGVTdHJpbmdXaXRoTGVuZ3RoKHJlYWRlciwgKGRhdGFMZW5ndGggLSAyKSAvIDIpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJlYWRlci5vZmZzZXQgLT0gMjtcblx0XHRcdFx0XHRkYXRhID0gcmVhZEFzY2lpU3RyaW5nKHJlYWRlciwgZGF0YUxlbmd0aCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkYXRhID0gZGF0YS5yZXBsYWNlKC9cXHIvZywgJ1xcbicpO1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlID09PSAnc25kQScpIHtcblx0XHRcdFx0ZGF0YSA9IHJlYWRCeXRlcyhyZWFkZXIsIGRhdGFMZW5ndGgpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGFubm90YXRpb24gdHlwZScpO1xuXHRcdFx0fVxuXG5cdFx0XHRhbm5vdGF0aW9ucy5wdXNoKHtcblx0XHRcdFx0dHlwZTogdHlwZSA9PT0gJ3R4dEEnID8gJ3RleHQnIDogJ3NvdW5kJywgb3BlbiwgaWNvbkxvY2F0aW9uLCBwb3B1cExvY2F0aW9uLCBjb2xvciwgYXV0aG9yLCBuYW1lLCBkYXRlLCBkYXRhLFxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0KHRhcmdldCBhcyBQc2QpLmFubm90YXRpb25zID0gYW5ub3RhdGlvbnM7XG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgYW5ub3RhdGlvbnMgPSAodGFyZ2V0IGFzIFBzZCkuYW5ub3RhdGlvbnMhO1xuXG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCAyKTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIDEpO1xuXHRcdHdyaXRlVWludDMyKHdyaXRlciwgYW5ub3RhdGlvbnMubGVuZ3RoKTtcblxuXHRcdGZvciAoY29uc3QgYW5ub3RhdGlvbiBvZiBhbm5vdGF0aW9ucykge1xuXHRcdFx0Y29uc3Qgc291bmQgPSBhbm5vdGF0aW9uLnR5cGUgPT09ICdzb3VuZCc7XG5cblx0XHRcdGlmIChzb3VuZCAmJiAhKGFubm90YXRpb24uZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB0aHJvdyBuZXcgRXJyb3IoJ1NvdW5kIGFubm90YXRpb24gZGF0YSBzaG91bGQgYmUgVWludDhBcnJheScpO1xuXHRcdFx0aWYgKCFzb3VuZCAmJiB0eXBlb2YgYW5ub3RhdGlvbi5kYXRhICE9PSAnc3RyaW5nJykgdGhyb3cgbmV3IEVycm9yKCdUZXh0IGFubm90YXRpb24gZGF0YSBzaG91bGQgYmUgc3RyaW5nJyk7XG5cblx0XHRcdGNvbnN0IGxlbmd0aE9mZnNldCA9IHdyaXRlci5vZmZzZXQ7XG5cdFx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIDApOyAvLyBsZW5ndGhcblx0XHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgc291bmQgPyAnc25kQScgOiAndHh0QScpO1xuXHRcdFx0d3JpdGVVaW50OCh3cml0ZXIsIGFubm90YXRpb24ub3BlbiA/IDEgOiAwKTtcblx0XHRcdHdyaXRlVWludDgod3JpdGVyLCAyOCk7XG5cdFx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIDEpO1xuXHRcdFx0d3JpdGVSZWN0KHdyaXRlciwgYW5ub3RhdGlvbi5pY29uTG9jYXRpb24pO1xuXHRcdFx0d3JpdGVSZWN0KHdyaXRlciwgYW5ub3RhdGlvbi5wb3B1cExvY2F0aW9uKTtcblx0XHRcdHdyaXRlQ29sb3Iod3JpdGVyLCBhbm5vdGF0aW9uLmNvbG9yKTtcblx0XHRcdHdyaXRlUGFzY2FsU3RyaW5nKHdyaXRlciwgYW5ub3RhdGlvbi5hdXRob3IgfHwgJycsIDIpO1xuXHRcdFx0d3JpdGVQYXNjYWxTdHJpbmcod3JpdGVyLCBhbm5vdGF0aW9uLm5hbWUgfHwgJycsIDIpO1xuXHRcdFx0d3JpdGVQYXNjYWxTdHJpbmcod3JpdGVyLCBhbm5vdGF0aW9uLmRhdGUgfHwgJycsIDIpO1xuXHRcdFx0Y29uc3QgY29udGVudE9mZnNldCA9IHdyaXRlci5vZmZzZXQ7XG5cdFx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIDApOyAvLyBjb250ZW50IGxlbmd0aFxuXHRcdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCBzb3VuZCA/ICdzbmRNJyA6ICd0eHRDJyk7XG5cdFx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIDApOyAvLyBkYXRhIGxlbmd0aFxuXHRcdFx0Y29uc3QgZGF0YU9mZnNldCA9IHdyaXRlci5vZmZzZXQ7XG5cblx0XHRcdGlmIChzb3VuZCkge1xuXHRcdFx0XHR3cml0ZUJ5dGVzKHdyaXRlciwgYW5ub3RhdGlvbi5kYXRhIGFzIFVpbnQ4QXJyYXkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0d3JpdGVVaW50MTYod3JpdGVyLCAweGZlZmYpOyAvLyB1bmljb2RlIHN0cmluZyBpbmRpY2F0b3Jcblx0XHRcdFx0Y29uc3QgdGV4dCA9IChhbm5vdGF0aW9uLmRhdGEgYXMgc3RyaW5nKS5yZXBsYWNlKC9cXG4vZywgJ1xccicpO1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHdyaXRlVWludDE2KHdyaXRlciwgdGV4dC5jaGFyQ29kZUF0KGkpKTtcblx0XHRcdH1cblxuXHRcdFx0d3JpdGVyLnZpZXcuc2V0VWludDMyKGxlbmd0aE9mZnNldCwgd3JpdGVyLm9mZnNldCAtIGxlbmd0aE9mZnNldCwgZmFsc2UpO1xuXHRcdFx0d3JpdGVyLnZpZXcuc2V0VWludDMyKGNvbnRlbnRPZmZzZXQsIHdyaXRlci5vZmZzZXQgLSBjb250ZW50T2Zmc2V0LCBmYWxzZSk7XG5cdFx0XHR3cml0ZXIudmlldy5zZXRVaW50MzIoZGF0YU9mZnNldCAtIDQsIHdyaXRlci5vZmZzZXQgLSBkYXRhT2Zmc2V0LCBmYWxzZSk7XG5cdFx0fVxuXHR9XG4pO1xuXG5pbnRlcmZhY2UgRmlsZU9wZW5EZXNjcmlwdG9yIHtcblx0Y29tcEluZm86IHsgY29tcElEOiBudW1iZXI7IG9yaWdpbmFsQ29tcElEOiBudW1iZXI7IH07XG59XG5cbmFkZEhhbmRsZXIoXG5cdCdsbmsyJyxcblx0KHRhcmdldDogYW55KSA9PiAhISh0YXJnZXQgYXMgUHNkKS5saW5rZWRGaWxlcyAmJiAodGFyZ2V0IGFzIFBzZCkubGlua2VkRmlsZXMhLmxlbmd0aCA+IDAsXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCwgXywgb3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IHBzZCA9IHRhcmdldCBhcyBQc2Q7XG5cdFx0cHNkLmxpbmtlZEZpbGVzID0gW107XG5cblx0XHR3aGlsZSAobGVmdCgpID4gOCkge1xuXHRcdFx0bGV0IHNpemUgPSByZWFkTGVuZ3RoNjQocmVhZGVyKTsgLy8gc2l6ZVxuXHRcdFx0Y29uc3Qgc3RhcnRPZmZzZXQgPSByZWFkZXIub2Zmc2V0O1xuXHRcdFx0Y29uc3QgdHlwZSA9IHJlYWRTaWduYXR1cmUocmVhZGVyKSBhcyAnbGlGRCcgfCAnbGlGRScgfCAnbGlGQSc7XG5cdFx0XHRjb25zdCB2ZXJzaW9uID0gcmVhZEludDMyKHJlYWRlcik7XG5cdFx0XHRjb25zdCBpZCA9IHJlYWRQYXNjYWxTdHJpbmcocmVhZGVyLCAxKTtcblx0XHRcdGNvbnN0IG5hbWUgPSByZWFkVW5pY29kZVN0cmluZyhyZWFkZXIpO1xuXHRcdFx0Y29uc3QgZmlsZVR5cGUgPSByZWFkU2lnbmF0dXJlKHJlYWRlcikudHJpbSgpOyAvLyAnICAgICcgaWYgZW1wdHlcblx0XHRcdGNvbnN0IGZpbGVDcmVhdG9yID0gcmVhZFNpZ25hdHVyZShyZWFkZXIpLnRyaW0oKTsgLy8gJyAgICAnIG9yICdcXDBcXDBcXDBcXDAnIGlmIGVtcHR5XG5cdFx0XHRjb25zdCBkYXRhU2l6ZSA9IHJlYWRMZW5ndGg2NChyZWFkZXIpO1xuXHRcdFx0Y29uc3QgaGFzRmlsZU9wZW5EZXNjcmlwdG9yID0gcmVhZFVpbnQ4KHJlYWRlcik7XG5cdFx0XHRjb25zdCBmaWxlT3BlbkRlc2NyaXB0b3IgPSBoYXNGaWxlT3BlbkRlc2NyaXB0b3IgPyByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyKSBhcyBGaWxlT3BlbkRlc2NyaXB0b3IgOiB1bmRlZmluZWQ7XG5cdFx0XHRjb25zdCBsaW5rZWRGaWxlRGVzY3JpcHRvciA9IHR5cGUgPT09ICdsaUZFJyA/IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpIDogdW5kZWZpbmVkO1xuXHRcdFx0Y29uc3QgZmlsZTogTGlua2VkRmlsZSA9IHsgaWQsIG5hbWUsIGRhdGE6IHVuZGVmaW5lZCB9O1xuXG5cdFx0XHRpZiAoZmlsZVR5cGUpIGZpbGUudHlwZSA9IGZpbGVUeXBlO1xuXHRcdFx0aWYgKGZpbGVDcmVhdG9yKSBmaWxlLmNyZWF0b3IgPSBmaWxlQ3JlYXRvcjtcblx0XHRcdGlmIChmaWxlT3BlbkRlc2NyaXB0b3IpIGZpbGUuZGVzY3JpcHRvciA9IGZpbGVPcGVuRGVzY3JpcHRvcjtcblxuXHRcdFx0aWYgKHR5cGUgPT09ICdsaUZFJyAmJiB2ZXJzaW9uID4gMykge1xuXHRcdFx0XHRjb25zdCB5ZWFyID0gcmVhZEludDMyKHJlYWRlcik7XG5cdFx0XHRcdGNvbnN0IG1vbnRoID0gcmVhZFVpbnQ4KHJlYWRlcik7XG5cdFx0XHRcdGNvbnN0IGRheSA9IHJlYWRVaW50OChyZWFkZXIpO1xuXHRcdFx0XHRjb25zdCBob3VyID0gcmVhZFVpbnQ4KHJlYWRlcik7XG5cdFx0XHRcdGNvbnN0IG1pbnV0ZSA9IHJlYWRVaW50OChyZWFkZXIpO1xuXHRcdFx0XHRjb25zdCBzZWNvbmRzID0gcmVhZEZsb2F0NjQocmVhZGVyKTtcblx0XHRcdFx0Y29uc3Qgd2hvbGVTZWNvbmRzID0gTWF0aC5mbG9vcihzZWNvbmRzKTtcblx0XHRcdFx0Y29uc3QgbXMgPSAoc2Vjb25kcyAtIHdob2xlU2Vjb25kcykgKiAxMDAwO1xuXHRcdFx0XHRmaWxlLnRpbWUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHdob2xlU2Vjb25kcywgbXMpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBmaWxlU2l6ZSA9IHR5cGUgPT09ICdsaUZFJyA/IHJlYWRMZW5ndGg2NChyZWFkZXIpIDogMDtcblx0XHRcdGlmICh0eXBlID09PSAnbGlGQScpIHNraXBCeXRlcyhyZWFkZXIsIDgpO1xuXHRcdFx0aWYgKHR5cGUgPT09ICdsaUZEJykgZmlsZS5kYXRhID0gcmVhZEJ5dGVzKHJlYWRlciwgZGF0YVNpemUpO1xuXHRcdFx0aWYgKHZlcnNpb24gPj0gNSkgZmlsZS5jaGlsZERvY3VtZW50SUQgPSByZWFkVW5pY29kZVN0cmluZyhyZWFkZXIpO1xuXHRcdFx0aWYgKHZlcnNpb24gPj0gNikgZmlsZS5hc3NldE1vZFRpbWUgPSByZWFkRmxvYXQ2NChyZWFkZXIpO1xuXHRcdFx0aWYgKHZlcnNpb24gPj0gNykgZmlsZS5hc3NldExvY2tlZFN0YXRlID0gcmVhZFVpbnQ4KHJlYWRlcik7XG5cdFx0XHRpZiAodHlwZSA9PT0gJ2xpRkUnKSBmaWxlLmRhdGEgPSByZWFkQnl0ZXMocmVhZGVyLCBmaWxlU2l6ZSk7XG5cblx0XHRcdGlmIChvcHRpb25zLnNraXBMaW5rZWRGaWxlc0RhdGEpIGZpbGUuZGF0YSA9IHVuZGVmaW5lZDtcblxuXHRcdFx0cHNkLmxpbmtlZEZpbGVzLnB1c2goZmlsZSk7XG5cdFx0XHRsaW5rZWRGaWxlRGVzY3JpcHRvcjtcblxuXHRcdFx0d2hpbGUgKHNpemUgJSA0KSBzaXplKys7XG5cdFx0XHRyZWFkZXIub2Zmc2V0ID0gc3RhcnRPZmZzZXQgKyBzaXplO1xuXHRcdH1cblxuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7IC8vID9cblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgcHNkID0gdGFyZ2V0IGFzIFBzZDtcblxuXHRcdGZvciAoY29uc3QgZmlsZSBvZiBwc2QubGlua2VkRmlsZXMhKSB7XG5cdFx0XHRsZXQgdmVyc2lvbiA9IDI7XG5cblx0XHRcdGlmIChmaWxlLmFzc2V0TG9ja2VkU3RhdGUgIT0gbnVsbCkgdmVyc2lvbiA9IDc7XG5cdFx0XHRlbHNlIGlmIChmaWxlLmFzc2V0TW9kVGltZSAhPSBudWxsKSB2ZXJzaW9uID0gNjtcblx0XHRcdGVsc2UgaWYgKGZpbGUuY2hpbGREb2N1bWVudElEICE9IG51bGwpIHZlcnNpb24gPSA1O1xuXHRcdFx0Ly8gVE9ETzogZWxzZSBpZiAoZmlsZS50aW1lICE9IG51bGwpIHZlcnNpb24gPSAzOyAob25seSBmb3IgbGlGRSlcblxuXHRcdFx0d3JpdGVVaW50MzIod3JpdGVyLCAwKTtcblx0XHRcdHdyaXRlVWludDMyKHdyaXRlciwgMCk7IC8vIHNpemVcblx0XHRcdGNvbnN0IHNpemVPZmZzZXQgPSB3cml0ZXIub2Zmc2V0O1xuXHRcdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCBmaWxlLmRhdGEgPyAnbGlGRCcgOiAnbGlGQScpO1xuXHRcdFx0d3JpdGVJbnQzMih3cml0ZXIsIHZlcnNpb24pO1xuXHRcdFx0d3JpdGVQYXNjYWxTdHJpbmcod3JpdGVyLCBmaWxlLmlkIHx8ICcnLCAxKTtcblx0XHRcdHdyaXRlVW5pY29kZVN0cmluZ1dpdGhQYWRkaW5nKHdyaXRlciwgZmlsZS5uYW1lIHx8ICcnKTtcblx0XHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgZmlsZS50eXBlID8gYCR7ZmlsZS50eXBlfSAgICBgLnN1YnN0cigwLCA0KSA6ICcgICAgJyk7XG5cdFx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsIGZpbGUuY3JlYXRvciA/IGAke2ZpbGUuY3JlYXRvcn0gICAgYC5zdWJzdHIoMCwgNCkgOiAnXFwwXFwwXFwwXFwwJyk7XG5cdFx0XHR3cml0ZUxlbmd0aDY0KHdyaXRlciwgZmlsZS5kYXRhID8gZmlsZS5kYXRhLmJ5dGVMZW5ndGggOiAwKTtcblxuXHRcdFx0aWYgKGZpbGUuZGVzY3JpcHRvciAmJiBmaWxlLmRlc2NyaXB0b3IuY29tcEluZm8pIHtcblx0XHRcdFx0Y29uc3QgZGVzYzogRmlsZU9wZW5EZXNjcmlwdG9yID0ge1xuXHRcdFx0XHRcdGNvbXBJbmZvOiBmaWxlLmRlc2NyaXB0b3IuY29tcEluZm8sXG5cdFx0XHRcdH07XG5cblx0XHRcdFx0d3JpdGVVaW50OCh3cml0ZXIsIDEpO1xuXHRcdFx0XHR3cml0ZVZlcnNpb25BbmREZXNjcmlwdG9yKHdyaXRlciwgJycsICdudWxsJywgZGVzYyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgMCk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChmaWxlLmRhdGEpIHdyaXRlQnl0ZXMod3JpdGVyLCBmaWxlLmRhdGEpO1xuXHRcdFx0ZWxzZSB3cml0ZUxlbmd0aDY0KHdyaXRlciwgMCk7XG5cdFx0XHRpZiAodmVyc2lvbiA+PSA1KSB3cml0ZVVuaWNvZGVTdHJpbmdXaXRoUGFkZGluZyh3cml0ZXIsIGZpbGUuY2hpbGREb2N1bWVudElEIHx8ICcnKTtcblx0XHRcdGlmICh2ZXJzaW9uID49IDYpIHdyaXRlRmxvYXQ2NCh3cml0ZXIsIGZpbGUuYXNzZXRNb2RUaW1lIHx8IDApO1xuXHRcdFx0aWYgKHZlcnNpb24gPj0gNykgd3JpdGVVaW50OCh3cml0ZXIsIGZpbGUuYXNzZXRMb2NrZWRTdGF0ZSB8fCAwKTtcblxuXHRcdFx0bGV0IHNpemUgPSB3cml0ZXIub2Zmc2V0IC0gc2l6ZU9mZnNldDtcblx0XHRcdHdyaXRlci52aWV3LnNldFVpbnQzMihzaXplT2Zmc2V0IC0gNCwgc2l6ZSwgZmFsc2UpOyAvLyB3cml0ZSBzaXplXG5cblx0XHRcdHdoaWxlIChzaXplICUgNCkge1xuXHRcdFx0XHRzaXplKys7XG5cdFx0XHRcdHdyaXRlVWludDgod3JpdGVyLCAwKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG4pO1xuYWRkSGFuZGxlckFsaWFzKCdsbmtEJywgJ2xuazInKTtcbmFkZEhhbmRsZXJBbGlhcygnbG5rMycsICdsbmsyJyk7XG5cbi8vIHRoaXMgc2VlbXMgdG8ganVzdCBiZSB6ZXJvIHNpemUgYmxvY2ssIGlnbm9yZSBpdFxuYWRkSGFuZGxlcihcblx0J2xua0UnLFxuXHR0YXJnZXQgPT4gKHRhcmdldCBhcyBhbnkpLl9sbmtFICE9PSB1bmRlZmluZWQsXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCwgX3BzZHMsIG9wdGlvbnMpID0+IHtcblx0XHRpZiAob3B0aW9ucy5sb2dNaXNzaW5nRmVhdHVyZXMgJiYgbGVmdCgpKSB7XG5cdFx0XHRjb25zb2xlLmxvZyhgTm9uLWVtcHR5IGxua0UgbGF5ZXIgaW5mbyAoJHtsZWZ0KCl9IGJ5dGVzKWApO1xuXHRcdH1cblxuXHRcdGlmIChNT0NLX0hBTkRMRVJTKSB7XG5cdFx0XHQodGFyZ2V0IGFzIGFueSkuX2xua0UgPSByZWFkQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHRcdH1cblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiBNT0NLX0hBTkRMRVJTICYmIHdyaXRlQnl0ZXMod3JpdGVyLCAodGFyZ2V0IGFzIGFueSkuX2xua0UpLFxuKTtcblxuaW50ZXJmYWNlIEV4dGVuc2lvbkRlc2Mge1xuXHRnZW5lcmF0b3JTZXR0aW5nczoge1xuXHRcdGdlbmVyYXRvcl80NV9hc3NldHM6IHsganNvbjogc3RyaW5nOyB9O1xuXHRcdGxheWVyVGltZTogbnVtYmVyO1xuXHR9O1xufVxuXG5hZGRIYW5kbGVyKFxuXHQncHRocycsXG5cdGhhc0tleSgncGF0aExpc3QnKSxcblx0KHJlYWRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgZGVzY3JpcHRvciA9IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpO1xuXG5cdFx0dGFyZ2V0LnBhdGhMaXN0ID0gW107IC8vIFRPRE86IHJlYWQgcGF0aHMgKGZpbmQgZXhhbXBsZSB3aXRoIG5vbi1lbXB0eSBsaXN0KVxuXG5cdFx0ZGVzY3JpcHRvcjtcblx0XHQvLyBjb25zb2xlLmxvZygncHRocycsIGRlc2NyaXB0b3IpOyAvLyBUT0RPOiByZW1vdmUgdGhpc1xuXHR9LFxuXHQod3JpdGVyLCBfdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgZGVzY3JpcHRvciA9IHtcblx0XHRcdHBhdGhMaXN0OiBbXSwgLy8gVE9ETzogd3JpdGUgcGF0aHNcblx0XHR9O1xuXG5cdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAncGF0aHNEYXRhQ2xhc3MnLCBkZXNjcmlwdG9yKTtcblx0fSxcbik7XG5cbmFkZEhhbmRsZXIoXG5cdCdseXZyJyxcblx0aGFzS2V5KCd2ZXJzaW9uJyksXG5cdChyZWFkZXIsIHRhcmdldCkgPT4gdGFyZ2V0LnZlcnNpb24gPSByZWFkVWludDMyKHJlYWRlciksXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4gd3JpdGVVaW50MzIod3JpdGVyLCB0YXJnZXQudmVyc2lvbiEpLFxuKTtcblxuZnVuY3Rpb24gYWRqdXN0bWVudFR5cGUodHlwZTogc3RyaW5nKSB7XG5cdHJldHVybiAodGFyZ2V0OiBMYXllckFkZGl0aW9uYWxJbmZvKSA9PiAhIXRhcmdldC5hZGp1c3RtZW50ICYmIHRhcmdldC5hZGp1c3RtZW50LnR5cGUgPT09IHR5cGU7XG59XG5cbmFkZEhhbmRsZXIoXG5cdCdicml0Jyxcblx0YWRqdXN0bWVudFR5cGUoJ2JyaWdodG5lc3MvY29udHJhc3QnKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0aWYgKCF0YXJnZXQuYWRqdXN0bWVudCkgeyAvLyBpZ25vcmUgaWYgZ290IG9uZSBmcm9tIENnRWQgYmxvY2tcblx0XHRcdHRhcmdldC5hZGp1c3RtZW50ID0ge1xuXHRcdFx0XHR0eXBlOiAnYnJpZ2h0bmVzcy9jb250cmFzdCcsXG5cdFx0XHRcdGJyaWdodG5lc3M6IHJlYWRJbnQxNihyZWFkZXIpLFxuXHRcdFx0XHRjb250cmFzdDogcmVhZEludDE2KHJlYWRlciksXG5cdFx0XHRcdG1lYW5WYWx1ZTogcmVhZEludDE2KHJlYWRlciksXG5cdFx0XHRcdGxhYkNvbG9yT25seTogISFyZWFkVWludDgocmVhZGVyKSxcblx0XHRcdFx0dXNlTGVnYWN5OiB0cnVlLFxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBpbmZvID0gdGFyZ2V0LmFkanVzdG1lbnQgYXMgQnJpZ2h0bmVzc0FkanVzdG1lbnQ7XG5cdFx0d3JpdGVJbnQxNih3cml0ZXIsIGluZm8uYnJpZ2h0bmVzcyB8fCAwKTtcblx0XHR3cml0ZUludDE2KHdyaXRlciwgaW5mby5jb250cmFzdCB8fCAwKTtcblx0XHR3cml0ZUludDE2KHdyaXRlciwgaW5mby5tZWFuVmFsdWUgPz8gMTI3KTtcblx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgaW5mby5sYWJDb2xvck9ubHkgPyAxIDogMCk7XG5cdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDEpO1xuXHR9LFxuKTtcblxuZnVuY3Rpb24gcmVhZExldmVsc0NoYW5uZWwocmVhZGVyOiBQc2RSZWFkZXIpOiBMZXZlbHNBZGp1c3RtZW50Q2hhbm5lbCB7XG5cdGNvbnN0IHNoYWRvd0lucHV0ID0gcmVhZEludDE2KHJlYWRlcik7XG5cdGNvbnN0IGhpZ2hsaWdodElucHV0ID0gcmVhZEludDE2KHJlYWRlcik7XG5cdGNvbnN0IHNoYWRvd091dHB1dCA9IHJlYWRJbnQxNihyZWFkZXIpO1xuXHRjb25zdCBoaWdobGlnaHRPdXRwdXQgPSByZWFkSW50MTYocmVhZGVyKTtcblx0Y29uc3QgbWlkdG9uZUlucHV0ID0gcmVhZEludDE2KHJlYWRlcikgLyAxMDA7XG5cdHJldHVybiB7IHNoYWRvd0lucHV0LCBoaWdobGlnaHRJbnB1dCwgc2hhZG93T3V0cHV0LCBoaWdobGlnaHRPdXRwdXQsIG1pZHRvbmVJbnB1dCB9O1xufVxuXG5mdW5jdGlvbiB3cml0ZUxldmVsc0NoYW5uZWwod3JpdGVyOiBQc2RXcml0ZXIsIGNoYW5uZWw6IExldmVsc0FkanVzdG1lbnRDaGFubmVsKSB7XG5cdHdyaXRlSW50MTYod3JpdGVyLCBjaGFubmVsLnNoYWRvd0lucHV0KTtcblx0d3JpdGVJbnQxNih3cml0ZXIsIGNoYW5uZWwuaGlnaGxpZ2h0SW5wdXQpO1xuXHR3cml0ZUludDE2KHdyaXRlciwgY2hhbm5lbC5zaGFkb3dPdXRwdXQpO1xuXHR3cml0ZUludDE2KHdyaXRlciwgY2hhbm5lbC5oaWdobGlnaHRPdXRwdXQpO1xuXHR3cml0ZUludDE2KHdyaXRlciwgTWF0aC5yb3VuZChjaGFubmVsLm1pZHRvbmVJbnB1dCAqIDEwMCkpO1xufVxuXG5hZGRIYW5kbGVyKFxuXHQnbGV2bCcsXG5cdGFkanVzdG1lbnRUeXBlKCdsZXZlbHMnKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0aWYgKHJlYWRVaW50MTYocmVhZGVyKSAhPT0gMikgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGxldmwgdmVyc2lvbicpO1xuXG5cdFx0dGFyZ2V0LmFkanVzdG1lbnQgPSB7XG5cdFx0XHQuLi50YXJnZXQuYWRqdXN0bWVudCBhcyBQcmVzZXRJbmZvLFxuXHRcdFx0dHlwZTogJ2xldmVscycsXG5cdFx0XHRyZ2I6IHJlYWRMZXZlbHNDaGFubmVsKHJlYWRlciksXG5cdFx0XHRyZWQ6IHJlYWRMZXZlbHNDaGFubmVsKHJlYWRlciksXG5cdFx0XHRncmVlbjogcmVhZExldmVsc0NoYW5uZWwocmVhZGVyKSxcblx0XHRcdGJsdWU6IHJlYWRMZXZlbHNDaGFubmVsKHJlYWRlciksXG5cdFx0fTtcblxuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGluZm8gPSB0YXJnZXQuYWRqdXN0bWVudCBhcyBMZXZlbHNBZGp1c3RtZW50O1xuXHRcdGNvbnN0IGRlZmF1bHRDaGFubmVsID0ge1xuXHRcdFx0c2hhZG93SW5wdXQ6IDAsXG5cdFx0XHRoaWdobGlnaHRJbnB1dDogMjU1LFxuXHRcdFx0c2hhZG93T3V0cHV0OiAwLFxuXHRcdFx0aGlnaGxpZ2h0T3V0cHV0OiAyNTUsXG5cdFx0XHRtaWR0b25lSW5wdXQ6IDEsXG5cdFx0fTtcblxuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgMik7IC8vIHZlcnNpb25cblx0XHR3cml0ZUxldmVsc0NoYW5uZWwod3JpdGVyLCBpbmZvLnJnYiB8fCBkZWZhdWx0Q2hhbm5lbCk7XG5cdFx0d3JpdGVMZXZlbHNDaGFubmVsKHdyaXRlciwgaW5mby5yZWQgfHwgZGVmYXVsdENoYW5uZWwpO1xuXHRcdHdyaXRlTGV2ZWxzQ2hhbm5lbCh3cml0ZXIsIGluZm8uYmx1ZSB8fCBkZWZhdWx0Q2hhbm5lbCk7XG5cdFx0d3JpdGVMZXZlbHNDaGFubmVsKHdyaXRlciwgaW5mby5ncmVlbiB8fCBkZWZhdWx0Q2hhbm5lbCk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCA1OTsgaSsrKSB3cml0ZUxldmVsc0NoYW5uZWwod3JpdGVyLCBkZWZhdWx0Q2hhbm5lbCk7XG5cdH0sXG4pO1xuXG5mdW5jdGlvbiByZWFkQ3VydmVDaGFubmVsKHJlYWRlcjogUHNkUmVhZGVyKSB7XG5cdGNvbnN0IG5vZGVzID0gcmVhZFVpbnQxNihyZWFkZXIpO1xuXHRjb25zdCBjaGFubmVsOiBDdXJ2ZXNBZGp1c3RtZW50Q2hhbm5lbCA9IFtdO1xuXG5cdGZvciAobGV0IGogPSAwOyBqIDwgbm9kZXM7IGorKykge1xuXHRcdGNvbnN0IG91dHB1dCA9IHJlYWRJbnQxNihyZWFkZXIpO1xuXHRcdGNvbnN0IGlucHV0ID0gcmVhZEludDE2KHJlYWRlcik7XG5cdFx0Y2hhbm5lbC5wdXNoKHsgaW5wdXQsIG91dHB1dCB9KTtcblx0fVxuXG5cdHJldHVybiBjaGFubmVsO1xufVxuXG5mdW5jdGlvbiB3cml0ZUN1cnZlQ2hhbm5lbCh3cml0ZXI6IFBzZFdyaXRlciwgY2hhbm5lbDogQ3VydmVzQWRqdXN0bWVudENoYW5uZWwpIHtcblx0d3JpdGVVaW50MTYod3JpdGVyLCBjaGFubmVsLmxlbmd0aCk7XG5cblx0Zm9yIChjb25zdCBuIG9mIGNoYW5uZWwpIHtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIG4ub3V0cHV0KTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIG4uaW5wdXQpO1xuXHR9XG59XG5cbmFkZEhhbmRsZXIoXG5cdCdjdXJ2Jyxcblx0YWRqdXN0bWVudFR5cGUoJ2N1cnZlcycpLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQpID0+IHtcblx0XHRyZWFkVWludDgocmVhZGVyKTtcblx0XHRpZiAocmVhZFVpbnQxNihyZWFkZXIpICE9PSAxKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY3VydiB2ZXJzaW9uJyk7XG5cdFx0cmVhZFVpbnQxNihyZWFkZXIpO1xuXHRcdGNvbnN0IGNoYW5uZWxzID0gcmVhZFVpbnQxNihyZWFkZXIpO1xuXHRcdGNvbnN0IGluZm86IEN1cnZlc0FkanVzdG1lbnQgPSB7IHR5cGU6ICdjdXJ2ZXMnIH07XG5cblx0XHRpZiAoY2hhbm5lbHMgJiAxKSBpbmZvLnJnYiA9IHJlYWRDdXJ2ZUNoYW5uZWwocmVhZGVyKTtcblx0XHRpZiAoY2hhbm5lbHMgJiAyKSBpbmZvLnJlZCA9IHJlYWRDdXJ2ZUNoYW5uZWwocmVhZGVyKTtcblx0XHRpZiAoY2hhbm5lbHMgJiA0KSBpbmZvLmdyZWVuID0gcmVhZEN1cnZlQ2hhbm5lbChyZWFkZXIpO1xuXHRcdGlmIChjaGFubmVscyAmIDgpIGluZm8uYmx1ZSA9IHJlYWRDdXJ2ZUNoYW5uZWwocmVhZGVyKTtcblxuXHRcdHRhcmdldC5hZGp1c3RtZW50ID0ge1xuXHRcdFx0Li4udGFyZ2V0LmFkanVzdG1lbnQgYXMgUHJlc2V0SW5mbyxcblx0XHRcdC4uLmluZm8sXG5cdFx0fTtcblxuXHRcdC8vIGlnbm9yaW5nLCBkdXBsaWNhdGUgaW5mb3JtYXRpb25cblx0XHQvLyBjaGVja1NpZ25hdHVyZShyZWFkZXIsICdDcnYgJyk7XG5cblx0XHQvLyBjb25zdCBjVmVyc2lvbiA9IHJlYWRVaW50MTYocmVhZGVyKTtcblx0XHQvLyByZWFkVWludDE2KHJlYWRlcik7XG5cdFx0Ly8gY29uc3QgY2hhbm5lbENvdW50ID0gcmVhZFVpbnQxNihyZWFkZXIpO1xuXG5cdFx0Ly8gZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFubmVsQ291bnQ7IGkrKykge1xuXHRcdC8vIFx0Y29uc3QgaW5kZXggPSByZWFkVWludDE2KHJlYWRlcik7XG5cdFx0Ly8gXHRjb25zdCBub2RlcyA9IHJlYWRVaW50MTYocmVhZGVyKTtcblxuXHRcdC8vIFx0Zm9yIChsZXQgaiA9IDA7IGogPCBub2RlczsgaisrKSB7XG5cdFx0Ly8gXHRcdGNvbnN0IG91dHB1dCA9IHJlYWRJbnQxNihyZWFkZXIpO1xuXHRcdC8vIFx0XHRjb25zdCBpbnB1dCA9IHJlYWRJbnQxNihyZWFkZXIpO1xuXHRcdC8vIFx0fVxuXHRcdC8vIH1cblxuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGluZm8gPSB0YXJnZXQuYWRqdXN0bWVudCBhcyBDdXJ2ZXNBZGp1c3RtZW50O1xuXHRcdGNvbnN0IHsgcmdiLCByZWQsIGdyZWVuLCBibHVlIH0gPSBpbmZvO1xuXHRcdGxldCBjaGFubmVscyA9IDA7XG5cdFx0bGV0IGNoYW5uZWxDb3VudCA9IDA7XG5cblx0XHRpZiAocmdiICYmIHJnYi5sZW5ndGgpIHsgY2hhbm5lbHMgfD0gMTsgY2hhbm5lbENvdW50Kys7IH1cblx0XHRpZiAocmVkICYmIHJlZC5sZW5ndGgpIHsgY2hhbm5lbHMgfD0gMjsgY2hhbm5lbENvdW50Kys7IH1cblx0XHRpZiAoZ3JlZW4gJiYgZ3JlZW4ubGVuZ3RoKSB7IGNoYW5uZWxzIHw9IDQ7IGNoYW5uZWxDb3VudCsrOyB9XG5cdFx0aWYgKGJsdWUgJiYgYmx1ZS5sZW5ndGgpIHsgY2hhbm5lbHMgfD0gODsgY2hhbm5lbENvdW50Kys7IH1cblxuXHRcdHdyaXRlVWludDgod3JpdGVyLCAwKTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIDEpOyAvLyB2ZXJzaW9uXG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCAwKTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIGNoYW5uZWxzKTtcblxuXHRcdGlmIChyZ2IgJiYgcmdiLmxlbmd0aCkgd3JpdGVDdXJ2ZUNoYW5uZWwod3JpdGVyLCByZ2IpO1xuXHRcdGlmIChyZWQgJiYgcmVkLmxlbmd0aCkgd3JpdGVDdXJ2ZUNoYW5uZWwod3JpdGVyLCByZWQpO1xuXHRcdGlmIChncmVlbiAmJiBncmVlbi5sZW5ndGgpIHdyaXRlQ3VydmVDaGFubmVsKHdyaXRlciwgZ3JlZW4pO1xuXHRcdGlmIChibHVlICYmIGJsdWUubGVuZ3RoKSB3cml0ZUN1cnZlQ2hhbm5lbCh3cml0ZXIsIGJsdWUpO1xuXG5cdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCAnQ3J2ICcpO1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgNCk7IC8vIHZlcnNpb25cblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIDApO1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgY2hhbm5lbENvdW50KTtcblxuXHRcdGlmIChyZ2IgJiYgcmdiLmxlbmd0aCkgeyB3cml0ZVVpbnQxNih3cml0ZXIsIDApOyB3cml0ZUN1cnZlQ2hhbm5lbCh3cml0ZXIsIHJnYik7IH1cblx0XHRpZiAocmVkICYmIHJlZC5sZW5ndGgpIHsgd3JpdGVVaW50MTYod3JpdGVyLCAxKTsgd3JpdGVDdXJ2ZUNoYW5uZWwod3JpdGVyLCByZWQpOyB9XG5cdFx0aWYgKGdyZWVuICYmIGdyZWVuLmxlbmd0aCkgeyB3cml0ZVVpbnQxNih3cml0ZXIsIDIpOyB3cml0ZUN1cnZlQ2hhbm5lbCh3cml0ZXIsIGdyZWVuKTsgfVxuXHRcdGlmIChibHVlICYmIGJsdWUubGVuZ3RoKSB7IHdyaXRlVWludDE2KHdyaXRlciwgMyk7IHdyaXRlQ3VydmVDaGFubmVsKHdyaXRlciwgYmx1ZSk7IH1cblxuXHRcdHdyaXRlWmVyb3Mod3JpdGVyLCAyKTtcblx0fSxcbik7XG5cbmFkZEhhbmRsZXIoXG5cdCdleHBBJyxcblx0YWRqdXN0bWVudFR5cGUoJ2V4cG9zdXJlJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdGlmIChyZWFkVWludDE2KHJlYWRlcikgIT09IDEpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBleHBBIHZlcnNpb24nKTtcblxuXHRcdHRhcmdldC5hZGp1c3RtZW50ID0ge1xuXHRcdFx0Li4udGFyZ2V0LmFkanVzdG1lbnQgYXMgUHJlc2V0SW5mbyxcblx0XHRcdHR5cGU6ICdleHBvc3VyZScsXG5cdFx0XHRleHBvc3VyZTogcmVhZEZsb2F0MzIocmVhZGVyKSxcblx0XHRcdG9mZnNldDogcmVhZEZsb2F0MzIocmVhZGVyKSxcblx0XHRcdGdhbW1hOiByZWFkRmxvYXQzMihyZWFkZXIpLFxuXHRcdH07XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBpbmZvID0gdGFyZ2V0LmFkanVzdG1lbnQgYXMgRXhwb3N1cmVBZGp1c3RtZW50O1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgMSk7IC8vIHZlcnNpb25cblx0XHR3cml0ZUZsb2F0MzIod3JpdGVyLCBpbmZvLmV4cG9zdXJlISk7XG5cdFx0d3JpdGVGbG9hdDMyKHdyaXRlciwgaW5mby5vZmZzZXQhKTtcblx0XHR3cml0ZUZsb2F0MzIod3JpdGVyLCBpbmZvLmdhbW1hISk7XG5cdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDIpO1xuXHR9LFxuKTtcblxuaW50ZXJmYWNlIFZpYnJhbmNlRGVzY3JpcHRvciB7XG5cdHZpYnJhbmNlPzogbnVtYmVyO1xuXHRTdHJ0PzogbnVtYmVyO1xufVxuXG5hZGRIYW5kbGVyKFxuXHQndmliQScsXG5cdGFkanVzdG1lbnRUeXBlKCd2aWJyYW5jZScpLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQpID0+IHtcblx0XHRjb25zdCBkZXNjOiBWaWJyYW5jZURlc2NyaXB0b3IgPSByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyKTtcblx0XHR0YXJnZXQuYWRqdXN0bWVudCA9IHsgdHlwZTogJ3ZpYnJhbmNlJyB9O1xuXHRcdGlmIChkZXNjLnZpYnJhbmNlICE9PSB1bmRlZmluZWQpIHRhcmdldC5hZGp1c3RtZW50LnZpYnJhbmNlID0gZGVzYy52aWJyYW5jZTtcblx0XHRpZiAoZGVzYy5TdHJ0ICE9PSB1bmRlZmluZWQpIHRhcmdldC5hZGp1c3RtZW50LnNhdHVyYXRpb24gPSBkZXNjLlN0cnQ7XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBpbmZvID0gdGFyZ2V0LmFkanVzdG1lbnQgYXMgVmlicmFuY2VBZGp1c3RtZW50O1xuXHRcdGNvbnN0IGRlc2M6IFZpYnJhbmNlRGVzY3JpcHRvciA9IHt9O1xuXHRcdGlmIChpbmZvLnZpYnJhbmNlICE9PSB1bmRlZmluZWQpIGRlc2MudmlicmFuY2UgPSBpbmZvLnZpYnJhbmNlO1xuXHRcdGlmIChpbmZvLnNhdHVyYXRpb24gIT09IHVuZGVmaW5lZCkgZGVzYy5TdHJ0ID0gaW5mby5zYXR1cmF0aW9uO1xuXG5cdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAnbnVsbCcsIGRlc2MpO1xuXHR9LFxuKTtcblxuZnVuY3Rpb24gcmVhZEh1ZUNoYW5uZWwocmVhZGVyOiBQc2RSZWFkZXIpOiBIdWVTYXR1cmF0aW9uQWRqdXN0bWVudENoYW5uZWwge1xuXHRyZXR1cm4ge1xuXHRcdGE6IHJlYWRJbnQxNihyZWFkZXIpLFxuXHRcdGI6IHJlYWRJbnQxNihyZWFkZXIpLFxuXHRcdGM6IHJlYWRJbnQxNihyZWFkZXIpLFxuXHRcdGQ6IHJlYWRJbnQxNihyZWFkZXIpLFxuXHRcdGh1ZTogcmVhZEludDE2KHJlYWRlciksXG5cdFx0c2F0dXJhdGlvbjogcmVhZEludDE2KHJlYWRlciksXG5cdFx0bGlnaHRuZXNzOiByZWFkSW50MTYocmVhZGVyKSxcblx0fTtcbn1cblxuZnVuY3Rpb24gd3JpdGVIdWVDaGFubmVsKHdyaXRlcjogUHNkV3JpdGVyLCBjaGFubmVsOiBIdWVTYXR1cmF0aW9uQWRqdXN0bWVudENoYW5uZWwgfCB1bmRlZmluZWQpIHtcblx0Y29uc3QgYyA9IGNoYW5uZWwgfHwge30gYXMgUGFydGlhbDxIdWVTYXR1cmF0aW9uQWRqdXN0bWVudENoYW5uZWw+O1xuXHR3cml0ZUludDE2KHdyaXRlciwgYy5hIHx8IDApO1xuXHR3cml0ZUludDE2KHdyaXRlciwgYy5iIHx8IDApO1xuXHR3cml0ZUludDE2KHdyaXRlciwgYy5jIHx8IDApO1xuXHR3cml0ZUludDE2KHdyaXRlciwgYy5kIHx8IDApO1xuXHR3cml0ZUludDE2KHdyaXRlciwgYy5odWUgfHwgMCk7XG5cdHdyaXRlSW50MTYod3JpdGVyLCBjLnNhdHVyYXRpb24gfHwgMCk7XG5cdHdyaXRlSW50MTYod3JpdGVyLCBjLmxpZ2h0bmVzcyB8fCAwKTtcbn1cblxuYWRkSGFuZGxlcihcblx0J2h1ZTInLFxuXHRhZGp1c3RtZW50VHlwZSgnaHVlL3NhdHVyYXRpb24nKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0aWYgKHJlYWRVaW50MTYocmVhZGVyKSAhPT0gMikgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGh1ZTIgdmVyc2lvbicpO1xuXG5cdFx0dGFyZ2V0LmFkanVzdG1lbnQgPSB7XG5cdFx0XHQuLi50YXJnZXQuYWRqdXN0bWVudCBhcyBQcmVzZXRJbmZvLFxuXHRcdFx0dHlwZTogJ2h1ZS9zYXR1cmF0aW9uJyxcblx0XHRcdG1hc3RlcjogcmVhZEh1ZUNoYW5uZWwocmVhZGVyKSxcblx0XHRcdHJlZHM6IHJlYWRIdWVDaGFubmVsKHJlYWRlciksXG5cdFx0XHR5ZWxsb3dzOiByZWFkSHVlQ2hhbm5lbChyZWFkZXIpLFxuXHRcdFx0Z3JlZW5zOiByZWFkSHVlQ2hhbm5lbChyZWFkZXIpLFxuXHRcdFx0Y3lhbnM6IHJlYWRIdWVDaGFubmVsKHJlYWRlciksXG5cdFx0XHRibHVlczogcmVhZEh1ZUNoYW5uZWwocmVhZGVyKSxcblx0XHRcdG1hZ2VudGFzOiByZWFkSHVlQ2hhbm5lbChyZWFkZXIpLFxuXHRcdH07XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBpbmZvID0gdGFyZ2V0LmFkanVzdG1lbnQgYXMgSHVlU2F0dXJhdGlvbkFkanVzdG1lbnQ7XG5cblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIDIpOyAvLyB2ZXJzaW9uXG5cdFx0d3JpdGVIdWVDaGFubmVsKHdyaXRlciwgaW5mby5tYXN0ZXIpO1xuXHRcdHdyaXRlSHVlQ2hhbm5lbCh3cml0ZXIsIGluZm8ucmVkcyk7XG5cdFx0d3JpdGVIdWVDaGFubmVsKHdyaXRlciwgaW5mby55ZWxsb3dzKTtcblx0XHR3cml0ZUh1ZUNoYW5uZWwod3JpdGVyLCBpbmZvLmdyZWVucyk7XG5cdFx0d3JpdGVIdWVDaGFubmVsKHdyaXRlciwgaW5mby5jeWFucyk7XG5cdFx0d3JpdGVIdWVDaGFubmVsKHdyaXRlciwgaW5mby5ibHVlcyk7XG5cdFx0d3JpdGVIdWVDaGFubmVsKHdyaXRlciwgaW5mby5tYWdlbnRhcyk7XG5cdH0sXG4pO1xuXG5mdW5jdGlvbiByZWFkQ29sb3JCYWxhbmNlKHJlYWRlcjogUHNkUmVhZGVyKTogQ29sb3JCYWxhbmNlVmFsdWVzIHtcblx0cmV0dXJuIHtcblx0XHRjeWFuUmVkOiByZWFkSW50MTYocmVhZGVyKSxcblx0XHRtYWdlbnRhR3JlZW46IHJlYWRJbnQxNihyZWFkZXIpLFxuXHRcdHllbGxvd0JsdWU6IHJlYWRJbnQxNihyZWFkZXIpLFxuXHR9O1xufVxuXG5mdW5jdGlvbiB3cml0ZUNvbG9yQmFsYW5jZSh3cml0ZXI6IFBzZFdyaXRlciwgdmFsdWU6IFBhcnRpYWw8Q29sb3JCYWxhbmNlVmFsdWVzPikge1xuXHR3cml0ZUludDE2KHdyaXRlciwgdmFsdWUuY3lhblJlZCB8fCAwKTtcblx0d3JpdGVJbnQxNih3cml0ZXIsIHZhbHVlLm1hZ2VudGFHcmVlbiB8fCAwKTtcblx0d3JpdGVJbnQxNih3cml0ZXIsIHZhbHVlLnllbGxvd0JsdWUgfHwgMCk7XG59XG5cbmFkZEhhbmRsZXIoXG5cdCdibG5jJyxcblx0YWRqdXN0bWVudFR5cGUoJ2NvbG9yIGJhbGFuY2UnKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0dGFyZ2V0LmFkanVzdG1lbnQgPSB7XG5cdFx0XHR0eXBlOiAnY29sb3IgYmFsYW5jZScsXG5cdFx0XHRzaGFkb3dzOiByZWFkQ29sb3JCYWxhbmNlKHJlYWRlciksXG5cdFx0XHRtaWR0b25lczogcmVhZENvbG9yQmFsYW5jZShyZWFkZXIpLFxuXHRcdFx0aGlnaGxpZ2h0czogcmVhZENvbG9yQmFsYW5jZShyZWFkZXIpLFxuXHRcdFx0cHJlc2VydmVMdW1pbm9zaXR5OiAhIXJlYWRVaW50OChyZWFkZXIpLFxuXHRcdH07XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBpbmZvID0gdGFyZ2V0LmFkanVzdG1lbnQgYXMgQ29sb3JCYWxhbmNlQWRqdXN0bWVudDtcblx0XHR3cml0ZUNvbG9yQmFsYW5jZSh3cml0ZXIsIGluZm8uc2hhZG93cyB8fCB7fSk7XG5cdFx0d3JpdGVDb2xvckJhbGFuY2Uod3JpdGVyLCBpbmZvLm1pZHRvbmVzIHx8IHt9KTtcblx0XHR3cml0ZUNvbG9yQmFsYW5jZSh3cml0ZXIsIGluZm8uaGlnaGxpZ2h0cyB8fCB7fSk7XG5cdFx0d3JpdGVVaW50OCh3cml0ZXIsIGluZm8ucHJlc2VydmVMdW1pbm9zaXR5ID8gMSA6IDApO1xuXHRcdHdyaXRlWmVyb3Mod3JpdGVyLCAxKTtcblx0fSxcbik7XG5cbmludGVyZmFjZSBCbGFja0FuZFdoaXRlRGVzY3JpcHRvciB7XG5cdCdSZCAgJzogbnVtYmVyO1xuXHRZbGx3OiBudW1iZXI7XG5cdCdHcm4gJzogbnVtYmVyO1xuXHQnQ3luICc6IG51bWJlcjtcblx0J0JsICAnOiBudW1iZXI7XG5cdE1nbnQ6IG51bWJlcjtcblx0dXNlVGludDogYm9vbGVhbjtcblx0dGludENvbG9yPzogRGVzY3JpcHRvckNvbG9yO1xuXHRid1ByZXNldEtpbmQ6IG51bWJlcjtcblx0YmxhY2tBbmRXaGl0ZVByZXNldEZpbGVOYW1lOiBzdHJpbmc7XG59XG5cbmFkZEhhbmRsZXIoXG5cdCdibHdoJyxcblx0YWRqdXN0bWVudFR5cGUoJ2JsYWNrICYgd2hpdGUnKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0Y29uc3QgZGVzYzogQmxhY2tBbmRXaGl0ZURlc2NyaXB0b3IgPSByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyKTtcblx0XHR0YXJnZXQuYWRqdXN0bWVudCA9IHtcblx0XHRcdHR5cGU6ICdibGFjayAmIHdoaXRlJyxcblx0XHRcdHJlZHM6IGRlc2NbJ1JkICAnXSxcblx0XHRcdHllbGxvd3M6IGRlc2MuWWxsdyxcblx0XHRcdGdyZWVuczogZGVzY1snR3JuICddLFxuXHRcdFx0Y3lhbnM6IGRlc2NbJ0N5biAnXSxcblx0XHRcdGJsdWVzOiBkZXNjWydCbCAgJ10sXG5cdFx0XHRtYWdlbnRhczogZGVzYy5NZ250LFxuXHRcdFx0dXNlVGludDogISFkZXNjLnVzZVRpbnQsXG5cdFx0XHRwcmVzZXRLaW5kOiBkZXNjLmJ3UHJlc2V0S2luZCxcblx0XHRcdHByZXNldEZpbGVOYW1lOiBkZXNjLmJsYWNrQW5kV2hpdGVQcmVzZXRGaWxlTmFtZSxcblx0XHR9O1xuXG5cdFx0aWYgKGRlc2MudGludENvbG9yICE9PSB1bmRlZmluZWQpIHRhcmdldC5hZGp1c3RtZW50LnRpbnRDb2xvciA9IHBhcnNlQ29sb3IoZGVzYy50aW50Q29sb3IpO1xuXG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgaW5mbyA9IHRhcmdldC5hZGp1c3RtZW50IGFzIEJsYWNrQW5kV2hpdGVBZGp1c3RtZW50O1xuXHRcdGNvbnN0IGRlc2M6IEJsYWNrQW5kV2hpdGVEZXNjcmlwdG9yID0ge1xuXHRcdFx0J1JkICAnOiBpbmZvLnJlZHMgfHwgMCxcblx0XHRcdFlsbHc6IGluZm8ueWVsbG93cyB8fCAwLFxuXHRcdFx0J0dybiAnOiBpbmZvLmdyZWVucyB8fCAwLFxuXHRcdFx0J0N5biAnOiBpbmZvLmN5YW5zIHx8IDAsXG5cdFx0XHQnQmwgICc6IGluZm8uYmx1ZXMgfHwgMCxcblx0XHRcdE1nbnQ6IGluZm8ubWFnZW50YXMgfHwgMCxcblx0XHRcdHVzZVRpbnQ6ICEhaW5mby51c2VUaW50LFxuXHRcdFx0dGludENvbG9yOiBzZXJpYWxpemVDb2xvcihpbmZvLnRpbnRDb2xvciksXG5cdFx0XHRid1ByZXNldEtpbmQ6IGluZm8ucHJlc2V0S2luZCB8fCAwLFxuXHRcdFx0YmxhY2tBbmRXaGl0ZVByZXNldEZpbGVOYW1lOiBpbmZvLnByZXNldEZpbGVOYW1lIHx8ICcnLFxuXHRcdH07XG5cblx0XHR3cml0ZVZlcnNpb25BbmREZXNjcmlwdG9yKHdyaXRlciwgJycsICdudWxsJywgZGVzYyk7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQncGhmbCcsXG5cdGFkanVzdG1lbnRUeXBlKCdwaG90byBmaWx0ZXInKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0Y29uc3QgdmVyc2lvbiA9IHJlYWRVaW50MTYocmVhZGVyKTtcblx0XHRpZiAodmVyc2lvbiAhPT0gMiAmJiB2ZXJzaW9uICE9PSAzKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcGhmbCB2ZXJzaW9uJyk7XG5cblx0XHRsZXQgY29sb3I6IENvbG9yO1xuXG5cdFx0aWYgKHZlcnNpb24gPT09IDIpIHtcblx0XHRcdGNvbG9yID0gcmVhZENvbG9yKHJlYWRlcik7XG5cdFx0fSBlbHNlIHsgLy8gdmVyc2lvbiAzXG5cdFx0XHQvLyBUT0RPOiB0ZXN0IHRoaXMsIHRoaXMgaXMgcHJvYmFibHkgd3Jvbmdcblx0XHRcdGNvbG9yID0ge1xuXHRcdFx0XHRsOiByZWFkSW50MzIocmVhZGVyKSAvIDEwMCxcblx0XHRcdFx0YTogcmVhZEludDMyKHJlYWRlcikgLyAxMDAsXG5cdFx0XHRcdGI6IHJlYWRJbnQzMihyZWFkZXIpIC8gMTAwLFxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHR0YXJnZXQuYWRqdXN0bWVudCA9IHtcblx0XHRcdHR5cGU6ICdwaG90byBmaWx0ZXInLFxuXHRcdFx0Y29sb3IsXG5cdFx0XHRkZW5zaXR5OiByZWFkVWludDMyKHJlYWRlcikgLyAxMDAsXG5cdFx0XHRwcmVzZXJ2ZUx1bWlub3NpdHk6ICEhcmVhZFVpbnQ4KHJlYWRlciksXG5cdFx0fTtcblxuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGluZm8gPSB0YXJnZXQuYWRqdXN0bWVudCBhcyBQaG90b0ZpbHRlckFkanVzdG1lbnQ7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCAyKTsgLy8gdmVyc2lvblxuXHRcdHdyaXRlQ29sb3Iod3JpdGVyLCBpbmZvLmNvbG9yIHx8IHsgbDogMCwgYTogMCwgYjogMCB9KTtcblx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIChpbmZvLmRlbnNpdHkgfHwgMCkgKiAxMDApO1xuXHRcdHdyaXRlVWludDgod3JpdGVyLCBpbmZvLnByZXNlcnZlTHVtaW5vc2l0eSA/IDEgOiAwKTtcblx0XHR3cml0ZVplcm9zKHdyaXRlciwgMyk7XG5cdH0sXG4pO1xuXG5mdW5jdGlvbiByZWFkTWl4ckNoYW5uZWwocmVhZGVyOiBQc2RSZWFkZXIpOiBDaGFubmVsTWl4ZXJDaGFubmVsIHtcblx0Y29uc3QgcmVkID0gcmVhZEludDE2KHJlYWRlcik7XG5cdGNvbnN0IGdyZWVuID0gcmVhZEludDE2KHJlYWRlcik7XG5cdGNvbnN0IGJsdWUgPSByZWFkSW50MTYocmVhZGVyKTtcblx0c2tpcEJ5dGVzKHJlYWRlciwgMik7XG5cdGNvbnN0IGNvbnN0YW50ID0gcmVhZEludDE2KHJlYWRlcik7XG5cdHJldHVybiB7IHJlZCwgZ3JlZW4sIGJsdWUsIGNvbnN0YW50IH07XG59XG5cbmZ1bmN0aW9uIHdyaXRlTWl4ckNoYW5uZWwod3JpdGVyOiBQc2RXcml0ZXIsIGNoYW5uZWw6IENoYW5uZWxNaXhlckNoYW5uZWwgfCB1bmRlZmluZWQpIHtcblx0Y29uc3QgYyA9IGNoYW5uZWwgfHwge30gYXMgUGFydGlhbDxDaGFubmVsTWl4ZXJDaGFubmVsPjtcblx0d3JpdGVJbnQxNih3cml0ZXIsIGMucmVkISk7XG5cdHdyaXRlSW50MTYod3JpdGVyLCBjLmdyZWVuISk7XG5cdHdyaXRlSW50MTYod3JpdGVyLCBjLmJsdWUhKTtcblx0d3JpdGVaZXJvcyh3cml0ZXIsIDIpO1xuXHR3cml0ZUludDE2KHdyaXRlciwgYy5jb25zdGFudCEpO1xufVxuXG5hZGRIYW5kbGVyKFxuXHQnbWl4cicsXG5cdGFkanVzdG1lbnRUeXBlKCdjaGFubmVsIG1peGVyJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdGlmIChyZWFkVWludDE2KHJlYWRlcikgIT09IDEpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtaXhyIHZlcnNpb24nKTtcblxuXHRcdGNvbnN0IGFkanVzdG1lbnQ6IENoYW5uZWxNaXhlckFkanVzdG1lbnQgPSB0YXJnZXQuYWRqdXN0bWVudCA9IHtcblx0XHRcdC4uLnRhcmdldC5hZGp1c3RtZW50IGFzIFByZXNldEluZm8sXG5cdFx0XHR0eXBlOiAnY2hhbm5lbCBtaXhlcicsXG5cdFx0XHRtb25vY2hyb21lOiAhIXJlYWRVaW50MTYocmVhZGVyKSxcblx0XHR9O1xuXG5cdFx0aWYgKCFhZGp1c3RtZW50Lm1vbm9jaHJvbWUpIHtcblx0XHRcdGFkanVzdG1lbnQucmVkID0gcmVhZE1peHJDaGFubmVsKHJlYWRlcik7XG5cdFx0XHRhZGp1c3RtZW50LmdyZWVuID0gcmVhZE1peHJDaGFubmVsKHJlYWRlcik7XG5cdFx0XHRhZGp1c3RtZW50LmJsdWUgPSByZWFkTWl4ckNoYW5uZWwocmVhZGVyKTtcblx0XHR9XG5cblx0XHRhZGp1c3RtZW50LmdyYXkgPSByZWFkTWl4ckNoYW5uZWwocmVhZGVyKTtcblxuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGluZm8gPSB0YXJnZXQuYWRqdXN0bWVudCBhcyBDaGFubmVsTWl4ZXJBZGp1c3RtZW50O1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgMSk7IC8vIHZlcnNpb25cblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIGluZm8ubW9ub2Nocm9tZSA/IDEgOiAwKTtcblxuXHRcdGlmIChpbmZvLm1vbm9jaHJvbWUpIHtcblx0XHRcdHdyaXRlTWl4ckNoYW5uZWwod3JpdGVyLCBpbmZvLmdyYXkpO1xuXHRcdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDMgKiA1ICogMik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdyaXRlTWl4ckNoYW5uZWwod3JpdGVyLCBpbmZvLnJlZCk7XG5cdFx0XHR3cml0ZU1peHJDaGFubmVsKHdyaXRlciwgaW5mby5ncmVlbik7XG5cdFx0XHR3cml0ZU1peHJDaGFubmVsKHdyaXRlciwgaW5mby5ibHVlKTtcblx0XHRcdHdyaXRlTWl4ckNoYW5uZWwod3JpdGVyLCBpbmZvLmdyYXkpO1xuXHRcdH1cblx0fSxcbik7XG5cbmNvbnN0IGNvbG9yTG9va3VwVHlwZSA9IGNyZWF0ZUVudW08JzNkbHV0JyB8ICdhYnN0cmFjdFByb2ZpbGUnIHwgJ2RldmljZUxpbmtQcm9maWxlJz4oJ2NvbG9yTG9va3VwVHlwZScsICczRExVVCcsIHtcblx0JzNkbHV0JzogJzNETFVUJyxcblx0YWJzdHJhY3RQcm9maWxlOiAnYWJzdHJhY3RQcm9maWxlJyxcblx0ZGV2aWNlTGlua1Byb2ZpbGU6ICdkZXZpY2VMaW5rUHJvZmlsZScsXG59KTtcblxuY29uc3QgTFVURm9ybWF0VHlwZSA9IGNyZWF0ZUVudW08J2xvb2snIHwgJ2N1YmUnIHwgJzNkbCc+KCdMVVRGb3JtYXRUeXBlJywgJ2xvb2snLCB7XG5cdGxvb2s6ICdMVVRGb3JtYXRMT09LJyxcblx0Y3ViZTogJ0xVVEZvcm1hdENVQkUnLFxuXHQnM2RsJzogJ0xVVEZvcm1hdDNETCcsXG59KTtcblxuY29uc3QgY29sb3JMb29rdXBPcmRlciA9IGNyZWF0ZUVudW08J3JnYicgfCAnYmdyJz4oJ2NvbG9yTG9va3VwT3JkZXInLCAncmdiJywge1xuXHRyZ2I6ICdyZ2JPcmRlcicsXG5cdGJncjogJ2Jnck9yZGVyJyxcbn0pO1xuXG5pbnRlcmZhY2UgQ29sb3JMb29rdXBEZXNjcmlwdG9yIHtcblx0bG9va3VwVHlwZT86IHN0cmluZztcblx0J05tICAnPzogc3RyaW5nO1xuXHREdGhyPzogYm9vbGVhbjtcblx0cHJvZmlsZT86IFVpbnQ4QXJyYXk7XG5cdExVVEZvcm1hdD86IHN0cmluZztcblx0ZGF0YU9yZGVyPzogc3RyaW5nO1xuXHR0YWJsZU9yZGVyPzogc3RyaW5nO1xuXHRMVVQzREZpbGVEYXRhPzogVWludDhBcnJheTtcblx0TFVUM0RGaWxlTmFtZT86IHN0cmluZztcbn1cblxuYWRkSGFuZGxlcihcblx0J2NsckwnLFxuXHRhZGp1c3RtZW50VHlwZSgnY29sb3IgbG9va3VwJyksXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdGlmIChyZWFkVWludDE2KHJlYWRlcikgIT09IDEpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjbHJMIHZlcnNpb24nKTtcblxuXHRcdGNvbnN0IGRlc2M6IENvbG9yTG9va3VwRGVzY3JpcHRvciA9IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpO1xuXHRcdHRhcmdldC5hZGp1c3RtZW50ID0geyB0eXBlOiAnY29sb3IgbG9va3VwJyB9O1xuXHRcdGNvbnN0IGluZm8gPSB0YXJnZXQuYWRqdXN0bWVudDtcblxuXHRcdGlmIChkZXNjLmxvb2t1cFR5cGUgIT09IHVuZGVmaW5lZCkgaW5mby5sb29rdXBUeXBlID0gY29sb3JMb29rdXBUeXBlLmRlY29kZShkZXNjLmxvb2t1cFR5cGUpO1xuXHRcdGlmIChkZXNjWydObSAgJ10gIT09IHVuZGVmaW5lZCkgaW5mby5uYW1lID0gZGVzY1snTm0gICddO1xuXHRcdGlmIChkZXNjLkR0aHIgIT09IHVuZGVmaW5lZCkgaW5mby5kaXRoZXIgPSBkZXNjLkR0aHI7XG5cdFx0aWYgKGRlc2MucHJvZmlsZSAhPT0gdW5kZWZpbmVkKSBpbmZvLnByb2ZpbGUgPSBkZXNjLnByb2ZpbGU7XG5cdFx0aWYgKGRlc2MuTFVURm9ybWF0ICE9PSB1bmRlZmluZWQpIGluZm8ubHV0Rm9ybWF0ID0gTFVURm9ybWF0VHlwZS5kZWNvZGUoZGVzYy5MVVRGb3JtYXQpO1xuXHRcdGlmIChkZXNjLmRhdGFPcmRlciAhPT0gdW5kZWZpbmVkKSBpbmZvLmRhdGFPcmRlciA9IGNvbG9yTG9va3VwT3JkZXIuZGVjb2RlKGRlc2MuZGF0YU9yZGVyKTtcblx0XHRpZiAoZGVzYy50YWJsZU9yZGVyICE9PSB1bmRlZmluZWQpIGluZm8udGFibGVPcmRlciA9IGNvbG9yTG9va3VwT3JkZXIuZGVjb2RlKGRlc2MudGFibGVPcmRlcik7XG5cdFx0aWYgKGRlc2MuTFVUM0RGaWxlRGF0YSAhPT0gdW5kZWZpbmVkKSBpbmZvLmx1dDNERmlsZURhdGEgPSBkZXNjLkxVVDNERmlsZURhdGE7XG5cdFx0aWYgKGRlc2MuTFVUM0RGaWxlTmFtZSAhPT0gdW5kZWZpbmVkKSBpbmZvLmx1dDNERmlsZU5hbWUgPSBkZXNjLkxVVDNERmlsZU5hbWU7XG5cblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBpbmZvID0gdGFyZ2V0LmFkanVzdG1lbnQgYXMgQ29sb3JMb29rdXBBZGp1c3RtZW50O1xuXHRcdGNvbnN0IGRlc2M6IENvbG9yTG9va3VwRGVzY3JpcHRvciA9IHt9O1xuXG5cdFx0aWYgKGluZm8ubG9va3VwVHlwZSAhPT0gdW5kZWZpbmVkKSBkZXNjLmxvb2t1cFR5cGUgPSBjb2xvckxvb2t1cFR5cGUuZW5jb2RlKGluZm8ubG9va3VwVHlwZSk7XG5cdFx0aWYgKGluZm8ubmFtZSAhPT0gdW5kZWZpbmVkKSBkZXNjWydObSAgJ10gPSBpbmZvLm5hbWU7XG5cdFx0aWYgKGluZm8uZGl0aGVyICE9PSB1bmRlZmluZWQpIGRlc2MuRHRociA9IGluZm8uZGl0aGVyO1xuXHRcdGlmIChpbmZvLnByb2ZpbGUgIT09IHVuZGVmaW5lZCkgZGVzYy5wcm9maWxlID0gaW5mby5wcm9maWxlO1xuXHRcdGlmIChpbmZvLmx1dEZvcm1hdCAhPT0gdW5kZWZpbmVkKSBkZXNjLkxVVEZvcm1hdCA9IExVVEZvcm1hdFR5cGUuZW5jb2RlKGluZm8ubHV0Rm9ybWF0KTtcblx0XHRpZiAoaW5mby5kYXRhT3JkZXIgIT09IHVuZGVmaW5lZCkgZGVzYy5kYXRhT3JkZXIgPSBjb2xvckxvb2t1cE9yZGVyLmVuY29kZShpbmZvLmRhdGFPcmRlcik7XG5cdFx0aWYgKGluZm8udGFibGVPcmRlciAhPT0gdW5kZWZpbmVkKSBkZXNjLnRhYmxlT3JkZXIgPSBjb2xvckxvb2t1cE9yZGVyLmVuY29kZShpbmZvLnRhYmxlT3JkZXIpO1xuXHRcdGlmIChpbmZvLmx1dDNERmlsZURhdGEgIT09IHVuZGVmaW5lZCkgZGVzYy5MVVQzREZpbGVEYXRhID0gaW5mby5sdXQzREZpbGVEYXRhO1xuXHRcdGlmIChpbmZvLmx1dDNERmlsZU5hbWUgIT09IHVuZGVmaW5lZCkgZGVzYy5MVVQzREZpbGVOYW1lID0gaW5mby5sdXQzREZpbGVOYW1lO1xuXG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCAxKTsgLy8gdmVyc2lvblxuXHRcdHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgJ251bGwnLCBkZXNjKTtcblx0fSxcbik7XG5cbmFkZEhhbmRsZXIoXG5cdCdudnJ0Jyxcblx0YWRqdXN0bWVudFR5cGUoJ2ludmVydCcpLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQpID0+IHtcblx0XHR0YXJnZXQuYWRqdXN0bWVudCA9IHsgdHlwZTogJ2ludmVydCcgfTtcblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQoKSA9PiB7XG5cdFx0Ly8gbm90aGluZyB0byB3cml0ZSBoZXJlXG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQncG9zdCcsXG5cdGFkanVzdG1lbnRUeXBlKCdwb3N0ZXJpemUnKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0dGFyZ2V0LmFkanVzdG1lbnQgPSB7XG5cdFx0XHR0eXBlOiAncG9zdGVyaXplJyxcblx0XHRcdGxldmVsczogcmVhZFVpbnQxNihyZWFkZXIpLFxuXHRcdH07XG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgaW5mbyA9IHRhcmdldC5hZGp1c3RtZW50IGFzIFBvc3Rlcml6ZUFkanVzdG1lbnQ7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBpbmZvLmxldmVscyA/PyA0KTtcblx0XHR3cml0ZVplcm9zKHdyaXRlciwgMik7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQndGhycycsXG5cdGFkanVzdG1lbnRUeXBlKCd0aHJlc2hvbGQnKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0dGFyZ2V0LmFkanVzdG1lbnQgPSB7XG5cdFx0XHR0eXBlOiAndGhyZXNob2xkJyxcblx0XHRcdGxldmVsOiByZWFkVWludDE2KHJlYWRlciksXG5cdFx0fTtcblx0XHRza2lwQnl0ZXMocmVhZGVyLCBsZWZ0KCkpO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBpbmZvID0gdGFyZ2V0LmFkanVzdG1lbnQgYXMgVGhyZXNob2xkQWRqdXN0bWVudDtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIGluZm8ubGV2ZWwgPz8gMTI4KTtcblx0XHR3cml0ZVplcm9zKHdyaXRlciwgMik7XG5cdH0sXG4pO1xuXG5jb25zdCBncmRtQ29sb3JNb2RlbHMgPSBbJycsICcnLCAnJywgJ3JnYicsICdoc2InLCAnJywgJ2xhYiddO1xuXG5hZGRIYW5kbGVyKFxuXHQnZ3JkbScsXG5cdGFkanVzdG1lbnRUeXBlKCdncmFkaWVudCBtYXAnKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0aWYgKHJlYWRVaW50MTYocmVhZGVyKSAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGdyZG0gdmVyc2lvbicpO1xuXG5cdFx0Y29uc3QgaW5mbzogR3JhZGllbnRNYXBBZGp1c3RtZW50ID0ge1xuXHRcdFx0dHlwZTogJ2dyYWRpZW50IG1hcCcsXG5cdFx0XHRncmFkaWVudFR5cGU6ICdzb2xpZCcsXG5cdFx0fTtcblxuXHRcdGluZm8ucmV2ZXJzZSA9ICEhcmVhZFVpbnQ4KHJlYWRlcik7XG5cdFx0aW5mby5kaXRoZXIgPSAhIXJlYWRVaW50OChyZWFkZXIpO1xuXHRcdGluZm8ubmFtZSA9IHJlYWRVbmljb2RlU3RyaW5nKHJlYWRlcik7XG5cdFx0aW5mby5jb2xvclN0b3BzID0gW107XG5cdFx0aW5mby5vcGFjaXR5U3RvcHMgPSBbXTtcblxuXHRcdGNvbnN0IHN0b3BzQ291bnQgPSByZWFkVWludDE2KHJlYWRlcik7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHN0b3BzQ291bnQ7IGkrKykge1xuXHRcdFx0aW5mby5jb2xvclN0b3BzLnB1c2goe1xuXHRcdFx0XHRsb2NhdGlvbjogcmVhZFVpbnQzMihyZWFkZXIpLFxuXHRcdFx0XHRtaWRwb2ludDogcmVhZFVpbnQzMihyZWFkZXIpIC8gMTAwLFxuXHRcdFx0XHRjb2xvcjogcmVhZENvbG9yKHJlYWRlciksXG5cdFx0XHR9KTtcblx0XHRcdHNraXBCeXRlcyhyZWFkZXIsIDIpO1xuXHRcdH1cblxuXHRcdGNvbnN0IG9wYWNpdHlTdG9wc0NvdW50ID0gcmVhZFVpbnQxNihyZWFkZXIpO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBvcGFjaXR5U3RvcHNDb3VudDsgaSsrKSB7XG5cdFx0XHRpbmZvLm9wYWNpdHlTdG9wcy5wdXNoKHtcblx0XHRcdFx0bG9jYXRpb246IHJlYWRVaW50MzIocmVhZGVyKSxcblx0XHRcdFx0bWlkcG9pbnQ6IHJlYWRVaW50MzIocmVhZGVyKSAvIDEwMCxcblx0XHRcdFx0b3BhY2l0eTogcmVhZFVpbnQxNihyZWFkZXIpIC8gMHhmZixcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGNvbnN0IGV4cGFuc2lvbkNvdW50ID0gcmVhZFVpbnQxNihyZWFkZXIpO1xuXHRcdGlmIChleHBhbnNpb25Db3VudCAhPT0gMikgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGdyZG0gZXhwYW5zaW9uIGNvdW50Jyk7XG5cblx0XHRjb25zdCBpbnRlcnBvbGF0aW9uID0gcmVhZFVpbnQxNihyZWFkZXIpO1xuXHRcdGluZm8uc21vb3RobmVzcyA9IGludGVycG9sYXRpb24gLyA0MDk2O1xuXG5cdFx0Y29uc3QgbGVuZ3RoID0gcmVhZFVpbnQxNihyZWFkZXIpO1xuXHRcdGlmIChsZW5ndGggIT09IDMyKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZ3JkbSBsZW5ndGgnKTtcblxuXHRcdGluZm8uZ3JhZGllbnRUeXBlID0gcmVhZFVpbnQxNihyZWFkZXIpID8gJ25vaXNlJyA6ICdzb2xpZCc7XG5cdFx0aW5mby5yYW5kb21TZWVkID0gcmVhZFVpbnQzMihyZWFkZXIpO1xuXHRcdGluZm8uYWRkVHJhbnNwYXJlbmN5ID0gISFyZWFkVWludDE2KHJlYWRlcik7XG5cdFx0aW5mby5yZXN0cmljdENvbG9ycyA9ICEhcmVhZFVpbnQxNihyZWFkZXIpO1xuXHRcdGluZm8ucm91Z2huZXNzID0gcmVhZFVpbnQzMihyZWFkZXIpIC8gNDA5Njtcblx0XHRpbmZvLmNvbG9yTW9kZWwgPSAoZ3JkbUNvbG9yTW9kZWxzW3JlYWRVaW50MTYocmVhZGVyKV0gfHwgJ3JnYicpIGFzICdyZ2InIHwgJ2hzYicgfCAnbGFiJztcblxuXHRcdGluZm8ubWluID0gW1xuXHRcdFx0cmVhZFVpbnQxNihyZWFkZXIpIC8gMHg4MDAwLFxuXHRcdFx0cmVhZFVpbnQxNihyZWFkZXIpIC8gMHg4MDAwLFxuXHRcdFx0cmVhZFVpbnQxNihyZWFkZXIpIC8gMHg4MDAwLFxuXHRcdFx0cmVhZFVpbnQxNihyZWFkZXIpIC8gMHg4MDAwLFxuXHRcdF07XG5cblx0XHRpbmZvLm1heCA9IFtcblx0XHRcdHJlYWRVaW50MTYocmVhZGVyKSAvIDB4ODAwMCxcblx0XHRcdHJlYWRVaW50MTYocmVhZGVyKSAvIDB4ODAwMCxcblx0XHRcdHJlYWRVaW50MTYocmVhZGVyKSAvIDB4ODAwMCxcblx0XHRcdHJlYWRVaW50MTYocmVhZGVyKSAvIDB4ODAwMCxcblx0XHRdO1xuXG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblxuXHRcdGZvciAoY29uc3QgcyBvZiBpbmZvLmNvbG9yU3RvcHMpIHMubG9jYXRpb24gLz0gaW50ZXJwb2xhdGlvbjtcblx0XHRmb3IgKGNvbnN0IHMgb2YgaW5mby5vcGFjaXR5U3RvcHMpIHMubG9jYXRpb24gLz0gaW50ZXJwb2xhdGlvbjtcblxuXHRcdHRhcmdldC5hZGp1c3RtZW50ID0gaW5mbztcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgaW5mbyA9IHRhcmdldC5hZGp1c3RtZW50IGFzIEdyYWRpZW50TWFwQWRqdXN0bWVudDtcblxuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgMSk7IC8vIHZlcnNpb25cblx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgaW5mby5yZXZlcnNlID8gMSA6IDApO1xuXHRcdHdyaXRlVWludDgod3JpdGVyLCBpbmZvLmRpdGhlciA/IDEgOiAwKTtcblx0XHR3cml0ZVVuaWNvZGVTdHJpbmdXaXRoUGFkZGluZyh3cml0ZXIsIGluZm8ubmFtZSB8fCAnJyk7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBpbmZvLmNvbG9yU3RvcHMgJiYgaW5mby5jb2xvclN0b3BzLmxlbmd0aCB8fCAwKTtcblxuXHRcdGNvbnN0IGludGVycG9sYXRpb24gPSBNYXRoLnJvdW5kKChpbmZvLnNtb290aG5lc3MgPz8gMSkgKiA0MDk2KTtcblxuXHRcdGZvciAoY29uc3QgcyBvZiBpbmZvLmNvbG9yU3RvcHMgfHwgW10pIHtcblx0XHRcdHdyaXRlVWludDMyKHdyaXRlciwgTWF0aC5yb3VuZChzLmxvY2F0aW9uICogaW50ZXJwb2xhdGlvbikpO1xuXHRcdFx0d3JpdGVVaW50MzIod3JpdGVyLCBNYXRoLnJvdW5kKHMubWlkcG9pbnQgKiAxMDApKTtcblx0XHRcdHdyaXRlQ29sb3Iod3JpdGVyLCBzLmNvbG9yKTtcblx0XHRcdHdyaXRlWmVyb3Mod3JpdGVyLCAyKTtcblx0XHR9XG5cblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIGluZm8ub3BhY2l0eVN0b3BzICYmIGluZm8ub3BhY2l0eVN0b3BzLmxlbmd0aCB8fCAwKTtcblxuXHRcdGZvciAoY29uc3QgcyBvZiBpbmZvLm9wYWNpdHlTdG9wcyB8fCBbXSkge1xuXHRcdFx0d3JpdGVVaW50MzIod3JpdGVyLCBNYXRoLnJvdW5kKHMubG9jYXRpb24gKiBpbnRlcnBvbGF0aW9uKSk7XG5cdFx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIE1hdGgucm91bmQocy5taWRwb2ludCAqIDEwMCkpO1xuXHRcdFx0d3JpdGVVaW50MTYod3JpdGVyLCBNYXRoLnJvdW5kKHMub3BhY2l0eSAqIDB4ZmYpKTtcblx0XHR9XG5cblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIDIpOyAvLyBleHBhbnNpb24gY291bnRcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIGludGVycG9sYXRpb24pO1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgMzIpOyAvLyBsZW5ndGhcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIGluZm8uZ3JhZGllbnRUeXBlID09PSAnbm9pc2UnID8gMSA6IDApO1xuXHRcdHdyaXRlVWludDMyKHdyaXRlciwgaW5mby5yYW5kb21TZWVkIHx8IDApO1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgaW5mby5hZGRUcmFuc3BhcmVuY3kgPyAxIDogMCk7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBpbmZvLnJlc3RyaWN0Q29sb3JzID8gMSA6IDApO1xuXHRcdHdyaXRlVWludDMyKHdyaXRlciwgTWF0aC5yb3VuZCgoaW5mby5yb3VnaG5lc3MgPz8gMSkgKiA0MDk2KSk7XG5cdFx0Y29uc3QgY29sb3JNb2RlbCA9IGdyZG1Db2xvck1vZGVscy5pbmRleE9mKGluZm8uY29sb3JNb2RlbCA/PyAncmdiJyk7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBjb2xvck1vZGVsID09PSAtMSA/IDMgOiBjb2xvck1vZGVsKTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgNDsgaSsrKVxuXHRcdFx0d3JpdGVVaW50MTYod3JpdGVyLCBNYXRoLnJvdW5kKChpbmZvLm1pbiAmJiBpbmZvLm1pbltpXSB8fCAwKSAqIDB4ODAwMCkpO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspXG5cdFx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIE1hdGgucm91bmQoKGluZm8ubWF4ICYmIGluZm8ubWF4W2ldIHx8IDApICogMHg4MDAwKSk7XG5cblx0XHR3cml0ZVplcm9zKHdyaXRlciwgNCk7XG5cdH0sXG4pO1xuXG5mdW5jdGlvbiByZWFkU2VsZWN0aXZlQ29sb3JzKHJlYWRlcjogUHNkUmVhZGVyKTogQ01ZSyB7XG5cdHJldHVybiB7XG5cdFx0YzogcmVhZEludDE2KHJlYWRlciksXG5cdFx0bTogcmVhZEludDE2KHJlYWRlciksXG5cdFx0eTogcmVhZEludDE2KHJlYWRlciksXG5cdFx0azogcmVhZEludDE2KHJlYWRlciksXG5cdH07XG59XG5cbmZ1bmN0aW9uIHdyaXRlU2VsZWN0aXZlQ29sb3JzKHdyaXRlcjogUHNkV3JpdGVyLCBjbXlrOiBDTVlLIHwgdW5kZWZpbmVkKSB7XG5cdGNvbnN0IGMgPSBjbXlrIHx8IHt9IGFzIFBhcnRpYWw8Q01ZSz47XG5cdHdyaXRlSW50MTYod3JpdGVyLCBjLmMhKTtcblx0d3JpdGVJbnQxNih3cml0ZXIsIGMubSEpO1xuXHR3cml0ZUludDE2KHdyaXRlciwgYy55ISk7XG5cdHdyaXRlSW50MTYod3JpdGVyLCBjLmshKTtcbn1cblxuYWRkSGFuZGxlcihcblx0J3NlbGMnLFxuXHRhZGp1c3RtZW50VHlwZSgnc2VsZWN0aXZlIGNvbG9yJyksXG5cdChyZWFkZXIsIHRhcmdldCkgPT4ge1xuXHRcdGlmIChyZWFkVWludDE2KHJlYWRlcikgIT09IDEpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzZWxjIHZlcnNpb24nKTtcblxuXHRcdGNvbnN0IG1vZGUgPSByZWFkVWludDE2KHJlYWRlcikgPyAnYWJzb2x1dGUnIDogJ3JlbGF0aXZlJztcblx0XHRza2lwQnl0ZXMocmVhZGVyLCA4KTtcblxuXHRcdHRhcmdldC5hZGp1c3RtZW50ID0ge1xuXHRcdFx0dHlwZTogJ3NlbGVjdGl2ZSBjb2xvcicsXG5cdFx0XHRtb2RlLFxuXHRcdFx0cmVkczogcmVhZFNlbGVjdGl2ZUNvbG9ycyhyZWFkZXIpLFxuXHRcdFx0eWVsbG93czogcmVhZFNlbGVjdGl2ZUNvbG9ycyhyZWFkZXIpLFxuXHRcdFx0Z3JlZW5zOiByZWFkU2VsZWN0aXZlQ29sb3JzKHJlYWRlciksXG5cdFx0XHRjeWFuczogcmVhZFNlbGVjdGl2ZUNvbG9ycyhyZWFkZXIpLFxuXHRcdFx0Ymx1ZXM6IHJlYWRTZWxlY3RpdmVDb2xvcnMocmVhZGVyKSxcblx0XHRcdG1hZ2VudGFzOiByZWFkU2VsZWN0aXZlQ29sb3JzKHJlYWRlciksXG5cdFx0XHR3aGl0ZXM6IHJlYWRTZWxlY3RpdmVDb2xvcnMocmVhZGVyKSxcblx0XHRcdG5ldXRyYWxzOiByZWFkU2VsZWN0aXZlQ29sb3JzKHJlYWRlciksXG5cdFx0XHRibGFja3M6IHJlYWRTZWxlY3RpdmVDb2xvcnMocmVhZGVyKSxcblx0XHR9O1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHRjb25zdCBpbmZvID0gdGFyZ2V0LmFkanVzdG1lbnQgYXMgU2VsZWN0aXZlQ29sb3JBZGp1c3RtZW50O1xuXG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCAxKTsgLy8gdmVyc2lvblxuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgaW5mby5tb2RlID09PSAnYWJzb2x1dGUnID8gMSA6IDApO1xuXHRcdHdyaXRlWmVyb3Mod3JpdGVyLCA4KTtcblx0XHR3cml0ZVNlbGVjdGl2ZUNvbG9ycyh3cml0ZXIsIGluZm8ucmVkcyk7XG5cdFx0d3JpdGVTZWxlY3RpdmVDb2xvcnMod3JpdGVyLCBpbmZvLnllbGxvd3MpO1xuXHRcdHdyaXRlU2VsZWN0aXZlQ29sb3JzKHdyaXRlciwgaW5mby5ncmVlbnMpO1xuXHRcdHdyaXRlU2VsZWN0aXZlQ29sb3JzKHdyaXRlciwgaW5mby5jeWFucyk7XG5cdFx0d3JpdGVTZWxlY3RpdmVDb2xvcnMod3JpdGVyLCBpbmZvLmJsdWVzKTtcblx0XHR3cml0ZVNlbGVjdGl2ZUNvbG9ycyh3cml0ZXIsIGluZm8ubWFnZW50YXMpO1xuXHRcdHdyaXRlU2VsZWN0aXZlQ29sb3JzKHdyaXRlciwgaW5mby53aGl0ZXMpO1xuXHRcdHdyaXRlU2VsZWN0aXZlQ29sb3JzKHdyaXRlciwgaW5mby5uZXV0cmFscyk7XG5cdFx0d3JpdGVTZWxlY3RpdmVDb2xvcnMod3JpdGVyLCBpbmZvLmJsYWNrcyk7XG5cdH0sXG4pO1xuXG5pbnRlcmZhY2UgQnJpZ2h0bmVzc0NvbnRyYXN0RGVzY3JpcHRvciB7XG5cdFZyc246IG51bWJlcjtcblx0QnJnaDogbnVtYmVyO1xuXHRDbnRyOiBudW1iZXI7XG5cdG1lYW5zOiBudW1iZXI7XG5cdCdMYWIgJzogYm9vbGVhbjtcblx0dXNlTGVnYWN5OiBib29sZWFuO1xuXHRBdXRvOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgUHJlc2V0RGVzY3JpcHRvciB7XG5cdFZyc246IG51bWJlcjtcblx0cHJlc2V0S2luZDogbnVtYmVyO1xuXHRwcmVzZXRGaWxlTmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ3VydmVzUHJlc2V0RGVzY3JpcHRvciB7XG5cdFZyc246IG51bWJlcjtcblx0Y3VydmVzUHJlc2V0S2luZDogbnVtYmVyO1xuXHRjdXJ2ZXNQcmVzZXRGaWxlTmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgTWl4ZXJQcmVzZXREZXNjcmlwdG9yIHtcblx0VnJzbjogbnVtYmVyO1xuXHRtaXhlclByZXNldEtpbmQ6IG51bWJlcjtcblx0bWl4ZXJQcmVzZXRGaWxlTmFtZTogc3RyaW5nO1xufVxuXG5hZGRIYW5kbGVyKFxuXHQnQ2dFZCcsXG5cdHRhcmdldCA9PiB7XG5cdFx0Y29uc3QgYSA9IHRhcmdldC5hZGp1c3RtZW50O1xuXG5cdFx0aWYgKCFhKSByZXR1cm4gZmFsc2U7XG5cblx0XHRyZXR1cm4gKGEudHlwZSA9PT0gJ2JyaWdodG5lc3MvY29udHJhc3QnICYmICFhLnVzZUxlZ2FjeSkgfHxcblx0XHRcdCgoYS50eXBlID09PSAnbGV2ZWxzJyB8fCBhLnR5cGUgPT09ICdjdXJ2ZXMnIHx8IGEudHlwZSA9PT0gJ2V4cG9zdXJlJyB8fCBhLnR5cGUgPT09ICdjaGFubmVsIG1peGVyJyB8fFxuXHRcdFx0XHRhLnR5cGUgPT09ICdodWUvc2F0dXJhdGlvbicpICYmIGEucHJlc2V0RmlsZU5hbWUgIT09IHVuZGVmaW5lZCk7XG5cdH0sXG5cdChyZWFkZXIsIHRhcmdldCwgbGVmdCkgPT4ge1xuXHRcdGNvbnN0IGRlc2MgPSByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyKSBhc1xuXHRcdFx0QnJpZ2h0bmVzc0NvbnRyYXN0RGVzY3JpcHRvciB8IFByZXNldERlc2NyaXB0b3IgfCBDdXJ2ZXNQcmVzZXREZXNjcmlwdG9yIHwgTWl4ZXJQcmVzZXREZXNjcmlwdG9yO1xuXHRcdGlmIChkZXNjLlZyc24gIT09IDEpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBDZ0VkIHZlcnNpb24nKTtcblxuXHRcdC8vIHRoaXMgc2VjdGlvbiBjYW4gc3BlY2lmeSBwcmVzZXQgZmlsZSBuYW1lIGZvciBvdGhlciBhZGp1c3RtZW50IHR5cGVzXG5cdFx0aWYgKCdwcmVzZXRGaWxlTmFtZScgaW4gZGVzYykge1xuXHRcdFx0dGFyZ2V0LmFkanVzdG1lbnQgPSB7XG5cdFx0XHRcdC4uLnRhcmdldC5hZGp1c3RtZW50IGFzIExldmVsc0FkanVzdG1lbnQgfCBFeHBvc3VyZUFkanVzdG1lbnQgfCBIdWVTYXR1cmF0aW9uQWRqdXN0bWVudCxcblx0XHRcdFx0cHJlc2V0S2luZDogZGVzYy5wcmVzZXRLaW5kLFxuXHRcdFx0XHRwcmVzZXRGaWxlTmFtZTogZGVzYy5wcmVzZXRGaWxlTmFtZSxcblx0XHRcdH07XG5cdFx0fSBlbHNlIGlmICgnY3VydmVzUHJlc2V0RmlsZU5hbWUnIGluIGRlc2MpIHtcblx0XHRcdHRhcmdldC5hZGp1c3RtZW50ID0ge1xuXHRcdFx0XHQuLi50YXJnZXQuYWRqdXN0bWVudCBhcyBDdXJ2ZXNBZGp1c3RtZW50LFxuXHRcdFx0XHRwcmVzZXRLaW5kOiBkZXNjLmN1cnZlc1ByZXNldEtpbmQsXG5cdFx0XHRcdHByZXNldEZpbGVOYW1lOiBkZXNjLmN1cnZlc1ByZXNldEZpbGVOYW1lLFxuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKCdtaXhlclByZXNldEZpbGVOYW1lJyBpbiBkZXNjKSB7XG5cdFx0XHR0YXJnZXQuYWRqdXN0bWVudCA9IHtcblx0XHRcdFx0Li4udGFyZ2V0LmFkanVzdG1lbnQgYXMgQ3VydmVzQWRqdXN0bWVudCxcblx0XHRcdFx0cHJlc2V0S2luZDogZGVzYy5taXhlclByZXNldEtpbmQsXG5cdFx0XHRcdHByZXNldEZpbGVOYW1lOiBkZXNjLm1peGVyUHJlc2V0RmlsZU5hbWUsXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0YXJnZXQuYWRqdXN0bWVudCA9IHtcblx0XHRcdFx0dHlwZTogJ2JyaWdodG5lc3MvY29udHJhc3QnLFxuXHRcdFx0XHRicmlnaHRuZXNzOiBkZXNjLkJyZ2gsXG5cdFx0XHRcdGNvbnRyYXN0OiBkZXNjLkNudHIsXG5cdFx0XHRcdG1lYW5WYWx1ZTogZGVzYy5tZWFucyxcblx0XHRcdFx0dXNlTGVnYWN5OiAhIWRlc2MudXNlTGVnYWN5LFxuXHRcdFx0XHRsYWJDb2xvck9ubHk6ICEhZGVzY1snTGFiICddLFxuXHRcdFx0XHRhdXRvOiAhIWRlc2MuQXV0byxcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgaW5mbyA9IHRhcmdldC5hZGp1c3RtZW50ITtcblxuXHRcdGlmIChpbmZvLnR5cGUgPT09ICdsZXZlbHMnIHx8IGluZm8udHlwZSA9PT0gJ2V4cG9zdXJlJyB8fCBpbmZvLnR5cGUgPT09ICdodWUvc2F0dXJhdGlvbicpIHtcblx0XHRcdGNvbnN0IGRlc2M6IFByZXNldERlc2NyaXB0b3IgPSB7XG5cdFx0XHRcdFZyc246IDEsXG5cdFx0XHRcdHByZXNldEtpbmQ6IGluZm8ucHJlc2V0S2luZCA/PyAxLFxuXHRcdFx0XHRwcmVzZXRGaWxlTmFtZTogaW5mby5wcmVzZXRGaWxlTmFtZSB8fCAnJyxcblx0XHRcdH07XG5cdFx0XHR3cml0ZVZlcnNpb25BbmREZXNjcmlwdG9yKHdyaXRlciwgJycsICdudWxsJywgZGVzYyk7XG5cdFx0fSBlbHNlIGlmIChpbmZvLnR5cGUgPT09ICdjdXJ2ZXMnKSB7XG5cdFx0XHRjb25zdCBkZXNjOiBDdXJ2ZXNQcmVzZXREZXNjcmlwdG9yID0ge1xuXHRcdFx0XHRWcnNuOiAxLFxuXHRcdFx0XHRjdXJ2ZXNQcmVzZXRLaW5kOiBpbmZvLnByZXNldEtpbmQgPz8gMSxcblx0XHRcdFx0Y3VydmVzUHJlc2V0RmlsZU5hbWU6IGluZm8ucHJlc2V0RmlsZU5hbWUgfHwgJycsXG5cdFx0XHR9O1xuXHRcdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAnbnVsbCcsIGRlc2MpO1xuXHRcdH0gZWxzZSBpZiAoaW5mby50eXBlID09PSAnY2hhbm5lbCBtaXhlcicpIHtcblx0XHRcdGNvbnN0IGRlc2M6IE1peGVyUHJlc2V0RGVzY3JpcHRvciA9IHtcblx0XHRcdFx0VnJzbjogMSxcblx0XHRcdFx0bWl4ZXJQcmVzZXRLaW5kOiBpbmZvLnByZXNldEtpbmQgPz8gMSxcblx0XHRcdFx0bWl4ZXJQcmVzZXRGaWxlTmFtZTogaW5mby5wcmVzZXRGaWxlTmFtZSB8fCAnJyxcblx0XHRcdH07XG5cdFx0XHR3cml0ZVZlcnNpb25BbmREZXNjcmlwdG9yKHdyaXRlciwgJycsICdudWxsJywgZGVzYyk7XG5cdFx0fSBlbHNlIGlmIChpbmZvLnR5cGUgPT09ICdicmlnaHRuZXNzL2NvbnRyYXN0Jykge1xuXHRcdFx0Y29uc3QgZGVzYzogQnJpZ2h0bmVzc0NvbnRyYXN0RGVzY3JpcHRvciA9IHtcblx0XHRcdFx0VnJzbjogMSxcblx0XHRcdFx0QnJnaDogaW5mby5icmlnaHRuZXNzIHx8IDAsXG5cdFx0XHRcdENudHI6IGluZm8uY29udHJhc3QgfHwgMCxcblx0XHRcdFx0bWVhbnM6IGluZm8ubWVhblZhbHVlID8/IDEyNyxcblx0XHRcdFx0J0xhYiAnOiAhIWluZm8ubGFiQ29sb3JPbmx5LFxuXHRcdFx0XHR1c2VMZWdhY3k6ICEhaW5mby51c2VMZWdhY3ksXG5cdFx0XHRcdEF1dG86ICEhaW5mby5hdXRvLFxuXHRcdFx0fTtcblx0XHRcdHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgJ251bGwnLCBkZXNjKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdVbmhhbmRsZWQgQ2dFZCBjYXNlJyk7XG5cdFx0fVxuXHR9LFxuKTtcblxuYWRkSGFuZGxlcihcblx0J1R4dDInLFxuXHRoYXNLZXkoJ2VuZ2luZURhdGEnKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0KSA9PiB7XG5cdFx0Y29uc3QgZGF0YSA9IHJlYWRCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdFx0dGFyZ2V0LmVuZ2luZURhdGEgPSBmcm9tQnl0ZUFycmF5KGRhdGEpO1xuXHRcdC8vIGNvbnN0IGVuZ2luZURhdGEgPSBwYXJzZUVuZ2luZURhdGEoZGF0YSk7XG5cdFx0Ly8gY29uc29sZS5sb2cocmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZW5naW5lRGF0YSwgZmFsc2UsIDk5LCB0cnVlKSk7XG5cdFx0Ly8gcmVxdWlyZSgnZnMnKS53cml0ZUZpbGVTeW5jKCdyZXNvdXJjZXMvZW5naW5lRGF0YTJTaW1wbGUudHh0JywgcmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZW5naW5lRGF0YSwgZmFsc2UsIDk5LCBmYWxzZSksICd1dGY4Jyk7XG5cdFx0Ly8gcmVxdWlyZSgnZnMnKS53cml0ZUZpbGVTeW5jKCd0ZXN0X2RhdGEuanNvbicsIEpTT04uc3RyaW5naWZ5KGVkLCBudWxsLCAyKSwgJ3V0ZjgnKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0Y29uc3QgYnVmZmVyID0gdG9CeXRlQXJyYXkodGFyZ2V0LmVuZ2luZURhdGEhKTtcblx0XHR3cml0ZUJ5dGVzKHdyaXRlciwgYnVmZmVyKTtcblx0fSxcbik7XG5cbmFkZEhhbmRsZXIoXG5cdCdGTXNrJyxcblx0aGFzS2V5KCdmaWx0ZXJNYXNrJyksXG5cdChyZWFkZXIsIHRhcmdldCkgPT4ge1xuXHRcdHRhcmdldC5maWx0ZXJNYXNrID0ge1xuXHRcdFx0Y29sb3JTcGFjZTogcmVhZENvbG9yKHJlYWRlciksXG5cdFx0XHRvcGFjaXR5OiByZWFkVWludDE2KHJlYWRlcikgLyAweGZmLFxuXHRcdH07XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdHdyaXRlQ29sb3Iod3JpdGVyLCB0YXJnZXQuZmlsdGVyTWFzayEuY29sb3JTcGFjZSk7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBjbGFtcCh0YXJnZXQuZmlsdGVyTWFzayEub3BhY2l0eSA/PyAxLCAwLCAxKSAqIDB4ZmYpO1xuXHR9LFxuKTtcblxuaW50ZXJmYWNlIEFydGREZXNjcmlwdG9yIHtcblx0J0NudCAnOiBudW1iZXI7XG5cdGF1dG9FeHBhbmRPZmZzZXQ6IHsgSHJ6bjogbnVtYmVyOyBWcnRjOiBudW1iZXI7IH07XG5cdG9yaWdpbjogeyBIcnpuOiBudW1iZXI7IFZydGM6IG51bWJlcjsgfTtcblx0YXV0b0V4cGFuZEVuYWJsZWQ6IGJvb2xlYW47XG5cdGF1dG9OZXN0RW5hYmxlZDogYm9vbGVhbjtcblx0YXV0b1Bvc2l0aW9uRW5hYmxlZDogYm9vbGVhbjtcblx0c2hyaW5rd3JhcE9uU2F2ZUVuYWJsZWQ6IGJvb2xlYW47XG5cdGRvY0RlZmF1bHROZXdBcnRib2FyZEJhY2tncm91bmRDb2xvcjogRGVzY3JpcHRvckNvbG9yO1xuXHRkb2NEZWZhdWx0TmV3QXJ0Ym9hcmRCYWNrZ3JvdW5kVHlwZTogbnVtYmVyO1xufVxuXG5hZGRIYW5kbGVyKFxuXHQnYXJ0ZCcsIC8vIGRvY3VtZW50LXdpZGUgYXJ0Ym9hcmQgaW5mb1xuXHR0YXJnZXQgPT4gKHRhcmdldCBhcyBQc2QpLmFydGJvYXJkcyAhPT0gdW5kZWZpbmVkLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQpID0+IHtcblx0XHRjb25zdCBkZXNjID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcikgYXMgQXJ0ZERlc2NyaXB0b3I7XG5cdFx0KHRhcmdldCBhcyBQc2QpLmFydGJvYXJkcyA9IHtcblx0XHRcdGNvdW50OiBkZXNjWydDbnQgJ10sXG5cdFx0XHRhdXRvRXhwYW5kT2Zmc2V0OiB7IGhvcml6b250YWw6IGRlc2MuYXV0b0V4cGFuZE9mZnNldC5IcnpuLCB2ZXJ0aWNhbDogZGVzYy5hdXRvRXhwYW5kT2Zmc2V0LlZydGMgfSxcblx0XHRcdG9yaWdpbjogeyBob3Jpem9udGFsOiBkZXNjLm9yaWdpbi5IcnpuLCB2ZXJ0aWNhbDogZGVzYy5vcmlnaW4uVnJ0YyB9LFxuXHRcdFx0YXV0b0V4cGFuZEVuYWJsZWQ6IGRlc2MuYXV0b0V4cGFuZEVuYWJsZWQsXG5cdFx0XHRhdXRvTmVzdEVuYWJsZWQ6IGRlc2MuYXV0b05lc3RFbmFibGVkLFxuXHRcdFx0YXV0b1Bvc2l0aW9uRW5hYmxlZDogZGVzYy5hdXRvUG9zaXRpb25FbmFibGVkLFxuXHRcdFx0c2hyaW5rd3JhcE9uU2F2ZUVuYWJsZWQ6IGRlc2Muc2hyaW5rd3JhcE9uU2F2ZUVuYWJsZWQsXG5cdFx0XHRkb2NEZWZhdWx0TmV3QXJ0Ym9hcmRCYWNrZ3JvdW5kQ29sb3I6IHBhcnNlQ29sb3IoZGVzYy5kb2NEZWZhdWx0TmV3QXJ0Ym9hcmRCYWNrZ3JvdW5kQ29sb3IpLFxuXHRcdFx0ZG9jRGVmYXVsdE5ld0FydGJvYXJkQmFja2dyb3VuZFR5cGU6IGRlc2MuZG9jRGVmYXVsdE5ld0FydGJvYXJkQmFja2dyb3VuZFR5cGUsXG5cdFx0fTtcblxuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGFydGIgPSAodGFyZ2V0IGFzIFBzZCkuYXJ0Ym9hcmRzITtcblx0XHRjb25zdCBkZXNjOiBBcnRkRGVzY3JpcHRvciA9IHtcblx0XHRcdCdDbnQgJzogYXJ0Yi5jb3VudCxcblx0XHRcdGF1dG9FeHBhbmRPZmZzZXQ6IGFydGIuYXV0b0V4cGFuZE9mZnNldCA/IHsgSHJ6bjogYXJ0Yi5hdXRvRXhwYW5kT2Zmc2V0Lmhvcml6b250YWwsIFZydGM6IGFydGIuYXV0b0V4cGFuZE9mZnNldC52ZXJ0aWNhbCB9IDogeyBIcnpuOiAwLCBWcnRjOiAwIH0sXG5cdFx0XHRvcmlnaW46IGFydGIub3JpZ2luID8geyBIcnpuOiBhcnRiLm9yaWdpbi5ob3Jpem9udGFsLCBWcnRjOiBhcnRiLm9yaWdpbi52ZXJ0aWNhbCB9IDogeyBIcnpuOiAwLCBWcnRjOiAwIH0sXG5cdFx0XHRhdXRvRXhwYW5kRW5hYmxlZDogYXJ0Yi5hdXRvRXhwYW5kRW5hYmxlZCA/PyB0cnVlLFxuXHRcdFx0YXV0b05lc3RFbmFibGVkOiBhcnRiLmF1dG9OZXN0RW5hYmxlZCA/PyB0cnVlLFxuXHRcdFx0YXV0b1Bvc2l0aW9uRW5hYmxlZDogYXJ0Yi5hdXRvUG9zaXRpb25FbmFibGVkID8/IHRydWUsXG5cdFx0XHRzaHJpbmt3cmFwT25TYXZlRW5hYmxlZDogYXJ0Yi5zaHJpbmt3cmFwT25TYXZlRW5hYmxlZCA/PyB0cnVlLFxuXHRcdFx0ZG9jRGVmYXVsdE5ld0FydGJvYXJkQmFja2dyb3VuZENvbG9yOiBzZXJpYWxpemVDb2xvcihhcnRiLmRvY0RlZmF1bHROZXdBcnRib2FyZEJhY2tncm91bmRDb2xvciksXG5cdFx0XHRkb2NEZWZhdWx0TmV3QXJ0Ym9hcmRCYWNrZ3JvdW5kVHlwZTogYXJ0Yi5kb2NEZWZhdWx0TmV3QXJ0Ym9hcmRCYWNrZ3JvdW5kVHlwZSA/PyAxLFxuXHRcdH07XG5cdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAnbnVsbCcsIGRlc2MsICdhcnRkJyk7XG5cdH0sXG4pO1xuXG5pbnRlcmZhY2UgRWZmZWN0RGVzY3JpcHRvciBleHRlbmRzIFBhcnRpYWw8RGVzY3JpcHRvckdyYWRpZW50Q29udGVudD4sIFBhcnRpYWw8RGVzY3JpcHRvclBhdHRlcm5Db250ZW50PiB7XG5cdGVuYWI/OiBib29sZWFuO1xuXHRTdHlsOiBzdHJpbmc7XG5cdFBudFQ/OiBzdHJpbmc7XG5cdCdNZCAgJz86IHN0cmluZztcblx0T3BjdD86IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xuXHQnU3ogICc/OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcblx0J0NsciAnPzogRGVzY3JpcHRvckNvbG9yO1xuXHRwcmVzZW50PzogYm9vbGVhbjtcblx0c2hvd0luRGlhbG9nPzogYm9vbGVhbjtcblx0b3ZlcnByaW50PzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIExmeDJEZXNjcmlwdG9yIHtcblx0J1NjbCAnPzogRGVzY3JpcHRvclVuaXRzVmFsdWU7XG5cdG1hc3RlckZYU3dpdGNoPzogYm9vbGVhbjtcblx0RHJTaD86IEVmZmVjdERlc2NyaXB0b3I7XG5cdElyU2g/OiBFZmZlY3REZXNjcmlwdG9yO1xuXHRPckdsPzogRWZmZWN0RGVzY3JpcHRvcjtcblx0SXJHbD86IEVmZmVjdERlc2NyaXB0b3I7XG5cdGViYmw/OiBFZmZlY3REZXNjcmlwdG9yO1xuXHRTb0ZpPzogRWZmZWN0RGVzY3JpcHRvcjtcblx0cGF0dGVybkZpbGw/OiBFZmZlY3REZXNjcmlwdG9yO1xuXHRHckZsPzogRWZmZWN0RGVzY3JpcHRvcjtcblx0Q2hGWD86IEVmZmVjdERlc2NyaXB0b3I7XG5cdEZyRlg/OiBFZmZlY3REZXNjcmlwdG9yO1xufVxuXG5pbnRlcmZhY2UgTG1meERlc2NyaXB0b3Ige1xuXHQnU2NsICc/OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcblx0bWFzdGVyRlhTd2l0Y2g/OiBib29sZWFuO1xuXHRudW1Nb2RpZnlpbmdGWD86IG51bWJlcjtcblx0T3JHbD86IEVmZmVjdERlc2NyaXB0b3I7XG5cdElyR2w/OiBFZmZlY3REZXNjcmlwdG9yO1xuXHRlYmJsPzogRWZmZWN0RGVzY3JpcHRvcjtcblx0Q2hGWD86IEVmZmVjdERlc2NyaXB0b3I7XG5cdGRyb3BTaGFkb3dNdWx0aT86IEVmZmVjdERlc2NyaXB0b3JbXTtcblx0aW5uZXJTaGFkb3dNdWx0aT86IEVmZmVjdERlc2NyaXB0b3JbXTtcblx0c29saWRGaWxsTXVsdGk/OiBFZmZlY3REZXNjcmlwdG9yW107XG5cdGdyYWRpZW50RmlsbE11bHRpPzogRWZmZWN0RGVzY3JpcHRvcltdO1xuXHRmcmFtZUZYTXVsdGk/OiBFZmZlY3REZXNjcmlwdG9yW107XG5cdHBhdHRlcm5GaWxsPzogRWZmZWN0RGVzY3JpcHRvcjsgLy8gPz8/XG59XG5cbmZ1bmN0aW9uIHBhcnNlRnhPYmplY3QoZng6IEVmZmVjdERlc2NyaXB0b3IpIHtcblx0Y29uc3Qgc3Ryb2tlOiBMYXllckVmZmVjdFN0cm9rZSA9IHtcblx0XHRlbmFibGVkOiAhIWZ4LmVuYWIsXG5cdFx0cG9zaXRpb246IEZTdGwuZGVjb2RlKGZ4LlN0eWwpLFxuXHRcdGZpbGxUeXBlOiBGckZsLmRlY29kZShmeC5QbnRUISksXG5cdFx0YmxlbmRNb2RlOiBCbG5NLmRlY29kZShmeFsnTWQgICddISksXG5cdFx0b3BhY2l0eTogcGFyc2VQZXJjZW50KGZ4Lk9wY3QpLFxuXHRcdHNpemU6IHBhcnNlVW5pdHMoZnhbJ1N6ICAnXSEpLFxuXHR9O1xuXG5cdGlmIChmeC5wcmVzZW50ICE9PSB1bmRlZmluZWQpIHN0cm9rZS5wcmVzZW50ID0gZngucHJlc2VudDtcblx0aWYgKGZ4LnNob3dJbkRpYWxvZyAhPT0gdW5kZWZpbmVkKSBzdHJva2Uuc2hvd0luRGlhbG9nID0gZnguc2hvd0luRGlhbG9nO1xuXHRpZiAoZngub3ZlcnByaW50ICE9PSB1bmRlZmluZWQpIHN0cm9rZS5vdmVycHJpbnQgPSBmeC5vdmVycHJpbnQ7XG5cdGlmIChmeFsnQ2xyICddKSBzdHJva2UuY29sb3IgPSBwYXJzZUNvbG9yKGZ4WydDbHIgJ10pO1xuXHRpZiAoZnguR3JhZCkgc3Ryb2tlLmdyYWRpZW50ID0gcGFyc2VHcmFkaWVudENvbnRlbnQoZnggYXMgYW55KTtcblx0aWYgKGZ4LlB0cm4pIHN0cm9rZS5wYXR0ZXJuID0gcGFyc2VQYXR0ZXJuQ29udGVudChmeCBhcyBhbnkpO1xuXG5cdHJldHVybiBzdHJva2U7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZUZ4T2JqZWN0KHN0cm9rZTogTGF5ZXJFZmZlY3RTdHJva2UpIHtcblx0bGV0IEZyRlg6IEVmZmVjdERlc2NyaXB0b3IgPSB7fSBhcyBhbnk7XG5cdEZyRlguZW5hYiA9ICEhc3Ryb2tlLmVuYWJsZWQ7XG5cdGlmIChzdHJva2UucHJlc2VudCAhPT0gdW5kZWZpbmVkKSBGckZYLnByZXNlbnQgPSAhIXN0cm9rZS5wcmVzZW50O1xuXHRpZiAoc3Ryb2tlLnNob3dJbkRpYWxvZyAhPT0gdW5kZWZpbmVkKSBGckZYLnNob3dJbkRpYWxvZyA9ICEhc3Ryb2tlLnNob3dJbkRpYWxvZztcblx0RnJGWC5TdHlsID0gRlN0bC5lbmNvZGUoc3Ryb2tlLnBvc2l0aW9uKTtcblx0RnJGWC5QbnRUID0gRnJGbC5lbmNvZGUoc3Ryb2tlLmZpbGxUeXBlKTtcblx0RnJGWFsnTWQgICddID0gQmxuTS5lbmNvZGUoc3Ryb2tlLmJsZW5kTW9kZSk7XG5cdEZyRlguT3BjdCA9IHVuaXRzUGVyY2VudChzdHJva2Uub3BhY2l0eSk7XG5cdEZyRlhbJ1N6ICAnXSA9IHVuaXRzVmFsdWUoc3Ryb2tlLnNpemUsICdzaXplJyk7XG5cdGlmIChzdHJva2UuY29sb3IpIEZyRlhbJ0NsciAnXSA9IHNlcmlhbGl6ZUNvbG9yKHN0cm9rZS5jb2xvcik7XG5cdGlmIChzdHJva2UuZ3JhZGllbnQpIEZyRlggPSB7IC4uLkZyRlgsIC4uLnNlcmlhbGl6ZUdyYWRpZW50Q29udGVudChzdHJva2UuZ3JhZGllbnQpIH07XG5cdGlmIChzdHJva2UucGF0dGVybikgRnJGWCA9IHsgLi4uRnJGWCwgLi4uc2VyaWFsaXplUGF0dGVybkNvbnRlbnQoc3Ryb2tlLnBhdHRlcm4pIH07XG5cdGlmIChzdHJva2Uub3ZlcnByaW50ICE9PSB1bmRlZmluZWQpIEZyRlgub3ZlcnByaW50ID0gISFzdHJva2Uub3ZlcnByaW50O1xuXHRyZXR1cm4gRnJGWDtcbn1cblxuZnVuY3Rpb24gcGFyc2VFZmZlY3RzKGluZm86IExmeDJEZXNjcmlwdG9yICYgTG1meERlc2NyaXB0b3IsIGxvZzogYm9vbGVhbikge1xuXHRjb25zdCBlZmZlY3RzOiBMYXllckVmZmVjdHNJbmZvID0ge307XG5cdGlmICghaW5mby5tYXN0ZXJGWFN3aXRjaCkgZWZmZWN0cy5kaXNhYmxlZCA9IHRydWU7XG5cdGlmIChpbmZvWydTY2wgJ10pIGVmZmVjdHMuc2NhbGUgPSBwYXJzZVBlcmNlbnQoaW5mb1snU2NsICddKTtcblx0aWYgKGluZm8uRHJTaCkgZWZmZWN0cy5kcm9wU2hhZG93ID0gW3BhcnNlRWZmZWN0T2JqZWN0KGluZm8uRHJTaCwgbG9nKV07XG5cdGlmIChpbmZvLmRyb3BTaGFkb3dNdWx0aSkgZWZmZWN0cy5kcm9wU2hhZG93ID0gaW5mby5kcm9wU2hhZG93TXVsdGkubWFwKGkgPT4gcGFyc2VFZmZlY3RPYmplY3QoaSwgbG9nKSk7XG5cdGlmIChpbmZvLklyU2gpIGVmZmVjdHMuaW5uZXJTaGFkb3cgPSBbcGFyc2VFZmZlY3RPYmplY3QoaW5mby5JclNoLCBsb2cpXTtcblx0aWYgKGluZm8uaW5uZXJTaGFkb3dNdWx0aSkgZWZmZWN0cy5pbm5lclNoYWRvdyA9IGluZm8uaW5uZXJTaGFkb3dNdWx0aS5tYXAoaSA9PiBwYXJzZUVmZmVjdE9iamVjdChpLCBsb2cpKTtcblx0aWYgKGluZm8uT3JHbCkgZWZmZWN0cy5vdXRlckdsb3cgPSBwYXJzZUVmZmVjdE9iamVjdChpbmZvLk9yR2wsIGxvZyk7XG5cdGlmIChpbmZvLklyR2wpIGVmZmVjdHMuaW5uZXJHbG93ID0gcGFyc2VFZmZlY3RPYmplY3QoaW5mby5JckdsLCBsb2cpO1xuXHRpZiAoaW5mby5lYmJsKSBlZmZlY3RzLmJldmVsID0gcGFyc2VFZmZlY3RPYmplY3QoaW5mby5lYmJsLCBsb2cpO1xuXHRpZiAoaW5mby5Tb0ZpKSBlZmZlY3RzLnNvbGlkRmlsbCA9IFtwYXJzZUVmZmVjdE9iamVjdChpbmZvLlNvRmksIGxvZyldO1xuXHRpZiAoaW5mby5zb2xpZEZpbGxNdWx0aSkgZWZmZWN0cy5zb2xpZEZpbGwgPSBpbmZvLnNvbGlkRmlsbE11bHRpLm1hcChpID0+IHBhcnNlRWZmZWN0T2JqZWN0KGksIGxvZykpO1xuXHRpZiAoaW5mby5wYXR0ZXJuRmlsbCkgZWZmZWN0cy5wYXR0ZXJuT3ZlcmxheSA9IHBhcnNlRWZmZWN0T2JqZWN0KGluZm8ucGF0dGVybkZpbGwsIGxvZyk7XG5cdGlmIChpbmZvLkdyRmwpIGVmZmVjdHMuZ3JhZGllbnRPdmVybGF5ID0gW3BhcnNlRWZmZWN0T2JqZWN0KGluZm8uR3JGbCwgbG9nKV07XG5cdGlmIChpbmZvLmdyYWRpZW50RmlsbE11bHRpKSBlZmZlY3RzLmdyYWRpZW50T3ZlcmxheSA9IGluZm8uZ3JhZGllbnRGaWxsTXVsdGkubWFwKGkgPT4gcGFyc2VFZmZlY3RPYmplY3QoaSwgbG9nKSk7XG5cdGlmIChpbmZvLkNoRlgpIGVmZmVjdHMuc2F0aW4gPSBwYXJzZUVmZmVjdE9iamVjdChpbmZvLkNoRlgsIGxvZyk7XG5cdGlmIChpbmZvLkZyRlgpIGVmZmVjdHMuc3Ryb2tlID0gW3BhcnNlRnhPYmplY3QoaW5mby5GckZYKV07XG5cdGlmIChpbmZvLmZyYW1lRlhNdWx0aSkgZWZmZWN0cy5zdHJva2UgPSBpbmZvLmZyYW1lRlhNdWx0aS5tYXAoaSA9PiBwYXJzZUZ4T2JqZWN0KGkpKTtcblx0cmV0dXJuIGVmZmVjdHM7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZUVmZmVjdHMoZTogTGF5ZXJFZmZlY3RzSW5mbywgbG9nOiBib29sZWFuLCBtdWx0aTogYm9vbGVhbikge1xuXHRjb25zdCBpbmZvOiBMZngyRGVzY3JpcHRvciAmIExtZnhEZXNjcmlwdG9yID0gbXVsdGkgPyB7XG5cdFx0J1NjbCAnOiB1bml0c1BlcmNlbnQoZS5zY2FsZSA/PyAxKSxcblx0XHRtYXN0ZXJGWFN3aXRjaDogIWUuZGlzYWJsZWQsXG5cdH0gOiB7XG5cdFx0bWFzdGVyRlhTd2l0Y2g6ICFlLmRpc2FibGVkLFxuXHRcdCdTY2wgJzogdW5pdHNQZXJjZW50KGUuc2NhbGUgPz8gMSksXG5cdH07XG5cblx0Y29uc3QgYXJyYXlLZXlzOiAoa2V5b2YgTGF5ZXJFZmZlY3RzSW5mbylbXSA9IFsnZHJvcFNoYWRvdycsICdpbm5lclNoYWRvdycsICdzb2xpZEZpbGwnLCAnZ3JhZGllbnRPdmVybGF5JywgJ3N0cm9rZSddO1xuXHRmb3IgKGNvbnN0IGtleSBvZiBhcnJheUtleXMpIHtcblx0XHRpZiAoZVtrZXldICYmICFBcnJheS5pc0FycmF5KGVba2V5XSkpIHRocm93IG5ldyBFcnJvcihgJHtrZXl9IHNob3VsZCBiZSBhbiBhcnJheWApO1xuXHR9XG5cblx0aWYgKGUuZHJvcFNoYWRvdz8uWzBdICYmICFtdWx0aSkgaW5mby5EclNoID0gc2VyaWFsaXplRWZmZWN0T2JqZWN0KGUuZHJvcFNoYWRvd1swXSwgJ2Ryb3BTaGFkb3cnLCBsb2cpO1xuXHRpZiAoZS5kcm9wU2hhZG93Py5bMF0gJiYgbXVsdGkpIGluZm8uZHJvcFNoYWRvd011bHRpID0gZS5kcm9wU2hhZG93Lm1hcChpID0+IHNlcmlhbGl6ZUVmZmVjdE9iamVjdChpLCAnZHJvcFNoYWRvdycsIGxvZykpO1xuXHRpZiAoZS5pbm5lclNoYWRvdz8uWzBdICYmICFtdWx0aSkgaW5mby5JclNoID0gc2VyaWFsaXplRWZmZWN0T2JqZWN0KGUuaW5uZXJTaGFkb3dbMF0sICdpbm5lclNoYWRvdycsIGxvZyk7XG5cdGlmIChlLmlubmVyU2hhZG93Py5bMF0gJiYgbXVsdGkpIGluZm8uaW5uZXJTaGFkb3dNdWx0aSA9IGUuaW5uZXJTaGFkb3cubWFwKGkgPT4gc2VyaWFsaXplRWZmZWN0T2JqZWN0KGksICdpbm5lclNoYWRvdycsIGxvZykpO1xuXHRpZiAoZS5vdXRlckdsb3cpIGluZm8uT3JHbCA9IHNlcmlhbGl6ZUVmZmVjdE9iamVjdChlLm91dGVyR2xvdywgJ291dGVyR2xvdycsIGxvZyk7XG5cdGlmIChlLnNvbGlkRmlsbD8uWzBdICYmIG11bHRpKSBpbmZvLnNvbGlkRmlsbE11bHRpID0gZS5zb2xpZEZpbGwubWFwKGkgPT4gc2VyaWFsaXplRWZmZWN0T2JqZWN0KGksICdzb2xpZEZpbGwnLCBsb2cpKTtcblx0aWYgKGUuZ3JhZGllbnRPdmVybGF5Py5bMF0gJiYgbXVsdGkpIGluZm8uZ3JhZGllbnRGaWxsTXVsdGkgPSBlLmdyYWRpZW50T3ZlcmxheS5tYXAoaSA9PiBzZXJpYWxpemVFZmZlY3RPYmplY3QoaSwgJ2dyYWRpZW50T3ZlcmxheScsIGxvZykpO1xuXHRpZiAoZS5zdHJva2U/LlswXSAmJiBtdWx0aSkgaW5mby5mcmFtZUZYTXVsdGkgPSBlLnN0cm9rZS5tYXAoaSA9PiBzZXJpYWxpemVGeE9iamVjdChpKSk7XG5cdGlmIChlLmlubmVyR2xvdykgaW5mby5JckdsID0gc2VyaWFsaXplRWZmZWN0T2JqZWN0KGUuaW5uZXJHbG93LCAnaW5uZXJHbG93JywgbG9nKTtcblx0aWYgKGUuYmV2ZWwpIGluZm8uZWJibCA9IHNlcmlhbGl6ZUVmZmVjdE9iamVjdChlLmJldmVsLCAnYmV2ZWwnLCBsb2cpO1xuXHRpZiAoZS5zb2xpZEZpbGw/LlswXSAmJiAhbXVsdGkpIGluZm8uU29GaSA9IHNlcmlhbGl6ZUVmZmVjdE9iamVjdChlLnNvbGlkRmlsbFswXSwgJ3NvbGlkRmlsbCcsIGxvZyk7XG5cdGlmIChlLnBhdHRlcm5PdmVybGF5KSBpbmZvLnBhdHRlcm5GaWxsID0gc2VyaWFsaXplRWZmZWN0T2JqZWN0KGUucGF0dGVybk92ZXJsYXksICdwYXR0ZXJuT3ZlcmxheScsIGxvZyk7XG5cdGlmIChlLmdyYWRpZW50T3ZlcmxheT8uWzBdICYmICFtdWx0aSkgaW5mby5HckZsID0gc2VyaWFsaXplRWZmZWN0T2JqZWN0KGUuZ3JhZGllbnRPdmVybGF5WzBdLCAnZ3JhZGllbnRPdmVybGF5JywgbG9nKTtcblx0aWYgKGUuc2F0aW4pIGluZm8uQ2hGWCA9IHNlcmlhbGl6ZUVmZmVjdE9iamVjdChlLnNhdGluLCAnc2F0aW4nLCBsb2cpO1xuXHRpZiAoZS5zdHJva2U/LlswXSAmJiAhbXVsdGkpIGluZm8uRnJGWCA9IHNlcmlhbGl6ZUZ4T2JqZWN0KGUuc3Ryb2tlPy5bMF0pO1xuXG5cdGlmIChtdWx0aSkge1xuXHRcdGluZm8ubnVtTW9kaWZ5aW5nRlggPSAwO1xuXG5cdFx0Zm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZSkpIHtcblx0XHRcdGNvbnN0IHZhbHVlID0gKGUgYXMgYW55KVtrZXldO1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRcdGZvciAoY29uc3QgZWZmZWN0IG9mIHZhbHVlKSB7XG5cdFx0XHRcdFx0aWYgKGVmZmVjdC5lbmFibGVkKSBpbmZvLm51bU1vZGlmeWluZ0ZYKys7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gaW5mbztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc011bHRpRWZmZWN0cyhlZmZlY3RzOiBMYXllckVmZmVjdHNJbmZvKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhlZmZlY3RzKS5tYXAoa2V5ID0+IChlZmZlY3RzIGFzIGFueSlba2V5XSkuc29tZSh2ID0+IEFycmF5LmlzQXJyYXkodikgJiYgdi5sZW5ndGggPiAxKTtcbn1cblxuYWRkSGFuZGxlcihcblx0J2xmeDInLFxuXHR0YXJnZXQgPT4gdGFyZ2V0LmVmZmVjdHMgIT09IHVuZGVmaW5lZCAmJiAhaGFzTXVsdGlFZmZlY3RzKHRhcmdldC5lZmZlY3RzKSxcblx0KHJlYWRlciwgdGFyZ2V0LCBsZWZ0LCBfLCBvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3QgdmVyc2lvbiA9IHJlYWRVaW50MzIocmVhZGVyKTtcblx0XHRpZiAodmVyc2lvbiAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGxmeDIgdmVyc2lvbmApO1xuXG5cdFx0Y29uc3QgZGVzYzogTGZ4MkRlc2NyaXB0b3IgPSByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyKTtcblx0XHQvLyBjb25zb2xlLmxvZyhyZXF1aXJlKCd1dGlsJykuaW5zcGVjdChkZXNjLCBmYWxzZSwgOTksIHRydWUpKTtcblxuXHRcdC8vIFRPRE86IGRvbid0IGRpc2NhcmQgaWYgd2UgZ290IGl0IGZyb20gbG1meFxuXHRcdC8vIGRpc2NhcmQgaWYgcmVhZCBpbiAnbHJGWCcgc2VjdGlvblxuXHRcdHRhcmdldC5lZmZlY3RzID0gcGFyc2VFZmZlY3RzKGRlc2MsICEhb3B0aW9ucy5sb2dNaXNzaW5nRmVhdHVyZXMpO1xuXG5cdFx0c2tpcEJ5dGVzKHJlYWRlciwgbGVmdCgpKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0LCBfLCBvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3QgZGVzYyA9IHNlcmlhbGl6ZUVmZmVjdHModGFyZ2V0LmVmZmVjdHMhLCAhIW9wdGlvbnMubG9nTWlzc2luZ0ZlYXR1cmVzLCBmYWxzZSk7XG5cdFx0Ly8gY29uc29sZS5sb2cocmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZGVzYywgZmFsc2UsIDk5LCB0cnVlKSk7XG5cblx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIDApOyAvLyB2ZXJzaW9uXG5cdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAnbnVsbCcsIGRlc2MpO1xuXHR9LFxuKTtcblxuaW50ZXJmYWNlIENpbmZEZXNjcmlwdG9yIHtcblx0VnJzbjogeyBtYWpvcjogbnVtYmVyOyBtaW5vcjogbnVtYmVyOyBmaXg6IG51bWJlcjsgfTtcblx0cHNWZXJzaW9uPzogeyBtYWpvcjogbnVtYmVyOyBtaW5vcjogbnVtYmVyOyBmaXg6IG51bWJlcjsgfTtcblx0ZGVzY3JpcHRpb246IHN0cmluZztcblx0cmVhc29uOiBzdHJpbmc7XG5cdEVuZ246IHN0cmluZzsgLy8gJ0VuZ24uY29tcENvcmUnO1xuXHRlbmFibGVDb21wQ29yZTogc3RyaW5nOyAvLyAnZW5hYmxlLmZlYXR1cmUnO1xuXHRlbmFibGVDb21wQ29yZUdQVTogc3RyaW5nOyAvLyAnZW5hYmxlLmZlYXR1cmUnO1xuXHRlbmFibGVDb21wQ29yZVRocmVhZHM/OiBzdHJpbmc7IC8vICdlbmFibGUuZmVhdHVyZSc7XG5cdGNvbXBDb3JlU3VwcG9ydDogc3RyaW5nOyAvLyAncmVhc29uLnN1cHBvcnRlZCc7XG5cdGNvbXBDb3JlR1BVU3VwcG9ydDogc3RyaW5nOyAvLyAncmVhc29uLmZlYXR1cmVEaXNhYmxlZCc7XG59XG5cbmFkZEhhbmRsZXIoXG5cdCdjaW5mJyxcblx0aGFzS2V5KCdjb21wb3NpdG9yVXNlZCcpLFxuXHQocmVhZGVyLCB0YXJnZXQsIGxlZnQpID0+IHtcblx0XHRjb25zdCBkZXNjID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcikgYXMgQ2luZkRlc2NyaXB0b3I7XG5cdFx0Ly8gY29uc29sZS5sb2cocmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZGVzYywgZmFsc2UsIDk5LCB0cnVlKSk7XG5cblx0XHR0YXJnZXQuY29tcG9zaXRvclVzZWQgPSB7XG5cdFx0XHRkZXNjcmlwdGlvbjogZGVzYy5kZXNjcmlwdGlvbixcblx0XHRcdHJlYXNvbjogZGVzYy5yZWFzb24sXG5cdFx0XHRlbmdpbmU6IGRlc2MuRW5nbi5zcGxpdCgnLicpWzFdLFxuXHRcdFx0ZW5hYmxlQ29tcENvcmU6IGRlc2MuZW5hYmxlQ29tcENvcmUuc3BsaXQoJy4nKVsxXSxcblx0XHRcdGVuYWJsZUNvbXBDb3JlR1BVOiBkZXNjLmVuYWJsZUNvbXBDb3JlR1BVLnNwbGl0KCcuJylbMV0sXG5cdFx0XHRjb21wQ29yZVN1cHBvcnQ6IGRlc2MuY29tcENvcmVTdXBwb3J0LnNwbGl0KCcuJylbMV0sXG5cdFx0XHRjb21wQ29yZUdQVVN1cHBvcnQ6IGRlc2MuY29tcENvcmVHUFVTdXBwb3J0LnNwbGl0KCcuJylbMV0sXG5cdFx0fTtcblxuXHRcdHNraXBCeXRlcyhyZWFkZXIsIGxlZnQoKSk7XG5cdH0sXG5cdCh3cml0ZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGNpbmYgPSB0YXJnZXQuY29tcG9zaXRvclVzZWQhO1xuXHRcdGNvbnN0IGRlc2M6IENpbmZEZXNjcmlwdG9yID0ge1xuXHRcdFx0VnJzbjogeyBtYWpvcjogMSwgbWlub3I6IDAsIGZpeDogMCB9LCAvLyBURU1QXG5cdFx0XHQvLyBwc1ZlcnNpb246IHsgbWFqb3I6IDIyLCBtaW5vcjogMywgZml4OiAxIH0sIC8vIFRFU1RJTkdcblx0XHRcdGRlc2NyaXB0aW9uOiBjaW5mLmRlc2NyaXB0aW9uLFxuXHRcdFx0cmVhc29uOiBjaW5mLnJlYXNvbixcblx0XHRcdEVuZ246IGBFbmduLiR7Y2luZi5lbmdpbmV9YCxcblx0XHRcdGVuYWJsZUNvbXBDb3JlOiBgZW5hYmxlLiR7Y2luZi5lbmFibGVDb21wQ29yZX1gLFxuXHRcdFx0ZW5hYmxlQ29tcENvcmVHUFU6IGBlbmFibGUuJHtjaW5mLmVuYWJsZUNvbXBDb3JlR1BVfWAsXG5cdFx0XHQvLyBlbmFibGVDb21wQ29yZVRocmVhZHM6IGBlbmFibGUuZmVhdHVyZWAsIC8vIFRFU1RJTkdcblx0XHRcdGNvbXBDb3JlU3VwcG9ydDogYHJlYXNvbi4ke2NpbmYuY29tcENvcmVTdXBwb3J0fWAsXG5cdFx0XHRjb21wQ29yZUdQVVN1cHBvcnQ6IGByZWFzb24uJHtjaW5mLmNvbXBDb3JlR1BVU3VwcG9ydH1gLFxuXHRcdH07XG5cdFx0d3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXIsICcnLCAnbnVsbCcsIGRlc2MpO1xuXHR9LFxuKTtcblxuLy8gZXh0ZW5zaW9uIHNldHRpbmdzID8sIGlnbm9yZSBpdFxuYWRkSGFuZGxlcihcblx0J2V4dG4nLFxuXHR0YXJnZXQgPT4gKHRhcmdldCBhcyBhbnkpLl9leHRuICE9PSB1bmRlZmluZWQsXG5cdChyZWFkZXIsIHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGRlc2M6IEV4dGVuc2lvbkRlc2MgPSByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyKTtcblx0XHQvLyBjb25zb2xlLmxvZyhyZXF1aXJlKCd1dGlsJykuaW5zcGVjdChkZXNjLCBmYWxzZSwgOTksIHRydWUpKTtcblxuXHRcdGlmIChNT0NLX0hBTkRMRVJTKSAodGFyZ2V0IGFzIGFueSkuX2V4dG4gPSBkZXNjO1xuXHR9LFxuXHQod3JpdGVyLCB0YXJnZXQpID0+IHtcblx0XHQvLyBUT0RPOiBuZWVkIHRvIGFkZCBjb3JyZWN0IHR5cGVzIGZvciBkZXNjIGZpZWxkcyAocmVzb3VyY2VzL3NyYy5wc2QpXG5cdFx0aWYgKE1PQ0tfSEFORExFUlMpIHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyLCAnJywgJ251bGwnLCAodGFyZ2V0IGFzIGFueSkuX2V4dG4pO1xuXHR9LFxuKTtcblxuYWRkSGFuZGxlcihcblx0J2lPcGEnLFxuXHRoYXNLZXkoJ2ZpbGxPcGFjaXR5JyksXG5cdChyZWFkZXIsIHRhcmdldCkgPT4ge1xuXHRcdHRhcmdldC5maWxsT3BhY2l0eSA9IHJlYWRVaW50OChyZWFkZXIpIC8gMHhmZjtcblx0XHRza2lwQnl0ZXMocmVhZGVyLCAzKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0d3JpdGVVaW50OCh3cml0ZXIsIHRhcmdldC5maWxsT3BhY2l0eSEgKiAweGZmKTtcblx0XHR3cml0ZVplcm9zKHdyaXRlciwgMyk7XG5cdH0sXG4pO1xuXG5hZGRIYW5kbGVyKFxuXHQndHNseScsXG5cdGhhc0tleSgndHJhbnNwYXJlbmN5U2hhcGVzTGF5ZXInKSxcblx0KHJlYWRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0dGFyZ2V0LnRyYW5zcGFyZW5jeVNoYXBlc0xheWVyID0gISFyZWFkVWludDgocmVhZGVyKTtcblx0XHRza2lwQnl0ZXMocmVhZGVyLCAzKTtcblx0fSxcblx0KHdyaXRlciwgdGFyZ2V0KSA9PiB7XG5cdFx0d3JpdGVVaW50OCh3cml0ZXIsIHRhcmdldC50cmFuc3BhcmVuY3lTaGFwZXNMYXllciA/IDEgOiAwKTtcblx0XHR3cml0ZVplcm9zKHdyaXRlciwgMyk7XG5cdH0sXG4pO1xuXG4vLyBkZXNjcmlwdG9yIGhlbHBlcnNcblxuZnVuY3Rpb24gcGFyc2VHcmFkaWVudChncmFkOiBEZXNjaXB0b3JHcmFkaWVudCk6IEVmZmVjdFNvbGlkR3JhZGllbnQgfCBFZmZlY3ROb2lzZUdyYWRpZW50IHtcblx0aWYgKGdyYWQuR3JkRiA9PT0gJ0dyZEYuQ3N0UycpIHtcblx0XHRjb25zdCBzYW1wbGVzOiBudW1iZXIgPSBncmFkLkludHIgfHwgNDA5NjtcblxuXHRcdHJldHVybiB7XG5cdFx0XHR0eXBlOiAnc29saWQnLFxuXHRcdFx0bmFtZTogZ3JhZFsnTm0gICddLFxuXHRcdFx0c21vb3RobmVzczogZ3JhZC5JbnRyIC8gNDA5Nixcblx0XHRcdGNvbG9yU3RvcHM6IGdyYWQuQ2xycy5tYXAocyA9PiAoe1xuXHRcdFx0XHRjb2xvcjogcGFyc2VDb2xvcihzWydDbHIgJ10pLFxuXHRcdFx0XHRsb2NhdGlvbjogcy5MY3RuIC8gc2FtcGxlcyxcblx0XHRcdFx0bWlkcG9pbnQ6IHMuTWRwbiAvIDEwMCxcblx0XHRcdH0pKSxcblx0XHRcdG9wYWNpdHlTdG9wczogZ3JhZC5Ucm5zLm1hcChzID0+ICh7XG5cdFx0XHRcdG9wYWNpdHk6IHBhcnNlUGVyY2VudChzLk9wY3QpLFxuXHRcdFx0XHRsb2NhdGlvbjogcy5MY3RuIC8gc2FtcGxlcyxcblx0XHRcdFx0bWlkcG9pbnQ6IHMuTWRwbiAvIDEwMCxcblx0XHRcdH0pKSxcblx0XHR9O1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiB7XG5cdFx0XHR0eXBlOiAnbm9pc2UnLFxuXHRcdFx0bmFtZTogZ3JhZFsnTm0gICddLFxuXHRcdFx0cm91Z2huZXNzOiBncmFkLlNtdGggLyA0MDk2LFxuXHRcdFx0Y29sb3JNb2RlbDogQ2xyUy5kZWNvZGUoZ3JhZC5DbHJTKSxcblx0XHRcdHJhbmRvbVNlZWQ6IGdyYWQuUm5kUyxcblx0XHRcdHJlc3RyaWN0Q29sb3JzOiAhIWdyYWQuVmN0Qyxcblx0XHRcdGFkZFRyYW5zcGFyZW5jeTogISFncmFkLlNoVHIsXG5cdFx0XHRtaW46IGdyYWRbJ01ubSAnXS5tYXAoeCA9PiB4IC8gMTAwKSxcblx0XHRcdG1heDogZ3JhZFsnTXhtICddLm1hcCh4ID0+IHggLyAxMDApLFxuXHRcdH07XG5cdH1cbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplR3JhZGllbnQoZ3JhZDogRWZmZWN0U29saWRHcmFkaWVudCB8IEVmZmVjdE5vaXNlR3JhZGllbnQpOiBEZXNjaXB0b3JHcmFkaWVudCB7XG5cdGlmIChncmFkLnR5cGUgPT09ICdzb2xpZCcpIHtcblx0XHRjb25zdCBzYW1wbGVzID0gTWF0aC5yb3VuZCgoZ3JhZC5zbW9vdGhuZXNzID8/IDEpICogNDA5Nik7XG5cdFx0cmV0dXJuIHtcblx0XHRcdCdObSAgJzogZ3JhZC5uYW1lIHx8ICcnLFxuXHRcdFx0R3JkRjogJ0dyZEYuQ3N0UycsXG5cdFx0XHRJbnRyOiBzYW1wbGVzLFxuXHRcdFx0Q2xyczogZ3JhZC5jb2xvclN0b3BzLm1hcChzID0+ICh7XG5cdFx0XHRcdCdDbHIgJzogc2VyaWFsaXplQ29sb3Iocy5jb2xvciksXG5cdFx0XHRcdFR5cGU6ICdDbHJ5LlVzclMnLFxuXHRcdFx0XHRMY3RuOiBNYXRoLnJvdW5kKHMubG9jYXRpb24gKiBzYW1wbGVzKSxcblx0XHRcdFx0TWRwbjogTWF0aC5yb3VuZCgocy5taWRwb2ludCA/PyAwLjUpICogMTAwKSxcblx0XHRcdH0pKSxcblx0XHRcdFRybnM6IGdyYWQub3BhY2l0eVN0b3BzLm1hcChzID0+ICh7XG5cdFx0XHRcdE9wY3Q6IHVuaXRzUGVyY2VudChzLm9wYWNpdHkpLFxuXHRcdFx0XHRMY3RuOiBNYXRoLnJvdW5kKHMubG9jYXRpb24gKiBzYW1wbGVzKSxcblx0XHRcdFx0TWRwbjogTWF0aC5yb3VuZCgocy5taWRwb2ludCA/PyAwLjUpICogMTAwKSxcblx0XHRcdH0pKSxcblx0XHR9O1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiB7XG5cdFx0XHRHcmRGOiAnR3JkRi5DbE5zJyxcblx0XHRcdCdObSAgJzogZ3JhZC5uYW1lIHx8ICcnLFxuXHRcdFx0U2hUcjogISFncmFkLmFkZFRyYW5zcGFyZW5jeSxcblx0XHRcdFZjdEM6ICEhZ3JhZC5yZXN0cmljdENvbG9ycyxcblx0XHRcdENsclM6IENsclMuZW5jb2RlKGdyYWQuY29sb3JNb2RlbCksXG5cdFx0XHRSbmRTOiBncmFkLnJhbmRvbVNlZWQgfHwgMCxcblx0XHRcdFNtdGg6IE1hdGgucm91bmQoKGdyYWQucm91Z2huZXNzID8/IDEpICogNDA5NiksXG5cdFx0XHQnTW5tICc6IChncmFkLm1pbiB8fCBbMCwgMCwgMCwgMF0pLm1hcCh4ID0+IHggKiAxMDApLFxuXHRcdFx0J014bSAnOiAoZ3JhZC5tYXggfHwgWzEsIDEsIDEsIDFdKS5tYXAoeCA9PiB4ICogMTAwKSxcblx0XHR9O1xuXHR9XG59XG5cbmZ1bmN0aW9uIHBhcnNlR3JhZGllbnRDb250ZW50KGRlc2NyaXB0b3I6IERlc2NyaXB0b3JHcmFkaWVudENvbnRlbnQpIHtcblx0Y29uc3QgcmVzdWx0ID0gcGFyc2VHcmFkaWVudChkZXNjcmlwdG9yLkdyYWQpIGFzIChFZmZlY3RTb2xpZEdyYWRpZW50IHwgRWZmZWN0Tm9pc2VHcmFkaWVudCkgJiBFeHRyYUdyYWRpZW50SW5mbztcblx0cmVzdWx0LnN0eWxlID0gR3JkVC5kZWNvZGUoZGVzY3JpcHRvci5UeXBlKTtcblx0aWYgKGRlc2NyaXB0b3IuRHRociAhPT0gdW5kZWZpbmVkKSByZXN1bHQuZGl0aGVyID0gZGVzY3JpcHRvci5EdGhyO1xuXHRpZiAoZGVzY3JpcHRvci5SdnJzICE9PSB1bmRlZmluZWQpIHJlc3VsdC5yZXZlcnNlID0gZGVzY3JpcHRvci5SdnJzO1xuXHRpZiAoZGVzY3JpcHRvci5BbmdsICE9PSB1bmRlZmluZWQpIHJlc3VsdC5hbmdsZSA9IHBhcnNlQW5nbGUoZGVzY3JpcHRvci5BbmdsKTtcblx0aWYgKGRlc2NyaXB0b3JbJ1NjbCAnXSAhPT0gdW5kZWZpbmVkKSByZXN1bHQuc2NhbGUgPSBwYXJzZVBlcmNlbnQoZGVzY3JpcHRvclsnU2NsICddKTtcblx0aWYgKGRlc2NyaXB0b3IuQWxnbiAhPT0gdW5kZWZpbmVkKSByZXN1bHQuYWxpZ24gPSBkZXNjcmlwdG9yLkFsZ247XG5cdGlmIChkZXNjcmlwdG9yLk9mc3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJlc3VsdC5vZmZzZXQgPSB7XG5cdFx0XHR4OiBwYXJzZVBlcmNlbnQoZGVzY3JpcHRvci5PZnN0Lkhyem4pLFxuXHRcdFx0eTogcGFyc2VQZXJjZW50KGRlc2NyaXB0b3IuT2ZzdC5WcnRjKVxuXHRcdH07XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gcGFyc2VQYXR0ZXJuQ29udGVudChkZXNjcmlwdG9yOiBEZXNjcmlwdG9yUGF0dGVybkNvbnRlbnQpIHtcblx0Y29uc3QgcmVzdWx0OiBFZmZlY3RQYXR0ZXJuICYgRXh0cmFQYXR0ZXJuSW5mbyA9IHtcblx0XHRuYW1lOiBkZXNjcmlwdG9yLlB0cm5bJ05tICAnXSxcblx0XHRpZDogZGVzY3JpcHRvci5QdHJuLklkbnQsXG5cdH07XG5cdGlmIChkZXNjcmlwdG9yLkxua2QgIT09IHVuZGVmaW5lZCkgcmVzdWx0LmxpbmtlZCA9IGRlc2NyaXB0b3IuTG5rZDtcblx0aWYgKGRlc2NyaXB0b3IucGhhc2UgIT09IHVuZGVmaW5lZCkgcmVzdWx0LnBoYXNlID0geyB4OiBkZXNjcmlwdG9yLnBoYXNlLkhyem4sIHk6IGRlc2NyaXB0b3IucGhhc2UuVnJ0YyB9O1xuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBwYXJzZVZlY3RvckNvbnRlbnQoZGVzY3JpcHRvcjogRGVzY3JpcHRvclZlY3RvckNvbnRlbnQpOiBWZWN0b3JDb250ZW50IHtcblx0aWYgKCdHcmFkJyBpbiBkZXNjcmlwdG9yKSB7XG5cdFx0cmV0dXJuIHBhcnNlR3JhZGllbnRDb250ZW50KGRlc2NyaXB0b3IpO1xuXHR9IGVsc2UgaWYgKCdQdHJuJyBpbiBkZXNjcmlwdG9yKSB7XG5cdFx0cmV0dXJuIHsgdHlwZTogJ3BhdHRlcm4nLCAuLi5wYXJzZVBhdHRlcm5Db250ZW50KGRlc2NyaXB0b3IpIH07XG5cdH0gZWxzZSBpZiAoJ0NsciAnIGluIGRlc2NyaXB0b3IpIHtcblx0XHRyZXR1cm4geyB0eXBlOiAnY29sb3InLCBjb2xvcjogcGFyc2VDb2xvcihkZXNjcmlwdG9yWydDbHIgJ10pIH07XG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZlY3RvciBjb250ZW50Jyk7XG5cdH1cbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplR3JhZGllbnRDb250ZW50KGNvbnRlbnQ6IChFZmZlY3RTb2xpZEdyYWRpZW50IHwgRWZmZWN0Tm9pc2VHcmFkaWVudCkgJiBFeHRyYUdyYWRpZW50SW5mbykge1xuXHRjb25zdCByZXN1bHQ6IERlc2NyaXB0b3JHcmFkaWVudENvbnRlbnQgPSB7fSBhcyBhbnk7XG5cdGlmIChjb250ZW50LmRpdGhlciAhPT0gdW5kZWZpbmVkKSByZXN1bHQuRHRociA9IGNvbnRlbnQuZGl0aGVyO1xuXHRpZiAoY29udGVudC5yZXZlcnNlICE9PSB1bmRlZmluZWQpIHJlc3VsdC5SdnJzID0gY29udGVudC5yZXZlcnNlO1xuXHRpZiAoY29udGVudC5hbmdsZSAhPT0gdW5kZWZpbmVkKSByZXN1bHQuQW5nbCA9IHVuaXRzQW5nbGUoY29udGVudC5hbmdsZSk7XG5cdHJlc3VsdC5UeXBlID0gR3JkVC5lbmNvZGUoY29udGVudC5zdHlsZSk7XG5cdGlmIChjb250ZW50LmFsaWduICE9PSB1bmRlZmluZWQpIHJlc3VsdC5BbGduID0gY29udGVudC5hbGlnbjtcblx0aWYgKGNvbnRlbnQuc2NhbGUgIT09IHVuZGVmaW5lZCkgcmVzdWx0WydTY2wgJ10gPSB1bml0c1BlcmNlbnQoY29udGVudC5zY2FsZSk7XG5cdGlmIChjb250ZW50Lm9mZnNldCkge1xuXHRcdHJlc3VsdC5PZnN0ID0ge1xuXHRcdFx0SHJ6bjogdW5pdHNQZXJjZW50KGNvbnRlbnQub2Zmc2V0LngpLFxuXHRcdFx0VnJ0YzogdW5pdHNQZXJjZW50KGNvbnRlbnQub2Zmc2V0LnkpLFxuXHRcdH07XG5cdH1cblx0cmVzdWx0LkdyYWQgPSBzZXJpYWxpemVHcmFkaWVudChjb250ZW50KTtcblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplUGF0dGVybkNvbnRlbnQoY29udGVudDogRWZmZWN0UGF0dGVybiAmIEV4dHJhUGF0dGVybkluZm8pIHtcblx0Y29uc3QgcmVzdWx0OiBEZXNjcmlwdG9yUGF0dGVybkNvbnRlbnQgPSB7XG5cdFx0UHRybjoge1xuXHRcdFx0J05tICAnOiBjb250ZW50Lm5hbWUgfHwgJycsXG5cdFx0XHRJZG50OiBjb250ZW50LmlkIHx8ICcnLFxuXHRcdH1cblx0fTtcblx0aWYgKGNvbnRlbnQubGlua2VkICE9PSB1bmRlZmluZWQpIHJlc3VsdC5MbmtkID0gISFjb250ZW50LmxpbmtlZDtcblx0aWYgKGNvbnRlbnQucGhhc2UgIT09IHVuZGVmaW5lZCkgcmVzdWx0LnBoYXNlID0geyBIcnpuOiBjb250ZW50LnBoYXNlLngsIFZydGM6IGNvbnRlbnQucGhhc2UueSB9O1xuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVWZWN0b3JDb250ZW50KGNvbnRlbnQ6IFZlY3RvckNvbnRlbnQpOiB7IGRlc2NyaXB0b3I6IERlc2NyaXB0b3JWZWN0b3JDb250ZW50OyBrZXk6IHN0cmluZzsgfSB7XG5cdGlmIChjb250ZW50LnR5cGUgPT09ICdjb2xvcicpIHtcblx0XHRyZXR1cm4geyBrZXk6ICdTb0NvJywgZGVzY3JpcHRvcjogeyAnQ2xyICc6IHNlcmlhbGl6ZUNvbG9yKGNvbnRlbnQuY29sb3IpIH0gfTtcblx0fSBlbHNlIGlmIChjb250ZW50LnR5cGUgPT09ICdwYXR0ZXJuJykge1xuXHRcdHJldHVybiB7IGtleTogJ1B0RmwnLCBkZXNjcmlwdG9yOiBzZXJpYWxpemVQYXR0ZXJuQ29udGVudChjb250ZW50KSB9O1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiB7IGtleTogJ0dkRmwnLCBkZXNjcmlwdG9yOiBzZXJpYWxpemVHcmFkaWVudENvbnRlbnQoY29udGVudCkgfTtcblx0fVxufVxuXG5mdW5jdGlvbiBwYXJzZUNvbG9yKGNvbG9yOiBEZXNjcmlwdG9yQ29sb3IpOiBDb2xvciB7XG5cdGlmICgnSCAgICcgaW4gY29sb3IpIHtcblx0XHRyZXR1cm4geyBoOiBwYXJzZVBlcmNlbnRPckFuZ2xlKGNvbG9yWydIICAgJ10pLCBzOiBjb2xvci5TdHJ0LCBiOiBjb2xvci5CcmdoIH07XG5cdH0gZWxzZSBpZiAoJ1JkICAnIGluIGNvbG9yKSB7XG5cdFx0cmV0dXJuIHsgcjogY29sb3JbJ1JkICAnXSwgZzogY29sb3JbJ0dybiAnXSwgYjogY29sb3JbJ0JsICAnXSB9O1xuXHR9IGVsc2UgaWYgKCdDeW4gJyBpbiBjb2xvcikge1xuXHRcdHJldHVybiB7IGM6IGNvbG9yWydDeW4gJ10sIG06IGNvbG9yLk1nbnQsIHk6IGNvbG9yWydZbHcgJ10sIGs6IGNvbG9yLkJsY2sgfTtcblx0fSBlbHNlIGlmICgnR3J5ICcgaW4gY29sb3IpIHtcblx0XHRyZXR1cm4geyBrOiBjb2xvclsnR3J5ICddIH07XG5cdH0gZWxzZSBpZiAoJ0xtbmMnIGluIGNvbG9yKSB7XG5cdFx0cmV0dXJuIHsgbDogY29sb3IuTG1uYywgYTogY29sb3JbJ0EgICAnXSwgYjogY29sb3JbJ0IgICAnXSB9O1xuXHR9IGVsc2Uge1xuXHRcdHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgY29sb3IgZGVzY3JpcHRvcicpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZUNvbG9yKGNvbG9yOiBDb2xvciB8IHVuZGVmaW5lZCk6IERlc2NyaXB0b3JDb2xvciB7XG5cdGlmICghY29sb3IpIHtcblx0XHRyZXR1cm4geyAnUmQgICc6IDAsICdHcm4gJzogMCwgJ0JsICAnOiAwIH07XG5cdH0gZWxzZSBpZiAoJ3InIGluIGNvbG9yKSB7XG5cdFx0cmV0dXJuIHsgJ1JkICAnOiBjb2xvci5yIHx8IDAsICdHcm4gJzogY29sb3IuZyB8fCAwLCAnQmwgICc6IGNvbG9yLmIgfHwgMCB9O1xuXHR9IGVsc2UgaWYgKCdoJyBpbiBjb2xvcikge1xuXHRcdHJldHVybiB7ICdIICAgJzogdW5pdHNBbmdsZShjb2xvci5oICogMzYwKSwgU3RydDogY29sb3IucyB8fCAwLCBCcmdoOiBjb2xvci5iIHx8IDAgfTtcblx0fSBlbHNlIGlmICgnYycgaW4gY29sb3IpIHtcblx0XHRyZXR1cm4geyAnQ3luICc6IGNvbG9yLmMgfHwgMCwgTWdudDogY29sb3IubSB8fCAwLCAnWWx3ICc6IGNvbG9yLnkgfHwgMCwgQmxjazogY29sb3IuayB8fCAwIH07XG5cdH0gZWxzZSBpZiAoJ2wnIGluIGNvbG9yKSB7XG5cdFx0cmV0dXJuIHsgTG1uYzogY29sb3IubCB8fCAwLCAnQSAgICc6IGNvbG9yLmEgfHwgMCwgJ0IgICAnOiBjb2xvci5iIHx8IDAgfTtcblx0fSBlbHNlIGlmICgnaycgaW4gY29sb3IpIHtcblx0XHRyZXR1cm4geyAnR3J5ICc6IGNvbG9yLmsgfTtcblx0fSBlbHNlIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29sb3IgdmFsdWUnKTtcblx0fVxufVxuXG50eXBlIEFsbEVmZmVjdHMgPSBMYXllckVmZmVjdFNoYWRvdyAmIExheWVyRWZmZWN0c091dGVyR2xvdyAmIExheWVyRWZmZWN0U3Ryb2tlICZcblx0TGF5ZXJFZmZlY3RJbm5lckdsb3cgJiBMYXllckVmZmVjdEJldmVsICYgTGF5ZXJFZmZlY3RTb2xpZEZpbGwgJlxuXHRMYXllckVmZmVjdFBhdHRlcm5PdmVybGF5ICYgTGF5ZXJFZmZlY3RTYXRpbiAmIExheWVyRWZmZWN0R3JhZGllbnRPdmVybGF5O1xuXG5mdW5jdGlvbiBwYXJzZUVmZmVjdE9iamVjdChvYmo6IGFueSwgcmVwb3J0RXJyb3JzOiBib29sZWFuKSB7XG5cdGNvbnN0IHJlc3VsdDogQWxsRWZmZWN0cyA9IHt9IGFzIGFueTtcblxuXHRmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvYmopKSB7XG5cdFx0Y29uc3QgdmFsID0gb2JqW2tleV07XG5cblx0XHRzd2l0Y2ggKGtleSkge1xuXHRcdFx0Y2FzZSAnZW5hYic6IHJlc3VsdC5lbmFibGVkID0gISF2YWw7IGJyZWFrO1xuXHRcdFx0Y2FzZSAndWdsZyc6IHJlc3VsdC51c2VHbG9iYWxMaWdodCA9ICEhdmFsOyBicmVhaztcblx0XHRcdGNhc2UgJ0FudEEnOiByZXN1bHQuYW50aWFsaWFzZWQgPSAhIXZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICdBbGduJzogcmVzdWx0LmFsaWduID0gISF2YWw7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnRHRocic6IHJlc3VsdC5kaXRoZXIgPSAhIXZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICdJbnZyJzogcmVzdWx0LmludmVydCA9ICEhdmFsOyBicmVhaztcblx0XHRcdGNhc2UgJ1J2cnMnOiByZXN1bHQucmV2ZXJzZSA9ICEhdmFsOyBicmVhaztcblx0XHRcdGNhc2UgJ0NsciAnOiByZXN1bHQuY29sb3IgPSBwYXJzZUNvbG9yKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnaGdsQyc6IHJlc3VsdC5oaWdobGlnaHRDb2xvciA9IHBhcnNlQ29sb3IodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdzZHdDJzogcmVzdWx0LnNoYWRvd0NvbG9yID0gcGFyc2VDb2xvcih2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ1N0eWwnOiByZXN1bHQucG9zaXRpb24gPSBGU3RsLmRlY29kZSh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ01kICAnOiByZXN1bHQuYmxlbmRNb2RlID0gQmxuTS5kZWNvZGUodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdoZ2xNJzogcmVzdWx0LmhpZ2hsaWdodEJsZW5kTW9kZSA9IEJsbk0uZGVjb2RlKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnc2R3TSc6IHJlc3VsdC5zaGFkb3dCbGVuZE1vZGUgPSBCbG5NLmRlY29kZSh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ2J2bFMnOiByZXN1bHQuc3R5bGUgPSBCRVNsLmRlY29kZSh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ2J2bEQnOiByZXN1bHQuZGlyZWN0aW9uID0gQkVTcy5kZWNvZGUodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdidmxUJzogcmVzdWx0LnRlY2huaXF1ZSA9IGJ2bFQuZGVjb2RlKHZhbCkgYXMgYW55OyBicmVhaztcblx0XHRcdGNhc2UgJ0dsd1QnOiByZXN1bHQudGVjaG5pcXVlID0gQkVURS5kZWNvZGUodmFsKSBhcyBhbnk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnZ2x3Uyc6IHJlc3VsdC5zb3VyY2UgPSBJR1NyLmRlY29kZSh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ1R5cGUnOiByZXN1bHQudHlwZSA9IEdyZFQuZGVjb2RlKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnT3BjdCc6IHJlc3VsdC5vcGFjaXR5ID0gcGFyc2VQZXJjZW50KHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnaGdsTyc6IHJlc3VsdC5oaWdobGlnaHRPcGFjaXR5ID0gcGFyc2VQZXJjZW50KHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnc2R3Tyc6IHJlc3VsdC5zaGFkb3dPcGFjaXR5ID0gcGFyc2VQZXJjZW50KHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnbGFnbCc6IHJlc3VsdC5hbmdsZSA9IHBhcnNlQW5nbGUodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdBbmdsJzogcmVzdWx0LmFuZ2xlID0gcGFyc2VBbmdsZSh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ0xhbGQnOiByZXN1bHQuYWx0aXR1ZGUgPSBwYXJzZUFuZ2xlKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnU2Z0bic6IHJlc3VsdC5zb2Z0ZW4gPSBwYXJzZVVuaXRzKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnc3JnUic6IHJlc3VsdC5zdHJlbmd0aCA9IHBhcnNlUGVyY2VudCh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ2JsdXInOiByZXN1bHQuc2l6ZSA9IHBhcnNlVW5pdHModmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdOb3NlJzogcmVzdWx0Lm5vaXNlID0gcGFyc2VQZXJjZW50KHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnSW5wcic6IHJlc3VsdC5yYW5nZSA9IHBhcnNlUGVyY2VudCh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ0NrbXQnOiByZXN1bHQuY2hva2UgPSBwYXJzZVVuaXRzKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnU2hkTic6IHJlc3VsdC5qaXR0ZXIgPSBwYXJzZVBlcmNlbnQodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdEc3RuJzogcmVzdWx0LmRpc3RhbmNlID0gcGFyc2VVbml0cyh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ1NjbCAnOiByZXN1bHQuc2NhbGUgPSBwYXJzZVBlcmNlbnQodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdQdHJuJzogcmVzdWx0LnBhdHRlcm4gPSB7IG5hbWU6IHZhbFsnTm0gICddLCBpZDogdmFsLklkbnQgfTsgYnJlYWs7XG5cdFx0XHRjYXNlICdwaGFzZSc6IHJlc3VsdC5waGFzZSA9IHsgeDogdmFsLkhyem4sIHk6IHZhbC5WcnRjIH07IGJyZWFrO1xuXHRcdFx0Y2FzZSAnT2ZzdCc6IHJlc3VsdC5vZmZzZXQgPSB7IHg6IHBhcnNlUGVyY2VudCh2YWwuSHJ6biksIHk6IHBhcnNlUGVyY2VudCh2YWwuVnJ0YykgfTsgYnJlYWs7XG5cdFx0XHRjYXNlICdNcGdTJzpcblx0XHRcdGNhc2UgJ1RyblMnOlxuXHRcdFx0XHRyZXN1bHQuY29udG91ciA9IHtcblx0XHRcdFx0XHRuYW1lOiB2YWxbJ05tICAnXSxcblx0XHRcdFx0XHRjdXJ2ZTogKHZhbFsnQ3J2ICddIGFzIGFueVtdKS5tYXAocCA9PiAoeyB4OiBwLkhyem4sIHk6IHAuVnJ0YyB9KSksXG5cdFx0XHRcdH07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnR3JhZCc6IHJlc3VsdC5ncmFkaWVudCA9IHBhcnNlR3JhZGllbnQodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICd1c2VUZXh0dXJlJzpcblx0XHRcdGNhc2UgJ3VzZVNoYXBlJzpcblx0XHRcdGNhc2UgJ2xheWVyQ29uY2VhbHMnOlxuXHRcdFx0Y2FzZSAncHJlc2VudCc6XG5cdFx0XHRjYXNlICdzaG93SW5EaWFsb2cnOlxuXHRcdFx0Y2FzZSAnYW50aWFsaWFzR2xvc3MnOiByZXN1bHRba2V5XSA9IHZhbDsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXBvcnRFcnJvcnMgJiYgY29uc29sZS5sb2coYEludmFsaWQgZWZmZWN0IGtleTogJyR7a2V5fSc6YCwgdmFsKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVFZmZlY3RPYmplY3Qob2JqOiBhbnksIG9iak5hbWU6IHN0cmluZywgcmVwb3J0RXJyb3JzOiBib29sZWFuKSB7XG5cdGNvbnN0IHJlc3VsdDogYW55ID0ge307XG5cblx0Zm9yIChjb25zdCBvYmpLZXkgb2YgT2JqZWN0LmtleXMob2JqKSkge1xuXHRcdGNvbnN0IGtleToga2V5b2YgQWxsRWZmZWN0cyA9IG9iaktleSBhcyBhbnk7XG5cdFx0Y29uc3QgdmFsID0gb2JqW2tleV07XG5cblx0XHRzd2l0Y2ggKGtleSkge1xuXHRcdFx0Y2FzZSAnZW5hYmxlZCc6IHJlc3VsdC5lbmFiID0gISF2YWw7IGJyZWFrO1xuXHRcdFx0Y2FzZSAndXNlR2xvYmFsTGlnaHQnOiByZXN1bHQudWdsZyA9ICEhdmFsOyBicmVhaztcblx0XHRcdGNhc2UgJ2FudGlhbGlhc2VkJzogcmVzdWx0LkFudEEgPSAhIXZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICdhbGlnbic6IHJlc3VsdC5BbGduID0gISF2YWw7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnZGl0aGVyJzogcmVzdWx0LkR0aHIgPSAhIXZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICdpbnZlcnQnOiByZXN1bHQuSW52ciA9ICEhdmFsOyBicmVhaztcblx0XHRcdGNhc2UgJ3JldmVyc2UnOiByZXN1bHQuUnZycyA9ICEhdmFsOyBicmVhaztcblx0XHRcdGNhc2UgJ2NvbG9yJzogcmVzdWx0WydDbHIgJ10gPSBzZXJpYWxpemVDb2xvcih2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ2hpZ2hsaWdodENvbG9yJzogcmVzdWx0LmhnbEMgPSBzZXJpYWxpemVDb2xvcih2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ3NoYWRvd0NvbG9yJzogcmVzdWx0LnNkd0MgPSBzZXJpYWxpemVDb2xvcih2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ3Bvc2l0aW9uJzogcmVzdWx0LlN0eWwgPSBGU3RsLmVuY29kZSh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ2JsZW5kTW9kZSc6IHJlc3VsdFsnTWQgICddID0gQmxuTS5lbmNvZGUodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdoaWdobGlnaHRCbGVuZE1vZGUnOiByZXN1bHQuaGdsTSA9IEJsbk0uZW5jb2RlKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnc2hhZG93QmxlbmRNb2RlJzogcmVzdWx0LnNkd00gPSBCbG5NLmVuY29kZSh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ3N0eWxlJzogcmVzdWx0LmJ2bFMgPSBCRVNsLmVuY29kZSh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ2RpcmVjdGlvbic6IHJlc3VsdC5idmxEID0gQkVTcy5lbmNvZGUodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICd0ZWNobmlxdWUnOlxuXHRcdFx0XHRpZiAob2JqTmFtZSA9PT0gJ2JldmVsJykge1xuXHRcdFx0XHRcdHJlc3VsdC5idmxUID0gYnZsVC5lbmNvZGUodmFsKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXN1bHQuR2x3VCA9IEJFVEUuZW5jb2RlKHZhbCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdzb3VyY2UnOiByZXN1bHQuZ2x3UyA9IElHU3IuZW5jb2RlKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAndHlwZSc6IHJlc3VsdC5UeXBlID0gR3JkVC5lbmNvZGUodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdvcGFjaXR5JzogcmVzdWx0Lk9wY3QgPSB1bml0c1BlcmNlbnQodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdoaWdobGlnaHRPcGFjaXR5JzogcmVzdWx0LmhnbE8gPSB1bml0c1BlcmNlbnQodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdzaGFkb3dPcGFjaXR5JzogcmVzdWx0LnNkd08gPSB1bml0c1BlcmNlbnQodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdhbmdsZSc6XG5cdFx0XHRcdGlmIChvYmpOYW1lID09PSAnZ3JhZGllbnRPdmVybGF5Jykge1xuXHRcdFx0XHRcdHJlc3VsdC5BbmdsID0gdW5pdHNBbmdsZSh2YWwpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJlc3VsdC5sYWdsID0gdW5pdHNBbmdsZSh2YWwpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnYWx0aXR1ZGUnOiByZXN1bHQuTGFsZCA9IHVuaXRzQW5nbGUodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdzb2Z0ZW4nOiByZXN1bHQuU2Z0biA9IHVuaXRzVmFsdWUodmFsLCBrZXkpOyBicmVhaztcblx0XHRcdGNhc2UgJ3N0cmVuZ3RoJzogcmVzdWx0LnNyZ1IgPSB1bml0c1BlcmNlbnQodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdzaXplJzogcmVzdWx0LmJsdXIgPSB1bml0c1ZhbHVlKHZhbCwga2V5KTsgYnJlYWs7XG5cdFx0XHRjYXNlICdub2lzZSc6IHJlc3VsdC5Ob3NlID0gdW5pdHNQZXJjZW50KHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAncmFuZ2UnOiByZXN1bHQuSW5wciA9IHVuaXRzUGVyY2VudCh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ2Nob2tlJzogcmVzdWx0LkNrbXQgPSB1bml0c1ZhbHVlKHZhbCwga2V5KTsgYnJlYWs7XG5cdFx0XHRjYXNlICdqaXR0ZXInOiByZXN1bHQuU2hkTiA9IHVuaXRzUGVyY2VudCh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJ2Rpc3RhbmNlJzogcmVzdWx0LkRzdG4gPSB1bml0c1ZhbHVlKHZhbCwga2V5KTsgYnJlYWs7XG5cdFx0XHRjYXNlICdzY2FsZSc6IHJlc3VsdFsnU2NsICddID0gdW5pdHNQZXJjZW50KHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAncGF0dGVybic6IHJlc3VsdC5QdHJuID0geyAnTm0gICc6IHZhbC5uYW1lLCBJZG50OiB2YWwuaWQgfTsgYnJlYWs7XG5cdFx0XHRjYXNlICdwaGFzZSc6IHJlc3VsdC5waGFzZSA9IHsgSHJ6bjogdmFsLngsIFZydGM6IHZhbC55IH07IGJyZWFrO1xuXHRcdFx0Y2FzZSAnb2Zmc2V0JzogcmVzdWx0Lk9mc3QgPSB7IEhyem46IHVuaXRzUGVyY2VudCh2YWwueCksIFZydGM6IHVuaXRzUGVyY2VudCh2YWwueSkgfTsgYnJlYWs7XG5cdFx0XHRjYXNlICdjb250b3VyJzoge1xuXHRcdFx0XHRyZXN1bHRbb2JqTmFtZSA9PT0gJ3NhdGluJyA/ICdNcGdTJyA6ICdUcm5TJ10gPSB7XG5cdFx0XHRcdFx0J05tICAnOiAodmFsIGFzIEVmZmVjdENvbnRvdXIpLm5hbWUsXG5cdFx0XHRcdFx0J0NydiAnOiAodmFsIGFzIEVmZmVjdENvbnRvdXIpLmN1cnZlLm1hcChwID0+ICh7IEhyem46IHAueCwgVnJ0YzogcC55IH0pKSxcblx0XHRcdFx0fTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlICdncmFkaWVudCc6IHJlc3VsdC5HcmFkID0gc2VyaWFsaXplR3JhZGllbnQodmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICd1c2VUZXh0dXJlJzpcblx0XHRcdGNhc2UgJ3VzZVNoYXBlJzpcblx0XHRcdGNhc2UgJ2xheWVyQ29uY2VhbHMnOlxuXHRcdFx0Y2FzZSAncHJlc2VudCc6XG5cdFx0XHRjYXNlICdzaG93SW5EaWFsb2cnOlxuXHRcdFx0Y2FzZSAnYW50aWFsaWFzR2xvc3MnOlxuXHRcdFx0XHRyZXN1bHRba2V5XSA9IHZhbDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXBvcnRFcnJvcnMgJiYgY29uc29sZS5sb2coYEludmFsaWQgZWZmZWN0IGtleTogJyR7a2V5fScgdmFsdWU6YCwgdmFsKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0O1xufVxuIl0sInNvdXJjZVJvb3QiOiJEOlxcUHJvamVjdHNcXGdpdGh1YlxcYWctcHNkXFxzcmMifQ==
|