97 lines
15 KiB
JavaScript
97 lines
15 KiB
JavaScript
/******************************************************************************
|
|
* Spine Runtimes License Agreement
|
|
* Last updated April 5, 2025. Replaces all prior versions.
|
|
*
|
|
* Copyright (c) 2013-2025, Esoteric Software LLC
|
|
*
|
|
* Integration of the Spine Runtimes into software or otherwise creating
|
|
* derivative works of the Spine Runtimes is permitted under the terms and
|
|
* conditions of Section 2 of the Spine Editor License Agreement:
|
|
* http://esotericsoftware.com/spine-editor-license
|
|
*
|
|
* Otherwise, it is permitted to integrate the Spine Runtimes into software
|
|
* or otherwise create derivative works of the Spine Runtimes (collectively,
|
|
* "Products"), provided that each user of the Products must obtain their own
|
|
* Spine Editor license and redistribution of the Products in any form must
|
|
* include this license and copyright notice.
|
|
*
|
|
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
|
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
|
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
|
|
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
|
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*****************************************************************************/
|
|
import { SpineTexture } from "./SpineTexture.js";
|
|
import { DarkTintMesh } from "./darkTintMesh/DarkTintMesh.js";
|
|
export class DarkSlotMesh extends DarkTintMesh {
|
|
name = "";
|
|
static auxColor = [0, 0, 0, 0];
|
|
constructor() {
|
|
super();
|
|
}
|
|
updateFromSpineData(slotTexture, slotBlendMode, slotName, finalVertices, finalVerticesLength, finalIndices, finalIndicesLength, darkTint) {
|
|
this.texture = slotTexture.texture;
|
|
const vertLenght = (finalVerticesLength / (darkTint ? 12 : 8)) * 2;
|
|
const textureCoord = this.geometry.getBuffer("aTextureCoord");
|
|
if (textureCoord.data?.length !== vertLenght) {
|
|
textureCoord.data = new Float32Array(vertLenght);
|
|
}
|
|
const vertexCoord = this.geometry.getBuffer("aVertexPosition");
|
|
if (vertexCoord.data?.length !== vertLenght) {
|
|
vertexCoord.data = new Float32Array(vertLenght);
|
|
}
|
|
let vertIndex = 0;
|
|
let textureCoordData = textureCoord.data;
|
|
let vertexCoordData = vertexCoord.data;
|
|
for (let i = 0; i < finalVerticesLength; i += darkTint ? 12 : 8) {
|
|
let auxi = i;
|
|
vertexCoordData[vertIndex] = finalVertices[auxi++];
|
|
vertexCoordData[vertIndex + 1] = finalVertices[auxi++];
|
|
auxi += 4; // color
|
|
textureCoordData[vertIndex] = finalVertices[auxi++];
|
|
textureCoordData[vertIndex + 1] = finalVertices[auxi++];
|
|
vertIndex += 2;
|
|
}
|
|
if (darkTint) {
|
|
DarkSlotMesh.auxColor[0] = finalVertices[8];
|
|
DarkSlotMesh.auxColor[1] = finalVertices[9];
|
|
DarkSlotMesh.auxColor[2] = finalVertices[10];
|
|
DarkSlotMesh.auxColor[3] = finalVertices[11];
|
|
this.darkTint = DarkSlotMesh.auxColor;
|
|
DarkSlotMesh.auxColor[0] = finalVertices[2];
|
|
DarkSlotMesh.auxColor[1] = finalVertices[3];
|
|
DarkSlotMesh.auxColor[2] = finalVertices[4];
|
|
DarkSlotMesh.auxColor[3] = finalVertices[5];
|
|
this.tint = DarkSlotMesh.auxColor;
|
|
}
|
|
else {
|
|
DarkSlotMesh.auxColor[0] = finalVertices[2];
|
|
DarkSlotMesh.auxColor[1] = finalVertices[3];
|
|
DarkSlotMesh.auxColor[2] = finalVertices[4];
|
|
DarkSlotMesh.auxColor[3] = finalVertices[5];
|
|
this.tint = DarkSlotMesh.auxColor;
|
|
}
|
|
this.blendMode = SpineTexture.toPixiBlending(slotBlendMode);
|
|
this.alpha = DarkSlotMesh.auxColor[3];
|
|
const indexBuffer = this.geometry.indexBuffer;
|
|
if (indexBuffer.data.length !== finalIndices.length) {
|
|
indexBuffer.data = new Uint32Array(finalIndices);
|
|
}
|
|
else {
|
|
const indexBufferData = indexBuffer.data;
|
|
for (let i = 0; i < finalIndicesLength; i++) {
|
|
indexBufferData[i] = finalIndices[i];
|
|
}
|
|
}
|
|
this.name = slotName;
|
|
textureCoord.update();
|
|
vertexCoord.update();
|
|
indexBuffer.update();
|
|
}
|
|
}
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFya1Nsb3RNZXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0RhcmtTbG90TWVzaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUc5RCxNQUFNLE9BQU8sWUFBYSxTQUFRLFlBQVk7SUFDdEMsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUVqQixNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFdkM7UUFDQyxLQUFLLEVBQUUsQ0FBQztJQUNULENBQUM7SUFDTSxtQkFBbUIsQ0FDekIsV0FBeUIsRUFDekIsYUFBd0IsRUFDeEIsUUFBZ0IsRUFDaEIsYUFBOEIsRUFDOUIsbUJBQTJCLEVBQzNCLFlBQTZCLEVBQzdCLGtCQUEwQixFQUMxQixRQUFpQjtRQUVqQixJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFFbkMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVuRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5RCxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzlDLFlBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDL0QsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM3QyxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFFbEIsSUFBSSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDO1FBQ3pDLElBQUksZUFBZSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLG1CQUFtQixFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBRWIsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELGVBQWUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFFdkQsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVE7WUFFbkIsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDcEQsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBRXhELFNBQVMsSUFBSSxDQUFDLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQUksUUFBUSxFQUFFLENBQUM7WUFDZCxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3QyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFFdEMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQ25DLENBQUM7YUFBTSxDQUFDO1lBQ1AsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFNUMsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQ25DLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQzlDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JELFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEQsQ0FBQzthQUFNLENBQUM7WUFDUCxNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUM3QyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7UUFDRixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFFckIsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNyQixXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgU3BpbmVUZXh0dXJlIH0gZnJvbSBcIi4vU3BpbmVUZXh0dXJlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEJsZW5kTW9kZSwgTnVtYmVyQXJyYXlMaWtlIH0gZnJvbSBcIkBlc290ZXJpY3NvZnR3YXJlL3NwaW5lLWNvcmVcIjtcbmltcG9ydCB7IERhcmtUaW50TWVzaCB9IGZyb20gXCIuL2RhcmtUaW50TWVzaC9EYXJrVGludE1lc2guanNcIjtcbmltcG9ydCB0eXBlIHsgSVNsb3RNZXNoIH0gZnJvbSBcIi4vU3BpbmUuanNcIjtcblxuZXhwb3J0IGNsYXNzIERhcmtTbG90TWVzaCBleHRlbmRzIERhcmtUaW50TWVzaCBpbXBsZW1lbnRzIElTbG90TWVzaCB7XG5cdHB1YmxpYyBuYW1lOiBzdHJpbmcgPSBcIlwiO1xuXG5cdHByaXZhdGUgc3RhdGljIGF1eENvbG9yID0gWzAsIDAsIDAsIDBdO1xuXG5cdGNvbnN0cnVjdG9yICgpIHtcblx0XHRzdXBlcigpO1xuXHR9XG5cdHB1YmxpYyB1cGRhdGVGcm9tU3BpbmVEYXRhIChcblx0XHRzbG90VGV4dHVyZTogU3BpbmVUZXh0dXJlLFxuXHRcdHNsb3RCbGVuZE1vZGU6IEJsZW5kTW9kZSxcblx0XHRzbG90TmFtZTogc3RyaW5nLFxuXHRcdGZpbmFsVmVydGljZXM6IE51bWJlckFycmF5TGlrZSxcblx0XHRmaW5hbFZlcnRpY2VzTGVuZ3RoOiBudW1iZXIsXG5cdFx0ZmluYWxJbmRpY2VzOiBOdW1iZXJBcnJheUxpa2UsXG5cdFx0ZmluYWxJbmRpY2VzTGVuZ3RoOiBudW1iZXIsXG5cdFx0ZGFya1RpbnQ6IGJvb2xlYW5cblx0KTogdm9pZCB7XG5cdFx0dGhpcy50ZXh0dXJlID0gc2xvdFRleHR1cmUudGV4dHVyZTtcblxuXHRcdGNvbnN0IHZlcnRMZW5naHQgPSAoZmluYWxWZXJ0aWNlc0xlbmd0aCAvIChkYXJrVGludCA/IDEyIDogOCkpICogMjtcblxuXHRcdGNvbnN0IHRleHR1cmVDb29yZCA9IHRoaXMuZ2VvbWV0cnkuZ2V0QnVmZmVyKFwiYVRleHR1cmVDb29yZFwiKTtcblx0XHRpZiAodGV4dHVyZUNvb3JkLmRhdGE/Lmxlbmd0aCAhPT0gdmVydExlbmdodCkge1xuXHRcdFx0dGV4dHVyZUNvb3JkLmRhdGEgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRMZW5naHQpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHZlcnRleENvb3JkID0gdGhpcy5nZW9tZXRyeS5nZXRCdWZmZXIoXCJhVmVydGV4UG9zaXRpb25cIik7XG5cdFx0aWYgKHZlcnRleENvb3JkLmRhdGE/Lmxlbmd0aCAhPT0gdmVydExlbmdodCkge1xuXHRcdFx0dmVydGV4Q29vcmQuZGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydExlbmdodCk7XG5cdFx0fVxuXG5cdFx0bGV0IHZlcnRJbmRleCA9IDA7XG5cblx0XHRsZXQgdGV4dHVyZUNvb3JkRGF0YSA9IHRleHR1cmVDb29yZC5kYXRhO1xuXHRcdGxldCB2ZXJ0ZXhDb29yZERhdGEgPSB2ZXJ0ZXhDb29yZC5kYXRhO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZmluYWxWZXJ0aWNlc0xlbmd0aDsgaSArPSBkYXJrVGludCA/IDEyIDogOCkge1xuXHRcdFx0bGV0IGF1eGkgPSBpO1xuXG5cdFx0XHR2ZXJ0ZXhDb29yZERhdGFbdmVydEluZGV4XSA9IGZpbmFsVmVydGljZXNbYXV4aSsrXTtcblx0XHRcdHZlcnRleENvb3JkRGF0YVt2ZXJ0SW5kZXggKyAxXSA9IGZpbmFsVmVydGljZXNbYXV4aSsrXTtcblxuXHRcdFx0YXV4aSArPSA0OyAvLyBjb2xvclxuXG5cdFx0XHR0ZXh0dXJlQ29vcmREYXRhW3ZlcnRJbmRleF0gPSBmaW5hbFZlcnRpY2VzW2F1eGkrK107XG5cdFx0XHR0ZXh0dXJlQ29vcmREYXRhW3ZlcnRJbmRleCArIDFdID0gZmluYWxWZXJ0aWNlc1thdXhpKytdO1xuXG5cdFx0XHR2ZXJ0SW5kZXggKz0gMjtcblx0XHR9XG5cblx0XHRpZiAoZGFya1RpbnQpIHtcblx0XHRcdERhcmtTbG90TWVzaC5hdXhDb2xvclswXSA9IGZpbmFsVmVydGljZXNbOF07XG5cdFx0XHREYXJrU2xvdE1lc2guYXV4Q29sb3JbMV0gPSBmaW5hbFZlcnRpY2VzWzldO1xuXHRcdFx0RGFya1Nsb3RNZXNoLmF1eENvbG9yWzJdID0gZmluYWxWZXJ0aWNlc1sxMF07XG5cdFx0XHREYXJrU2xvdE1lc2guYXV4Q29sb3JbM10gPSBmaW5hbFZlcnRpY2VzWzExXTtcblx0XHRcdHRoaXMuZGFya1RpbnQgPSBEYXJrU2xvdE1lc2guYXV4Q29sb3I7XG5cblx0XHRcdERhcmtTbG90TWVzaC5hdXhDb2xvclswXSA9IGZpbmFsVmVydGljZXNbMl07XG5cdFx0XHREYXJrU2xvdE1lc2guYXV4Q29sb3JbMV0gPSBmaW5hbFZlcnRpY2VzWzNdO1xuXHRcdFx0RGFya1Nsb3RNZXNoLmF1eENvbG9yWzJdID0gZmluYWxWZXJ0aWNlc1s0XTtcblx0XHRcdERhcmtTbG90TWVzaC5hdXhDb2xvclszXSA9IGZpbmFsVmVydGljZXNbNV07XG5cdFx0XHR0aGlzLnRpbnQgPSBEYXJrU2xvdE1lc2guYXV4Q29sb3I7XG5cdFx0fSBlbHNlIHtcblx0XHRcdERhcmtTbG90TWVzaC5hdXhDb2xvclswXSA9IGZpbmFsVmVydGljZXNbMl07XG5cdFx0XHREYXJrU2xvdE1lc2guYXV4Q29sb3JbMV0gPSBmaW5hbFZlcnRpY2VzWzNdO1xuXHRcdFx0RGFya1Nsb3RNZXNoLmF1eENvbG9yWzJdID0gZmluYWxWZXJ0aWNlc1s0XTtcblx0XHRcdERhcmtTbG90TWVzaC5hdXhDb2xvclszXSA9IGZpbmFsVmVydGljZXNbNV07XG5cblx0XHRcdHRoaXMudGludCA9IERhcmtTbG90TWVzaC5hdXhDb2xvcjtcblx0XHR9XG5cdFx0dGhpcy5ibGVuZE1vZGUgPSBTcGluZVRleHR1cmUudG9QaXhpQmxlbmRpbmcoc2xvdEJsZW5kTW9kZSk7XG5cdFx0dGhpcy5hbHBoYSA9IERhcmtTbG90TWVzaC5hdXhDb2xvclszXTtcblxuXHRcdGNvbnN0IGluZGV4QnVmZmVyID0gdGhpcy5nZW9tZXRyeS5pbmRleEJ1ZmZlcjtcblx0XHRpZiAoaW5kZXhCdWZmZXIuZGF0YS5sZW5ndGggIT09IGZpbmFsSW5kaWNlcy5sZW5ndGgpIHtcblx0XHRcdGluZGV4QnVmZmVyLmRhdGEgPSBuZXcgVWludDMyQXJyYXkoZmluYWxJbmRpY2VzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgaW5kZXhCdWZmZXJEYXRhID0gaW5kZXhCdWZmZXIuZGF0YTtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZmluYWxJbmRpY2VzTGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aW5kZXhCdWZmZXJEYXRhW2ldID0gZmluYWxJbmRpY2VzW2ldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRoaXMubmFtZSA9IHNsb3ROYW1lO1xuXG5cdFx0dGV4dHVyZUNvb3JkLnVwZGF0ZSgpO1xuXHRcdHZlcnRleENvb3JkLnVwZGF0ZSgpO1xuXHRcdGluZGV4QnVmZmVyLnVwZGF0ZSgpO1xuXHR9XG59XG4iXX0=
|