@esotericsoftware/spine-core 4.2.116 → 4.3.0

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.
Files changed (129) hide show
  1. package/dist/Animation.d.ts +426 -274
  2. package/dist/Animation.js +1174 -1210
  3. package/dist/AnimationState.d.ts +246 -201
  4. package/dist/AnimationState.js +508 -471
  5. package/dist/AnimationStateData.d.ts +12 -10
  6. package/dist/AnimationStateData.js +19 -20
  7. package/dist/AssetManagerBase.d.ts +27 -21
  8. package/dist/AssetManagerBase.js +67 -43
  9. package/dist/AtlasAttachmentLoader.d.ts +18 -12
  10. package/dist/AtlasAttachmentLoader.js +28 -39
  11. package/dist/Bone.d.ts +15 -109
  12. package/dist/Bone.js +22 -362
  13. package/dist/BoneData.d.ts +13 -28
  14. package/dist/BoneData.js +20 -29
  15. package/dist/BonePose.d.ts +130 -0
  16. package/dist/BonePose.js +426 -0
  17. package/dist/Constraint.d.ts +41 -0
  18. package/dist/Constraint.js +38 -0
  19. package/dist/ConstraintData.d.ts +7 -5
  20. package/dist/ConstraintData.js +5 -9
  21. package/dist/DrawOrder.d.ts +48 -0
  22. package/dist/DrawOrder.js +64 -0
  23. package/dist/Event.d.ts +11 -6
  24. package/dist/Event.js +10 -5
  25. package/dist/EventData.d.ts +10 -6
  26. package/dist/EventData.js +18 -7
  27. package/dist/IkConstraint.d.ts +22 -28
  28. package/dist/IkConstraint.js +115 -117
  29. package/dist/IkConstraintData.d.ts +23 -18
  30. package/dist/IkConstraintData.js +32 -22
  31. package/dist/IkConstraintPose.d.ts +49 -0
  32. package/dist/IkConstraintPose.js +55 -0
  33. package/dist/PathConstraint.d.ts +18 -22
  34. package/dist/PathConstraint.js +160 -136
  35. package/dist/PathConstraintData.d.ts +11 -14
  36. package/dist/PathConstraintData.js +14 -16
  37. package/dist/PathConstraintPose.d.ts +43 -0
  38. package/dist/PathConstraintPose.js +49 -0
  39. package/dist/Physics.d.ts +39 -0
  40. package/dist/Physics.js +41 -0
  41. package/dist/PhysicsConstraint.d.ts +26 -30
  42. package/dist/PhysicsConstraint.js +102 -94
  43. package/dist/PhysicsConstraintData.d.ts +22 -12
  44. package/dist/PhysicsConstraintData.js +23 -12
  45. package/dist/PhysicsConstraintPose.d.ts +47 -0
  46. package/dist/PhysicsConstraintPose.js +55 -0
  47. package/dist/Pose.d.ts +33 -0
  48. package/dist/Pose.js +30 -0
  49. package/dist/Posed.d.ts +58 -0
  50. package/dist/Posed.js +78 -0
  51. package/dist/PosedActive.d.ts +41 -0
  52. package/dist/{attachments/HasTextureRegion.js → PosedActive.js} +17 -2
  53. package/dist/PosedData.d.ts +40 -0
  54. package/dist/PosedData.js +45 -0
  55. package/dist/Skeleton.d.ts +110 -99
  56. package/dist/Skeleton.js +271 -449
  57. package/dist/SkeletonBinary.d.ts +1 -1
  58. package/dist/SkeletonBinary.js +644 -466
  59. package/dist/SkeletonBounds.d.ts +4 -4
  60. package/dist/SkeletonBounds.js +45 -46
  61. package/dist/SkeletonClipping.d.ts +26 -22
  62. package/dist/SkeletonClipping.js +654 -340
  63. package/dist/SkeletonData.d.ts +18 -35
  64. package/dist/SkeletonData.js +57 -97
  65. package/dist/SkeletonJson.d.ts +8 -6
  66. package/dist/SkeletonJson.js +892 -641
  67. package/dist/SkeletonRendererCore.d.ts +58 -0
  68. package/dist/SkeletonRendererCore.js +310 -0
  69. package/dist/Skin.d.ts +20 -16
  70. package/dist/Skin.js +58 -53
  71. package/dist/Slider.d.ts +46 -0
  72. package/dist/Slider.js +115 -0
  73. package/dist/SliderData.d.ts +58 -0
  74. package/dist/SliderData.js +59 -0
  75. package/dist/SliderPose.d.ts +37 -0
  76. package/dist/SliderPose.js +40 -0
  77. package/dist/Slot.d.ts +16 -38
  78. package/dist/Slot.js +37 -60
  79. package/dist/SlotData.d.ts +5 -12
  80. package/dist/SlotData.js +7 -15
  81. package/dist/SlotPose.d.ts +59 -0
  82. package/dist/SlotPose.js +81 -0
  83. package/dist/Texture.d.ts +1 -0
  84. package/dist/Texture.js +2 -1
  85. package/dist/TextureAtlas.d.ts +3 -3
  86. package/dist/TextureAtlas.js +49 -49
  87. package/dist/TransformConstraint.d.ts +16 -28
  88. package/dist/TransformConstraint.js +72 -209
  89. package/dist/TransformConstraintData.d.ts +108 -20
  90. package/dist/TransformConstraintData.js +274 -24
  91. package/dist/TransformConstraintPose.d.ts +45 -0
  92. package/dist/TransformConstraintPose.js +52 -0
  93. package/dist/Triangulator.d.ts +1 -1
  94. package/dist/Triangulator.js +91 -107
  95. package/dist/{Updatable.d.ts → Update.d.ts} +5 -12
  96. package/dist/Update.js +30 -0
  97. package/dist/Utils.d.ts +12 -3
  98. package/dist/Utils.js +78 -37
  99. package/dist/attachments/Attachment.d.ts +27 -19
  100. package/dist/attachments/Attachment.js +59 -35
  101. package/dist/attachments/AttachmentLoader.d.ts +14 -14
  102. package/dist/attachments/AttachmentLoader.js +1 -1
  103. package/dist/attachments/BoundingBoxAttachment.d.ts +1 -1
  104. package/dist/attachments/BoundingBoxAttachment.js +2 -2
  105. package/dist/attachments/ClippingAttachment.d.ts +10 -3
  106. package/dist/attachments/ClippingAttachment.js +12 -3
  107. package/dist/attachments/{HasTextureRegion.d.ts → HasSequence.d.ts} +11 -14
  108. package/dist/attachments/HasSequence.js +30 -0
  109. package/dist/attachments/MeshAttachment.d.ts +28 -35
  110. package/dist/attachments/MeshAttachment.js +85 -97
  111. package/dist/attachments/PathAttachment.d.ts +3 -3
  112. package/dist/attachments/PathAttachment.js +6 -6
  113. package/dist/attachments/PointAttachment.d.ts +11 -6
  114. package/dist/attachments/PointAttachment.js +8 -3
  115. package/dist/attachments/RegionAttachment.d.ts +25 -27
  116. package/dist/attachments/RegionAttachment.js +101 -113
  117. package/dist/attachments/Sequence.d.ts +31 -6
  118. package/dist/attachments/Sequence.js +79 -13
  119. package/dist/esm/spine-core.min.mjs +2 -2
  120. package/dist/esm/spine-core.mjs +7651 -6090
  121. package/dist/esm/spine-core.mjs.map +4 -4
  122. package/dist/iife/spine-core.js +7651 -6090
  123. package/dist/iife/spine-core.js.map +4 -4
  124. package/dist/iife/spine-core.min.js +2 -2
  125. package/dist/index.d.ts +32 -11
  126. package/dist/index.js +33 -12
  127. package/dist/polyfills.js +4 -5
  128. package/package.json +1 -1
  129. package/dist/Updatable.js +0 -30
@@ -30,53 +30,99 @@ import { TextureAtlasRegion } from "../TextureAtlas.js";
30
30
  import { Color, Utils } from "../Utils.js";
31
31
  import { VertexAttachment } from "./Attachment.js";
32
32
  /** An attachment that displays a textured mesh. A mesh has hull vertices and internal vertices within the hull. Holes are not
33
- * supported. Each vertex has UVs (texture coordinates) and triangles are used to map an image on to the mesh.
33
+ * supported. Each vertex has UVs (texture coordinates) and triangles that are used to map an image on to the mesh.
34
34
  *
35
35
  * See [Mesh attachments](http://esotericsoftware.com/spine-meshes) in the Spine User Guide. */
36
36
  export class MeshAttachment extends VertexAttachment {
37
- region = null;
38
- /** The name of the texture region for this attachment. */
39
- path;
37
+ sequence;
40
38
  /** The UV pair for each vertex, normalized within the texture region. */
41
39
  regionUVs = [];
42
- /** The UV pair for each vertex, normalized within the entire texture.
43
- *
44
- * See {@link #updateUVs}. */
45
- uvs = [];
46
40
  /** Triplets of vertex indices which describe the mesh's triangulation. */
47
41
  triangles = [];
42
+ /** The number of entries at the beginning of {@link vertices} that make up the mesh hull. */
43
+ hullLength = 0;
44
+ /** The name of the texture region for this attachment. */
45
+ path;
48
46
  /** The color to tint the mesh. */
49
47
  color = new Color(1, 1, 1, 1);
48
+ sourceMesh = null;
49
+ /** Vertex index pairs describing edges for controlling triangulation, or null if nonessential data was not exported. Mesh
50
+ * triangles do not never cross edges. Triangulation is not performed at runtime. */
51
+ edges = [];
50
52
  /** The width of the mesh's image. Available only when nonessential data was exported. */
51
53
  width = 0;
52
54
  /** The height of the mesh's image. Available only when nonessential data was exported. */
53
55
  height = 0;
54
- /** The number of entries at the beginning of {@link #vertices} that make up the mesh hull. */
55
- hullLength = 0;
56
- /** Vertex index pairs describing edges for controling triangulation. Mesh triangles will never cross edges. Only available if
57
- * nonessential data was exported. Triangulation is not performed at runtime. */
58
- edges = [];
59
- parentMesh = null;
60
- sequence = null;
61
56
  tempColor = new Color(0, 0, 0, 0);
62
- constructor(name, path) {
57
+ constructor(name, sequence) {
63
58
  super(name);
64
- this.path = path;
59
+ this.sequence = sequence;
60
+ }
61
+ copy() {
62
+ if (this.sourceMesh)
63
+ return this.newLinkedMesh();
64
+ const copy = new MeshAttachment(this.name, this.sequence.copy());
65
+ copy.path = this.path;
66
+ copy.color.setFromColor(this.color);
67
+ this.copyTo(copy);
68
+ copy.regionUVs = [];
69
+ Utils.arrayCopy(this.regionUVs, 0, copy.regionUVs, 0, this.regionUVs.length);
70
+ copy.triangles = [];
71
+ Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length);
72
+ copy.hullLength = this.hullLength;
73
+ // Nonessential.
74
+ if (this.edges) {
75
+ copy.edges = [];
76
+ Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length);
77
+ }
78
+ copy.width = this.width;
79
+ copy.height = this.height;
80
+ return copy;
81
+ }
82
+ updateSequence() {
83
+ this.sequence.update(this);
84
+ }
85
+ /** The source mesh if this is a linked mesh, else null. A linked mesh shares the {@link bones}, {@link vertices},
86
+ * {@link regionUVs}, {@link triangles}, {@link hullLength}, {@link edges}, {@link width}, and {@link height} with the
87
+ * source mesh, but may have a different {@link name} or {@link path}, and therefore a different texture region. */
88
+ getSourceMesh() {
89
+ return this.sourceMesh;
90
+ }
91
+ setSourceMesh(sourceMesh) {
92
+ this.sourceMesh = sourceMesh;
93
+ if (sourceMesh) {
94
+ this.bones = sourceMesh.bones;
95
+ this.vertices = sourceMesh.vertices;
96
+ this.worldVerticesLength = sourceMesh.worldVerticesLength;
97
+ this.regionUVs = sourceMesh.regionUVs;
98
+ this.triangles = sourceMesh.triangles;
99
+ this.hullLength = sourceMesh.hullLength;
100
+ this.worldVerticesLength = sourceMesh.worldVerticesLength;
101
+ this.edges = sourceMesh.edges;
102
+ this.width = sourceMesh.width;
103
+ this.height = sourceMesh.height;
104
+ }
105
+ }
106
+ /** Returns a new mesh with the {@link sourceMesh} set to this mesh's source mesh, if any, else to this mesh. **/
107
+ newLinkedMesh() {
108
+ const copy = new MeshAttachment(this.name, this.sequence.copy());
109
+ copy.timelineAttachment = this.timelineAttachment;
110
+ copy.path = this.path;
111
+ copy.color.setFromColor(this.color);
112
+ copy.setSourceMesh(this.sourceMesh ? this.sourceMesh : this);
113
+ copy.updateSequence();
114
+ return copy;
65
115
  }
66
- /** Calculates {@link #uvs} using the {@link #regionUVs} and region. Must be called if the region, the region's properties, or
67
- * the {@link #regionUVs} are changed. */
68
- updateRegion() {
69
- if (!this.region)
116
+ /** Computes {@link Sequence.getUVs | UVs} for a mesh attachment.
117
+ * @param uvs Output array for the computed UVs, same length as regionUVs. */
118
+ static computeUVs(region, regionUVs, uvs) {
119
+ if (!region)
70
120
  throw new Error("Region not set.");
71
- let regionUVs = this.regionUVs;
72
- if (!this.uvs || this.uvs.length != regionUVs.length)
73
- this.uvs = Utils.newFloatArray(regionUVs.length);
74
- let uvs = this.uvs;
75
- let n = this.uvs.length;
76
- let u = this.region.u, v = this.region.v, width = 0, height = 0;
77
- if (this.region instanceof TextureAtlasRegion) {
78
- let region = this.region, page = region.page;
79
- let textureWidth = page.width, textureHeight = page.height;
121
+ const n = uvs.length;
122
+ let u = region.u, v = region.v, width = 0, height = 0;
123
+ if (region instanceof TextureAtlasRegion) {
124
+ const page = region.page;
125
+ const textureWidth = page.width, textureHeight = page.height;
80
126
  switch (region.degrees) {
81
127
  case 90:
82
128
  u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;
@@ -108,83 +154,25 @@ export class MeshAttachment extends VertexAttachment {
108
154
  uvs[i + 1] = v + regionUVs[i] * height;
109
155
  }
110
156
  return;
157
+ default:
158
+ u -= region.offsetX / textureWidth;
159
+ v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
160
+ width = region.originalWidth / textureWidth;
161
+ height = region.originalHeight / textureHeight;
111
162
  }
112
- u -= region.offsetX / textureWidth;
113
- v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
114
- width = region.originalWidth / textureWidth;
115
- height = region.originalHeight / textureHeight;
116
163
  }
117
- else if (!this.region) {
164
+ else if (!region) {
118
165
  u = v = 0;
119
166
  width = height = 1;
120
167
  }
121
168
  else {
122
- width = this.region.u2 - u;
123
- height = this.region.v2 - v;
169
+ width = region.u2 - u;
170
+ height = region.v2 - v;
124
171
  }
125
172
  for (let i = 0; i < n; i += 2) {
126
173
  uvs[i] = u + regionUVs[i] * width;
127
174
  uvs[i + 1] = v + regionUVs[i + 1] * height;
128
175
  }
129
176
  }
130
- /** The parent mesh if this is a linked mesh, else null. A linked mesh shares the {@link #bones}, {@link #vertices},
131
- * {@link #regionUVs}, {@link #triangles}, {@link #hullLength}, {@link #edges}, {@link #width}, and {@link #height} with the
132
- * parent mesh, but may have a different {@link #name} or {@link #path} (and therefore a different texture). */
133
- getParentMesh() {
134
- return this.parentMesh;
135
- }
136
- /** @param parentMesh May be null. */
137
- setParentMesh(parentMesh) {
138
- this.parentMesh = parentMesh;
139
- if (parentMesh) {
140
- this.bones = parentMesh.bones;
141
- this.vertices = parentMesh.vertices;
142
- this.worldVerticesLength = parentMesh.worldVerticesLength;
143
- this.regionUVs = parentMesh.regionUVs;
144
- this.triangles = parentMesh.triangles;
145
- this.hullLength = parentMesh.hullLength;
146
- this.worldVerticesLength = parentMesh.worldVerticesLength;
147
- }
148
- }
149
- copy() {
150
- if (this.parentMesh)
151
- return this.newLinkedMesh();
152
- let copy = new MeshAttachment(this.name, this.path);
153
- copy.region = this.region;
154
- copy.color.setFromColor(this.color);
155
- this.copyTo(copy);
156
- copy.regionUVs = new Array(this.regionUVs.length);
157
- Utils.arrayCopy(this.regionUVs, 0, copy.regionUVs, 0, this.regionUVs.length);
158
- copy.uvs = this.uvs instanceof Float32Array ? Utils.newFloatArray(this.uvs.length) : new Array(this.uvs.length);
159
- Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, this.uvs.length);
160
- copy.triangles = new Array(this.triangles.length);
161
- Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length);
162
- copy.hullLength = this.hullLength;
163
- copy.sequence = this.sequence != null ? this.sequence.copy() : null;
164
- // Nonessential.
165
- if (this.edges) {
166
- copy.edges = new Array(this.edges.length);
167
- Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length);
168
- }
169
- copy.width = this.width;
170
- copy.height = this.height;
171
- return copy;
172
- }
173
- computeWorldVertices(slot, start, count, worldVertices, offset, stride) {
174
- if (this.sequence != null)
175
- this.sequence.apply(slot, this);
176
- super.computeWorldVertices(slot, start, count, worldVertices, offset, stride);
177
- }
178
- /** Returns a new mesh with the {@link #parentMesh} set to this mesh's parent mesh, if any, else to this mesh. **/
179
- newLinkedMesh() {
180
- let copy = new MeshAttachment(this.name, this.path);
181
- copy.region = this.region;
182
- copy.color.setFromColor(this.color);
183
- copy.timelineAttachment = this.timelineAttachment;
184
- copy.setParentMesh(this.parentMesh ? this.parentMesh : this);
185
- if (copy.region != null)
186
- copy.updateRegion();
187
- return copy;
188
- }
189
177
  }
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVzaEF0dGFjaG1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXR0YWNobWVudHMvTWVzaEF0dGFjaG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxLQUFLLEVBQW1CLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWMsTUFBTSxpQkFBaUIsQ0FBQztBQUsvRDs7OytGQUcrRjtBQUMvRixNQUFNLE9BQU8sY0FBZSxTQUFRLGdCQUFnQjtJQUNuRCxNQUFNLEdBQXlCLElBQUksQ0FBQztJQUVwQywwREFBMEQ7SUFDMUQsSUFBSSxDQUFTO0lBRWIseUVBQXlFO0lBQ3pFLFNBQVMsR0FBb0IsRUFBRSxDQUFDO0lBRWhDOztpQ0FFNkI7SUFDN0IsR0FBRyxHQUFvQixFQUFFLENBQUM7SUFFMUIsMEVBQTBFO0lBQzFFLFNBQVMsR0FBa0IsRUFBRSxDQUFDO0lBRTlCLGtDQUFrQztJQUNsQyxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFOUIseUZBQXlGO0lBQ3pGLEtBQUssR0FBVyxDQUFDLENBQUM7SUFFbEIsMEZBQTBGO0lBQzFGLE1BQU0sR0FBVyxDQUFDLENBQUM7SUFFbkIsOEZBQThGO0lBQzlGLFVBQVUsR0FBVyxDQUFDLENBQUM7SUFFdkI7b0ZBQ2dGO0lBQ2hGLEtBQUssR0FBa0IsRUFBRSxDQUFDO0lBRWxCLFVBQVUsR0FBMEIsSUFBSSxDQUFDO0lBRWpELFFBQVEsR0FBb0IsSUFBSSxDQUFDO0lBRWpDLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxD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LEtBQWEsRUFBRSxhQUE4QixFQUFFLE1BQWMsRUFBRSxNQUFjO1FBQzdILElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJO1lBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxrSEFBa0g7SUFDbEgsYUFBYTtRQUNaLElBQUksSUFBSSxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJO1lBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBUZXh0dXJlUmVnaW9uIH0gZnJvbSBcIi4uL1RleHR1cmUuanNcIjtcbmltcG9ydCB7IFRleHR1cmVBdGxhc1JlZ2lvbiB9IGZyb20gXCIuLi9UZXh0dXJlQXRsYXMuanNcIjtcbmltcG9ydCB7IENvbG9yLCBOdW1iZXJBcnJheUxpa2UsIFV0aWxzIH0gZnJvbSBcIi4uL1V0aWxzLmpzXCI7XG5pbXBvcnQgeyBWZXJ0ZXhBdHRhY2htZW50LCBBdHRhY2htZW50IH0gZnJvbSBcIi4vQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgSGFzVGV4dHVyZVJlZ2lvbiB9IGZyb20gXCIuL0hhc1RleHR1cmVSZWdpb24uanNcIjtcbmltcG9ydCB7IFNlcXVlbmNlIH0gZnJvbSBcIi4vU2VxdWVuY2UuanNcIjtcbmltcG9ydCB7IFNsb3QgfSBmcm9tIFwiLi4vU2xvdC5qc1wiO1xuXG4vKiogQW4gYXR0YWNobWVudCB0aGF0IGRpc3BsYXlzIGEgdGV4dHVyZWQgbWVzaC4gQSBtZXNoIGhhcyBodWxsIHZlcnRpY2VzIGFuZCBpbnRlcm5hbCB2ZXJ0aWNlcyB3aXRoaW4gdGhlIGh1bGwuIEhvbGVzIGFyZSBub3RcbiAqIHN1cHBvcnRlZC4gRWFjaCB2ZXJ0ZXggaGFzIFVWcyAodGV4dHVyZSBjb29yZGluYXRlcykgYW5kIHRyaWFuZ2xlcyBhcmUgdXNlZCB0byBtYXAgYW4gaW1hZ2Ugb24gdG8gdGhlIG1lc2guXG4gKlxuICogU2VlIFtNZXNoIGF0dGFjaG1lbnRzXShodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtbWVzaGVzKSBpbiB0aGUgU3BpbmUgVXNlciBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBNZXNoQXR0YWNobWVudCBleHRlbmRzIFZlcnRleEF0dGFjaG1lbnQgaW1wbGVtZW50cyBIYXNUZXh0dXJlUmVnaW9uIHtcblx0cmVnaW9uOiBUZXh0dXJlUmVnaW9uIHwgbnVsbCA9IG51bGw7XG5cblx0LyoqIFRoZSBuYW1lIG9mIHRoZSB0ZXh0dXJlIHJlZ2lvbiBmb3IgdGhpcyBhdHRhY2htZW50LiAqL1xuXHRwYXRoOiBzdHJpbmc7XG5cblx0LyoqIFRoZSBVViBwYWlyIGZvciBlYWNoIHZlcnRleCwgbm9ybWFsaXplZCB3aXRoaW4gdGhlIHRleHR1cmUgcmVnaW9uLiAqL1xuXHRyZWdpb25VVnM6IE51bWJlckFycmF5TGlrZSA9IFtdO1xuXG5cdC8qKiBUaGUgVVYgcGFpciBmb3IgZWFjaCB2ZXJ0ZXgsIG5vcm1hbGl6ZWQgd2l0aGluIHRoZSBlbnRpcmUgdGV4dHVyZS5cblx0ICpcblx0ICogU2VlIHtAbGluayAjdXBkYXRlVVZzfS4gKi9cblx0dXZzOiBOdW1iZXJBcnJheUxpa2UgPSBbXTtcblxuXHQvKiogVHJpcGxldHMgb2YgdmVydGV4IGluZGljZXMgd2hpY2ggZGVzY3JpYmUgdGhlIG1lc2gncyB0cmlhbmd1bGF0aW9uLiAqL1xuXHR0cmlhbmdsZXM6IEFycmF5PG51bWJlcj4gPSBbXTtcblxuXHQvKiogVGhlIGNvbG9yIHRvIHRpbnQgdGhlIG1lc2guICovXG5cdGNvbG9yID0gbmV3IENvbG9yKDEsIDEsIDEsIDEpO1xuXG5cdC8qKiBUaGUgd2lkdGggb2YgdGhlIG1lc2gncyBpbWFnZS4gQXZhaWxhYmxlIG9ubHkgd2hlbiBub25lc3NlbnRpYWwgZGF0YSB3YXMgZXhwb3J0ZWQuICovXG5cdHdpZHRoOiBudW1iZXIgPSAwO1xuXG5cdC8qKiBUaGUgaGVpZ2h0IG9mIHRoZSBtZXNoJ3MgaW1hZ2UuIEF2YWlsYWJsZSBvbmx5IHdoZW4gbm9uZXNzZW50aWFsIGRhdGEgd2FzIGV4cG9ydGVkLiAqL1xuXHRoZWlnaHQ6IG51bWJlciA9IDA7XG5cblx0LyoqIFRoZSBudW1iZXIgb2YgZW50cmllcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHtAbGluayAjdmVydGljZXN9IHRoYXQgbWFrZSB1cCB0aGUgbWVzaCBodWxsLiAqL1xuXHRodWxsTGVuZ3RoOiBudW1iZXIgPSAwO1xuXG5cdC8qKiBWZXJ0ZXggaW5kZXggcGFpcnMgZGVzY3JpYmluZyBlZGdlcyBmb3IgY29udHJvbGluZyB0cmlhbmd1bGF0aW9uLiBNZXNoIHRyaWFuZ2xlcyB3aWxsIG5ldmVyIGNyb3NzIGVkZ2VzLiBPbmx5IGF2YWlsYWJsZSBpZlxuXHQgKiBub25lc3NlbnRpYWwgZGF0YSB3YXMgZXhwb3J0ZWQuIFRyaWFuZ3VsYXRpb24gaXMgbm90IHBlcmZvcm1lZCBhdCBydW50aW1lLiAqL1xuXHRlZGdlczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuXG5cdHByaXZhdGUgcGFyZW50TWVzaDogTWVzaEF0dGFjaG1lbnQgfCBudWxsID0gbnVsbDtcblxuXHRzZXF1ZW5jZTogU2VxdWVuY2UgfCBudWxsID0gbnVsbDtcblxuXHR0ZW1wQ29sb3IgPSBuZXcgQ29sb3IoMCwgMCwgMCwgMCk7XG5cblx0Y29uc3RydWN0b3IgKG5hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cdFx0dGhpcy5wYXRoID0gcGF0aDtcblx0fVxuXG5cdC8qKiBDYWxjdWxhdGVzIHtAbGluayAjdXZzfSB1c2luZyB0aGUge0BsaW5rICNyZWdpb25VVnN9IGFuZCByZWdpb24uIE11c3QgYmUgY2FsbGVkIGlmIHRoZSByZWdpb24sIHRoZSByZWdpb24ncyBwcm9wZXJ0aWVzLCBvclxuXHQgKiB0aGUge0BsaW5rICNyZWdpb25VVnN9IGFyZSBjaGFuZ2VkLiAqL1xuXHR1cGRhdGVSZWdpb24gKCkge1xuXHRcdGlmICghdGhpcy5yZWdpb24pIHRocm93IG5ldyBFcnJvcihcIlJlZ2lvbiBub3Qgc2V0LlwiKTtcblx0XHRsZXQgcmVnaW9uVVZzID0gdGhpcy5yZWdpb25VVnM7XG5cdFx0aWYgKCF0aGlzLnV2cyB8fCB0aGlzLnV2cy5sZW5ndGggIT0gcmVnaW9uVVZzLmxlbmd0aCkgdGhpcy51dnMgPSBVdGlscy5uZXdGbG9hdEFycmF5KHJlZ2lvblVWcy5sZW5ndGgpO1xuXHRcdGxldCB1dnMgPSB0aGlzLnV2cztcblx0XHRsZXQgbiA9IHRoaXMudXZzLmxlbmd0aDtcblx0XHRsZXQgdSA9IHRoaXMucmVnaW9uLnUsIHYgPSB0aGlzLnJlZ2lvbi52LCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7XG5cdFx0aWYgKHRoaXMucmVnaW9uIGluc3RhbmNlb2YgVGV4dHVyZUF0bGFzUmVnaW9uKSB7XG5cdFx0XHRsZXQgcmVnaW9uID0gdGhpcy5yZWdpb24sIHBhZ2UgPSByZWdpb24ucGFnZTtcblx0XHRcdGxldCB0ZXh0dXJlV2lkdGggPSBwYWdlLndpZHRoLCB0ZXh0dXJlSGVpZ2h0ID0gcGFnZS5oZWlnaHQ7XG5cdFx0XHRzd2l0Y2ggKHJlZ2lvbi5kZWdyZWVzKSB7XG5cdFx0XHRcdGNhc2UgOTA6XG5cdFx0XHRcdFx0dSAtPSAocmVnaW9uLm9yaWdpbmFsSGVpZ2h0IC0gcmVnaW9uLm9mZnNldFkgLSByZWdpb24uaGVpZ2h0KSAvIHRleHR1cmVXaWR0aDtcblx0XHRcdFx0XHR2IC09IChyZWdpb24ub3JpZ2luYWxXaWR0aCAtIHJlZ2lvbi5vZmZzZXRYIC0gcmVnaW9uLndpZHRoKSAvIHRleHR1cmVIZWlnaHQ7XG5cdFx0XHRcdFx0d2lkdGggPSByZWdpb24ub3JpZ2luYWxIZWlnaHQgLyB0ZXh0dXJlV2lkdGg7XG5cdFx0XHRcdFx0aGVpZ2h0ID0gcmVnaW9uLm9yaWdpbmFsV2lkdGggLyB0ZXh0dXJlSGVpZ2h0O1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSArPSAyKSB7XG5cdFx0XHRcdFx0XHR1dnNbaV0gPSB1ICsgcmVnaW9uVVZzW2kgKyAxXSAqIHdpZHRoO1xuXHRcdFx0XHRcdFx0dXZzW2kgKyAxXSA9IHYgKyAoMSAtIHJlZ2lvblVWc1tpXSkgKiBoZWlnaHQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0Y2FzZSAxODA6XG5cdFx0XHRcdFx0dSAtPSAocmVnaW9uLm9yaWdpbmFsV2lkdGggLSByZWdpb24ub2Zmc2V0WCAtIHJlZ2lvbi53aWR0aCkgLyB0ZXh0dXJlV2lkdGg7XG5cdFx0XHRcdFx0diAtPSByZWdpb24ub2Zmc2V0WSAvIHRleHR1cmVIZWlnaHQ7XG5cdFx0XHRcdFx0d2lkdGggPSByZWdpb24ub3JpZ2luYWxXaWR0aCAvIHRleHR1cmVXaWR0aDtcblx0XHRcdFx0XHRoZWlnaHQgPSByZWdpb24ub3JpZ2luYWxIZWlnaHQgLyB0ZXh0dXJlSGVpZ2h0O1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSArPSAyKSB7XG5cdFx0XHRcdFx0XHR1dnNbaV0gPSB1ICsgKDEgLSByZWdpb25VVnNbaV0pICogd2lkdGg7XG5cdFx0XHRcdFx0XHR1dnNbaSArIDFdID0gdiArICgxIC0gcmVnaW9uVVZzW2kgKyAxXSkgKiBoZWlnaHQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0Y2FzZSAyNzA6XG5cdFx0XHRcdFx0dSAtPSByZWdpb24ub2Zmc2V0WSAvIHRleHR1cmVXaWR0aDtcblx0XHRcdFx0XHR2IC09IHJlZ2lvbi5vZmZzZXRYIC8gdGV4dHVyZUhlaWdodDtcblx0XHRcdFx0XHR3aWR0aCA9IHJlZ2lvbi5vcmlnaW5hbEhlaWdodCAvIHRleHR1cmVXaWR0aDtcblx0XHRcdFx0XHRoZWlnaHQgPSByZWdpb24ub3JpZ2luYWxXaWR0aCAvIHRleHR1cmVIZWlnaHQ7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdFx0XHRcdHV2c1tpXSA9IHUgKyAoMSAtIHJlZ2lvblVWc1tpICsgMV0pICogd2lkdGg7XG5cdFx0XHRcdFx0XHR1dnNbaSArIDFdID0gdiArIHJlZ2lvblVWc1tpXSAqIGhlaWdodDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dSAtPSByZWdpb24ub2Zmc2V0WCAvIHRleHR1cmVXaWR0aDtcblx0XHRcdHYgLT0gKHJlZ2lvbi5vcmlnaW5hbEhlaWdodCAtIHJlZ2lvbi5vZmZzZXRZIC0gcmVnaW9uLmhlaWdodCkgLyB0ZXh0dXJlSGVpZ2h0O1xuXHRcdFx0d2lkdGggPSByZWdpb24ub3JpZ2luYWxXaWR0aCAvIHRleHR1cmVXaWR0aDtcblx0XHRcdGhlaWdodCA9IHJlZ2lvbi5vcmlnaW5hbEhlaWdodCAvIHRleHR1cmVIZWlnaHQ7XG5cdFx0fSBlbHNlIGlmICghdGhpcy5yZWdpb24pIHtcblx0XHRcdHUgPSB2ID0gMDtcblx0XHRcdHdpZHRoID0gaGVpZ2h0ID0gMTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0d2lkdGggPSB0aGlzLnJlZ2lvbi51MiAtIHU7XG5cdFx0XHRoZWlnaHQgPSB0aGlzLnJlZ2lvbi52MiAtIHY7XG5cdFx0fVxuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdHV2c1tpXSA9IHUgKyByZWdpb25VVnNbaV0gKiB3aWR0aDtcblx0XHRcdHV2c1tpICsgMV0gPSB2ICsgcmVnaW9uVVZzW2kgKyAxXSAqIGhlaWdodDtcblx0XHR9XG5cdH1cblxuXHQvKiogVGhlIHBhcmVudCBtZXNoIGlmIHRoaXMgaXMgYSBsaW5rZWQgbWVzaCwgZWxzZSBudWxsLiBBIGxpbmtlZCBtZXNoIHNoYXJlcyB0aGUge0BsaW5rICNib25lc30sIHtAbGluayAjdmVydGljZXN9LFxuXHQgKiB7QGxpbmsgI3JlZ2lvblVWc30sIHtAbGluayAjdHJpYW5nbGVzfSwge0BsaW5rICNodWxsTGVuZ3RofSwge0BsaW5rICNlZGdlc30sIHtAbGluayAjd2lkdGh9LCBhbmQge0BsaW5rICNoZWlnaHR9IHdpdGggdGhlXG5cdCAqIHBhcmVudCBtZXNoLCBidXQgbWF5IGhhdmUgYSBkaWZmZXJlbnQge0BsaW5rICNuYW1lfSBvciB7QGxpbmsgI3BhdGh9IChhbmQgdGhlcmVmb3JlIGEgZGlmZmVyZW50IHRleHR1cmUpLiAqL1xuXHRnZXRQYXJlbnRNZXNoICgpIHtcblx0XHRyZXR1cm4gdGhpcy5wYXJlbnRNZXNoO1xuXHR9XG5cblx0LyoqIEBwYXJhbSBwYXJlbnRNZXNoIE1heSBiZSBudWxsLiAqL1xuXHRzZXRQYXJlbnRNZXNoIChwYXJlbnRNZXNoOiBNZXNoQXR0YWNobWVudCkge1xuXHRcdHRoaXMucGFyZW50TWVzaCA9IHBhcmVudE1lc2g7XG5cdFx0aWYgKHBhcmVudE1lc2gpIHtcblx0XHRcdHRoaXMuYm9uZXMgPSBwYXJlbnRNZXNoLmJvbmVzO1xuXHRcdFx0dGhpcy52ZXJ0aWNlcyA9IHBhcmVudE1lc2gudmVydGljZXM7XG5cdFx0XHR0aGlzLndvcmxkVmVydGljZXNMZW5ndGggPSBwYXJlbnRNZXNoLndvcmxkVmVydGljZXNMZW5ndGg7XG5cdFx0XHR0aGlzLnJlZ2lvblVWcyA9IHBhcmVudE1lc2gucmVnaW9uVVZzO1xuXHRcdFx0dGhpcy50cmlhbmdsZXMgPSBwYXJlbnRNZXNoLnRyaWFuZ2xlcztcblx0XHRcdHRoaXMuaHVsbExlbmd0aCA9IHBhcmVudE1lc2guaHVsbExlbmd0aDtcblx0XHRcdHRoaXMud29ybGRWZXJ0aWNlc0xlbmd0aCA9IHBhcmVudE1lc2gud29ybGRWZXJ0aWNlc0xlbmd0aFxuXHRcdH1cblx0fVxuXG5cdGNvcHkgKCk6IEF0dGFjaG1lbnQge1xuXHRcdGlmICh0aGlzLnBhcmVudE1lc2gpIHJldHVybiB0aGlzLm5ld0xpbmtlZE1lc2goKTtcblxuXHRcdGxldCBjb3B5ID0gbmV3IE1lc2hBdHRhY2htZW50KHRoaXMubmFtZSwgdGhpcy5wYXRoKTtcblx0XHRjb3B5LnJlZ2lvbiA9IHRoaXMucmVnaW9uO1xuXHRcdGNvcHkuY29sb3Iuc2V0RnJvbUNvbG9yKHRoaXMuY29sb3IpO1xuXG5cdFx0dGhpcy5jb3B5VG8oY29weSk7XG5cdFx0Y29weS5yZWdpb25VVnMgPSBuZXcgQXJyYXk8bnVtYmVyPih0aGlzLnJlZ2lvblVWcy5sZW5ndGgpO1xuXHRcdFV0aWxzLmFycmF5Q29weSh0aGlzLnJlZ2lvblVWcywgMCwgY29weS5yZWdpb25VVnMsIDAsIHRoaXMucmVnaW9uVVZzLmxlbmd0aCk7XG5cdFx0Y29weS51dnMgPSB0aGlzLnV2cyBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSA/IFV0aWxzLm5ld0Zsb2F0QXJyYXkodGhpcy51dnMubGVuZ3RoKSA6IG5ldyBBcnJheTxudW1iZXI+KHRoaXMudXZzLmxlbmd0aCk7XG5cdFx0VXRpbHMuYXJyYXlDb3B5KHRoaXMudXZzLCAwLCBjb3B5LnV2cywgMCwgdGhpcy51dnMubGVuZ3RoKTtcblx0XHRjb3B5LnRyaWFuZ2xlcyA9IG5ldyBBcnJheTxudW1iZXI+KHRoaXMudHJpYW5nbGVzLmxlbmd0aCk7XG5cdFx0VXRpbHMuYXJyYXlDb3B5KHRoaXMudHJpYW5nbGVzLCAwLCBjb3B5LnRyaWFuZ2xlcywgMCwgdGhpcy50cmlhbmdsZXMubGVuZ3RoKTtcblx0XHRjb3B5Lmh1bGxMZW5ndGggPSB0aGlzLmh1bGxMZW5ndGg7XG5cblx0XHRjb3B5LnNlcXVlbmNlID0gdGhpcy5zZXF1ZW5jZSAhPSBudWxsID8gdGhpcy5zZXF1ZW5jZS5jb3B5KCkgOiBudWxsO1xuXG5cdFx0Ly8gTm9uZXNzZW50aWFsLlxuXHRcdGlmICh0aGlzLmVkZ2VzKSB7XG5cdFx0XHRjb3B5LmVkZ2VzID0gbmV3IEFycmF5PG51bWJlcj4odGhpcy5lZGdlcy5sZW5ndGgpO1xuXHRcdFx0VXRpbHMuYXJyYXlDb3B5KHRoaXMuZWRnZXMsIDAsIGNvcHkuZWRnZXMsIDAsIHRoaXMuZWRnZXMubGVuZ3RoKTtcblx0XHR9XG5cdFx0Y29weS53aWR0aCA9IHRoaXMud2lkdGg7XG5cdFx0Y29weS5oZWlnaHQgPSB0aGlzLmhlaWdodDtcblxuXHRcdHJldHVybiBjb3B5O1xuXHR9XG5cblx0Y29tcHV0ZVdvcmxkVmVydGljZXMgKHNsb3Q6IFNsb3QsIHN0YXJ0OiBudW1iZXIsIGNvdW50OiBudW1iZXIsIHdvcmxkVmVydGljZXM6IE51bWJlckFycmF5TGlrZSwgb2Zmc2V0OiBudW1iZXIsIHN0cmlkZTogbnVtYmVyKSB7XG5cdFx0aWYgKHRoaXMuc2VxdWVuY2UgIT0gbnVsbCkgdGhpcy5zZXF1ZW5jZS5hcHBseShzbG90LCB0aGlzKTtcblx0XHRzdXBlci5jb21wdXRlV29ybGRWZXJ0aWNlcyhzbG90LCBzdGFydCwgY291bnQsIHdvcmxkVmVydGljZXMsIG9mZnNldCwgc3RyaWRlKTtcblx0fVxuXG5cdC8qKiBSZXR1cm5zIGEgbmV3IG1lc2ggd2l0aCB0aGUge0BsaW5rICNwYXJlbnRNZXNofSBzZXQgdG8gdGhpcyBtZXNoJ3MgcGFyZW50IG1lc2gsIGlmIGFueSwgZWxzZSB0byB0aGlzIG1lc2guICoqL1xuXHRuZXdMaW5rZWRNZXNoICgpOiBNZXNoQXR0YWNobWVudCB7XG5cdFx0bGV0IGNvcHkgPSBuZXcgTWVzaEF0dGFjaG1lbnQodGhpcy5uYW1lLCB0aGlzLnBhdGgpO1xuXHRcdGNvcHkucmVnaW9uID0gdGhpcy5yZWdpb247XG5cdFx0Y29weS5jb2xvci5zZXRGcm9tQ29sb3IodGhpcy5jb2xvcik7XG5cdFx0Y29weS50aW1lbGluZUF0dGFjaG1lbnQgPSB0aGlzLnRpbWVsaW5lQXR0YWNobWVudDtcblx0XHRjb3B5LnNldFBhcmVudE1lc2godGhpcy5wYXJlbnRNZXNoID8gdGhpcy5wYXJlbnRNZXNoIDogdGhpcyk7XG5cdFx0aWYgKGNvcHkucmVnaW9uICE9IG51bGwpIGNvcHkudXBkYXRlUmVnaW9uKCk7XG5cdFx0cmV0dXJuIGNvcHk7XG5cdH1cbn1cbiJdfQ==
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVzaEF0dGFjaG1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXR0YWNobWVudHMvTWVzaEF0dGFjaG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxLQUFLLEVBQXdCLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUluRDs7OytGQUcrRjtBQUMvRixNQUFNLE9BQU8sY0FBZSxTQUFRLGdCQUFnQjtJQUMxQyxRQUFRLENBQVc7SUFFNUIseUVBQXlFO0lBQ3pFLFNBQVMsR0FBb0IsRUFBRSxDQUFDO0lBRWhDLDBFQUEwRTtJQUMxRSxTQUFTLEdBQWtCLEVBQUUsQ0FBQztJQUU5Qiw2RkFBNkY7SUFDN0YsVUFBVSxHQUFXLENBQUMsQ0FBQztJQUV2QiwwREFBMEQ7SUFDMUQsSUFBSSxDQUFVO0lBRWQsa0NBQWtDO0lBQ2xDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV0QixVQUFVLEdBQTBCLElBQUksQ0FBQztJQUVqRDt3RkFDb0Y7SUFDcEYsS0FBSyxHQUFrQixFQUFFLENBQUM7SUFFMUIseUZBQXlGO0lBQ3pGLEtBQUssR0FBVyxDQUFDLENBQUM7SUFFbEIsMEZBQTBGO0lBQzFGLE1BQU0sR0FBVyxDQUFDLENBQUM7SUFFbkIsU0FBUyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRWxDLFlBQWEsSUFBWSxFQUFFLFFBQWtCO1FBQzVDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLElB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QUssR0FBRyxNQUFNLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztvQkFDNUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1lBQ2pELENBQUM7UUFDRixDQUFDO2FBQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ1YsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQzthQUFNLENBQUM7WUFDUCxLQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvQixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDbEMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDNUMsQ0FBQztJQUNGLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBUZXh0dXJlUmVnaW9uIH0gZnJvbSBcIi4uL1RleHR1cmUuanNcIjtcbmltcG9ydCB7IFRleHR1cmVBdGxhc1JlZ2lvbiB9IGZyb20gXCIuLi9UZXh0dXJlQXRsYXMuanNcIjtcbmltcG9ydCB7IENvbG9yLCB0eXBlIE51bWJlckFycmF5TGlrZSwgVXRpbHMgfSBmcm9tIFwiLi4vVXRpbHMuanNcIjtcbmltcG9ydCB7IFZlcnRleEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9BdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEhhc1NlcXVlbmNlIH0gZnJvbSBcIi4vSGFzU2VxdWVuY2UuanNcIjtcbmltcG9ydCB0eXBlIHsgU2VxdWVuY2UgfSBmcm9tIFwiLi9TZXF1ZW5jZS5qc1wiO1xuXG4vKiogQW4gYXR0YWNobWVudCB0aGF0IGRpc3BsYXlzIGEgdGV4dHVyZWQgbWVzaC4gQSBtZXNoIGhhcyBodWxsIHZlcnRpY2VzIGFuZCBpbnRlcm5hbCB2ZXJ0aWNlcyB3aXRoaW4gdGhlIGh1bGwuIEhvbGVzIGFyZSBub3RcbiAqIHN1cHBvcnRlZC4gRWFjaCB2ZXJ0ZXggaGFzIFVWcyAodGV4dHVyZSBjb29yZGluYXRlcykgYW5kIHRyaWFuZ2xlcyB0aGF0IGFyZSB1c2VkIHRvIG1hcCBhbiBpbWFnZSBvbiB0byB0aGUgbWVzaC5cbiAqXG4gKiBTZWUgW01lc2ggYXR0YWNobWVudHNdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1tZXNoZXMpIGluIHRoZSBTcGluZSBVc2VyIEd1aWRlLiAqL1xuZXhwb3J0IGNsYXNzIE1lc2hBdHRhY2htZW50IGV4dGVuZHMgVmVydGV4QXR0YWNobWVudCBpbXBsZW1lbnRzIEhhc1NlcXVlbmNlIHtcblx0cmVhZG9ubHkgc2VxdWVuY2U6IFNlcXVlbmNlO1xuXG5cdC8qKiBUaGUgVVYgcGFpciBmb3IgZWFjaCB2ZXJ0ZXgsIG5vcm1hbGl6ZWQgd2l0aGluIHRoZSB0ZXh0dXJlIHJlZ2lvbi4gKi9cblx0cmVnaW9uVVZzOiBOdW1iZXJBcnJheUxpa2UgPSBbXTtcblxuXHQvKiogVHJpcGxldHMgb2YgdmVydGV4IGluZGljZXMgd2hpY2ggZGVzY3JpYmUgdGhlIG1lc2gncyB0cmlhbmd1bGF0aW9uLiAqL1xuXHR0cmlhbmdsZXM6IEFycmF5PG51bWJlcj4gPSBbXTtcblxuXHQvKiogVGhlIG51bWJlciBvZiBlbnRyaWVzIGF0IHRoZSBiZWdpbm5pbmcgb2Yge0BsaW5rIHZlcnRpY2VzfSB0aGF0IG1ha2UgdXAgdGhlIG1lc2ggaHVsbC4gKi9cblx0aHVsbExlbmd0aDogbnVtYmVyID0gMDtcblxuXHQvKiogVGhlIG5hbWUgb2YgdGhlIHRleHR1cmUgcmVnaW9uIGZvciB0aGlzIGF0dGFjaG1lbnQuICovXG5cdHBhdGg/OiBzdHJpbmc7XG5cblx0LyoqIFRoZSBjb2xvciB0byB0aW50IHRoZSBtZXNoLiAqL1xuXHRjb2xvciA9IG5ldyBDb2xvcigxLCAxLCAxLCAxKTtcblxuXHRwcml2YXRlIHNvdXJjZU1lc2g6IE1lc2hBdHRhY2htZW50IHwgbnVsbCA9IG51bGw7XG5cblx0LyoqIFZlcnRleCBpbmRleCBwYWlycyBkZXNjcmliaW5nIGVkZ2VzIGZvciBjb250cm9sbGluZyB0cmlhbmd1bGF0aW9uLCBvciBudWxsIGlmIG5vbmVzc2VudGlhbCBkYXRhIHdhcyBub3QgZXhwb3J0ZWQuIE1lc2hcblx0ICogdHJpYW5nbGVzIGRvIG5vdCBuZXZlciBjcm9zcyBlZGdlcy4gVHJpYW5ndWxhdGlvbiBpcyBub3QgcGVyZm9ybWVkIGF0IHJ1bnRpbWUuICovXG5cdGVkZ2VzOiBBcnJheTxudW1iZXI+ID0gW107XG5cblx0LyoqIFRoZSB3aWR0aCBvZiB0aGUgbWVzaCdzIGltYWdlLiBBdmFpbGFibGUgb25seSB3aGVuIG5vbmVzc2VudGlhbCBkYXRhIHdhcyBleHBvcnRlZC4gKi9cblx0d2lkdGg6IG51bWJlciA9IDA7XG5cblx0LyoqIFRoZSBoZWlnaHQgb2YgdGhlIG1lc2gncyBpbWFnZS4gQXZhaWxhYmxlIG9ubHkgd2hlbiBub25lc3NlbnRpYWwgZGF0YSB3YXMgZXhwb3J0ZWQuICovXG5cdGhlaWdodDogbnVtYmVyID0gMDtcblxuXHR0ZW1wQ29sb3IgPSBuZXcgQ29sb3IoMCwgMCwgMCwgMCk7XG5cblx0Y29uc3RydWN0b3IgKG5hbWU6IHN0cmluZywgc2VxdWVuY2U6IFNlcXVlbmNlKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cdFx0dGhpcy5zZXF1ZW5jZSA9IHNlcXVlbmNlO1xuXHR9XG5cblx0Y29weSAoKTogTWVzaEF0dGFjaG1lbnQge1xuXHRcdGlmICh0aGlzLnNvdXJjZU1lc2gpIHJldHVybiB0aGlzLm5ld0xpbmtlZE1lc2goKTtcblxuXHRcdGNvbnN0IGNvcHkgPSBuZXcgTWVzaEF0dGFjaG1lbnQodGhpcy5uYW1lLCB0aGlzLnNlcXVlbmNlLmNvcHkoKSk7XG5cdFx0Y29weS5wYXRoID0gdGhpcy5wYXRoO1xuXHRcdGNvcHkuY29sb3Iuc2V0RnJvbUNvbG9yKHRoaXMuY29sb3IpO1xuXG5cdFx0dGhpcy5jb3B5VG8oY29weSk7XG5cdFx0Y29weS5yZWdpb25VVnMgPSBbXTtcblx0XHRVdGlscy5hcnJheUNvcHkodGhpcy5yZWdpb25VVnMsIDAsIGNvcHkucmVnaW9uVVZzLCAwLCB0aGlzLnJlZ2lvblVWcy5sZW5ndGgpO1xuXHRcdGNvcHkudHJpYW5nbGVzID0gW107XG5cdFx0VXRpbHMuYXJyYXlDb3B5KHRoaXMudHJpYW5nbGVzLCAwLCBjb3B5LnRyaWFuZ2xlcywgMCwgdGhpcy50cmlhbmdsZXMubGVuZ3RoKTtcblx0XHRjb3B5Lmh1bGxMZW5ndGggPSB0aGlzLmh1bGxMZW5ndGg7XG5cblx0XHQvLyBOb25lc3NlbnRpYWwuXG5cdFx0aWYgKHRoaXMuZWRnZXMpIHtcblx0XHRcdGNvcHkuZWRnZXMgPSBbXTtcblx0XHRcdFV0aWxzLmFycmF5Q29weSh0aGlzLmVkZ2VzLCAwLCBjb3B5LmVkZ2VzLCAwLCB0aGlzLmVkZ2VzLmxlbmd0aCk7XG5cdFx0fVxuXHRcdGNvcHkud2lkdGggPSB0aGlzLndpZHRoO1xuXHRcdGNvcHkuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XG5cblx0XHRyZXR1cm4gY29weTtcblx0fVxuXG5cdHVwZGF0ZVNlcXVlbmNlICgpIHtcblx0XHR0aGlzLnNlcXVlbmNlLnVwZGF0ZSh0aGlzKTtcblx0fVxuXG5cdC8qKiBUaGUgc291cmNlIG1lc2ggaWYgdGhpcyBpcyBhIGxpbmtlZCBtZXNoLCBlbHNlIG51bGwuIEEgbGlua2VkIG1lc2ggc2hhcmVzIHRoZSB7QGxpbmsgYm9uZXN9LCB7QGxpbmsgdmVydGljZXN9LFxuXHQgKiB7QGxpbmsgcmVnaW9uVVZzfSwge0BsaW5rIHRyaWFuZ2xlc30sIHtAbGluayBodWxsTGVuZ3RofSwge0BsaW5rIGVkZ2VzfSwge0BsaW5rIHdpZHRofSwgYW5kIHtAbGluayBoZWlnaHR9IHdpdGggdGhlXG5cdCAqIHNvdXJjZSBtZXNoLCBidXQgbWF5IGhhdmUgYSBkaWZmZXJlbnQge0BsaW5rIG5hbWV9IG9yIHtAbGluayBwYXRofSwgYW5kIHRoZXJlZm9yZSBhIGRpZmZlcmVudCB0ZXh0dXJlIHJlZ2lvbi4gKi9cblx0Z2V0U291cmNlTWVzaCAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc291cmNlTWVzaDtcblx0fVxuXG5cdHNldFNvdXJjZU1lc2ggKHNvdXJjZU1lc2g6IE1lc2hBdHRhY2htZW50IHwgbnVsbCkge1xuXHRcdHRoaXMuc291cmNlTWVzaCA9IHNvdXJjZU1lc2g7XG5cdFx0aWYgKHNvdXJjZU1lc2gpIHtcblx0XHRcdHRoaXMuYm9uZXMgPSBzb3VyY2VNZXNoLmJvbmVzO1xuXHRcdFx0dGhpcy52ZXJ0aWNlcyA9IHNvdXJjZU1lc2gudmVydGljZXM7XG5cdFx0XHR0aGlzLndvcmxkVmVydGljZXNMZW5ndGggPSBzb3VyY2VNZXNoLndvcmxkVmVydGljZXNMZW5ndGg7XG5cdFx0XHR0aGlzLnJlZ2lvblVWcyA9IHNvdXJjZU1lc2gucmVnaW9uVVZzO1xuXHRcdFx0dGhpcy50cmlhbmdsZXMgPSBzb3VyY2VNZXNoLnRyaWFuZ2xlcztcblx0XHRcdHRoaXMuaHVsbExlbmd0aCA9IHNvdXJjZU1lc2guaHVsbExlbmd0aDtcblx0XHRcdHRoaXMud29ybGRWZXJ0aWNlc0xlbmd0aCA9IHNvdXJjZU1lc2gud29ybGRWZXJ0aWNlc0xlbmd0aFxuXHRcdFx0dGhpcy5lZGdlcyA9IHNvdXJjZU1lc2guZWRnZXM7XG5cdFx0XHR0aGlzLndpZHRoID0gc291cmNlTWVzaC53aWR0aDtcblx0XHRcdHRoaXMuaGVpZ2h0ID0gc291cmNlTWVzaC5oZWlnaHQ7XG5cdFx0fVxuXHR9XG5cblx0LyoqIFJldHVybnMgYSBuZXcgbWVzaCB3aXRoIHRoZSB7QGxpbmsgc291cmNlTWVzaH0gc2V0IHRvIHRoaXMgbWVzaCdzIHNvdXJjZSBtZXNoLCBpZiBhbnksIGVsc2UgdG8gdGhpcyBtZXNoLiAqKi9cblx0bmV3TGlua2VkTWVzaCAoKTogTWVzaEF0dGFjaG1lbnQge1xuXHRcdGNvbnN0IGNvcHkgPSBuZXcgTWVzaEF0dGFjaG1lbnQodGhpcy5uYW1lLCB0aGlzLnNlcXVlbmNlLmNvcHkoKSk7XG5cdFx0Y29weS50aW1lbGluZUF0dGFjaG1lbnQgPSB0aGlzLnRpbWVsaW5lQXR0YWNobWVudDtcblx0XHRjb3B5LnBhdGggPSB0aGlzLnBhdGg7XG5cdFx0Y29weS5jb2xvci5zZXRGcm9tQ29sb3IodGhpcy5jb2xvcik7XG5cdFx0Y29weS5zZXRTb3VyY2VNZXNoKHRoaXMuc291cmNlTWVzaCA/IHRoaXMuc291cmNlTWVzaCA6IHRoaXMpO1xuXHRcdGNvcHkudXBkYXRlU2VxdWVuY2UoKTtcblx0XHRyZXR1cm4gY29weTtcblx0fVxuXG5cdC8qKiBDb21wdXRlcyB7QGxpbmsgU2VxdWVuY2UuZ2V0VVZzIHwgVVZzfSBmb3IgYSBtZXNoIGF0dGFjaG1lbnQuXG5cdCAqIEBwYXJhbSB1dnMgT3V0cHV0IGFycmF5IGZvciB0aGUgY29tcHV0ZWQgVVZzLCBzYW1lIGxlbmd0aCBhcyByZWdpb25VVnMuICovXG5cdHN0YXRpYyBjb21wdXRlVVZzIChyZWdpb246IFRleHR1cmVSZWdpb24gfCBudWxsLCByZWdpb25VVnM6IE51bWJlckFycmF5TGlrZSwgdXZzOiBOdW1iZXJBcnJheUxpa2UpOiB2b2lkIHtcblx0XHRpZiAoIXJlZ2lvbikgdGhyb3cgbmV3IEVycm9yKFwiUmVnaW9uIG5vdCBzZXQuXCIpO1xuXHRcdGNvbnN0IG4gPSB1dnMubGVuZ3RoO1xuXHRcdGxldCB1ID0gcmVnaW9uLnUsIHYgPSByZWdpb24udiwgd2lkdGggPSAwLCBoZWlnaHQgPSAwO1xuXHRcdGlmIChyZWdpb24gaW5zdGFuY2VvZiBUZXh0dXJlQXRsYXNSZWdpb24pIHtcblx0XHRcdGNvbnN0IHBhZ2UgPSByZWdpb24ucGFnZTtcblx0XHRcdGNvbnN0IHRleHR1cmVXaWR0aCA9IHBhZ2Uud2lkdGgsIHRleHR1cmVIZWlnaHQgPSBwYWdlLmhlaWdodDtcblx0XHRcdHN3aXRjaCAocmVnaW9uLmRlZ3JlZXMpIHtcblx0XHRcdFx0Y2FzZSA5MDpcblx0XHRcdFx0XHR1IC09IChyZWdpb24ub3JpZ2luYWxIZWlnaHQgLSByZWdpb24ub2Zmc2V0WSAtIHJlZ2lvbi5oZWlnaHQpIC8gdGV4dHVyZVdpZHRoO1xuXHRcdFx0XHRcdHYgLT0gKHJlZ2lvbi5vcmlnaW5hbFdpZHRoIC0gcmVnaW9uLm9mZnNldFggLSByZWdpb24ud2lkdGgpIC8gdGV4dHVyZUhlaWdodDtcblx0XHRcdFx0XHR3aWR0aCA9IHJlZ2lvbi5vcmlnaW5hbEhlaWdodCAvIHRleHR1cmVXaWR0aDtcblx0XHRcdFx0XHRoZWlnaHQgPSByZWdpb24ub3JpZ2luYWxXaWR0aCAvIHRleHR1cmVIZWlnaHQ7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdFx0XHRcdHV2c1tpXSA9IHUgKyByZWdpb25VVnNbaSArIDFdICogd2lkdGg7XG5cdFx0XHRcdFx0XHR1dnNbaSArIDFdID0gdiArICgxIC0gcmVnaW9uVVZzW2ldKSAqIGhlaWdodDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRjYXNlIDE4MDpcblx0XHRcdFx0XHR1IC09IChyZWdpb24ub3JpZ2luYWxXaWR0aCAtIHJlZ2lvbi5vZmZzZXRYIC0gcmVnaW9uLndpZHRoKSAvIHRleHR1cmVXaWR0aDtcblx0XHRcdFx0XHR2IC09IHJlZ2lvbi5vZmZzZXRZIC8gdGV4dHVyZUhlaWdodDtcblx0XHRcdFx0XHR3aWR0aCA9IHJlZ2lvbi5vcmlnaW5hbFdpZHRoIC8gdGV4dHVyZVdpZHRoO1xuXHRcdFx0XHRcdGhlaWdodCA9IHJlZ2lvbi5vcmlnaW5hbEhlaWdodCAvIHRleHR1cmVIZWlnaHQ7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdFx0XHRcdHV2c1tpXSA9IHUgKyAoMSAtIHJlZ2lvblVWc1tpXSkgKiB3aWR0aDtcblx0XHRcdFx0XHRcdHV2c1tpICsgMV0gPSB2ICsgKDEgLSByZWdpb25VVnNbaSArIDFdKSAqIGhlaWdodDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRjYXNlIDI3MDpcblx0XHRcdFx0XHR1IC09IHJlZ2lvbi5vZmZzZXRZIC8gdGV4dHVyZVdpZHRoO1xuXHRcdFx0XHRcdHYgLT0gcmVnaW9uLm9mZnNldFggLyB0ZXh0dXJlSGVpZ2h0O1xuXHRcdFx0XHRcdHdpZHRoID0gcmVnaW9uLm9yaWdpbmFsSGVpZ2h0IC8gdGV4dHVyZVdpZHRoO1xuXHRcdFx0XHRcdGhlaWdodCA9IHJlZ2lvbi5vcmlnaW5hbFdpZHRoIC8gdGV4dHVyZUhlaWdodDtcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG47IGkgKz0gMikge1xuXHRcdFx0XHRcdFx0dXZzW2ldID0gdSArICgxIC0gcmVnaW9uVVZzW2kgKyAxXSkgKiB3aWR0aDtcblx0XHRcdFx0XHRcdHV2c1tpICsgMV0gPSB2ICsgcmVnaW9uVVZzW2ldICogaGVpZ2h0O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0dSAtPSByZWdpb24ub2Zmc2V0WCAvIHRleHR1cmVXaWR0aDtcblx0XHRcdFx0XHR2IC09IChyZWdpb24ub3JpZ2luYWxIZWlnaHQgLSByZWdpb24ub2Zmc2V0WSAtIHJlZ2lvbi5oZWlnaHQpIC8gdGV4dHVyZUhlaWdodDtcblx0XHRcdFx0XHR3aWR0aCA9IHJlZ2lvbi5vcmlnaW5hbFdpZHRoIC8gdGV4dHVyZVdpZHRoO1xuXHRcdFx0XHRcdGhlaWdodCA9IHJlZ2lvbi5vcmlnaW5hbEhlaWdodCAvIHRleHR1cmVIZWlnaHQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmICghcmVnaW9uKSB7XG5cdFx0XHR1ID0gdiA9IDA7XG5cdFx0XHR3aWR0aCA9IGhlaWdodCA9IDE7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdpZHRoID0gcmVnaW9uLnUyIC0gdTtcblx0XHRcdGhlaWdodCA9IHJlZ2lvbi52MiAtIHY7XG5cdFx0fVxuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdHV2c1tpXSA9IHUgKyByZWdpb25VVnNbaV0gKiB3aWR0aDtcblx0XHRcdHV2c1tpICsgMV0gPSB2ICsgcmVnaW9uVVZzW2kgKyAxXSAqIGhlaWdodDtcblx0XHR9XG5cdH1cbn1cbiJdfQ==
@@ -27,7 +27,7 @@
27
27
  * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
  *****************************************************************************/
29
29
  import { Color } from "../Utils.js";
30
- import { VertexAttachment, Attachment } from "./Attachment.js";
30
+ import { type Attachment, VertexAttachment } from "./Attachment.js";
31
31
  /** An attachment whose vertices make up a composite Bezier curve.
32
32
  *
33
33
  * See {@link PathConstraint} and [Paths](http://esotericsoftware.com/spine-paths) in the Spine User Guide. */
@@ -36,8 +36,8 @@ export declare class PathAttachment extends VertexAttachment {
36
36
  lengths: Array<number>;
37
37
  /** If true, the start and end knots are connected. */
38
38
  closed: boolean;
39
- /** If true, additional calculations are performed to make calculating positions along the path more accurate. If false, fewer
40
- * calculations are performed but calculating positions along the path is less accurate. */
39
+ /** If true, additional calculations are performed to make computing positions along the path more accurate so movement along
40
+ * the path has a constant speed. */
41
41
  constantSpeed: boolean;
42
42
  /** The color of the path as it was in Spine. Available only when nonessential data was exported. Paths are not usually
43
43
  * rendered at runtime. */
@@ -36,8 +36,8 @@ export class PathAttachment extends VertexAttachment {
36
36
  lengths = [];
37
37
  /** If true, the start and end knots are connected. */
38
38
  closed = false;
39
- /** If true, additional calculations are performed to make calculating positions along the path more accurate. If false, fewer
40
- * calculations are performed but calculating positions along the path is less accurate. */
39
+ /** If true, additional calculations are performed to make computing positions along the path more accurate so movement along
40
+ * the path has a constant speed. */
41
41
  constantSpeed = false;
42
42
  /** The color of the path as it was in Spine. Available only when nonessential data was exported. Paths are not usually
43
43
  * rendered at runtime. */
@@ -46,14 +46,14 @@ export class PathAttachment extends VertexAttachment {
46
46
  super(name);
47
47
  }
48
48
  copy() {
49
- let copy = new PathAttachment(this.name);
49
+ const copy = new PathAttachment(this.name);
50
50
  this.copyTo(copy);
51
- copy.lengths = new Array(this.lengths.length);
51
+ copy.lengths = [];
52
52
  Utils.arrayCopy(this.lengths, 0, copy.lengths, 0, this.lengths.length);
53
- copy.closed = closed;
53
+ copy.closed = this.closed;
54
54
  copy.constantSpeed = this.constantSpeed;
55
55
  copy.color.setFromColor(this.color);
56
56
  return copy;
57
57
  }
58
58
  }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0aEF0dGFjaG1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXR0YWNobWVudHMvUGF0aEF0dGFjaG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRS9FLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYyxNQUFNLGlCQUFpQixDQUFDO0FBRS9EOzs4R0FFOEc7QUFDOUcsTUFBTSxPQUFPLGNBQWUsU0FBUSxnQkFBZ0I7SUFFbkQsK0dBQStHO0lBQy9HLE9BQU8sR0FBa0IsRUFBRSxDQUFDO0lBRTVCLHNEQUFzRDtJQUN0RCxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBRWY7K0ZBQzJGO0lBQzNGLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFdEI7OEJBQzBCO0lBQzFCLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU5QixZQUFhLElBQVk7UUFDeEIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELElBQUk7UUFDSCxJQUFJLElBQUksR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksS0FBSyxDQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IENvbG9yLCBVdGlscyB9IGZyb20gXCIuLi9VdGlscy5qc1wiO1xuaW1wb3J0IHsgVmVydGV4QXR0YWNobWVudCwgQXR0YWNobWVudCB9IGZyb20gXCIuL0F0dGFjaG1lbnQuanNcIjtcblxuLyoqIEFuIGF0dGFjaG1lbnQgd2hvc2UgdmVydGljZXMgbWFrZSB1cCBhIGNvbXBvc2l0ZSBCZXppZXIgY3VydmUuXG4gKlxuICogU2VlIHtAbGluayBQYXRoQ29uc3RyYWludH0gYW5kIFtQYXRoc10oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLXBhdGhzKSBpbiB0aGUgU3BpbmUgVXNlciBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBQYXRoQXR0YWNobWVudCBleHRlbmRzIFZlcnRleEF0dGFjaG1lbnQge1xuXG5cdC8qKiBUaGUgbGVuZ3RocyBhbG9uZyB0aGUgcGF0aCBpbiB0aGUgc2V0dXAgcG9zZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgcGF0aCB0byB0aGUgZW5kIG9mIGVhY2ggQmV6aWVyIGN1cnZlLiAqL1xuXHRsZW5ndGhzOiBBcnJheTxudW1iZXI+ID0gW107XG5cblx0LyoqIElmIHRydWUsIHRoZSBzdGFydCBhbmQgZW5kIGtub3RzIGFyZSBjb25uZWN0ZWQuICovXG5cdGNsb3NlZCA9IGZhbHNlO1xuXG5cdC8qKiBJZiB0cnVlLCBhZGRpdGlvbmFsIGNhbGN1bGF0aW9ucyBhcmUgcGVyZm9ybWVkIHRvIG1ha2UgY2FsY3VsYXRpbmcgcG9zaXRpb25zIGFsb25nIHRoZSBwYXRoIG1vcmUgYWNjdXJhdGUuIElmIGZhbHNlLCBmZXdlclxuXHQgKiBjYWxjdWxhdGlvbnMgYXJlIHBlcmZvcm1lZCBidXQgY2FsY3VsYXRpbmcgcG9zaXRpb25zIGFsb25nIHRoZSBwYXRoIGlzIGxlc3MgYWNjdXJhdGUuICovXG5cdGNvbnN0YW50U3BlZWQgPSBmYWxzZTtcblxuXHQvKiogVGhlIGNvbG9yIG9mIHRoZSBwYXRoIGFzIGl0IHdhcyBpbiBTcGluZS4gQXZhaWxhYmxlIG9ubHkgd2hlbiBub25lc3NlbnRpYWwgZGF0YSB3YXMgZXhwb3J0ZWQuIFBhdGhzIGFyZSBub3QgdXN1YWxseVxuXHQgKiByZW5kZXJlZCBhdCBydW50aW1lLiAqL1xuXHRjb2xvciA9IG5ldyBDb2xvcigxLCAxLCAxLCAxKTtcblxuXHRjb25zdHJ1Y3RvciAobmFtZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cdH1cblxuXHRjb3B5ICgpOiBBdHRhY2htZW50IHtcblx0XHRsZXQgY29weSA9IG5ldyBQYXRoQXR0YWNobWVudCh0aGlzLm5hbWUpO1xuXHRcdHRoaXMuY29weVRvKGNvcHkpO1xuXHRcdGNvcHkubGVuZ3RocyA9IG5ldyBBcnJheTxudW1iZXI+KHRoaXMubGVuZ3Rocy5sZW5ndGgpO1xuXHRcdFV0aWxzLmFycmF5Q29weSh0aGlzLmxlbmd0aHMsIDAsIGNvcHkubGVuZ3RocywgMCwgdGhpcy5sZW5ndGhzLmxlbmd0aCk7XG5cdFx0Y29weS5jbG9zZWQgPSBjbG9zZWQ7XG5cdFx0Y29weS5jb25zdGFudFNwZWVkID0gdGhpcy5jb25zdGFudFNwZWVkO1xuXHRcdGNvcHkuY29sb3Iuc2V0RnJvbUNvbG9yKHRoaXMuY29sb3IpO1xuXHRcdHJldHVybiBjb3B5O1xuXHR9XG59XG4iXX0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0aEF0dGFjaG1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXR0YWNobWVudHMvUGF0aEF0dGFjaG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRTs7OEdBRThHO0FBQzlHLE1BQU0sT0FBTyxjQUFlLFNBQVEsZ0JBQWdCO0lBRW5ELCtHQUErRztJQUMvRyxPQUFPLEdBQWtCLEVBQUUsQ0FBQztJQUU1QixzREFBc0Q7SUFDdEQsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUVmO3dDQUNvQztJQUNwQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBRXRCOzhCQUMwQjtJQUMxQixLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFOUIsWUFBYSxJQUFZO1FBQ3hCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxJQUFJO1FBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgdHlwZSB7IFBhdGhDb25zdHJhaW50IH0gZnJvbSBcIi4uL1BhdGhDb25zdHJhaW50LmpzXCI7XG5pbXBvcnQgeyBDb2xvciwgVXRpbHMgfSBmcm9tIFwiLi4vVXRpbHMuanNcIjtcbmltcG9ydCB7IHR5cGUgQXR0YWNobWVudCwgVmVydGV4QXR0YWNobWVudCB9IGZyb20gXCIuL0F0dGFjaG1lbnQuanNcIjtcblxuLyoqIEFuIGF0dGFjaG1lbnQgd2hvc2UgdmVydGljZXMgbWFrZSB1cCBhIGNvbXBvc2l0ZSBCZXppZXIgY3VydmUuXG4gKlxuICogU2VlIHtAbGluayBQYXRoQ29uc3RyYWludH0gYW5kIFtQYXRoc10oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLXBhdGhzKSBpbiB0aGUgU3BpbmUgVXNlciBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBQYXRoQXR0YWNobWVudCBleHRlbmRzIFZlcnRleEF0dGFjaG1lbnQge1xuXG5cdC8qKiBUaGUgbGVuZ3RocyBhbG9uZyB0aGUgcGF0aCBpbiB0aGUgc2V0dXAgcG9zZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgcGF0aCB0byB0aGUgZW5kIG9mIGVhY2ggQmV6aWVyIGN1cnZlLiAqL1xuXHRsZW5ndGhzOiBBcnJheTxudW1iZXI+ID0gW107XG5cblx0LyoqIElmIHRydWUsIHRoZSBzdGFydCBhbmQgZW5kIGtub3RzIGFyZSBjb25uZWN0ZWQuICovXG5cdGNsb3NlZCA9IGZhbHNlO1xuXG5cdC8qKiBJZiB0cnVlLCBhZGRpdGlvbmFsIGNhbGN1bGF0aW9ucyBhcmUgcGVyZm9ybWVkIHRvIG1ha2UgY29tcHV0aW5nIHBvc2l0aW9ucyBhbG9uZyB0aGUgcGF0aCBtb3JlIGFjY3VyYXRlIHNvIG1vdmVtZW50IGFsb25nXG5cdCAqIHRoZSBwYXRoIGhhcyBhIGNvbnN0YW50IHNwZWVkLiAqL1xuXHRjb25zdGFudFNwZWVkID0gZmFsc2U7XG5cblx0LyoqIFRoZSBjb2xvciBvZiB0aGUgcGF0aCBhcyBpdCB3YXMgaW4gU3BpbmUuIEF2YWlsYWJsZSBvbmx5IHdoZW4gbm9uZXNzZW50aWFsIGRhdGEgd2FzIGV4cG9ydGVkLiBQYXRocyBhcmUgbm90IHVzdWFsbHlcblx0ICogcmVuZGVyZWQgYXQgcnVudGltZS4gKi9cblx0Y29sb3IgPSBuZXcgQ29sb3IoMSwgMSwgMSwgMSk7XG5cblx0Y29uc3RydWN0b3IgKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUpO1xuXHR9XG5cblx0Y29weSAoKTogQXR0YWNobWVudCB7XG5cdFx0Y29uc3QgY29weSA9IG5ldyBQYXRoQXR0YWNobWVudCh0aGlzLm5hbWUpO1xuXHRcdHRoaXMuY29weVRvKGNvcHkpO1xuXHRcdGNvcHkubGVuZ3RocyA9IFtdO1xuXHRcdFV0aWxzLmFycmF5Q29weSh0aGlzLmxlbmd0aHMsIDAsIGNvcHkubGVuZ3RocywgMCwgdGhpcy5sZW5ndGhzLmxlbmd0aCk7XG5cdFx0Y29weS5jbG9zZWQgPSB0aGlzLmNsb3NlZDtcblx0XHRjb3B5LmNvbnN0YW50U3BlZWQgPSB0aGlzLmNvbnN0YW50U3BlZWQ7XG5cdFx0Y29weS5jb2xvci5zZXRGcm9tQ29sb3IodGhpcy5jb2xvcik7XG5cdFx0cmV0dXJuIGNvcHk7XG5cdH1cbn1cbiJdfQ==
@@ -26,23 +26,28 @@
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 { Bone } from "../Bone.js";
30
- import { Color, Vector2 } from "../Utils.js";
31
- import { VertexAttachment, Attachment } from "./Attachment.js";
29
+ import type { BonePose } from "../BonePose.js";
30
+ import { Color, type Vector2 } from "../Utils.js";
31
+ import { type Attachment, VertexAttachment } from "./Attachment.js";
32
32
  /** An attachment which is a single point and a rotation. This can be used to spawn projectiles, particles, etc. A bone can be
33
33
  * used in similar ways, but a PointAttachment is slightly less expensive to compute and can be hidden, shown, and placed in a
34
34
  * skin.
35
35
  *
36
- * See [Point Attachments](http://esotericsoftware.com/spine-point-attachments) in the Spine User Guide. */
36
+ * See [Point Attachments](https://esotericsoftware.com/spine-points) in the Spine User Guide. */
37
37
  export declare class PointAttachment extends VertexAttachment {
38
+ /** The local x position. */
38
39
  x: number;
40
+ /** The local y position. */
39
41
  y: number;
42
+ /** The local rotation in degrees, counter clockwise. */
40
43
  rotation: number;
41
44
  /** The color of the point attachment as it was in Spine. Available only when nonessential data was exported. Point attachments
42
45
  * are not usually rendered at runtime. */
43
46
  color: Color;
44
47
  constructor(name: string);
45
- computeWorldPosition(bone: Bone, point: Vector2): Vector2;
46
- computeWorldRotation(bone: Bone): number;
48
+ /** Computes the world position from the local position. */
49
+ computeWorldPosition(bone: BonePose, point: Vector2): Vector2;
50
+ /** Computes the world rotation from the local rotation. */
51
+ computeWorldRotation(bone: BonePose): number;
47
52
  copy(): Attachment;
48
53
  }
@@ -32,10 +32,13 @@ import { VertexAttachment } from "./Attachment.js";
32
32
  * used in similar ways, but a PointAttachment is slightly less expensive to compute and can be hidden, shown, and placed in a
33
33
  * skin.
34
34
  *
35
- * See [Point Attachments](http://esotericsoftware.com/spine-point-attachments) in the Spine User Guide. */
35
+ * See [Point Attachments](https://esotericsoftware.com/spine-points) in the Spine User Guide. */
36
36
  export class PointAttachment extends VertexAttachment {
37
+ /** The local x position. */
37
38
  x = 0;
39
+ /** The local y position. */
38
40
  y = 0;
41
+ /** The local rotation in degrees, counter clockwise. */
39
42
  rotation = 0;
40
43
  /** The color of the point attachment as it was in Spine. Available only when nonessential data was exported. Point attachments
41
44
  * are not usually rendered at runtime. */
@@ -43,11 +46,13 @@ export class PointAttachment extends VertexAttachment {
43
46
  constructor(name) {
44
47
  super(name);
45
48
  }
49
+ /** Computes the world position from the local position. */
46
50
  computeWorldPosition(bone, point) {
47
51
  point.x = this.x * bone.a + this.y * bone.b + bone.worldX;
48
52
  point.y = this.x * bone.c + this.y * bone.d + bone.worldY;
49
53
  return point;
50
54
  }
55
+ /** Computes the world rotation from the local rotation. */
51
56
  computeWorldRotation(bone) {
52
57
  const r = this.rotation * MathUtils.degRad, cos = Math.cos(r), sin = Math.sin(r);
53
58
  const x = cos * bone.a + sin * bone.b;
@@ -55,7 +60,7 @@ export class PointAttachment extends VertexAttachment {
55
60
  return MathUtils.atan2Deg(y, x);
56
61
  }
57
62
  copy() {
58
- let copy = new PointAttachment(this.name);
63
+ const copy = new PointAttachment(this.name);
59
64
  copy.x = this.x;
60
65
  copy.y = this.y;
61
66
  copy.rotation = this.rotation;
@@ -63,4 +68,4 @@ export class PointAttachment extends VertexAttachment {
63
68
  return copy;
64
69
  }
65
70
  }
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9pbnRBdHRhY2htZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F0dGFjaG1lbnRzL1BvaW50QXR0YWNobWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFHL0UsT0FBTyxFQUFFLEtBQUssRUFBVyxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFjLE1BQU0saUJBQWlCLENBQUM7QUFFL0Q7Ozs7MkdBSTJHO0FBQzNHLE1BQU0sT0FBTyxlQUFnQixTQUFRLGdCQUFnQjtJQUNwRCxDQUFDLEdBQVcsQ0FBQyxDQUFDO0lBQ2QsQ0FBQyxHQUFXLENBQUMsQ0FBQztJQUNkLFFBQVEsR0FBVyxDQUFDLENBQUM7SUFFckI7OENBQzBDO0lBQzFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVwQyxZQUFhLElBQVk7UUFDeEIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELG9CQUFvQixDQUFFLElBQVUsRUFBRSxLQUFjO1FBQy9DLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFELEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVELG9CQUFvQixDQUFFLElBQVU7UUFDL0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUk7UUFDSCxJQUFJLElBQUksR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBCb25lIH0gZnJvbSBcIi4uL0JvbmUuanNcIjtcbmltcG9ydCB7IENvbG9yLCBWZWN0b3IyLCBNYXRoVXRpbHMgfSBmcm9tIFwiLi4vVXRpbHMuanNcIjtcbmltcG9ydCB7IFZlcnRleEF0dGFjaG1lbnQsIEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9BdHRhY2htZW50LmpzXCI7XG5cbi8qKiBBbiBhdHRhY2htZW50IHdoaWNoIGlzIGEgc2luZ2xlIHBvaW50IGFuZCBhIHJvdGF0aW9uLiBUaGlzIGNhbiBiZSB1c2VkIHRvIHNwYXduIHByb2plY3RpbGVzLCBwYXJ0aWNsZXMsIGV0Yy4gQSBib25lIGNhbiBiZVxuICogdXNlZCBpbiBzaW1pbGFyIHdheXMsIGJ1dCBhIFBvaW50QXR0YWNobWVudCBpcyBzbGlnaHRseSBsZXNzIGV4cGVuc2l2ZSB0byBjb21wdXRlIGFuZCBjYW4gYmUgaGlkZGVuLCBzaG93biwgYW5kIHBsYWNlZCBpbiBhXG4gKiBza2luLlxuICpcbiAqIFNlZSBbUG9pbnQgQXR0YWNobWVudHNdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1wb2ludC1hdHRhY2htZW50cykgaW4gdGhlIFNwaW5lIFVzZXIgR3VpZGUuICovXG5leHBvcnQgY2xhc3MgUG9pbnRBdHRhY2htZW50IGV4dGVuZHMgVmVydGV4QXR0YWNobWVudCB7XG5cdHg6IG51bWJlciA9IDA7XG5cdHk6IG51bWJlciA9IDA7XG5cdHJvdGF0aW9uOiBudW1iZXIgPSAwO1xuXG5cdC8qKiBUaGUgY29sb3Igb2YgdGhlIHBvaW50IGF0dGFjaG1lbnQgYXMgaXQgd2FzIGluIFNwaW5lLiBBdmFpbGFibGUgb25seSB3aGVuIG5vbmVzc2VudGlhbCBkYXRhIHdhcyBleHBvcnRlZC4gUG9pbnQgYXR0YWNobWVudHNcblx0ICogYXJlIG5vdCB1c3VhbGx5IHJlbmRlcmVkIGF0IHJ1bnRpbWUuICovXG5cdGNvbG9yID0gbmV3IENvbG9yKDAuMzgsIDAuOTQsIDAsIDEpO1xuXG5cdGNvbnN0cnVjdG9yIChuYW1lOiBzdHJpbmcpIHtcblx0XHRzdXBlcihuYW1lKTtcblx0fVxuXG5cdGNvbXB1dGVXb3JsZFBvc2l0aW9uIChib25lOiBCb25lLCBwb2ludDogVmVjdG9yMikge1xuXHRcdHBvaW50LnggPSB0aGlzLnggKiBib25lLmEgKyB0aGlzLnkgKiBib25lLmIgKyBib25lLndvcmxkWDtcblx0XHRwb2ludC55ID0gdGhpcy54ICogYm9uZS5jICsgdGhpcy55ICogYm9uZS5kICsgYm9uZS53b3JsZFk7XG5cdFx0cmV0dXJuIHBvaW50O1xuXHR9XG5cblx0Y29tcHV0ZVdvcmxkUm90YXRpb24gKGJvbmU6IEJvbmUpIHtcblx0XHRjb25zdCByID0gdGhpcy5yb3RhdGlvbiAqIE1hdGhVdGlscy5kZWdSYWQsIGNvcyA9IE1hdGguY29zKHIpLCBzaW4gPSBNYXRoLnNpbihyKTtcblx0XHRjb25zdCB4ID0gY29zICogYm9uZS5hICsgc2luICogYm9uZS5iO1xuXHRcdGNvbnN0IHkgPSBjb3MgKiBib25lLmMgKyBzaW4gKiBib25lLmQ7XG5cdFx0cmV0dXJuIE1hdGhVdGlscy5hdGFuMkRlZyh5LCB4KTtcdFx0XG5cdH1cblxuXHRjb3B5ICgpOiBBdHRhY2htZW50IHtcblx0XHRsZXQgY29weSA9IG5ldyBQb2ludEF0dGFjaG1lbnQodGhpcy5uYW1lKTtcblx0XHRjb3B5LnggPSB0aGlzLng7XG5cdFx0Y29weS55ID0gdGhpcy55O1xuXHRcdGNvcHkucm90YXRpb24gPSB0aGlzLnJvdGF0aW9uO1xuXHRcdGNvcHkuY29sb3Iuc2V0RnJvbUNvbG9yKHRoaXMuY29sb3IpO1xuXHRcdHJldHVybiBjb3B5O1xuXHR9XG59XG4iXX0=
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9pbnRBdHRhY2htZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F0dGFjaG1lbnRzL1BvaW50QXR0YWNobWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFHL0UsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQWdCLE1BQU0sYUFBYSxDQUFDO0FBQzdELE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRTs7OztpR0FJaUc7QUFDakcsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZ0JBQWdCO0lBRXBELDRCQUE0QjtJQUM1QixDQUFDLEdBQVcsQ0FBQyxDQUFDO0lBRWQsNEJBQTRCO0lBQzVCLENBQUMsR0FBVyxDQUFDLENBQUM7SUFFZCx3REFBd0Q7SUFDeEQsUUFBUSxHQUFXLENBQUMsQ0FBQztJQUVyQjs4Q0FDMEM7SUFDMUMsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXBDLFlBQWEsSUFBWTtRQUN4QixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsMkRBQTJEO0lBQzNELG9CQUFvQixDQUFFLElBQWMsRUFBRSxLQUFjO1FBQ25ELEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFELEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVELDJEQUEyRDtJQUMzRCxvQkFBb0IsQ0FBRSxJQUFjO1FBQ25DLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRixNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0QyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0QyxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJO1FBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBCb25lUG9zZSB9IGZyb20gXCIuLi9Cb25lUG9zZS5qc1wiO1xuaW1wb3J0IHsgQ29sb3IsIE1hdGhVdGlscywgdHlwZSBWZWN0b3IyIH0gZnJvbSBcIi4uL1V0aWxzLmpzXCI7XG5pbXBvcnQgeyB0eXBlIEF0dGFjaG1lbnQsIFZlcnRleEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9BdHRhY2htZW50LmpzXCI7XG5cbi8qKiBBbiBhdHRhY2htZW50IHdoaWNoIGlzIGEgc2luZ2xlIHBvaW50IGFuZCBhIHJvdGF0aW9uLiBUaGlzIGNhbiBiZSB1c2VkIHRvIHNwYXduIHByb2plY3RpbGVzLCBwYXJ0aWNsZXMsIGV0Yy4gQSBib25lIGNhbiBiZVxuICogdXNlZCBpbiBzaW1pbGFyIHdheXMsIGJ1dCBhIFBvaW50QXR0YWNobWVudCBpcyBzbGlnaHRseSBsZXNzIGV4cGVuc2l2ZSB0byBjb21wdXRlIGFuZCBjYW4gYmUgaGlkZGVuLCBzaG93biwgYW5kIHBsYWNlZCBpbiBhXG4gKiBza2luLlxuICpcbiAqIFNlZSBbUG9pbnQgQXR0YWNobWVudHNdKGh0dHBzOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtcG9pbnRzKSBpbiB0aGUgU3BpbmUgVXNlciBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBQb2ludEF0dGFjaG1lbnQgZXh0ZW5kcyBWZXJ0ZXhBdHRhY2htZW50IHtcblxuXHQvKiogVGhlIGxvY2FsIHggcG9zaXRpb24uICovXG5cdHg6IG51bWJlciA9IDA7XG5cblx0LyoqIFRoZSBsb2NhbCB5IHBvc2l0aW9uLiAqL1xuXHR5OiBudW1iZXIgPSAwO1xuXG5cdC8qKiBUaGUgbG9jYWwgcm90YXRpb24gaW4gZGVncmVlcywgY291bnRlciBjbG9ja3dpc2UuICovXG5cdHJvdGF0aW9uOiBudW1iZXIgPSAwO1xuXG5cdC8qKiBUaGUgY29sb3Igb2YgdGhlIHBvaW50IGF0dGFjaG1lbnQgYXMgaXQgd2FzIGluIFNwaW5lLiBBdmFpbGFibGUgb25seSB3aGVuIG5vbmVzc2VudGlhbCBkYXRhIHdhcyBleHBvcnRlZC4gUG9pbnQgYXR0YWNobWVudHNcblx0ICogYXJlIG5vdCB1c3VhbGx5IHJlbmRlcmVkIGF0IHJ1bnRpbWUuICovXG5cdGNvbG9yID0gbmV3IENvbG9yKDAuMzgsIDAuOTQsIDAsIDEpO1xuXG5cdGNvbnN0cnVjdG9yIChuYW1lOiBzdHJpbmcpIHtcblx0XHRzdXBlcihuYW1lKTtcblx0fVxuXG5cdC8qKiBDb21wdXRlcyB0aGUgd29ybGQgcG9zaXRpb24gZnJvbSB0aGUgbG9jYWwgcG9zaXRpb24uICovXG5cdGNvbXB1dGVXb3JsZFBvc2l0aW9uIChib25lOiBCb25lUG9zZSwgcG9pbnQ6IFZlY3RvcjIpIHtcblx0XHRwb2ludC54ID0gdGhpcy54ICogYm9uZS5hICsgdGhpcy55ICogYm9uZS5iICsgYm9uZS53b3JsZFg7XG5cdFx0cG9pbnQueSA9IHRoaXMueCAqIGJvbmUuYyArIHRoaXMueSAqIGJvbmUuZCArIGJvbmUud29ybGRZO1xuXHRcdHJldHVybiBwb2ludDtcblx0fVxuXG5cdC8qKiBDb21wdXRlcyB0aGUgd29ybGQgcm90YXRpb24gZnJvbSB0aGUgbG9jYWwgcm90YXRpb24uICovXG5cdGNvbXB1dGVXb3JsZFJvdGF0aW9uIChib25lOiBCb25lUG9zZSkge1xuXHRcdGNvbnN0IHIgPSB0aGlzLnJvdGF0aW9uICogTWF0aFV0aWxzLmRlZ1JhZCwgY29zID0gTWF0aC5jb3MociksIHNpbiA9IE1hdGguc2luKHIpO1xuXHRcdGNvbnN0IHggPSBjb3MgKiBib25lLmEgKyBzaW4gKiBib25lLmI7XG5cdFx0Y29uc3QgeSA9IGNvcyAqIGJvbmUuYyArIHNpbiAqIGJvbmUuZDtcblx0XHRyZXR1cm4gTWF0aFV0aWxzLmF0YW4yRGVnKHksIHgpO1xuXHR9XG5cblx0Y29weSAoKTogQXR0YWNobWVudCB7XG5cdFx0Y29uc3QgY29weSA9IG5ldyBQb2ludEF0dGFjaG1lbnQodGhpcy5uYW1lKTtcblx0XHRjb3B5LnggPSB0aGlzLng7XG5cdFx0Y29weS55ID0gdGhpcy55O1xuXHRcdGNvcHkucm90YXRpb24gPSB0aGlzLnJvdGF0aW9uO1xuXHRcdGNvcHkuY29sb3Iuc2V0RnJvbUNvbG9yKHRoaXMuY29sb3IpO1xuXHRcdHJldHVybiBjb3B5O1xuXHR9XG59XG4iXX0=
@@ -26,16 +26,18 @@
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 { TextureRegion } from "../Texture.js";
30
- import { Color, NumberArrayLike } from "../Utils.js";
29
+ import type { SlotPose } from "../SlotPose.js";
30
+ import type { Slot } from "../Slot.js";
31
+ import type { TextureRegion } from "../Texture.js";
32
+ import { Color, type NumberArrayLike } from "../Utils.js";
31
33
  import { Attachment } from "./Attachment.js";
32
- import { HasTextureRegion } from "./HasTextureRegion.js";
33
- import { Sequence } from "./Sequence.js";
34
- import { Slot } from "../Slot.js";
34
+ import type { HasSequence } from "./HasSequence.js";
35
+ import type { Sequence } from "./Sequence.js";
35
36
  /** An attachment that displays a textured quadrilateral.
36
37
  *
37
38
  * See [Region attachments](http://esotericsoftware.com/spine-regions) in the Spine User Guide. */
38
- export declare class RegionAttachment extends Attachment implements HasTextureRegion {
39
+ export declare class RegionAttachment extends Attachment implements HasSequence {
40
+ readonly sequence: Sequence;
39
41
  /** The local x translation. */
40
42
  x: number;
41
43
  /** The local y translation. */
@@ -44,37 +46,33 @@ export declare class RegionAttachment extends Attachment implements HasTextureRe
44
46
  scaleX: number;
45
47
  /** The local scaleY. */
46
48
  scaleY: number;
47
- /** The local rotation. */
49
+ /** The local rotation in degrees, counter clockwise. */
48
50
  rotation: number;
49
51
  /** The width of the region attachment in Spine. */
50
52
  width: number;
51
53
  /** The height of the region attachment in Spine. */
52
54
  height: number;
55
+ /** The name of the texture region for this attachment. */
56
+ path?: string;
53
57
  /** The color to tint the region attachment. */
54
58
  color: Color;
55
- /** The name of the texture region for this attachment. */
56
- path: string;
57
- region: TextureRegion | null;
58
- sequence: Sequence | null;
59
- /** For each of the 4 vertices, a pair of <code>x,y</code> values that is the local position of the vertex.
60
- *
61
- * See {@link #updateOffset()}. */
62
- offset: NumberArrayLike;
63
- uvs: NumberArrayLike;
64
59
  tempColor: Color;
65
- constructor(name: string, path: string);
66
- /** Calculates the {@link #offset} using the region settings. Must be called after changing region settings. */
67
- updateRegion(): void;
68
- /** Transforms the attachment's four vertices to world coordinates. If the attachment has a {@link #sequence}, the region may
69
- * be changed.
70
- * <p>
60
+ constructor(name: string, sequence: Sequence);
61
+ copy(): Attachment;
62
+ /** Transforms the attachment's four vertices to world coordinates.
63
+ *
71
64
  * See <a href="http://esotericsoftware.com/spine-runtime-skeletons#World-transforms">World transforms</a> in the Spine
72
65
  * Runtimes Guide.
73
- * @param worldVertices The output world vertices. Must have a length >= <code>offset</code> + 8.
74
- * @param offset The <code>worldVertices</code> index to begin writing values.
75
- * @param stride The number of <code>worldVertices</code> entries between the value pairs written. */
76
- computeWorldVertices(slot: Slot, worldVertices: NumberArrayLike, offset: number, stride: number): void;
77
- copy(): Attachment;
66
+ * @param worldVertices The output world vertices. Must have a length >= `offset` + 8.
67
+ * @param offset The `worldVertices` index to begin writing values.
68
+ * @param stride The number of `worldVertices` entries between the value pairs written. */
69
+ computeWorldVertices(slot: Slot, vertexOffsets: NumberArrayLike, worldVertices: NumberArrayLike, offset: number, stride: number): void;
70
+ getOffsets(pose: SlotPose): number[];
71
+ updateSequence(): void;
72
+ /** Computes {@link Sequence.getUVs | UVs} and {@link Sequence.getOffsets | offsets} for a region attachment.
73
+ * @param uvs Output array for the computed UVs, length of 8.
74
+ * @param offset Output array for the computed vertex offsets, length of 8. */
75
+ static computeUVs(region: TextureRegion | null, x: number, y: number, scaleX: number, scaleY: number, rotation: number, width: number, height: number, offset: number[], uvs: NumberArrayLike): void;
78
76
  static X1: number;
79
77
  static Y1: number;
80
78
  static C1R: number;