@colijnit/configurator 12.0.16 → 255.1.1
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/app/builder.d.ts +8 -8
- package/app/services/configurator.service.d.ts +5 -5
- package/bundles/colijnit-configurator.umd.js +212 -154
- package/bundles/colijnit-configurator.umd.js.map +1 -1
- package/esm2015/app/builder.js +45 -44
- package/esm2015/app/services/configurator.service.js +1 -1
- package/esm2015/app/services/image-cache.service.js +1 -1
- package/esm2015/helper/variation-helper.js +56 -37
- package/esm2015/model/material.js +3 -3
- package/esm2015/model/variation-settings.js +4 -2
- package/esm2015/utils/asset.utils.js +19 -14
- package/esm2015/utils/variation-utils.js +25 -15
- package/fesm2015/colijnit-configurator.js +127 -89
- package/fesm2015/colijnit-configurator.js.map +1 -1
- package/helper/variation-helper.d.ts +3 -3
- package/model/material.d.ts +20 -17
- package/model/variation-settings.d.ts +12 -2
- package/package.json +6 -3
- package/utils/asset.utils.d.ts +1 -0
- package/utils/variation-utils.d.ts +1 -1
- package/app/services/locator.service.d.ts +0 -4
- package/esm2015/app/services/locator.service.js +0 -8
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { Material } from '../model/material';
|
|
3
3
|
import { ImageUtils } from './image.utils';
|
|
4
|
-
import
|
|
5
|
-
import { sRGBEncoding } from 'three';
|
|
4
|
+
import { Color, SRGBColorSpace } from 'three';
|
|
6
5
|
export class FurnitureMaterial extends Material {
|
|
7
6
|
}
|
|
8
7
|
export class AssetUtils {
|
|
@@ -17,7 +16,7 @@ export class AssetUtils {
|
|
|
17
16
|
}
|
|
18
17
|
if (asset.texture) {
|
|
19
18
|
material.texture = yield ImageUtils.CreateTextureFromBase64(asset.id + '_texture', asset.texture, material);
|
|
20
|
-
material.texture.
|
|
19
|
+
material.texture.colorSpace = SRGBColorSpace;
|
|
21
20
|
material.textureFilename = asset.textureFilename;
|
|
22
21
|
}
|
|
23
22
|
if (asset.normal) {
|
|
@@ -62,18 +61,14 @@ export class AssetUtils {
|
|
|
62
61
|
material.sheenRoughnessMap = yield ImageUtils.CreateTextureFromBase64(asset.id + '_sheen_roughness', asset.sheenRoughnessMap, material);
|
|
63
62
|
material.sheenRoughnessMapFileName = asset.sheenRoughnessMapFilename;
|
|
64
63
|
}
|
|
64
|
+
if (asset.transmissionMap) {
|
|
65
|
+
material.transmissionMap = yield ImageUtils.CreateTextureFromBase64(asset.id + '_transmission', asset.transmissionMap, material);
|
|
66
|
+
material.transmissionMapFileName = asset.transmissionMapFilename;
|
|
67
|
+
}
|
|
65
68
|
if (asset.emissive) {
|
|
66
69
|
material.emissive = yield ImageUtils.CreateTextureFromBase64(asset.id + '_emissive', asset.emissive, material);
|
|
67
70
|
material.emissiveFileName = asset.emissiveFilename;
|
|
68
71
|
}
|
|
69
|
-
const metalness = parseFloat(asset['metalness']);
|
|
70
|
-
if (!isNaN(metalness)) {
|
|
71
|
-
material.metalnessValue = Math.min(1, metalness);
|
|
72
|
-
}
|
|
73
|
-
const roughness = parseFloat(asset['roughness']);
|
|
74
|
-
if (!isNaN(roughness)) {
|
|
75
|
-
material.roughnessValue = Math.min(1, roughness);
|
|
76
|
-
}
|
|
77
72
|
material.sheen = asset.sheen;
|
|
78
73
|
material.emissiveIntensityValue = asset.emissiveIntensity;
|
|
79
74
|
material.emissiveValue = asset.emissiveValue;
|
|
@@ -85,8 +80,10 @@ export class AssetUtils {
|
|
|
85
80
|
material.envMapIntensity = asset.envMapIntensity;
|
|
86
81
|
material.reflectivity = asset.reflectivity;
|
|
87
82
|
material.displacementValue = asset.displacementValue;
|
|
88
|
-
material.transparency = asset.transparency;
|
|
89
83
|
material.transmission = asset.transmission;
|
|
84
|
+
material.ior = asset.ior;
|
|
85
|
+
material.thickness = asset.thickness;
|
|
86
|
+
material.specularIntensity = asset.specularIntensity;
|
|
90
87
|
return material;
|
|
91
88
|
});
|
|
92
89
|
}
|
|
@@ -98,7 +95,7 @@ export class AssetUtils {
|
|
|
98
95
|
}
|
|
99
96
|
const level = parseFloat(settings['level']);
|
|
100
97
|
if (!isNaN(level)) {
|
|
101
|
-
material.specular = new
|
|
98
|
+
material.specular = new Color(level, level, level);
|
|
102
99
|
}
|
|
103
100
|
const repeatObjectUsed = settings.hasOwnProperty('repeat');
|
|
104
101
|
const repeatx = repeatObjectUsed ? parseFloat(settings['repeat']['repeatx']) : parseFloat(settings['repeatx']);
|
|
@@ -109,6 +106,14 @@ export class AssetUtils {
|
|
|
109
106
|
if (!isNaN(repeaty)) {
|
|
110
107
|
material.repeatY = repeaty;
|
|
111
108
|
}
|
|
109
|
+
const metalness = parseFloat(settings['metalness']);
|
|
110
|
+
if (!isNaN(metalness)) {
|
|
111
|
+
material.metalnessValue = Math.min(1, metalness);
|
|
112
|
+
}
|
|
113
|
+
const roughness = parseFloat(settings['roughness']);
|
|
114
|
+
if (!isNaN(roughness)) {
|
|
115
|
+
material.roughnessValue = Math.min(1, roughness);
|
|
116
|
+
}
|
|
112
117
|
}
|
|
113
118
|
}
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvYXNzZXQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFHbkMsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFFBQVE7Q0FhOUM7QUFFRCxNQUFNLE9BQU8sVUFBVTtJQUVkLE1BQU0sQ0FBTyx1QkFBdUIsQ0FBQyxLQUF3Qjs7WUFDbEUsTUFBTSxRQUFRLEdBQXNCLElBQUksUUFBUSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDVixPQUFPLFFBQVEsQ0FBQzthQUNqQjtZQUNELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtnQkFDbEIsVUFBVSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDNUQ7WUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7Z0JBQ2pCLFFBQVEsQ0FBQyxPQUFPLEdBQUcsTUFBTSxVQUFVLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDNUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO2dCQUN6QyxRQUFRLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUM7YUFDbEQ7WUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQ2hCLFFBQVEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsdUJBQXVC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LEdBQVksUUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRSxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDL0csSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuQixRQUFRLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztTQUM1QjtRQUVELE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUMvRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ25CLFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNYXRlcmlhbH0gZnJvbSAnLi4vbW9kZWwvbWF0ZXJpYWwnO1xuaW1wb3J0IHtJbWFnZVV0aWxzfSBmcm9tICcuL2ltYWdlLnV0aWxzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7c1JHQkVuY29kaW5nfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQge1ZhcmlhdGlvblNldHRpbmdzfSBmcm9tICcuLi9tb2RlbC92YXJpYXRpb24tc2V0dGluZ3MnO1xuXG5leHBvcnQgY2xhc3MgRnVybml0dXJlTWF0ZXJpYWwgZXh0ZW5kcyBNYXRlcmlhbCB7XG5cbiAgcHVibGljIHRleHR1cmVGaWxlbmFtZT86IHN0cmluZztcbiAgcHVibGljIG5vcm1hbEZpbGVuYW1lPzogc3RyaW5nO1xuICBwdWJsaWMgYW9GaWxlbmFtZT86IHN0cmluZztcbiAgcHVibGljIG1ldGFsbmVzc0ZpbGVuYW1lPzogc3RyaW5nO1xuICBwdWJsaWMgcm91Z2huZXNzRmlsZW5hbWU/OiBzdHJpbmc7XG4gIHB1YmxpYyBkaXNwbGFjZW1lbnRGaWxlbmFtZT86IHN0cmluZztcbiAgcHVibGljIGVudk1hcEZpbGVuYW1lPzogc3RyaW5nO1xuICBwdWJsaWMgZW1pc3NpdmVGaWxlTmFtZT86IHN0cmluZztcbiAgcHVibGljIHNoZWVuQ29sb3JNYXBGaWxlTmFtZT86IHN0cmluZztcbiAgcHVibGljIHNoZWVuUm91Z2huZXNzTWFwRmlsZU5hbWU/OiBzdHJpbmc7XG5cbn1cblxuZXhwb3J0IGNsYXNzIEFzc2V0VXRpbHMge1xuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgQ3JlYXRlTWF0ZXJpYWxGcm9tQXNzZXQoYXNzZXQ6IFZhcmlhdGlvblNldHRpbmdzKTogUHJvbWlzZTxNYXRlcmlhbD4ge1xuICAgIGNvbnN0IG1hdGVyaWFsOiBGdXJuaXR1cmVNYXRlcmlhbCA9IG5ldyBNYXRlcmlhbCgpO1xuICAgIGlmICghYXNzZXQpIHtcbiAgICAgIHJldHVybiBtYXRlcmlhbDtcbiAgICB9XG4gICAgaWYgKGFzc2V0LnNldHRpbmdzKSB7XG4gICAgICBBc3NldFV0aWxzLnNldFNldHRpbmdzT2ZNYXRlcmlhbChtYXRlcmlhbCwgYXNzZXQuc2V0dGluZ3MpO1xuICAgIH1cbiAgICBpZiAoYXNzZXQudGV4dHVyZSkge1xuICAgICAgbWF0ZXJpYWwudGV4dHVyZSA9IGF3YWl0IEltYWdlVXRpbHMuQ3JlYXRlVGV4dHVyZUZyb21CYXNlNjQoYXNzZXQuaWQgKyAnX3RleHR1cmUnLCBhc3NldC50ZXh0dXJlLCBtYXRlcmlhbCk7XG4gICAgICBtYXRlcmlhbC50ZXh0dXJlLmVuY29kaW5nID0gc1JHQkVuY29kaW5nO1xuICAgICAgbWF0ZXJpYWwudGV4dHVyZUZpbGVuYW1lID0gYXNzZXQudGV4dHVyZUZpbGVuYW1lO1xuICAgIH1cbiAgICBpZiAoYXNzZXQubm9ybWFsKSB7XG4gICAgICBtYXRlcmlhbC5ub3JtYWwgPSBhd2FpdCBJbWFnZVV0aWxzLkNyZWF0ZVRleHR1cmVGcm9tQmFzZTY0KGFzc2V0LmlkICsgJ19ub3JtYWwnLCBhc3NldC5ub3JtYWwsIG1hdGVyaWFsKTtcbiAgICAgIG1hdGVyaWFsLm5vcm1hbEZpbGVuYW1lID0gYXNzZXQubm9ybWFsRmlsZW5hbWU7XG4gICAgfVxuICAgIGlmIChhc3NldC5vcm0pIHtcbiAgICAgIG1hdGVyaWFsLmFvID0gYXdhaXQgSW1hZ2VVdGlscy5DcmVhdGVUZXh0dXJlRnJvbUJhc2U2NChhc3NldC5pZCArICdfb3JtJywgYXNzZXQub3JtLCBtYXRlcmlhbCk7XG4gICAgICBtYXRlcmlhbC5yb3VnaG5lc3MgPSBtYXRlcmlhbC5hbztcbiAgICAgIG1hdGVyaWFsLm1ldGFsbmVzcyA9IG1hdGVyaWFsLmFvO1xuICAgICAgbWF0ZXJpYWwuYW9GaWxlbmFtZSA9IGFzc2V0Lm9ybUZpbGVuYW1lO1xuICAgICAgbWF0ZXJpYWwucm91Z2huZXNzRmlsZW5hbWUgPSBhc3NldC5vcm1GaWxlbmFtZTtcbiAgICAgIG1hdGVyaWFsLm1ldGFsbmVzc0ZpbGVuYW1lID0gYXNzZXQub3JtRmlsZW5hbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChhc3NldC5hbykge1xuICAgICAgICBtYXRlcmlhbC5hbyA9IGF3YWl0IEltYWdlVXRpbHMuQ3JlYXRlVGV4dHVyZUZyb21CYXNlNjQoYXNzZXQuaWQgKyAnX2FvJywgYXNzZXQuYW8sIG1hdGVyaWFsKTtcbiAgICAgICAgbWF0ZXJpYWwuYW9GaWxlbmFtZSA9IGFzc2V0LmFvRmlsZW5hbWU7XG4gICAgICB9XG4gICAgICBpZiAoYXNzZXQubWV0YWxuZXNzKSB7XG4gICAgICAgIG1hdGVyaWFsLm1ldGFsbmVzcyA9IGF3YWl0IEltYWdlVXRpbHMuQ3JlYXRlVGV4dHVyZUZyb21CYXNlNjQoYXNzZXQuaWQgKyAnX21ldGFsbmVzcycsIGFzc2V0Lm1ldGFsbmVzcywgbWF0ZXJpYWwpO1xuICAgICAgICBtYXRlcmlhbC5tZXRhbG5lc3NGaWxlbmFtZSA9IGFzc2V0Lm1ldGFsbmVzc0ZpbGVuYW1lO1xuICAgICAgfVxuICAgICAgaWYgKGFzc2V0LnJvdWdobmVzcykge1xuICAgICAgICBtYXRlcmlhbC5yb3VnaG5lc3MgPSBhd2FpdCBJbWFnZVV0aWxzLkNyZWF0ZVRleHR1cmVGcm9tQmFzZTY0KGFzc2V0LmlkICsgJ19yb3VnaG5lc3MnLCBhc3NldC5yb3VnaG5lc3MsIG1hdGVyaWFsKTtcbiAgICAgICAgbWF0ZXJpYWwucm91Z2huZXNzRmlsZW5hbWUgPSBhc3NldC5yb3VnaG5lc3NGaWxlbmFtZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFzc2V0LmRpc3BsYWNlbWVudCkge1xuICAgICAgbWF0ZXJpYWwuZGlzcGxhY2VtZW50ID0gYXdhaXQgSW1hZ2VVdGlscy5DcmVhdGVUZXh0dXJlRnJvbUJhc2U2NChhc3NldC5pZCArICdfZGlzcGxhY2VtZW50JywgYXNzZXQuZGlzcGxhY2VtZW50LCBtYXRlcmlhbCk7XG4gICAgICBtYXRlcmlhbC5kaXNwbGFjZW1lbnRGaWxlbmFtZSA9IGFzc2V0LmRpc3BsYWNlbWVudEZpbGVuYW1lO1xuICAgIH1cbiAgICBpZiAoYXNzZXQuZW52TWFwKSB7XG4gICAgICBtYXRlcmlhbC5lbnZNYXAgPSBhd2FpdCBJbWFnZVV0aWxzLkNyZWF0ZVRleHR1cmVGcm9tQmFzZTY0KGFzc2V0LmlkICsgJ19lbnYnLCBhc3NldC5lbnZNYXAsIG1hdGVyaWFsLCB0cnVlKTtcbiAgICAgIG1hdGVyaWFsLmVudk1hcEZpbGVuYW1lID0gYXNzZXQuZW52TWFwRmlsZW5hbWU7XG4gICAgfVxuICAgIGlmIChhc3NldC5zaGVlbkNvbG9yTWFwKSB7XG4gICAgICBtYXRlcmlhbC5zaGVlbkNvbG9yTWFwID0gYXdhaXQgSW1hZ2VVdGlscy5DcmVhdGVUZXh0dXJlRnJvbUJhc2U2NChhc3NldC5pZCArICdfc2hlZW5fY29sb3InLCBhc3NldC5zaGVlbkNvbG9yTWFwLCBtYXRlcmlhbCk7XG4gICAgICBtYXRlcmlhbC5zaGVlbkNvbG9yTWFwRmlsZU5hbWUgPSBhc3NldC5zaGVlbkNvbG9yTWFwRmlsZW5hbWU7XG4gICAgfVxuICAgIGlmIChhc3NldC5zaGVlblJvdWdobmVzc01hcCkge1xuICAgICAgbWF0ZXJpYWwuc2hlZW5Sb3VnaG5lc3NNYXAgPSBhd2FpdCBJbWFnZVV0aWxzLkNyZWF0ZVRleHR1cmVGcm9tQmFzZTY0KGFzc2V0LmlkICsgJ19zaGVlbl9yb3VnaG5lc3MnLCBhc3NldC5zaGVlblJvdWdobmVzc01hcCwgbWF0ZXJpYWwpO1xuICAgICAgbWF0ZXJpYWwuc2hlZW5Sb3VnaG5lc3NNYXBGaWxlTmFtZSA9IGFzc2V0LnNoZWVuUm91Z2huZXNzTWFwRmlsZW5hbWU7XG4gICAgfVxuICAgIGlmIChhc3NldC5lbWlzc2l2ZSkge1xuICAgICAgbWF0ZXJpYWwuZW1pc3NpdmUgPSBhd2FpdCBJbWFnZVV0aWxzLkNyZWF0ZVRleHR1cmVGcm9tQmFzZTY0KGFzc2V0LmlkICsgJ19lbWlzc2l2ZScsIGFzc2V0LmVtaXNzaXZlLCBtYXRlcmlhbCk7XG4gICAgICBtYXRlcmlhbC5lbWlzc2l2ZUZpbGVOYW1lID0gYXNzZXQuZW1pc3NpdmVGaWxlbmFtZTtcbiAgICB9XG4gICAgY29uc3QgbWV0YWxuZXNzID0gcGFyc2VGbG9hdChhc3NldFsnbWV0YWxuZXNzJ10pO1xuICAgIGlmICghaXNOYU4obWV0YWxuZXNzKSkge1xuICAgICAgbWF0ZXJpYWwubWV0YWxuZXNzVmFsdWUgPSBNYXRoLm1pbigxLCBtZXRhbG5lc3MpO1xuICAgIH1cblxuICAgIGNvbnN0IHJvdWdobmVzcyA9IHBhcnNlRmxvYXQoYXNzZXRbJ3JvdWdobmVzcyddKTtcbiAgICBpZiAoIWlzTmFOKHJvdWdobmVzcykpIHtcbiAgICAgIG1hdGVyaWFsLnJvdWdobmVzc1ZhbHVlID0gTWF0aC5taW4oMSwgcm91Z2huZXNzKTtcbiAgICB9XG4gICAgbWF0ZXJpYWwuc2hlZW4gPSBhc3NldC5zaGVlbjtcbiAgICBtYXRlcmlhbC5lbWlzc2l2ZUludGVuc2l0eVZhbHVlID0gYXNzZXQuZW1pc3NpdmVJbnRlbnNpdHk7XG4gICAgbWF0ZXJpYWwuZW1pc3NpdmVWYWx1ZSA9IGFzc2V0LmVtaXNzaXZlVmFsdWU7XG4gICAgbWF0ZXJpYWwuc2lkZSA9IGFzc2V0LnNpZGU7XG4gICAgbWF0ZXJpYWwuc2hlZW5Db2xvciA9IGFzc2V0LnNoZWVuQ29sb3I7XG4gICAgbWF0ZXJpYWwuc2hlZW5Sb3VnaG5lc3MgPSBhc3NldC5zaGVlblJvdWdobmVzcztcbiAgICBtYXRlcmlhbC5vcGFjaXR5ID0gYXNzZXQub3BhY2l0eTtcbiAgICBtYXRlcmlhbC50cmFuc3BhcmVudCA9IGFzc2V0LnRyYW5zcGFyZW50O1xuICAgIG1hdGVyaWFsLmVudk1hcEludGVuc2l0eSA9IGFzc2V0LmVudk1hcEludGVuc2l0eTtcbiAgICBtYXRlcmlhbC5yZWZsZWN0aXZpdHkgPSBhc3NldC5yZWZsZWN0aXZpdHk7XG4gICAgbWF0ZXJpYWwuZGlzcGxhY2VtZW50VmFsdWUgPSBhc3NldC5kaXNwbGFjZW1lbnRWYWx1ZTtcbiAgICBtYXRlcmlhbC50cmFuc3BhcmVuY3kgPSBhc3NldC50cmFuc3BhcmVuY3k7XG4gICAgbWF0ZXJpYWwudHJhbnNtaXNzaW9uID0gYXNzZXQudHJhbnNtaXNzaW9uO1xuICAgIHJldHVybiBtYXRlcmlhbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0U2V0dGluZ3NPZk1hdGVyaWFsKG1hdGVyaWFsOiBNYXRlcmlhbCwgc2V0dGluZ3M6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHNoaW5pbmVzcyA9IHBhcnNlRmxvYXQoc2V0dGluZ3NbJ3Bvd2VyJ10pO1xuICAgIGlmICghaXNOYU4oc2hpbmluZXNzKSkge1xuICAgICAgbWF0ZXJpYWwuc2hpbmluZXNzID0gc2hpbmluZXNzO1xuICAgICAgLy8gbWF0ZXJpYWwucm91Z2huZXNzID0gMSAtIChzaGluaW5lc3MgLyAxMDApO1xuICAgIH1cblxuICAgIGNvbnN0IGxldmVsID0gcGFyc2VGbG9hdChzZXR0aW5nc1snbGV2ZWwnXSk7XG4gICAgaWYgKCFpc05hTihsZXZlbCkpIHtcbiAgICAgIG1hdGVyaWFsLnNwZWN1bGFyID0gbmV3IFRIUkVFLkNvbG9yKGxldmVsLCBsZXZlbCwgbGV2ZWwpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcGVhdE9iamVjdFVzZWQ6IGJvb2xlYW4gPSBzZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eSgncmVwZWF0Jyk7XG4gICAgY29uc3QgcmVwZWF0eCA9IHJlcGVhdE9iamVjdFVzZWQgPyBwYXJzZUZsb2F0KHNldHRpbmdzWydyZXBlYXQnXVsncmVwZWF0eCddKSA6IHBhcnNlRmxvYXQoc2V0dGluZ3NbJ3JlcGVhdHgnXSk7XG4gICAgaWYgKCFpc05hTihyZXBlYXR4KSkge1xuICAgICAgbWF0ZXJpYWwucmVwZWF0WCA9IHJlcGVhdHg7XG4gICAgfVxuXG4gICAgY29uc3QgcmVwZWF0eSA9IHJlcGVhdE9iamVjdFVzZWQgPyBwYXJzZUZsb2F0KHNldHRpbmdzWydyZXBlYXQnXVsncmVwZWF0eSddKSA6IHBhcnNlRmxvYXQoc2V0dGluZ3NbJ3JlcGVhdHknXSk7XG4gICAgaWYgKCFpc05hTihyZXBlYXR5KSkge1xuICAgICAgbWF0ZXJpYWwucmVwZWF0WSA9IHJlcGVhdHk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvYXNzZXQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxLQUFLLEVBQUUsY0FBYyxFQUFDLE1BQU0sT0FBTyxDQUFDO0FBRTVDLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxRQUFRO0NBYzlDO0FBRUQsTUFBTSxPQUFPLFVBQVU7SUFFZCxNQUFNLENBQU8sdUJBQXVCLENBQUMsS0FBd0I7O1lBQ2xFLE1BQU0sUUFBUSxHQUFzQixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1YsT0FBTyxRQUFRLENBQUM7YUFDakI7WUFDRCxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xCLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzVEO1lBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO2dCQUNqQixRQUFRLENBQUMsT0FBTyxHQUFHLE1BQU0sVUFBVSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsVUFBVSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzVHLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLGNBQWMsQ0FBQztnQkFDN0MsUUFBUSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO2FBQ2xEO1lBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO2dCQUNoQixRQUFRLENBQUMsTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcs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QyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQy9HLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbkIsUUFBUSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7U0FDNUI7UUFFRCxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDL0csSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuQixRQUFRLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztTQUM1QjtRQUVELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3JCLFFBQVEsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDbEQ7UUFFRCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNyQixRQUFRLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNYXRlcmlhbH0gZnJvbSAnLi4vbW9kZWwvbWF0ZXJpYWwnO1xuaW1wb3J0IHtJbWFnZVV0aWxzfSBmcm9tICcuL2ltYWdlLnV0aWxzJztcbmltcG9ydCB7VmFyaWF0aW9uU2V0dGluZ3N9IGZyb20gJy4uL21vZGVsL3ZhcmlhdGlvbi1zZXR0aW5ncyc7XG5pbXBvcnQge0NvbG9yLCBTUkdCQ29sb3JTcGFjZX0gZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgY2xhc3MgRnVybml0dXJlTWF0ZXJpYWwgZXh0ZW5kcyBNYXRlcmlhbCB7XG5cbiAgcHVibGljIHRleHR1cmVGaWxlbmFtZT86IHN0cmluZztcbiAgcHVibGljIG5vcm1hbEZpbGVuYW1lPzogc3RyaW5nO1xuICBwdWJsaWMgYW9GaWxlbmFtZT86IHN0cmluZztcbiAgcHVibGljIG1ldGFsbmVzc0ZpbGVuYW1lPzogc3RyaW5nO1xuICBwdWJsaWMgcm91Z2huZXNzRmlsZW5hbWU/OiBzdHJpbmc7XG4gIHB1YmxpYyBkaXNwbGFjZW1lbnRGaWxlbmFtZT86IHN0cmluZztcbiAgcHVibGljIGVudk1hcEZpbGVuYW1lPzogc3RyaW5nO1xuICBwdWJsaWMgZW1pc3NpdmVGaWxlTmFtZT86IHN0cmluZztcbiAgcHVibGljIHNoZWVuQ29sb3JNYXBGaWxlTmFtZT86IHN0cmluZztcbiAgcHVibGljIHNoZWVuUm91Z2huZXNzTWFwRmlsZU5hbWU/OiBzdHJpbmc7XG4gIHB1YmxpYyB0cmFuc21pc3Npb25NYXBGaWxlTmFtZT86IHN0cmluZztcblxufVxuXG5leHBvcnQgY2xhc3MgQXNzZXRVdGlscyB7XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBDcmVhdGVNYXRlcmlhbEZyb21Bc3NldChhc3NldDogVmFyaWF0aW9uU2V0dGluZ3MpOiBQcm9taXNlPE1hdGVyaWFsPiB7XG4gICAgY29uc3QgbWF0ZXJpYWw6IEZ1cm5pdHVyZU1hdGVyaWFsID0gbmV3IE1hdGVyaWFsKCk7XG4gICAgaWYgKCFhc3NldCkge1xuICAgICAgcmV0dXJuIG1hdGVyaWFsO1xuICAgIH1cbiAgICBpZiAoYXNzZXQuc2V0dGluZ3MpIHtcbiAgICAgIEFzc2V0VXRpbHMuc2V0U2V0dGluZ3NPZk1hdGVyaWFsKG1hdGVyaWFsLCBhc3NldC5zZXR0aW5ncyk7XG4gICAgfVxuICAgIGlmIChhc3NldC50ZXh0dXJlKSB7XG4gICAgICBtYXRlcmlhbC50ZXh0dXJlID0gYXdhaXQgSW1hZ2VVdGlscy5DcmVhdGVUZXh0dXJlRnJvbUJhc2U2NChhc3NldC5pZCArICdfdGV4dHVyZScsIGFzc2V0LnRleHR1cmUsIG1hdGVyaWFsKTtcbiAgICAgIG1hdGVyaWFsLnRleHR1cmUuY29sb3JTcGFjZSA9IFNSR0JDb2xvclNwYWNlO1xuICAgICAgbWF0ZXJpYWwudGV4dHVyZUZpbGVuYW1lID0gYXNzZXQudGV4dHVyZUZpbGVuYW1lO1xuICAgIH1cbiAgICBpZiAoYXNzZXQubm9ybWFsKSB7XG4gICAgICBtYXRlcmlhbC5ub3JtYWwgPSBhd2FpdCBJbWFnZVV0aWxzLkNyZWF0ZVRleHR1cmVGcm9tQmFzZTY0KGFzc2V0LmlkICsgJ19ub3JtYWwnLCBhc3NldC5ub3JtYWwsIG1hdGVyaWFsKTtcbiAgICAgIG1hdGVyaWFsLm5vcm1hbEZpbGVuYW1lID0gYXNzZXQubm9ybWFsRmlsZW5hbWU7XG4gICAgfVxuICAgIGlmIChhc3NldC5vcm0pIHtcbiAgICAgIG1hdGVyaWFsLmFvID0gYXdhaXQgSW1hZ2VVdGlscy5DcmVhdGVUZXh0dXJlRnJvbUJhc2U2NChhc3NldC5pZCArICdfb3JtJywgYXNzZXQub3JtLCBtYXRlcmlhbCk7XG4gICAgICBtYXRlcmlhbC5yb3VnaG5lc3MgPSBtYXRlcmlhbC5hbztcbiAgICAgIG1hdGVyaWFsLm1ldGFsbmVzcyA9IG1hdGVyaWFsLmFvO1xuICAgICAgbWF0ZXJpYWwuYW9GaWxlbmFtZSA9IGFzc2V0Lm9ybUZpbGVuYW1lO1xuICAgICAgbWF0ZXJpYWwucm91Z2huZXNzRmlsZW5hbWUgPSBhc3NldC5vcm1GaWxlbmFtZTtcbiAgICAgIG1hdGVyaWFsLm1ldGFsbmVzc0ZpbGVuYW1lID0gYXNzZXQub3JtRmlsZW5hbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChhc3NldC5hbykge1xuICAgICAgICBtYXRlcmlhbC5hbyA9IGF3YWl0IEltYWdlVXRpbHMuQ3JlYXRlVGV4dHVyZUZyb21CYXNlNjQoYXNzZXQuaWQgKyAnX2FvJywgYXNzZXQuYW8sIG1hdGVyaWFsKTtcbiAgICAgICAgbWF0ZXJpYWwuYW9GaWxlbmFtZSA9IGFzc2V0LmFvRmlsZW5hbWU7XG4gICAgICB9XG4gICAgICBpZiAoYXNzZXQubWV0YWxuZXNzKSB7XG4gICAgICAgIG1hdGVyaWFsLm1ldGFsbmVzcyA9IGF3YWl0IEltYWdlVXRpbHMuQ3JlYXRlVGV4dHVyZUZyb21CYXNlNjQoYXNzZXQuaWQgKyAnX21ldGFsbmVzcycsIGFzc2V0Lm1ldGFsbmVzcywgbWF0ZXJpYWwpO1xuICAgICAgICBtYXRlcmlhbC5tZXRhbG5lc3NGaWxlbmFtZSA9IGFzc2V0Lm1ldGFsbmVzc0ZpbGVuYW1lO1xuICAgICAgfVxuICAgICAgaWYgKGFzc2V0LnJvdWdobmVzcykge1xuICAgICAgICBtYXRlcmlhbC5yb3VnaG5lc3MgPSBhd2FpdCBJbWFnZVV0aWxzLkNyZWF0ZVRleHR1cmVGcm9tQmFzZTY0KGFzc2V0LmlkICsgJ19yb3VnaG5lc3MnLCBhc3NldC5yb3VnaG5lc3MsIG1hdGVyaWFsKTtcbiAgICAgICAgbWF0ZXJpYWwucm91Z2huZXNzRmlsZW5hbWUgPSBhc3NldC5yb3VnaG5lc3NGaWxlbmFtZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFzc2V0LmRpc3BsYWNlbWVudCkge1xuICAgICAgbWF0ZXJpYWwuZGlzcGxhY2VtZW50ID0gYXdhaXQgSW1hZ2VVdGlscy5DcmVhdGVUZXh0dXJlRnJvbUJhc2U2NChhc3NldC5pZCArICdfZGlzcGxhY2VtZW50JywgYXNzZXQuZGlzcGxhY2VtZW50LCBtYXRlcmlhbCk7XG4gICAgICBtYXRlcmlhbC5kaXNwbGFjZW1lbnRGaWxlbmFtZSA9IGFzc2V0LmRpc3BsYWNlbWVudEZpbGVuYW1lO1xuICAgIH1cbiAgICBpZiAoYXNzZXQuZW52TWFwKSB7XG4gICAgICBtYXRlcmlhbC5lbnZNYXAgPSBhd2FpdCBJbWFnZVV0aWxzLkNyZWF0ZVRleHR1cmVGcm9tQmFzZTY0KGFzc2V0LmlkICsgJ19lbnYnLCBhc3NldC5lbnZNYXAsIG1hdGVyaWFsLCB0cnVlKTtcbiAgICAgIG1hdGVyaWFsLmVudk1hcEZpbGVuYW1lID0gYXNzZXQuZW52TWFwRmlsZW5hbWU7XG4gICAgfVxuICAgIGlmIChhc3NldC5zaGVlbkNvbG9yTWFwKSB7XG4gICAgICBtYXRlcmlhbC5zaGVlbkNvbG9yTWFwID0gYXdhaXQgSW1hZ2VVdGlscy5DcmVhdGVUZXh0dXJlRnJvbUJhc2U2NChhc3NldC5pZCArICdfc2hlZW5fY29sb3InLCBhc3NldC5zaGVlbkNvbG9yTWFwLCBtYXRlcmlhbCk7XG4gICAgICBtYXRlcmlhbC5zaGVlbkNvbG9yTWFwRmlsZU5hbWUgPSBhc3NldC5zaGVlbkNvbG9yTWFwRmlsZW5hbWU7XG4gICAgfVxuICAgIGlmIChhc3NldC5zaGVlblJvdWdobmVzc01hcCkge1xuICAgICAgbWF0ZXJpYWwuc2hlZW5Sb3VnaG5lc3NNYXAgPSBhd2FpdCBJbWFnZVV0aWxzLkNyZWF0ZVRleHR1cmVGcm9tQmFzZTY0KGFzc2V0LmlkICsgJ19zaGVlbl9yb3VnaG5lc3MnLCBhc3NldC5zaGVlblJvdWdobmVzc01hcCwgbWF0ZXJpYWwpO1xuICAgICAgbWF0ZXJpYWwuc2hlZW5Sb3VnaG5lc3NNYXBGaWxlTmFtZSA9IGFzc2V0LnNoZWVuUm91Z2huZXNzTWFwRmlsZW5hbWU7XG4gICAgfVxuICAgIGlmIChhc3NldC50cmFuc21pc3Npb25NYXApIHtcbiAgICAgIG1hdGVyaWFsLnRyYW5zbWlzc2lvbk1hcCA9IGF3YWl0IEltYWdlVXRpbHMuQ3JlYXRlVGV4dHVyZUZyb21CYXNlNjQoYXNzZXQuaWQgKyAnX3RyYW5zbWlzc2lvbicsIGFzc2V0LnRyYW5zbWlzc2lvbk1hcCwgbWF0ZXJpYWwpO1xuICAgICAgbWF0ZXJpYWwudHJhbnNtaXNzaW9uTWFwRmlsZU5hbWUgPSBhc3NldC50cmFuc21pc3Npb25NYXBGaWxlbmFtZTtcbiAgICB9XG4gICAgaWYgKGFzc2V0LmVtaXNzaXZlKSB7XG4gICAgICBtYXRlcmlhbC5lbWlzc2l2ZSA9IGF3YWl0IEltYWdlVXRpbHMuQ3JlYXRlVGV4dHVyZUZyb21CYXNlNjQoYXNzZXQuaWQgKyAnX2VtaXNzaXZlJywgYXNzZXQuZW1pc3NpdmUsIG1hdGVyaWFsKTtcbiAgICAgIG1hdGVyaWFsLmVtaXNzaXZlRmlsZU5hbWUgPSBhc3NldC5lbWlzc2l2ZUZpbGVuYW1lO1xuICAgIH1cbiAgICBtYXRlcmlhbC5zaGVlbiA9IGFzc2V0LnNoZWVuO1xuICAgIG1hdGVyaWFsLmVtaXNzaXZlSW50ZW5zaXR5VmFsdWUgPSBhc3NldC5lbWlzc2l2ZUludGVuc2l0eTtcbiAgICBtYXRlcmlhbC5lbWlzc2l2ZVZhbHVlID0gYXNzZXQuZW1pc3NpdmVWYWx1ZTtcbiAgICBtYXRlcmlhbC5zaWRlID0gYXNzZXQuc2lkZTtcbiAgICBtYXRlcmlhbC5zaGVlbkNvbG9yID0gYXNzZXQuc2hlZW5Db2xvcjtcbiAgICBtYXRlcmlhbC5zaGVlblJvdWdobmVzcyA9IGFzc2V0LnNoZWVuUm91Z2huZXNzO1xuICAgIG1hdGVyaWFsLm9wYWNpdHkgPSBhc3NldC5vcGFjaXR5O1xuICAgIG1hdGVyaWFsLnRyYW5zcGFyZW50ID0gYXNzZXQudHJhbnNwYXJlbnQ7XG4gICAgbWF0ZXJpYWwuZW52TWFwSW50ZW5zaXR5ID0gYXNzZXQuZW52TWFwSW50ZW5zaXR5O1xuICAgIG1hdGVyaWFsLnJlZmxlY3Rpdml0eSA9IGFzc2V0LnJlZmxlY3Rpdml0eTtcbiAgICBtYXRlcmlhbC5kaXNwbGFjZW1lbnRWYWx1ZSA9IGFzc2V0LmRpc3BsYWNlbWVudFZhbHVlO1xuICAgIG1hdGVyaWFsLnRyYW5zbWlzc2lvbiA9IGFzc2V0LnRyYW5zbWlzc2lvbjtcbiAgICBtYXRlcmlhbC5pb3IgPSBhc3NldC5pb3I7XG4gICAgbWF0ZXJpYWwudGhpY2tuZXNzID0gYXNzZXQudGhpY2tuZXNzO1xuICAgIG1hdGVyaWFsLnNwZWN1bGFySW50ZW5zaXR5ID0gYXNzZXQuc3BlY3VsYXJJbnRlbnNpdHk7XG4gICAgcmV0dXJuIG1hdGVyaWFsO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzZXRTZXR0aW5nc09mTWF0ZXJpYWwobWF0ZXJpYWw6IE1hdGVyaWFsLCBzZXR0aW5nczogYW55KTogdm9pZCB7XG4gICAgY29uc3Qgc2hpbmluZXNzID0gcGFyc2VGbG9hdChzZXR0aW5nc1sncG93ZXInXSk7XG4gICAgaWYgKCFpc05hTihzaGluaW5lc3MpKSB7XG4gICAgICBtYXRlcmlhbC5zaGluaW5lc3MgPSBzaGluaW5lc3M7XG4gICAgICAvLyBtYXRlcmlhbC5yb3VnaG5lc3MgPSAxIC0gKHNoaW5pbmVzcyAvIDEwMCk7XG4gICAgfVxuXG4gICAgY29uc3QgbGV2ZWwgPSBwYXJzZUZsb2F0KHNldHRpbmdzWydsZXZlbCddKTtcbiAgICBpZiAoIWlzTmFOKGxldmVsKSkge1xuICAgICAgbWF0ZXJpYWwuc3BlY3VsYXIgPSBuZXcgQ29sb3IobGV2ZWwsIGxldmVsLCBsZXZlbCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVwZWF0T2JqZWN0VXNlZDogYm9vbGVhbiA9IHNldHRpbmdzLmhhc093blByb3BlcnR5KCdyZXBlYXQnKTtcbiAgICBjb25zdCByZXBlYXR4ID0gcmVwZWF0T2JqZWN0VXNlZCA/IHBhcnNlRmxvYXQoc2V0dGluZ3NbJ3JlcGVhdCddWydyZXBlYXR4J10pIDogcGFyc2VGbG9hdChzZXR0aW5nc1sncmVwZWF0eCddKTtcbiAgICBpZiAoIWlzTmFOKHJlcGVhdHgpKSB7XG4gICAgICBtYXRlcmlhbC5yZXBlYXRYID0gcmVwZWF0eDtcbiAgICB9XG5cbiAgICBjb25zdCByZXBlYXR5ID0gcmVwZWF0T2JqZWN0VXNlZCA/IHBhcnNlRmxvYXQoc2V0dGluZ3NbJ3JlcGVhdCddWydyZXBlYXR5J10pIDogcGFyc2VGbG9hdChzZXR0aW5nc1sncmVwZWF0eSddKTtcbiAgICBpZiAoIWlzTmFOKHJlcGVhdHkpKSB7XG4gICAgICBtYXRlcmlhbC5yZXBlYXRZID0gcmVwZWF0eTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRhbG5lc3MgPSBwYXJzZUZsb2F0KHNldHRpbmdzWydtZXRhbG5lc3MnXSk7XG4gICAgaWYgKCFpc05hTihtZXRhbG5lc3MpKSB7XG4gICAgICBtYXRlcmlhbC5tZXRhbG5lc3NWYWx1ZSA9IE1hdGgubWluKDEsIG1ldGFsbmVzcyk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm91Z2huZXNzID0gcGFyc2VGbG9hdChzZXR0aW5nc1sncm91Z2huZXNzJ10pO1xuICAgIGlmICghaXNOYU4ocm91Z2huZXNzKSkge1xuICAgICAgbWF0ZXJpYWwucm91Z2huZXNzVmFsdWUgPSBNYXRoLm1pbigxLCByb3VnaG5lc3MpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
|
-
import
|
|
3
|
-
import { VariationSettings } from "../model/variation-settings";
|
|
2
|
+
import { VariationSettings } from '../model/variation-settings';
|
|
4
3
|
// @ts-ignore
|
|
5
|
-
import JSZip from
|
|
4
|
+
import JSZip from 'jszip';
|
|
5
|
+
import { Color, MaterialLoader, SRGBColorSpace } from 'three';
|
|
6
6
|
// @dynamic
|
|
7
7
|
export class VariationUtils {
|
|
8
8
|
static ClearCache() {
|
|
@@ -153,37 +153,41 @@ export class VariationUtils {
|
|
|
153
153
|
variationSettings.sheenRoughnessMap = yield VariationUtils.LoadFileContentFromZip(zipContent.files[index.sheenRoughnessMapFile], index.sheenRoughnessMapFile);
|
|
154
154
|
variationSettings.sheenRoughnessMapFilename = index.sheenColorMapFile;
|
|
155
155
|
}
|
|
156
|
+
if (index.transmissionMapFile) {
|
|
157
|
+
variationSettings.transmissionMap = yield VariationUtils.LoadFileContentFromZip(zipContent.files[index.transmissionMapFile], index.transmissionMapFile);
|
|
158
|
+
variationSettings.transmissionMapFilename = index.transmissionMapFile;
|
|
159
|
+
}
|
|
156
160
|
if (index.repeat) {
|
|
157
|
-
variationSettings.settings =
|
|
158
|
-
|
|
159
|
-
repeaty: index.repeat.repeaty
|
|
160
|
-
};
|
|
161
|
+
variationSettings.settings.repeatx = index.repeat.repeatx;
|
|
162
|
+
variationSettings.settings.repeaty = index.repeat.repeaty;
|
|
161
163
|
}
|
|
162
|
-
variationSettings.metalness = index.metalness;
|
|
163
|
-
variationSettings.roughness = index.roughness;
|
|
164
|
+
variationSettings.settings.metalness = index.metalness;
|
|
165
|
+
variationSettings.settings.roughness = index.roughness;
|
|
164
166
|
if (index.sheen && typeof index.sheen === 'object') {
|
|
165
167
|
variationSettings.sheen = 1;
|
|
166
|
-
variationSettings.sheenColor = new
|
|
168
|
+
variationSettings.sheenColor = new Color(index.sheen.r, index.sheen.g, index.sheen.b).getHexString(SRGBColorSpace);
|
|
167
169
|
}
|
|
168
170
|
else {
|
|
169
171
|
variationSettings.sheen = index.sheen;
|
|
170
172
|
}
|
|
171
173
|
if (index.sheenColor) {
|
|
172
|
-
variationSettings.sheenColor = new
|
|
174
|
+
variationSettings.sheenColor = new Color(index.sheenColor.r, index.sheenColor.g, index.sheenColor.b).getHexString(SRGBColorSpace);
|
|
173
175
|
}
|
|
174
176
|
variationSettings.sheenRoughness = index.sheenRoughness;
|
|
175
177
|
variationSettings.envMapIntensity = index.envMapIntensity;
|
|
176
178
|
variationSettings.transparent = index.transparent;
|
|
177
179
|
variationSettings.opacity = index.opacity;
|
|
178
180
|
if (index.emissiveValue) {
|
|
179
|
-
variationSettings.emissiveValue = new
|
|
181
|
+
variationSettings.emissiveValue = new Color(index.emissiveValue.r, index.emissiveValue.g, index.emissiveValue.b).getHexString(SRGBColorSpace);
|
|
180
182
|
}
|
|
181
183
|
variationSettings.emissiveIntensity = index.emissiveIntensity;
|
|
182
184
|
variationSettings.reflectivity = index.reflectivity;
|
|
183
185
|
variationSettings.displacementValue = index.displacementValue;
|
|
184
186
|
variationSettings.side = index.side;
|
|
185
|
-
variationSettings.transparency = index.transparency;
|
|
186
187
|
variationSettings.transmission = index.transmission;
|
|
188
|
+
variationSettings.ior = index.ior;
|
|
189
|
+
variationSettings.thickness = index.thickness;
|
|
190
|
+
variationSettings.specularIntensity = index.specularIntensity;
|
|
187
191
|
});
|
|
188
192
|
}
|
|
189
193
|
static CreateSettingsBasedOnFileName(variationSettings, zipContent) {
|
|
@@ -252,6 +256,12 @@ export class VariationUtils {
|
|
|
252
256
|
variationSettings.sheenRoughnessMapFilename = fileName;
|
|
253
257
|
}));
|
|
254
258
|
}
|
|
259
|
+
else if (file.name.toLowerCase().indexOf('transmissionMap') > -1 && this.FileIsImage(file.name)) {
|
|
260
|
+
allLoaded.push(zipContent.files[fileName].async('base64').then((transmissionMapFile) => {
|
|
261
|
+
variationSettings.transmissionMap = `data:image/${this.GetBase64FileType(file.name)};base64,${transmissionMapFile}`;
|
|
262
|
+
variationSettings.transmissionMapFilename = fileName;
|
|
263
|
+
}));
|
|
264
|
+
}
|
|
255
265
|
else if (file.name.indexOf('.jp') > -1) {
|
|
256
266
|
allLoaded.push(zipContent.files[fileName].async('base64').then((textureFile) => {
|
|
257
267
|
variationSettings.texture = 'data:image/jpeg;base64,' + textureFile;
|
|
@@ -274,7 +284,7 @@ export class VariationUtils {
|
|
|
274
284
|
});
|
|
275
285
|
}
|
|
276
286
|
static LoadMaterialFromJson(material) {
|
|
277
|
-
const loader = new
|
|
287
|
+
const loader = new MaterialLoader();
|
|
278
288
|
if (material.textures) {
|
|
279
289
|
const textures = {};
|
|
280
290
|
for (let i = 0; i < material.textures.length; i++) {
|
|
@@ -353,4 +363,4 @@ export class VariationUtils {
|
|
|
353
363
|
}
|
|
354
364
|
}
|
|
355
365
|
VariationUtils.MaterialCache = new Map();
|
|
356
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWF0aW9uLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3ZhcmlhdGlvbi11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsYUFBYTtBQUNiLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUkxQixXQUFXO0FBQ1gsTUFBTSxPQUFPLGNBQWM7SUFHbEIsTUFBTSxDQUFDLFVBQVU7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sTUFBTSxDQUFPLGFBQWEsQ0FBQyxTQUFpQixFQUFFLFFBQWdCOztZQUNuRSxPQUFPLElBQUksT0FBTyxDQUFDLENBQU8sT0FBaUIsRUFBRSxNQUFnQixFQUFFLEVBQUU7Z0JBQy9ELElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNmO2dCQUNELElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2xDLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN2QztnQkFDRCxNQUFNLEVBQUUsR0FBVyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLElBQUk7b0JBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQzVCLFNBQVMsSUFBSSxHQUFHLENBQUM7cUJBQ2xCO29CQUNELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEVBQUU7d0JBQy9DLE9BQU8sQ0FBQyxLQUFL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QUFFLENBQUM7UUFDckcsUUFBUSxHQUFHLEVBQUU7WUFDWCxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxJQUFJLENBQUM7WUFDZDtnQkFDRSxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNILENBQUM7SUFFTyxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBZ0I7UUFDL0MsTUFBTSxHQUFHLEdBQVcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckcsUUFBUSxHQUFHLEVBQUU7WUFDWCxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssTUFBTTtnQkFDVCxPQUFPLE1BQU0sQ0FBQztZQUNoQixLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxLQUFLLENBQUM7WUFDZixLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxLQUFLLENBQUM7WUFDZjtnQkFDRSxPQUFPLE1BQU0sQ0FBQztTQUNqQjtJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDVixNQUFNLENBQU8sYUFBYSxDQUFDLElBQUk7O1lBQ3JDLElBQUk7Z0JBQ0YsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxNQUFNLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDcEM7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixPQUFPLElBQUksQ0FBQzthQUNiO1FBQ0gsQ0FBQztLQUFBOztBQTFVYyw0QkFBYSxHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSBcInRocmVlXCI7XHJcbmltcG9ydCB7VmFyaWF0aW9uU2V0dGluZ3N9IGZyb20gXCIuLi9tb2RlbC92YXJpYXRpb24tc2V0dGluZ3NcIjtcclxuLy8gQHRzLWlnbm9yZVxyXG5pbXBvcnQgSlNaaXAgZnJvbSBcImpzemlwXCI7XHJcbmltcG9ydCB7R0xURiwgR0xURkxvYWRlcn0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL2xvYWRlcnMvR0xURkxvYWRlcic7XHJcbmltcG9ydCB7TWVzaCwgT2JqZWN0M0R9IGZyb20gJ3RocmVlJztcclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBWYXJpYXRpb25VdGlscyB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgTWF0ZXJpYWxDYWNoZTogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBDbGVhckNhY2hlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5NYXRlcmlhbENhY2hlLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGFzeW5jIExvYWRWYXJpYXRpb24oYXNzZXRQYXRoOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFZhcmlhdGlvblNldHRpbmdzPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIGlmICghZmlsZU5hbWUpIHtcclxuICAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChmaWxlTmFtZS5pbmRleE9mKCdpb25lM2QnKSA8IDApIHtcclxuICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLmNvbmNhdCgnLmlvbmUzZCcpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHIoMCwgZmlsZU5hbWUubGFzdEluZGV4T2YoJy5pb25lM2QnKSk7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKCFhc3NldFBhdGguZW5kc1dpdGgoJy8nKSkge1xyXG4gICAgICAgICAgYXNzZXRQYXRoICs9ICcvJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF3aW5kb3cuaGFzT3duUHJvcGVydHkoJ2Rvd25sb2FkVmFyaWF0aW9uJykpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Rvd25sb2FkVmFyaWF0aW9uIG5vdCBkZWZpbmVkIGluIHdpbmRvdyBnbG9iYWwnKTtcclxuICAgICAgICAgIHJlamVjdCgnZG93bmxvYWRWYXJpYXRpb24gbm90IGRlZmluZWQgaW4gd2luZG93IGdsb2JhbCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZmlsZTtcclxuICAgICAgICBpZiAodGhpcy5NYXRlcmlhbENhY2hlLmhhcyhpZCkpIHtcclxuICAgICAgICAgIHJlc29sdmUodGhpcy5NYXRlcmlhbENhY2hlLmdldChpZCkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmaWxlID0gYXdhaXQgKHdpbmRvdyBhcyBhbnkpLmRvd25sb2FkVmFyaWF0aW9uKGAke2Fzc2V0UGF0aC5yZXBsYWNlKCdodHRwczovL2NkbjEuY29saWpuLWl0Lm5sLycsICcnKX12YXJpYXRpb24vJHtmaWxlTmFtZX1gKTtcclxuICAgICAgICAgIGNvbnN0IHNldHRpbmdzOiBWYXJpYXRpb25TZXR0aW5ncyA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkdldFZhcmlhdGlvblNldHRpbmdzRnJvbUZpbGUoaWQsIGZpbGUpO1xyXG4gICAgICAgICAgdGhpcy5NYXRlcmlhbENhY2hlLnNldChpZCwgc2V0dGluZ3MpO1xyXG4gICAgICAgICAgcmVzb2x2ZShzZXR0aW5ncyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBjb25zdCBtdXRlID0gZXJyO1xyXG4gICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBzdGF0aWMgR2V0TWF0ZXJpYWxGcm9tTmFtZSh2YXJpYXRpb25Gb2xkZXI6IHN0cmluZywgbWF0ZXJpYWw6IGFueSk6IFByb21pc2U8TWVzaFN0YW5kYXJkTWF0ZXJpYWw+IHtcclxuICAvLyAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcclxuICAvLyAgICAgaWYgKCFtYXRlcmlhbCkge1xyXG4gIC8vICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgaWYgKHRoaXMuTWF0ZXJpYWxDYWNoZS5oYXMobWF0ZXJpYWwubmFtZSkpIHtcclxuICAvLyAgICAgICByZXNvbHZlKHRoaXMuTWF0ZXJpYWxDYWNoZS5nZXQobWF0ZXJpYWwubmFtZSkuY2xvbmUoKSk7XHJcbiAgLy8gICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgVmFyaWF0aW9uVXRpbHMuTG9hZFZhcmlhdGlvbih2YXJpYXRpb25Gb2xkZXIsIG1hdGVyaWFsLm5hbWUsIGZhbHNlKS50aGVuKChzZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MpID0+IHtcclxuICAvLyAgICAgICAgIGlmIChzZXR0aW5ncykge1xyXG4gIC8vICAgICAgICAgICBBc3NldFV0aWxzLkNyZWF0ZU1hdGVyaWFsRnJvbUFzc2V0KHNldHRpbmdzKS50aGVuKChtYXRlcmlhbE9iajogTWF0ZXJpYWwpID0+IHtcclxuICAvLyAgICAgICAgICAgICBjb25zdCBtYXRlcmlhbFBhcmFtczogTWVzaFN0YW5kYXJkTWF0ZXJpYWxQYXJhbWV0ZXJzID0ge307XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMubmFtZSA9IG1hdGVyaWFsLm5hbWU7XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMubWFwID0gbWF0ZXJpYWxPYmoudGV4dHVyZTtcclxuICAvLyAgICAgICAgICAgICBtYXRlcmlhbFBhcmFtcy5ub3JtYWxNYXAgPSBtYXRlcmlhbE9iai5ub3JtYWw7XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMuYW9NYXAgPSBtYXRlcmlhbE9iai5hbztcclxuICAvLyAgICAgICAgICAgICBtYXRlcmlhbFBhcmFtcy5yb3VnaG5lc3NNYXAgPSBtYXRlcmlhbE9iai5yb3VnaG5lc3M7XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMubWV0YWxuZXNzTWFwID0gbWF0ZXJpYWxPYmoubWV0YWxuZXNzO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLnJvdWdobmVzcyA9IDE7XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMubWV0YWxuZXNzID0gMTtcclxuICAvLyAgICAgICAgICAgICBjb25zdCBwYnJNYXQ6IE1lc2hTdGFuZGFyZE1hdGVyaWFsID0gbmV3IE1lc2hTdGFuZGFyZE1hdGVyaWFsKG1hdGVyaWFsUGFyYW1zKTtcclxuICAvLyAgICAgICAgICAgICB0aGlzLk1hdGVyaWFsQ2FjaGUuc2V0KG1hdGVyaWFsLm5hbWUsIHBick1hdCk7XHJcbiAgLy8gICAgICAgICAgICAgcmVzb2x2ZShwYnJNYXQuY2xvbmUoKSk7XHJcbiAgLy8gICAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICAgICAgcmVzb2x2ZShtYXRlcmlhbCk7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfSk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgR2V0VmFyaWF0aW9uU2V0dGluZ3NGcm9tRmlsZShpZDogc3RyaW5nLCBjb21wcmVzc2VkRmlsZTogYW55KTogUHJvbWlzZTxWYXJpYXRpb25TZXR0aW5ncz4ge1xyXG4gICAgaWYgKCFjb21wcmVzc2VkRmlsZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IHppcENvbnRlbnQgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5HZXRaaXBDb250ZW50KGNvbXByZXNzZWRGaWxlKTtcclxuICAgIGNvbnN0IHZhcmlhdGlvblNldHRpbmdzOiBWYXJpYXRpb25TZXR0aW5ncyA9IG5ldyBWYXJpYXRpb25TZXR0aW5ncygpO1xyXG4gICAgbGV0IGluZGV4O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3MuaWQgPSBpZDtcclxuXHJcbiAgICBpZiAoemlwQ29udGVudCkge1xyXG4gICAgICBpZiAoemlwQ29udGVudC5maWxlc1snbWF0ZXJpYWwuZ2xiJ10pIHtcclxuICAgICAgICBjb25zdCBtYXRlcmlhbDogc3RyaW5nID0gYXdhaXQgemlwQ29udGVudC5maWxlc1snbWF0ZXJpYWwuZ2xiJ10uYXN5bmMoJ2FycmF5YnVmZmVyJyk7XHJcbiAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MubWF0ZXJpYWwgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkTWF0ZXJpYWxGcm9tR2xiKG1hdGVyaWFsKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoemlwQ29udGVudC5maWxlc1snaW5kZXguanNvbiddKSB7XHJcbiAgICAgICAgICBjb25zdCBpbmRleEZpbGU6IHN0cmluZyA9IGF3YWl0IHppcENvbnRlbnQuZmlsZXNbJ2luZGV4Lmpzb24nXS5hc3luYygnc3RyaW5nJyk7XHJcbiAgICAgICAgICBpbmRleCA9IEpTT04ucGFyc2UoaW5kZXhGaWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGluZGV4KSB7XHJcbiAgICAgICAgICBhd2FpdCBWYXJpYXRpb25VdGlscy5DcmVhdGVTZXR0aW5nc0Jhc2VkT25JbmRleChpbmRleCwgdmFyaWF0aW9uU2V0dGluZ3MsIHppcENvbnRlbnQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhd2FpdCBWYXJpYXRpb25VdGlscy5DcmVhdGVTZXR0aW5nc0Jhc2VkT25GaWxlTmFtZSh2YXJpYXRpb25TZXR0aW5ncywgemlwQ29udGVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFyaWF0aW9uU2V0dGluZ3M7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBhc3luYyBDcmVhdGVTZXR0aW5nc0Jhc2VkT25JbmRleChpbmRleDogYW55LCB2YXJpYXRpb25TZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MsIHppcENvbnRlbnQ6IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKGluZGV4Lm5vcm1hbEZpbGUpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mubm9ybWFsID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4Lm5vcm1hbEZpbGVdLCBpbmRleC5ub3JtYWxGaWxlKTtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mubm9ybWFsRmlsZW5hbWUgPSBpbmRleC5ub3JtYWxGaWxlO1xyXG4gICAgfVxyXG4gICAgaWYgKGluZGV4LmRpZmZ1c2VGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLnRleHR1cmUgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguZGlmZnVzZUZpbGVdLCBpbmRleC5kaWZmdXNlRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLnRleHR1cmVGaWxlbmFtZSA9IGluZGV4LmRpZmZ1c2VGaWxlO1xyXG4gICAgfVxyXG4gICAgaWYgKGluZGV4Lm9ybUZpbGUpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mub3JtID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4Lm9ybUZpbGVdLCBpbmRleC5vcm1GaWxlKTtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mub3JtRmlsZW5hbWUgPSBpbmRleC5vcm1GaWxlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGluZGV4LmFvRmlsZSkge1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmFvID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LmFvRmlsZV0sIGluZGV4LmFvRmlsZSk7XHJcbiAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuYW9GaWxlbmFtZSA9IGluZGV4LmFvRmlsZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaW5kZXgubWV0YWxuZXNzRmlsZSkge1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm1ldGFsbmVzcyA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5tZXRhbG5lc3NGaWxlXSwgaW5kZXgubWV0YWxuZXNzRmlsZSk7XHJcbiAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MubWV0YWxuZXNzRmlsZW5hbWUgPSBpbmRleC5tZXRhbG5lc3NGaWxlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpbmRleC5yb3VnaG5lc3NGaWxlKSB7XHJcbiAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LnJvdWdobmVzc0ZpbGVdLCBpbmRleC5yb3VnaG5lc3NGaWxlKTtcclxuICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5yb3VnaG5lc3NGaWxlbmFtZSA9IGluZGV4LnJvdWdobmVzc0ZpbGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChpbmRleC5kaXNwbGFjZW1lbnRGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmRpc3BsYWNlbWVudCA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5kaXNwbGFjZW1lbnRGaWxlXSwgaW5kZXguZGlzcGxhY2VtZW50RmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmRpc3BsYWNlbWVudEZpbGVuYW1lID0gaW5kZXguZGlzcGxhY2VtZW50RmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5lbWlzc2l2ZUZpbGUpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW1pc3NpdmUgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguZW1pc3NpdmVGaWxlXSwgaW5kZXguZW1pc3NpdmVGaWxlKTtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW1pc3NpdmVGaWxlbmFtZSA9IGluZGV4LmVtaXNzaXZlRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5lbnZNYXBGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVudk1hcCA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5lbnZNYXBGaWxlXSwgaW5kZXguZW52TWFwRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVudk1hcEZpbGVuYW1lID0gaW5kZXguZW52TWFwRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5zaGVlbkNvbG9yTWFwRmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5zaGVlbkNvbG9yTWFwID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LnNoZWVuQ29sb3JNYXBGaWxlXSwgaW5kZXguc2hlZW5Db2xvck1hcEZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5zaGVlbkNvbG9yTWFwRmlsZW5hbWUgPSBpbmRleC5zaGVlbkNvbG9yTWFwRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5zaGVlblJvdWdobmVzc01hcEZpbGUpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Sb3VnaG5lc3NNYXAgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguc2hlZW5Sb3VnaG5lc3NNYXBGaWxlXSwgaW5kZXguc2hlZW5Sb3VnaG5lc3NNYXBGaWxlKTtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Sb3VnaG5lc3NNYXBGaWxlbmFtZSA9IGluZGV4LnNoZWVuQ29sb3JNYXBGaWxlO1xyXG4gICAgfVxyXG4gICAgaWYgKGluZGV4LnJlcGVhdCkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5ncyA9IHtcclxuICAgICAgICByZXBlYXR4OiBpbmRleC5yZXBlYXQucmVwZWF0eCxcclxuICAgICAgICByZXBlYXR5OiBpbmRleC5yZXBlYXQucmVwZWF0eVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3MgPSBpbmRleC5tZXRhbG5lc3M7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5yb3VnaG5lc3MgPSBpbmRleC5yb3VnaG5lc3M7XHJcblxyXG4gICAgaWYgKGluZGV4LnNoZWVuICYmIHR5cGVvZiBpbmRleC5zaGVlbiA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW4gPSAxO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5zaGVlbkNvbG9yID0gbmV3IFRIUkVFLkNvbG9yKGluZGV4LnNoZWVuLnIsIGluZGV4LnNoZWVuLmcsIGluZGV4LnNoZWVuLmIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW4gPSBpbmRleC5zaGVlbjtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5zaGVlbkNvbG9yKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNoZWVuQ29sb3IgPSBuZXcgVEhSRUUuQ29sb3IoaW5kZXguc2hlZW5Db2xvci5yLCBpbmRleC5zaGVlbkNvbG9yLmcsIGluZGV4LnNoZWVuQ29sb3IuYik7XHJcbiAgICB9XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zaGVlblJvdWdobmVzcyA9IGluZGV4LnNoZWVuUm91Z2huZXNzO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3MuZW52TWFwSW50ZW5zaXR5ID0gaW5kZXguZW52TWFwSW50ZW5zaXR5O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3MudHJhbnNwYXJlbnQgPSBpbmRleC50cmFuc3BhcmVudDtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLm9wYWNpdHkgPSBpbmRleC5vcGFjaXR5O1xyXG4gICAgaWYgKGluZGV4LmVtaXNzaXZlVmFsdWUpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW1pc3NpdmVWYWx1ZSA9IG5ldyBUSFJFRS5Db2xvcihpbmRleC5lbWlzc2l2ZVZhbHVlLnIsIGluZGV4LmVtaXNzaXZlVmFsdWUuZywgaW5kZXguZW1pc3NpdmVWYWx1ZS5iKTtcclxuICAgIH1cclxuICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlSW50ZW5zaXR5ID0gaW5kZXguZW1pc3NpdmVJbnRlbnNpdHk7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5yZWZsZWN0aXZpdHkgPSBpbmRleC5yZWZsZWN0aXZpdHk7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5kaXNwbGFjZW1lbnRWYWx1ZSA9IGluZGV4LmRpc3BsYWNlbWVudFZhbHVlO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2lkZSA9IGluZGV4LnNpZGU7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy50cmFuc3BhcmVuY3kgPSBpbmRleC50cmFuc3BhcmVuY3k7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy50cmFuc21pc3Npb24gPSBpbmRleC50cmFuc21pc3Npb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBhc3luYyBDcmVhdGVTZXR0aW5nc0Jhc2VkT25GaWxlTmFtZSh2YXJpYXRpb25TZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MsIHppcENvbnRlbnQ6IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgYWxsTG9hZGVkOiBQcm9taXNlPFZhcmlhdGlvblNldHRpbmdzPltdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGZpbGVOYW1lIGluIHppcENvbnRlbnQuZmlsZXMpIHtcclxuICAgICAgaWYgKHppcENvbnRlbnQuZmlsZXMuaGFzT3duUHJvcGVydHkoZmlsZU5hbWUpKSB7XHJcbiAgICAgICAgY29uc3QgZmlsZTogYW55ID0gYXdhaXQgemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV07XHJcbiAgICAgICAgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ25vcm1hbCcpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigobm9ybWFsRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtub3JtYWxGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbEZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdhbycpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoYW9GaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuYW8gPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7YW9GaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmFvRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ21ldGFsbmVzcycpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigobWV0YWxuZXNzRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm1ldGFsbmVzcyA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHttZXRhbG5lc3NGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm1ldGFsbmVzc0ZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdyb3VnaG5lc3MnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKHJvdWdobmVzc0ZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5yb3VnaG5lc3MgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7cm91Z2huZXNzRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5yb3VnaG5lc3NGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZGlmZnVzZScpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZGlmZnVzZUZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke2RpZmZ1c2VGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnRleHR1cmVGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZGlzcGxhY2VtZW50JykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChkaXNwbGFjZW1lbnRGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZGlzcGxhY2VtZW50ID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke2Rpc3BsYWNlbWVudEZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZGlzcGxhY2VtZW50RmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2VtaXNzaXZlJykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChlbWlzc2l2ZUZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5lbWlzc2l2ZSA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtlbWlzc2l2ZUZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW1pc3NpdmVGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZW52TWFwJykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChlbnZNYXBGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW52TWFwID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke2Vudk1hcEZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW52TWFwRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ3NoZWVuQ29sb3JNYXAnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKHNoZWVuQ29sb3JNYXBGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Db2xvck1hcCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtzaGVlbkNvbG9yTWFwRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5zaGVlbkNvbG9yTWFwRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ3NoZWVuUm91Z2huZXNzTWFwJykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChzaGVlblJvdWdobmVzc01hcEZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5zaGVlblJvdWdobmVzc01hcCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtzaGVlblJvdWdobmVzc01hcEZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Sb3VnaG5lc3NNYXBGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLmluZGV4T2YoJy5qcCcpID4gLTEpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKCh0ZXh0dXJlRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnRleHR1cmUgPSAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgdGV4dHVyZUZpbGU7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnRleHR1cmVGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLmluZGV4T2YoJy5qc29uJykgPiAtMSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ3N0cmluZycpLnRoZW4oKHNldHRpbmdzRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNldHRpbmdzRmlsZU9iaiA9IEpTT04ucGFyc2Uoc2V0dGluZ3NGaWxlKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc2V0dGluZ3NGaWxlT2JqKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHNldHRpbmdzRmlsZU9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5nc1trZXldID0gc2V0dGluZ3NGaWxlT2JqW2tleV07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhd2FpdCBQcm9taXNlLmFsbChhbGxMb2FkZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgTG9hZE1hdGVyaWFsRnJvbUpzb24obWF0ZXJpYWw6IGFueSk6IFRIUkVFLk1hdGVyaWFsIHtcclxuICAgIGNvbnN0IGxvYWRlciA9IG5ldyBUSFJFRS5NYXRlcmlhbExvYWRlcigpO1xyXG4gICAgaWYgKG1hdGVyaWFsLnRleHR1cmVzKSB7XHJcbiAgICAgIGNvbnN0IHRleHR1cmVzOiB7fSA9IHt9O1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGVyaWFsLnRleHR1cmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGV4dHVyZXNbbWF0ZXJpYWwudGV4dHVyZXNbaV0udXVpZF0gPSBtYXRlcmlhbC50ZXh0dXJlc1tpXTtcclxuICAgICAgfVxyXG4gICAgICBsb2FkZXIuc2V0VGV4dHVyZXModGV4dHVyZXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxvYWRlci5wYXJzZShtYXRlcmlhbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBMb2FkTWF0ZXJpYWxGcm9tR2xiKG1hdGVyaWFsOiBhbnkpOiBQcm9taXNlPFRIUkVFLk1hdGVyaWFsPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIGlmICghd2luZG93Lmhhc093blByb3BlcnR5KCdsb2FkR0xURicpKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignbG9hZEdMVEYgbm90IGRlZmluZWQgaW4gd2luZG93IGdsb2JhbCcpO1xyXG4gICAgICAgIHJldHVybiByZWplY3QoKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBvYmo6IFRIUkVFLk9iamVjdDNEID0gYXdhaXQgKHdpbmRvdyBhcyBhbnkpLmxvYWRHTFRGKG1hdGVyaWFsLCBmYWxzZSk7XHJcbiAgICAgIGlmIChvYmopIHtcclxuICAgICAgICByZXR1cm4gcmVzb2x2ZSgob2JqLmNoaWxkcmVuWzBdIGFzIE1lc2gpLm1hdGVyaWFsKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBMb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcDogYW55LCBmaWxlTmFtZTogc3RyaW5nLCBiYXNlNjQ6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcclxuICAgICAgaWYgKHppcCAmJiBmaWxlTmFtZSkge1xyXG4gICAgICAgIHppcC5hc3luYyhiYXNlNjQgPyAnYmFzZTY0JyA6ICdzdHJpbmcnKS50aGVuKChmaWxlQ29udGVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoYmFzZTY0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGVOYW1lKX07YmFzZTY0LCR7ZmlsZUNvbnRlbnR9YCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXNvbHZlKGZpbGVDb250ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXNvbHZlKHVuZGVmaW5lZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgRmlsZUlzSW1hZ2UoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZXh0OiBzdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEsIGZpbGVOYW1lLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoZXh0KSB7XHJcbiAgICAgIGNhc2UgJ2pwZyc6XHJcbiAgICAgIGNhc2UgJ2pwZWcnOlxyXG4gICAgICBjYXNlICdwbmcnOlxyXG4gICAgICBjYXNlICdibXAnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIEdldEJhc2U2NEZpbGVUeXBlKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZXh0OiBzdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEsIGZpbGVOYW1lLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoZXh0KSB7XHJcbiAgICAgIGNhc2UgJ2pwZyc6XHJcbiAgICAgIGNhc2UgJ2pwZWcnOlxyXG4gICAgICAgIHJldHVybiAnanBlZyc7XHJcbiAgICAgIGNhc2UgJ3BuZyc6XHJcbiAgICAgICAgcmV0dXJuICdwbmcnO1xyXG4gICAgICBjYXNlICdibXAnOlxyXG4gICAgICAgIHJldHVybiAnYm1wJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ2pwZWcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gR2V0IHRoZSBjb250ZW50XHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgR2V0WmlwQ29udGVudChmaWxlKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGpzemlwID0gbmV3IEpTWmlwKCk7XHJcbiAgICAgIHJldHVybiBhd2FpdCBqc3ppcC5sb2FkQXN5bmMoZmlsZSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
366
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWF0aW9uLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3ZhcmlhdGlvbi11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsYUFBYTtBQUNiLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUMsS0FBSyxFQUFZLGNBQWMsRUFBa0IsY0FBYyxFQUFDLE1BQU0sT0FBTyxDQUFDO0FBRXRGLFdBQVc7QUFDWCxNQUFNLE9BQU8sY0FBYztJQUdsQixNQUFNLENBQUMsVUFBVTtRQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTSxNQUFNLENBQU8sYUFBYSxDQUFDLFNBQWlCLEVBQUUsUUFBZ0I7O1lBQ25FLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBTyxPQUFpQixFQUFFLE1BQWdCLEVBQUUsRUFBRTtnQkFDL0QsSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDYixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2Y7Z0JBQ0QsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDbEMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3ZDO2dCQUNELE1BQU0sRUFBRSxHQUFXLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDdkUsSUFBSTtvQkFDRixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDNUIsU0FBUyxJQUFJLEdBQUcsQ0FBQztxQkFDbEI7b0JBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMs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QUFNLENBQUM7WUFDWixLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssS0FBSztnQkFDUixPQUFPLElBQUksQ0FBQztZQUNkO2dCQUNFLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFnQjtRQUMvQyxNQUFNLEdBQUcsR0FBVyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyRyxRQUFRLEdBQUcsRUFBRTtZQUNYLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxNQUFNO2dCQUNULE9BQU8sTUFBTSxDQUFDO1lBQ2hCLEtBQUssS0FBSztnQkFDUixPQUFPLEtBQUssQ0FBQztZQUNmLEtBQUssS0FBSztnQkFDUixPQUFPLEtBQUssQ0FBQztZQUNmO2dCQUNFLE9BQU8sTUFBTSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNWLE1BQU0sQ0FBTyxhQUFhLENBQUMsSUFBSTs7WUFDckMsSUFBSTtnQkFDRixNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUMxQixPQUFPLE1BQU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNwQztZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLE9BQU8sSUFBSSxDQUFDO2FBQ2I7UUFDSCxDQUFDO0tBQUE7O0FBblZjLDRCQUFhLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1ZhcmlhdGlvblNldHRpbmdzfSBmcm9tICcuLi9tb2RlbC92YXJpYXRpb24tc2V0dGluZ3MnO1xyXG4vLyBAdHMtaWdub3JlXHJcbmltcG9ydCBKU1ppcCBmcm9tICdqc3ppcCc7XHJcbmltcG9ydCB7Q29sb3IsIE1hdGVyaWFsLCBNYXRlcmlhbExvYWRlciwgTWVzaCwgT2JqZWN0M0QsIFNSR0JDb2xvclNwYWNlfSBmcm9tICd0aHJlZSc7XHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgVmFyaWF0aW9uVXRpbHMge1xyXG4gIHByaXZhdGUgc3RhdGljIE1hdGVyaWFsQ2FjaGU6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgQ2xlYXJDYWNoZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuTWF0ZXJpYWxDYWNoZS5jbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBhc3luYyBMb2FkVmFyaWF0aW9uKGFzc2V0UGF0aDogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxWYXJpYXRpb25TZXR0aW5ncz4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICBpZiAoIWZpbGVOYW1lKSB7XHJcbiAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZmlsZU5hbWUuaW5kZXhPZignaW9uZTNkJykgPCAwKSB7XHJcbiAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5jb25jYXQoJy5pb25lM2QnKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpZDogc3RyaW5nID0gZmlsZU5hbWUuc3Vic3RyKDAsIGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuaW9uZTNkJykpO1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGlmICghYXNzZXRQYXRoLmVuZHNXaXRoKCcvJykpIHtcclxuICAgICAgICAgIGFzc2V0UGF0aCArPSAnLyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghd2luZG93Lmhhc093blByb3BlcnR5KCdkb3dubG9hZFZhcmlhdGlvbicpKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdkb3dubG9hZFZhcmlhdGlvbiBub3QgZGVmaW5lZCBpbiB3aW5kb3cgZ2xvYmFsJyk7XHJcbiAgICAgICAgICByZWplY3QoJ2Rvd25sb2FkVmFyaWF0aW9uIG5vdCBkZWZpbmVkIGluIHdpbmRvdyBnbG9iYWwnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGZpbGU7XHJcbiAgICAgICAgaWYgKHRoaXMuTWF0ZXJpYWxDYWNoZS5oYXMoaWQpKSB7XHJcbiAgICAgICAgICByZXNvbHZlKHRoaXMuTWF0ZXJpYWxDYWNoZS5nZXQoaWQpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZmlsZSA9IGF3YWl0ICh3aW5kb3cgYXMgYW55KS5kb3dubG9hZFZhcmlhdGlvbihgJHthc3NldFBhdGgucmVwbGFjZSgnaHR0cHM6Ly9jZG4xLmNvbGlqbi1pdC5ubC8nLCAnJyl9dmFyaWF0aW9uLyR7ZmlsZU5hbWV9YCk7XHJcbiAgICAgICAgICBjb25zdCBzZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5HZXRWYXJpYXRpb25TZXR0aW5nc0Zyb21GaWxlKGlkLCBmaWxlKTtcclxuICAgICAgICAgIHRoaXMuTWF0ZXJpYWxDYWNoZS5zZXQoaWQsIHNldHRpbmdzKTtcclxuICAgICAgICAgIHJlc29sdmUoc2V0dGluZ3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgY29uc3QgbXV0ZSA9IGVycjtcclxuICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgc3RhdGljIEdldE1hdGVyaWFsRnJvbU5hbWUodmFyaWF0aW9uRm9sZGVyOiBzdHJpbmcsIG1hdGVyaWFsOiBhbnkpOiBQcm9taXNlPE1lc2hTdGFuZGFyZE1hdGVyaWFsPiB7XHJcbiAgLy8gICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgLy8gICAgIGlmICghbWF0ZXJpYWwpIHtcclxuICAvLyAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGlmICh0aGlzLk1hdGVyaWFsQ2FjaGUuaGFzKG1hdGVyaWFsLm5hbWUpKSB7XHJcbiAgLy8gICAgICAgcmVzb2x2ZSh0aGlzLk1hdGVyaWFsQ2FjaGUuZ2V0KG1hdGVyaWFsLm5hbWUpLmNsb25lKCkpO1xyXG4gIC8vICAgICB9IGVsc2Uge1xyXG4gIC8vICAgICAgIFZhcmlhdGlvblV0aWxzLkxvYWRWYXJpYXRpb24odmFyaWF0aW9uRm9sZGVyLCBtYXRlcmlhbC5uYW1lLCBmYWxzZSkudGhlbigoc2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzKSA9PiB7XHJcbiAgLy8gICAgICAgICBpZiAoc2V0dGluZ3MpIHtcclxuICAvLyAgICAgICAgICAgQXNzZXRVdGlscy5DcmVhdGVNYXRlcmlhbEZyb21Bc3NldChzZXR0aW5ncykudGhlbigobWF0ZXJpYWxPYmo6IE1hdGVyaWFsKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxQYXJhbXM6IE1lc2hTdGFuZGFyZE1hdGVyaWFsUGFyYW1ldGVycyA9IHt9O1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm5hbWUgPSBtYXRlcmlhbC5uYW1lO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1hcCA9IG1hdGVyaWFsT2JqLnRleHR1cmU7XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMubm9ybWFsTWFwID0gbWF0ZXJpYWxPYmoubm9ybWFsO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLmFvTWFwID0gbWF0ZXJpYWxPYmouYW87XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMucm91Z2huZXNzTWFwID0gbWF0ZXJpYWxPYmoucm91Z2huZXNzO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1ldGFsbmVzc01hcCA9IG1hdGVyaWFsT2JqLm1ldGFsbmVzcztcclxuICAvLyAgICAgICAgICAgICBtYXRlcmlhbFBhcmFtcy5yb3VnaG5lc3MgPSAxO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1ldGFsbmVzcyA9IDE7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgcGJyTWF0OiBNZXNoU3RhbmRhcmRNYXRlcmlhbCA9IG5ldyBNZXNoU3RhbmRhcmRNYXRlcmlhbChtYXRlcmlhbFBhcmFtcyk7XHJcbiAgLy8gICAgICAgICAgICAgdGhpcy5NYXRlcmlhbENhY2hlLnNldChtYXRlcmlhbC5uYW1lLCBwYnJNYXQpO1xyXG4gIC8vICAgICAgICAgICAgIHJlc29sdmUocGJyTWF0LmNsb25lKCkpO1xyXG4gIC8vICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICAgIHJlc29sdmUobWF0ZXJpYWwpO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH0pO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIEdldFZhcmlhdGlvblNldHRpbmdzRnJvbUZpbGUoaWQ6IHN0cmluZywgY29tcHJlc3NlZEZpbGU6IGFueSk6IFByb21pc2U8VmFyaWF0aW9uU2V0dGluZ3M+IHtcclxuICAgIGlmICghY29tcHJlc3NlZEZpbGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCB6aXBDb250ZW50ID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuR2V0WmlwQ29udGVudChjb21wcmVzc2VkRmlsZSk7XHJcbiAgICBjb25zdCB2YXJpYXRpb25TZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MgPSBuZXcgVmFyaWF0aW9uU2V0dGluZ3MoKTtcclxuICAgIGxldCBpbmRleDtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLmlkID0gaWQ7XHJcblxyXG4gICAgaWYgKHppcENvbnRlbnQpIHtcclxuICAgICAgaWYgKHppcENvbnRlbnQuZmlsZXNbJ21hdGVyaWFsLmdsYiddKSB7XHJcbiAgICAgICAgY29uc3QgbWF0ZXJpYWw6IHN0cmluZyA9IGF3YWl0IHppcENvbnRlbnQuZmlsZXNbJ21hdGVyaWFsLmdsYiddLmFzeW5jKCdhcnJheWJ1ZmZlcicpO1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm1hdGVyaWFsID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZE1hdGVyaWFsRnJvbUdsYihtYXRlcmlhbCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHppcENvbnRlbnQuZmlsZXNbJ2luZGV4Lmpzb24nXSkge1xyXG4gICAgICAgICAgY29uc3QgaW5kZXhGaWxlOiBzdHJpbmcgPSBhd2FpdCB6aXBDb250ZW50LmZpbGVzWydpbmRleC5qc29uJ10uYXN5bmMoJ3N0cmluZycpO1xyXG4gICAgICAgICAgaW5kZXggPSBKU09OLnBhcnNlKGluZGV4RmlsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpbmRleCkge1xyXG4gICAgICAgICAgYXdhaXQgVmFyaWF0aW9uVXRpbHMuQ3JlYXRlU2V0dGluZ3NCYXNlZE9uSW5kZXgoaW5kZXgsIHZhcmlhdGlvblNldHRpbmdzLCB6aXBDb250ZW50KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYXdhaXQgVmFyaWF0aW9uVXRpbHMuQ3JlYXRlU2V0dGluZ3NCYXNlZE9uRmlsZU5hbWUodmFyaWF0aW9uU2V0dGluZ3MsIHppcENvbnRlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhcmlhdGlvblNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgQ3JlYXRlU2V0dGluZ3NCYXNlZE9uSW5kZXgoaW5kZXg6IGFueSwgdmFyaWF0aW9uU2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzLCB6aXBDb250ZW50OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChpbmRleC5ub3JtYWxGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbCA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5ub3JtYWxGaWxlXSwgaW5kZXgubm9ybWFsRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbEZpbGVuYW1lID0gaW5kZXgubm9ybWFsRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5kaWZmdXNlRmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LmRpZmZ1c2VGaWxlXSwgaW5kZXguZGlmZnVzZUZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlRmlsZW5hbWUgPSBpbmRleC5kaWZmdXNlRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5vcm1GaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm9ybSA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5vcm1GaWxlXSwgaW5kZXgub3JtRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm9ybUZpbGVuYW1lID0gaW5kZXgub3JtRmlsZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpbmRleC5hb0ZpbGUpIHtcclxuICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5hbyA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5hb0ZpbGVdLCBpbmRleC5hb0ZpbGUpO1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmFvRmlsZW5hbWUgPSBpbmRleC5hb0ZpbGU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGluZGV4Lm1ldGFsbmVzc0ZpbGUpIHtcclxuICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3MgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXgubWV0YWxuZXNzRmlsZV0sIGluZGV4Lm1ldGFsbmVzc0ZpbGUpO1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm1ldGFsbmVzc0ZpbGVuYW1lID0gaW5kZXgubWV0YWxuZXNzRmlsZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaW5kZXgucm91Z2huZXNzRmlsZSkge1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnJvdWdobmVzcyA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5yb3VnaG5lc3NGaWxlXSwgaW5kZXgucm91Z2huZXNzRmlsZSk7XHJcbiAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzRmlsZW5hbWUgPSBpbmRleC5yb3VnaG5lc3NGaWxlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZGlzcGxhY2VtZW50RmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5kaXNwbGFjZW1lbnQgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguZGlzcGxhY2VtZW50RmlsZV0sIGluZGV4LmRpc3BsYWNlbWVudEZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5kaXNwbGFjZW1lbnRGaWxlbmFtZSA9IGluZGV4LmRpc3BsYWNlbWVudEZpbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZW1pc3NpdmVGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LmVtaXNzaXZlRmlsZV0sIGluZGV4LmVtaXNzaXZlRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlRmlsZW5hbWUgPSBpbmRleC5lbWlzc2l2ZUZpbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZW52TWFwRmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5lbnZNYXAgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguZW52TWFwRmlsZV0sIGluZGV4LmVudk1hcEZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5lbnZNYXBGaWxlbmFtZSA9IGluZGV4LmVudk1hcEZpbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguc2hlZW5Db2xvck1hcEZpbGUpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Db2xvck1hcCA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5zaGVlbkNvbG9yTWFwRmlsZV0sIGluZGV4LnNoZWVuQ29sb3JNYXBGaWxlKTtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Db2xvck1hcEZpbGVuYW1lID0gaW5kZXguc2hlZW5Db2xvck1hcEZpbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguc2hlZW5Sb3VnaG5lc3NNYXBGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNoZWVuUm91Z2huZXNzTWFwID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LnNoZWVuUm91Z2huZXNzTWFwRmlsZV0sIGluZGV4LnNoZWVuUm91Z2huZXNzTWFwRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNoZWVuUm91Z2huZXNzTWFwRmlsZW5hbWUgPSBpbmRleC5zaGVlbkNvbG9yTWFwRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC50cmFuc21pc3Npb25NYXBGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLnRyYW5zbWlzc2lvbk1hcCA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC50cmFuc21pc3Npb25NYXBGaWxlXSwgaW5kZXgudHJhbnNtaXNzaW9uTWFwRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLnRyYW5zbWlzc2lvbk1hcEZpbGVuYW1lID0gaW5kZXgudHJhbnNtaXNzaW9uTWFwRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5yZXBlYXQpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MucmVwZWF0eCA9IGluZGV4LnJlcGVhdC5yZXBlYXR4O1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5ncy5yZXBlYXR5ID0gaW5kZXgucmVwZWF0LnJlcGVhdHk7XHJcbiAgICB9XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5ncy5tZXRhbG5lc3MgPSBpbmRleC5tZXRhbG5lc3M7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5ncy5yb3VnaG5lc3MgPSBpbmRleC5yb3VnaG5lc3M7XHJcblxyXG4gICAgaWYgKGluZGV4LnNoZWVuICYmIHR5cGVvZiBpbmRleC5zaGVlbiA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW4gPSAxO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5zaGVlbkNvbG9yID0gbmV3IENvbG9yKGluZGV4LnNoZWVuLnIsIGluZGV4LnNoZWVuLmcsIGluZGV4LnNoZWVuLmIpLmdldEhleFN0cmluZyhTUkdCQ29sb3JTcGFjZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5zaGVlbiA9IGluZGV4LnNoZWVuO1xyXG4gICAgfVxyXG4gICAgaWYgKGluZGV4LnNoZWVuQ29sb3IpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Db2xvciA9IG5ldyBDb2xvcihpbmRleC5zaGVlbkNvbG9yLnIsIGluZGV4LnNoZWVuQ29sb3IuZywgaW5kZXguc2hlZW5Db2xvci5iKS5nZXRIZXhTdHJpbmcoU1JHQkNvbG9yU3BhY2UpO1xyXG4gICAgfVxyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Sb3VnaG5lc3MgPSBpbmRleC5zaGVlblJvdWdobmVzcztcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLmVudk1hcEludGVuc2l0eSA9IGluZGV4LmVudk1hcEludGVuc2l0eTtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLnRyYW5zcGFyZW50ID0gaW5kZXgudHJhbnNwYXJlbnQ7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5vcGFjaXR5ID0gaW5kZXgub3BhY2l0eTtcclxuICAgIGlmIChpbmRleC5lbWlzc2l2ZVZhbHVlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlVmFsdWUgPSBuZXcgQ29sb3IoaW5kZXguZW1pc3NpdmVWYWx1ZS5yLCBpbmRleC5lbWlzc2l2ZVZhbHVlLmcsIGluZGV4LmVtaXNzaXZlVmFsdWUuYikuZ2V0SGV4U3RyaW5nKFNSR0JDb2xvclNwYWNlKTtcclxuICAgIH1cclxuICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlSW50ZW5zaXR5ID0gaW5kZXguZW1pc3NpdmVJbnRlbnNpdHk7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5yZWZsZWN0aXZpdHkgPSBpbmRleC5yZWZsZWN0aXZpdHk7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5kaXNwbGFjZW1lbnRWYWx1ZSA9IGluZGV4LmRpc3BsYWNlbWVudFZhbHVlO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2lkZSA9IGluZGV4LnNpZGU7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy50cmFuc21pc3Npb24gPSBpbmRleC50cmFuc21pc3Npb247XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5pb3IgPSBpbmRleC5pb3I7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy50aGlja25lc3MgPSBpbmRleC50aGlja25lc3M7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zcGVjdWxhckludGVuc2l0eSA9IGluZGV4LnNwZWN1bGFySW50ZW5zaXR5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgQ3JlYXRlU2V0dGluZ3NCYXNlZE9uRmlsZU5hbWUodmFyaWF0aW9uU2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzLCB6aXBDb250ZW50OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGFsbExvYWRlZDogUHJvbWlzZTxWYXJpYXRpb25TZXR0aW5ncz5bXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBmaWxlTmFtZSBpbiB6aXBDb250ZW50LmZpbGVzKSB7XHJcbiAgICAgIGlmICh6aXBDb250ZW50LmZpbGVzLmhhc093blByb3BlcnR5KGZpbGVOYW1lKSkge1xyXG4gICAgICAgIGNvbnN0IGZpbGU6IGFueSA9IGF3YWl0IHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdO1xyXG4gICAgICAgIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdub3JtYWwnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKG5vcm1hbEZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5ub3JtYWwgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7bm9ybWFsRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5ub3JtYWxGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignYW8nKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKGFvRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmFvID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke2FvRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5hb0ZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdtZXRhbG5lc3MnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKG1ldGFsbmVzc0ZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3MgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7bWV0YWxuZXNzRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3NGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigncm91Z2huZXNzJykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChyb3VnaG5lc3NGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke3JvdWdobmVzc0ZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2RpZmZ1c2UnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKGRpZmZ1c2VGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MudGV4dHVyZSA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtkaWZmdXNlRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2Rpc3BsYWNlbWVudCcpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZGlzcGxhY2VtZW50RmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmRpc3BsYWNlbWVudCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtkaXNwbGFjZW1lbnRGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmRpc3BsYWNlbWVudEZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdlbWlzc2l2ZScpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZW1pc3NpdmVGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW1pc3NpdmUgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7ZW1pc3NpdmVGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2Vudk1hcCcpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZW52TWFwRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVudk1hcCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtlbnZNYXBGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVudk1hcEZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdzaGVlbkNvbG9yTWFwJykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChzaGVlbkNvbG9yTWFwRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNoZWVuQ29sb3JNYXAgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7c2hlZW5Db2xvck1hcEZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Db2xvck1hcEZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdzaGVlblJvdWdobmVzc01hcCcpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoc2hlZW5Sb3VnaG5lc3NNYXBGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Sb3VnaG5lc3NNYXAgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7c2hlZW5Sb3VnaG5lc3NNYXBGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNoZWVuUm91Z2huZXNzTWFwRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ3RyYW5zbWlzc2lvbk1hcCcpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigodHJhbnNtaXNzaW9uTWFwRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnRyYW5zbWlzc2lvbk1hcCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHt0cmFuc21pc3Npb25NYXBGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnRyYW5zbWlzc2lvbk1hcEZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUuaW5kZXhPZignLmpwJykgPiAtMSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKHRleHR1cmVGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MudGV4dHVyZSA9ICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcgKyB0ZXh0dXJlRmlsZTtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MudGV4dHVyZUZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUuaW5kZXhPZignLmpzb24nKSA+IC0xKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnc3RyaW5nJykudGhlbigoc2V0dGluZ3NGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2V0dGluZ3NGaWxlT2JqID0gSlNPTi5wYXJzZShzZXR0aW5nc0ZpbGUpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzZXR0aW5nc0ZpbGVPYmopIHtcclxuICAgICAgICAgICAgICBpZiAoc2V0dGluZ3NGaWxlT2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNldHRpbmdzW2tleV0gPSBzZXR0aW5nc0ZpbGVPYmpba2V5XTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGF3YWl0IFByb21pc2UuYWxsKGFsbExvYWRlZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBMb2FkTWF0ZXJpYWxGcm9tSnNvbihtYXRlcmlhbDogYW55KTogTWF0ZXJpYWwge1xyXG4gICAgY29uc3QgbG9hZGVyID0gbmV3IE1hdGVyaWFsTG9hZGVyKCk7XHJcbiAgICBpZiAobWF0ZXJpYWwudGV4dHVyZXMpIHtcclxuICAgICAgY29uc3QgdGV4dHVyZXM6IHt9ID0ge307XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0ZXJpYWwudGV4dHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0ZXh0dXJlc1ttYXRlcmlhbC50ZXh0dXJlc1tpXS51dWlkXSA9IG1hdGVyaWFsLnRleHR1cmVzW2ldO1xyXG4gICAgICB9XHJcbiAgICAgIGxvYWRlci5zZXRUZXh0dXJlcyh0ZXh0dXJlcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbG9hZGVyLnBhcnNlKG1hdGVyaWFsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIExvYWRNYXRlcmlhbEZyb21HbGIobWF0ZXJpYWw6IGFueSk6IFByb21pc2U8TWF0ZXJpYWw+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcclxuICAgICAgaWYgKCF3aW5kb3cuaGFzT3duUHJvcGVydHkoJ2xvYWRHTFRGJykpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdsb2FkR0xURiBub3QgZGVmaW5lZCBpbiB3aW5kb3cgZ2xvYmFsJyk7XHJcbiAgICAgICAgcmV0dXJuIHJlamVjdCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IG9iajogT2JqZWN0M0QgPSBhd2FpdCAod2luZG93IGFzIGFueSkubG9hZEdMVEYobWF0ZXJpYWwsIGZhbHNlKTtcclxuICAgICAgaWYgKG9iaikge1xyXG4gICAgICAgIHJldHVybiByZXNvbHZlKChvYmouY2hpbGRyZW5bMF0gYXMgTWVzaCkubWF0ZXJpYWwpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIExvYWRGaWxlQ29udGVudEZyb21aaXAoemlwOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcsIGJhc2U2NDogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICBpZiAoemlwICYmIGZpbGVOYW1lKSB7XHJcbiAgICAgICAgemlwLmFzeW5jKGJhc2U2NCA/ICdiYXNlNjQnIDogJ3N0cmluZycpLnRoZW4oKGZpbGVDb250ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChiYXNlNjQpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZU5hbWUpfTtiYXNlNjQsJHtmaWxlQ29udGVudH1gKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoZmlsZUNvbnRlbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUodW5kZWZpbmVkKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBGaWxlSXNJbWFnZShmaWxlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBleHQ6IHN0cmluZyA9IGZpbGVOYW1lLnN1YnN0cmluZyhmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpICsgMSwgZmlsZU5hbWUubGVuZ3RoKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgc3dpdGNoIChleHQpIHtcclxuICAgICAgY2FzZSAnanBnJzpcclxuICAgICAgY2FzZSAnanBlZyc6XHJcbiAgICAgIGNhc2UgJ3BuZyc6XHJcbiAgICAgIGNhc2UgJ2JtcCc6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgR2V0QmFzZTY0RmlsZVR5cGUoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBleHQ6IHN0cmluZyA9IGZpbGVOYW1lLnN1YnN0cmluZyhmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpICsgMSwgZmlsZU5hbWUubGVuZ3RoKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgc3dpdGNoIChleHQpIHtcclxuICAgICAgY2FzZSAnanBnJzpcclxuICAgICAgY2FzZSAnanBlZyc6XHJcbiAgICAgICAgcmV0dXJuICdqcGVnJztcclxuICAgICAgY2FzZSAncG5nJzpcclxuICAgICAgICByZXR1cm4gJ3BuZyc7XHJcbiAgICAgIGNhc2UgJ2JtcCc6XHJcbiAgICAgICAgcmV0dXJuICdibXAnO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnanBlZyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgdGhlIGNvbnRlbnRcclxuICBwcml2YXRlIHN0YXRpYyBhc3luYyBHZXRaaXBDb250ZW50KGZpbGUpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QganN6aXAgPSBuZXcgSlNaaXAoKTtcclxuICAgICAgcmV0dXJuIGF3YWl0IGpzemlwLmxvYWRBc3luYyhmaWxlKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|