@esotericsoftware/spine-core 4.3.0 → 4.3.2
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/dist/BonePose.d.ts +2 -0
- package/dist/BonePose.js +131 -101
- package/dist/ConstraintData.d.ts +9 -0
- package/dist/ConstraintData.js +11 -1
- package/dist/IkConstraint.d.ts +2 -1
- package/dist/IkConstraint.js +13 -13
- package/dist/IkConstraintData.d.ts +1 -11
- package/dist/IkConstraintData.js +2 -13
- package/dist/PathConstraint.d.ts +0 -1
- package/dist/PathConstraint.js +3 -4
- package/dist/PhysicsConstraint.js +14 -2
- package/dist/PhysicsConstraintData.d.ts +6 -1
- package/dist/PhysicsConstraintData.js +13 -2
- package/dist/SkeletonBinary.js +14 -3
- package/dist/SkeletonJson.js +6 -2
- package/dist/Utils.d.ts +2 -0
- package/dist/Utils.js +3 -1
- package/dist/esm/spine-core.min.mjs +2 -2
- package/dist/esm/spine-core.mjs +218 -148
- package/dist/esm/spine-core.mjs.map +3 -3
- package/dist/iife/spine-core.js +218 -148
- package/dist/iife/spine-core.js.map +3 -3
- package/dist/iife/spine-core.min.js +2 -2
- package/package.json +1 -1
package/dist/PathConstraint.js
CHANGED
|
@@ -38,7 +38,6 @@ export class PathConstraint extends Constraint {
|
|
|
38
38
|
static NONE = -1;
|
|
39
39
|
static BEFORE = -2;
|
|
40
40
|
static AFTER = -3;
|
|
41
|
-
static epsilon = 0.00001;
|
|
42
41
|
/** The path constraint's setup pose data. */
|
|
43
42
|
data;
|
|
44
43
|
/** The bones that will be modified by this path constraint. */
|
|
@@ -97,7 +96,7 @@ export class PathConstraint extends Constraint {
|
|
|
97
96
|
for (let i = 0, n = spacesCount - 1; i < n;) {
|
|
98
97
|
const bone = bones[i];
|
|
99
98
|
const setupLength = bone.bone.data.length;
|
|
100
|
-
if (setupLength <
|
|
99
|
+
if (setupLength < MathUtils.epsilon) {
|
|
101
100
|
if (scale)
|
|
102
101
|
lengths[i] = 0;
|
|
103
102
|
spaces[++i] = spacing;
|
|
@@ -123,7 +122,7 @@ export class PathConstraint extends Constraint {
|
|
|
123
122
|
for (let i = 0, n = spacesCount - 1; i < n;) {
|
|
124
123
|
const bone = bones[i];
|
|
125
124
|
const setupLength = bone.bone.data.length;
|
|
126
|
-
if (setupLength <
|
|
125
|
+
if (setupLength < MathUtils.epsilon) {
|
|
127
126
|
if (scale)
|
|
128
127
|
lengths[i] = 0;
|
|
129
128
|
spaces[++i] = spacing;
|
|
@@ -507,4 +506,4 @@ export class PathConstraint extends Constraint {
|
|
|
507
506
|
return this.slot.bone.active;
|
|
508
507
|
}
|
|
509
508
|
}
|
|
510
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0aENvbnN0cmFpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUGF0aENvbnN0cmFpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUdqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUEyQixZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRzlDOzt5R0FFeUc7QUFDekcsTUFBTSxPQUFPLGNBQWUsU0FBUSxVQUFrRTtJQUNyRyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEQsTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFFekIsNkNBQTZDO0lBQzdDLElBQUksQ0FBcUI7SUFFekIsK0RBQStEO0lBQy9ELEtBQUssQ0FBa0I7SUFFdkIsNEVBQTRFO0lBQzVFLElBQUksQ0FBTztJQUVYLE1BQU0sR0FBRyxFQUFjLENBQUM7SUFBQyxTQUFTLEdBQUcsRUFBYyxDQUFDO0lBQ3BELEtBQUssR0FBRyxFQUFjLENBQUM7SUFBQyxNQUFNLEdBQUcsRUFBYyxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQWMsQ0FBQztJQUMxRSxRQUFRLEdBQUcsRUFBYyxDQUFDO0lBRTFCLFlBQWEsSUFBd0IsRUFBRSxRQUFrQjtRQUN4RCxLQUFLLENBQUMsSUFBSSxFQUFF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QUMsQ0FBQztRQUNuRixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3BELEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQixHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQixHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsQixJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7WUFDckMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQ3JDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQzlDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQzlDLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDeEIsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFH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QUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNoQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDNUMsT0FBTztRQUNSLENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDL0QsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUMzRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLEdBQUcsS0FBSztnQkFDWixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7O2dCQUU1QyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RyxDQUFDO0lBQ0YsQ0FBQztJQUVELElBQUksQ0FBRSxRQUFrQjtRQUN2QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDaEMsSUFBSSxRQUFRLENBQUMsSUFBSSxJQUFJLElBQUk7WUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzRixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRLENBQUMsSUFBSTtZQUNuRixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzdELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDM0IsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFDRCxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUNqQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDakMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFTyxZQUFZLENBQUUsUUFBa0IsRUFBRSxJQUFVLEVBQUUsU0FBaUIsRUFBRSxRQUFjO1FBQ3RGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDaEQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTO2dCQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEYsQ0FBQztJQUNGLENBQUM7SUFFTyxRQUFRLENBQUUsUUFBa0IsRUFBRSxVQUE2QixFQUFFLFFBQWM7UUFDbEYsSUFBSSxDQUFDLENBQUMsVUFBVSxZQUFZLGNBQWMsQ0FBQztZQUFFLE9BQU87UUFDcEQsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNuQyxJQUFJLFNBQVMsSUFBSSxJQUFJO1lBQ3BCLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDeEIsQ0FBQztZQUNMLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDN0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO2dCQUM5QyxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDeEIsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDUixPQUFPLENBQUMsR0FBRyxFQUFFO29CQUNaLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxDQUFDO1FBQ0YsQ0FBQztJQUNGLENBQUM7SUFFRCxjQUFjO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgUGF0aEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9QYXRoQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBCb25lIH0gZnJvbSBcIi4vQm9uZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBCb25lUG9zZSB9IGZyb20gXCIuL0JvbmVQb3NlLmpzXCI7XG5pbXBvcnQgeyBDb25zdHJhaW50IH0gZnJvbSBcIi4vQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgdHlwZSBQYXRoQ29uc3RyYWludERhdGEsIFBvc2l0aW9uTW9kZSwgUm90YXRlTW9kZSwgU3BhY2luZ01vZGUgfSBmcm9tIFwiLi9QYXRoQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IFBhdGhDb25zdHJhaW50UG9zZSB9IGZyb20gXCIuL1BhdGhDb25zdHJhaW50UG9zZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBQaHlzaWNzIH0gZnJvbSBcIi4vUGh5c2ljcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNraW4gfSBmcm9tIFwiLi9Ta2luLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNsb3QgfSBmcm9tIFwiLi9TbG90LmpzXCI7XG5pbXBvcnQgeyBNYXRoVXRpbHMsIFV0aWxzIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuXG4vKiogQWRqdXN0cyB0aGUgcm90YXRpb24sIHRyYW5zbGF0aW9uLCBhbmQgc2NhbGUgb2YgdGhlIGNvbnN0cmFpbmVkIGJvbmVzIHNvIHRoZXkgZm9sbG93IGEge0BsaW5rIFBhdGhBdHRhY2htZW50fS5cbiAqXG4gKiBTZWUgW1BhdGggY29uc3RyYWludHNdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1wYXRoLWNvbnN0cmFpbnRzKSBpbiB0aGUgU3BpbmUgVXNlciBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBQYXRoQ29uc3RyYWludCBleHRlbmRzIENvbnN0cmFpbnQ8UGF0aENvbnN0cmFpbnQsIFBhdGhDb25zdHJhaW50RGF0YSwgUGF0aENvbnN0cmFpbnRQb3NlPiB7XG5cdHN0YXRpYyBOT05FID0gLTE7IHN0YXRpYyBCRUZPUkUgPSAtMjsgc3RhdGljIEFGVEVSID0gLTM7XG5cdHN0YXRpYyBlcHNpbG9uID0gMC4wMDAwMTtcblxuXHQvKiogVGhlIHBhdGggY29uc3RyYWludCdzIHNldHVwIHBvc2UgZGF0YS4gKi9cblx0ZGF0YTogUGF0aENvbnN0cmFpbnREYXRhO1xuXG5cdC8qKiBUaGUgYm9uZXMgdGhhdCB3aWxsIGJlIG1vZGlmaWVkIGJ5IHRoaXMgcGF0aCBjb25zdHJhaW50LiAqL1xuXHRib25lczogQXJyYXk8Qm9uZVBvc2U+O1xuXG5cdC8qKiBUaGUgc2xvdCB3aG9zZSBwYXRoIGF0dGFjaG1lbnQgd2lsbCBiZSB1c2VkIHRvIGNvbnN0cmFpbmVkIHRoZSBib25lcy4gKi9cblx0c2xvdDogU2xvdDtcblxuXHRzcGFjZXMgPSBbXSBhcyBudW1iZXJbXTsgcG9zaXRpb25zID0gW10gYXMgbnVtYmVyW107XG5cdHdvcmxkID0gW10gYXMgbnVtYmVyW107IGN1cnZlcyA9IFtdIGFzIG51bWJlcltdOyBsZW5ndGhzID0gW10gYXMgbnVtYmVyW107XG5cdHNlZ21lbnRzID0gW10gYXMgbnVtYmVyW107XG5cblx0Y29uc3RydWN0b3IgKGRhdGE6IFBhdGhDb25zdHJhaW50RGF0YSwgc2tlbGV0b246IFNrZWxldG9uKSB7XG5cdFx0c3VwZXIoZGF0YSwgbmV3IFBhdGhDb25zdHJhaW50UG9zZSgpLCBuZXcgUGF0aENvbnN0cmFpbnRQb3NlKCkpO1xuXHRcdGlmICghc2tlbGV0b24pIHRocm93IG5ldyBFcnJvcihcInNrZWxldG9uIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHR0aGlzLmRhdGEgPSBkYXRhO1xuXG5cdFx0dGhpcy5ib25lcyA9IFtdIGFzIEJvbmVQb3NlW107XG5cdFx0Zm9yIChjb25zdCBib25lRGF0YSBvZiB0aGlzLmRhdGEuYm9uZXMpXG5cdFx0XHR0aGlzLmJvbmVzLnB1c2goc2tlbGV0b24uYm9uZXNbYm9uZURhdGEuaW5kZXhdLmNvbnN0cmFpbmVkUG9zZSk7XG5cblx0XHR0aGlzLnNsb3QgPSBza2VsZXRvbi5zbG90c1tkYXRhLnNsb3QuaW5kZXhdO1xuXHR9XG5cblx0cHVibGljIGNvcHkgKHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdHZhciBjb3B5ID0gbmV3IFBhdGhDb25zdHJhaW50KHRoaXMuZGF0YSwgc2tlbGV0b24pO1xuXHRcdGNvcHkucG9zZS5zZXQodGhpcy5wb3NlKTtcblx0XHRyZXR1cm4gY29weTtcblx0fVxuXG5cdHVwZGF0ZSAoc2tlbGV0b246IFNrZWxldG9uLCBwaHlzaWNzOiBQaHlzaWNzKSB7XG5cdFx0Y29uc3QgYXR0YWNobWVudCA9IHRoaXMuc2xvdC5hcHBsaWVkUG9zZS5hdHRhY2htZW50O1xuXHRcdGlmICghKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBQYXRoQXR0YWNobWVudCkpIHJldHVybjtcblxuXHRcdGNvbnN0IHAgPSB0aGlzLmFwcGxpZWRQb3NlO1xuXHRcdGNvbnN0IG1peFJvdGF0ZSA9IHAubWl4Um90YXRlLCBtaXhYID0gcC5taXhYLCBtaXhZID0gcC5taXhZO1xuXHRcdGlmIChtaXhSb3RhdGUgPT09IDAgJiYgbWl4WCA9PT0gMCAmJiBtaXhZID09PSAwKSByZXR1cm47XG5cblx0XHRjb25zdCBkYXRhID0gdGhpcy5kYXRhO1xuXHRcdGNvbnN0IHRhbmdlbnRzID0gZGF0YS5yb3RhdGVNb2RlID09PSBSb3RhdGVNb2RlLlRhbmdlbnQsIHNjYWxlID0gZGF0YS5yb3RhdGVNb2RlID09PSBSb3RhdGVNb2RlLkNoYWluU2NhbGU7XG5cblx0XHRjb25zdCBib25lcyA9IHRoaXMuYm9uZXM7XG5cdFx0Y29uc3QgYm9uZUNvdW50ID0gYm9uZXMubGVuZ3RoLCBzcGFjZXNDb3VudCA9IHRhbmdlbnRzID8gYm9uZUNvdW50IDogYm9uZUNvdW50ICsgMTtcblx0XHRjb25zdCBzcGFjZXMgPSBVdGlscy5zZXRBcnJheVNpemUodGhpcy5zcGFjZXMsIHNwYWNlc0NvdW50KSwgbGVuZ3RoczogQXJyYXk8bnVtYmVyPiA9IHNjYWxlID8gdGhpcy5sZW5ndGhzID0gVXRpbHMuc2V0QXJyYXlTaXplKHRoaXMubGVuZ3RocywgYm9uZUNvdW50KSA6IFtdO1xuXHRcdGNvbnN0IHNwYWNpbmcgPSBwLnNwYWNpbmc7XG5cblx0XHRzd2l0Y2ggKGRhdGEuc3BhY2luZ01vZGUpIHtcblx0XHRcdGNhc2UgU3BhY2luZ01vZGUuUGVyY2VudDpcblx0XHRcdFx0aWYgKHNjYWxlKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBzcGFjZXNDb3VudCAtIDE7IGkgPCBuOyBpKyspIHtcblx0XHRcdFx0XHRcdGNvbnN0IGJvbmUgPSBib25lc1tpXTtcblx0XHRcdFx0XHRcdGNvbnN0IHNldHVwTGVuZ3RoID0gYm9uZS5ib25lLmRhdGEubGVuZ3RoO1xuXHRcdFx0XHRcdFx0Y29uc3QgeCA9IHNldHVwTGVuZ3RoICogYm9uZS5hLCB5ID0gc2V0dXBMZW5ndGggKiBib25lLmM7XG5cdFx0XHRcdFx0XHRsZW5ndGhzW2ldID0gTWF0aC5zcXJ0KHggKiB4ICsgeSAqIHkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRVdGlscy5hcnJheUZpbGwoc3BhY2VzLCAxLCBzcGFjZXNDb3VudCwgc3BhY2luZyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBTcGFjaW5nTW9kZS5Qcm9wb3J0aW9uYWw6IHtcblx0XHRcdFx0bGV0IHN1bSA9IDA7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gc3BhY2VzQ291bnQgLSAxOyBpIDwgbjspIHtcblx0XHRcdFx0XHRjb25zdCBib25lID0gYm9uZXNbaV07XG5cdFx0XHRcdFx0Y29uc3Qgc2V0dXBMZW5ndGggPSBib25lLmJvbmUuZGF0YS5sZW5ndGg7XG5cdFx0XHRcdFx0aWYgKHNldHVwTGVuZ3RoIDwgUGF0aENvbnN0cmFpbnQuZXBzaWxvbikge1xuXHRcdFx0XHRcdFx0aWYgKHNjYWxlKSBsZW5ndGhzW2ldID0gMDtcblx0XHRcdFx0XHRcdHNwYWNlc1srK2ldID0gc3BhY2luZztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3QgeCA9IHNldHVwTGVuZ3RoICogYm9uZS5hLCB5ID0gc2V0dXBMZW5ndGggKiBib25lLmM7XG5cdFx0XHRcdFx0XHRjb25zdCBsZW5ndGggPSBNYXRoLnNxcnQoeCAqIHggKyB5ICogeSk7XG5cdFx0XHRcdFx0XHRpZiAoc2NhbGUpIGxlbmd0aHNbaV0gPSBsZW5ndGg7XG5cdFx0XHRcdFx0XHRzcGFjZXNbKytpXSA9IGxlbmd0aDtcblx0XHRcdFx0XHRcdHN1bSArPSBsZW5ndGg7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChzdW0gPiAwKSB7XG5cdFx0XHRcdFx0c3VtID0gc3BhY2VzQ291bnQgLyBzdW0gKiBzcGFjaW5nO1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAxOyBpIDwgc3BhY2VzQ291bnQ7IGkrKylcblx0XHRcdFx0XHRcdHNwYWNlc1tpXSAqPSBzdW07XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdGNvbnN0IGxlbmd0aFNwYWNpbmcgPSBkYXRhLnNwYWNpbmdNb2RlID09PSBTcGFjaW5nTW9kZS5MZW5ndGg7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gc3BhY2VzQ291bnQgLSAxOyBpIDwgbjspIHtcblx0XHRcdFx0XHRjb25zdCBib25lID0gYm9uZXNbaV07XG5cdFx0XHRcdFx0Y29uc3Qgc2V0dXBMZW5ndGggPSBib25lLmJvbmUuZGF0YS5sZW5ndGg7XG5cdFx0XHRcdFx0aWYgKHNldHVwTGVuZ3RoIDwgUGF0aENvbnN0cmFpbnQuZXBzaWxvbikge1xuXHRcdFx0XHRcdFx0aWYgKHNjYWxlKSBsZW5ndGhzW2ldID0gMDtcblx0XHRcdFx0XHRcdHNwYWNlc1srK2ldID0gc3BhY2luZztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3QgeCA9IHNldHVwTGVuZ3RoICogYm9uZS5hLCB5ID0gc2V0dXBMZW5ndGggKiBib25lLmM7XG5cdFx0XHRcdFx0XHRjb25zdCBsZW5ndGggPSBNYXRoLnNxcnQoeCAqIHggKyB5ICogeSk7XG5cdFx0XHRcdFx0XHRpZiAoc2NhbGUpIGxlbmd0aHNbaV0gPSBsZW5ndGg7XG5cdFx0XHRcdFx0XHRzcGFjZXNbKytpXSA9IChsZW5ndGhTcGFjaW5nID8gTWF0aC5tYXgoMCwgc2V0dXBMZW5ndGggKyBzcGFjaW5nKSA6IHNwYWNpbmcpICogbGVuZ3RoIC8gc2V0dXBMZW5ndGg7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3QgcG9zaXRpb25zID0gdGhpcy5jb21wdXRlV29ybGRQb3NpdGlvbnMoc2tlbGV0b24sIGF0dGFjaG1lbnQsIHNwYWNlc0NvdW50LCB0YW5nZW50cyk7XG5cdFx0bGV0IGJvbmVYID0gcG9zaXRpb25zWzBdLCBib25lWSA9IHBvc2l0aW9uc1sxXSwgb2Zmc2V0Um90YXRpb24gPSBkYXRhLm9mZnNldFJvdGF0aW9uO1xuXHRcdGxldCB0aXAgPSBmYWxzZTtcblx0XHRpZiAob2Zmc2V0Um90YXRpb24gPT09IDApXG5cdFx0XHR0aXAgPSBkYXRhLnJvdGF0ZU1vZGUgPT09IFJvdGF0ZU1vZGUuQ2hhaW47XG5cdFx0ZWxzZSB7XG5cdFx0XHR0aXAgPSBmYWxzZTtcblx0XHRcdGNvbnN0IGJvbmUgPSB0aGlzLnNsb3QuYm9uZS5hcHBsaWVkUG9zZTtcblx0XHRcdG9mZnNldFJvdGF0aW9uICo9IGJvbmUuYSAqIGJvbmUuZCAtIGJvbmUuYiAqIGJvbmUuYyA+IDAgPyBNYXRoVXRpbHMuZGVnUmFkIDogLU1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0fVxuXHRcdGZvciAobGV0IGkgPSAwLCBpcCA9IDMsIHUgPSBza2VsZXRvbi5fdXBkYXRlOyBpIDwgYm9uZUNvdW50OyBpKyssIGlwICs9IDMpIHtcblx0XHRcdGNvbnN0IGJvbmUgPSBib25lc1tpXTtcblx0XHRcdGJvbmUud29ybGRYICs9IChib25lWCAtIGJvbmUud29ybGRYKSAqIG1peFg7XG5cdFx0XHRib25lLndvcmxkWSArPSAoYm9uZVkgLSBib25lLndvcmxkWSkgKiBtaXhZO1xuXHRcdFx0Y29uc3QgeCA9IHBvc2l0aW9uc1tpcF0sIHkgPSBwb3NpdGlvbnNbaXAgKyAxXSwgZHggPSB4IC0gYm9uZVgsIGR5ID0geSAtIGJvbmVZO1xuXHRcdFx0aWYgKHNjYWxlKSB7XG5cdFx0XHRcdGNvbnN0IGxlbmd0aCA9IGxlbmd0aHNbaV07XG5cdFx0XHRcdGlmIChsZW5ndGggIT09IDApIHtcblx0XHRcdFx0XHRjb25zdCBzID0gKE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSkgLyBsZW5ndGggLSAxKSAqIG1peFJvdGF0ZSArIDE7XG5cdFx0XHRcdFx0Ym9uZS5hICo9IHM7XG5cdFx0XHRcdFx0Ym9uZS5jICo9IHM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGJvbmVYID0geDtcblx0XHRcdGJvbmVZID0geTtcblx0XHRcdGlmIChtaXhSb3RhdGUgPiAwKSB7XG5cdFx0XHRcdGxldCBhID0gYm9uZS5hLCBiID0gYm9uZS5iLCBjID0gYm9uZS5jLCBkID0gYm9uZS5kLCByID0gMCwgY29zID0gMCwgc2luID0gMDtcblx0XHRcdFx0aWYgKHRhbmdlbnRzKVxuXHRcdFx0XHRcdHIgPSBwb3NpdGlvbnNbaXAgLSAxXTtcblx0XHRcdFx0ZWxzZSBpZiAoc3BhY2VzW2kgKyAxXSA9PT0gMClcblx0XHRcdFx0XHRyID0gcG9zaXRpb25zW2lwICsgMl07XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRyID0gTWF0aC5hdGFuMihkeSwgZHgpO1xuXHRcdFx0XHRyIC09IE1hdGguYXRhbjIoYywgYSk7XG5cdFx0XHRcdGlmICh0aXApIHtcblx0XHRcdFx0XHRjb3MgPSBNYXRoLmNvcyhyKTtcblx0XHRcdFx0XHRzaW4gPSBNYXRoLnNpbihyKTtcblx0XHRcdFx0XHRjb25zdCBsZW5ndGggPSBib25lLmJvbmUuZGF0YS5sZW5ndGg7XG5cdFx0XHRcdFx0Ym9uZVggKz0gKGxlbmd0aCAqIChjb3MgKiBhIC0gc2luICogYykgLSBkeCkgKiBtaXhSb3RhdGU7XG5cdFx0XHRcdFx0Ym9uZVkgKz0gKGxlbmd0aCAqIChzaW4gKiBhICsgY29zICogYykgLSBkeSkgKiBtaXhSb3RhdGU7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ciArPSBvZmZzZXRSb3RhdGlvbjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAociA+IE1hdGhVdGlscy5QSSlcblx0XHRcdFx0XHRyIC09IE1hdGhVdGlscy5QSTI7XG5cdFx0XHRcdGVsc2UgaWYgKHIgPCAtTWF0aFV0aWxzLlBJKSAvL1xuXHRcdFx0XHRcdHIgKz0gTWF0aFV0aWxzLlBJMjtcblx0XHRcdFx0ciAqPSBtaXhSb3RhdGU7XG5cdFx0XHRcdGNvcyA9IE1hdGguY29zKHIpO1xuXHRcdFx0XHRzaW4gPSBNYXRoLnNpbihyKTtcblx0XHRcdFx0Ym9uZS5hID0gY29zICogYSAtIHNpbiAqIGM7XG5cdFx0XHRcdGJvbmUuYiA9IGNvcyAqIGIgLSBzaW4gKiBkO1xuXHRcdFx0XHRib25lLmMgPSBzaW4gKiBhICsgY29zICogYztcblx0XHRcdFx0Ym9uZS5kID0gc2luICogYiArIGNvcyAqIGQ7XG5cdFx0XHR9XG5cdFx0XHRib25lLm1vZGlmeVdvcmxkKHUpO1xuXHRcdH1cblx0fVxuXG5cdGNvbXB1dGVXb3JsZFBvc2l0aW9ucyAoc2tlbGV0b246IFNrZWxldG9uLCBwYXRoOiBQYXRoQXR0YWNobWVudCwgc3BhY2VzQ291bnQ6IG51bWJlciwgdGFuZ2VudHM6IGJvb2xlYW4pIHtcblx0XHRjb25zdCBzbG90ID0gdGhpcy5zbG90O1xuXHRcdGxldCBwb3NpdGlvbiA9IHRoaXMuYXBwbGllZFBvc2UucG9zaXRpb247XG5cdFx0bGV0IHNwYWNlcyA9IHRoaXMuc3BhY2VzLCBvdXQgPSBVdGlscy5zZXRBcnJheVNpemUodGhpcy5wb3NpdGlvbnMsIHNwYWNlc0NvdW50ICogMyArIDIpLCB3b3JsZDogQXJyYXk8bnVtYmVyPiA9IHRoaXMud29ybGQ7XG5cdFx0Y29uc3QgY2xvc2VkID0gcGF0aC5jbG9zZWQ7XG5cdFx0bGV0IHZlcnRpY2VzTGVuZ3RoID0gcGF0aC53b3JsZFZlcnRpY2VzTGVuZ3RoLCBjdXJ2ZUNvdW50ID0gdmVydGljZXNMZW5ndGggLyA2LCBwcmV2Q3VydmUgPSBQYXRoQ29uc3RyYWludC5OT05FO1xuXG5cdFx0aWYgKCFwYXRoLmNvbnN0YW50U3BlZWQpIHtcblx0XHRcdGNvbnN0IGxlbmd0aHMgPSBwYXRoLmxlbmd0aHM7XG5cdFx0XHRjdXJ2ZUNvdW50IC09IGNsb3NlZCA/IDEgOiAyO1xuXHRcdFx0Y29uc3QgcGF0aExlbmd0aCA9IGxlbmd0aHNbY3VydmVDb3VudF07XG5cdFx0XHRpZiAodGhpcy5kYXRhLnBvc2l0aW9uTW9kZSA9PT0gUG9zaXRpb25Nb2RlLlBlcmNlbnQpIHBvc2l0aW9uICo9IHBhdGhMZW5ndGg7XG5cblx0XHRcdGxldCBtdWx0aXBsaWVyOiBudW1iZXI7XG5cdFx0XHRzd2l0Y2ggKHRoaXMuZGF0YS5zcGFjaW5nTW9kZSkge1xuXHRcdFx0XHRjYXNlIFNwYWNpbmdNb2RlLlBlcmNlbnQ6IG11bHRpcGxpZXIgPSBwYXRoTGVuZ3RoOyBicmVhaztcblx0XHRcdFx0Y2FzZSBTcGFjaW5nTW9kZS5Qcm9wb3J0aW9uYWw6IG11bHRpcGxpZXIgPSBwYXRoTGVuZ3RoIC8gc3BhY2VzQ291bnQ7IGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OiBtdWx0aXBsaWVyID0gMTtcblx0XHRcdH1cblxuXHRcdFx0d29ybGQgPSBVdGlscy5zZXRBcnJheVNpemUodGhpcy53b3JsZCwgOCk7XG5cdFx0XHRmb3IgKGxldCBpID0gMCwgbyA9IDAsIGN1cnZlID0gMDsgaSA8IHNwYWNlc0NvdW50OyBpKyssIG8gKz0gMykge1xuXHRcdFx0XHRjb25zdCBzcGFjZSA9IHNwYWNlc1tpXSAqIG11bHRpcGxpZXI7XG5cdFx0XHRcdHBvc2l0aW9uICs9IHNwYWNlO1xuXHRcdFx0XHRsZXQgcCA9IHBvc2l0aW9uO1xuXG5cdFx0XHRcdGlmIChjbG9zZWQpIHtcblx0XHRcdFx0XHRwICU9IHBhdGhMZW5ndGg7XG5cdFx0XHRcdFx0aWYgKHAgPCAwKSBwICs9IHBhdGhMZW5ndGg7XG5cdFx0XHRcdFx0Y3VydmUgPSAwO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHAgPCAwKSB7XG5cdFx0XHRcdFx0aWYgKHByZXZDdXJ2ZSAhPT0gUGF0aENvbnN0cmFpbnQuQkVGT1JFKSB7XG5cdFx0XHRcdFx0XHRwcmV2Q3VydmUgPSBQYXRoQ29uc3RyYWludC5CRUZPUkU7XG5cdFx0XHRcdFx0XHRwYXRoLmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNrZWxldG9uLCBzbG90LCAyLCA0LCB3b3JsZCwgMCwgMik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuYWRkQmVmb3JlUG9zaXRpb24ocCwgd29ybGQsIDAsIG91dCwgbyk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAocCA+IHBhdGhMZW5ndGgpIHtcblx0XHRcdFx0XHRpZiAocHJldkN1cnZlICE9PSBQYXRoQ29uc3RyYWludC5BRlRFUikge1xuXHRcdFx0XHRcdFx0cHJldkN1cnZlID0gUGF0aENvbnN0cmFpbnQuQUZURVI7XG5cdFx0XHRcdFx0XHRwYXRoLmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNrZWxldG9uLCBzbG90LCB2ZXJ0aWNlc0xlbmd0aCAtIDYsIDQsIHdvcmxkLCAwLCAyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5hZGRBZnRlclBvc2l0aW9uKHAgLSBwYXRoTGVuZ3RoLCB3b3JsZCwgMCwgb3V0LCBvKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIERldGVybWluZSBjdXJ2ZSBjb250YWluaW5nIHBvc2l0aW9uLlxuXHRcdFx0XHRmb3IgKDsgOyBjdXJ2ZSsrKSB7XG5cdFx0XHRcdFx0Y29uc3QgbGVuZ3RoID0gbGVuZ3Roc1tjdXJ2ZV07XG5cdFx0XHRcdFx0aWYgKHAgPiBsZW5ndGgpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGlmIChjdXJ2ZSA9PT0gMClcblx0XHRcdFx0XHRcdHAgLz0gbGVuZ3RoO1xuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3QgcHJldiA9IGxlbmd0aHNbY3VydmUgLSAxXTtcblx0XHRcdFx0XHRcdHAgPSAocCAtIHByZXYpIC8gKGxlbmd0aCAtIHByZXYpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY3VydmUgIT09IHByZXZDdXJ2ZSkge1xuXHRcdFx0XHRcdHByZXZDdXJ2ZSA9IGN1cnZlO1xuXHRcdFx0XHRcdGlmIChjbG9zZWQgJiYgY3VydmUgPT09IGN1cnZlQ291bnQpIHtcblx0XHRcdFx0XHRcdHBhdGguY29tcHV0ZVdvcmxkVmVydGljZXMoc2tlbGV0b24sIHNsb3QsIHZlcnRpY2VzTGVuZ3RoIC0gNCwgNCwgd29ybGQsIDAsIDIpO1xuXHRcdFx0XHRcdFx0cGF0aC5jb21wdXRlV29ybGRWZXJ0aWNlcyhza2VsZXRvbiwgc2xvdCwgMCwgNCwgd29ybGQsIDQsIDIpO1xuXHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0cGF0aC5jb21wdXRlV29ybGRWZXJ0aWNlcyhza2VsZXRvbiwgc2xvdCwgY3VydmUgKiA2ICsgMiwgOCwgd29ybGQsIDAsIDIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuYWRkQ3VydmVQb3NpdGlvbihwLCB3b3JsZFswXSwgd29ybGRbMV0sIHdvcmxkWzJdLCB3b3JsZFszXSwgd29ybGRbNF0sIHdvcmxkWzVdLCB3b3JsZFs2XSwgd29ybGRbN10sIG91dCwgbyxcblx0XHRcdFx0XHR0YW5nZW50cyB8fCAoaSA+IDAgJiYgc3BhY2UgPT09IDApKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBvdXQ7XG5cdFx0fVxuXG5cdFx0Ly8gV29ybGQgdmVydGljZXMuXG5cdFx0aWYgKGNsb3NlZCkge1xuXHRcdFx0dmVydGljZXNMZW5ndGggKz0gMjtcblx0XHRcdHdvcmxkID0gVXRpbHMuc2V0QXJyYXlTaXplKHRoaXMud29ybGQsIHZlcnRpY2VzTGVuZ3RoKTtcblx0XHRcdHBhdGguY29tcHV0ZVdvcmxkVmVydGljZXMoc2tlbGV0b24sIHNsb3QsIDIsIHZlcnRpY2VzTGVuZ3RoIC0gNCwgd29ybGQsIDAsIDIpO1xuXHRcdFx0cGF0aC5jb21wdXRlV29ybGRWZXJ0aWNlcyhza2VsZXRvbiwgc2xvdCwgMCwgMiwgd29ybGQsIHZlcnRpY2VzTGVuZ3RoIC0gNCwgMik7XG5cdFx0XHR3b3JsZFt2ZXJ0aWNlc0xlbmd0aCAtIDJdID0gd29ybGRbMF07XG5cdFx0XHR3b3JsZFt2ZXJ0aWNlc0xlbmd0aCAtIDFdID0gd29ybGRbMV07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1cnZlQ291bnQtLTtcblx0XHRcdHZlcnRpY2VzTGVuZ3RoIC09IDQ7XG5cdFx0XHR3b3JsZCA9IFV0aWxzLnNldEFycmF5U2l6ZSh0aGlzLndvcmxkLCB2ZXJ0aWNlc0xlbmd0aCk7XG5cdFx0XHRwYXRoLmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNrZWxldG9uLCBzbG90LCAyLCB2ZXJ0aWNlc0xlbmd0aCwgd29ybGQsIDAsIDIpO1xuXHRcdH1cblxuXHRcdC8vIEN1cnZlIGxlbmd0aHMuXG5cdFx0Y29uc3QgY3VydmVzID0gVXRpbHMuc2V0QXJyYXlTaXplKHRoaXMuY3VydmVzLCBjdXJ2ZUNvdW50KTtcblx0XHRsZXQgcGF0aExlbmd0aCA9IDA7XG5cdFx0bGV0IHgxID0gd29ybGRbMF0sIHkxID0gd29ybGRbMV0sIGN4MSA9IDAsIGN5MSA9IDAsIGN4MiA9IDAsIGN5MiA9IDAsIHgyID0gMCwgeTIgPSAwO1xuXHRcdGxldCB0bXB4ID0gMCwgdG1weSA9IDAsIGRkZGZ4ID0gMCwgZGRkZnkgPSAwLCBkZGZ4ID0gMCwgZGRmeSA9IDAsIGRmeCA9IDAsIGRmeSA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIHcgPSAyOyBpIDwgY3VydmVDb3VudDsgaSsrLCB3ICs9IDYpIHtcblx0XHRcdGN4MSA9IHdvcmxkW3ddO1xuXHRcdFx0Y3kxID0gd29ybGRbdyArIDFdO1xuXHRcdFx0Y3gyID0gd29ybGRbdyArIDJdO1xuXHRcdFx0Y3kyID0gd29ybGRbdyArIDNdO1xuXHRcdFx0eDIgPSB3b3JsZFt3ICsgNF07XG5cdFx0XHR5MiA9IHdvcmxkW3cgKyA1XTtcblx0XHRcdHRtcHggPSAoeDEgLSBjeDEgKiAyICsgY3gyKSAqIDAuMTg3NTtcblx0XHRcdHRtcHkgPSAoeTEgLSBjeTEgKiAyICsgY3kyKSAqIDAuMTg3NTtcblx0XHRcdGRkZGZ4ID0gKChjeDEgLSBjeDIpICogMyAtIHgxICsgeDIpICogMC4wOTM3NTtcblx0XHRcdGRkZGZ5ID0gKChjeTEgLSBjeTIpICogMyAtIHkxICsgeTIpICogMC4wOTM3NTtcblx0XHRcdGRkZnggPSB0bXB4ICogMiArIGRkZGZ4O1xuXHRcdFx0ZGRmeSA9IHRtcHkgKiAyICsgZGRkZnk7XG5cdFx0XHRkZnggPSAoY3gxIC0geDEpICogMC43NSArIHRtcHggKyBkZGRmeCAqIDAuMTY2NjY2Njc7XG5cdFx0XHRkZnkgPSAoY3kxIC0geTEpICogMC43NSArIHRtcHkgKyBkZGRmeSAqIDAuMTY2NjY2Njc7XG5cdFx0XHRwYXRoTGVuZ3RoICs9IE1hdGguc3FydChkZnggKiBkZnggKyBkZnkgKiBkZnkpO1xuXHRcdFx0ZGZ4ICs9IGRkZng7XG5cdFx0XHRkZnkgKz0gZGRmeTtcblx0XHRcdGRkZnggKz0gZGRkZng7XG5cdFx0XHRkZGZ5ICs9IGRkZGZ5O1xuXHRcdFx0cGF0aExlbmd0aCArPSBNYXRoLnNxcnQoZGZ4ICogZGZ4ICsgZGZ5ICogZGZ5KTtcblx0XHRcdGRmeCArPSBkZGZ4O1xuXHRcdFx0ZGZ5ICs9IGRkZnk7XG5cdFx0XHRwYXRoTGVuZ3RoICs9IE1hdGguc3FydChkZnggKiBkZnggKyBkZnkgKiBkZnkpO1xuXHRcdFx0ZGZ4ICs9IGRkZnggKyBkZGRmeDtcblx0XHRcdGRmeSArPSBkZGZ5ICsgZGRkZnk7XG5cdFx0XHRwYXRoTGVuZ3RoICs9IE1hdGguc3FydChkZnggKiBkZnggKyBkZnkgKiBkZnkpO1xuXHRcdFx0Y3VydmVzW2ldID0gcGF0aExlbmd0aDtcblx0XHRcdHgxID0geDI7XG5cdFx0XHR5MSA9IHkyO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmRhdGEucG9zaXRpb25Nb2RlID09PSBQb3NpdGlvbk1vZGUuUGVyY2VudCkgcG9zaXRpb24gKj0gcGF0aExlbmd0aDtcblxuXHRcdGxldCBtdWx0aXBsaWVyOiBudW1iZXI7XG5cdFx0c3dpdGNoICh0aGlzLmRhdGEuc3BhY2luZ01vZGUpIHtcblx0XHRcdGNhc2UgU3BhY2luZ01vZGUuUGVyY2VudDogbXVsdGlwbGllciA9IHBhdGhMZW5ndGg7IGJyZWFrO1xuXHRcdFx0Y2FzZSBTcGFjaW5nTW9kZS5Qcm9wb3J0aW9uYWw6IG11bHRpcGxpZXIgPSBwYXRoTGVuZ3RoIC8gc3BhY2VzQ291bnQ7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogbXVsdGlwbGllciA9IDE7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc2VnbWVudHMgPSB0aGlzLnNlZ21lbnRzO1xuXHRcdGxldCBjdXJ2ZUxlbmd0aCA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG8gPSAwLCBjdXJ2ZSA9IDAsIHNlZ21lbnQgPSAwOyBpIDwgc3BhY2VzQ291bnQ7IGkrKywgbyArPSAzKSB7XG5cdFx0XHRjb25zdCBzcGFjZSA9IHNwYWNlc1tpXSAqIG11bHRpcGxpZXI7XG5cdFx0XHRwb3NpdGlvbiArPSBzcGFjZTtcblx0XHRcdGxldCBwID0gcG9zaXRpb247XG5cblx0XHRcdGlmIChjbG9zZWQpIHtcblx0XHRcdFx0cCAlPSBwYXRoTGVuZ3RoO1xuXHRcdFx0XHRpZiAocCA8IDApIHAgKz0gcGF0aExlbmd0aDtcblx0XHRcdFx0Y3VydmUgPSAwO1xuXHRcdFx0XHRzZWdtZW50ID0gMDtcblx0XHRcdH0gZWxzZSBpZiAocCA8IDApIHtcblx0XHRcdFx0dGhpcy5hZGRCZWZvcmVQb3NpdGlvbihwLCB3b3JsZCwgMCwgb3V0LCBvKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9IGVsc2UgaWYgKHAgPiBwYXRoTGVuZ3RoKSB7XG5cdFx0XHRcdHRoaXMuYWRkQWZ0ZXJQb3NpdGlvbihwIC0gcGF0aExlbmd0aCwgd29ybGQsIHZlcnRpY2VzTGVuZ3RoIC0gNCwgb3V0LCBvKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIERldGVybWluZSBjdXJ2ZSBjb250YWluaW5nIHBvc2l0aW9uLlxuXHRcdFx0Zm9yICg7IDsgY3VydmUrKykge1xuXHRcdFx0XHRjb25zdCBsZW5ndGggPSBjdXJ2ZXNbY3VydmVdO1xuXHRcdFx0XHRpZiAocCA+IGxlbmd0aCkgY29udGludWU7XG5cdFx0XHRcdGlmIChjdXJ2ZSA9PT0gMClcblx0XHRcdFx0XHRwIC89IGxlbmd0aDtcblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgcHJldiA9IGN1cnZlc1tjdXJ2ZSAtIDFdO1xuXHRcdFx0XHRcdHAgPSAocCAtIHByZXYpIC8gKGxlbmd0aCAtIHByZXYpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDdXJ2ZSBzZWdtZW50IGxlbmd0aHMuXG5cdFx0XHRpZiAoY3VydmUgIT09IHByZXZDdXJ2ZSkge1xuXHRcdFx0XHRwcmV2Q3VydmUgPSBjdXJ2ZTtcblx0XHRcdFx0bGV0IGlpID0gY3VydmUgKiA2O1xuXHRcdFx0XHR4MSA9IHdvcmxkW2lpXTtcblx0XHRcdFx0eTEgPSB3b3JsZFtpaSArIDFdO1xuXHRcdFx0XHRjeDEgPSB3b3JsZFtpaSArIDJdO1xuXHRcdFx0XHRjeTEgPSB3b3JsZFtpaSArIDNdO1xuXHRcdFx0XHRjeDIgPSB3b3JsZFtpaSArIDRdO1xuXHRcdFx0XHRjeTIgPSB3b3JsZFtpaSArIDVdO1xuXHRcdFx0XHR4MiA9IHdvcmxkW2lpICsgNl07XG5cdFx0XHRcdHkyID0gd29ybGRbaWkgKyA3XTtcblx0XHRcdFx0dG1weCA9ICh4MSAtIGN4MSAqIDIgKyBjeDIpICogMC4wMztcblx0XHRcdFx0dG1weSA9ICh5MSAtIGN5MSAqIDIgKyBjeTIpICogMC4wMztcblx0XHRcdFx0ZGRkZnggPSAoKGN4MSAtIGN4MikgKiAzIC0geDEgKyB4MikgKiAwLjAwNjtcblx0XHRcdFx0ZGRkZnkgPSAoKGN5MSAtIGN5MikgKiAzIC0geTEgKyB5MikgKiAwLjAwNjtcblx0XHRcdFx0ZGRmeCA9IHRtcHggKiAyICsgZGRkZng7XG5cdFx0XHRcdGRkZnkgPSB0bXB5ICogMiArIGRkZGZ5O1xuXHRcdFx0XHRkZnggPSAoY3gxIC0geDEpICogMC4zICsgdG1weCArIGRkZGZ4ICogMC4xNjY2NjY2Nztcblx0XHRcdFx0ZGZ5ID0gKGN5MSAtIHkxKSAqIDAuMyArIHRtcHkgKyBkZGRmeSAqIDAuMTY2NjY2Njc7XG5cdFx0XHRcdGN1cnZlTGVuZ3RoID0gTWF0aC5zcXJ0KGRmeCAqIGRmeCArIGRmeSAqIGRmeSk7XG5cdFx0XHRcdHNlZ21lbnRzWzBdID0gY3VydmVMZW5ndGg7XG5cdFx0XHRcdGZvciAoaWkgPSAxOyBpaSA8IDg7IGlpKyspIHtcblx0XHRcdFx0XHRkZnggKz0gZGRmeDtcblx0XHRcdFx0XHRkZnkgKz0gZGRmeTtcblx0XHRcdFx0XHRkZGZ4ICs9IGRkZGZ4O1xuXHRcdFx0XHRcdGRkZnkgKz0gZGRkZnk7XG5cdFx0XHRcdFx0Y3VydmVMZW5ndGggKz0gTWF0aC5zcXJ0KGRmeCAqIGRmeCArIGRmeSAqIGRmeSk7XG5cdFx0XHRcdFx0c2VnbWVudHNbaWldID0gY3VydmVMZW5ndGg7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGZ4ICs9IGRkZng7XG5cdFx0XHRcdGRmeSArPSBkZGZ5O1xuXHRcdFx0XHRjdXJ2ZUxlbmd0aCArPSBNYXRoLnNxcnQoZGZ4ICogZGZ4ICsgZGZ5ICogZGZ5KTtcblx0XHRcdFx0c2VnbWVudHNbOF0gPSBjdXJ2ZUxlbmd0aDtcblx0XHRcdFx0ZGZ4ICs9IGRkZnggKyBkZGRmeDtcblx0XHRcdFx0ZGZ5ICs9IGRkZnkgKyBkZGRmeTtcblx0XHRcdFx0Y3VydmVMZW5ndGggKz0gTWF0aC5zcXJ0KGRmeCAqIGRmeCArIGRmeSAqIGRmeSk7XG5cdFx0XHRcdHNlZ21lbnRzWzldID0gY3VydmVMZW5ndGg7XG5cdFx0XHRcdHNlZ21lbnQgPSAwO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBXZWlnaHQgYnkgc2VnbWVudCBsZW5ndGguXG5cdFx0XHRwICo9IGN1cnZlTGVuZ3RoO1xuXHRcdFx0Zm9yICg7IDsgc2VnbWVudCsrKSB7XG5cdFx0XHRcdGNvbnN0IGxlbmd0aCA9IHNlZ21lbnRzW3NlZ21lbnRdO1xuXHRcdFx0XHRpZiAocCA+IGxlbmd0aCkgY29udGludWU7XG5cdFx0XHRcdGlmIChzZWdtZW50ID09PSAwKVxuXHRcdFx0XHRcdHAgLz0gbGVuZ3RoO1xuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRjb25zdCBwcmV2ID0gc2VnbWVudHNbc2VnbWVudCAtIDFdO1xuXHRcdFx0XHRcdHAgPSBzZWdtZW50ICsgKHAgLSBwcmV2KSAvIChsZW5ndGggLSBwcmV2KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdHRoaXMuYWRkQ3VydmVQb3NpdGlvbihwICogMC4xLCB4MSwgeTEsIGN4MSwgY3kxLCBjeDIsIGN5MiwgeDIsIHkyLCBvdXQsIG8sIHRhbmdlbnRzIHx8IChpID4gMCAmJiBzcGFjZSA9PT0gMCkpO1xuXHRcdH1cblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cblx0YWRkQmVmb3JlUG9zaXRpb24gKHA6IG51bWJlciwgdGVtcDogQXJyYXk8bnVtYmVyPiwgaTogbnVtYmVyLCBvdXQ6IEFycmF5PG51bWJlcj4sIG86IG51bWJlcikge1xuXHRcdGNvbnN0IHgxID0gdGVtcFtpXSwgeTEgPSB0ZW1wW2kgKyAxXSwgZHggPSB0ZW1wW2kgKyAyXSAtIHgxLCBkeSA9IHRlbXBbaSArIDNdIC0geTEsIHIgPSBNYXRoLmF0YW4yKGR5LCBkeCk7XG5cdFx0b3V0W29dID0geDEgKyBwICogTWF0aC5jb3Mocik7XG5cdFx0b3V0W28gKyAxXSA9IHkxICsgcCAqIE1hdGguc2luKHIpO1xuXHRcdG91dFtvICsgMl0gPSByO1xuXHR9XG5cblx0YWRkQWZ0ZXJQb3NpdGlvbiAocDogbnVtYmVyLCB0ZW1wOiBBcnJheTxudW1iZXI+LCBpOiBudW1iZXIsIG91dDogQXJyYXk8bnVtYmVyPiwgbzogbnVtYmVyKSB7XG5cdFx0Y29uc3QgeDEgPSB0ZW1wW2kgKyAyXSwgeTEgPSB0ZW1wW2kgKyAzXSwgZHggPSB4MSAtIHRlbXBbaV0sIGR5ID0geTEgLSB0ZW1wW2kgKyAxXSwgciA9IE1hdGguYXRhbjIoZHksIGR4KTtcblx0XHRvdXRbb10gPSB4MSArIHAgKiBNYXRoLmNvcyhyKTtcblx0XHRvdXRbbyArIDFdID0geTEgKyBwICogTWF0aC5zaW4ocik7XG5cdFx0b3V0W28gKyAyXSA9IHI7XG5cdH1cblxuXHRhZGRDdXJ2ZVBvc2l0aW9uIChwOiBudW1iZXIsIHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIGN4MTogbnVtYmVyLCBjeTE6IG51bWJlciwgY3gyOiBudW1iZXIsIGN5MjogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLFxuXHRcdG91dDogQXJyYXk8bnVtYmVyPiwgbzogbnVtYmVyLCB0YW5nZW50czogYm9vbGVhbikge1xuXHRcdGlmIChwID09PSAwIHx8IE51bWJlci5pc05hTihwKSkge1xuXHRcdFx0b3V0W29dID0geDE7XG5cdFx0XHRvdXRbbyArIDFdID0geTE7XG5cdFx0XHRvdXRbbyArIDJdID0gTWF0aC5hdGFuMihjeTEgLSB5MSwgY3gxIC0geDEpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCB0dCA9IHAgKiBwLCB0dHQgPSB0dCAqIHAsIHUgPSAxIC0gcCwgdXUgPSB1ICogdSwgdXV1ID0gdXUgKiB1O1xuXHRcdGNvbnN0IHV0ID0gdSAqIHAsIHV0MyA9IHV0ICogMywgdXV0MyA9IHUgKiB1dDMsIHV0dDMgPSB1dDMgKiBwO1xuXHRcdGNvbnN0IHggPSB4MSAqIHV1dSArIGN4MSAqIHV1dDMgKyBjeDIgKiB1dHQzICsgeDIgKiB0dHQsIHkgPSB5MSAqIHV1dSArIGN5MSAqIHV1dDMgKyBjeTIgKiB1dHQzICsgeTIgKiB0dHQ7XG5cdFx0b3V0W29dID0geDtcblx0XHRvdXRbbyArIDFdID0geTtcblx0XHRpZiAodGFuZ2VudHMpIHtcblx0XHRcdGlmIChwIDwgMC4wMDEpXG5cdFx0XHRcdG91dFtvICsgMl0gPSBNYXRoLmF0YW4yKGN5MSAtIHkxLCBjeDEgLSB4MSk7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdG91dFtvICsgMl0gPSBNYXRoLmF0YW4yKHkgLSAoeTEgKiB1dSArIGN5MSAqIHV0ICogMiArIGN5MiAqIHR0KSwgeCAtICh4MSAqIHV1ICsgY3gxICogdXQgKiAyICsgY3gyICogdHQpKTtcblx0XHR9XG5cdH1cblxuXHRzb3J0IChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHRjb25zdCBzbG90SW5kZXggPSB0aGlzLnNsb3QuZGF0YS5pbmRleDtcblx0XHRjb25zdCBzbG90Qm9uZSA9IHRoaXMuc2xvdC5ib25lO1xuXHRcdGlmIChza2VsZXRvbi5za2luICE9IG51bGwpIHRoaXMuc29ydFBhdGhTbG90KHNrZWxldG9uLCBza2VsZXRvbi5za2luLCBzbG90SW5kZXgsIHNsb3RCb25lKTtcblx0XHRpZiAoc2tlbGV0b24uZGF0YS5kZWZhdWx0U2tpbiAhPSBudWxsICYmIHNrZWxldG9uLmRhdGEuZGVmYXVsdFNraW4gIT09IHNrZWxldG9uLnNraW4pXG5cdFx0XHR0aGlzLnNvcnRQYXRoU2xvdChza2VsZXRvbiwgc2tlbGV0b24uZGF0YS5kZWZhdWx0U2tpbiwgc2xvdEluZGV4LCBzbG90Qm9uZSk7XG5cdFx0dGhpcy5zb3J0UGF0aChza2VsZXRvbiwgdGhpcy5zbG90LnBvc2UuYXR0YWNobWVudCwgc2xvdEJvbmUpO1xuXHRcdGNvbnN0IGJvbmVzID0gdGhpcy5ib25lcztcblx0XHRjb25zdCBib25lQ291bnQgPSB0aGlzLmJvbmVzLmxlbmd0aDtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGJvbmVDb3VudDsgaSsrKSB7XG5cdFx0XHRjb25zdCBib25lID0gYm9uZXNbaV0uYm9uZTtcblx0XHRcdHNrZWxldG9uLnNvcnRCb25lKGJvbmUpO1xuXHRcdFx0c2tlbGV0b24uY29uc3RyYWluZWQoYm9uZSk7XG5cdFx0fVxuXHRcdHNrZWxldG9uLl91cGRhdGVDYWNoZS5wdXNoKHRoaXMpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYm9uZUNvdW50OyBpKyspXG5cdFx0XHRza2VsZXRvbi5zb3J0UmVzZXQoYm9uZXNbaV0uYm9uZS5jaGlsZHJlbik7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKylcblx0XHRcdGJvbmVzW2ldLmJvbmUuc29ydGVkID0gdHJ1ZTtcblx0fVxuXG5cdHByaXZhdGUgc29ydFBhdGhTbG90IChza2VsZXRvbjogU2tlbGV0b24sIHNraW46IFNraW4sIHNsb3RJbmRleDogbnVtYmVyLCBzbG90Qm9uZTogQm9uZSkge1xuXHRcdGNvbnN0IGVudHJpZXMgPSBza2luLmdldEF0dGFjaG1lbnRzKCk7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBlbnRyaWVzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3QgZW50cnkgPSBlbnRyaWVzW2ldO1xuXHRcdFx0aWYgKGVudHJ5LnNsb3RJbmRleCA9PT0gc2xvdEluZGV4KSB0aGlzLnNvcnRQYXRoKHNrZWxldG9uLCBlbnRyeS5hdHRhY2htZW50LCBzbG90Qm9uZSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzb3J0UGF0aCAoc2tlbGV0b246IFNrZWxldG9uLCBhdHRhY2htZW50OiBBdHRhY2htZW50IHwgbnVsbCwgc2xvdEJvbmU6IEJvbmUpIHtcblx0XHRpZiAoIShhdHRhY2htZW50IGluc3RhbmNlb2YgUGF0aEF0dGFjaG1lbnQpKSByZXR1cm47XG5cdFx0Y29uc3QgcGF0aEJvbmVzID0gYXR0YWNobWVudC5ib25lcztcblx0XHRpZiAocGF0aEJvbmVzID09IG51bGwpXG5cdFx0XHRza2VsZXRvbi5zb3J0Qm9uZShzbG90Qm9uZSk7XG5cdFx0ZWxzZSB7XG5cdFx0XHRjb25zdCBib25lcyA9IHNrZWxldG9uLmJvbmVzO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBwYXRoQm9uZXMubGVuZ3RoOyBpIDwgbjspIHtcblx0XHRcdFx0bGV0IG5uID0gcGF0aEJvbmVzW2krK107XG5cdFx0XHRcdG5uICs9IGk7XG5cdFx0XHRcdHdoaWxlIChpIDwgbm4pXG5cdFx0XHRcdFx0c2tlbGV0b24uc29ydEJvbmUoYm9uZXNbcGF0aEJvbmVzW2krK11dKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpc1NvdXJjZUFjdGl2ZSAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc2xvdC5ib25lLmFjdGl2ZTtcblx0fVxufVxuIl19
|
|
509
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0aENvbnN0cmFpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUGF0aENvbnN0cmFpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUdqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUEyQixZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRzlDOzt5R0FFeUc7QUFDekcsTUFBTSxPQUFPLGNBQWUsU0FBUSxVQUFrRTtJQUNyRyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFeEQsNkNBQTZDO0lBQzdDLElBQUksQ0FBcUI7SUFFekIsK0RBQStEO0lBQy9ELEtBQUssQ0FBa0I7SUFFdkIsNEVBQTRFO0lBQzVFLElBQUksQ0FBTztJQUVYLE1BQU0sR0FBRyxFQUFjLENBQUM7SUFBQyxTQUFTLEdBQUcsRUFBYyxDQUFDO0lBQ3BELEtBQUssR0FBRyxFQUFjLENBQUM7SUFBQyxNQUFNLEdBQUcsRUFBYyxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQWMsQ0FBQztJQUMxRSxRQUFRLEdBQUcsRUFBYyxDQUFDO0lBRTFCLFlBQWEsSUFBd0IsRUFBRSxRQUFrQjtRQUN4RCxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksa0JBQWtCLEVBQUUsRUFBRSxJQUFJLGtCQUFrQixF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QUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3BELEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQixHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQixHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsQixJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7WUFDckMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQ3JDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQzlDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQzlDLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDeEIsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLFVBQVUs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QztZQUNoQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDNUMsT0FBTztRQUNSLENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDL0QsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUMzRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLEdBQUcsS0FBSztnQkFDWixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7O2dCQUU1QyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RyxDQUFDO0lBQ0YsQ0FBQztJQUVELElBQUksQ0FBRSxRQUFrQjtRQUN2QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDaEMsSUFBSSxRQUFRLENBQUMsSUFBSSxJQUFJLElBQUk7WUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzRixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRLENBQUMsSUFBSTtZQUNuRixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzdELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDM0IsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFDRCxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUNqQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDakMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFTyxZQUFZLENBQUUsUUFBa0IsRUFBRSxJQUFVLEVBQUUsU0FBaUIsRUFBRSxRQUFjO1FBQ3RGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDaEQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTO2dCQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEYsQ0FBQztJQUNGLENBQUM7SUFFTyxRQUFRLENBQUUsUUFBa0IsRUFBRSxVQUE2QixFQUFFLFFBQWM7UUFDbEYsSUFBSSxDQUFDLENBQUMsVUFBVSxZQUFZLGNBQWMsQ0FBQztZQUFFLE9BQU87UUFDcEQsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNuQyxJQUFJLFNBQVMsSUFBSSxJQUFJO1lBQ3BCLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDeEIsQ0FBQztZQUNMLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDN0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO2dCQUM5QyxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDeEIsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDUixPQUFPLENBQUMsR0FBRyxFQUFFO29CQUNaLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxDQUFDO1FBQ0YsQ0FBQztJQUNGLENBQUM7SUFFRCxjQUFjO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgUGF0aEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9QYXRoQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBCb25lIH0gZnJvbSBcIi4vQm9uZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBCb25lUG9zZSB9IGZyb20gXCIuL0JvbmVQb3NlLmpzXCI7XG5pbXBvcnQgeyBDb25zdHJhaW50IH0gZnJvbSBcIi4vQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgdHlwZSBQYXRoQ29uc3RyYWludERhdGEsIFBvc2l0aW9uTW9kZSwgUm90YXRlTW9kZSwgU3BhY2luZ01vZGUgfSBmcm9tIFwiLi9QYXRoQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IFBhdGhDb25zdHJhaW50UG9zZSB9IGZyb20gXCIuL1BhdGhDb25zdHJhaW50UG9zZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBQaHlzaWNzIH0gZnJvbSBcIi4vUGh5c2ljcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNraW4gfSBmcm9tIFwiLi9Ta2luLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNsb3QgfSBmcm9tIFwiLi9TbG90LmpzXCI7XG5pbXBvcnQgeyBNYXRoVXRpbHMsIFV0aWxzIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuXG4vKiogQWRqdXN0cyB0aGUgcm90YXRpb24sIHRyYW5zbGF0aW9uLCBhbmQgc2NhbGUgb2YgdGhlIGNvbnN0cmFpbmVkIGJvbmVzIHNvIHRoZXkgZm9sbG93IGEge0BsaW5rIFBhdGhBdHRhY2htZW50fS5cbiAqXG4gKiBTZWUgW1BhdGggY29uc3RyYWludHNdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1wYXRoLWNvbnN0cmFpbnRzKSBpbiB0aGUgU3BpbmUgVXNlciBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBQYXRoQ29uc3RyYWludCBleHRlbmRzIENvbnN0cmFpbnQ8UGF0aENvbnN0cmFpbnQsIFBhdGhDb25zdHJhaW50RGF0YSwgUGF0aENvbnN0cmFpbnRQb3NlPiB7XG5cdHN0YXRpYyBOT05FID0gLTE7IHN0YXRpYyBCRUZPUkUgPSAtMjsgc3RhdGljIEFGVEVSID0gLTM7XG5cblx0LyoqIFRoZSBwYXRoIGNvbnN0cmFpbnQncyBzZXR1cCBwb3NlIGRhdGEuICovXG5cdGRhdGE6IFBhdGhDb25zdHJhaW50RGF0YTtcblxuXHQvKiogVGhlIGJvbmVzIHRoYXQgd2lsbCBiZSBtb2RpZmllZCBieSB0aGlzIHBhdGggY29uc3RyYWludC4gKi9cblx0Ym9uZXM6IEFycmF5PEJvbmVQb3NlPjtcblxuXHQvKiogVGhlIHNsb3Qgd2hvc2UgcGF0aCBhdHRhY2htZW50IHdpbGwgYmUgdXNlZCB0byBjb25zdHJhaW5lZCB0aGUgYm9uZXMuICovXG5cdHNsb3Q6IFNsb3Q7XG5cblx0c3BhY2VzID0gW10gYXMgbnVtYmVyW107IHBvc2l0aW9ucyA9IFtdIGFzIG51bWJlcltdO1xuXHR3b3JsZCA9IFtdIGFzIG51bWJlcltdOyBjdXJ2ZXMgPSBbXSBhcyBudW1iZXJbXTsgbGVuZ3RocyA9IFtdIGFzIG51bWJlcltdO1xuXHRzZWdtZW50cyA9IFtdIGFzIG51bWJlcltdO1xuXG5cdGNvbnN0cnVjdG9yIChkYXRhOiBQYXRoQ29uc3RyYWludERhdGEsIHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdHN1cGVyKGRhdGEsIG5ldyBQYXRoQ29uc3RyYWludFBvc2UoKSwgbmV3IFBhdGhDb25zdHJhaW50UG9zZSgpKTtcblx0XHRpZiAoIXNrZWxldG9uKSB0aHJvdyBuZXcgRXJyb3IoXCJza2VsZXRvbiBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0dGhpcy5kYXRhID0gZGF0YTtcblxuXHRcdHRoaXMuYm9uZXMgPSBbXSBhcyBCb25lUG9zZVtdO1xuXHRcdGZvciAoY29uc3QgYm9uZURhdGEgb2YgdGhpcy5kYXRhLmJvbmVzKVxuXHRcdFx0dGhpcy5ib25lcy5wdXNoKHNrZWxldG9uLmJvbmVzW2JvbmVEYXRhLmluZGV4XS5jb25zdHJhaW5lZFBvc2UpO1xuXG5cdFx0dGhpcy5zbG90ID0gc2tlbGV0b24uc2xvdHNbZGF0YS5zbG90LmluZGV4XTtcblx0fVxuXG5cdHB1YmxpYyBjb3B5IChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHR2YXIgY29weSA9IG5ldyBQYXRoQ29uc3RyYWludCh0aGlzLmRhdGEsIHNrZWxldG9uKTtcblx0XHRjb3B5LnBvc2Uuc2V0KHRoaXMucG9zZSk7XG5cdFx0cmV0dXJuIGNvcHk7XG5cdH1cblxuXHR1cGRhdGUgKHNrZWxldG9uOiBTa2VsZXRvbiwgcGh5c2ljczogUGh5c2ljcykge1xuXHRcdGNvbnN0IGF0dGFjaG1lbnQgPSB0aGlzLnNsb3QuYXBwbGllZFBvc2UuYXR0YWNobWVudDtcblx0XHRpZiAoIShhdHRhY2htZW50IGluc3RhbmNlb2YgUGF0aEF0dGFjaG1lbnQpKSByZXR1cm47XG5cblx0XHRjb25zdCBwID0gdGhpcy5hcHBsaWVkUG9zZTtcblx0XHRjb25zdCBtaXhSb3RhdGUgPSBwLm1peFJvdGF0ZSwgbWl4WCA9IHAubWl4WCwgbWl4WSA9IHAubWl4WTtcblx0XHRpZiAobWl4Um90YXRlID09PSAwICYmIG1peFggPT09IDAgJiYgbWl4WSA9PT0gMCkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgZGF0YSA9IHRoaXMuZGF0YTtcblx0XHRjb25zdCB0YW5nZW50cyA9IGRhdGEucm90YXRlTW9kZSA9PT0gUm90YXRlTW9kZS5UYW5nZW50LCBzY2FsZSA9IGRhdGEucm90YXRlTW9kZSA9PT0gUm90YXRlTW9kZS5DaGFpblNjYWxlO1xuXG5cdFx0Y29uc3QgYm9uZXMgPSB0aGlzLmJvbmVzO1xuXHRcdGNvbnN0IGJvbmVDb3VudCA9IGJvbmVzLmxlbmd0aCwgc3BhY2VzQ291bnQgPSB0YW5nZW50cyA/IGJvbmVDb3VudCA6IGJvbmVDb3VudCArIDE7XG5cdFx0Y29uc3Qgc3BhY2VzID0gVXRpbHMuc2V0QXJyYXlTaXplKHRoaXMuc3BhY2VzLCBzcGFjZXNDb3VudCksIGxlbmd0aHM6IEFycmF5PG51bWJlcj4gPSBzY2FsZSA/IHRoaXMubGVuZ3RocyA9IFV0aWxzLnNldEFycmF5U2l6ZSh0aGlzLmxlbmd0aHMsIGJvbmVDb3VudCkgOiBbXTtcblx0XHRjb25zdCBzcGFjaW5nID0gcC5zcGFjaW5nO1xuXG5cdFx0c3dpdGNoIChkYXRhLnNwYWNpbmdNb2RlKSB7XG5cdFx0XHRjYXNlIFNwYWNpbmdNb2RlLlBlcmNlbnQ6XG5cdFx0XHRcdGlmIChzY2FsZSkge1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gc3BhY2VzQ291bnQgLSAxOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBib25lID0gYm9uZXNbaV07XG5cdFx0XHRcdFx0XHRjb25zdCBzZXR1cExlbmd0aCA9IGJvbmUuYm9uZS5kYXRhLmxlbmd0aDtcblx0XHRcdFx0XHRcdGNvbnN0IHggPSBzZXR1cExlbmd0aCAqIGJvbmUuYSwgeSA9IHNldHVwTGVuZ3RoICogYm9uZS5jO1xuXHRcdFx0XHRcdFx0bGVuZ3Roc1tpXSA9IE1hdGguc3FydCh4ICogeCArIHkgKiB5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0VXRpbHMuYXJyYXlGaWxsKHNwYWNlcywgMSwgc3BhY2VzQ291bnQsIHNwYWNpbmcpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgU3BhY2luZ01vZGUuUHJvcG9ydGlvbmFsOiB7XG5cdFx0XHRcdGxldCBzdW0gPSAwO1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHNwYWNlc0NvdW50IC0gMTsgaSA8IG47KSB7XG5cdFx0XHRcdFx0Y29uc3QgYm9uZSA9IGJvbmVzW2ldO1xuXHRcdFx0XHRcdGNvbnN0IHNldHVwTGVuZ3RoID0gYm9uZS5ib25lLmRhdGEubGVuZ3RoO1xuXHRcdFx0XHRcdGlmIChzZXR1cExlbmd0aCA8IE1hdGhVdGlscy5lcHNpbG9uKSB7XG5cdFx0XHRcdFx0XHRpZiAoc2NhbGUpIGxlbmd0aHNbaV0gPSAwO1xuXHRcdFx0XHRcdFx0c3BhY2VzWysraV0gPSBzcGFjaW5nO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjb25zdCB4ID0gc2V0dXBMZW5ndGggKiBib25lLmEsIHkgPSBzZXR1cExlbmd0aCAqIGJvbmUuYztcblx0XHRcdFx0XHRcdGNvbnN0IGxlbmd0aCA9IE1hdGguc3FydCh4ICogeCArIHkgKiB5KTtcblx0XHRcdFx0XHRcdGlmIChzY2FsZSkgbGVuZ3Roc1tpXSA9IGxlbmd0aDtcblx0XHRcdFx0XHRcdHNwYWNlc1srK2ldID0gbGVuZ3RoO1xuXHRcdFx0XHRcdFx0c3VtICs9IGxlbmd0aDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHN1bSA+IDApIHtcblx0XHRcdFx0XHRzdW0gPSBzcGFjZXNDb3VudCAvIHN1bSAqIHNwYWNpbmc7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBzcGFjZXNDb3VudDsgaSsrKVxuXHRcdFx0XHRcdFx0c3BhY2VzW2ldICo9IHN1bTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGRlZmF1bHQ6IHtcblx0XHRcdFx0Y29uc3QgbGVuZ3RoU3BhY2luZyA9IGRhdGEuc3BhY2luZ01vZGUgPT09IFNwYWNpbmdNb2RlLkxlbmd0aDtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBzcGFjZXNDb3VudCAtIDE7IGkgPCBuOykge1xuXHRcdFx0XHRcdGNvbnN0IGJvbmUgPSBib25lc1tpXTtcblx0XHRcdFx0XHRjb25zdCBzZXR1cExlbmd0aCA9IGJvbmUuYm9uZS5kYXRhLmxlbmd0aDtcblx0XHRcdFx0XHRpZiAoc2V0dXBMZW5ndGggPCBNYXRoVXRpbHMuZXBzaWxvbikge1xuXHRcdFx0XHRcdFx0aWYgKHNjYWxlKSBsZW5ndGhzW2ldID0gMDtcblx0XHRcdFx0XHRcdHNwYWNlc1srK2ldID0gc3BhY2luZztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3QgeCA9IHNldHVwTGVuZ3RoICogYm9uZS5hLCB5ID0gc2V0dXBMZW5ndGggKiBib25lLmM7XG5cdFx0XHRcdFx0XHRjb25zdCBsZW5ndGggPSBNYXRoLnNxcnQoeCAqIHggKyB5ICogeSk7XG5cdFx0XHRcdFx0XHRpZiAoc2NhbGUpIGxlbmd0aHNbaV0gPSBsZW5ndGg7XG5cdFx0XHRcdFx0XHRzcGFjZXNbKytpXSA9IChsZW5ndGhTcGFjaW5nID8gTWF0aC5tYXgoMCwgc2V0dXBMZW5ndGggKyBzcGFjaW5nKSA6IHNwYWNpbmcpICogbGVuZ3RoIC8gc2V0dXBMZW5ndGg7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3QgcG9zaXRpb25zID0gdGhpcy5jb21wdXRlV29ybGRQb3NpdGlvbnMoc2tlbGV0b24sIGF0dGFjaG1lbnQsIHNwYWNlc0NvdW50LCB0YW5nZW50cyk7XG5cdFx0bGV0IGJvbmVYID0gcG9zaXRpb25zWzBdLCBib25lWSA9IHBvc2l0aW9uc1sxXSwgb2Zmc2V0Um90YXRpb24gPSBkYXRhLm9mZnNldFJvdGF0aW9uO1xuXHRcdGxldCB0aXAgPSBmYWxzZTtcblx0XHRpZiAob2Zmc2V0Um90YXRpb24gPT09IDApXG5cdFx0XHR0aXAgPSBkYXRhLnJvdGF0ZU1vZGUgPT09IFJvdGF0ZU1vZGUuQ2hhaW47XG5cdFx0ZWxzZSB7XG5cdFx0XHR0aXAgPSBmYWxzZTtcblx0XHRcdGNvbnN0IGJvbmUgPSB0aGlzLnNsb3QuYm9uZS5hcHBsaWVkUG9zZTtcblx0XHRcdG9mZnNldFJvdGF0aW9uICo9IGJvbmUuYSAqIGJvbmUuZCAtIGJvbmUuYiAqIGJvbmUuYyA+IDAgPyBNYXRoVXRpbHMuZGVnUmFkIDogLU1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0fVxuXHRcdGZvciAobGV0IGkgPSAwLCBpcCA9IDMsIHUgPSBza2VsZXRvbi5fdXBkYXRlOyBpIDwgYm9uZUNvdW50OyBpKyssIGlwICs9IDMpIHtcblx0XHRcdGNvbnN0IGJvbmUgPSBib25lc1tpXTtcblx0XHRcdGJvbmUud29ybGRYICs9IChib25lWCAtIGJvbmUud29ybGRYKSAqIG1peFg7XG5cdFx0XHRib25lLndvcmxkWSArPSAoYm9uZVkgLSBib25lLndvcmxkWSkgKiBtaXhZO1xuXHRcdFx0Y29uc3QgeCA9IHBvc2l0aW9uc1tpcF0sIHkgPSBwb3NpdGlvbnNbaXAgKyAxXSwgZHggPSB4IC0gYm9uZVgsIGR5ID0geSAtIGJvbmVZO1xuXHRcdFx0aWYgKHNjYWxlKSB7XG5cdFx0XHRcdGNvbnN0IGxlbmd0aCA9IGxlbmd0aHNbaV07XG5cdFx0XHRcdGlmIChsZW5ndGggIT09IDApIHtcblx0XHRcdFx0XHRjb25zdCBzID0gKE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSkgLyBsZW5ndGggLSAxKSAqIG1peFJvdGF0ZSArIDE7XG5cdFx0XHRcdFx0Ym9uZS5hICo9IHM7XG5cdFx0XHRcdFx0Ym9uZS5jICo9IHM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGJvbmVYID0geDtcblx0XHRcdGJvbmVZID0geTtcblx0XHRcdGlmIChtaXhSb3RhdGUgPiAwKSB7XG5cdFx0XHRcdGxldCBhID0gYm9uZS5hLCBiID0gYm9uZS5iLCBjID0gYm9uZS5jLCBkID0gYm9uZS5kLCByID0gMCwgY29zID0gMCwgc2luID0gMDtcblx0XHRcdFx0aWYgKHRhbmdlbnRzKVxuXHRcdFx0XHRcdHIgPSBwb3NpdGlvbnNbaXAgLSAxXTtcblx0XHRcdFx0ZWxzZSBpZiAoc3BhY2VzW2kgKyAxXSA9PT0gMClcblx0XHRcdFx0XHRyID0gcG9zaXRpb25zW2lwICsgMl07XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRyID0gTWF0aC5hdGFuMihkeSwgZHgpO1xuXHRcdFx0XHRyIC09IE1hdGguYXRhbjIoYywgYSk7XG5cdFx0XHRcdGlmICh0aXApIHtcblx0XHRcdFx0XHRjb3MgPSBNYXRoLmNvcyhyKTtcblx0XHRcdFx0XHRzaW4gPSBNYXRoLnNpbihyKTtcblx0XHRcdFx0XHRjb25zdCBsZW5ndGggPSBib25lLmJvbmUuZGF0YS5sZW5ndGg7XG5cdFx0XHRcdFx0Ym9uZVggKz0gKGxlbmd0aCAqIChjb3MgKiBhIC0gc2luICogYykgLSBkeCkgKiBtaXhSb3RhdGU7XG5cdFx0XHRcdFx0Ym9uZVkgKz0gKGxlbmd0aCAqIChzaW4gKiBhICsgY29zICogYykgLSBkeSkgKiBtaXhSb3RhdGU7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ciArPSBvZmZzZXRSb3RhdGlvbjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAociA+IE1hdGhVdGlscy5QSSlcblx0XHRcdFx0XHRyIC09IE1hdGhVdGlscy5QSTI7XG5cdFx0XHRcdGVsc2UgaWYgKHIgPCAtTWF0aFV0aWxzLlBJKSAvL1xuXHRcdFx0XHRcdHIgKz0gTWF0aFV0aWxzLlBJMjtcblx0XHRcdFx0ciAqPSBtaXhSb3RhdGU7XG5cdFx0XHRcdGNvcyA9IE1hdGguY29zKHIpO1xuXHRcdFx0XHRzaW4gPSBNYXRoLnNpbihyKTtcblx0XHRcdFx0Ym9uZS5hID0gY29zICogYSAtIHNpbiAqIGM7XG5cdFx0XHRcdGJvbmUuYiA9IGNvcyAqIGIgLSBzaW4gKiBkO1xuXHRcdFx0XHRib25lLmMgPSBzaW4gKiBhICsgY29zICogYztcblx0XHRcdFx0Ym9uZS5kID0gc2luICogYiArIGNvcyAqIGQ7XG5cdFx0XHR9XG5cdFx0XHRib25lLm1vZGlmeVdvcmxkKHUpO1xuXHRcdH1cblx0fVxuXG5cdGNvbXB1dGVXb3JsZFBvc2l0aW9ucyAoc2tlbGV0b246IFNrZWxldG9uLCBwYXRoOiBQYXRoQXR0YWNobWVudCwgc3BhY2VzQ291bnQ6IG51bWJlciwgdGFuZ2VudHM6IGJvb2xlYW4pIHtcblx0XHRjb25zdCBzbG90ID0gdGhpcy5zbG90O1xuXHRcdGxldCBwb3NpdGlvbiA9IHRoaXMuYXBwbGllZFBvc2UucG9zaXRpb247XG5cdFx0bGV0IHNwYWNlcyA9IHRoaXMuc3BhY2VzLCBvdXQgPSBVdGlscy5zZXRBcnJheVNpemUodGhpcy5wb3NpdGlvbnMsIHNwYWNlc0NvdW50ICogMyArIDIpLCB3b3JsZDogQXJyYXk8bnVtYmVyPiA9IHRoaXMud29ybGQ7XG5cdFx0Y29uc3QgY2xvc2VkID0gcGF0aC5jbG9zZWQ7XG5cdFx0bGV0IHZlcnRpY2VzTGVuZ3RoID0gcGF0aC53b3JsZFZlcnRpY2VzTGVuZ3RoLCBjdXJ2ZUNvdW50ID0gdmVydGljZXNMZW5ndGggLyA2LCBwcmV2Q3VydmUgPSBQYXRoQ29uc3RyYWludC5OT05FO1xuXG5cdFx0aWYgKCFwYXRoLmNvbnN0YW50U3BlZWQpIHtcblx0XHRcdGNvbnN0IGxlbmd0aHMgPSBwYXRoLmxlbmd0aHM7XG5cdFx0XHRjdXJ2ZUNvdW50IC09IGNsb3NlZCA/IDEgOiAyO1xuXHRcdFx0Y29uc3QgcGF0aExlbmd0aCA9IGxlbmd0aHNbY3VydmVDb3VudF07XG5cdFx0XHRpZiAodGhpcy5kYXRhLnBvc2l0aW9uTW9kZSA9PT0gUG9zaXRpb25Nb2RlLlBlcmNlbnQpIHBvc2l0aW9uICo9IHBhdGhMZW5ndGg7XG5cblx0XHRcdGxldCBtdWx0aXBsaWVyOiBudW1iZXI7XG5cdFx0XHRzd2l0Y2ggKHRoaXMuZGF0YS5zcGFjaW5nTW9kZSkge1xuXHRcdFx0XHRjYXNlIFNwYWNpbmdNb2RlLlBlcmNlbnQ6IG11bHRpcGxpZXIgPSBwYXRoTGVuZ3RoOyBicmVhaztcblx0XHRcdFx0Y2FzZSBTcGFjaW5nTW9kZS5Qcm9wb3J0aW9uYWw6IG11bHRpcGxpZXIgPSBwYXRoTGVuZ3RoIC8gc3BhY2VzQ291bnQ7IGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OiBtdWx0aXBsaWVyID0gMTtcblx0XHRcdH1cblxuXHRcdFx0d29ybGQgPSBVdGlscy5zZXRBcnJheVNpemUodGhpcy53b3JsZCwgOCk7XG5cdFx0XHRmb3IgKGxldCBpID0gMCwgbyA9IDAsIGN1cnZlID0gMDsgaSA8IHNwYWNlc0NvdW50OyBpKyssIG8gKz0gMykge1xuXHRcdFx0XHRjb25zdCBzcGFjZSA9IHNwYWNlc1tpXSAqIG11bHRpcGxpZXI7XG5cdFx0XHRcdHBvc2l0aW9uICs9IHNwYWNlO1xuXHRcdFx0XHRsZXQgcCA9IHBvc2l0aW9uO1xuXG5cdFx0XHRcdGlmIChjbG9zZWQpIHtcblx0XHRcdFx0XHRwICU9IHBhdGhMZW5ndGg7XG5cdFx0XHRcdFx0aWYgKHAgPCAwKSBwICs9IHBhdGhMZW5ndGg7XG5cdFx0XHRcdFx0Y3VydmUgPSAwO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHAgPCAwKSB7XG5cdFx0XHRcdFx0aWYgKHByZXZDdXJ2ZSAhPT0gUGF0aENvbnN0cmFpbnQuQkVGT1JFKSB7XG5cdFx0XHRcdFx0XHRwcmV2Q3VydmUgPSBQYXRoQ29uc3RyYWludC5CRUZPUkU7XG5cdFx0XHRcdFx0XHRwYXRoLmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNrZWxldG9uLCBzbG90LCAyLCA0LCB3b3JsZCwgMCwgMik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuYWRkQmVmb3JlUG9zaXRpb24ocCwgd29ybGQsIDAsIG91dCwgbyk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAocCA+IHBhdGhMZW5ndGgpIHtcblx0XHRcdFx0XHRpZiAocHJldkN1cnZlICE9PSBQYXRoQ29uc3RyYWludC5BRlRFUikge1xuXHRcdFx0XHRcdFx0cHJldkN1cnZlID0gUGF0aENvbnN0cmFpbnQuQUZURVI7XG5cdFx0XHRcdFx0XHRwYXRoLmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNrZWxldG9uLCBzbG90LCB2ZXJ0aWNlc0xlbmd0aCAtIDYsIDQsIHdvcmxkLCAwLCAyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5hZGRBZnRlclBvc2l0aW9uKHAgLSBwYXRoTGVuZ3RoLCB3b3JsZCwgMCwgb3V0LCBvKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIERldGVybWluZSBjdXJ2ZSBjb250YWluaW5nIHBvc2l0aW9uLlxuXHRcdFx0XHRmb3IgKDsgOyBjdXJ2ZSsrKSB7XG5cdFx0XHRcdFx0Y29uc3QgbGVuZ3RoID0gbGVuZ3Roc1tjdXJ2ZV07XG5cdFx0XHRcdFx0aWYgKHAgPiBsZW5ndGgpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGlmIChjdXJ2ZSA9PT0gMClcblx0XHRcdFx0XHRcdHAgLz0gbGVuZ3RoO1xuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3QgcHJldiA9IGxlbmd0aHNbY3VydmUgLSAxXTtcblx0XHRcdFx0XHRcdHAgPSAocCAtIHByZXYpIC8gKGxlbmd0aCAtIHByZXYpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY3VydmUgIT09IHByZXZDdXJ2ZSkge1xuXHRcdFx0XHRcdHByZXZDdXJ2ZSA9IGN1cnZlO1xuXHRcdFx0XHRcdGlmIChjbG9zZWQgJiYgY3VydmUgPT09IGN1cnZlQ291bnQpIHtcblx0XHRcdFx0XHRcdHBhdGguY29tcHV0ZVdvcmxkVmVydGljZXMoc2tlbGV0b24sIHNsb3QsIHZlcnRpY2VzTGVuZ3RoIC0gNCwgNCwgd29ybGQsIDAsIDIpO1xuXHRcdFx0XHRcdFx0cGF0aC5jb21wdXRlV29ybGRWZXJ0aWNlcyhza2VsZXRvbiwgc2xvdCwgMCwgNCwgd29ybGQsIDQsIDIpO1xuXHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0cGF0aC5jb21wdXRlV29ybGRWZXJ0aWNlcyhza2VsZXRvbiwgc2xvdCwgY3VydmUgKiA2ICsgMiwgOCwgd29ybGQsIDAsIDIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuYWRkQ3VydmVQb3NpdGlvbihwLCB3b3JsZFswXSwgd29ybGRbMV0sIHdvcmxkWzJdLCB3b3JsZFszXSwgd29ybGRbNF0sIHdvcmxkWzVdLCB3b3JsZFs2XSwgd29ybGRbN10sIG91dCwgbyxcblx0XHRcdFx0XHR0YW5nZW50cyB8fCAoaSA+IDAgJiYgc3BhY2UgPT09IDApKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBvdXQ7XG5cdFx0fVxuXG5cdFx0Ly8gV29ybGQgdmVydGljZXMuXG5cdFx0aWYgKGNsb3NlZCkge1xuXHRcdFx0dmVydGljZXNMZW5ndGggKz0gMjtcblx0XHRcdHdvcmxkID0gVXRpbHMuc2V0QXJyYXlTaXplKHRoaXMud29ybGQsIHZlcnRpY2VzTGVuZ3RoKTtcblx0XHRcdHBhdGguY29tcHV0ZVdvcmxkVmVydGljZXMoc2tlbGV0b24sIHNsb3QsIDIsIHZlcnRpY2VzTGVuZ3RoIC0gNCwgd29ybGQsIDAsIDIpO1xuXHRcdFx0cGF0aC5jb21wdXRlV29ybGRWZXJ0aWNlcyhza2VsZXRvbiwgc2xvdCwgMCwgMiwgd29ybGQsIHZlcnRpY2VzTGVuZ3RoIC0gNCwgMik7XG5cdFx0XHR3b3JsZFt2ZXJ0aWNlc0xlbmd0aCAtIDJdID0gd29ybGRbMF07XG5cdFx0XHR3b3JsZFt2ZXJ0aWNlc0xlbmd0aCAtIDFdID0gd29ybGRbMV07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1cnZlQ291bnQtLTtcblx0XHRcdHZlcnRpY2VzTGVuZ3RoIC09IDQ7XG5cdFx0XHR3b3JsZCA9IFV0aWxzLnNldEFycmF5U2l6ZSh0aGlzLndvcmxkLCB2ZXJ0aWNlc0xlbmd0aCk7XG5cdFx0XHRwYXRoLmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNrZWxldG9uLCBzbG90LCAyLCB2ZXJ0aWNlc0xlbmd0aCwgd29ybGQsIDAsIDIpO1xuXHRcdH1cblxuXHRcdC8vIEN1cnZlIGxlbmd0aHMuXG5cdFx0Y29uc3QgY3VydmVzID0gVXRpbHMuc2V0QXJyYXlTaXplKHRoaXMuY3VydmVzLCBjdXJ2ZUNvdW50KTtcblx0XHRsZXQgcGF0aExlbmd0aCA9IDA7XG5cdFx0bGV0IHgxID0gd29ybGRbMF0sIHkxID0gd29ybGRbMV0sIGN4MSA9IDAsIGN5MSA9IDAsIGN4MiA9IDAsIGN5MiA9IDAsIHgyID0gMCwgeTIgPSAwO1xuXHRcdGxldCB0bXB4ID0gMCwgdG1weSA9IDAsIGRkZGZ4ID0gMCwgZGRkZnkgPSAwLCBkZGZ4ID0gMCwgZGRmeSA9IDAsIGRmeCA9IDAsIGRmeSA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIHcgPSAyOyBpIDwgY3VydmVDb3VudDsgaSsrLCB3ICs9IDYpIHtcblx0XHRcdGN4MSA9IHdvcmxkW3ddO1xuXHRcdFx0Y3kxID0gd29ybGRbdyArIDFdO1xuXHRcdFx0Y3gyID0gd29ybGRbdyArIDJdO1xuXHRcdFx0Y3kyID0gd29ybGRbdyArIDNdO1xuXHRcdFx0eDIgPSB3b3JsZFt3ICsgNF07XG5cdFx0XHR5MiA9IHdvcmxkW3cgKyA1XTtcblx0XHRcdHRtcHggPSAoeDEgLSBjeDEgKiAyICsgY3gyKSAqIDAuMTg3NTtcblx0XHRcdHRtcHkgPSAoeTEgLSBjeTEgKiAyICsgY3kyKSAqIDAuMTg3NTtcblx0XHRcdGRkZGZ4ID0gKChjeDEgLSBjeDIpICogMyAtIHgxICsgeDIpICogMC4wOTM3NTtcblx0XHRcdGRkZGZ5ID0gKChjeTEgLSBjeTIpICogMyAtIHkxICsgeTIpICogMC4wOTM3NTtcblx0XHRcdGRkZnggPSB0bXB4ICogMiArIGRkZGZ4O1xuXHRcdFx0ZGRmeSA9IHRtcHkgKiAyICsgZGRkZnk7XG5cdFx0XHRkZnggPSAoY3gxIC0geDEpICogMC43NSArIHRtcHggKyBkZGRmeCAqIDAuMTY2NjY2Njc7XG5cdFx0XHRkZnkgPSAoY3kxIC0geTEpICogMC43NSArIHRtcHkgKyBkZGRmeSAqIDAuMTY2NjY2Njc7XG5cdFx0XHRwYXRoTGVuZ3RoICs9IE1hdGguc3FydChkZnggKiBkZnggKyBkZnkgKiBkZnkpO1xuXHRcdFx0ZGZ4ICs9IGRkZng7XG5cdFx0XHRkZnkgKz0gZGRmeTtcblx0XHRcdGRkZnggKz0gZGRkZng7XG5cdFx0XHRkZGZ5ICs9IGRkZGZ5O1xuXHRcdFx0cGF0aExlbmd0aCArPSBNYXRoLnNxcnQoZGZ4ICogZGZ4ICsgZGZ5ICogZGZ5KTtcblx0XHRcdGRmeCArPSBkZGZ4O1xuXHRcdFx0ZGZ5ICs9IGRkZnk7XG5cdFx0XHRwYXRoTGVuZ3RoICs9IE1hdGguc3FydChkZnggKiBkZnggKyBkZnkgKiBkZnkpO1xuXHRcdFx0ZGZ4ICs9IGRkZnggKyBkZGRmeDtcblx0XHRcdGRmeSArPSBkZGZ5ICsgZGRkZnk7XG5cdFx0XHRwYXRoTGVuZ3RoICs9IE1hdGguc3FydChkZnggKiBkZnggKyBkZnkgKiBkZnkpO1xuXHRcdFx0Y3VydmVzW2ldID0gcGF0aExlbmd0aDtcblx0XHRcdHgxID0geDI7XG5cdFx0XHR5MSA9IHkyO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmRhdGEucG9zaXRpb25Nb2RlID09PSBQb3NpdGlvbk1vZGUuUGVyY2VudCkgcG9zaXRpb24gKj0gcGF0aExlbmd0aDtcblxuXHRcdGxldCBtdWx0aXBsaWVyOiBudW1iZXI7XG5cdFx0c3dpdGNoICh0aGlzLmRhdGEuc3BhY2luZ01vZGUpIHtcblx0XHRcdGNhc2UgU3BhY2luZ01vZGUuUGVyY2VudDogbXVsdGlwbGllciA9IHBhdGhMZW5ndGg7IGJyZWFrO1xuXHRcdFx0Y2FzZSBTcGFjaW5nTW9kZS5Qcm9wb3J0aW9uYWw6IG11bHRpcGxpZXIgPSBwYXRoTGVuZ3RoIC8gc3BhY2VzQ291bnQ7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogbXVsdGlwbGllciA9IDE7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc2VnbWVudHMgPSB0aGlzLnNlZ21lbnRzO1xuXHRcdGxldCBjdXJ2ZUxlbmd0aCA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG8gPSAwLCBjdXJ2ZSA9IDAsIHNlZ21lbnQgPSAwOyBpIDwgc3BhY2VzQ291bnQ7IGkrKywgbyArPSAzKSB7XG5cdFx0XHRjb25zdCBzcGFjZSA9IHNwYWNlc1tpXSAqIG11bHRpcGxpZXI7XG5cdFx0XHRwb3NpdGlvbiArPSBzcGFjZTtcblx0XHRcdGxldCBwID0gcG9zaXRpb247XG5cblx0XHRcdGlmIChjbG9zZWQpIHtcblx0XHRcdFx0cCAlPSBwYXRoTGVuZ3RoO1xuXHRcdFx0XHRpZiAocCA8IDApIHAgKz0gcGF0aExlbmd0aDtcblx0XHRcdFx0Y3VydmUgPSAwO1xuXHRcdFx0XHRzZWdtZW50ID0gMDtcblx0XHRcdH0gZWxzZSBpZiAocCA8IDApIHtcblx0XHRcdFx0dGhpcy5hZGRCZWZvcmVQb3NpdGlvbihwLCB3b3JsZCwgMCwgb3V0LCBvKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9IGVsc2UgaWYgKHAgPiBwYXRoTGVuZ3RoKSB7XG5cdFx0XHRcdHRoaXMuYWRkQWZ0ZXJQb3NpdGlvbihwIC0gcGF0aExlbmd0aCwgd29ybGQsIHZlcnRpY2VzTGVuZ3RoIC0gNCwgb3V0LCBvKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIERldGVybWluZSBjdXJ2ZSBjb250YWluaW5nIHBvc2l0aW9uLlxuXHRcdFx0Zm9yICg7IDsgY3VydmUrKykge1xuXHRcdFx0XHRjb25zdCBsZW5ndGggPSBjdXJ2ZXNbY3VydmVdO1xuXHRcdFx0XHRpZiAocCA+IGxlbmd0aCkgY29udGludWU7XG5cdFx0XHRcdGlmIChjdXJ2ZSA9PT0gMClcblx0XHRcdFx0XHRwIC89IGxlbmd0aDtcblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgcHJldiA9IGN1cnZlc1tjdXJ2ZSAtIDFdO1xuXHRcdFx0XHRcdHAgPSAocCAtIHByZXYpIC8gKGxlbmd0aCAtIHByZXYpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDdXJ2ZSBzZWdtZW50IGxlbmd0aHMuXG5cdFx0XHRpZiAoY3VydmUgIT09IHByZXZDdXJ2ZSkge1xuXHRcdFx0XHRwcmV2Q3VydmUgPSBjdXJ2ZTtcblx0XHRcdFx0bGV0IGlpID0gY3VydmUgKiA2O1xuXHRcdFx0XHR4MSA9IHdvcmxkW2lpXTtcblx0XHRcdFx0eTEgPSB3b3JsZFtpaSArIDFdO1xuXHRcdFx0XHRjeDEgPSB3b3JsZFtpaSArIDJdO1xuXHRcdFx0XHRjeTEgPSB3b3JsZFtpaSArIDNdO1xuXHRcdFx0XHRjeDIgPSB3b3JsZFtpaSArIDRdO1xuXHRcdFx0XHRjeTIgPSB3b3JsZFtpaSArIDVdO1xuXHRcdFx0XHR4MiA9IHdvcmxkW2lpICsgNl07XG5cdFx0XHRcdHkyID0gd29ybGRbaWkgKyA3XTtcblx0XHRcdFx0dG1weCA9ICh4MSAtIGN4MSAqIDIgKyBjeDIpICogMC4wMztcblx0XHRcdFx0dG1weSA9ICh5MSAtIGN5MSAqIDIgKyBjeTIpICogMC4wMztcblx0XHRcdFx0ZGRkZnggPSAoKGN4MSAtIGN4MikgKiAzIC0geDEgKyB4MikgKiAwLjAwNjtcblx0XHRcdFx0ZGRkZnkgPSAoKGN5MSAtIGN5MikgKiAzIC0geTEgKyB5MikgKiAwLjAwNjtcblx0XHRcdFx0ZGRmeCA9IHRtcHggKiAyICsgZGRkZng7XG5cdFx0XHRcdGRkZnkgPSB0bXB5ICogMiArIGRkZGZ5O1xuXHRcdFx0XHRkZnggPSAoY3gxIC0geDEpICogMC4zICsgdG1weCArIGRkZGZ4ICogMC4xNjY2NjY2Nztcblx0XHRcdFx0ZGZ5ID0gKGN5MSAtIHkxKSAqIDAuMyArIHRtcHkgKyBkZGRmeSAqIDAuMTY2NjY2Njc7XG5cdFx0XHRcdGN1cnZlTGVuZ3RoID0gTWF0aC5zcXJ0KGRmeCAqIGRmeCArIGRmeSAqIGRmeSk7XG5cdFx0XHRcdHNlZ21lbnRzWzBdID0gY3VydmVMZW5ndGg7XG5cdFx0XHRcdGZvciAoaWkgPSAxOyBpaSA8IDg7IGlpKyspIHtcblx0XHRcdFx0XHRkZnggKz0gZGRmeDtcblx0XHRcdFx0XHRkZnkgKz0gZGRmeTtcblx0XHRcdFx0XHRkZGZ4ICs9IGRkZGZ4O1xuXHRcdFx0XHRcdGRkZnkgKz0gZGRkZnk7XG5cdFx0XHRcdFx0Y3VydmVMZW5ndGggKz0gTWF0aC5zcXJ0KGRmeCAqIGRmeCArIGRmeSAqIGRmeSk7XG5cdFx0XHRcdFx0c2VnbWVudHNbaWldID0gY3VydmVMZW5ndGg7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGZ4ICs9IGRkZng7XG5cdFx0XHRcdGRmeSArPSBkZGZ5O1xuXHRcdFx0XHRjdXJ2ZUxlbmd0aCArPSBNYXRoLnNxcnQoZGZ4ICogZGZ4ICsgZGZ5ICogZGZ5KTtcblx0XHRcdFx0c2VnbWVudHNbOF0gPSBjdXJ2ZUxlbmd0aDtcblx0XHRcdFx0ZGZ4ICs9IGRkZnggKyBkZGRmeDtcblx0XHRcdFx0ZGZ5ICs9IGRkZnkgKyBkZGRmeTtcblx0XHRcdFx0Y3VydmVMZW5ndGggKz0gTWF0aC5zcXJ0KGRmeCAqIGRmeCArIGRmeSAqIGRmeSk7XG5cdFx0XHRcdHNlZ21lbnRzWzldID0gY3VydmVMZW5ndGg7XG5cdFx0XHRcdHNlZ21lbnQgPSAwO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBXZWlnaHQgYnkgc2VnbWVudCBsZW5ndGguXG5cdFx0XHRwICo9IGN1cnZlTGVuZ3RoO1xuXHRcdFx0Zm9yICg7IDsgc2VnbWVudCsrKSB7XG5cdFx0XHRcdGNvbnN0IGxlbmd0aCA9IHNlZ21lbnRzW3NlZ21lbnRdO1xuXHRcdFx0XHRpZiAocCA+IGxlbmd0aCkgY29udGludWU7XG5cdFx0XHRcdGlmIChzZWdtZW50ID09PSAwKVxuXHRcdFx0XHRcdHAgLz0gbGVuZ3RoO1xuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRjb25zdCBwcmV2ID0gc2VnbWVudHNbc2VnbWVudCAtIDFdO1xuXHRcdFx0XHRcdHAgPSBzZWdtZW50ICsgKHAgLSBwcmV2KSAvIChsZW5ndGggLSBwcmV2KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdHRoaXMuYWRkQ3VydmVQb3NpdGlvbihwICogMC4xLCB4MSwgeTEsIGN4MSwgY3kxLCBjeDIsIGN5MiwgeDIsIHkyLCBvdXQsIG8sIHRhbmdlbnRzIHx8IChpID4gMCAmJiBzcGFjZSA9PT0gMCkpO1xuXHRcdH1cblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cblx0YWRkQmVmb3JlUG9zaXRpb24gKHA6IG51bWJlciwgdGVtcDogQXJyYXk8bnVtYmVyPiwgaTogbnVtYmVyLCBvdXQ6IEFycmF5PG51bWJlcj4sIG86IG51bWJlcikge1xuXHRcdGNvbnN0IHgxID0gdGVtcFtpXSwgeTEgPSB0ZW1wW2kgKyAxXSwgZHggPSB0ZW1wW2kgKyAyXSAtIHgxLCBkeSA9IHRlbXBbaSArIDNdIC0geTEsIHIgPSBNYXRoLmF0YW4yKGR5LCBkeCk7XG5cdFx0b3V0W29dID0geDEgKyBwICogTWF0aC5jb3Mocik7XG5cdFx0b3V0W28gKyAxXSA9IHkxICsgcCAqIE1hdGguc2luKHIpO1xuXHRcdG91dFtvICsgMl0gPSByO1xuXHR9XG5cblx0YWRkQWZ0ZXJQb3NpdGlvbiAocDogbnVtYmVyLCB0ZW1wOiBBcnJheTxudW1iZXI+LCBpOiBudW1iZXIsIG91dDogQXJyYXk8bnVtYmVyPiwgbzogbnVtYmVyKSB7XG5cdFx0Y29uc3QgeDEgPSB0ZW1wW2kgKyAyXSwgeTEgPSB0ZW1wW2kgKyAzXSwgZHggPSB4MSAtIHRlbXBbaV0sIGR5ID0geTEgLSB0ZW1wW2kgKyAxXSwgciA9IE1hdGguYXRhbjIoZHksIGR4KTtcblx0XHRvdXRbb10gPSB4MSArIHAgKiBNYXRoLmNvcyhyKTtcblx0XHRvdXRbbyArIDFdID0geTEgKyBwICogTWF0aC5zaW4ocik7XG5cdFx0b3V0W28gKyAyXSA9IHI7XG5cdH1cblxuXHRhZGRDdXJ2ZVBvc2l0aW9uIChwOiBudW1iZXIsIHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIGN4MTogbnVtYmVyLCBjeTE6IG51bWJlciwgY3gyOiBudW1iZXIsIGN5MjogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLFxuXHRcdG91dDogQXJyYXk8bnVtYmVyPiwgbzogbnVtYmVyLCB0YW5nZW50czogYm9vbGVhbikge1xuXHRcdGlmIChwID09PSAwIHx8IE51bWJlci5pc05hTihwKSkge1xuXHRcdFx0b3V0W29dID0geDE7XG5cdFx0XHRvdXRbbyArIDFdID0geTE7XG5cdFx0XHRvdXRbbyArIDJdID0gTWF0aC5hdGFuMihjeTEgLSB5MSwgY3gxIC0geDEpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCB0dCA9IHAgKiBwLCB0dHQgPSB0dCAqIHAsIHUgPSAxIC0gcCwgdXUgPSB1ICogdSwgdXV1ID0gdXUgKiB1O1xuXHRcdGNvbnN0IHV0ID0gdSAqIHAsIHV0MyA9IHV0ICogMywgdXV0MyA9IHUgKiB1dDMsIHV0dDMgPSB1dDMgKiBwO1xuXHRcdGNvbnN0IHggPSB4MSAqIHV1dSArIGN4MSAqIHV1dDMgKyBjeDIgKiB1dHQzICsgeDIgKiB0dHQsIHkgPSB5MSAqIHV1dSArIGN5MSAqIHV1dDMgKyBjeTIgKiB1dHQzICsgeTIgKiB0dHQ7XG5cdFx0b3V0W29dID0geDtcblx0XHRvdXRbbyArIDFdID0geTtcblx0XHRpZiAodGFuZ2VudHMpIHtcblx0XHRcdGlmIChwIDwgMC4wMDEpXG5cdFx0XHRcdG91dFtvICsgMl0gPSBNYXRoLmF0YW4yKGN5MSAtIHkxLCBjeDEgLSB4MSk7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdG91dFtvICsgMl0gPSBNYXRoLmF0YW4yKHkgLSAoeTEgKiB1dSArIGN5MSAqIHV0ICogMiArIGN5MiAqIHR0KSwgeCAtICh4MSAqIHV1ICsgY3gxICogdXQgKiAyICsgY3gyICogdHQpKTtcblx0XHR9XG5cdH1cblxuXHRzb3J0IChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHRjb25zdCBzbG90SW5kZXggPSB0aGlzLnNsb3QuZGF0YS5pbmRleDtcblx0XHRjb25zdCBzbG90Qm9uZSA9IHRoaXMuc2xvdC5ib25lO1xuXHRcdGlmIChza2VsZXRvbi5za2luICE9IG51bGwpIHRoaXMuc29ydFBhdGhTbG90KHNrZWxldG9uLCBza2VsZXRvbi5za2luLCBzbG90SW5kZXgsIHNsb3RCb25lKTtcblx0XHRpZiAoc2tlbGV0b24uZGF0YS5kZWZhdWx0U2tpbiAhPSBudWxsICYmIHNrZWxldG9uLmRhdGEuZGVmYXVsdFNraW4gIT09IHNrZWxldG9uLnNraW4pXG5cdFx0XHR0aGlzLnNvcnRQYXRoU2xvdChza2VsZXRvbiwgc2tlbGV0b24uZGF0YS5kZWZhdWx0U2tpbiwgc2xvdEluZGV4LCBzbG90Qm9uZSk7XG5cdFx0dGhpcy5zb3J0UGF0aChza2VsZXRvbiwgdGhpcy5zbG90LnBvc2UuYXR0YWNobWVudCwgc2xvdEJvbmUpO1xuXHRcdGNvbnN0IGJvbmVzID0gdGhpcy5ib25lcztcblx0XHRjb25zdCBib25lQ291bnQgPSB0aGlzLmJvbmVzLmxlbmd0aDtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGJvbmVDb3VudDsgaSsrKSB7XG5cdFx0XHRjb25zdCBib25lID0gYm9uZXNbaV0uYm9uZTtcblx0XHRcdHNrZWxldG9uLnNvcnRCb25lKGJvbmUpO1xuXHRcdFx0c2tlbGV0b24uY29uc3RyYWluZWQoYm9uZSk7XG5cdFx0fVxuXHRcdHNrZWxldG9uLl91cGRhdGVDYWNoZS5wdXNoKHRoaXMpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYm9uZUNvdW50OyBpKyspXG5cdFx0XHRza2VsZXRvbi5zb3J0UmVzZXQoYm9uZXNbaV0uYm9uZS5jaGlsZHJlbik7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKylcblx0XHRcdGJvbmVzW2ldLmJvbmUuc29ydGVkID0gdHJ1ZTtcblx0fVxuXG5cdHByaXZhdGUgc29ydFBhdGhTbG90IChza2VsZXRvbjogU2tlbGV0b24sIHNraW46IFNraW4sIHNsb3RJbmRleDogbnVtYmVyLCBzbG90Qm9uZTogQm9uZSkge1xuXHRcdGNvbnN0IGVudHJpZXMgPSBza2luLmdldEF0dGFjaG1lbnRzKCk7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBlbnRyaWVzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3QgZW50cnkgPSBlbnRyaWVzW2ldO1xuXHRcdFx0aWYgKGVudHJ5LnNsb3RJbmRleCA9PT0gc2xvdEluZGV4KSB0aGlzLnNvcnRQYXRoKHNrZWxldG9uLCBlbnRyeS5hdHRhY2htZW50LCBzbG90Qm9uZSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzb3J0UGF0aCAoc2tlbGV0b246IFNrZWxldG9uLCBhdHRhY2htZW50OiBBdHRhY2htZW50IHwgbnVsbCwgc2xvdEJvbmU6IEJvbmUpIHtcblx0XHRpZiAoIShhdHRhY2htZW50IGluc3RhbmNlb2YgUGF0aEF0dGFjaG1lbnQpKSByZXR1cm47XG5cdFx0Y29uc3QgcGF0aEJvbmVzID0gYXR0YWNobWVudC5ib25lcztcblx0XHRpZiAocGF0aEJvbmVzID09IG51bGwpXG5cdFx0XHRza2VsZXRvbi5zb3J0Qm9uZShzbG90Qm9uZSk7XG5cdFx0ZWxzZSB7XG5cdFx0XHRjb25zdCBib25lcyA9IHNrZWxldG9uLmJvbmVzO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBwYXRoQm9uZXMubGVuZ3RoOyBpIDwgbjspIHtcblx0XHRcdFx0bGV0IG5uID0gcGF0aEJvbmVzW2krK107XG5cdFx0XHRcdG5uICs9IGk7XG5cdFx0XHRcdHdoaWxlIChpIDwgbm4pXG5cdFx0XHRcdFx0c2tlbGV0b24uc29ydEJvbmUoYm9uZXNbcGF0aEJvbmVzW2krK11dKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpc1NvdXJjZUFjdGl2ZSAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc2xvdC5ib25lLmFjdGl2ZTtcblx0fVxufVxuIl19
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
28
|
*****************************************************************************/
|
|
29
29
|
import { Constraint } from "./Constraint.js";
|
|
30
|
+
import { ScaleYMode } from "./ConstraintData.js";
|
|
30
31
|
import { Physics } from "./Physics.js";
|
|
31
32
|
import { PhysicsConstraintPose } from "./PhysicsConstraintPose.js";
|
|
32
33
|
import { Skeleton } from "./Skeleton.js";
|
|
@@ -282,9 +283,20 @@ export class PhysicsConstraint extends Constraint {
|
|
|
282
283
|
}
|
|
283
284
|
}
|
|
284
285
|
if (scaleX) {
|
|
285
|
-
|
|
286
|
+
let s = 1 + (this.scaleOffset - this.scaleLag * z) * mix * this.data.scaleX;
|
|
286
287
|
bone.a *= s;
|
|
287
288
|
bone.c *= s;
|
|
289
|
+
switch (this.data.scaleYMode) {
|
|
290
|
+
case ScaleYMode.Uniform:
|
|
291
|
+
bone.b *= s;
|
|
292
|
+
bone.d *= s;
|
|
293
|
+
break;
|
|
294
|
+
case ScaleYMode.Volume:
|
|
295
|
+
s = Math.abs(s);
|
|
296
|
+
s = s >= 0.7 ? 1 / s : 4 - 3.67347 * s;
|
|
297
|
+
bone.b *= s;
|
|
298
|
+
bone.d *= s;
|
|
299
|
+
}
|
|
288
300
|
}
|
|
289
301
|
if (physics !== Physics.pose) {
|
|
290
302
|
this.tx = l * bone.a;
|
|
@@ -303,4 +315,4 @@ export class PhysicsConstraint extends Constraint {
|
|
|
303
315
|
return this.bone.bone.active;
|
|
304
316
|
}
|
|
305
317
|
}
|
|
306
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGh5c2ljc0NvbnN0cmFpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUGh5c2ljc0NvbnN0cmFpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXZDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUd2Qzs7MEhBRTBIO0FBQzFILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxVQUEyRTtJQUNqSCxJQUFJLENBQVc7SUFFZixNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ2QsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNQLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDUCxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1AsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNQLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDUCxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1AsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNaLElBQUksR0FBRyxDQUFDLENBQUM7SUFDVCxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNaLElBQUksR0FBRyxDQUFDLENBQUM7SUFDVCxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUNqQixTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUNuQixXQUFXLEdBQUcsQ0FBQyxDQUFBO0lBQ2YsUUFBUSxHQUFHLENBQUMsQ0FBQTtJQUNaLGFBQWEs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Q0FBQztJQUVELElBQUksQ0FBRSxRQUFrQjtRQUN2QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM1QixRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELGNBQWM7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUM5QixDQUFDO0NBRUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB0eXBlIHsgQm9uZVBvc2UgfSBmcm9tIFwiLi9Cb25lUG9zZS5qc1wiO1xuaW1wb3J0IHsgQ29uc3RyYWludCB9IGZyb20gXCIuL0NvbnN0cmFpbnQuanNcIjtcbmltcG9ydCB7IFBoeXNpY3MgfSBmcm9tIFwiLi9QaHlzaWNzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFBoeXNpY3NDb25zdHJhaW50RGF0YSB9IGZyb20gXCIuL1BoeXNpY3NDb25zdHJhaW50RGF0YS5qc1wiO1xuaW1wb3J0IHsgUGh5c2ljc0NvbnN0cmFpbnRQb3NlIH0gZnJvbSBcIi4vUGh5c2ljc0NvbnN0cmFpbnRQb3NlLmpzXCI7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5pbXBvcnQgeyBNYXRoVXRpbHMgfSBmcm9tIFwiLi9VdGlscy5qc1wiO1xuXG5cbi8qKiBBcHBsaWVzIHBoeXNpY3MgdG8gYSBib25lLlxuICpcbiAqIFNlZSA8YSBocmVmPVwiaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLXBoeXNpY3MtY29uc3RyYWludHNcIj5QaHlzaWNzIGNvbnN0cmFpbnRzPC9hPiBpbiB0aGUgU3BpbmUgVXNlciBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzaWNzQ29uc3RyYWludCBleHRlbmRzIENvbnN0cmFpbnQ8UGh5c2ljc0NvbnN0cmFpbnQsIFBoeXNpY3NDb25zdHJhaW50RGF0YSwgUGh5c2ljc0NvbnN0cmFpbnRQb3NlPiB7XG5cdGJvbmU6IEJvbmVQb3NlO1xuXG5cdF9yZXNldCA9IHRydWU7XG5cdHV4ID0gMDtcblx0dXkgPSAwO1xuXHRjeCA9IDA7XG5cdGN5ID0gMDtcblx0dHggPSAwO1xuXHR0eSA9IDA7XG5cdHhPZmZzZXQgPSAwO1xuXHR4TGFnID0gMDtcblx0eFZlbG9jaXR5ID0gMDtcblx0eU9mZnNldCA9IDA7XG5cdHlMYWcgPSAwO1xuXHR5VmVsb2NpdHkgPSAwO1xuXHRyb3RhdGVPZmZzZXQgPSAwO1xuXHRyb3RhdGVMYWcgPSAwO1xuXHRyb3RhdGVWZWxvY2l0eSA9IDA7XG5cdHNjYWxlT2Zmc2V0ID0gMFxuXHRzY2FsZUxhZyA9IDBcblx0c2NhbGVWZWxvY2l0eSA9IDA7XG5cdHJlbWFpbmluZyA9IDA7XG5cdGxhc3RUaW1lID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZGF0YTogUGh5c2ljc0NvbnN0cmFpbnREYXRhLCBza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHRzdXBlcihkYXRhLCBuZXcgUGh5c2ljc0NvbnN0cmFpbnRQb3NlKCksIG5ldyBQaHlzaWNzQ29uc3RyYWludFBvc2UoKSk7XG5cdFx0aWYgKHNrZWxldG9uID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcInNrZWxldG9uIGNhbm5vdCBiZSBudWxsLlwiKTtcblxuXHRcdHRoaXMuYm9uZSA9IHNrZWxldG9uLmJvbmVzW2RhdGEuYm9uZS5pbmRleF0uY29uc3RyYWluZWRQb3NlO1xuXHR9XG5cblx0cHVibGljIGNvcHkgKHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdHZhciBjb3B5ID0gbmV3IFBoeXNpY3NDb25zdHJhaW50KHRoaXMuZGF0YSwgc2tlbGV0b24pO1xuXHRcdGNvcHkucG9zZS5zZXQodGhpcy5wb3NlKTtcblx0XHRyZXR1cm4gY29weTtcblx0fVxuXG5cdC8qKiBSZXNldHMgYWxsIHBoeXNpY3Mgc3RhdGUgdGhhdCB3YXMgdGhlIHJlc3VsdCBvZiBwcmV2aW91cyBtb3ZlbWVudC4gVXNlIHRoaXMgYWZ0ZXIgbW92aW5nIGEgYm9uZSB0byBwcmV2ZW50IHBoeXNpY3MgZnJvbVxuXHQgKiByZWFjdGluZyB0byB0aGUgbW92ZW1lbnQuICovXG5cdHJlc2V0IChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHR0aGlzLnJlbWFpbmluZyA9IDA7XG5cdFx0dGhpcy5sYXN0VGltZSA9IHNrZWxldG9uLnRpbWU7XG5cdFx0dGhpcy5fcmVzZXQgPSB0cnVlO1xuXHRcdHRoaXMueE9mZnNldCA9IDA7XG5cdFx0dGhpcy54TGFnID0gMDtcblx0XHR0aGlzLnhWZWxvY2l0eSA9IDA7XG5cdFx0dGhpcy55T2Zmc2V0ID0gMDtcblx0XHR0aGlzLnlMYWcgPSAwO1xuXHRcdHRoaXMueVZlbG9jaXR5ID0gMDtcblx0XHR0aGlzLnJvdGF0ZU9mZnNldCA9IDA7XG5cdFx0dGhpcy5yb3RhdGVMYWcgPSAwO1xuXHRcdHRoaXMucm90YXRlVmVsb2NpdHkgPSAwO1xuXHRcdHRoaXMuc2NhbGVPZmZzZXQgPSAwO1xuXHRcdHRoaXMuc2NhbGVMYWcgPSAwO1xuXHRcdHRoaXMuc2NhbGVWZWxvY2l0eSA9IDA7XG5cdH1cblxuXHQvKiogVHJhbnNsYXRlcyB0aGUgcGh5c2ljcyBjb25zdHJhaW50IHNvIHRoZSBuZXh0IHtAbGluayB1cGRhdGV9IGZvcmNlcyBhcmUgYXBwbGllZCBhcyBpZiB0aGUgYm9uZSBtb3ZlZCBhblxuXHQgKiBhZGRpdGlvbmFsIGFtb3VudCBpbiB3b3JsZCBzcGFjZS4gKi9cblx0dHJhbnNsYXRlICh4OiBudW1iZXIsIHk6IG51bWJlcikge1xuXHRcdHRoaXMudXggLT0geDtcblx0XHR0aGlzLnV5IC09IHk7XG5cdFx0dGhpcy5jeCAtPSB4O1xuXHRcdHRoaXMuY3kgLT0geTtcblx0fVxuXG5cdC8qKiBSb3RhdGVzIHRoZSBwaHlzaWNzIGNvbnN0cmFpbnQgc28gdGhlIG5leHQge0BsaW5rIHVwZGF0ZX0gZm9yY2VzIGFyZSBhcHBsaWVkIGFzIGlmIHRoZSBib25lIHJvdGF0ZWRcblx0ICogYXJvdW5kIHRoZSBzcGVjaWZpZWQgcG9pbnQgaW4gd29ybGQgc3BhY2UuICovXG5cdHJvdGF0ZSAoeDogbnVtYmVyLCB5OiBudW1iZXIsIGRlZ3JlZXM6IG51bWJlcikge1xuXHRcdGNvbnN0IHIgPSBkZWdyZWVzICogTWF0aFV0aWxzLmRlZ1JhZCwgY29zID0gTWF0aC5jb3MociksIHNpbiA9IE1hdGguc2luKHIpO1xuXHRcdGNvbnN0IGR4ID0gdGhpcy5jeCAtIHgsIGR5ID0gdGhpcy5jeSAtIHk7XG5cdFx0dGhpcy50cmFuc2xhdGUoZHggKiBjb3MgLSBkeSAqIHNpbiAtIGR4LCBkeCAqIHNpbiArIGR5ICogY29zIC0gZHkpO1xuXHR9XG5cblx0LyoqIEFwcGxpZXMgdGhlIGNvbnN0cmFpbnQgdG8gdGhlIGNvbnN0cmFpbmVkIGJvbmVzLiAqL1xuXHR1cGRhdGUgKHNrZWxldG9uOiBTa2VsZXRvbiwgcGh5c2ljczogUGh5c2ljcykge1xuXHRcdGNvbnN0IHAgPSB0aGlzLmFwcGxpZWRQb3NlO1xuXHRcdGNvbnN0IG1peCA9IHAubWl4O1xuXHRcdGlmIChtaXggPT09IDApIHJldHVybjtcblxuXHRcdGNvbnN0IHggPSB0aGlzLmRhdGEueCA+IDAsIHkgPSB0aGlzLmRhdGEueSA+IDAsIHJvdGF0ZU9yU2hlYXJYID0gdGhpcy5kYXRhLnJvdGF0ZSA+IDAgfHwgdGhpcy5kYXRhLnNoZWFyWCA+IDAsIHNjYWxlWCA9IHRoaXMuZGF0YS5zY2FsZVggPiAwO1xuXHRcdGNvbnN0IGJvbmUgPSB0aGlzLmJvbmU7XG5cdFx0bGV0IGwgPSBib25lLmJvbmUuZGF0YS5sZW5ndGgsIHQgPSB0aGlzLmRhdGEuc3RlcCwgeiA9IDA7XG5cblx0XHRzd2l0Y2ggKHBoeXNpY3MpIHtcblx0XHRcdGNhc2UgUGh5c2ljcy5ub25lOlxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U6IGZhbGwgdGhyb3VnaCBleHBlY3RlZFxuXHRcdFx0Y2FzZSBQaHlzaWNzLnJlc2V0OlxuXHRcdFx0XHR0aGlzLnJlc2V0KHNrZWxldG9uKTsgLy8gRmFsbCB0aHJvdWdoLlxuXHRcdFx0Y2FzZSBQaHlzaWNzLnVwZGF0ZToge1xuXHRcdFx0XHRjb25zdCBkZWx0YSA9IE1hdGgubWF4KHNrZWxldG9uLnRpbWUgLSB0aGlzLmxhc3RUaW1lLCAwKSwgYWEgPSB0aGlzLnJlbWFpbmluZztcblx0XHRcdFx0dGhpcy5yZW1haW5pbmcgKz0gZGVsdGE7XG5cdFx0XHRcdHRoaXMubGFzdFRpbWUgPSBza2VsZXRvbi50aW1lO1xuXG5cdFx0XHRcdGNvbnN0IGJ4ID0gYm9uZS53b3JsZFgsIGJ5ID0gYm9uZS53b3JsZFk7XG5cdFx0XHRcdGlmICh0aGlzLl9yZXNldCkge1xuXHRcdFx0XHRcdHRoaXMuX3Jlc2V0ID0gZmFsc2U7XG5cdFx0XHRcdFx0dGhpcy51eCA9IGJ4O1xuXHRcdFx0XHRcdHRoaXMudXkgPSBieTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRsZXQgYSA9IHRoaXMucmVtYWluaW5nLCBpID0gcC5pbmVydGlhLCBmID0gc2tlbGV0b24uZGF0YS5yZWZlcmVuY2VTY2FsZSwgZCA9IC0xLCBtID0gMCwgZSA9IDAsIHF4ID0gdGhpcy5kYXRhLmxpbWl0ICogZGVsdGEsXG5cdFx0XHRcdFx0XHRxeSA9IHF4ICogTWF0aC5hYnMoc2tlbGV0b24uc2NhbGVZKTtcblx0XHRcdFx0XHRxeCAqPSBNYXRoLmFicyhza2VsZXRvbi5zY2FsZVgpO1xuXHRcdFx0XHRcdGlmICh4IHx8IHkpIHtcblx0XHRcdFx0XHRcdGlmICh4KSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHUgPSAodGhpcy51eCAtIGJ4KSAqIGk7XG5cdFx0XHRcdFx0XHRcdHRoaXMueE9mZnNldCArPSB1ID4gcXggPyBxeCA6IHUgPCAtcXggPyAtcXggOiB1O1xuXHRcdFx0XHRcdFx0XHR0aGlzLnV4ID0gYng7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoeSkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB1ID0gKHRoaXMudXkgLSBieSkgKiBpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnlPZmZzZXQgKz0gdSA+IHF5ID8gcXkgOiB1IDwgLXF5ID8gLXF5IDogdTtcblx0XHRcdFx0XHRcdFx0dGhpcy51eSA9IGJ5O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKGEgPj0gdCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB4cyA9IHRoaXMueE9mZnNldCwgeXMgPSB0aGlzLnlPZmZzZXQ7XG5cdFx0XHRcdFx0XHRcdGQgPSBwLmRhbXBpbmcgKiogKDYwICogdCk7XG5cdFx0XHRcdFx0XHRcdG0gPSB0ICogcC5tYXNzSW52ZXJzZTtcblx0XHRcdFx0XHRcdFx0ZSA9IHAuc3RyZW5ndGg7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHcgPSBmICogcC53aW5kLCBnID0gZiAqIHAuZ3Jhdml0eTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgYXggPSAodyAqIHNrZWxldG9uLndpbmRYICsgZyAqIHNrZWxldG9uLmdyYXZpdHlYKSAqIHNrZWxldG9uLnNjYWxlWDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgYXkgPSAodyAqIHNrZWxldG9uLndpbmRZICsgZyAqIHNrZWxldG9uLmdyYXZpdHlZKSAqIHNrZWxldG9uLnNjYWxlWTtcblx0XHRcdFx0XHRcdFx0ZG8ge1xuXHRcdFx0XHRcdFx0XHRcdGlmICh4KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnhWZWxvY2l0eSArPSAoYXggLSB0aGlzLnhPZmZzZXQgKiBlKSAqIG07XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnhPZmZzZXQgKz0gdGhpcy54VmVsb2NpdHkgKiB0O1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy54VmVsb2NpdHkgKj0gZDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMueVZlbG9jaXR5IC09IChheSArIHRoaXMueU9mZnNldCAqIGUpICogbTtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMueU9mZnNldCArPSB0aGlzLnlWZWxvY2l0eSAqIHQ7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnlWZWxvY2l0eSAqPSBkO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRhIC09IHQ7XG5cdFx0XHRcdFx0XHRcdH0gd2hpbGUgKGEgPj0gdCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMueExhZyA9IHRoaXMueE9mZnNldCAtIHhzO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnlMYWcgPSB0aGlzLnlPZmZzZXQgLSB5cztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHogPSBNYXRoLm1heCgwLCAxIC0gYSAvIHQpO1xuXHRcdFx0XHRcdFx0aWYgKHgpIGJvbmUud29ybGRYICs9ICh0aGlzLnhPZmZzZXQgLSB0aGlzLnhMYWcgKiB6KSAqIG1peCAqIHRoaXMuZGF0YS54O1xuXHRcdFx0XHRcdFx0aWYgKHkpIGJvbmUud29ybGRZICs9ICh0aGlzLnlPZmZzZXQgLSB0aGlzLnlMYWcgKiB6KSAqIG1peCAqIHRoaXMuZGF0YS55O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAocm90YXRlT3JTaGVhclggfHwgc2NhbGVYKSB7XG5cdFx0XHRcdFx0XHRsZXQgY2EgPSBNYXRoLmF0YW4yKGJvbmUuYywgYm9uZS5hKSwgYyA9IDAsIHMgPSAwLCBtciA9IDAsIGR4ID0gdGhpcy5jeCAtIGJvbmUud29ybGRYLCBkeSA9IHRoaXMuY3kgLSBib25lLndvcmxkWTtcblx0XHRcdFx0XHRcdGlmIChkeCA+IHF4KVxuXHRcdFx0XHRcdFx0XHRkeCA9IHF4O1xuXHRcdFx0XHRcdFx0ZWxzZSBpZiAoZHggPCAtcXgpIC8vXG5cdFx0XHRcdFx0XHRcdGR4ID0gLXF4O1xuXHRcdFx0XHRcdFx0aWYgKGR5ID4gcXkpXG5cdFx0XHRcdFx0XHRcdGR5ID0gcXk7XG5cdFx0XHRcdFx0XHRlbHNlIGlmIChkeSA8IC1xeSkgLy9cblx0XHRcdFx0XHRcdFx0ZHkgPSAtcXk7XG5cdFx0XHRcdFx0XHRhID0gdGhpcy5yZW1haW5pbmc7XG5cdFx0XHRcdFx0XHRpZiAocm90YXRlT3JTaGVhclgpIHtcblx0XHRcdFx0XHRcdFx0bXIgPSAodGhpcy5kYXRhLnJvdGF0ZSArIHRoaXMuZGF0YS5zaGVhclgpICogbWl4O1xuXHRcdFx0XHRcdFx0XHR6ID0gdGhpcy5yb3RhdGVMYWcgKiBNYXRoLm1heCgwLCAxIC0gYWEgLyB0KTtcblx0XHRcdFx0XHRcdFx0bGV0IHIgPSBNYXRoLmF0YW4yKGR5ICsgdGhpcy50eSwgZHggKyB0aGlzLnR4KSAtIGNhIC0gKHRoaXMucm90YXRlT2Zmc2V0IC0geikgKiBtcjtcblx0XHRcdFx0XHRcdFx0dGhpcy5yb3RhdGVPZmZzZXQgKz0gKHIgLSBNYXRoLmNlaWwociAqIE1hdGhVdGlscy5pbnZQSTIgLSAwLjUpICogTWF0aFV0aWxzLlBJMikgKiBpO1xuXHRcdFx0XHRcdFx0XHRyID0gKHRoaXMucm90YXRlT2Zmc2V0IC0geikgKiBtciArIGNhO1xuXHRcdFx0XHRcdFx0XHRjID0gTWF0aC5jb3Mocik7XG5cdFx0XHRcdFx0XHRcdHMgPSBNYXRoLnNpbihyKTtcblx0XHRcdFx0XHRcdFx0aWYgKHNjYWxlWCkge1xuXHRcdFx0XHRcdFx0XHRcdHIgPSBsICogYm9uZS5nZXRXb3JsZFNjYWxlWCgpO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChyID4gMCkgdGhpcy5zY2FsZU9mZnNldCArPSAoZHggKiBjICsgZHkgKiBzKSAqIGkgLyByO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjID0gTWF0aC5jb3MoY2EpO1xuXHRcdFx0XHRcdFx0XHRzID0gTWF0aC5zaW4oY2EpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCByID0gbCAqIGJvbmUuZ2V0V29ybGRTY2FsZVgoKSAtIHRoaXMuc2NhbGVMYWcgKiBNYXRoLm1heCgwLCAxIC0gYWEgLyB0KTtcblx0XHRcdFx0XHRcdFx0aWYgKHIgPiAwKSB0aGlzLnNjYWxlT2Zmc2V0ICs9IChkeCAqIGMgKyBkeSAqIHMpICogaSAvIHI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoYSA+PSB0KSB7XG5cdFx0XHRcdFx0XHRcdGlmIChkID09PSAtMSkge1xuXHRcdFx0XHRcdFx0XHRcdGQgPSBwLmRhbXBpbmcgKiogKDYwICogdCk7XG5cdFx0XHRcdFx0XHRcdFx0bSA9IHQgKiBwLm1hc3NJbnZlcnNlO1xuXHRcdFx0XHRcdFx0XHRcdGUgPSBwLnN0cmVuZ3RoO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGF4ID0gcC53aW5kICogc2tlbGV0b24ud2luZFggKyBwLmdyYXZpdHkgKiBza2VsZXRvbi5ncmF2aXR5WDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgYXkgPSAocC53aW5kICogc2tlbGV0b24ud2luZFkgKyBwLmdyYXZpdHkgKiBza2VsZXRvbi5ncmF2aXR5WSkgKiBTa2VsZXRvbi55RGlyO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBycyA9IHRoaXMucm90YXRlT2Zmc2V0LCBzcyA9IHRoaXMuc2NhbGVPZmZzZXQsIGggPSBsIC8gZjtcblx0XHRcdFx0XHRcdFx0d2hpbGUgKHRydWUpIHtcblx0XHRcdFx0XHRcdFx0XHRhIC09IHQ7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNjYWxlWCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zY2FsZVZlbG9jaXR5ICs9IChheCAqIGMgLSBheSAqIHMgLSB0aGlzLnNjYWxlT2Zmc2V0ICogZSkgKiBtO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zY2FsZU9mZnNldCArPSB0aGlzLnNjYWxlVmVsb2NpdHkgKiB0O1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zY2FsZVZlbG9jaXR5ICo9IGQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGlmIChyb3RhdGVPclNoZWFyWCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5yb3RhdGVWZWxvY2l0eSAtPSAoKGF4ICogcyArIGF5ICogYykgKiBoICsgdGhpcy5yb3RhdGVPZmZzZXQgKiBlKSAqIG07XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJvdGF0ZU9mZnNldCArPSB0aGlzLnJvdGF0ZVZlbG9jaXR5ICogdDtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMucm90YXRlVmVsb2NpdHkgKj0gZDtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhIDwgdCkgYnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zdCByID0gdGhpcy5yb3RhdGVPZmZzZXQgKiBtciArIGNhO1xuXHRcdFx0XHRcdFx0XHRcdFx0YyA9IE1hdGguY29zKHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0cyA9IE1hdGguc2luKHIpO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYSA8IHQpIC8vXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aGlzLnJvdGF0ZUxhZyA9IHRoaXMucm90YXRlT2Zmc2V0IC0gcnM7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2NhbGVMYWcgPSB0aGlzLnNjYWxlT2Zmc2V0IC0gc3M7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR6ID0gTWF0aC5tYXgoMCwgMSAtIGEgLyB0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5yZW1haW5pbmcgPSBhO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuY3ggPSBib25lLndvcmxkWDtcblx0XHRcdFx0dGhpcy5jeSA9IGJvbmUud29ybGRZO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgUGh5c2ljcy5wb3NlOlxuXHRcdFx0XHR6ID0gTWF0aC5tYXgoMCwgMSAtIHRoaXMucmVtYWluaW5nIC8gdCk7XG5cdFx0XHRcdGlmICh4KSBib25lLndvcmxkWCArPSAodGhpcy54T2Zmc2V0IC0gdGhpcy54TGFnICogeikgKiBtaXggKiB0aGlzLmRhdGEueDtcblx0XHRcdFx0aWYgKHkpIGJvbmUud29ybGRZICs9ICh0aGlzLnlPZmZzZXQgLSB0aGlzLnlMYWcgKiB6KSAqIG1peCAqIHRoaXMuZGF0YS55O1xuXHRcdH1cblxuXHRcdGlmIChyb3RhdGVPclNoZWFyWCkge1xuXHRcdFx0bGV0IG8gPSAodGhpcy5yb3RhdGVPZmZzZXQgLSB0aGlzLnJvdGF0ZUxhZyAqIHopICogbWl4LCBzID0gMCwgYyA9IDAsIGEgPSAwO1xuXHRcdFx0aWYgKHRoaXMuZGF0YS5zaGVhclggPiAwKSB7XG5cdFx0XHRcdGxldCByID0gMDtcblx0XHRcdFx0aWYgKHRoaXMuZGF0YS5yb3RhdGUgPiAwKSB7XG5cdFx0XHRcdFx0ciA9IG8gKiB0aGlzLmRhdGEucm90YXRlO1xuXHRcdFx0XHRcdHMgPSBNYXRoLnNpbihyKTtcblx0XHRcdFx0XHRjID0gTWF0aC5jb3Mocik7XG5cdFx0XHRcdFx0YSA9IGJvbmUuYjtcblx0XHRcdFx0XHRib25lLmIgPSBjICogYSAtIHMgKiBib25lLmQ7XG5cdFx0XHRcdFx0Ym9uZS5kID0gcyAqIGEgKyBjICogYm9uZS5kO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHIgKz0gbyAqIHRoaXMuZGF0YS5zaGVhclg7XG5cdFx0XHRcdHMgPSBNYXRoLnNpbihyKTtcblx0XHRcdFx0YyA9IE1hdGguY29zKHIpO1xuXHRcdFx0XHRhID0gYm9uZS5hO1xuXHRcdFx0XHRib25lLmEgPSBjICogYSAtIHMgKiBib25lLmM7XG5cdFx0XHRcdGJvbmUuYyA9IHMgKiBhICsgYyAqIGJvbmUuYztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG8gKj0gdGhpcy5kYXRhLnJvdGF0ZTtcblx0XHRcdFx0cyA9IE1hdGguc2luKG8pO1xuXHRcdFx0XHRjID0gTWF0aC5jb3Mobyk7XG5cdFx0XHRcdGEgPSBib25lLmE7XG5cdFx0XHRcdGJvbmUuYSA9IGMgKiBhIC0gcyAqIGJvbmUuYztcblx0XHRcdFx0Ym9uZS5jID0gcyAqIGEgKyBjICogYm9uZS5jO1xuXHRcdFx0XHRhID0gYm9uZS5iO1xuXHRcdFx0XHRib25lLmIgPSBjICogYSAtIHMgKiBib25lLmQ7XG5cdFx0XHRcdGJvbmUuZCA9IHMgKiBhICsgYyAqIGJvbmUuZDtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHNjYWxlWCkge1xuXHRcdFx0Y29uc3QgcyA9IDEgKyAodGhpcy5zY2FsZU9mZnNldCAtIHRoaXMuc2NhbGVMYWcgKiB6KSAqIG1peCAqIHRoaXMuZGF0YS5zY2FsZVg7XG5cdFx0XHRib25lLmEgKj0gcztcblx0XHRcdGJvbmUuYyAqPSBzO1xuXHRcdH1cblx0XHRpZiAocGh5c2ljcyAhPT0gUGh5c2ljcy5wb3NlKSB7XG5cdFx0XHR0aGlzLnR4ID0gbCAqIGJvbmUuYTtcblx0XHRcdHRoaXMudHkgPSBsICogYm9uZS5jO1xuXHRcdH1cblx0XHRib25lLm1vZGlmeVdvcmxkKHNrZWxldG9uLl91cGRhdGUpO1xuXHR9XG5cblx0c29ydCAoc2tlbGV0b246IFNrZWxldG9uKSB7XG5cdFx0Y29uc3QgYm9uZSA9IHRoaXMuYm9uZS5ib25lO1xuXHRcdHNrZWxldG9uLnNvcnRCb25lKGJvbmUpO1xuXHRcdHNrZWxldG9uLl91cGRhdGVDYWNoZS5wdXNoKHRoaXMpO1xuXHRcdHNrZWxldG9uLnNvcnRSZXNldChib25lLmNoaWxkcmVuKTtcblx0XHRza2VsZXRvbi5jb25zdHJhaW5lZChib25lKTtcblx0fVxuXG5cdGlzU291cmNlQWN0aXZlICgpIHtcblx0XHRyZXR1cm4gdGhpcy5ib25lLmJvbmUuYWN0aXZlO1xuXHR9XG5cbn1cbiJdfQ==
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGh5c2ljc0NvbnN0cmFpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUGh5c2ljc0NvbnN0cmFpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV2QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHdkM7OzBIQUUwSDtBQUMxSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsVUFBMkU7SUFDakgsSUFBSSxDQUFXO0lBRWYsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNkLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDUCxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1AsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNQLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDUCxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1AsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNQLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDWixJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ1QsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDWixJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ1QsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDbkIsV0FBVyxHQUFHLENB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QUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNoQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNaLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2QsQ0FBQztRQUNGLENBQUM7UUFDRCxJQUFJLE9BQU8sS0FBSyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxDQUFFLFFBQWtCO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVCLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsY0FBYztRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzlCLENBQUM7Q0FFRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBCb25lUG9zZSB9IGZyb20gXCIuL0JvbmVQb3NlLmpzXCI7XG5pbXBvcnQgeyBDb25zdHJhaW50IH0gZnJvbSBcIi4vQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgU2NhbGVZTW9kZSB9IGZyb20gXCIuL0NvbnN0cmFpbnREYXRhLmpzXCI7XG5pbXBvcnQgeyBQaHlzaWNzIH0gZnJvbSBcIi4vUGh5c2ljcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBQaHlzaWNzQ29uc3RyYWludERhdGEgfSBmcm9tIFwiLi9QaHlzaWNzQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IFBoeXNpY3NDb25zdHJhaW50UG9zZSB9IGZyb20gXCIuL1BoeXNpY3NDb25zdHJhaW50UG9zZS5qc1wiO1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tIFwiLi9Ta2VsZXRvbi5qc1wiO1xuaW1wb3J0IHsgTWF0aFV0aWxzIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuXG4vKiogQXBwbGllcyBwaHlzaWNzIHRvIGEgYm9uZS5cbiAqXG4gKiBTZWUgPGEgaHJlZj1cImh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1waHlzaWNzLWNvbnN0cmFpbnRzXCI+UGh5c2ljcyBjb25zdHJhaW50czwvYT4gaW4gdGhlIFNwaW5lIFVzZXIgR3VpZGUuICovXG5leHBvcnQgY2xhc3MgUGh5c2ljc0NvbnN0cmFpbnQgZXh0ZW5kcyBDb25zdHJhaW50PFBoeXNpY3NDb25zdHJhaW50LCBQaHlzaWNzQ29uc3RyYWludERhdGEsIFBoeXNpY3NDb25zdHJhaW50UG9zZT4ge1xuXHRib25lOiBCb25lUG9zZTtcblxuXHRfcmVzZXQgPSB0cnVlO1xuXHR1eCA9IDA7XG5cdHV5ID0gMDtcblx0Y3ggPSAwO1xuXHRjeSA9IDA7XG5cdHR4ID0gMDtcblx0dHkgPSAwO1xuXHR4T2Zmc2V0ID0gMDtcblx0eExhZyA9IDA7XG5cdHhWZWxvY2l0eSA9IDA7XG5cdHlPZmZzZXQgPSAwO1xuXHR5TGFnID0gMDtcblx0eVZlbG9jaXR5ID0gMDtcblx0cm90YXRlT2Zmc2V0ID0gMDtcblx0cm90YXRlTGFnID0gMDtcblx0cm90YXRlVmVsb2NpdHkgPSAwO1xuXHRzY2FsZU9mZnNldCA9IDBcblx0c2NhbGVMYWcgPSAwXG5cdHNjYWxlVmVsb2NpdHkgPSAwO1xuXHRyZW1haW5pbmcgPSAwO1xuXHRsYXN0VGltZSA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGRhdGE6IFBoeXNpY3NDb25zdHJhaW50RGF0YSwgc2tlbGV0b246IFNrZWxldG9uKSB7XG5cdFx0c3VwZXIoZGF0YSwgbmV3IFBoeXNpY3NDb25zdHJhaW50UG9zZSgpLCBuZXcgUGh5c2ljc0NvbnN0cmFpbnRQb3NlKCkpO1xuXHRcdGlmIChza2VsZXRvbiA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJza2VsZXRvbiBjYW5ub3QgYmUgbnVsbC5cIik7XG5cblx0XHR0aGlzLmJvbmUgPSBza2VsZXRvbi5ib25lc1tkYXRhLmJvbmUuaW5kZXhdLmNvbnN0cmFpbmVkUG9zZTtcblx0fVxuXG5cdHB1YmxpYyBjb3B5IChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHR2YXIgY29weSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludCh0aGlzLmRhdGEsIHNrZWxldG9uKTtcblx0XHRjb3B5LnBvc2Uuc2V0KHRoaXMucG9zZSk7XG5cdFx0cmV0dXJuIGNvcHk7XG5cdH1cblxuXHQvKiogUmVzZXRzIGFsbCBwaHlzaWNzIHN0YXRlIHRoYXQgd2FzIHRoZSByZXN1bHQgb2YgcHJldmlvdXMgbW92ZW1lbnQuIFVzZSB0aGlzIGFmdGVyIG1vdmluZyBhIGJvbmUgdG8gcHJldmVudCBwaHlzaWNzIGZyb21cblx0ICogcmVhY3RpbmcgdG8gdGhlIG1vdmVtZW50LiAqL1xuXHRyZXNldCAoc2tlbGV0b246IFNrZWxldG9uKSB7XG5cdFx0dGhpcy5yZW1haW5pbmcgPSAwO1xuXHRcdHRoaXMubGFzdFRpbWUgPSBza2VsZXRvbi50aW1lO1xuXHRcdHRoaXMuX3Jlc2V0ID0gdHJ1ZTtcblx0XHR0aGlzLnhPZmZzZXQgPSAwO1xuXHRcdHRoaXMueExhZyA9IDA7XG5cdFx0dGhpcy54VmVsb2NpdHkgPSAwO1xuXHRcdHRoaXMueU9mZnNldCA9IDA7XG5cdFx0dGhpcy55TGFnID0gMDtcblx0XHR0aGlzLnlWZWxvY2l0eSA9IDA7XG5cdFx0dGhpcy5yb3RhdGVPZmZzZXQgPSAwO1xuXHRcdHRoaXMucm90YXRlTGFnID0gMDtcblx0XHR0aGlzLnJvdGF0ZVZlbG9jaXR5ID0gMDtcblx0XHR0aGlzLnNjYWxlT2Zmc2V0ID0gMDtcblx0XHR0aGlzLnNjYWxlTGFnID0gMDtcblx0XHR0aGlzLnNjYWxlVmVsb2NpdHkgPSAwO1xuXHR9XG5cblx0LyoqIFRyYW5zbGF0ZXMgdGhlIHBoeXNpY3MgY29uc3RyYWludCBzbyB0aGUgbmV4dCB7QGxpbmsgdXBkYXRlfSBmb3JjZXMgYXJlIGFwcGxpZWQgYXMgaWYgdGhlIGJvbmUgbW92ZWQgYW5cblx0ICogYWRkaXRpb25hbCBhbW91bnQgaW4gd29ybGQgc3BhY2UuICovXG5cdHRyYW5zbGF0ZSAoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcblx0XHR0aGlzLnV4IC09IHg7XG5cdFx0dGhpcy51eSAtPSB5O1xuXHRcdHRoaXMuY3ggLT0geDtcblx0XHR0aGlzLmN5IC09IHk7XG5cdH1cblxuXHQvKiogUm90YXRlcyB0aGUgcGh5c2ljcyBjb25zdHJhaW50IHNvIHRoZSBuZXh0IHtAbGluayB1cGRhdGV9IGZvcmNlcyBhcmUgYXBwbGllZCBhcyBpZiB0aGUgYm9uZSByb3RhdGVkXG5cdCAqIGFyb3VuZCB0aGUgc3BlY2lmaWVkIHBvaW50IGluIHdvcmxkIHNwYWNlLiAqL1xuXHRyb3RhdGUgKHg6IG51bWJlciwgeTogbnVtYmVyLCBkZWdyZWVzOiBudW1iZXIpIHtcblx0XHRjb25zdCByID0gZGVncmVlcyAqIE1hdGhVdGlscy5kZWdSYWQsIGNvcyA9IE1hdGguY29zKHIpLCBzaW4gPSBNYXRoLnNpbihyKTtcblx0XHRjb25zdCBkeCA9IHRoaXMuY3ggLSB4LCBkeSA9IHRoaXMuY3kgLSB5O1xuXHRcdHRoaXMudHJhbnNsYXRlKGR4ICogY29zIC0gZHkgKiBzaW4gLSBkeCwgZHggKiBzaW4gKyBkeSAqIGNvcyAtIGR5KTtcblx0fVxuXG5cdC8qKiBBcHBsaWVzIHRoZSBjb25zdHJhaW50IHRvIHRoZSBjb25zdHJhaW5lZCBib25lcy4gKi9cblx0dXBkYXRlIChza2VsZXRvbjogU2tlbGV0b24sIHBoeXNpY3M6IFBoeXNpY3MpIHtcblx0XHRjb25zdCBwID0gdGhpcy5hcHBsaWVkUG9zZTtcblx0XHRjb25zdCBtaXggPSBwLm1peDtcblx0XHRpZiAobWl4ID09PSAwKSByZXR1cm47XG5cblx0XHRjb25zdCB4ID0gdGhpcy5kYXRhLnggPiAwLCB5ID0gdGhpcy5kYXRhLnkgPiAwLCByb3RhdGVPclNoZWFyWCA9IHRoaXMuZGF0YS5yb3RhdGUgPiAwIHx8IHRoaXMuZGF0YS5zaGVhclggPiAwLCBzY2FsZVggPSB0aGlzLmRhdGEuc2NhbGVYID4gMDtcblx0XHRjb25zdCBib25lID0gdGhpcy5ib25lO1xuXHRcdGxldCBsID0gYm9uZS5ib25lLmRhdGEubGVuZ3RoLCB0ID0gdGhpcy5kYXRhLnN0ZXAsIHogPSAwO1xuXG5cdFx0c3dpdGNoIChwaHlzaWNzKSB7XG5cdFx0XHRjYXNlIFBoeXNpY3Mubm9uZTpcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOiBmYWxsIHRocm91Z2ggZXhwZWN0ZWRcblx0XHRcdGNhc2UgUGh5c2ljcy5yZXNldDpcblx0XHRcdFx0dGhpcy5yZXNldChza2VsZXRvbik7IC8vIEZhbGwgdGhyb3VnaC5cblx0XHRcdGNhc2UgUGh5c2ljcy51cGRhdGU6IHtcblx0XHRcdFx0Y29uc3QgZGVsdGEgPSBNYXRoLm1heChza2VsZXRvbi50aW1lIC0gdGhpcy5sYXN0VGltZSwgMCksIGFhID0gdGhpcy5yZW1haW5pbmc7XG5cdFx0XHRcdHRoaXMucmVtYWluaW5nICs9IGRlbHRhO1xuXHRcdFx0XHR0aGlzLmxhc3RUaW1lID0gc2tlbGV0b24udGltZTtcblxuXHRcdFx0XHRjb25zdCBieCA9IGJvbmUud29ybGRYLCBieSA9IGJvbmUud29ybGRZO1xuXHRcdFx0XHRpZiAodGhpcy5fcmVzZXQpIHtcblx0XHRcdFx0XHR0aGlzLl9yZXNldCA9IGZhbHNlO1xuXHRcdFx0XHRcdHRoaXMudXggPSBieDtcblx0XHRcdFx0XHR0aGlzLnV5ID0gYnk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bGV0IGEgPSB0aGlzLnJlbWFpbmluZywgaSA9IHAuaW5lcnRpYSwgZiA9IHNrZWxldG9uLmRhdGEucmVmZXJlbmNlU2NhbGUsIGQgPSAtMSwgbSA9IDAsIGUgPSAwLCBxeCA9IHRoaXMuZGF0YS5saW1pdCAqIGRlbHRhLFxuXHRcdFx0XHRcdFx0cXkgPSBxeCAqIE1hdGguYWJzKHNrZWxldG9uLnNjYWxlWSk7XG5cdFx0XHRcdFx0cXggKj0gTWF0aC5hYnMoc2tlbGV0b24uc2NhbGVYKTtcblx0XHRcdFx0XHRpZiAoeCB8fCB5KSB7XG5cdFx0XHRcdFx0XHRpZiAoeCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB1ID0gKHRoaXMudXggLSBieCkgKiBpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnhPZmZzZXQgKz0gdSA+IHF4ID8gcXggOiB1IDwgLXF4ID8gLXF4IDogdTtcblx0XHRcdFx0XHRcdFx0dGhpcy51eCA9IGJ4O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKHkpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdSA9ICh0aGlzLnV5IC0gYnkpICogaTtcblx0XHRcdFx0XHRcdFx0dGhpcy55T2Zmc2V0ICs9IHUgPiBxeSA/IHF5IDogdSA8IC1xeSA/IC1xeSA6IHU7XG5cdFx0XHRcdFx0XHRcdHRoaXMudXkgPSBieTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChhID49IHQpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgeHMgPSB0aGlzLnhPZmZzZXQsIHlzID0gdGhpcy55T2Zmc2V0O1xuXHRcdFx0XHRcdFx0XHRkID0gcC5kYW1waW5nICoqICg2MCAqIHQpO1xuXHRcdFx0XHRcdFx0XHRtID0gdCAqIHAubWFzc0ludmVyc2U7XG5cdFx0XHRcdFx0XHRcdGUgPSBwLnN0cmVuZ3RoO1xuXHRcdFx0XHRcdFx0XHRjb25zdCB3ID0gZiAqIHAud2luZCwgZyA9IGYgKiBwLmdyYXZpdHk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGF4ID0gKHcgKiBza2VsZXRvbi53aW5kWCArIGcgKiBza2VsZXRvbi5ncmF2aXR5WCkgKiBza2VsZXRvbi5zY2FsZVg7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGF5ID0gKHcgKiBza2VsZXRvbi53aW5kWSArIGcgKiBza2VsZXRvbi5ncmF2aXR5WSkgKiBza2VsZXRvbi5zY2FsZVk7XG5cdFx0XHRcdFx0XHRcdGRvIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoeCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy54VmVsb2NpdHkgKz0gKGF4IC0gdGhpcy54T2Zmc2V0ICogZSkgKiBtO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy54T2Zmc2V0ICs9IHRoaXMueFZlbG9jaXR5ICogdDtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMueFZlbG9jaXR5ICo9IGQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGlmICh5KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnlWZWxvY2l0eSAtPSAoYXkgKyB0aGlzLnlPZmZzZXQgKiBlKSAqIG07XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnlPZmZzZXQgKz0gdGhpcy55VmVsb2NpdHkgKiB0O1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy55VmVsb2NpdHkgKj0gZDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0YSAtPSB0O1xuXHRcdFx0XHRcdFx0XHR9IHdoaWxlIChhID49IHQpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnhMYWcgPSB0aGlzLnhPZmZzZXQgLSB4cztcblx0XHRcdFx0XHRcdFx0dGhpcy55TGFnID0gdGhpcy55T2Zmc2V0IC0geXM7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR6ID0gTWF0aC5tYXgoMCwgMSAtIGEgLyB0KTtcblx0XHRcdFx0XHRcdGlmICh4KSBib25lLndvcmxkWCArPSAodGhpcy54T2Zmc2V0IC0gdGhpcy54TGFnICogeikgKiBtaXggKiB0aGlzLmRhdGEueDtcblx0XHRcdFx0XHRcdGlmICh5KSBib25lLndvcmxkWSArPSAodGhpcy55T2Zmc2V0IC0gdGhpcy55TGFnICogeikgKiBtaXggKiB0aGlzLmRhdGEueTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKHJvdGF0ZU9yU2hlYXJYIHx8IHNjYWxlWCkge1xuXHRcdFx0XHRcdFx0bGV0IGNhID0gTWF0aC5hdGFuMihib25lLmMsIGJvbmUuYSksIGMgPSAwLCBzID0gMCwgbXIgPSAwLCBkeCA9IHRoaXMuY3ggLSBib25lLndvcmxkWCwgZHkgPSB0aGlzLmN5IC0gYm9uZS53b3JsZFk7XG5cdFx0XHRcdFx0XHRpZiAoZHggPiBxeClcblx0XHRcdFx0XHRcdFx0ZHggPSBxeDtcblx0XHRcdFx0XHRcdGVsc2UgaWYgKGR4IDwgLXF4KSAvL1xuXHRcdFx0XHRcdFx0XHRkeCA9IC1xeDtcblx0XHRcdFx0XHRcdGlmIChkeSA+IHF5KVxuXHRcdFx0XHRcdFx0XHRkeSA9IHF5O1xuXHRcdFx0XHRcdFx0ZWxzZSBpZiAoZHkgPCAtcXkpIC8vXG5cdFx0XHRcdFx0XHRcdGR5ID0gLXF5O1xuXHRcdFx0XHRcdFx0YSA9IHRoaXMucmVtYWluaW5nO1xuXHRcdFx0XHRcdFx0aWYgKHJvdGF0ZU9yU2hlYXJYKSB7XG5cdFx0XHRcdFx0XHRcdG1yID0gKHRoaXMuZGF0YS5yb3RhdGUgKyB0aGlzLmRhdGEuc2hlYXJYKSAqIG1peDtcblx0XHRcdFx0XHRcdFx0eiA9IHRoaXMucm90YXRlTGFnICogTWF0aC5tYXgoMCwgMSAtIGFhIC8gdCk7XG5cdFx0XHRcdFx0XHRcdGxldCByID0gTWF0aC5hdGFuMihkeSArIHRoaXMudHksIGR4ICsgdGhpcy50eCkgLSBjYSAtICh0aGlzLnJvdGF0ZU9mZnNldCAtIHopICogbXI7XG5cdFx0XHRcdFx0XHRcdHRoaXMucm90YXRlT2Zmc2V0ICs9IChyIC0gTWF0aC5jZWlsKHIgKiBNYXRoVXRpbHMuaW52UEkyIC0gMC41KSAqIE1hdGhVdGlscy5QSTIpICogaTtcblx0XHRcdFx0XHRcdFx0ciA9ICh0aGlzLnJvdGF0ZU9mZnNldCAtIHopICogbXIgKyBjYTtcblx0XHRcdFx0XHRcdFx0YyA9IE1hdGguY29zKHIpO1xuXHRcdFx0XHRcdFx0XHRzID0gTWF0aC5zaW4ocik7XG5cdFx0XHRcdFx0XHRcdGlmIChzY2FsZVgpIHtcblx0XHRcdFx0XHRcdFx0XHRyID0gbCAqIGJvbmUuZ2V0V29ybGRTY2FsZVgoKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAociA+IDApIHRoaXMuc2NhbGVPZmZzZXQgKz0gKGR4ICogYyArIGR5ICogcykgKiBpIC8gcjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0YyA9IE1hdGguY29zKGNhKTtcblx0XHRcdFx0XHRcdFx0cyA9IE1hdGguc2luKGNhKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgciA9IGwgKiBib25lLmdldFdvcmxkU2NhbGVYKCkgLSB0aGlzLnNjYWxlTGFnICogTWF0aC5tYXgoMCwgMSAtIGFhIC8gdCk7XG5cdFx0XHRcdFx0XHRcdGlmIChyID4gMCkgdGhpcy5zY2FsZU9mZnNldCArPSAoZHggKiBjICsgZHkgKiBzKSAqIGkgLyByO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKGEgPj0gdCkge1xuXHRcdFx0XHRcdFx0XHRpZiAoZCA9PT0gLTEpIHtcblx0XHRcdFx0XHRcdFx0XHRkID0gcC5kYW1waW5nICoqICg2MCAqIHQpO1xuXHRcdFx0XHRcdFx0XHRcdG0gPSB0ICogcC5tYXNzSW52ZXJzZTtcblx0XHRcdFx0XHRcdFx0XHRlID0gcC5zdHJlbmd0aDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjb25zdCBheCA9IHAud2luZCAqIHNrZWxldG9uLndpbmRYICsgcC5ncmF2aXR5ICogc2tlbGV0b24uZ3Jhdml0eVg7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGF5ID0gKHAud2luZCAqIHNrZWxldG9uLndpbmRZICsgcC5ncmF2aXR5ICogc2tlbGV0b24uZ3Jhdml0eVkpICogU2tlbGV0b24ueURpcjtcblx0XHRcdFx0XHRcdFx0Y29uc3QgcnMgPSB0aGlzLnJvdGF0ZU9mZnNldCwgc3MgPSB0aGlzLnNjYWxlT2Zmc2V0LCBoID0gbCAvIGY7XG5cdFx0XHRcdFx0XHRcdHdoaWxlICh0cnVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0YSAtPSB0O1xuXHRcdFx0XHRcdFx0XHRcdGlmIChzY2FsZVgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc2NhbGVWZWxvY2l0eSArPSAoYXggKiBjIC0gYXkgKiBzIC0gdGhpcy5zY2FsZU9mZnNldCAqIGUpICogbTtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc2NhbGVPZmZzZXQgKz0gdGhpcy5zY2FsZVZlbG9jaXR5ICogdDtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc2NhbGVWZWxvY2l0eSAqPSBkO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZiAocm90YXRlT3JTaGVhclgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMucm90YXRlVmVsb2NpdHkgLT0gKChheCAqIHMgKyBheSAqIGMpICogaCArIHRoaXMucm90YXRlT2Zmc2V0ICogZSkgKiBtO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5yb3RhdGVPZmZzZXQgKz0gdGhpcy5yb3RhdGVWZWxvY2l0eSAqIHQ7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJvdGF0ZVZlbG9jaXR5ICo9IGQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYSA8IHQpIGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgciA9IHRoaXMucm90YXRlT2Zmc2V0ICogbXIgKyBjYTtcblx0XHRcdFx0XHRcdFx0XHRcdGMgPSBNYXRoLmNvcyhyKTtcblx0XHRcdFx0XHRcdFx0XHRcdHMgPSBNYXRoLnNpbihyKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGEgPCB0KSAvL1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGhpcy5yb3RhdGVMYWcgPSB0aGlzLnJvdGF0ZU9mZnNldCAtIHJzO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNjYWxlTGFnID0gdGhpcy5zY2FsZU9mZnNldCAtIHNzO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0eiA9IE1hdGgubWF4KDAsIDEgLSBhIC8gdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMucmVtYWluaW5nID0gYTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmN4ID0gYm9uZS53b3JsZFg7XG5cdFx0XHRcdHRoaXMuY3kgPSBib25lLndvcmxkWTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFBoeXNpY3MucG9zZTpcblx0XHRcdFx0eiA9IE1hdGgubWF4KDAsIDEgLSB0aGlzLnJlbWFpbmluZyAvIHQpO1xuXHRcdFx0XHRpZiAoeCkgYm9uZS53b3JsZFggKz0gKHRoaXMueE9mZnNldCAtIHRoaXMueExhZyAqIHopICogbWl4ICogdGhpcy5kYXRhLng7XG5cdFx0XHRcdGlmICh5KSBib25lLndvcmxkWSArPSAodGhpcy55T2Zmc2V0IC0gdGhpcy55TGFnICogeikgKiBtaXggKiB0aGlzLmRhdGEueTtcblx0XHR9XG5cblx0XHRpZiAocm90YXRlT3JTaGVhclgpIHtcblx0XHRcdGxldCBvID0gKHRoaXMucm90YXRlT2Zmc2V0IC0gdGhpcy5yb3RhdGVMYWcgKiB6KSAqIG1peCwgcyA9IDAsIGMgPSAwLCBhID0gMDtcblx0XHRcdGlmICh0aGlzLmRhdGEuc2hlYXJYID4gMCkge1xuXHRcdFx0XHRsZXQgciA9IDA7XG5cdFx0XHRcdGlmICh0aGlzLmRhdGEucm90YXRlID4gMCkge1xuXHRcdFx0XHRcdHIgPSBvICogdGhpcy5kYXRhLnJvdGF0ZTtcblx0XHRcdFx0XHRzID0gTWF0aC5zaW4ocik7XG5cdFx0XHRcdFx0YyA9IE1hdGguY29zKHIpO1xuXHRcdFx0XHRcdGEgPSBib25lLmI7XG5cdFx0XHRcdFx0Ym9uZS5iID0gYyAqIGEgLSBzICogYm9uZS5kO1xuXHRcdFx0XHRcdGJvbmUuZCA9IHMgKiBhICsgYyAqIGJvbmUuZDtcblx0XHRcdFx0fVxuXHRcdFx0XHRyICs9IG8gKiB0aGlzLmRhdGEuc2hlYXJYO1xuXHRcdFx0XHRzID0gTWF0aC5zaW4ocik7XG5cdFx0XHRcdGMgPSBNYXRoLmNvcyhyKTtcblx0XHRcdFx0YSA9IGJvbmUuYTtcblx0XHRcdFx0Ym9uZS5hID0gYyAqIGEgLSBzICogYm9uZS5jO1xuXHRcdFx0XHRib25lLmMgPSBzICogYSArIGMgKiBib25lLmM7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvICo9IHRoaXMuZGF0YS5yb3RhdGU7XG5cdFx0XHRcdHMgPSBNYXRoLnNpbihvKTtcblx0XHRcdFx0YyA9IE1hdGguY29zKG8pO1xuXHRcdFx0XHRhID0gYm9uZS5hO1xuXHRcdFx0XHRib25lLmEgPSBjICogYSAtIHMgKiBib25lLmM7XG5cdFx0XHRcdGJvbmUuYyA9IHMgKiBhICsgYyAqIGJvbmUuYztcblx0XHRcdFx0YSA9IGJvbmUuYjtcblx0XHRcdFx0Ym9uZS5iID0gYyAqIGEgLSBzICogYm9uZS5kO1xuXHRcdFx0XHRib25lLmQgPSBzICogYSArIGMgKiBib25lLmQ7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChzY2FsZVgpIHtcblx0XHRcdGxldCBzID0gMSArICh0aGlzLnNjYWxlT2Zmc2V0IC0gdGhpcy5zY2FsZUxhZyAqIHopICogbWl4ICogdGhpcy5kYXRhLnNjYWxlWDtcblx0XHRcdGJvbmUuYSAqPSBzO1xuXHRcdFx0Ym9uZS5jICo9IHM7XG5cdFx0XHRzd2l0Y2ggKHRoaXMuZGF0YS5zY2FsZVlNb2RlKSB7XG5cdFx0XHRcdGNhc2UgU2NhbGVZTW9kZS5Vbmlmb3JtOlxuXHRcdFx0XHRcdGJvbmUuYiAqPSBzO1xuXHRcdFx0XHRcdGJvbmUuZCAqPSBzO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFNjYWxlWU1vZGUuVm9sdW1lOlxuXHRcdFx0XHRcdHMgPSBNYXRoLmFicyhzKTtcblx0XHRcdFx0XHRzID0gcyA+PSAwLjcgPyAxIC8gcyA6IDQgLSAzLjY3MzQ3ICogcztcblx0XHRcdFx0XHRib25lLmIgKj0gcztcblx0XHRcdFx0XHRib25lLmQgKj0gcztcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHBoeXNpY3MgIT09IFBoeXNpY3MucG9zZSkge1xuXHRcdFx0dGhpcy50eCA9IGwgKiBib25lLmE7XG5cdFx0XHR0aGlzLnR5ID0gbCAqIGJvbmUuYztcblx0XHR9XG5cdFx0Ym9uZS5tb2RpZnlXb3JsZChza2VsZXRvbi5fdXBkYXRlKTtcblx0fVxuXG5cdHNvcnQgKHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdGNvbnN0IGJvbmUgPSB0aGlzLmJvbmUuYm9uZTtcblx0XHRza2VsZXRvbi5zb3J0Qm9uZShib25lKTtcblx0XHRza2VsZXRvbi5fdXBkYXRlQ2FjaGUucHVzaCh0aGlzKTtcblx0XHRza2VsZXRvbi5zb3J0UmVzZXQoYm9uZS5jaGlsZHJlbik7XG5cdFx0c2tlbGV0b24uY29uc3RyYWluZWQoYm9uZSk7XG5cdH1cblxuXHRpc1NvdXJjZUFjdGl2ZSAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuYm9uZS5ib25lLmFjdGl2ZTtcblx0fVxuXG59XG4iXX0=
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
28
|
*****************************************************************************/
|
|
29
29
|
import type { BoneData } from "./BoneData.js";
|
|
30
|
-
import { ConstraintData } from "./ConstraintData.js";
|
|
30
|
+
import { ConstraintData, ScaleYMode } from "./ConstraintData.js";
|
|
31
31
|
import { PhysicsConstraint } from "./PhysicsConstraint.js";
|
|
32
32
|
import { PhysicsConstraintPose } from "./PhysicsConstraintPose.js";
|
|
33
33
|
import type { Skeleton } from "./Skeleton.js";
|
|
@@ -67,6 +67,11 @@ export declare class PhysicsConstraintData extends ConstraintData<PhysicsConstra
|
|
|
67
67
|
gravityGlobal: boolean;
|
|
68
68
|
/** True when this constraint's mix is controlled by global slider timelines. */
|
|
69
69
|
mixGlobal: boolean;
|
|
70
|
+
/** Determines how the {@link BonePose.scaleY} changes when {@link PhysicsConstraintData.scaleX} sets
|
|
71
|
+
* {@link BonePose.scaleX}. */
|
|
72
|
+
private _scaleYMode;
|
|
73
|
+
get scaleYMode(): ScaleYMode;
|
|
74
|
+
set scaleYMode(scaleYMode: ScaleYMode);
|
|
70
75
|
constructor(name: string);
|
|
71
76
|
create(skeleton: Skeleton): PhysicsConstraint;
|
|
72
77
|
}
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
27
27
|
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
28
|
*****************************************************************************/
|
|
29
|
-
import { ConstraintData } from "./ConstraintData.js";
|
|
29
|
+
import { ConstraintData, ScaleYMode } from "./ConstraintData.js";
|
|
30
30
|
import { PhysicsConstraint } from "./PhysicsConstraint.js";
|
|
31
31
|
import { PhysicsConstraintPose } from "./PhysicsConstraintPose.js";
|
|
32
32
|
/** Stores the setup pose for a {@link PhysicsConstraint}.
|
|
@@ -70,6 +70,17 @@ export class PhysicsConstraintData extends ConstraintData {
|
|
|
70
70
|
gravityGlobal = false;
|
|
71
71
|
/** True when this constraint's mix is controlled by global slider timelines. */
|
|
72
72
|
mixGlobal = false;
|
|
73
|
+
/** Determines how the {@link BonePose.scaleY} changes when {@link PhysicsConstraintData.scaleX} sets
|
|
74
|
+
* {@link BonePose.scaleX}. */
|
|
75
|
+
_scaleYMode = ScaleYMode.None;
|
|
76
|
+
get scaleYMode() {
|
|
77
|
+
return this._scaleYMode;
|
|
78
|
+
}
|
|
79
|
+
set scaleYMode(scaleYMode) {
|
|
80
|
+
if (scaleYMode == null)
|
|
81
|
+
throw new Error("scaleYMode cannot be null.");
|
|
82
|
+
this._scaleYMode = scaleYMode;
|
|
83
|
+
}
|
|
73
84
|
constructor(name) {
|
|
74
85
|
super(name, new PhysicsConstraintPose());
|
|
75
86
|
}
|
|
@@ -77,4 +88,4 @@ export class PhysicsConstraintData extends ConstraintData {
|
|
|
77
88
|
return new PhysicsConstraint(this, skeleton);
|
|
78
89
|
}
|
|
79
90
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGh5c2ljc0NvbnN0cmFpbnREYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1BoeXNpY3NDb25zdHJhaW50RGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFJL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUluRTs7MEhBRTBIO0FBQzFILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxjQUF3RDtJQUNsRyx1REFBdUQ7SUFDdkQsSUFBVyxJQUFJLENBQUUsUUFBa0IsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDL0QsSUFBVyxJQUFJO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBOztZQUNoRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUNPLEtBQUssR0FBb0IsSUFBSSxDQUFDO0lBRXRDLCtDQUErQztJQUMvQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRU4sK0NBQStDO0lBQy9DLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFTiwwQ0FBMEM7SUFDMUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVYLHdDQUF3QztJQUN4QyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRVgsd0NBQXdDO0lBQ3hDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFWCxpRkFBaUY7SUFDakYsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUVWLHFGQUFxRjtJQUNyRixJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBRVQsb0ZBQW9GO0lBQ3BGLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFdEIscUZBQXFGO0lBQ3JGLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFFdkIsb0ZBQW9GO0lBQ3BGLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFdEIsaUZBQWlGO0lBQ2pGLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFbkIsaUZBQWlGO0lBQ2pGLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFbkIsb0ZBQW9GO0lBQ3BGLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFdEIsZ0ZBQWdGO0lBQ2hGLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFbEI7a0NBQzhCO0lBQ3RCLFdBQVcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3RDLElBQUksVUFBVTtRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUUsVUFBc0I7UUFDckMsSUFBSSxVQUFVLElBQUksSUFBSTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsWUFBYSxJQUFZO1FBQ3hCLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxxQkFBcUIsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLE1BQU0sQ0FBRSxRQUFrQjtRQUNoQyxPQUFPLElBQUksaUJBQWlCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBCb25lRGF0YSB9IGZyb20gXCIuL0JvbmVEYXRhLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEJvbmVQb3NlIH0gZnJvbSBcIi4vQm9uZVBvc2UuanNcIjtcbmltcG9ydCB7IENvbnN0cmFpbnREYXRhLCBTY2FsZVlNb2RlIH0gZnJvbSBcIi4vQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IFBoeXNpY3NDb25zdHJhaW50IH0gZnJvbSBcIi4vUGh5c2ljc0NvbnN0cmFpbnQuanNcIjtcbmltcG9ydCB7IFBoeXNpY3NDb25zdHJhaW50UG9zZSB9IGZyb20gXCIuL1BoeXNpY3NDb25zdHJhaW50UG9zZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5cblxuLyoqIFN0b3JlcyB0aGUgc2V0dXAgcG9zZSBmb3IgYSB7QGxpbmsgUGh5c2ljc0NvbnN0cmFpbnR9LlxuICpcbiAqIFNlZSA8YSBocmVmPVwiaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLXBoeXNpY3MtY29uc3RyYWludHNcIj5QaHlzaWNzIGNvbnN0cmFpbnRzPC9hPiBpbiB0aGUgU3BpbmUgVXNlciBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzaWNzQ29uc3RyYWludERhdGEgZXh0ZW5kcyBDb25zdHJhaW50RGF0YTxQaHlzaWNzQ29uc3RyYWludCwgUGh5c2ljc0NvbnN0cmFpbnRQb3NlPiB7XG5cdC8qKiBUaGUgYm9uZSBjb25zdHJhaW5lZCBieSB0aGlzIHBoeXNpY3MgY29uc3RyYWludC4gKi9cblx0cHVibGljIHNldCBib25lIChib25lRGF0YTogQm9uZURhdGEpIHsgdGhpcy5fYm9uZSA9IGJvbmVEYXRhOyB9XG5cdHB1YmxpYyBnZXQgYm9uZSAoKSB7XG5cdFx0aWYgKCF0aGlzLl9ib25lKSB0aHJvdyBuZXcgRXJyb3IoXCJCb25lRGF0YSBub3Qgc2V0LlwiKVxuXHRcdGVsc2UgcmV0dXJuIHRoaXMuX2JvbmU7XG5cdH1cblx0cHJpdmF0ZSBfYm9uZTogQm9uZURhdGEgfCBudWxsID0gbnVsbDtcblxuXHQvKiogUGh5c2ljcyBpbmZsdWVuY2Ugb24geCB0cmFuc2xhdGlvbiwgMC0xLiAqL1xuXHR4ID0gMDtcblxuXHQvKiogUGh5c2ljcyBpbmZsdWVuY2Ugb24geSB0cmFuc2xhdGlvbiwgMC0xLiAqL1xuXHR5ID0gMDtcblxuXHQvKiogUGh5c2ljcyBpbmZsdWVuY2Ugb24gcm90YXRpb24sIDAtMS4gKi9cblx0cm90YXRlID0gMDtcblxuXHQvKiogUGh5c2ljcyBpbmZsdWVuY2Ugb24gc2NhbGVYLCAwLTEuICovXG5cdHNjYWxlWCA9IDA7XG5cblx0LyoqIFBoeXNpY3MgaW5mbHVlbmNlIG9uIHNoZWFyWCwgMC0xLiAqL1xuXHRzaGVhclggPSAwO1xuXG5cdC8qKiBNb3ZlbWVudCBncmVhdGVyIHRoYW4gdGhlIGxpbWl0IHdpbGwgbm90IGhhdmUgYSBncmVhdGVyIGFmZmVjdCBvbiBwaHlzaWNzLiAqL1xuXHRsaW1pdCA9IDA7XG5cblx0LyoqIFRoZSB0aW1lIGluIG1pbGxpc2Vjb25kcyByZXF1aXJlZCB0byBhZHZhbmNlZCB0aGUgcGh5c2ljcyBzaW11bGF0aW9uIG9uZSBzdGVwLiAqL1xuXHRzdGVwID0gMDtcblxuXHQvKiogVHJ1ZSB3aGVuIHRoaXMgY29uc3RyYWludCdzIGluZXJ0aWEgaXMgY29udHJvbGxlZCBieSBnbG9iYWwgc2xpZGVyIHRpbWVsaW5lcy4gKi9cblx0aW5lcnRpYUdsb2JhbCA9IGZhbHNlO1xuXG5cdC8qKiBUcnVlIHdoZW4gdGhpcyBjb25zdHJhaW50J3Mgc3RyZW5ndGggaXMgY29udHJvbGxlZCBieSBnbG9iYWwgc2xpZGVyIHRpbWVsaW5lcy4gKi9cblx0c3RyZW5ndGhHbG9iYWwgPSBmYWxzZTtcblxuXHQvKiogVHJ1ZSB3aGVuIHRoaXMgY29uc3RyYWludCdzIGRhbXBpbmcgaXMgY29udHJvbGxlZCBieSBnbG9iYWwgc2xpZGVyIHRpbWVsaW5lcy4gKi9cblx0ZGFtcGluZ0dsb2JhbCA9IGZhbHNlO1xuXG5cdC8qKiBUcnVlIHdoZW4gdGhpcyBjb25zdHJhaW50J3MgbWFzcyBpcyBjb250cm9sbGVkIGJ5IGdsb2JhbCBzbGlkZXIgdGltZWxpbmVzLiAqL1xuXHRtYXNzR2xvYmFsID0gZmFsc2U7XG5cblx0LyoqIFRydWUgd2hlbiB0aGlzIGNvbnN0cmFpbnQncyB3aW5kIGlzIGNvbnRyb2xsZWQgYnkgZ2xvYmFsIHNsaWRlciB0aW1lbGluZXMuICovXG5cdHdpbmRHbG9iYWwgPSBmYWxzZTtcblxuXHQvKiogVHJ1ZSB3aGVuIHRoaXMgY29uc3RyYWludCdzIGdyYXZpdHkgaXMgY29udHJvbGxlZCBieSBnbG9iYWwgc2xpZGVyIHRpbWVsaW5lcy4gKi9cblx0Z3Jhdml0eUdsb2JhbCA9IGZhbHNlO1xuXG5cdC8qKiBUcnVlIHdoZW4gdGhpcyBjb25zdHJhaW50J3MgbWl4IGlzIGNvbnRyb2xsZWQgYnkgZ2xvYmFsIHNsaWRlciB0aW1lbGluZXMuICovXG5cdG1peEdsb2JhbCA9IGZhbHNlO1xuXG5cdC8qKiBEZXRlcm1pbmVzIGhvdyB0aGUge0BsaW5rIEJvbmVQb3NlLnNjYWxlWX0gY2hhbmdlcyB3aGVuIHtAbGluayBQaHlzaWNzQ29uc3RyYWludERhdGEuc2NhbGVYfSBzZXRzXG5cdCAqIHtAbGluayBCb25lUG9zZS5zY2FsZVh9LiAqL1xuXHRwcml2YXRlIF9zY2FsZVlNb2RlID0gU2NhbGVZTW9kZS5Ob25lO1xuXHRnZXQgc2NhbGVZTW9kZSAoKTogU2NhbGVZTW9kZSB7XG5cdFx0cmV0dXJuIHRoaXMuX3NjYWxlWU1vZGU7XG5cdH1cblx0c2V0IHNjYWxlWU1vZGUgKHNjYWxlWU1vZGU6IFNjYWxlWU1vZGUpIHtcblx0XHRpZiAoc2NhbGVZTW9kZSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJzY2FsZVlNb2RlIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHR0aGlzLl9zY2FsZVlNb2RlID0gc2NhbGVZTW9kZTtcblx0fVxuXG5cdGNvbnN0cnVjdG9yIChuYW1lOiBzdHJpbmcpIHtcblx0XHRzdXBlcihuYW1lLCBuZXcgUGh5c2ljc0NvbnN0cmFpbnRQb3NlKCkpO1xuXHR9XG5cblx0cHVibGljIGNyZWF0ZSAoc2tlbGV0b246IFNrZWxldG9uKSB7XG5cdFx0cmV0dXJuIG5ldyBQaHlzaWNzQ29uc3RyYWludCh0aGlzLCBza2VsZXRvbik7XG5cdH1cbn1cbiJdfQ==
|