@esotericsoftware/spine-core 4.2.117 → 4.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Animation.d.ts +426 -274
- package/dist/Animation.js +1174 -1210
- package/dist/AnimationState.d.ts +246 -201
- package/dist/AnimationState.js +508 -471
- package/dist/AnimationStateData.d.ts +12 -10
- package/dist/AnimationStateData.js +19 -20
- package/dist/AssetManagerBase.d.ts +27 -21
- package/dist/AssetManagerBase.js +67 -43
- package/dist/AtlasAttachmentLoader.d.ts +18 -12
- package/dist/AtlasAttachmentLoader.js +28 -39
- package/dist/Bone.d.ts +15 -109
- package/dist/Bone.js +22 -362
- package/dist/BoneData.d.ts +13 -28
- package/dist/BoneData.js +20 -29
- package/dist/BonePose.d.ts +132 -0
- package/dist/BonePose.js +456 -0
- package/dist/Constraint.d.ts +41 -0
- package/dist/Constraint.js +38 -0
- package/dist/ConstraintData.d.ts +16 -5
- package/dist/ConstraintData.js +15 -9
- package/dist/DrawOrder.d.ts +48 -0
- package/dist/DrawOrder.js +64 -0
- package/dist/Event.d.ts +11 -6
- package/dist/Event.js +10 -5
- package/dist/EventData.d.ts +10 -6
- package/dist/EventData.js +18 -7
- package/dist/IkConstraint.d.ts +23 -28
- package/dist/IkConstraint.js +122 -124
- package/dist/IkConstraintData.d.ts +14 -19
- package/dist/IkConstraintData.js +22 -23
- package/dist/IkConstraintPose.d.ts +49 -0
- package/dist/IkConstraintPose.js +55 -0
- package/dist/PathConstraint.d.ts +18 -23
- package/dist/PathConstraint.js +162 -139
- package/dist/PathConstraintData.d.ts +11 -14
- package/dist/PathConstraintData.js +14 -16
- package/dist/PathConstraintPose.d.ts +43 -0
- package/dist/PathConstraintPose.js +49 -0
- package/dist/Physics.d.ts +39 -0
- package/dist/Physics.js +41 -0
- package/dist/PhysicsConstraint.d.ts +26 -30
- package/dist/PhysicsConstraint.js +114 -94
- package/dist/PhysicsConstraintData.d.ts +28 -13
- package/dist/PhysicsConstraintData.js +35 -13
- package/dist/PhysicsConstraintPose.d.ts +47 -0
- package/dist/PhysicsConstraintPose.js +55 -0
- package/dist/Pose.d.ts +33 -0
- package/dist/Pose.js +30 -0
- package/dist/Posed.d.ts +58 -0
- package/dist/Posed.js +78 -0
- package/dist/PosedActive.d.ts +41 -0
- package/dist/{attachments/HasTextureRegion.js → PosedActive.js} +17 -2
- package/dist/PosedData.d.ts +40 -0
- package/dist/PosedData.js +45 -0
- package/dist/Skeleton.d.ts +110 -99
- package/dist/Skeleton.js +271 -449
- package/dist/SkeletonBinary.d.ts +1 -1
- package/dist/SkeletonBinary.js +655 -466
- package/dist/SkeletonBounds.d.ts +4 -4
- package/dist/SkeletonBounds.js +45 -46
- package/dist/SkeletonClipping.d.ts +26 -22
- package/dist/SkeletonClipping.js +654 -340
- package/dist/SkeletonData.d.ts +18 -35
- package/dist/SkeletonData.js +57 -97
- package/dist/SkeletonJson.d.ts +8 -6
- package/dist/SkeletonJson.js +895 -640
- package/dist/SkeletonRendererCore.d.ts +58 -0
- package/dist/SkeletonRendererCore.js +310 -0
- package/dist/Skin.d.ts +20 -16
- package/dist/Skin.js +58 -53
- package/dist/Slider.d.ts +46 -0
- package/dist/Slider.js +115 -0
- package/dist/SliderData.d.ts +58 -0
- package/dist/SliderData.js +59 -0
- package/dist/SliderPose.d.ts +37 -0
- package/dist/SliderPose.js +40 -0
- package/dist/Slot.d.ts +16 -38
- package/dist/Slot.js +37 -60
- package/dist/SlotData.d.ts +5 -12
- package/dist/SlotData.js +7 -15
- package/dist/SlotPose.d.ts +59 -0
- package/dist/SlotPose.js +81 -0
- package/dist/Texture.d.ts +1 -0
- package/dist/Texture.js +2 -1
- package/dist/TextureAtlas.d.ts +3 -3
- package/dist/TextureAtlas.js +49 -49
- package/dist/TransformConstraint.d.ts +16 -28
- package/dist/TransformConstraint.js +72 -209
- package/dist/TransformConstraintData.d.ts +108 -20
- package/dist/TransformConstraintData.js +274 -24
- package/dist/TransformConstraintPose.d.ts +45 -0
- package/dist/TransformConstraintPose.js +52 -0
- package/dist/Triangulator.d.ts +1 -1
- package/dist/Triangulator.js +91 -107
- package/dist/{Updatable.d.ts → Update.d.ts} +5 -12
- package/dist/Update.js +30 -0
- package/dist/Utils.d.ts +14 -3
- package/dist/Utils.js +80 -37
- package/dist/attachments/Attachment.d.ts +27 -19
- package/dist/attachments/Attachment.js +59 -35
- package/dist/attachments/AttachmentLoader.d.ts +14 -14
- package/dist/attachments/AttachmentLoader.js +1 -1
- package/dist/attachments/BoundingBoxAttachment.d.ts +1 -1
- package/dist/attachments/BoundingBoxAttachment.js +2 -2
- package/dist/attachments/ClippingAttachment.d.ts +10 -3
- package/dist/attachments/ClippingAttachment.js +12 -3
- package/dist/attachments/{HasTextureRegion.d.ts → HasSequence.d.ts} +11 -14
- package/dist/attachments/HasSequence.js +30 -0
- package/dist/attachments/MeshAttachment.d.ts +28 -35
- package/dist/attachments/MeshAttachment.js +85 -97
- package/dist/attachments/PathAttachment.d.ts +3 -3
- package/dist/attachments/PathAttachment.js +6 -6
- package/dist/attachments/PointAttachment.d.ts +11 -6
- package/dist/attachments/PointAttachment.js +8 -3
- package/dist/attachments/RegionAttachment.d.ts +25 -27
- package/dist/attachments/RegionAttachment.js +101 -113
- package/dist/attachments/Sequence.d.ts +31 -6
- package/dist/attachments/Sequence.js +79 -13
- package/dist/esm/spine-core.min.mjs +2 -2
- package/dist/esm/spine-core.mjs +7747 -6116
- package/dist/esm/spine-core.mjs.map +4 -4
- package/dist/iife/spine-core.js +7747 -6116
- package/dist/iife/spine-core.js.map +4 -4
- package/dist/iife/spine-core.min.js +2 -2
- package/dist/index.d.ts +32 -11
- package/dist/index.js +33 -12
- package/dist/polyfills.js +4 -5
- package/package.json +1 -1
- package/dist/Updatable.js +0 -30
|
@@ -26,29 +26,17 @@
|
|
|
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 {
|
|
29
|
+
import { Constraint } from "./Constraint.js";
|
|
30
|
+
import { ScaleYMode } from "./ConstraintData.js";
|
|
31
|
+
import { Physics } from "./Physics.js";
|
|
32
|
+
import { PhysicsConstraintPose } from "./PhysicsConstraintPose.js";
|
|
33
|
+
import { Skeleton } from "./Skeleton.js";
|
|
30
34
|
import { MathUtils } from "./Utils.js";
|
|
31
|
-
/**
|
|
32
|
-
*
|
|
35
|
+
/** Applies physics to a bone.
|
|
36
|
+
*
|
|
33
37
|
* See <a href="http://esotericsoftware.com/spine-physics-constraints">Physics constraints</a> in the Spine User Guide. */
|
|
34
|
-
export class PhysicsConstraint {
|
|
35
|
-
|
|
36
|
-
_bone = null;
|
|
37
|
-
/** The bone constrained by this physics constraint. */
|
|
38
|
-
set bone(bone) { this._bone = bone; }
|
|
39
|
-
get bone() {
|
|
40
|
-
if (!this._bone)
|
|
41
|
-
throw new Error("Bone not set.");
|
|
42
|
-
else
|
|
43
|
-
return this._bone;
|
|
44
|
-
}
|
|
45
|
-
inertia = 0;
|
|
46
|
-
strength = 0;
|
|
47
|
-
damping = 0;
|
|
48
|
-
massInverse = 0;
|
|
49
|
-
wind = 0;
|
|
50
|
-
gravity = 0;
|
|
51
|
-
mix = 0;
|
|
38
|
+
export class PhysicsConstraint extends Constraint {
|
|
39
|
+
bone;
|
|
52
40
|
_reset = true;
|
|
53
41
|
ux = 0;
|
|
54
42
|
uy = 0;
|
|
@@ -57,72 +45,81 @@ export class PhysicsConstraint {
|
|
|
57
45
|
tx = 0;
|
|
58
46
|
ty = 0;
|
|
59
47
|
xOffset = 0;
|
|
48
|
+
xLag = 0;
|
|
60
49
|
xVelocity = 0;
|
|
61
50
|
yOffset = 0;
|
|
51
|
+
yLag = 0;
|
|
62
52
|
yVelocity = 0;
|
|
63
53
|
rotateOffset = 0;
|
|
54
|
+
rotateLag = 0;
|
|
64
55
|
rotateVelocity = 0;
|
|
65
56
|
scaleOffset = 0;
|
|
57
|
+
scaleLag = 0;
|
|
66
58
|
scaleVelocity = 0;
|
|
67
|
-
active = false;
|
|
68
|
-
skeleton;
|
|
69
59
|
remaining = 0;
|
|
70
60
|
lastTime = 0;
|
|
71
61
|
constructor(data, skeleton) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
this.
|
|
76
|
-
this.strength = data.strength;
|
|
77
|
-
this.damping = data.damping;
|
|
78
|
-
this.massInverse = data.massInverse;
|
|
79
|
-
this.wind = data.wind;
|
|
80
|
-
this.gravity = data.gravity;
|
|
81
|
-
this.mix = data.mix;
|
|
62
|
+
super(data, new PhysicsConstraintPose(), new PhysicsConstraintPose());
|
|
63
|
+
if (skeleton == null)
|
|
64
|
+
throw new Error("skeleton cannot be null.");
|
|
65
|
+
this.bone = skeleton.bones[data.bone.index].constrainedPose;
|
|
82
66
|
}
|
|
83
|
-
|
|
67
|
+
copy(skeleton) {
|
|
68
|
+
var copy = new PhysicsConstraint(this.data, skeleton);
|
|
69
|
+
copy.pose.set(this.pose);
|
|
70
|
+
return copy;
|
|
71
|
+
}
|
|
72
|
+
/** Resets all physics state that was the result of previous movement. Use this after moving a bone to prevent physics from
|
|
73
|
+
* reacting to the movement. */
|
|
74
|
+
reset(skeleton) {
|
|
84
75
|
this.remaining = 0;
|
|
85
|
-
this.lastTime =
|
|
76
|
+
this.lastTime = skeleton.time;
|
|
86
77
|
this._reset = true;
|
|
87
78
|
this.xOffset = 0;
|
|
79
|
+
this.xLag = 0;
|
|
88
80
|
this.xVelocity = 0;
|
|
89
81
|
this.yOffset = 0;
|
|
82
|
+
this.yLag = 0;
|
|
90
83
|
this.yVelocity = 0;
|
|
91
84
|
this.rotateOffset = 0;
|
|
85
|
+
this.rotateLag = 0;
|
|
92
86
|
this.rotateVelocity = 0;
|
|
93
87
|
this.scaleOffset = 0;
|
|
88
|
+
this.scaleLag = 0;
|
|
94
89
|
this.scaleVelocity = 0;
|
|
95
90
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
this.
|
|
100
|
-
this.
|
|
101
|
-
this.
|
|
102
|
-
this.
|
|
103
|
-
this.gravity = data.gravity;
|
|
104
|
-
this.mix = data.mix;
|
|
91
|
+
/** Translates the physics constraint so the next {@link update} forces are applied as if the bone moved an
|
|
92
|
+
* additional amount in world space. */
|
|
93
|
+
translate(x, y) {
|
|
94
|
+
this.ux -= x;
|
|
95
|
+
this.uy -= y;
|
|
96
|
+
this.cx -= x;
|
|
97
|
+
this.cy -= y;
|
|
105
98
|
}
|
|
106
|
-
|
|
107
|
-
|
|
99
|
+
/** Rotates the physics constraint so the next {@link update} forces are applied as if the bone rotated
|
|
100
|
+
* around the specified point in world space. */
|
|
101
|
+
rotate(x, y, degrees) {
|
|
102
|
+
const r = degrees * MathUtils.degRad, cos = Math.cos(r), sin = Math.sin(r);
|
|
103
|
+
const dx = this.cx - x, dy = this.cy - y;
|
|
104
|
+
this.translate(dx * cos - dy * sin - dx, dx * sin + dy * cos - dy);
|
|
108
105
|
}
|
|
109
106
|
/** Applies the constraint to the constrained bones. */
|
|
110
|
-
update(physics) {
|
|
111
|
-
const
|
|
112
|
-
|
|
107
|
+
update(skeleton, physics) {
|
|
108
|
+
const p = this.appliedPose;
|
|
109
|
+
const mix = p.mix;
|
|
110
|
+
if (mix === 0)
|
|
113
111
|
return;
|
|
114
112
|
const x = this.data.x > 0, y = this.data.y > 0, rotateOrShearX = this.data.rotate > 0 || this.data.shearX > 0, scaleX = this.data.scaleX > 0;
|
|
115
113
|
const bone = this.bone;
|
|
116
|
-
|
|
114
|
+
let l = bone.bone.data.length, t = this.data.step, z = 0;
|
|
117
115
|
switch (physics) {
|
|
118
116
|
case Physics.none:
|
|
119
117
|
return;
|
|
118
|
+
// biome-ignore lint/suspicious/noFallthroughSwitchClause: fall through expected
|
|
120
119
|
case Physics.reset:
|
|
121
|
-
this.reset();
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
const skeleton = this.skeleton;
|
|
125
|
-
const delta = Math.max(this.skeleton.time - this.lastTime, 0);
|
|
120
|
+
this.reset(skeleton); // Fall through.
|
|
121
|
+
case Physics.update: {
|
|
122
|
+
const delta = Math.max(skeleton.time - this.lastTime, 0), aa = this.remaining;
|
|
126
123
|
this.remaining += delta;
|
|
127
124
|
this.lastTime = skeleton.time;
|
|
128
125
|
const bx = bone.worldX, by = bone.worldY;
|
|
@@ -132,8 +129,7 @@ export class PhysicsConstraint {
|
|
|
132
129
|
this.uy = by;
|
|
133
130
|
}
|
|
134
131
|
else {
|
|
135
|
-
let a = this.remaining, i =
|
|
136
|
-
let qx = this.data.limit * delta, qy = qx * Math.abs(skeleton.scaleY);
|
|
132
|
+
let a = this.remaining, i = p.inertia, f = skeleton.data.referenceScale, d = -1, m = 0, e = 0, qx = this.data.limit * delta, qy = qx * Math.abs(skeleton.scaleY);
|
|
137
133
|
qx *= Math.abs(skeleton.scaleX);
|
|
138
134
|
if (x || y) {
|
|
139
135
|
if (x) {
|
|
@@ -147,30 +143,37 @@ export class PhysicsConstraint {
|
|
|
147
143
|
this.uy = by;
|
|
148
144
|
}
|
|
149
145
|
if (a >= t) {
|
|
150
|
-
|
|
151
|
-
|
|
146
|
+
const xs = this.xOffset, ys = this.yOffset;
|
|
147
|
+
d = p.damping ** (60 * t);
|
|
148
|
+
m = t * p.massInverse;
|
|
149
|
+
e = p.strength;
|
|
150
|
+
const w = f * p.wind, g = f * p.gravity;
|
|
151
|
+
const ax = (w * skeleton.windX + g * skeleton.gravityX) * skeleton.scaleX;
|
|
152
|
+
const ay = (w * skeleton.windY + g * skeleton.gravityY) * skeleton.scaleY;
|
|
152
153
|
do {
|
|
153
154
|
if (x) {
|
|
154
|
-
this.xVelocity += (
|
|
155
|
+
this.xVelocity += (ax - this.xOffset * e) * m;
|
|
155
156
|
this.xOffset += this.xVelocity * t;
|
|
156
157
|
this.xVelocity *= d;
|
|
157
158
|
}
|
|
158
159
|
if (y) {
|
|
159
|
-
this.yVelocity -= (
|
|
160
|
+
this.yVelocity -= (ay + this.yOffset * e) * m;
|
|
160
161
|
this.yOffset += this.yVelocity * t;
|
|
161
162
|
this.yVelocity *= d;
|
|
162
163
|
}
|
|
163
164
|
a -= t;
|
|
164
165
|
} while (a >= t);
|
|
166
|
+
this.xLag = this.xOffset - xs;
|
|
167
|
+
this.yLag = this.yOffset - ys;
|
|
165
168
|
}
|
|
169
|
+
z = Math.max(0, 1 - a / t);
|
|
166
170
|
if (x)
|
|
167
|
-
bone.worldX += this.xOffset * mix * this.data.x;
|
|
171
|
+
bone.worldX += (this.xOffset - this.xLag * z) * mix * this.data.x;
|
|
168
172
|
if (y)
|
|
169
|
-
bone.worldY += this.yOffset * mix * this.data.y;
|
|
173
|
+
bone.worldY += (this.yOffset - this.yLag * z) * mix * this.data.y;
|
|
170
174
|
}
|
|
171
175
|
if (rotateOrShearX || scaleX) {
|
|
172
|
-
let ca = Math.atan2(bone.c, bone.a), c = 0, s = 0, mr = 0;
|
|
173
|
-
let dx = this.cx - bone.worldX, dy = this.cy - bone.worldY;
|
|
176
|
+
let ca = Math.atan2(bone.c, bone.a), c = 0, s = 0, mr = 0, dx = this.cx - bone.worldX, dy = this.cy - bone.worldY;
|
|
174
177
|
if (dx > qx)
|
|
175
178
|
dx = qx;
|
|
176
179
|
else if (dx < -qx) //
|
|
@@ -179,11 +182,13 @@ export class PhysicsConstraint {
|
|
|
179
182
|
dy = qy;
|
|
180
183
|
else if (dy < -qy) //
|
|
181
184
|
dy = -qy;
|
|
185
|
+
a = this.remaining;
|
|
182
186
|
if (rotateOrShearX) {
|
|
183
187
|
mr = (this.data.rotate + this.data.shearX) * mix;
|
|
184
|
-
|
|
188
|
+
z = this.rotateLag * Math.max(0, 1 - aa / t);
|
|
189
|
+
let r = Math.atan2(dy + this.ty, dx + this.tx) - ca - (this.rotateOffset - z) * mr;
|
|
185
190
|
this.rotateOffset += (r - Math.ceil(r * MathUtils.invPI2 - 0.5) * MathUtils.PI2) * i;
|
|
186
|
-
r = this.rotateOffset * mr + ca;
|
|
191
|
+
r = (this.rotateOffset - z) * mr + ca;
|
|
187
192
|
c = Math.cos(r);
|
|
188
193
|
s = Math.sin(r);
|
|
189
194
|
if (scaleX) {
|
|
@@ -195,24 +200,28 @@ export class PhysicsConstraint {
|
|
|
195
200
|
else {
|
|
196
201
|
c = Math.cos(ca);
|
|
197
202
|
s = Math.sin(ca);
|
|
198
|
-
const r = l * bone.getWorldScaleX();
|
|
203
|
+
const r = l * bone.getWorldScaleX() - this.scaleLag * Math.max(0, 1 - aa / t);
|
|
199
204
|
if (r > 0)
|
|
200
205
|
this.scaleOffset += (dx * c + dy * s) * i / r;
|
|
201
206
|
}
|
|
202
|
-
a = this.remaining;
|
|
203
207
|
if (a >= t) {
|
|
204
|
-
if (d
|
|
205
|
-
d =
|
|
206
|
-
|
|
208
|
+
if (d === -1) {
|
|
209
|
+
d = p.damping ** (60 * t);
|
|
210
|
+
m = t * p.massInverse;
|
|
211
|
+
e = p.strength;
|
|
212
|
+
}
|
|
213
|
+
const ax = p.wind * skeleton.windX + p.gravity * skeleton.gravityX;
|
|
214
|
+
const ay = (p.wind * skeleton.windY + p.gravity * skeleton.gravityY) * Skeleton.yDir;
|
|
215
|
+
const rs = this.rotateOffset, ss = this.scaleOffset, h = l / f;
|
|
207
216
|
while (true) {
|
|
208
217
|
a -= t;
|
|
209
218
|
if (scaleX) {
|
|
210
|
-
this.scaleVelocity += (
|
|
219
|
+
this.scaleVelocity += (ax * c - ay * s - this.scaleOffset * e) * m;
|
|
211
220
|
this.scaleOffset += this.scaleVelocity * t;
|
|
212
221
|
this.scaleVelocity *= d;
|
|
213
222
|
}
|
|
214
223
|
if (rotateOrShearX) {
|
|
215
|
-
this.rotateVelocity -= ((
|
|
224
|
+
this.rotateVelocity -= ((ax * s + ay * c) * h + this.rotateOffset * e) * m;
|
|
216
225
|
this.rotateOffset += this.rotateVelocity * t;
|
|
217
226
|
this.rotateVelocity *= d;
|
|
218
227
|
if (a < t)
|
|
@@ -224,21 +233,26 @@ export class PhysicsConstraint {
|
|
|
224
233
|
else if (a < t) //
|
|
225
234
|
break;
|
|
226
235
|
}
|
|
236
|
+
this.rotateLag = this.rotateOffset - rs;
|
|
237
|
+
this.scaleLag = this.scaleOffset - ss;
|
|
227
238
|
}
|
|
239
|
+
z = Math.max(0, 1 - a / t);
|
|
228
240
|
}
|
|
229
241
|
this.remaining = a;
|
|
230
242
|
}
|
|
231
243
|
this.cx = bone.worldX;
|
|
232
244
|
this.cy = bone.worldY;
|
|
233
245
|
break;
|
|
246
|
+
}
|
|
234
247
|
case Physics.pose:
|
|
248
|
+
z = Math.max(0, 1 - this.remaining / t);
|
|
235
249
|
if (x)
|
|
236
|
-
bone.worldX += this.xOffset * mix * this.data.x;
|
|
250
|
+
bone.worldX += (this.xOffset - this.xLag * z) * mix * this.data.x;
|
|
237
251
|
if (y)
|
|
238
|
-
bone.worldY += this.yOffset * mix * this.data.y;
|
|
252
|
+
bone.worldY += (this.yOffset - this.yLag * z) * mix * this.data.y;
|
|
239
253
|
}
|
|
240
254
|
if (rotateOrShearX) {
|
|
241
|
-
let o = this.rotateOffset * mix, s = 0, c = 0, a = 0;
|
|
255
|
+
let o = (this.rotateOffset - this.rotateLag * z) * mix, s = 0, c = 0, a = 0;
|
|
242
256
|
if (this.data.shearX > 0) {
|
|
243
257
|
let r = 0;
|
|
244
258
|
if (this.data.rotate > 0) {
|
|
@@ -269,30 +283,36 @@ export class PhysicsConstraint {
|
|
|
269
283
|
}
|
|
270
284
|
}
|
|
271
285
|
if (scaleX) {
|
|
272
|
-
|
|
286
|
+
let s = 1 + (this.scaleOffset - this.scaleLag * z) * mix * this.data.scaleX;
|
|
273
287
|
bone.a *= s;
|
|
274
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
|
+
}
|
|
275
300
|
}
|
|
276
|
-
if (physics
|
|
301
|
+
if (physics !== Physics.pose) {
|
|
277
302
|
this.tx = l * bone.a;
|
|
278
303
|
this.ty = l * bone.c;
|
|
279
304
|
}
|
|
280
|
-
bone.
|
|
305
|
+
bone.modifyWorld(skeleton._update);
|
|
281
306
|
}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
this
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
this.cy -= y;
|
|
307
|
+
sort(skeleton) {
|
|
308
|
+
const bone = this.bone.bone;
|
|
309
|
+
skeleton.sortBone(bone);
|
|
310
|
+
skeleton._updateCache.push(this);
|
|
311
|
+
skeleton.sortReset(bone.children);
|
|
312
|
+
skeleton.constrained(bone);
|
|
289
313
|
}
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
rotate(x, y, degrees) {
|
|
293
|
-
const r = degrees * MathUtils.degRad, cos = Math.cos(r), sin = Math.sin(r);
|
|
294
|
-
const dx = this.cx - x, dy = this.cy - y;
|
|
295
|
-
this.translate(dx * cos - dy * sin - dx, dx * sin + dy * cos - dy);
|
|
314
|
+
isSourceActive() {
|
|
315
|
+
return this.bone.bone.active;
|
|
296
316
|
}
|
|
297
317
|
}
|
|
298
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGh5c2ljc0NvbnN0cmFpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUGh5c2ljc0NvbnN0cmFpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBSS9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHdkM7OzBIQUUwSDtBQUMxSCxNQUFNLE9BQU8saUJBQWlCO0lBQ3BCLElBQUksQ0FBd0I7SUFDN0IsS0FBSyxHQUFnQixJQUFJLENBQUM7SUFDbEMsdURBQXVEO0lBQ3ZELElBQVcsSUFBSSxDQUFFLElBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsSUFBVyxJQUFJO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQTs7WUFDNUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ1osUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNiLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDWixXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLElBQUksR0FBRyxDQUFDLENBQUM7SUFDVCxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ1osR0FBRyxHQUFHLENBQUMsQ0FBQztJQUVSLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDZCxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1AsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNQLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDUCxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1AsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNQLEVBQUUsR0FBRyxDQUFDLENBQUM7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KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBCb25lIH0gZnJvbSBcIi4vQm9uZS5qc1wiO1xuaW1wb3J0IHsgUGh5c2ljc0NvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vUGh5c2ljc0NvbnN0cmFpbnREYXRhLmpzXCI7XG5pbXBvcnQgeyBQaHlzaWNzLCBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5pbXBvcnQgeyBVcGRhdGFibGUgfSBmcm9tIFwiLi9VcGRhdGFibGUuanNcIjtcbmltcG9ydCB7IE1hdGhVdGlscyB9IGZyb20gXCIuL1V0aWxzLmpzXCI7XG5cblxuLyoqIFN0b3JlcyB0aGUgY3VycmVudCBwb3NlIGZvciBhIHBoeXNpY3MgY29uc3RyYWludC4gQSBwaHlzaWNzIGNvbnN0cmFpbnQgYXBwbGllcyBwaHlzaWNzIHRvIGJvbmVzLlxuICogPHA+XG4gKiBTZWUgPGEgaHJlZj1cImh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1waHlzaWNzLWNvbnN0cmFpbnRzXCI+UGh5c2ljcyBjb25zdHJhaW50czwvYT4gaW4gdGhlIFNwaW5lIFVzZXIgR3VpZGUuICovXG5leHBvcnQgY2xhc3MgUGh5c2ljc0NvbnN0cmFpbnQgaW1wbGVtZW50cyBVcGRhdGFibGUge1xuXHRyZWFkb25seSBkYXRhOiBQaHlzaWNzQ29uc3RyYWludERhdGE7XG5cdHByaXZhdGUgX2JvbmU6IEJvbmUgfCBudWxsID0gbnVsbDtcblx0LyoqIFRoZSBib25lIGNvbnN0cmFpbmVkIGJ5IHRoaXMgcGh5c2ljcyBjb25zdHJhaW50LiAqL1xuXHRwdWJsaWMgc2V0IGJvbmUgKGJvbmU6IEJvbmUpIHsgdGhpcy5fYm9uZSA9IGJvbmU7IH1cblx0cHVibGljIGdldCBib25lICgpIHtcblx0XHRpZiAoIXRoaXMuX2JvbmUpIHRocm93IG5ldyBFcnJvcihcIkJvbmUgbm90IHNldC5cIilcblx0XHRlbHNlIHJldHVybiB0aGlzLl9ib25lO1xuXHR9XG5cdGluZXJ0aWEgPSAwO1xuXHRzdHJlbmd0aCA9IDA7XG5cdGRhbXBpbmcgPSAwO1xuXHRtYXNzSW52ZXJzZSA9IDA7XG5cdHdpbmQgPSAwO1xuXHRncmF2aXR5ID0gMDtcblx0bWl4ID0gMDtcblxuXHRfcmVzZXQgPSB0cnVlO1xuXHR1eCA9IDA7XG5cdHV5ID0gMDtcblx0Y3ggPSAwO1xuXHRjeSA9IDA7XG5cdHR4ID0gMDtcblx0dHkgPSAwO1xuXHR4T2Zmc2V0ID0gMDtcblx0eFZlbG9jaXR5ID0gMDtcblx0eU9mZnNldCA9IDA7XG5cdHlWZWxvY2l0eSA9IDA7XG5cdHJvdGF0ZU9mZnNldCA9IDA7XG5cdHJvdGF0ZVZlbG9jaXR5ID0gMDtcblx0c2NhbGVPZmZzZXQgPSAwXG5cdHNjYWxlVmVsb2NpdHkgPSAwO1xuXG5cdGFjdGl2ZSA9IGZhbHNlO1xuXG5cdHJlYWRvbmx5IHNrZWxldG9uOiBTa2VsZXRvbjtcblx0cmVtYWluaW5nID0gMDtcblx0bGFzdFRpbWUgPSAwO1xuXG5cdGNvbnN0cnVjdG9yIChkYXRhOiBQaHlzaWNzQ29uc3RyYWludERhdGEsIHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdHRoaXMuZGF0YSA9IGRhdGE7XG5cdFx0dGhpcy5za2VsZXRvbiA9IHNrZWxldG9uO1xuXG5cdFx0dGhpcy5ib25lID0gc2tlbGV0b24uYm9uZXNbZGF0YS5ib25lLmluZGV4XTtcblxuXHRcdHRoaXMuaW5lcnRpYSA9IGRhdGEuaW5lcnRpYTtcblx0XHR0aGlzLnN0cmVuZ3RoID0gZGF0YS5zdHJlbmd0aDtcblx0XHR0aGlzLmRhbXBpbmcgPSBkYXRhLmRhbXBpbmc7XG5cdFx0dGhpcy5tYXNzSW52ZXJzZSA9IGRhdGEubWFzc0ludmVyc2U7XG5cdFx0dGhpcy53aW5kID0gZGF0YS53aW5kO1xuXHRcdHRoaXMuZ3Jhdml0eSA9IGRhdGEuZ3Jhdml0eTtcblx0XHR0aGlzLm1peCA9IGRhdGEubWl4O1xuXHR9XG5cblx0cmVzZXQgKCkge1xuXHRcdHRoaXMucmVtYWluaW5nID0gMDtcblx0XHR0aGlzLmxhc3RUaW1lID0gdGhpcy5za2VsZXRvbi50aW1lO1xuXHRcdHRoaXMuX3Jlc2V0ID0gdHJ1ZTtcblx0XHR0aGlzLnhPZmZzZXQgPSAwO1xuXHRcdHRoaXMueFZlbG9jaXR5ID0gMDtcblx0XHR0aGlzLnlPZmZzZXQgPSAwO1xuXHRcdHRoaXMueVZlbG9jaXR5ID0gMDtcblx0XHR0aGlzLnJvdGF0ZU9mZnNldCA9IDA7XG5cdFx0dGhpcy5yb3RhdGVWZWxvY2l0eSA9IDA7XG5cdFx0dGhpcy5zY2FsZU9mZnNldCA9IDA7XG5cdFx0dGhpcy5zY2FsZVZlbG9jaXR5ID0gMDtcblx0fVxuXG5cdHNldFRvU2V0dXBQb3NlICgpIHtcblx0XHRjb25zdCBkYXRhID0gdGhpcy5kYXRhO1xuXHRcdHRoaXMuaW5lcnRpYSA9IGRhdGEuaW5lcnRpYTtcblx0XHR0aGlzLnN0cmVuZ3RoID0gZGF0YS5zdHJlbmd0aDtcblx0XHR0aGlzLmRhbXBpbmcgPSBkYXRhLmRhbXBpbmc7XG5cdFx0dGhpcy5tYXNzSW52ZXJzZSA9IGRhdGEubWFzc0ludmVyc2U7XG5cdFx0dGhpcy53aW5kID0gZGF0YS53aW5kO1xuXHRcdHRoaXMuZ3Jhdml0eSA9IGRhdGEuZ3Jhdml0eTtcblx0XHR0aGlzLm1peCA9IGRhdGEubWl4O1xuXHR9XG5cblx0aXNBY3RpdmUgKCkge1xuXHRcdHJldHVybiB0aGlzLmFjdGl2ZTtcblx0fVxuXG5cdC8qKiBBcHBsaWVzIHRoZSBjb25zdHJhaW50IHRvIHRoZSBjb25zdHJhaW5lZCBib25lcy4gKi9cblx0dXBkYXRlIChwaHlzaWNzOiBQaHlzaWNzKSB7XG5cdFx0Y29uc3QgbWl4ID0gdGhpcy5taXg7XG5cdFx0aWYgKG1peCA9PSAwKSByZXR1cm47XG5cblx0XHRjb25zdCB4ID0gdGhpcy5kYXRhLnggPiAwLCB5ID0gdGhpcy5kYXRhLnkgPiAwLCByb3RhdGVPclNoZWFyWCA9IHRoaXMuZGF0YS5yb3RhdGUgPiAwIHx8IHRoaXMuZGF0YS5zaGVhclggPiAwLCBzY2FsZVggPSB0aGlzLmRhdGEuc2NhbGVYID4gMDtcblx0XHRjb25zdCBib25lID0gdGhpcy5ib25lO1xuXHRcdGNvbnN0IGwgPSBib25lLmRhdGEubGVuZ3RoO1xuXG5cdFx0c3dpdGNoIChwaHlzaWNzKSB7XG5cdFx0XHRjYXNlIFBoeXNpY3Mubm9uZTpcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0Y2FzZSBQaHlzaWNzLnJlc2V0OlxuXHRcdFx0XHR0aGlzLnJlc2V0KCk7XG5cdFx0XHQvLyBGYWxsIHRocm91Z2guXG5cdFx0XHRjYXNlIFBoeXNpY3MudXBkYXRlOlxuXHRcdFx0XHRjb25zdCBza2VsZXRvbiA9IHRoaXMuc2tlbGV0b247XG5cdFx0XHRcdGNvbnN0IGRlbHRhID0gTWF0aC5tYXgodGhpcy5za2VsZXRvbi50aW1lIC0gdGhpcy5sYXN0VGltZSwgMCk7XG5cdFx0XHRcdHRoaXMucmVtYWluaW5nICs9IGRlbHRhO1xuXHRcdFx0XHR0aGlzLmxhc3RUaW1lID0gc2tlbGV0b24udGltZTtcblxuXHRcdFx0XHRjb25zdCBieCA9IGJvbmUud29ybGRYLCBieSA9IGJvbmUud29ybGRZO1xuXHRcdFx0XHRpZiAodGhpcy5fcmVzZXQpIHtcblx0XHRcdFx0XHR0aGlzLl9yZXNldCA9IGZhbHNlO1xuXHRcdFx0XHRcdHRoaXMudXggPSBieDtcblx0XHRcdFx0XHR0aGlzLnV5ID0gYnk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bGV0IGEgPSB0aGlzLnJlbWFpbmluZywgaSA9IHRoaXMuaW5lcnRpYSwgdCA9IHRoaXMuZGF0YS5zdGVwLCBmID0gdGhpcy5za2VsZXRvbi5kYXRhLnJlZmVyZW5jZVNjYWxlLCBkID0gLTE7XG5cdFx0XHRcdFx0bGV0IHF4ID0gdGhpcy5kYXRhLmxpbWl0ICogZGVsdGEsIHF5ID0gcXggKiBNYXRoLmFicyhza2VsZXRvbi5zY2FsZVkpO1xuXHRcdFx0XHRcdHF4ICo9IE1hdGguYWJzKHNrZWxldG9uLnNjYWxlWCk7XG5cdFx0XHRcdFx0aWYgKHggfHwgeSkge1xuXHRcdFx0XHRcdFx0aWYgKHgpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdSA9ICh0aGlzLnV4IC0gYngpICogaTtcblx0XHRcdFx0XHRcdFx0dGhpcy54T2Zmc2V0ICs9IHUgPiBxeCA/IHF4IDogdSA8IC1xeCA/IC1xeCA6IHU7XG5cdFx0XHRcdFx0XHRcdHRoaXMudXggPSBieDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmICh5KSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHUgPSAodGhpcy51eSAtIGJ5KSAqIGk7XG5cdFx0XHRcdFx0XHRcdHRoaXMueU9mZnNldCArPSB1ID4gcXkgPyBxeSA6IHUgPCAtcXkgPyAtcXkgOiB1O1xuXHRcdFx0XHRcdFx0XHR0aGlzLnV5ID0gYnk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoYSA+PSB0KSB7XG5cdFx0XHRcdFx0XHRcdGQgPSBNYXRoLnBvdyh0aGlzLmRhbXBpbmcsIDYwICogdCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG0gPSB0aGlzLm1hc3NJbnZlcnNlICogdCwgZSA9IHRoaXMuc3RyZW5ndGgsIHcgPSB0aGlzLndpbmQgKiBmICogc2tlbGV0b24uc2NhbGVYLCBnID0gdGhpcy5ncmF2aXR5ICogZiAqIHNrZWxldG9uLnNjYWxlWTtcblx0XHRcdFx0XHRcdFx0ZG8ge1xuXHRcdFx0XHRcdFx0XHRcdGlmICh4KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnhWZWxvY2l0eSArPSAodyAtIHRoaXMueE9mZnNldCAqIGUpICogbTtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMueE9mZnNldCArPSB0aGlzLnhWZWxvY2l0eSAqIHQ7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnhWZWxvY2l0eSAqPSBkO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZiAoeSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy55VmVsb2NpdHkgLT0gKGcgKyB0aGlzLnlPZmZzZXQgKiBlKSAqIG07XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnlPZmZzZXQgKz0gdGhpcy55VmVsb2NpdHkgKiB0O1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy55VmVsb2NpdHkgKj0gZDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0YSAtPSB0O1xuXHRcdFx0XHRcdFx0XHR9IHdoaWxlIChhID49IHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKHgpIGJvbmUud29ybGRYICs9IHRoaXMueE9mZnNldCAqIG1peCAqIHRoaXMuZGF0YS54O1xuXHRcdFx0XHRcdFx0aWYgKHkpIGJvbmUud29ybGRZICs9IHRoaXMueU9mZnNldCAqIG1peCAqIHRoaXMuZGF0YS55O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAocm90YXRlT3JTaGVhclggfHwgc2NhbGVYKSB7XG5cdFx0XHRcdFx0XHRsZXQgY2EgPSBNYXRoLmF0YW4yKGJvbmUuYywgYm9uZS5hKSwgYyA9IDAsIHMgPSAwLCBtciA9IDA7XG5cdFx0XHRcdFx0XHRsZXQgZHggPSB0aGlzLmN4IC0gYm9uZS53b3JsZFgsIGR5ID0gdGhpcy5jeSAtIGJvbmUud29ybGRZO1xuXHRcdFx0XHRcdFx0aWYgKGR4ID4gcXgpXG5cdFx0XHRcdFx0XHRcdGR4ID0gcXg7XG5cdFx0XHRcdFx0XHRlbHNlIGlmIChkeCA8IC1xeCkgLy9cblx0XHRcdFx0XHRcdFx0ZHggPSAtcXg7XG5cdFx0XHRcdFx0XHRpZiAoZHkgPiBxeSlcblx0XHRcdFx0XHRcdFx0ZHkgPSBxeTtcblx0XHRcdFx0XHRcdGVsc2UgaWYgKGR5IDwgLXF5KSAvL1xuXHRcdFx0XHRcdFx0XHRkeSA9IC1xeTtcblx0XHRcdFx0XHRcdGlmIChyb3RhdGVPclNoZWFyWCkge1xuXHRcdFx0XHRcdFx0XHRtciA9ICh0aGlzLmRhdGEucm90YXRlICsgdGhpcy5kYXRhLnNoZWFyWCkgKiBtaXg7XG5cdFx0XHRcdFx0XHRcdGxldCByID0gTWF0aC5hdGFuMihkeSArIHRoaXMudHksIGR4ICsgdGhpcy50eCkgLSBjYSAtIHRoaXMucm90YXRlT2Zmc2V0ICogbXI7XG5cdFx0XHRcdFx0XHRcdHRoaXMucm90YXRlT2Zmc2V0ICs9IChyIC0gTWF0aC5jZWlsKHIgKiBNYXRoVXRpbHMuaW52UEkyIC0gMC41KSAqIE1hdGhVdGlscy5QSTIpICogaTtcblx0XHRcdFx0XHRcdFx0ciA9IHRoaXMucm90YXRlT2Zmc2V0ICogbXIgKyBjYTtcblx0XHRcdFx0XHRcdFx0YyA9IE1hdGguY29zKHIpO1xuXHRcdFx0XHRcdFx0XHRzID0gTWF0aC5zaW4ocik7XG5cdFx0XHRcdFx0XHRcdGlmIChzY2FsZVgpIHtcblx0XHRcdFx0XHRcdFx0XHRyID0gbCAqIGJvbmUuZ2V0V29ybGRTY2FsZVgoKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAociA+IDApIHRoaXMuc2NhbGVPZmZzZXQgKz0gKGR4ICogYyArIGR5ICogcykgKiBpIC8gcjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0YyA9IE1hdGguY29zKGNhKTtcblx0XHRcdFx0XHRcdFx0cyA9IE1hdGguc2luKGNhKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgciA9IGwgKiBib25lLmdldFdvcmxkU2NhbGVYKCk7XG5cdFx0XHRcdFx0XHRcdGlmIChyID4gMCkgdGhpcy5zY2FsZU9mZnNldCArPSAoZHggKiBjICsgZHkgKiBzKSAqIGkgLyByO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YSA9IHRoaXMucmVtYWluaW5nO1xuXHRcdFx0XHRcdFx0aWYgKGEgPj0gdCkge1xuXHRcdFx0XHRcdFx0XHRpZiAoZCA9PSAtMSkgZCA9IE1hdGgucG93KHRoaXMuZGFtcGluZywgNjAgKiB0KTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbSA9IHRoaXMubWFzc0ludmVyc2UgKiB0LCBlID0gdGhpcy5zdHJlbmd0aCwgdyA9IHRoaXMud2luZCwgZyA9IChTa2VsZXRvbi55RG93biA/IC10aGlzLmdyYXZpdHkgOiB0aGlzLmdyYXZpdHkpLCBoID0gbCAvIGY7XG5cdFx0XHRcdFx0XHRcdHdoaWxlICh0cnVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0YSAtPSB0O1xuXHRcdFx0XHRcdFx0XHRcdGlmIChzY2FsZVgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc2NhbGVWZWxvY2l0eSArPSAodyAqIGMgLSBnICogcyAtIHRoaXMuc2NhbGVPZmZzZXQgKiBlKSAqIG07XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnNjYWxlT2Zmc2V0ICs9IHRoaXMuc2NhbGVWZWxvY2l0eSAqIHQ7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnNjYWxlVmVsb2NpdHkgKj0gZDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHJvdGF0ZU9yU2hlYXJYKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJvdGF0ZVZlbG9jaXR5IC09ICgodyAqIHMgKyBnICogYykgKiBoICsgdGhpcy5yb3RhdGVPZmZzZXQgKiBlKSAqIG07XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJvdGF0ZU9mZnNldCArPSB0aGlzLnJvdGF0ZVZlbG9jaXR5ICogdDtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMucm90YXRlVmVsb2NpdHkgKj0gZDtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhIDwgdCkgYnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zdCByID0gdGhpcy5yb3RhdGVPZmZzZXQgKiBtciArIGNhO1xuXHRcdFx0XHRcdFx0XHRcdFx0YyA9IE1hdGguY29zKHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0cyA9IE1hdGguc2luKHIpO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYSA8IHQpIC8vXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLnJlbWFpbmluZyA9IGE7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5jeCA9IGJvbmUud29ybGRYO1xuXHRcdFx0XHR0aGlzLmN5ID0gYm9uZS53b3JsZFk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBQaHlzaWNzLnBvc2U6XG5cdFx0XHRcdGlmICh4KSBib25lLndvcmxkWCArPSB0aGlzLnhPZmZzZXQgKiBtaXggKiB0aGlzLmRhdGEueDtcblx0XHRcdFx0aWYgKHkpIGJvbmUud29ybGRZICs9IHRoaXMueU9mZnNldCAqIG1peCAqIHRoaXMuZGF0YS55O1xuXHRcdH1cblxuXHRcdGlmIChyb3RhdGVPclNoZWFyWCkge1xuXHRcdFx0bGV0IG8gPSB0aGlzLnJvdGF0ZU9mZnNldCAqIG1peCwgcyA9IDAsIGMgPSAwLCBhID0gMDtcblx0XHRcdGlmICh0aGlzLmRhdGEuc2hlYXJYID4gMCkge1xuXHRcdFx0XHRsZXQgciA9IDA7XG5cdFx0XHRcdGlmICh0aGlzLmRhdGEucm90YXRlID4gMCkge1xuXHRcdFx0XHRcdHIgPSBvICogdGhpcy5kYXRhLnJvdGF0ZTtcblx0XHRcdFx0XHRzID0gTWF0aC5zaW4ocik7XG5cdFx0XHRcdFx0YyA9IE1hdGguY29zKHIpO1xuXHRcdFx0XHRcdGEgPSBib25lLmI7XG5cdFx0XHRcdFx0Ym9uZS5iID0gYyAqIGEgLSBzICogYm9uZS5kO1xuXHRcdFx0XHRcdGJvbmUuZCA9IHMgKiBhICsgYyAqIGJvbmUuZDtcblx0XHRcdFx0fVxuXHRcdFx0XHRyICs9IG8gKiB0aGlzLmRhdGEuc2hlYXJYO1xuXHRcdFx0XHRzID0gTWF0aC5zaW4ocik7XG5cdFx0XHRcdGMgPSBNYXRoLmNvcyhyKTtcblx0XHRcdFx0YSA9IGJvbmUuYTtcblx0XHRcdFx0Ym9uZS5hID0gYyAqIGEgLSBzICogYm9uZS5jO1xuXHRcdFx0XHRib25lLmMgPSBzICogYSArIGMgKiBib25lLmM7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvICo9IHRoaXMuZGF0YS5yb3RhdGU7XG5cdFx0XHRcdHMgPSBNYXRoLnNpbihvKTtcblx0XHRcdFx0YyA9IE1hdGguY29zKG8pO1xuXHRcdFx0XHRhID0gYm9uZS5hO1xuXHRcdFx0XHRib25lLmEgPSBjICogYSAtIHMgKiBib25lLmM7XG5cdFx0XHRcdGJvbmUuYyA9IHMgKiBhICsgYyAqIGJvbmUuYztcblx0XHRcdFx0YSA9IGJvbmUuYjtcblx0XHRcdFx0Ym9uZS5iID0gYyAqIGEgLSBzICogYm9uZS5kO1xuXHRcdFx0XHRib25lLmQgPSBzICogYSArIGMgKiBib25lLmQ7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChzY2FsZVgpIHtcblx0XHRcdGNvbnN0IHMgPSAxICsgdGhpcy5zY2FsZU9mZnNldCAqIG1peCAqIHRoaXMuZGF0YS5zY2FsZVg7XG5cdFx0XHRib25lLmEgKj0gcztcblx0XHRcdGJvbmUuYyAqPSBzO1xuXHRcdH1cblx0XHRpZiAocGh5c2ljcyAhPSBQaHlzaWNzLnBvc2UpIHtcblx0XHRcdHRoaXMudHggPSBsICogYm9uZS5hO1xuXHRcdFx0dGhpcy50eSA9IGwgKiBib25lLmM7XG5cdFx0fVxuXHRcdGJvbmUudXBkYXRlQXBwbGllZFRyYW5zZm9ybSgpO1xuXHR9XG5cblx0LyoqIFRyYW5zbGF0ZXMgdGhlIHBoeXNpY3MgY29uc3RyYWludCBzbyBuZXh0IHtAbGluayAjdXBkYXRlKFBoeXNpY3MpfSBmb3JjZXMgYXJlIGFwcGxpZWQgYXMgaWYgdGhlIGJvbmUgbW92ZWQgYW4gYWRkaXRpb25hbFxuXHQgKiBhbW91bnQgaW4gd29ybGQgc3BhY2UuICovXG5cdHRyYW5zbGF0ZSAoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcblx0XHR0aGlzLnV4IC09IHg7XG5cdFx0dGhpcy51eSAtPSB5O1xuXHRcdHRoaXMuY3ggLT0geDtcblx0XHR0aGlzLmN5IC09IHk7XG5cdH1cblxuXHQvKiogUm90YXRlcyB0aGUgcGh5c2ljcyBjb25zdHJhaW50IHNvIG5leHQge0BsaW5rICN1cGRhdGUoUGh5c2ljcyl9IGZvcmNlcyBhcmUgYXBwbGllZCBhcyBpZiB0aGUgYm9uZSByb3RhdGVkIGFyb3VuZCB0aGVcblx0ICogc3BlY2lmaWVkIHBvaW50IGluIHdvcmxkIHNwYWNlLiAqL1xuXHRyb3RhdGUgKHg6IG51bWJlciwgeTogbnVtYmVyLCBkZWdyZWVzOiBudW1iZXIpIHtcblx0XHRjb25zdCByID0gZGVncmVlcyAqIE1hdGhVdGlscy5kZWdSYWQsIGNvcyA9IE1hdGguY29zKHIpLCBzaW4gPSBNYXRoLnNpbihyKTtcblx0XHRjb25zdCBkeCA9IHRoaXMuY3ggLSB4LCBkeSA9IHRoaXMuY3kgLSB5O1xuXHRcdHRoaXMudHJhbnNsYXRlKGR4ICogY29zIC0gZHkgKiBzaW4gLSBkeCwgZHggKiBzaW4gKyBkeSAqIGNvcyAtIGR5KTtcblx0fVxufVxuIl19
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGh5c2ljc0NvbnN0cmFpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUGh5c2ljc0NvbnN0cmFpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV2QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHdkM7OzBIQUUwSDtBQUMxSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsVUFBMkU7SUFDakgsSUFBSSxDQUFXO0lBRWYsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNkLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDUCxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1AsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNQLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDUCxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1AsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNQLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDWixJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ1QsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDWixJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ1QsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDbkIsV0FBVyxHQUFHLENB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QUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNoQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNaLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2QsQ0FBQztRQUNGLENBQUM7UUFDRCxJQUFJLE9BQU8sS0FBSyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxDQUFFLFFBQWtCO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVCLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsY0FBYztRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzlCLENBQUM7Q0FFRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBCb25lUG9zZSB9IGZyb20gXCIuL0JvbmVQb3NlLmpzXCI7XG5pbXBvcnQgeyBDb25zdHJhaW50IH0gZnJvbSBcIi4vQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgU2NhbGVZTW9kZSB9IGZyb20gXCIuL0NvbnN0cmFpbnREYXRhLmpzXCI7XG5pbXBvcnQgeyBQaHlzaWNzIH0gZnJvbSBcIi4vUGh5c2ljcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBQaHlzaWNzQ29uc3RyYWludERhdGEgfSBmcm9tIFwiLi9QaHlzaWNzQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IFBoeXNpY3NDb25zdHJhaW50UG9zZSB9IGZyb20gXCIuL1BoeXNpY3NDb25zdHJhaW50UG9zZS5qc1wiO1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tIFwiLi9Ta2VsZXRvbi5qc1wiO1xuaW1wb3J0IHsgTWF0aFV0aWxzIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuXG4vKiogQXBwbGllcyBwaHlzaWNzIHRvIGEgYm9uZS5cbiAqXG4gKiBTZWUgPGEgaHJlZj1cImh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1waHlzaWNzLWNvbnN0cmFpbnRzXCI+UGh5c2ljcyBjb25zdHJhaW50czwvYT4gaW4gdGhlIFNwaW5lIFVzZXIgR3VpZGUuICovXG5leHBvcnQgY2xhc3MgUGh5c2ljc0NvbnN0cmFpbnQgZXh0ZW5kcyBDb25zdHJhaW50PFBoeXNpY3NDb25zdHJhaW50LCBQaHlzaWNzQ29uc3RyYWludERhdGEsIFBoeXNpY3NDb25zdHJhaW50UG9zZT4ge1xuXHRib25lOiBCb25lUG9zZTtcblxuXHRfcmVzZXQgPSB0cnVlO1xuXHR1eCA9IDA7XG5cdHV5ID0gMDtcblx0Y3ggPSAwO1xuXHRjeSA9IDA7XG5cdHR4ID0gMDtcblx0dHkgPSAwO1xuXHR4T2Zmc2V0ID0gMDtcblx0eExhZyA9IDA7XG5cdHhWZWxvY2l0eSA9IDA7XG5cdHlPZmZzZXQgPSAwO1xuXHR5TGFnID0gMDtcblx0eVZlbG9jaXR5ID0gMDtcblx0cm90YXRlT2Zmc2V0ID0gMDtcblx0cm90YXRlTGFnID0gMDtcblx0cm90YXRlVmVsb2NpdHkgPSAwO1xuXHRzY2FsZU9mZnNldCA9IDBcblx0c2NhbGVMYWcgPSAwXG5cdHNjYWxlVmVsb2NpdHkgPSAwO1xuXHRyZW1haW5pbmcgPSAwO1xuXHRsYXN0VGltZSA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGRhdGE6IFBoeXNpY3NDb25zdHJhaW50RGF0YSwgc2tlbGV0b246IFNrZWxldG9uKSB7XG5cdFx0c3VwZXIoZGF0YSwgbmV3IFBoeXNpY3NDb25zdHJhaW50UG9zZSgpLCBuZXcgUGh5c2ljc0NvbnN0cmFpbnRQb3NlKCkpO1xuXHRcdGlmIChza2VsZXRvbiA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJza2VsZXRvbiBjYW5ub3QgYmUgbnVsbC5cIik7XG5cblx0XHR0aGlzLmJvbmUgPSBza2VsZXRvbi5ib25lc1tkYXRhLmJvbmUuaW5kZXhdLmNvbnN0cmFpbmVkUG9zZTtcblx0fVxuXG5cdHB1YmxpYyBjb3B5IChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHR2YXIgY29weSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludCh0aGlzLmRhdGEsIHNrZWxldG9uKTtcblx0XHRjb3B5LnBvc2Uuc2V0KHRoaXMucG9zZSk7XG5cdFx0cmV0dXJuIGNvcHk7XG5cdH1cblxuXHQvKiogUmVzZXRzIGFsbCBwaHlzaWNzIHN0YXRlIHRoYXQgd2FzIHRoZSByZXN1bHQgb2YgcHJldmlvdXMgbW92ZW1lbnQuIFVzZSB0aGlzIGFmdGVyIG1vdmluZyBhIGJvbmUgdG8gcHJldmVudCBwaHlzaWNzIGZyb21cblx0ICogcmVhY3RpbmcgdG8gdGhlIG1vdmVtZW50LiAqL1xuXHRyZXNldCAoc2tlbGV0b246IFNrZWxldG9uKSB7XG5cdFx0dGhpcy5yZW1haW5pbmcgPSAwO1xuXHRcdHRoaXMubGFzdFRpbWUgPSBza2VsZXRvbi50aW1lO1xuXHRcdHRoaXMuX3Jlc2V0ID0gdHJ1ZTtcblx0XHR0aGlzLnhPZmZzZXQgPSAwO1xuXHRcdHRoaXMueExhZyA9IDA7XG5cdFx0dGhpcy54VmVsb2NpdHkgPSAwO1xuXHRcdHRoaXMueU9mZnNldCA9IDA7XG5cdFx0dGhpcy55TGFnID0gMDtcblx0XHR0aGlzLnlWZWxvY2l0eSA9IDA7XG5cdFx0dGhpcy5yb3RhdGVPZmZzZXQgPSAwO1xuXHRcdHRoaXMucm90YXRlTGFnID0gMDtcblx0XHR0aGlzLnJvdGF0ZVZlbG9jaXR5ID0gMDtcblx0XHR0aGlzLnNjYWxlT2Zmc2V0ID0gMDtcblx0XHR0aGlzLnNjYWxlTGFnID0gMDtcblx0XHR0aGlzLnNjYWxlVmVsb2NpdHkgPSAwO1xuXHR9XG5cblx0LyoqIFRyYW5zbGF0ZXMgdGhlIHBoeXNpY3MgY29uc3RyYWludCBzbyB0aGUgbmV4dCB7QGxpbmsgdXBkYXRlfSBmb3JjZXMgYXJlIGFwcGxpZWQgYXMgaWYgdGhlIGJvbmUgbW92ZWQgYW5cblx0ICogYWRkaXRpb25hbCBhbW91bnQgaW4gd29ybGQgc3BhY2UuICovXG5cdHRyYW5zbGF0ZSAoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcblx0XHR0aGlzLnV4IC09IHg7XG5cdFx0dGhpcy51eSAtPSB5O1xuXHRcdHRoaXMuY3ggLT0geDtcblx0XHR0aGlzLmN5IC09IHk7XG5cdH1cblxuXHQvKiogUm90YXRlcyB0aGUgcGh5c2ljcyBjb25zdHJhaW50IHNvIHRoZSBuZXh0IHtAbGluayB1cGRhdGV9IGZvcmNlcyBhcmUgYXBwbGllZCBhcyBpZiB0aGUgYm9uZSByb3RhdGVkXG5cdCAqIGFyb3VuZCB0aGUgc3BlY2lmaWVkIHBvaW50IGluIHdvcmxkIHNwYWNlLiAqL1xuXHRyb3RhdGUgKHg6IG51bWJlciwgeTogbnVtYmVyLCBkZWdyZWVzOiBudW1iZXIpIHtcblx0XHRjb25zdCByID0gZGVncmVlcyAqIE1hdGhVdGlscy5kZWdSYWQsIGNvcyA9IE1hdGguY29zKHIpLCBzaW4gPSBNYXRoLnNpbihyKTtcblx0XHRjb25zdCBkeCA9IHRoaXMuY3ggLSB4LCBkeSA9IHRoaXMuY3kgLSB5O1xuXHRcdHRoaXMudHJhbnNsYXRlKGR4ICogY29zIC0gZHkgKiBzaW4gLSBkeCwgZHggKiBzaW4gKyBkeSAqIGNvcyAtIGR5KTtcblx0fVxuXG5cdC8qKiBBcHBsaWVzIHRoZSBjb25zdHJhaW50IHRvIHRoZSBjb25zdHJhaW5lZCBib25lcy4gKi9cblx0dXBkYXRlIChza2VsZXRvbjogU2tlbGV0b24sIHBoeXNpY3M6IFBoeXNpY3MpIHtcblx0XHRjb25zdCBwID0gdGhpcy5hcHBsaWVkUG9zZTtcblx0XHRjb25zdCBtaXggPSBwLm1peDtcblx0XHRpZiAobWl4ID09PSAwKSByZXR1cm47XG5cblx0XHRjb25zdCB4ID0gdGhpcy5kYXRhLnggPiAwLCB5ID0gdGhpcy5kYXRhLnkgPiAwLCByb3RhdGVPclNoZWFyWCA9IHRoaXMuZGF0YS5yb3RhdGUgPiAwIHx8IHRoaXMuZGF0YS5zaGVhclggPiAwLCBzY2FsZVggPSB0aGlzLmRhdGEuc2NhbGVYID4gMDtcblx0XHRjb25zdCBib25lID0gdGhpcy5ib25lO1xuXHRcdGxldCBsID0gYm9uZS5ib25lLmRhdGEubGVuZ3RoLCB0ID0gdGhpcy5kYXRhLnN0ZXAsIHogPSAwO1xuXG5cdFx0c3dpdGNoIChwaHlzaWNzKSB7XG5cdFx0XHRjYXNlIFBoeXNpY3Mubm9uZTpcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOiBmYWxsIHRocm91Z2ggZXhwZWN0ZWRcblx0XHRcdGNhc2UgUGh5c2ljcy5yZXNldDpcblx0XHRcdFx0dGhpcy5yZXNldChza2VsZXRvbik7IC8vIEZhbGwgdGhyb3VnaC5cblx0XHRcdGNhc2UgUGh5c2ljcy51cGRhdGU6IHtcblx0XHRcdFx0Y29uc3QgZGVsdGEgPSBNYXRoLm1heChza2VsZXRvbi50aW1lIC0gdGhpcy5sYXN0VGltZSwgMCksIGFhID0gdGhpcy5yZW1haW5pbmc7XG5cdFx0XHRcdHRoaXMucmVtYWluaW5nICs9IGRlbHRhO1xuXHRcdFx0XHR0aGlzLmxhc3RUaW1lID0gc2tlbGV0b24udGltZTtcblxuXHRcdFx0XHRjb25zdCBieCA9IGJvbmUud29ybGRYLCBieSA9IGJvbmUud29ybGRZO1xuXHRcdFx0XHRpZiAodGhpcy5fcmVzZXQpIHtcblx0XHRcdFx0XHR0aGlzLl9yZXNldCA9IGZhbHNlO1xuXHRcdFx0XHRcdHRoaXMudXggPSBieDtcblx0XHRcdFx0XHR0aGlzLnV5ID0gYnk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bGV0IGEgPSB0aGlzLnJlbWFpbmluZywgaSA9IHAuaW5lcnRpYSwgZiA9IHNrZWxldG9uLmRhdGEucmVmZXJlbmNlU2NhbGUsIGQgPSAtMSwgbSA9IDAsIGUgPSAwLCBxeCA9IHRoaXMuZGF0YS5saW1pdCAqIGRlbHRhLFxuXHRcdFx0XHRcdFx0cXkgPSBxeCAqIE1hdGguYWJzKHNrZWxldG9uLnNjYWxlWSk7XG5cdFx0XHRcdFx0cXggKj0gTWF0aC5hYnMoc2tlbGV0b24uc2NhbGVYKTtcblx0XHRcdFx0XHRpZiAoeCB8fCB5KSB7XG5cdFx0XHRcdFx0XHRpZiAoeCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB1ID0gKHRoaXMudXggLSBieCkgKiBpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnhPZmZzZXQgKz0gdSA+IHF4ID8gcXggOiB1IDwgLXF4ID8gLXF4IDogdTtcblx0XHRcdFx0XHRcdFx0dGhpcy51eCA9IGJ4O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKHkpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdSA9ICh0aGlzLnV5IC0gYnkpICogaTtcblx0XHRcdFx0XHRcdFx0dGhpcy55T2Zmc2V0ICs9IHUgPiBxeSA/IHF5IDogdSA8IC1xeSA/IC1xeSA6IHU7XG5cdFx0XHRcdFx0XHRcdHRoaXMudXkgPSBieTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChhID49IHQpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgeHMgPSB0aGlzLnhPZmZzZXQsIHlzID0gdGhpcy55T2Zmc2V0O1xuXHRcdFx0XHRcdFx0XHRkID0gcC5kYW1waW5nICoqICg2MCAqIHQpO1xuXHRcdFx0XHRcdFx0XHRtID0gdCAqIHAubWFzc0ludmVyc2U7XG5cdFx0XHRcdFx0XHRcdGUgPSBwLnN0cmVuZ3RoO1xuXHRcdFx0XHRcdFx0XHRjb25zdCB3ID0gZiAqIHAud2luZCwgZyA9IGYgKiBwLmdyYXZpdHk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGF4ID0gKHcgKiBza2VsZXRvbi53aW5kWCArIGcgKiBza2VsZXRvbi5ncmF2aXR5WCkgKiBza2VsZXRvbi5zY2FsZVg7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGF5ID0gKHcgKiBza2VsZXRvbi53aW5kWSArIGcgKiBza2VsZXRvbi5ncmF2aXR5WSkgKiBza2VsZXRvbi5zY2FsZVk7XG5cdFx0XHRcdFx0XHRcdGRvIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoeCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy54VmVsb2NpdHkgKz0gKGF4IC0gdGhpcy54T2Zmc2V0ICogZSkgKiBtO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy54T2Zmc2V0ICs9IHRoaXMueFZlbG9jaXR5ICogdDtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMueFZlbG9jaXR5ICo9IGQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGlmICh5KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnlWZWxvY2l0eSAtPSAoYXkgKyB0aGlzLnlPZmZzZXQgKiBlKSAqIG07XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnlPZmZzZXQgKz0gdGhpcy55VmVsb2NpdHkgKiB0O1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy55VmVsb2NpdHkgKj0gZDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0YSAtPSB0O1xuXHRcdFx0XHRcdFx0XHR9IHdoaWxlIChhID49IHQpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnhMYWcgPSB0aGlzLnhPZmZzZXQgLSB4cztcblx0XHRcdFx0XHRcdFx0dGhpcy55TGFnID0gdGhpcy55T2Zmc2V0IC0geXM7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR6ID0gTWF0aC5tYXgoMCwgMSAtIGEgLyB0KTtcblx0XHRcdFx0XHRcdGlmICh4KSBib25lLndvcmxkWCArPSAodGhpcy54T2Zmc2V0IC0gdGhpcy54TGFnICogeikgKiBtaXggKiB0aGlzLmRhdGEueDtcblx0XHRcdFx0XHRcdGlmICh5KSBib25lLndvcmxkWSArPSAodGhpcy55T2Zmc2V0IC0gdGhpcy55TGFnICogeikgKiBtaXggKiB0aGlzLmRhdGEueTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKHJvdGF0ZU9yU2hlYXJYIHx8IHNjYWxlWCkge1xuXHRcdFx0XHRcdFx0bGV0IGNhID0gTWF0aC5hdGFuMihib25lLmMsIGJvbmUuYSksIGMgPSAwLCBzID0gMCwgbXIgPSAwLCBkeCA9IHRoaXMuY3ggLSBib25lLndvcmxkWCwgZHkgPSB0aGlzLmN5IC0gYm9uZS53b3JsZFk7XG5cdFx0XHRcdFx0XHRpZiAoZHggPiBxeClcblx0XHRcdFx0XHRcdFx0ZHggPSBxeDtcblx0XHRcdFx0XHRcdGVsc2UgaWYgKGR4IDwgLXF4KSAvL1xuXHRcdFx0XHRcdFx0XHRkeCA9IC1xeDtcblx0XHRcdFx0XHRcdGlmIChkeSA+IHF5KVxuXHRcdFx0XHRcdFx0XHRkeSA9IHF5O1xuXHRcdFx0XHRcdFx0ZWxzZSBpZiAoZHkgPCAtcXkpIC8vXG5cdFx0XHRcdFx0XHRcdGR5ID0gLXF5O1xuXHRcdFx0XHRcdFx0YSA9IHRoaXMucmVtYWluaW5nO1xuXHRcdFx0XHRcdFx0aWYgKHJvdGF0ZU9yU2hlYXJYKSB7XG5cdFx0XHRcdFx0XHRcdG1yID0gKHRoaXMuZGF0YS5yb3RhdGUgKyB0aGlzLmRhdGEuc2hlYXJYKSAqIG1peDtcblx0XHRcdFx0XHRcdFx0eiA9IHRoaXMucm90YXRlTGFnICogTWF0aC5tYXgoMCwgMSAtIGFhIC8gdCk7XG5cdFx0XHRcdFx0XHRcdGxldCByID0gTWF0aC5hdGFuMihkeSArIHRoaXMudHksIGR4ICsgdGhpcy50eCkgLSBjYSAtICh0aGlzLnJvdGF0ZU9mZnNldCAtIHopICogbXI7XG5cdFx0XHRcdFx0XHRcdHRoaXMucm90YXRlT2Zmc2V0ICs9IChyIC0gTWF0aC5jZWlsKHIgKiBNYXRoVXRpbHMuaW52UEkyIC0gMC41KSAqIE1hdGhVdGlscy5QSTIpICogaTtcblx0XHRcdFx0XHRcdFx0ciA9ICh0aGlzLnJvdGF0ZU9mZnNldCAtIHopICogbXIgKyBjYTtcblx0XHRcdFx0XHRcdFx0YyA9IE1hdGguY29zKHIpO1xuXHRcdFx0XHRcdFx0XHRzID0gTWF0aC5zaW4ocik7XG5cdFx0XHRcdFx0XHRcdGlmIChzY2FsZVgpIHtcblx0XHRcdFx0XHRcdFx0XHRyID0gbCAqIGJvbmUuZ2V0V29ybGRTY2FsZVgoKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAociA+IDApIHRoaXMuc2NhbGVPZmZzZXQgKz0gKGR4ICogYyArIGR5ICogcykgKiBpIC8gcjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0YyA9IE1hdGguY29zKGNhKTtcblx0XHRcdFx0XHRcdFx0cyA9IE1hdGguc2luKGNhKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgciA9IGwgKiBib25lLmdldFdvcmxkU2NhbGVYKCkgLSB0aGlzLnNjYWxlTGFnICogTWF0aC5tYXgoMCwgMSAtIGFhIC8gdCk7XG5cdFx0XHRcdFx0XHRcdGlmIChyID4gMCkgdGhpcy5zY2FsZU9mZnNldCArPSAoZHggKiBjICsgZHkgKiBzKSAqIGkgLyByO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKGEgPj0gdCkge1xuXHRcdFx0XHRcdFx0XHRpZiAoZCA9PT0gLTEpIHtcblx0XHRcdFx0XHRcdFx0XHRkID0gcC5kYW1waW5nICoqICg2MCAqIHQpO1xuXHRcdFx0XHRcdFx0XHRcdG0gPSB0ICogcC5tYXNzSW52ZXJzZTtcblx0XHRcdFx0XHRcdFx0XHRlID0gcC5zdHJlbmd0aDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjb25zdCBheCA9IHAud2luZCAqIHNrZWxldG9uLndpbmRYICsgcC5ncmF2aXR5ICogc2tlbGV0b24uZ3Jhdml0eVg7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGF5ID0gKHAud2luZCAqIHNrZWxldG9uLndpbmRZICsgcC5ncmF2aXR5ICogc2tlbGV0b24uZ3Jhdml0eVkpICogU2tlbGV0b24ueURpcjtcblx0XHRcdFx0XHRcdFx0Y29uc3QgcnMgPSB0aGlzLnJvdGF0ZU9mZnNldCwgc3MgPSB0aGlzLnNjYWxlT2Zmc2V0LCBoID0gbCAvIGY7XG5cdFx0XHRcdFx0XHRcdHdoaWxlICh0cnVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0YSAtPSB0O1xuXHRcdFx0XHRcdFx0XHRcdGlmIChzY2FsZVgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc2NhbGVWZWxvY2l0eSArPSAoYXggKiBjIC0gYXkgKiBzIC0gdGhpcy5zY2FsZU9mZnNldCAqIGUpICogbTtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc2NhbGVPZmZzZXQgKz0gdGhpcy5zY2FsZVZlbG9jaXR5ICogdDtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc2NhbGVWZWxvY2l0eSAqPSBkO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZiAocm90YXRlT3JTaGVhclgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMucm90YXRlVmVsb2NpdHkgLT0gKChheCAqIHMgKyBheSAqIGMpICogaCArIHRoaXMucm90YXRlT2Zmc2V0ICogZSkgKiBtO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5yb3RhdGVPZmZzZXQgKz0gdGhpcy5yb3RhdGVWZWxvY2l0eSAqIHQ7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJvdGF0ZVZlbG9jaXR5ICo9IGQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYSA8IHQpIGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgciA9IHRoaXMucm90YXRlT2Zmc2V0ICogbXIgKyBjYTtcblx0XHRcdFx0XHRcdFx0XHRcdGMgPSBNYXRoLmNvcyhyKTtcblx0XHRcdFx0XHRcdFx0XHRcdHMgPSBNYXRoLnNpbihyKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGEgPCB0KSAvL1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGhpcy5yb3RhdGVMYWcgPSB0aGlzLnJvdGF0ZU9mZnNldCAtIHJzO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNjYWxlTGFnID0gdGhpcy5zY2FsZU9mZnNldCAtIHNzO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0eiA9IE1hdGgubWF4KDAsIDEgLSBhIC8gdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMucmVtYWluaW5nID0gYTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmN4ID0gYm9uZS53b3JsZFg7XG5cdFx0XHRcdHRoaXMuY3kgPSBib25lLndvcmxkWTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFBoeXNpY3MucG9zZTpcblx0XHRcdFx0eiA9IE1hdGgubWF4KDAsIDEgLSB0aGlzLnJlbWFpbmluZyAvIHQpO1xuXHRcdFx0XHRpZiAoeCkgYm9uZS53b3JsZFggKz0gKHRoaXMueE9mZnNldCAtIHRoaXMueExhZyAqIHopICogbWl4ICogdGhpcy5kYXRhLng7XG5cdFx0XHRcdGlmICh5KSBib25lLndvcmxkWSArPSAodGhpcy55T2Zmc2V0IC0gdGhpcy55TGFnICogeikgKiBtaXggKiB0aGlzLmRhdGEueTtcblx0XHR9XG5cblx0XHRpZiAocm90YXRlT3JTaGVhclgpIHtcblx0XHRcdGxldCBvID0gKHRoaXMucm90YXRlT2Zmc2V0IC0gdGhpcy5yb3RhdGVMYWcgKiB6KSAqIG1peCwgcyA9IDAsIGMgPSAwLCBhID0gMDtcblx0XHRcdGlmICh0aGlzLmRhdGEuc2hlYXJYID4gMCkge1xuXHRcdFx0XHRsZXQgciA9IDA7XG5cdFx0XHRcdGlmICh0aGlzLmRhdGEucm90YXRlID4gMCkge1xuXHRcdFx0XHRcdHIgPSBvICogdGhpcy5kYXRhLnJvdGF0ZTtcblx0XHRcdFx0XHRzID0gTWF0aC5zaW4ocik7XG5cdFx0XHRcdFx0YyA9IE1hdGguY29zKHIpO1xuXHRcdFx0XHRcdGEgPSBib25lLmI7XG5cdFx0XHRcdFx0Ym9uZS5iID0gYyAqIGEgLSBzICogYm9uZS5kO1xuXHRcdFx0XHRcdGJvbmUuZCA9IHMgKiBhICsgYyAqIGJvbmUuZDtcblx0XHRcdFx0fVxuXHRcdFx0XHRyICs9IG8gKiB0aGlzLmRhdGEuc2hlYXJYO1xuXHRcdFx0XHRzID0gTWF0aC5zaW4ocik7XG5cdFx0XHRcdGMgPSBNYXRoLmNvcyhyKTtcblx0XHRcdFx0YSA9IGJvbmUuYTtcblx0XHRcdFx0Ym9uZS5hID0gYyAqIGEgLSBzICogYm9uZS5jO1xuXHRcdFx0XHRib25lLmMgPSBzICogYSArIGMgKiBib25lLmM7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvICo9IHRoaXMuZGF0YS5yb3RhdGU7XG5cdFx0XHRcdHMgPSBNYXRoLnNpbihvKTtcblx0XHRcdFx0YyA9IE1hdGguY29zKG8pO1xuXHRcdFx0XHRhID0gYm9uZS5hO1xuXHRcdFx0XHRib25lLmEgPSBjICogYSAtIHMgKiBib25lLmM7XG5cdFx0XHRcdGJvbmUuYyA9IHMgKiBhICsgYyAqIGJvbmUuYztcblx0XHRcdFx0YSA9IGJvbmUuYjtcblx0XHRcdFx0Ym9uZS5iID0gYyAqIGEgLSBzICogYm9uZS5kO1xuXHRcdFx0XHRib25lLmQgPSBzICogYSArIGMgKiBib25lLmQ7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChzY2FsZVgpIHtcblx0XHRcdGxldCBzID0gMSArICh0aGlzLnNjYWxlT2Zmc2V0IC0gdGhpcy5zY2FsZUxhZyAqIHopICogbWl4ICogdGhpcy5kYXRhLnNjYWxlWDtcblx0XHRcdGJvbmUuYSAqPSBzO1xuXHRcdFx0Ym9uZS5jICo9IHM7XG5cdFx0XHRzd2l0Y2ggKHRoaXMuZGF0YS5zY2FsZVlNb2RlKSB7XG5cdFx0XHRcdGNhc2UgU2NhbGVZTW9kZS5Vbmlmb3JtOlxuXHRcdFx0XHRcdGJvbmUuYiAqPSBzO1xuXHRcdFx0XHRcdGJvbmUuZCAqPSBzO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFNjYWxlWU1vZGUuVm9sdW1lOlxuXHRcdFx0XHRcdHMgPSBNYXRoLmFicyhzKTtcblx0XHRcdFx0XHRzID0gcyA+PSAwLjcgPyAxIC8gcyA6IDQgLSAzLjY3MzQ3ICogcztcblx0XHRcdFx0XHRib25lLmIgKj0gcztcblx0XHRcdFx0XHRib25lLmQgKj0gcztcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHBoeXNpY3MgIT09IFBoeXNpY3MucG9zZSkge1xuXHRcdFx0dGhpcy50eCA9IGwgKiBib25lLmE7XG5cdFx0XHR0aGlzLnR5ID0gbCAqIGJvbmUuYztcblx0XHR9XG5cdFx0Ym9uZS5tb2RpZnlXb3JsZChza2VsZXRvbi5fdXBkYXRlKTtcblx0fVxuXG5cdHNvcnQgKHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdGNvbnN0IGJvbmUgPSB0aGlzLmJvbmUuYm9uZTtcblx0XHRza2VsZXRvbi5zb3J0Qm9uZShib25lKTtcblx0XHRza2VsZXRvbi5fdXBkYXRlQ2FjaGUucHVzaCh0aGlzKTtcblx0XHRza2VsZXRvbi5zb3J0UmVzZXQoYm9uZS5jaGlsZHJlbik7XG5cdFx0c2tlbGV0b24uY29uc3RyYWluZWQoYm9uZSk7XG5cdH1cblxuXHRpc1NvdXJjZUFjdGl2ZSAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuYm9uZS5ib25lLmFjdGl2ZTtcblx0fVxuXG59XG4iXX0=
|
|
@@ -26,37 +26,52 @@
|
|
|
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 { BoneData } from "./BoneData.js";
|
|
30
|
-
import { ConstraintData } from "./ConstraintData.js";
|
|
29
|
+
import type { BoneData } from "./BoneData.js";
|
|
30
|
+
import { ConstraintData, ScaleYMode } from "./ConstraintData.js";
|
|
31
|
+
import { PhysicsConstraint } from "./PhysicsConstraint.js";
|
|
32
|
+
import { PhysicsConstraintPose } from "./PhysicsConstraintPose.js";
|
|
33
|
+
import type { Skeleton } from "./Skeleton.js";
|
|
31
34
|
/** Stores the setup pose for a {@link PhysicsConstraint}.
|
|
32
|
-
*
|
|
35
|
+
*
|
|
33
36
|
* See <a href="http://esotericsoftware.com/spine-physics-constraints">Physics constraints</a> in the Spine User Guide. */
|
|
34
|
-
export declare class PhysicsConstraintData extends ConstraintData {
|
|
35
|
-
private _bone;
|
|
37
|
+
export declare class PhysicsConstraintData extends ConstraintData<PhysicsConstraint, PhysicsConstraintPose> {
|
|
36
38
|
/** The bone constrained by this physics constraint. */
|
|
37
39
|
set bone(boneData: BoneData);
|
|
38
40
|
get bone(): BoneData;
|
|
41
|
+
private _bone;
|
|
42
|
+
/** Physics influence on x translation, 0-1. */
|
|
39
43
|
x: number;
|
|
44
|
+
/** Physics influence on y translation, 0-1. */
|
|
40
45
|
y: number;
|
|
46
|
+
/** Physics influence on rotation, 0-1. */
|
|
41
47
|
rotate: number;
|
|
48
|
+
/** Physics influence on scaleX, 0-1. */
|
|
42
49
|
scaleX: number;
|
|
50
|
+
/** Physics influence on shearX, 0-1. */
|
|
43
51
|
shearX: number;
|
|
52
|
+
/** Movement greater than the limit will not have a greater affect on physics. */
|
|
44
53
|
limit: number;
|
|
54
|
+
/** The time in milliseconds required to advanced the physics simulation one step. */
|
|
45
55
|
step: number;
|
|
46
|
-
inertia
|
|
47
|
-
strength: number;
|
|
48
|
-
damping: number;
|
|
49
|
-
massInverse: number;
|
|
50
|
-
wind: number;
|
|
51
|
-
gravity: number;
|
|
52
|
-
/** A percentage (0-1) that controls the mix between the constrained and unconstrained poses. */
|
|
53
|
-
mix: number;
|
|
56
|
+
/** True when this constraint's inertia is controlled by global slider timelines. */
|
|
54
57
|
inertiaGlobal: boolean;
|
|
58
|
+
/** True when this constraint's strength is controlled by global slider timelines. */
|
|
55
59
|
strengthGlobal: boolean;
|
|
60
|
+
/** True when this constraint's damping is controlled by global slider timelines. */
|
|
56
61
|
dampingGlobal: boolean;
|
|
62
|
+
/** True when this constraint's mass is controlled by global slider timelines. */
|
|
57
63
|
massGlobal: boolean;
|
|
64
|
+
/** True when this constraint's wind is controlled by global slider timelines. */
|
|
58
65
|
windGlobal: boolean;
|
|
66
|
+
/** True when this constraint's gravity is controlled by global slider timelines. */
|
|
59
67
|
gravityGlobal: boolean;
|
|
68
|
+
/** True when this constraint's mix is controlled by global slider timelines. */
|
|
60
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);
|
|
61
75
|
constructor(name: string);
|
|
76
|
+
create(skeleton: Skeleton): PhysicsConstraint;
|
|
62
77
|
}
|