angular-three-rapier 2.2.1 → 2.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/instanced-rigid-bodies.mjs +14 -13
- package/esm2022/lib/mesh-collider.mjs +6 -6
- package/esm2022/lib/physics.mjs +51 -24
- package/esm2022/lib/rigid-body.mjs +21 -5
- package/fesm2022/angular-three-rapier.mjs +90 -46
- package/fesm2022/angular-three-rapier.mjs.map +1 -1
- package/lib/instanced-rigid-bodies.d.ts +0 -1
- package/lib/physics.d.ts +17 -7
- package/package.json +1 -1
|
@@ -74,30 +74,31 @@ export class NgtrInstancedRigidBodies {
|
|
|
74
74
|
if (colliders === false)
|
|
75
75
|
return [];
|
|
76
76
|
const physicsColliders = this.physics.colliders();
|
|
77
|
-
// if physics colliders is false explicitly, disable auto colliders for this object entirely.
|
|
78
|
-
if (physicsColliders === false)
|
|
77
|
+
// if physics colliders is false explicitly AND colliders is not set, disable auto colliders for this object entirely.
|
|
78
|
+
if (physicsColliders === false && colliders === undefined)
|
|
79
79
|
return [];
|
|
80
80
|
const options = this.options();
|
|
81
81
|
// if colliders on object is not set, use physics colliders
|
|
82
82
|
if (!options.colliders)
|
|
83
83
|
options.colliders = physicsColliders;
|
|
84
84
|
const objectLocalState = getLocalState(this.objectRef.nativeElement);
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
if (!objectLocalState)
|
|
86
|
+
return [];
|
|
87
|
+
// track object's parent and non-object children
|
|
88
|
+
const [parent] = [objectLocalState.parent(), objectLocalState.nonObjects()];
|
|
89
|
+
if (!parent || !parent.isObject3D)
|
|
90
|
+
return [];
|
|
87
91
|
return createColliderOptions(this.objectRef.nativeElement, options);
|
|
88
92
|
});
|
|
89
93
|
constructor() {
|
|
90
94
|
extend({ Object3D });
|
|
91
95
|
effect(() => {
|
|
92
|
-
this.
|
|
96
|
+
const instancedMesh = this.instancedMesh();
|
|
97
|
+
if (!instancedMesh)
|
|
98
|
+
return;
|
|
99
|
+
instancedMesh.instanceMatrix.setUsage(DynamicDrawUsage);
|
|
93
100
|
});
|
|
94
101
|
}
|
|
95
|
-
setInstancedMeshMatrixEffect() {
|
|
96
|
-
const instancedMesh = this.instancedMesh();
|
|
97
|
-
if (!instancedMesh)
|
|
98
|
-
return;
|
|
99
|
-
instancedMesh.instanceMatrix.setUsage(DynamicDrawUsage);
|
|
100
|
-
}
|
|
101
102
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtrInstancedRigidBodies, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
102
103
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtrInstancedRigidBodies, isStandalone: true, selector: "ngt-object3D[ngtrInstancedRigidBodies]", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, rotation: { classPropertyName: "rotation", publicName: "rotation", isSignal: true, isRequired: false, transformFunction: null }, scale: { classPropertyName: "scale", publicName: "scale", isSignal: true, isRequired: false, transformFunction: null }, quaternion: { classPropertyName: "quaternion", publicName: "quaternion", isSignal: true, isRequired: false, transformFunction: null }, userData: { classPropertyName: "userData", publicName: "userData", isSignal: true, isRequired: false, transformFunction: null }, instances: { classPropertyName: "instances", publicName: "ngtrInstancedRigidBodies", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "position": "position()", "rotation": "rotation()", "scale": "scale()", "quaternion": "quaternion()", "userData": "userData()" } }, viewQueries: [{ propertyName: "instanceWrapperRef", first: true, predicate: ["instanceWrapper"], descendants: true, isSignal: true }, { propertyName: "rigidBodyRefs", predicate: NgtrRigidBody, descendants: true, isSignal: true }], exportAs: ["instancedRigidBodies"], ngImport: i0, template: `
|
|
103
104
|
<ngt-object3D #instanceWrapper>
|
|
@@ -179,7 +180,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
179
180
|
'[quaternion]': 'quaternion()',
|
|
180
181
|
'[userData]': 'userData()',
|
|
181
182
|
},
|
|
182
|
-
imports: [NgtrRigidBody,
|
|
183
|
+
imports: [NgtrRigidBody, NgtrAnyCollider],
|
|
183
184
|
}]
|
|
184
185
|
}], ctorParameters: () => [] });
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2VkLXJpZ2lkLWJvZGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcmFwaWVyL3NyYy9saWIvaW5zdGFuY2VkLXJpZ2lkLWJvZGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBb0QsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWlCLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFhaEQsTUFBTSxjQUFjLEdBQXlCLHVCQUF1QixDQUFDO0FBaURyRSxNQUFNLE9BQU8sd0JBQXdCO0lBQ3BDLFFBQVEsR0FBRyxLQUFLLENBQXlCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsR0FBRyxLQUFLLENBQXVCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELEtBQUssR0FBRyxLQUFLLENBQXlCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFVBQVUs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O1FBQ25DLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFDM0IsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN6RCxDQUFDO3VHQW5HVyx3QkFBd0I7MkZBQXhCLHdCQUF3QixxekNBZ0JQLGFBQWEsb0dBM0RoQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQStCVCw0REFVUyxhQUFhLDBUQUFpQixlQUFlOzsyRkFFM0Msd0JBQXdCO2tCQS9DcEMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsd0NBQXdDO29CQUNsRCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBK0JUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsSUFBSSxFQUFFO3dCQUNMLFlBQVksRUFBRSxZQUFZO3dCQUMxQixZQUFZLEVBQUUsWUFBWTt3QkFDMUIsU0FBUyxFQUFFLFNBQVM7d0JBQ3BCLGNBQWMsRUFBRSxjQUFjO3dCQUM5QixZQUFZLEVBQUUsWUFBWTtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUM7aUJBQ3hEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5qZWN0LFxuXHRpbnB1dCxcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG5cdHZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGdldExvY2FsU3RhdGUsIE5ndEV1bGVyLCBOZ3RPYmplY3QzRCwgTmd0UXVhdGVybmlvbiwgTmd0VmVjdG9yMywgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgRHluYW1pY0RyYXdVc2FnZSwgSW5zdGFuY2VkTWVzaCwgT2JqZWN0M0QgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RyUGh5c2ljcyB9IGZyb20gJy4vcGh5c2ljcyc7XG5pbXBvcnQgeyBOZ3RyQW55Q29sbGlkZXIsIE5ndHJSaWdpZEJvZHksIHJpZ2lkQm9keURlZmF1bHRPcHRpb25zIH0gZnJvbSAnLi9yaWdpZC1ib2R5JztcbmltcG9ydCB7IE5ndHJSaWdpZEJvZHlPcHRpb25zLCBOZ3RyUmlnaWRCb2R5U3RhdGUsIE5ndHJSaWdpZEJvZHlUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBjcmVhdGVDb2xsaWRlck9wdGlvbnMgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RySW5zdGFuY2VkUmlnaWRCb2R5T3B0aW9ucyB7XG5cdGtleTogc3RyaW5nIHwgbnVtYmVyO1xuXHR0eXBlPzogTmd0clJpZ2lkQm9keVR5cGU7XG5cdHBvc2l0aW9uPzogTmd0VmVjdG9yMztcblx0cm90YXRpb24/OiBOZ3RFdWxlcjtcblx0c2NhbGU/OiBOZ3RWZWN0b3IzO1xuXHRxdWF0ZXJuaW9uPzogTmd0UXVhdGVybmlvbjtcblx0dXNlckRhdGE/OiBOZ3RPYmplY3QzRFsndXNlckRhdGEnXTtcblx0b3B0aW9ucz86IE5ndHJSaWdpZEJvZHlPcHRpb25zO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0clJpZ2lkQm9keU9wdGlvbnMgPSByaWdpZEJvZHlEZWZhdWx0T3B0aW9ucztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0LW9iamVjdDNEW25ndHJJbnN0YW5jZWRSaWdpZEJvZGllc10nLFxuXHRleHBvcnRBczogJ2luc3RhbmNlZFJpZ2lkQm9kaWVzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LW9iamVjdDNEICNpbnN0YW5jZVdyYXBwZXI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LW9iamVjdDNEPlxuXG5cdFx0QGZvciAoaW5zdGFuY2Ugb2YgaW5zdGFuY2VzT3B0aW9ucygpOyB0cmFjayBpbnN0YW5jZS5rZXkpIHtcblx0XHRcdDxuZ3Qtb2JqZWN0M0Rcblx0XHRcdFx0W25ndHJSaWdpZEJvZHldPVwiaW5zdGFuY2UudHlwZVwiXG5cdFx0XHRcdFtvcHRpb25zXT1cImluc3RhbmNlLm9wdGlvbnNcIlxuXHRcdFx0XHRbcG9zaXRpb25dPVwiaW5zdGFuY2UucG9zaXRpb25cIlxuXHRcdFx0XHRbcm90YXRpb25dPVwiaW5zdGFuY2Uucm90YXRpb25cIlxuXHRcdFx0XHRbc2NhbGVdPVwiaW5zdGFuY2Uuc2NhbGVcIlxuXHRcdFx0XHRbcXVhdGVybmlvbl09XCJpbnN0YW5jZS5xdWF0ZXJuaW9uXCJcblx0XHRcdFx0W3VzZXJEYXRhXT1cImluc3RhbmNlLnVzZXJEYXRhXCJcblx0XHRcdFx0W25hbWVdPVwiaW5zdGFuY2Uua2V5ICsgJy1pbnN0YW5jZWQtcmlnaWQtYm9keS0nICsgJGluZGV4XCJcblx0XHRcdD5cblx0XHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiW2RhdGEtY29sbGlkZXJzXVwiIC8+XG5cblx0XHRcdFx0QGZvciAoY2hpbGRDb2xsaWRlck9wdGlvbiBvZiBjaGlsZENvbGxpZGVyT3B0aW9ucygpOyB0cmFjayAkaW5kZXgpIHtcblx0XHRcdFx0XHQ8bmd0LW9iamVjdDNEXG5cdFx0XHRcdFx0XHRbbmd0ckNvbGxpZGVyXT1cImNoaWxkQ29sbGlkZXJPcHRpb24uc2hhcGVcIlxuXHRcdFx0XHRcdFx0W2FyZ3NdPVwiY2hpbGRDb2xsaWRlck9wdGlvbi5hcmdzXCJcblx0XHRcdFx0XHRcdFtwb3NpdGlvbl09XCJjaGlsZENvbGxpZGVyT3B0aW9uLnBvc2l0aW9uXCJcblx0XHRcdFx0XHRcdFtyb3RhdGlvbl09XCJjaGlsZENvbGxpZGVyT3B0aW9uLnJvdGF0aW9uXCJcblx0XHRcdFx0XHRcdFtzY2FsZV09XCJjaGlsZENvbGxpZGVyT3B0aW9uLnNjYWxlXCJcblx0XHRcdFx0XHRcdFtuYW1lXT1cIm9iamVjdFJlZi5uYXRpdmVFbGVtZW50Lm5hbWUgKyAnLWluc3RhbmNlZC1jb2xsaWRlci0nICsgJGluZGV4XCJcblx0XHRcdFx0XHRcdFtvcHRpb25zXT1cImNoaWxkQ29sbGlkZXJPcHRpb24uY29sbGlkZXJPcHRpb25zXCJcblx0XHRcdFx0XHQvPlxuXHRcdFx0XHR9XG5cdFx0XHQ8L25ndC1vYmplY3QzRD5cblx0XHR9XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGhvc3Q6IHtcblx0XHQnW3Bvc2l0aW9uXSc6ICdwb3NpdGlvbigpJyxcblx0XHQnW3JvdGF0aW9uXSc6ICdyb3RhdGlvbigpJyxcblx0XHQnW3NjYWxlXSc6ICdzY2FsZSgpJyxcblx0XHQnW3F1YXRlcm5pb25dJzogJ3F1YXRlcm5pb24oKScsXG5cdFx0J1t1c2VyRGF0YV0nOiAndXNlckRhdGEoKScsXG5cdH0sXG5cdGltcG9ydHM6IFtOZ3RyUmlnaWRCb2R5LCBOZ3RyUmlnaWRCb2R5LCBOZ3RyQW55Q29sbGlkZXJdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RySW5zdGFuY2VkUmlnaWRCb2RpZXMge1xuXHRwb3NpdGlvbiA9IGlucHV0PE5ndFZlY3RvcjMgfCB1bmRlZmluZWQ+KFswLCAwLCAwXSk7XG5cdHJvdGF0aW9uID0gaW5wdXQ8Tmd0RXVsZXIgfCB1bmRlZmluZWQ+KFswLCAwLCAwXSk7XG5cdHNjYWxlID0gaW5wdXQ8Tmd0VmVjdG9yMyB8IHVuZGVmaW5lZD4oWzEsIDEsIDFdKTtcblx0cXVhdGVybmlvbiA9IGlucHV0PE5ndFF1YXRlcm5pb24gfCB1bmRlZmluZWQ+KFswLCAwLCAwLCAxXSk7XG5cdHVzZXJEYXRhID0gaW5wdXQ8Tmd0T2JqZWN0M0RbJ3VzZXJEYXRhJ10gfCB1bmRlZmluZWQ+KHt9KTtcblx0aW5zdGFuY2VzID0gaW5wdXQoW10sIHtcblx0XHRhbGlhczogJ25ndHJJbnN0YW5jZWRSaWdpZEJvZGllcycsXG5cdFx0dHJhbnNmb3JtOiAodmFsdWU6IEFycmF5PE5ndHJJbnN0YW5jZWRSaWdpZEJvZHlPcHRpb25zPiB8ICcnKSA9PiB7XG5cdFx0XHRpZiAodmFsdWUgPT09ICcnKSByZXR1cm4gW107XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fSxcblx0fSk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblxuXHRpbnN0YW5jZVdyYXBwZXJSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxPYmplY3QzRD4+KCdpbnN0YW5jZVdyYXBwZXInKTtcblx0cmlnaWRCb2R5UmVmcyA9IHZpZXdDaGlsZHJlbihOZ3RyUmlnaWRCb2R5KTtcblxuXHRwcml2YXRlIHBoeXNpY3MgPSBpbmplY3QoTmd0clBoeXNpY3MpO1xuXHRvYmplY3RSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxPYmplY3QzRD4+KEVsZW1lbnRSZWYpO1xuXG5cdHByaXZhdGUgY29sbGlkZXJzID0gcGljayh0aGlzLm9wdGlvbnMsICdjb2xsaWRlcnMnKTtcblxuXHRwcml2YXRlIGluc3RhbmNlZE1lc2ggPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgaW5zdGFuY2VXcmFwcGVyID0gdGhpcy5pbnN0YW5jZVdyYXBwZXJSZWYoKS5uYXRpdmVFbGVtZW50O1xuXHRcdGlmICghaW5zdGFuY2VXcmFwcGVyKSByZXR1cm4gbnVsbDtcblxuXHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlV3JhcHBlcik7XG5cdFx0aWYgKCFsb2NhbFN0YXRlKSByZXR1cm4gbnVsbDtcblxuXHRcdC8vIHRyYWNrIG9iamVjdCdzIGNoaWxkcmVuXG5cdFx0bG9jYWxTdGF0ZS5vYmplY3RzKCk7XG5cdFx0Y29uc3QgZmlyc3RDaGlsZCA9IGluc3RhbmNlV3JhcHBlci5jaGlsZHJlblswXTtcblx0XHRpZiAoIWZpcnN0Q2hpbGQgfHwgIShmaXJzdENoaWxkIGFzIEluc3RhbmNlZE1lc2gpLmlzSW5zdGFuY2VkTWVzaCkgcmV0dXJuIG51bGw7XG5cblx0XHRyZXR1cm4gZmlyc3RDaGlsZCBhcyBJbnN0YW5jZWRNZXNoO1xuXHR9KTtcblxuXHRwcm90ZWN0ZWQgaW5zdGFuY2VzT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbaW5zdGFuY2VzLCBvcHRpb25zLCBpbnN0YW5jZWRNZXNoXSA9IFt0aGlzLmluc3RhbmNlcygpLCB1bnRyYWNrZWQodGhpcy5vcHRpb25zKSwgdGhpcy5pbnN0YW5jZWRNZXNoKCldO1xuXHRcdGlmICghaW5zdGFuY2VkTWVzaCkgcmV0dXJuIFtdO1xuXHRcdHJldHVybiBpbnN0YW5jZXMubWFwKFxuXHRcdFx0KGluc3RhbmNlLCBpbmRleCkgPT5cblx0XHRcdFx0KHtcblx0XHRcdFx0XHQuLi5pbnN0YW5jZSxcblx0XHRcdFx0XHRvcHRpb25zOiB7XG5cdFx0XHRcdFx0XHQuLi5vcHRpb25zLFxuXHRcdFx0XHRcdFx0Li4uKGluc3RhbmNlLm9wdGlvbnMgfHwge30pLFxuXHRcdFx0XHRcdFx0dHJhbnNmb3JtU3RhdGU6IChzdGF0ZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdC4uLnN0YXRlLFxuXHRcdFx0XHRcdFx0XHRcdGdldE1hdHJpeDogKG1hdHJpeCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aW5zdGFuY2VkTWVzaC5nZXRNYXRyaXhBdChpbmRleCwgbWF0cml4KTtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBtYXRyaXg7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRzZXRNYXRyaXg6IChtYXRyaXgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGluc3RhbmNlZE1lc2guc2V0TWF0cml4QXQoaW5kZXgsIG1hdHJpeCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRpbnN0YW5jZWRNZXNoLmluc3RhbmNlTWF0cml4Lm5lZWRzVXBkYXRlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdG1lc2hUeXBlOiAnaW5zdGFuY2VkTWVzaCcsXG5cdFx0XHRcdFx0XHRcdH0gYXMgTmd0clJpZ2lkQm9keVN0YXRlO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGtleTogYCR7aW5zdGFuY2Uua2V5fS0ke2luZGV4fWAgKyBgJHtpbnN0YW5jZWRNZXNoPy51dWlkIHx8ICcnfWAsXG5cdFx0XHRcdH0pIGFzIE9taXQ8Tmd0ckluc3RhbmNlZFJpZ2lkQm9keU9wdGlvbnMsICdvcHRpb25zJz4gJiB7IG9wdGlvbnM6IFBhcnRpYWw8Tmd0clJpZ2lkQm9keU9wdGlvbnM+IH0sXG5cdFx0KTtcblx0fSk7XG5cblx0cHJvdGVjdGVkIGNoaWxkQ29sbGlkZXJPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGNvbGxpZGVycyA9IHRoaXMuY29sbGlkZXJzKCk7XG5cdFx0Ly8gaWYgc2VsZiBjb2xsaWRlcnMgaXMgZmFsc2UgZXhwbGljaXRseSwgZGlzYWJsZSBhdXRvIGNvbGxpZGVycyBmb3IgdGhpcyBvYmplY3QgZW50aXJlbHkuXG5cdFx0aWYgKGNvbGxpZGVycyA9PT0gZmFsc2UpIHJldHVybiBbXTtcblxuXHRcdGNvbnN0IHBoeXNpY3NDb2xsaWRlcnMgPSB0aGlzLnBoeXNpY3MuY29sbGlkZXJzKCk7XG5cdFx0Ly8gaWYgcGh5c2ljcyBjb2xsaWRlcnMgaXMgZmFsc2UgZXhwbGljaXRseSwgZGlzYWJsZSBhdXRvIGNvbGxpZGVycyBmb3IgdGhpcyBvYmplY3QgZW50aXJlbHkuXG5cdFx0aWYgKHBoeXNpY3NDb2xsaWRlcnMgPT09IGZhbHNlKSByZXR1cm4gW107XG5cblx0XHRjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zKCk7XG5cdFx0Ly8gaWYgY29sbGlkZXJzIG9uIG9iamVjdCBpcyBub3Qgc2V0LCB1c2UgcGh5c2ljcyBjb2xsaWRlcnNcblx0XHRpZiAoIW9wdGlvbnMuY29sbGlkZXJzKSBvcHRpb25zLmNvbGxpZGVycyA9IHBoeXNpY3NDb2xsaWRlcnM7XG5cblx0XHRjb25zdCBvYmplY3RMb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZSh0aGlzLm9iamVjdFJlZi5uYXRpdmVFbGVtZW50KTtcblx0XHQvLyB0cmFjayBvYmplY3QncyBjaGlsZHJlblxuXHRcdG9iamVjdExvY2FsU3RhdGU/Lm5vbk9iamVjdHMoKTtcblxuXHRcdHJldHVybiBjcmVhdGVDb2xsaWRlck9wdGlvbnModGhpcy5vYmplY3RSZWYubmF0aXZlRWxlbWVudCwgb3B0aW9ucyk7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IE9iamVjdDNEIH0pO1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHR0aGlzLnNldEluc3RhbmNlZE1lc2hNYXRyaXhFZmZlY3QoKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgc2V0SW5zdGFuY2VkTWVzaE1hdHJpeEVmZmVjdCgpIHtcblx0XHRjb25zdCBpbnN0YW5jZWRNZXNoID0gdGhpcy5pbnN0YW5jZWRNZXNoKCk7XG5cdFx0aWYgKCFpbnN0YW5jZWRNZXNoKSByZXR1cm47XG5cdFx0aW5zdGFuY2VkTWVzaC5pbnN0YW5jZU1hdHJpeC5zZXRVc2FnZShEeW5hbWljRHJhd1VzYWdlKTtcblx0fVxufVxuIl19
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2VkLXJpZ2lkLWJvZGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcmFwaWVyL3NyYy9saWIvaW5zdGFuY2VkLXJpZ2lkLWJvZGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBb0QsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWlCLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFhaEQsTUFBTSxjQUFjLEdBQXlCLHVCQUF1QixDQUFDO0FBaURyRSxNQUFNLE9BQU8sd0JBQXdCO0lBQ3BDLFFBQVEsR0FBRyxLQUFLLENBQXlCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsR0FBRyxLQUFLLENBQXVCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELEtBQUssR0FBRyxLQUFLLENBQXlCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFVBQVUs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LGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRSxDQUFDLENBQUMsQ0FBQztJQUVIO1FBQ0MsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUVyQixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxhQUFhO2dCQUFFLE9BQU87WUFDM0IsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7dUdBbkdXLHdCQUF3QjsyRkFBeEIsd0JBQXdCLHF6Q0FnQlAsYUFBYSxvR0EzRGhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBK0JULDREQVVTLGFBQWEsMFRBQUUsZUFBZTs7MkZBRTVCLHdCQUF3QjtrQkEvQ3BDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHdDQUF3QztvQkFDbEQsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQStCVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLElBQUksRUFBRTt3QkFDTCxZQUFZLEVBQUUsWUFBWTt3QkFDMUIsWUFBWSxFQUFFLFlBQVk7d0JBQzFCLFNBQVMsRUFBRSxTQUFTO3dCQUNwQixjQUFjLEVBQUUsY0FBYzt3QkFDOUIsWUFBWSxFQUFFLFlBQVk7cUJBQzFCO29CQUNELE9BQU8sRUFBRSxDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUM7aUJBQ3pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5qZWN0LFxuXHRpbnB1dCxcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG5cdHZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGdldExvY2FsU3RhdGUsIE5ndEV1bGVyLCBOZ3RPYmplY3QzRCwgTmd0UXVhdGVybmlvbiwgTmd0VmVjdG9yMywgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgRHluYW1pY0RyYXdVc2FnZSwgSW5zdGFuY2VkTWVzaCwgT2JqZWN0M0QgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RyUGh5c2ljcyB9IGZyb20gJy4vcGh5c2ljcyc7XG5pbXBvcnQgeyBOZ3RyQW55Q29sbGlkZXIsIE5ndHJSaWdpZEJvZHksIHJpZ2lkQm9keURlZmF1bHRPcHRpb25zIH0gZnJvbSAnLi9yaWdpZC1ib2R5JztcbmltcG9ydCB7IE5ndHJSaWdpZEJvZHlPcHRpb25zLCBOZ3RyUmlnaWRCb2R5U3RhdGUsIE5ndHJSaWdpZEJvZHlUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBjcmVhdGVDb2xsaWRlck9wdGlvbnMgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RySW5zdGFuY2VkUmlnaWRCb2R5T3B0aW9ucyB7XG5cdGtleTogc3RyaW5nIHwgbnVtYmVyO1xuXHR0eXBlPzogTmd0clJpZ2lkQm9keVR5cGU7XG5cdHBvc2l0aW9uPzogTmd0VmVjdG9yMztcblx0cm90YXRpb24/OiBOZ3RFdWxlcjtcblx0c2NhbGU/OiBOZ3RWZWN0b3IzO1xuXHRxdWF0ZXJuaW9uPzogTmd0UXVhdGVybmlvbjtcblx0dXNlckRhdGE/OiBOZ3RPYmplY3QzRFsndXNlckRhdGEnXTtcblx0b3B0aW9ucz86IE5ndHJSaWdpZEJvZHlPcHRpb25zO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0clJpZ2lkQm9keU9wdGlvbnMgPSByaWdpZEJvZHlEZWZhdWx0T3B0aW9ucztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0LW9iamVjdDNEW25ndHJJbnN0YW5jZWRSaWdpZEJvZGllc10nLFxuXHRleHBvcnRBczogJ2luc3RhbmNlZFJpZ2lkQm9kaWVzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LW9iamVjdDNEICNpbnN0YW5jZVdyYXBwZXI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LW9iamVjdDNEPlxuXG5cdFx0QGZvciAoaW5zdGFuY2Ugb2YgaW5zdGFuY2VzT3B0aW9ucygpOyB0cmFjayBpbnN0YW5jZS5rZXkpIHtcblx0XHRcdDxuZ3Qtb2JqZWN0M0Rcblx0XHRcdFx0W25ndHJSaWdpZEJvZHldPVwiaW5zdGFuY2UudHlwZVwiXG5cdFx0XHRcdFtvcHRpb25zXT1cImluc3RhbmNlLm9wdGlvbnNcIlxuXHRcdFx0XHRbcG9zaXRpb25dPVwiaW5zdGFuY2UucG9zaXRpb25cIlxuXHRcdFx0XHRbcm90YXRpb25dPVwiaW5zdGFuY2Uucm90YXRpb25cIlxuXHRcdFx0XHRbc2NhbGVdPVwiaW5zdGFuY2Uuc2NhbGVcIlxuXHRcdFx0XHRbcXVhdGVybmlvbl09XCJpbnN0YW5jZS5xdWF0ZXJuaW9uXCJcblx0XHRcdFx0W3VzZXJEYXRhXT1cImluc3RhbmNlLnVzZXJEYXRhXCJcblx0XHRcdFx0W25hbWVdPVwiaW5zdGFuY2Uua2V5ICsgJy1pbnN0YW5jZWQtcmlnaWQtYm9keS0nICsgJGluZGV4XCJcblx0XHRcdD5cblx0XHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiW2RhdGEtY29sbGlkZXJzXVwiIC8+XG5cblx0XHRcdFx0QGZvciAoY2hpbGRDb2xsaWRlck9wdGlvbiBvZiBjaGlsZENvbGxpZGVyT3B0aW9ucygpOyB0cmFjayAkaW5kZXgpIHtcblx0XHRcdFx0XHQ8bmd0LW9iamVjdDNEXG5cdFx0XHRcdFx0XHRbbmd0ckNvbGxpZGVyXT1cImNoaWxkQ29sbGlkZXJPcHRpb24uc2hhcGVcIlxuXHRcdFx0XHRcdFx0W2FyZ3NdPVwiY2hpbGRDb2xsaWRlck9wdGlvbi5hcmdzXCJcblx0XHRcdFx0XHRcdFtwb3NpdGlvbl09XCJjaGlsZENvbGxpZGVyT3B0aW9uLnBvc2l0aW9uXCJcblx0XHRcdFx0XHRcdFtyb3RhdGlvbl09XCJjaGlsZENvbGxpZGVyT3B0aW9uLnJvdGF0aW9uXCJcblx0XHRcdFx0XHRcdFtzY2FsZV09XCJjaGlsZENvbGxpZGVyT3B0aW9uLnNjYWxlXCJcblx0XHRcdFx0XHRcdFtuYW1lXT1cIm9iamVjdFJlZi5uYXRpdmVFbGVtZW50Lm5hbWUgKyAnLWluc3RhbmNlZC1jb2xsaWRlci0nICsgJGluZGV4XCJcblx0XHRcdFx0XHRcdFtvcHRpb25zXT1cImNoaWxkQ29sbGlkZXJPcHRpb24uY29sbGlkZXJPcHRpb25zXCJcblx0XHRcdFx0XHQvPlxuXHRcdFx0XHR9XG5cdFx0XHQ8L25ndC1vYmplY3QzRD5cblx0XHR9XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGhvc3Q6IHtcblx0XHQnW3Bvc2l0aW9uXSc6ICdwb3NpdGlvbigpJyxcblx0XHQnW3JvdGF0aW9uXSc6ICdyb3RhdGlvbigpJyxcblx0XHQnW3NjYWxlXSc6ICdzY2FsZSgpJyxcblx0XHQnW3F1YXRlcm5pb25dJzogJ3F1YXRlcm5pb24oKScsXG5cdFx0J1t1c2VyRGF0YV0nOiAndXNlckRhdGEoKScsXG5cdH0sXG5cdGltcG9ydHM6IFtOZ3RyUmlnaWRCb2R5LCBOZ3RyQW55Q29sbGlkZXJdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RySW5zdGFuY2VkUmlnaWRCb2RpZXMge1xuXHRwb3NpdGlvbiA9IGlucHV0PE5ndFZlY3RvcjMgfCB1bmRlZmluZWQ+KFswLCAwLCAwXSk7XG5cdHJvdGF0aW9uID0gaW5wdXQ8Tmd0RXVsZXIgfCB1bmRlZmluZWQ+KFswLCAwLCAwXSk7XG5cdHNjYWxlID0gaW5wdXQ8Tmd0VmVjdG9yMyB8IHVuZGVmaW5lZD4oWzEsIDEsIDFdKTtcblx0cXVhdGVybmlvbiA9IGlucHV0PE5ndFF1YXRlcm5pb24gfCB1bmRlZmluZWQ+KFswLCAwLCAwLCAxXSk7XG5cdHVzZXJEYXRhID0gaW5wdXQ8Tmd0T2JqZWN0M0RbJ3VzZXJEYXRhJ10gfCB1bmRlZmluZWQ+KHt9KTtcblx0aW5zdGFuY2VzID0gaW5wdXQoW10sIHtcblx0XHRhbGlhczogJ25ndHJJbnN0YW5jZWRSaWdpZEJvZGllcycsXG5cdFx0dHJhbnNmb3JtOiAodmFsdWU6IEFycmF5PE5ndHJJbnN0YW5jZWRSaWdpZEJvZHlPcHRpb25zPiB8ICcnKSA9PiB7XG5cdFx0XHRpZiAodmFsdWUgPT09ICcnKSByZXR1cm4gW107XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fSxcblx0fSk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblxuXHRpbnN0YW5jZVdyYXBwZXJSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxPYmplY3QzRD4+KCdpbnN0YW5jZVdyYXBwZXInKTtcblx0cmlnaWRCb2R5UmVmcyA9IHZpZXdDaGlsZHJlbihOZ3RyUmlnaWRCb2R5KTtcblxuXHRwcml2YXRlIHBoeXNpY3MgPSBpbmplY3QoTmd0clBoeXNpY3MpO1xuXHRvYmplY3RSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxPYmplY3QzRD4+KEVsZW1lbnRSZWYpO1xuXG5cdHByaXZhdGUgY29sbGlkZXJzID0gcGljayh0aGlzLm9wdGlvbnMsICdjb2xsaWRlcnMnKTtcblxuXHRwcml2YXRlIGluc3RhbmNlZE1lc2ggPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgaW5zdGFuY2VXcmFwcGVyID0gdGhpcy5pbnN0YW5jZVdyYXBwZXJSZWYoKS5uYXRpdmVFbGVtZW50O1xuXHRcdGlmICghaW5zdGFuY2VXcmFwcGVyKSByZXR1cm4gbnVsbDtcblxuXHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlV3JhcHBlcik7XG5cdFx0aWYgKCFsb2NhbFN0YXRlKSByZXR1cm4gbnVsbDtcblxuXHRcdC8vIHRyYWNrIG9iamVjdCdzIGNoaWxkcmVuXG5cdFx0bG9jYWxTdGF0ZS5vYmplY3RzKCk7XG5cdFx0Y29uc3QgZmlyc3RDaGlsZCA9IGluc3RhbmNlV3JhcHBlci5jaGlsZHJlblswXTtcblx0XHRpZiAoIWZpcnN0Q2hpbGQgfHwgIShmaXJzdENoaWxkIGFzIEluc3RhbmNlZE1lc2gpLmlzSW5zdGFuY2VkTWVzaCkgcmV0dXJuIG51bGw7XG5cblx0XHRyZXR1cm4gZmlyc3RDaGlsZCBhcyBJbnN0YW5jZWRNZXNoO1xuXHR9KTtcblxuXHRwcm90ZWN0ZWQgaW5zdGFuY2VzT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbaW5zdGFuY2VzLCBvcHRpb25zLCBpbnN0YW5jZWRNZXNoXSA9IFt0aGlzLmluc3RhbmNlcygpLCB1bnRyYWNrZWQodGhpcy5vcHRpb25zKSwgdGhpcy5pbnN0YW5jZWRNZXNoKCldO1xuXHRcdGlmICghaW5zdGFuY2VkTWVzaCkgcmV0dXJuIFtdO1xuXHRcdHJldHVybiBpbnN0YW5jZXMubWFwKFxuXHRcdFx0KGluc3RhbmNlLCBpbmRleCkgPT5cblx0XHRcdFx0KHtcblx0XHRcdFx0XHQuLi5pbnN0YW5jZSxcblx0XHRcdFx0XHRvcHRpb25zOiB7XG5cdFx0XHRcdFx0XHQuLi5vcHRpb25zLFxuXHRcdFx0XHRcdFx0Li4uKGluc3RhbmNlLm9wdGlvbnMgfHwge30pLFxuXHRcdFx0XHRcdFx0dHJhbnNmb3JtU3RhdGU6IChzdGF0ZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdC4uLnN0YXRlLFxuXHRcdFx0XHRcdFx0XHRcdGdldE1hdHJpeDogKG1hdHJpeCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aW5zdGFuY2VkTWVzaC5nZXRNYXRyaXhBdChpbmRleCwgbWF0cml4KTtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBtYXRyaXg7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRzZXRNYXRyaXg6IChtYXRyaXgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGluc3RhbmNlZE1lc2guc2V0TWF0cml4QXQoaW5kZXgsIG1hdHJpeCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRpbnN0YW5jZWRNZXNoLmluc3RhbmNlTWF0cml4Lm5lZWRzVXBkYXRlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdG1lc2hUeXBlOiAnaW5zdGFuY2VkTWVzaCcsXG5cdFx0XHRcdFx0XHRcdH0gYXMgTmd0clJpZ2lkQm9keVN0YXRlO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGtleTogYCR7aW5zdGFuY2Uua2V5fS0ke2luZGV4fWAgKyBgJHtpbnN0YW5jZWRNZXNoPy51dWlkIHx8ICcnfWAsXG5cdFx0XHRcdH0pIGFzIE9taXQ8Tmd0ckluc3RhbmNlZFJpZ2lkQm9keU9wdGlvbnMsICdvcHRpb25zJz4gJiB7IG9wdGlvbnM6IFBhcnRpYWw8Tmd0clJpZ2lkQm9keU9wdGlvbnM+IH0sXG5cdFx0KTtcblx0fSk7XG5cblx0cHJvdGVjdGVkIGNoaWxkQ29sbGlkZXJPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGNvbGxpZGVycyA9IHRoaXMuY29sbGlkZXJzKCk7XG5cdFx0Ly8gaWYgc2VsZiBjb2xsaWRlcnMgaXMgZmFsc2UgZXhwbGljaXRseSwgZGlzYWJsZSBhdXRvIGNvbGxpZGVycyBmb3IgdGhpcyBvYmplY3QgZW50aXJlbHkuXG5cdFx0aWYgKGNvbGxpZGVycyA9PT0gZmFsc2UpIHJldHVybiBbXTtcblxuXHRcdGNvbnN0IHBoeXNpY3NDb2xsaWRlcnMgPSB0aGlzLnBoeXNpY3MuY29sbGlkZXJzKCk7XG5cdFx0Ly8gaWYgcGh5c2ljcyBjb2xsaWRlcnMgaXMgZmFsc2UgZXhwbGljaXRseSBBTkQgY29sbGlkZXJzIGlzIG5vdCBzZXQsIGRpc2FibGUgYXV0byBjb2xsaWRlcnMgZm9yIHRoaXMgb2JqZWN0IGVudGlyZWx5LlxuXHRcdGlmIChwaHlzaWNzQ29sbGlkZXJzID09PSBmYWxzZSAmJiBjb2xsaWRlcnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFtdO1xuXG5cdFx0Y29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucygpO1xuXHRcdC8vIGlmIGNvbGxpZGVycyBvbiBvYmplY3QgaXMgbm90IHNldCwgdXNlIHBoeXNpY3MgY29sbGlkZXJzXG5cdFx0aWYgKCFvcHRpb25zLmNvbGxpZGVycykgb3B0aW9ucy5jb2xsaWRlcnMgPSBwaHlzaWNzQ29sbGlkZXJzO1xuXG5cdFx0Y29uc3Qgb2JqZWN0TG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUodGhpcy5vYmplY3RSZWYubmF0aXZlRWxlbWVudCk7XG5cdFx0aWYgKCFvYmplY3RMb2NhbFN0YXRlKSByZXR1cm4gW107XG5cblx0XHQvLyB0cmFjayBvYmplY3QncyBwYXJlbnQgYW5kIG5vbi1vYmplY3QgY2hpbGRyZW5cblx0XHRjb25zdCBbcGFyZW50XSA9IFtvYmplY3RMb2NhbFN0YXRlLnBhcmVudCgpLCBvYmplY3RMb2NhbFN0YXRlLm5vbk9iamVjdHMoKV07XG5cdFx0aWYgKCFwYXJlbnQgfHwgIShwYXJlbnQgYXMgT2JqZWN0M0QpLmlzT2JqZWN0M0QpIHJldHVybiBbXTtcblxuXHRcdHJldHVybiBjcmVhdGVDb2xsaWRlck9wdGlvbnModGhpcy5vYmplY3RSZWYubmF0aXZlRWxlbWVudCwgb3B0aW9ucyk7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IE9iamVjdDNEIH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IGluc3RhbmNlZE1lc2ggPSB0aGlzLmluc3RhbmNlZE1lc2goKTtcblx0XHRcdGlmICghaW5zdGFuY2VkTWVzaCkgcmV0dXJuO1xuXHRcdFx0aW5zdGFuY2VkTWVzaC5pbnN0YW5jZU1hdHJpeC5zZXRVc2FnZShEeW5hbWljRHJhd1VzYWdlKTtcblx0XHR9KTtcblx0fVxufVxuIl19
|
|
@@ -14,16 +14,16 @@ export class NgtrMeshCollider {
|
|
|
14
14
|
const rigidBodyOptions = this.rigidBody.options();
|
|
15
15
|
rigidBodyOptions.colliders = this.colliders();
|
|
16
16
|
const objectLocalState = getLocalState(this.objectRef.nativeElement);
|
|
17
|
+
if (!objectLocalState)
|
|
18
|
+
return [];
|
|
17
19
|
// track object's children
|
|
18
|
-
objectLocalState
|
|
19
|
-
objectLocalState
|
|
20
|
+
objectLocalState.nonObjects();
|
|
21
|
+
objectLocalState.objects();
|
|
20
22
|
return createColliderOptions(this.objectRef.nativeElement, rigidBodyOptions, false);
|
|
21
23
|
});
|
|
22
24
|
constructor() {
|
|
23
25
|
extend({ Object3D });
|
|
24
|
-
|
|
25
|
-
this.objectRef.nativeElement.userData = {};
|
|
26
|
-
}
|
|
26
|
+
this.objectRef.nativeElement.userData ??= {};
|
|
27
27
|
this.objectRef.nativeElement.userData['ngtrRapierType'] = 'MeshCollider';
|
|
28
28
|
}
|
|
29
29
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtrMeshCollider, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -66,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
66
66
|
imports: [NgtrAnyCollider],
|
|
67
67
|
}]
|
|
68
68
|
}], ctorParameters: () => [] });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1jb2xsaWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcmFwaWVyL3NyYy9saWIvbWVzaC1jb2xsaWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBdUJoRCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzVCLFNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUE0QixFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFFckYsU0FBUyxHQUFHLE1BQU0sQ0FBdUIsVUFBVSxDQUFDLENBQUM7SUFDckQsU0FBUyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNsQyxPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXBCLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xELGdCQUFnQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFOUMsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFakMsMEJBQTBCO1FBQzFCLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlCLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTNCLE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckYsQ0FBQyxDQUFDLENBQUM7SUFFSDtRQUNDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxjQUFjLENBQUM7SUFDMUUsQ0FBQzt1R0F6QlcsZ0JBQWdCOzJGQUFoQixnQkFBZ0IsZ1BBbEJsQjs7Ozs7Ozs7Ozs7OztFQWFULDREQUdTLGVBQWU7OzJGQUViLGdCQUFnQjtrQkFyQjVCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGdDQUFnQztvQkFDMUMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7OztFQWFUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRFbGVtZW50UmVmLFxuXHRpbmplY3QsXG5cdGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgZ2V0TG9jYWxTdGF0ZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgT2JqZWN0M0QgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RyUGh5c2ljcyB9IGZyb20gJy4vcGh5c2ljcyc7XG5pbXBvcnQgeyBOZ3RyQW55Q29sbGlkZXIsIE5ndHJSaWdpZEJvZHkgfSBmcm9tICcuL3JpZ2lkLWJvZHknO1xuaW1wb3J0IHsgTmd0clJpZ2lkQm9keUF1dG9Db2xsaWRlciB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlQ29sbGlkZXJPcHRpb25zIH0gZnJvbSAnLi91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndC1vYmplY3QzRFtuZ3RyTWVzaENvbGxpZGVyXScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5nLWNvbnRlbnQgLz5cblx0XHRAZm9yIChjaGlsZENvbGxpZGVyT3B0aW9uIG9mIGNoaWxkQ29sbGlkZXJPcHRpb25zKCk7IHRyYWNrICRpbmRleCkge1xuXHRcdFx0PG5ndC1vYmplY3QzRFxuXHRcdFx0XHRbbmd0ckNvbGxpZGVyXT1cImNoaWxkQ29sbGlkZXJPcHRpb24uc2hhcGVcIlxuXHRcdFx0XHRbYXJnc109XCJjaGlsZENvbGxpZGVyT3B0aW9uLmFyZ3NcIlxuXHRcdFx0XHRbcG9zaXRpb25dPVwiY2hpbGRDb2xsaWRlck9wdGlvbi5wb3NpdGlvblwiXG5cdFx0XHRcdFtyb3RhdGlvbl09XCJjaGlsZENvbGxpZGVyT3B0aW9uLnJvdGF0aW9uXCJcblx0XHRcdFx0W3NjYWxlXT1cImNoaWxkQ29sbGlkZXJPcHRpb24uc2NhbGVcIlxuXHRcdFx0XHRbbmFtZV09XCJvYmplY3RSZWYubmF0aXZlRWxlbWVudC5uYW1lICsgJy1tZXNoLWNvbGxpZGVyLScgKyAkaW5kZXhcIlxuXHRcdFx0XHRbb3B0aW9uc109XCJjaGlsZENvbGxpZGVyT3B0aW9uLmNvbGxpZGVyT3B0aW9uc1wiXG5cdFx0XHQvPlxuXHRcdH1cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndHJBbnlDb2xsaWRlcl0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHJNZXNoQ29sbGlkZXIge1xuXHRjb2xsaWRlcnMgPSBpbnB1dC5yZXF1aXJlZDxOZ3RyUmlnaWRCb2R5QXV0b0NvbGxpZGVyPih7IGFsaWFzOiAnbmd0ck1lc2hDb2xsaWRlcicgfSk7XG5cblx0b2JqZWN0UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8T2JqZWN0M0Q+PihFbGVtZW50UmVmKTtcblx0cmlnaWRCb2R5ID0gaW5qZWN0KE5ndHJSaWdpZEJvZHkpO1xuXHRwaHlzaWNzID0gaW5qZWN0KE5ndHJQaHlzaWNzKTtcblxuXHRwcm90ZWN0ZWQgY2hpbGRDb2xsaWRlck9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgcmlnaWRCb2R5T3B0aW9ucyA9IHRoaXMucmlnaWRCb2R5Lm9wdGlvbnMoKTtcblx0XHRyaWdpZEJvZHlPcHRpb25zLmNvbGxpZGVycyA9IHRoaXMuY29sbGlkZXJzKCk7XG5cblx0XHRjb25zdCBvYmplY3RMb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZSh0aGlzLm9iamVjdFJlZi5uYXRpdmVFbGVtZW50KTtcblx0XHRpZiAoIW9iamVjdExvY2FsU3RhdGUpIHJldHVybiBbXTtcblxuXHRcdC8vIHRyYWNrIG9iamVjdCdzIGNoaWxkcmVuXG5cdFx0b2JqZWN0TG9jYWxTdGF0ZS5ub25PYmplY3RzKCk7XG5cdFx0b2JqZWN0TG9jYWxTdGF0ZS5vYmplY3RzKCk7XG5cblx0XHRyZXR1cm4gY3JlYXRlQ29sbGlkZXJPcHRpb25zKHRoaXMub2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQsIHJpZ2lkQm9keU9wdGlvbnMsIGZhbHNlKTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgT2JqZWN0M0QgfSk7XG5cdFx0dGhpcy5vYmplY3RSZWYubmF0aXZlRWxlbWVudC51c2VyRGF0YSA/Pz0ge307XG5cdFx0dGhpcy5vYmplY3RSZWYubmF0aXZlRWxlbWVudC51c2VyRGF0YVsnbmd0clJhcGllclR5cGUnXSA9ICdNZXNoQ29sbGlkZXInO1xuXHR9XG59XG4iXX0=
|
package/esm2022/lib/physics.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, contentChild, DestroyRef, Directive, effect, inject, input, signal, TemplateRef, untracked, } from '@angular/core';
|
|
2
3
|
import { EventQueue } from '@dimforge/rapier3d-compat';
|
|
3
4
|
import { injectStore, pick, vector3 } from 'angular-three';
|
|
4
5
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
@@ -26,8 +27,21 @@ const defaultOptions = {
|
|
|
26
27
|
timeStep: 1 / 60,
|
|
27
28
|
debug: false,
|
|
28
29
|
};
|
|
30
|
+
export class NgtrPhysicsFallback {
|
|
31
|
+
static ngTemplateContextGuard(_, ctx) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtrPhysicsFallback, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
35
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: NgtrPhysicsFallback, isStandalone: true, selector: "ng-template[rapierFallback]", ngImport: i0 });
|
|
36
|
+
}
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtrPhysicsFallback, decorators: [{
|
|
38
|
+
type: Directive,
|
|
39
|
+
args: [{ selector: 'ng-template[rapierFallback]', standalone: true }]
|
|
40
|
+
}] });
|
|
29
41
|
export class NgtrPhysics {
|
|
30
42
|
options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
43
|
+
content = contentChild.required(TemplateRef);
|
|
44
|
+
fallbackContent = contentChild(NgtrPhysicsFallback);
|
|
31
45
|
updatePriority = pick(this.options, 'updatePriority');
|
|
32
46
|
updateLoop = pick(this.options, 'updateLoop');
|
|
33
47
|
numSolverIterations = pick(this.options, 'numSolverIterations');
|
|
@@ -48,6 +62,7 @@ export class NgtrPhysics {
|
|
|
48
62
|
store = injectStore();
|
|
49
63
|
destroyRef = inject(DestroyRef);
|
|
50
64
|
rapierConstruct = signal(null);
|
|
65
|
+
rapierError = signal(null);
|
|
51
66
|
rapier = this.rapierConstruct.asReadonly();
|
|
52
67
|
ready = computed(() => !!this.rapier());
|
|
53
68
|
worldSingleton = computed(() => {
|
|
@@ -75,7 +90,7 @@ export class NgtrPhysics {
|
|
|
75
90
|
.then(this.rapierConstruct.set.bind(this.rapierConstruct))
|
|
76
91
|
.catch((err) => {
|
|
77
92
|
console.error(`[NGT] Failed to load rapier3d-compat`, err);
|
|
78
|
-
|
|
93
|
+
this.rapierError.set(err?.message ?? err.toString());
|
|
79
94
|
});
|
|
80
95
|
effect(() => {
|
|
81
96
|
this.updateWorldEffect();
|
|
@@ -325,18 +340,24 @@ export class NgtrPhysics {
|
|
|
325
340
|
};
|
|
326
341
|
}
|
|
327
342
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtrPhysics, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
328
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtrPhysics, isStandalone: true, selector: "ngtr-physics", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
329
|
-
@if (
|
|
330
|
-
|
|
343
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtrPhysics, isStandalone: true, selector: "ngtr-physics", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "fallbackContent", first: true, predicate: NgtrPhysicsFallback, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
344
|
+
@if (rapierConstruct()) {
|
|
345
|
+
@if (debug()) {
|
|
346
|
+
<ngtr-debug [world]="worldSingleton()?.proxy" />
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
<ngtr-frame-stepper
|
|
350
|
+
[ready]="ready()"
|
|
351
|
+
[stepFn]="step.bind(this)"
|
|
352
|
+
[type]="updateLoop()"
|
|
353
|
+
[updatePriority]="updatePriority()"
|
|
354
|
+
/>
|
|
355
|
+
|
|
356
|
+
<ng-container [ngTemplateOutlet]="content()" />
|
|
357
|
+
} @else if (rapierError() && !!fallbackContent()) {
|
|
358
|
+
<ng-container [ngTemplateOutlet]="$any(fallbackContent())" [ngTemplateOutletContext]="{ error: rapierError() }" />
|
|
331
359
|
}
|
|
332
|
-
|
|
333
|
-
[ready]="ready()"
|
|
334
|
-
[stepFn]="step.bind(this)"
|
|
335
|
-
[type]="updateLoop()"
|
|
336
|
-
[updatePriority]="updatePriority()"
|
|
337
|
-
/>
|
|
338
|
-
<ng-content />
|
|
339
|
-
`, isInline: true, dependencies: [{ kind: "component", type: NgtrDebug, selector: "ngtr-debug", inputs: ["world"] }, { kind: "directive", type: NgtrFrameStepper, selector: "ngtr-frame-stepper", inputs: ["ready", "updatePriority", "stepFn", "type"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
360
|
+
`, isInline: true, dependencies: [{ kind: "component", type: NgtrDebug, selector: "ngtr-debug", inputs: ["world"] }, { kind: "directive", type: NgtrFrameStepper, selector: "ngtr-frame-stepper", inputs: ["ready", "updatePriority", "stepFn", "type"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
340
361
|
}
|
|
341
362
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtrPhysics, decorators: [{
|
|
342
363
|
type: Component,
|
|
@@ -344,19 +365,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
344
365
|
selector: 'ngtr-physics',
|
|
345
366
|
standalone: true,
|
|
346
367
|
template: `
|
|
347
|
-
@if (
|
|
348
|
-
|
|
368
|
+
@if (rapierConstruct()) {
|
|
369
|
+
@if (debug()) {
|
|
370
|
+
<ngtr-debug [world]="worldSingleton()?.proxy" />
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
<ngtr-frame-stepper
|
|
374
|
+
[ready]="ready()"
|
|
375
|
+
[stepFn]="step.bind(this)"
|
|
376
|
+
[type]="updateLoop()"
|
|
377
|
+
[updatePriority]="updatePriority()"
|
|
378
|
+
/>
|
|
379
|
+
|
|
380
|
+
<ng-container [ngTemplateOutlet]="content()" />
|
|
381
|
+
} @else if (rapierError() && !!fallbackContent()) {
|
|
382
|
+
<ng-container [ngTemplateOutlet]="$any(fallbackContent())" [ngTemplateOutletContext]="{ error: rapierError() }" />
|
|
349
383
|
}
|
|
350
|
-
<ngtr-frame-stepper
|
|
351
|
-
[ready]="ready()"
|
|
352
|
-
[stepFn]="step.bind(this)"
|
|
353
|
-
[type]="updateLoop()"
|
|
354
|
-
[updatePriority]="updatePriority()"
|
|
355
|
-
/>
|
|
356
|
-
<ng-content />
|
|
357
384
|
`,
|
|
358
385
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
359
|
-
imports: [NgtrDebug, NgtrFrameStepper],
|
|
386
|
+
imports: [NgtrDebug, NgtrFrameStepper, NgTemplateOutlet],
|
|
360
387
|
}]
|
|
361
388
|
}], ctorParameters: () => [] });
|
|
362
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGh5c2ljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcmFwaWVyL3NyYy9saWIvcGh5c2ljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBZSxFQUFrQixVQUFVLEVBQTJCLE1BQU0sMkJBQTJCLENBQUM7QUFDeEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUF1QixNQUFNLE9BQU8sQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFVbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDRCQUE0QixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUU3RSxNQUFNLGNBQWMsR0FBdUI7SUFDMUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0QixrQkFBa0IsRUFBRSxLQUFLO0lBQ3pCLG1CQUFtQixFQUFFLENBQUM7SUFDdEIsK0JBQStCLEVBQUUsQ0FBQztJQUNsQyx3QkFBd0IsRUFBRSxDQUFDO0lBQzNCLGtCQUFrQixFQUFFLEtBQUs7SUFDekIsYUFBYSxFQUFFLEdBQUc7SUFDbEIsY0FBYyxFQUFFLENBQUM7SUFDakIs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RUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7OztFQVdUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUM7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdERlc3Ryb3lSZWYsXG5cdGVmZmVjdCxcblx0aW5qZWN0LFxuXHRpbnB1dCxcblx0c2lnbmFsLFxuXHR1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IFJBUElFUiwgeyBDb2xsaWRlckhhbmRsZSwgRXZlbnRRdWV1ZSwgUm90YXRpb24sIFZlY3RvciwgV29ybGQgfSBmcm9tICdAZGltZm9yZ2UvcmFwaWVyM2QtY29tcGF0JztcbmltcG9ydCB7IGluamVjdFN0b3JlLCBwaWNrLCB2ZWN0b3IzIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBNYXRoVXRpbHMsIFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RyRGVidWcgfSBmcm9tICcuL2RlYnVnJztcbmltcG9ydCB7IE5ndHJGcmFtZVN0ZXBwZXIgfSBmcm9tICcuL2ZyYW1lLXN0ZXBwZXInO1xuaW1wb3J0IHsgX21hdHJpeDQsIF9wb3NpdGlvbiwgX3JvdGF0aW9uLCBfc2NhbGUgfSBmcm9tICcuL3NoYXJlZCc7XG5pbXBvcnQge1xuXHROZ3RyQ29sbGlkZXJTdGF0ZU1hcCxcblx0Tmd0ckNvbGxpc2lvblBheWxvYWQsXG5cdE5ndHJDb2xsaXNpb25Tb3VyY2UsXG5cdE5ndHJFdmVudE1hcCxcblx0Tmd0clBoeXNpY3NPcHRpb25zLFxuXHROZ3RyUmlnaWRCb2R5U3RhdGVNYXAsXG5cdE5ndHJXb3JsZFN0ZXBDYWxsYmFja1NldCxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBjcmVhdGVTaW5nbGV0b25Qcm94eSwgcmFwaWVyUXVhdGVybmlvblRvUXVhdGVybmlvbiB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0clBoeXNpY3NPcHRpb25zID0ge1xuXHRncmF2aXR5OiBbMCwgLTkuODEsIDBdLFxuXHRhbGxvd2VkTGluZWFyRXJyb3I6IDAuMDAxLFxuXHRudW1Tb2x2ZXJJdGVyYXRpb25zOiA0LFxuXHRudW1BZGRpdGlvbmFsRnJpY3Rpb25JdGVyYXRpb25zOiA0LFxuXHRudW1JbnRlcm5hbFBnc0l0ZXJhdGlvbnM6IDEsXG5cdHByZWRpY3Rpb25EaXN0YW5jZTogMC4wMDIsXG5cdG1pbklzbGFuZFNpemU6IDEyOCxcblx0bWF4Q2NkU3Vic3RlcHM6IDEsXG5cdGVycDogMC44LFxuXHRsZW5ndGhVbml0OiAxLFxuXHRjb2xsaWRlcnM6ICdjdWJvaWQnLFxuXHR1cGRhdGVMb29wOiAnZm9sbG93Jyxcblx0aW50ZXJwb2xhdGU6IHRydWUsXG5cdHBhdXNlZDogZmFsc2UsXG5cdHRpbWVTdGVwOiAxIC8gNjAsXG5cdGRlYnVnOiBmYWxzZSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHItcGh5c2ljcycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0QGlmIChkZWJ1ZygpKSB7XG5cdFx0XHQ8bmd0ci1kZWJ1ZyBbd29ybGRdPVwid29ybGRTaW5nbGV0b24oKT8ucHJveHlcIiAvPlxuXHRcdH1cblx0XHQ8bmd0ci1mcmFtZS1zdGVwcGVyXG5cdFx0XHRbcmVhZHldPVwicmVhZHkoKVwiXG5cdFx0XHRbc3RlcEZuXT1cInN0ZXAuYmluZCh0aGlzKVwiXG5cdFx0XHRbdHlwZV09XCJ1cGRhdGVMb29wKClcIlxuXHRcdFx0W3VwZGF0ZVByaW9yaXR5XT1cInVwZGF0ZVByaW9yaXR5KClcIlxuXHRcdC8+XG5cdFx0PG5nLWNvbnRlbnQgLz5cblx0YCxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RyRGVidWcsIE5ndHJGcmFtZVN0ZXBwZXJdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RyUGh5c2ljcyB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblxuXHRwcm90ZWN0ZWQgdXBkYXRlUHJpb3JpdHkgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3VwZGF0ZVByaW9yaXR5Jyk7XG5cdHByb3RlY3RlZCB1cGRhdGVMb29wID0gcGljayh0aGlzLm9wdGlvbnMsICd1cGRhdGVMb29wJyk7XG5cblx0cHJpdmF0ZSBudW1Tb2x2ZXJJdGVyYXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdudW1Tb2x2ZXJJdGVyYXRpb25zJyk7XG5cdHByaXZhdGUgbnVtQWRkaXRpb25hbEZyaWN0aW9uSXRlcmF0aW9ucyA9IHBpY2sodGhpcy5vcHRpb25zLCAnbnVtQWRkaXRpb25hbEZyaWN0aW9uSXRlcmF0aW9ucycpO1xuXHRwcml2YXRlIG51bUludGVybmFsUGdzSXRlcmF0aW9ucyA9IHBpY2sodGhpcy5vcHRpb25zLCAnbnVtSW50ZXJuYWxQZ3NJdGVyYXRpb25zJyk7XG5cdHByaXZhdGUgYWxsb3dlZExpbmVhckVycm9yID0gcGljayh0aGlzLm9wdGlvbnMsICdhbGxvd2VkTGluZWFyRXJyb3InKTtcblx0cHJpdmF0ZSBtaW5Jc2xhbmRTaXplID0gcGljayh0aGlzLm9wdGlvbnMsICdtaW5Jc2xhbmRTaXplJyk7XG5cdHByaXZhdGUgbWF4Q2NkU3Vic3RlcHMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ21heENjZFN1YnN0ZXBzJyk7XG5cdHByaXZhdGUgcHJlZGljdGlvbkRpc3RhbmNlID0gcGljayh0aGlzLm9wdGlvbnMsICdwcmVkaWN0aW9uRGlzdGFuY2UnKTtcblx0cHJpdmF0ZSBlcnAgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2VycCcpO1xuXHRwcml2YXRlIGxlbmd0aFVuaXQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2xlbmd0aFVuaXQnKTtcblx0cHJpdmF0ZSB0aW1lU3RlcCA9IHBpY2sodGhpcy5vcHRpb25zLCAndGltZVN0ZXAnKTtcblx0cHJpdmF0ZSBpbnRlcnBvbGF0ZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnaW50ZXJwb2xhdGUnKTtcblxuXHRwYXVzZWQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3BhdXNlZCcpO1xuXHRkZWJ1ZyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGVidWcnKTtcblx0Y29sbGlkZXJzID0gcGljayh0aGlzLm9wdGlvbnMsICdjb2xsaWRlcnMnKTtcblx0Z3Jhdml0eSA9IHZlY3RvcjModGhpcy5vcHRpb25zLCAnZ3Jhdml0eScpO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cblx0cHJpdmF0ZSByYXBpZXJDb25zdHJ1Y3QgPSBzaWduYWw8dHlwZW9mIFJBUElFUiB8IG51bGw+KG51bGwpO1xuXHRyYXBpZXIgPSB0aGlzLnJhcGllckNvbnN0cnVjdC5hc1JlYWRvbmx5KCk7XG5cblx0cmVhZHkgPSBjb21wdXRlZCgoKSA9PiAhIXRoaXMucmFwaWVyKCkpO1xuXHR3b3JsZFNpbmdsZXRvbiA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCByYXBpZXIgPSB0aGlzLnJhcGllcigpO1xuXHRcdGlmICghcmFwaWVyKSByZXR1cm4gbnVsbDtcblx0XHRyZXR1cm4gY3JlYXRlU2luZ2xldG9uUHJveHk8V29ybGQ+KCgpID0+IG5ldyByYXBpZXIuV29ybGQodW50cmFja2VkKHRoaXMuZ3Jhdml0eSkpKTtcblx0fSk7XG5cblx0cmlnaWRCb2R5U3RhdGVzOiBOZ3RyUmlnaWRCb2R5U3RhdGVNYXAgPSBuZXcgTWFwKCk7XG5cdGNvbGxpZGVyU3RhdGVzOiBOZ3RyQ29sbGlkZXJTdGF0ZU1hcCA9IG5ldyBNYXAoKTtcblx0cmlnaWRCb2R5RXZlbnRzOiBOZ3RyRXZlbnRNYXAgPSBuZXcgTWFwKCk7XG5cdGNvbGxpZGVyRXZlbnRzOiBOZ3RyRXZlbnRNYXAgPSBuZXcgTWFwKCk7XG5cdGJlZm9yZVN0ZXBDYWxsYmFja3M6IE5ndHJXb3JsZFN0ZXBDYWxsYmFja1NldCA9IG5ldyBTZXQoKTtcblx0YWZ0ZXJTdGVwQ2FsbGJhY2tzOiBOZ3RyV29ybGRTdGVwQ2FsbGJhY2tTZXQgPSBuZXcgU2V0KCk7XG5cblx0cHJpdmF0ZSBldmVudFF1ZXVlID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHJhcGllciA9IHRoaXMucmFwaWVyKCk7XG5cdFx0aWYgKCFyYXBpZXIpIHJldHVybiBudWxsO1xuXHRcdHJldHVybiBuZXcgRXZlbnRRdWV1ZShmYWxzZSk7XG5cdH0pO1xuXG5cdHByaXZhdGUgc3RlcHBpbmdTdGF0ZToge1xuXHRcdGFjY3VtdWxhdG9yOiBudW1iZXI7XG5cdFx0cHJldmlvdXNTdGF0ZTogUmVjb3JkPG51bWJlciwgeyBwb3NpdGlvbjogVmVjdG9yOyByb3RhdGlvbjogUm90YXRpb24gfT47XG5cdH0gPSB7IGFjY3VtdWxhdG9yOiAwLCBwcmV2aW91c1N0YXRlOiB7fSB9O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGltcG9ydCgnQGRpbWZvcmdlL3JhcGllcjNkLWNvbXBhdCcpXG5cdFx0XHQudGhlbigocmFwaWVyKSA9PiByYXBpZXIuaW5pdCgpLnRoZW4oKCkgPT4gcmFwaWVyKSlcblx0XHRcdC50aGVuKHRoaXMucmFwaWVyQ29uc3RydWN0LnNldC5iaW5kKHRoaXMucmFwaWVyQ29uc3RydWN0KSlcblx0XHRcdC5jYXRjaCgoZXJyKSA9PiB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoYFtOR1RdIEZhaWxlZCB0byBsb2FkIHJhcGllcjNkLWNvbXBhdGAsIGVycik7XG5cdFx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpO1xuXHRcdFx0fSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0dGhpcy51cGRhdGVXb3JsZEVmZmVjdCgpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG5cdFx0XHRjb25zdCB3b3JsZCA9IHRoaXMud29ybGRTaW5nbGV0b24oKTtcblx0XHRcdGlmICh3b3JsZCkge1xuXHRcdFx0XHR3b3JsZC5wcm94eS5mcmVlKCk7XG5cdFx0XHRcdHdvcmxkLnJlc2V0KCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRzdGVwKGRlbHRhOiBudW1iZXIpIHtcblx0XHRpZiAoIXRoaXMucGF1c2VkKCkpIHtcblx0XHRcdHRoaXMuaW50ZXJuYWxTdGVwKGRlbHRhKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHVwZGF0ZVdvcmxkRWZmZWN0KCkge1xuXHRcdGNvbnN0IHdvcmxkID0gdGhpcy53b3JsZFNpbmdsZXRvbigpO1xuXHRcdGlmICghd29ybGQpIHJldHVybjtcblxuXHRcdHdvcmxkLnByb3h5LmdyYXZpdHkgPSB0aGlzLmdyYXZpdHkoKTtcblx0XHR3b3JsZC5wcm94eS5pbnRlZ3JhdGlvblBhcmFtZXRlcnMubnVtU29sdmVySXRlcmF0aW9ucyA9IHRoaXMubnVtU29sdmVySXRlcmF0aW9ucygpO1xuXHRcdHdvcmxkLnByb3h5LmludGVncmF0aW9uUGFyYW1ldGVycy5udW1BZGRpdGlvbmFsRnJpY3Rpb25JdGVyYXRpb25zID0gdGhpcy5udW1BZGRpdGlvbmFsRnJpY3Rpb25JdGVyYXRpb25zKCk7XG5cdFx0d29ybGQucHJveHkuaW50ZWdyYXRpb25QYXJhbWV0ZXJzLm51bUludGVybmFsUGdzSXRlcmF0aW9ucyA9IHRoaXMubnVtSW50ZXJuYWxQZ3NJdGVyYXRpb25zKCk7XG5cdFx0d29ybGQucHJveHkuaW50ZWdyYXRpb25QYXJhbWV0ZXJzLm5vcm1hbGl6ZWRBbGxvd2VkTGluZWFyRXJyb3IgPSB0aGlzLmFsbG93ZWRMaW5lYXJFcnJvcigpO1xuXHRcdHdvcmxkLnByb3h5LmludGVncmF0aW9uUGFyYW1ldGVycy5taW5Jc2xhbmRTaXplID0gdGhpcy5taW5Jc2xhbmRTaXplKCk7XG5cdFx0d29ybGQucHJveHkuaW50ZWdyYXRpb25QYXJhbWV0ZXJzLm1heENjZFN1YnN0ZXBzID0gdGhpcy5tYXhDY2RTdWJzdGVwcygpO1xuXHRcdHdvcmxkLnByb3h5LmludGVncmF0aW9uUGFyYW1ldGVycy5ub3JtYWxpemVkUHJlZGljdGlvbkRpc3RhbmNlID0gdGhpcy5wcmVkaWN0aW9uRGlzdGFuY2UoKTtcblx0XHQvKipcblx0XHQgKiBOT1RFOiB3ZSBkb24ndCBrbm93IGlmIHRoaXMgaXMgdGhlIGNvcnJlY3Qgd2F5IHRvIHNldCBmb3IgY29udGFjdF9uYXR1cmFsX2ZyZXF1ZW5jeSBvciBub3QuXG5cdFx0ICogYnV0IGF0IGxlYXN0LCBpdCBnZXRzIHRoZSBgY29udGFjdF9lcnBgIHZhbHVlIHRvIGJlIHZlcnkgY2xvc2Ugd2l0aCBzZXR0aW5nIGBlcnBgXG5cdFx0ICovXG5cdFx0d29ybGQucHJveHkuaW50ZWdyYXRpb25QYXJhbWV0ZXJzLmNvbnRhY3RfbmF0dXJhbF9mcmVxdWVuY3kgPSB0aGlzLmVycCgpICogMV8wMDA7XG5cdFx0d29ybGQucHJveHkubGVuZ3RoVW5pdCA9IHRoaXMubGVuZ3RoVW5pdCgpO1xuXHR9XG5cblx0cHJpdmF0ZSBpbnRlcm5hbFN0ZXAoZGVsdGE6IG51bWJlcikge1xuXHRcdGNvbnN0IHdvcmxkU2luZ2xldG9uID0gdGhpcy53b3JsZFNpbmdsZXRvbigpO1xuXHRcdGlmICghd29ybGRTaW5nbGV0b24pIHJldHVybjtcblxuXHRcdGNvbnN0IGV2ZW50UXVldWUgPSB0aGlzLmV2ZW50UXVldWUoKTtcblx0XHRpZiAoIWV2ZW50UXVldWUpIHJldHVybjtcblxuXHRcdGNvbnN0IHdvcmxkID0gd29ybGRTaW5nbGV0b24ucHJveHk7XG5cdFx0Y29uc3QgW3RpbWVTdGVwLCBpbnRlcnBvbGF0ZSwgcGF1c2VkXSA9IFt0aGlzLnRpbWVTdGVwKCksIHRoaXMuaW50ZXJwb2xhdGUoKSwgdGhpcy5wYXVzZWQoKV07XG5cblx0XHQvKiBDaGVjayBpZiB0aGUgdGltZXN0ZXAgaXMgc3VwcG9zZWQgdG8gYmUgdmFyaWFibGUuIFdlJ2xsIGRvIHRoaXMgaGVyZVxuICAgICAgb25jZSBzbyB3ZSBkb24ndCBoYXZlIHRvIHN0cmluZy1jaGVjayBldmVyeSBmcmFtZS4gKi9cblx0XHRjb25zdCB0aW1lU3RlcFZhcmlhYmxlID0gdGltZVN0ZXAgPT09ICd2YXJ5JztcblxuXHRcdC8qKlxuXHRcdCAqIEZpeGVkIHRpbWVTdGVwIHNpbXVsYXRpb24gcHJvZ3Jlc3Npb25cblx0XHQgKiBAc2VlIGh0dHBzOi8vZ2FmZmVyb25nYW1lcy5jb20vcG9zdC9maXhfeW91cl90aW1lc3RlcC9cblx0XHQgKi9cblx0XHRjb25zdCBjbGFtcGVkRGVsdGEgPSBNYXRoVXRpbHMuY2xhbXAoZGVsdGEsIDAsIDAuNSk7XG5cblx0XHRjb25zdCBzdGVwV29ybGQgPSAoaW5uZXJEZWx0YTogbnVtYmVyKSA9PiB7XG5cdFx0XHQvLyBUcmlnZ2VyIGJlZm9yZVN0ZXAgY2FsbGJhY2tzXG5cdFx0XHR0aGlzLmJlZm9yZVN0ZXBDYWxsYmFja3MuZm9yRWFjaCgoY2FsbGJhY2spID0+IHtcblx0XHRcdFx0Y2FsbGJhY2sod29ybGQpO1xuXHRcdFx0fSk7XG5cblx0XHRcdHdvcmxkLnRpbWVzdGVwID0gaW5uZXJEZWx0YTtcblx0XHRcdHdvcmxkLnN0ZXAoZXZlbnRRdWV1ZSk7XG5cblx0XHRcdC8vIFRyaWdnZXIgYWZ0ZXJTdGVwIGNhbGxiYWNrc1xuXHRcdFx0dGhpcy5hZnRlclN0ZXBDYWxsYmFja3MuZm9yRWFjaCgoY2FsbGJhY2spID0+IHtcblx0XHRcdFx0Y2FsbGJhY2sod29ybGQpO1xuXHRcdFx0fSk7XG5cdFx0fTtcblxuXHRcdGlmICh0aW1lU3RlcFZhcmlhYmxlKSB7XG5cdFx0XHRzdGVwV29ybGQoY2xhbXBlZERlbHRhKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gZG9uJ3Qgc3RlcCB0aW1lIGZvcndhcmRzIGlmIHBhdXNlZFxuXHRcdFx0Ly8gSW5jcmVhc2UgYWNjdW11bGF0b3Jcblx0XHRcdHRoaXMuc3RlcHBpbmdTdGF0ZS5hY2N1bXVsYXRvciArPSBjbGFtcGVkRGVsdGE7XG5cblx0XHRcdHdoaWxlICh0aGlzLnN0ZXBwaW5nU3RhdGUuYWNjdW11bGF0b3IgPj0gdGltZVN0ZXApIHtcblx0XHRcdFx0Ly8gU2V0IHVwIHByZXZpb3VzIHN0YXRlXG5cdFx0XHRcdC8vIG5lZWRlZCBmb3IgYWNjdXJhdGUgaW50ZXJwb2xhdGlvbnMgaWYgdGhlIHdvcmxkIHN0ZXBzIG1vcmUgdGhhbiBvbmNlXG5cdFx0XHRcdGlmIChpbnRlcnBvbGF0ZSkge1xuXHRcdFx0XHRcdHRoaXMuc3RlcHBpbmdTdGF0ZS5wcmV2aW91c1N0YXRlID0ge307XG5cdFx0XHRcdFx0d29ybGQuZm9yRWFjaFJpZ2lkQm9keSgoYm9keSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5zdGVwcGluZ1N0YXRlLnByZXZpb3VzU3RhdGVbYm9keS5oYW5kbGVdID0ge1xuXHRcdFx0XHRcdFx0XHRwb3NpdGlvbjogYm9keS50cmFuc2xhdGlvbigpLFxuXHRcdFx0XHRcdFx0XHRyb3RhdGlvbjogYm9keS5yb3RhdGlvbigpLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHN0ZXBXb3JsZCh0aW1lU3RlcCk7XG5cdFx0XHRcdHRoaXMuc3RlcHBpbmdTdGF0ZS5hY2N1bXVsYXRvciAtPSB0aW1lU3RlcDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRjb25zdCBpbnRlcnBvbGF0aW9uQWxwaGEgPVxuXHRcdFx0dGltZVN0ZXBWYXJpYWJsZSB8fCAhaW50ZXJwb2xhdGUgfHwgcGF1c2VkID8gMSA6IHRoaXMuc3RlcHBpbmdTdGF0ZS5hY2N1bXVsYXRvciAvIHRpbWVTdGVwO1xuXG5cdFx0Ly8gVXBkYXRlIG1lc2hlc1xuXHRcdHRoaXMucmlnaWRCb2R5U3RhdGVzLmZvckVhY2goKHN0YXRlLCBoYW5kbGUpID0+IHtcblx0XHRcdGNvbnN0IHJpZ2lkQm9keSA9IHdvcmxkLmdldFJpZ2lkQm9keShoYW5kbGUpO1xuXG5cdFx0XHRjb25zdCBldmVudHMgPSB0aGlzLnJpZ2lkQm9keUV2ZW50cy5nZXQoaGFuZGxlKTtcblx0XHRcdGlmIChldmVudHM/Lm9uU2xlZXAgfHwgZXZlbnRzPy5vbldha2UpIHtcblx0XHRcdFx0aWYgKHJpZ2lkQm9keS5pc1NsZWVwaW5nKCkgJiYgIXN0YXRlLmlzU2xlZXBpbmcpIGV2ZW50cz8ub25TbGVlcD8uKCk7XG5cdFx0XHRcdGlmICghcmlnaWRCb2R5LmlzU2xlZXBpbmcoKSAmJiBzdGF0ZS5pc1NsZWVwaW5nKSBldmVudHM/Lm9uV2FrZT8uKCk7XG5cdFx0XHRcdHN0YXRlLmlzU2xlZXBpbmcgPSByaWdpZEJvZHkuaXNTbGVlcGluZygpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIXJpZ2lkQm9keSB8fCAocmlnaWRCb2R5LmlzU2xlZXBpbmcoKSAmJiAhKCdpc0luc3RhbmNlZE1lc2gnIGluIHN0YXRlLm9iamVjdCkpIHx8ICFzdGF0ZS5zZXRNYXRyaXgpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBOZXcgc3RhdGVzXG5cdFx0XHRsZXQgdCA9IHJpZ2lkQm9keS50cmFuc2xhdGlvbigpIGFzIFZlY3RvcjM7XG5cdFx0XHRsZXQgciA9IHJpZ2lkQm9keS5yb3RhdGlvbigpIGFzIFF1YXRlcm5pb247XG5cblx0XHRcdGxldCBwcmV2aW91c1N0YXRlID0gdGhpcy5zdGVwcGluZ1N0YXRlLnByZXZpb3VzU3RhdGVbaGFuZGxlXTtcblxuXHRcdFx0aWYgKHByZXZpb3VzU3RhdGUpIHtcblx0XHRcdFx0Ly8gR2V0IHByZXZpb3VzIHNpbXVsYXRlZCB3b3JsZCBwb3NpdGlvblxuXHRcdFx0XHRfbWF0cml4NFxuXHRcdFx0XHRcdC5jb21wb3NlKHByZXZpb3VzU3RhdGUucG9zaXRpb24gYXMgVmVjdG9yMywgcmFwaWVyUXVhdGVybmlvblRvUXVhdGVybmlvbihwcmV2aW91c1N0YXRlLnJvdGF0aW9uKSwgc3RhdGUuc2NhbGUpXG5cdFx0XHRcdFx0LnByZW11bHRpcGx5KHN0YXRlLmludmVydGVkV29ybGRNYXRyaXgpXG5cdFx0XHRcdFx0LmRlY29tcG9zZShfcG9zaXRpb24sIF9yb3RhdGlvbiwgX3NjYWxlKTtcblxuXHRcdFx0XHQvLyBBcHBseSBwcmV2aW91cyB0aWNrIHBvc2l0aW9uXG5cdFx0XHRcdGlmIChzdGF0ZS5tZXNoVHlwZSA9PSAnbWVzaCcpIHtcblx0XHRcdFx0XHRzdGF0ZS5vYmplY3QucG9zaXRpb24uY29weShfcG9zaXRpb24pO1xuXHRcdFx0XHRcdHN0YXRlLm9iamVjdC5xdWF0ZXJuaW9uLmNvcHkoX3JvdGF0aW9uKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBHZXQgbmV3IHBvc2l0aW9uXG5cdFx0XHRfbWF0cml4NFxuXHRcdFx0XHQuY29tcG9zZSh0LCByYXBpZXJRdWF0ZXJuaW9uVG9RdWF0ZXJuaW9uKHIpLCBzdGF0ZS5zY2FsZSlcblx0XHRcdFx0LnByZW11bHRpcGx5KHN0YXRlLmludmVydGVkV29ybGRNYXRyaXgpXG5cdFx0XHRcdC5kZWNvbXBvc2UoX3Bvc2l0aW9uLCBfcm90YXRpb24sIF9zY2FsZSk7XG5cblx0XHRcdGlmIChzdGF0ZS5tZXNoVHlwZSA9PSAnaW5zdGFuY2VkTWVzaCcpIHtcblx0XHRcdFx0c3RhdGUuc2V0TWF0cml4KF9tYXRyaXg0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIEludGVycG9sYXRlIHRvIG5ldyBwb3NpdGlvblxuXHRcdFx0XHRzdGF0ZS5vYmplY3QucG9zaXRpb24ubGVycChfcG9zaXRpb24sIGludGVycG9sYXRpb25BbHBoYSk7XG5cdFx0XHRcdHN0YXRlLm9iamVjdC5xdWF0ZXJuaW9uLnNsZXJwKF9yb3RhdGlvbiwgaW50ZXJwb2xhdGlvbkFscGhhKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGV2ZW50UXVldWUuZHJhaW5Db2xsaXNpb25FdmVudHMoKGhhbmRsZTEsIGhhbmRsZTIsIHN0YXJ0ZWQpID0+IHtcblx0XHRcdGNvbnN0IHNvdXJjZTEgPSB0aGlzLmdldFNvdXJjZUZyb21Db2xsaWRlckhhbmRsZShoYW5kbGUxKTtcblx0XHRcdGNvbnN0IHNvdXJjZTIgPSB0aGlzLmdldFNvdXJjZUZyb21Db2xsaWRlckhhbmRsZShoYW5kbGUyKTtcblxuXHRcdFx0Ly8gQ29sbGlzaW9uIEV2ZW50c1xuXHRcdFx0aWYgKCFzb3VyY2UxPy5jb2xsaWRlci5vYmplY3QgfHwgIXNvdXJjZTI/LmNvbGxpZGVyLm9iamVjdCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGNvbGxpc2lvblBheWxvYWQxID0gdGhpcy5nZXRDb2xsaXNpb25QYXlsb2FkRnJvbVNvdXJjZShzb3VyY2UxLCBzb3VyY2UyKTtcblx0XHRcdGNvbnN0IGNvbGxpc2lvblBheWxvYWQyID0gdGhpcy5nZXRDb2xsaXNpb25QYXlsb2FkRnJvbVNvdXJjZShzb3VyY2UyLCBzb3VyY2UxKTtcblxuXHRcdFx0aWYgKHN0YXJ0ZWQpIHtcblx0XHRcdFx0d29ybGQuY29udGFjdFBhaXIoc291cmNlMS5jb2xsaWRlci5vYmplY3QsIHNvdXJjZTIuY29sbGlkZXIub2JqZWN0LCAobWFuaWZvbGQsIGZsaXBwZWQpID0+IHtcblx0XHRcdFx0XHQvKiBSaWdpZEJvZHkgZXZlbnRzICovXG5cdFx0XHRcdFx0c291cmNlMS5yaWdpZEJvZHkuZXZlbnRzPy5vbkNvbGxpc2lvbkVudGVyPy4oeyAuLi5jb2xsaXNpb25QYXlsb2FkMSwgbWFuaWZvbGQsIGZsaXBwZWQgfSk7XG5cdFx0XHRcdFx0c291cmNlMi5yaWdpZEJvZHkuZXZlbnRzPy5vbkNvbGxpc2lvbkVudGVyPy4oeyAuLi5jb2xsaXNpb25QYXlsb2FkMiwgbWFuaWZvbGQsIGZsaXBwZWQgfSk7XG5cblx0XHRcdFx0XHQvKiBDb2xsaWRlciBldmVudHMgKi9cblx0XHRcdFx0XHRzb3VyY2UxLmNvbGxpZGVyLmV2ZW50cz8ub25Db2xsaXNpb25FbnRlcj8uKHsgLi4uY29sbGlzaW9uUGF5bG9hZDEsIG1hbmlmb2xkLCBmbGlwcGVkIH0pO1xuXHRcdFx0XHRcdHNvdXJjZTIuY29sbGlkZXIuZXZlbnRzPy5vbkNvbGxpc2lvbkVudGVyPy4oeyAuLi5jb2xsaXNpb25QYXlsb2FkMiwgbWFuaWZvbGQsIGZsaXBwZWQgfSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c291cmNlMS5yaWdpZEJvZHkuZXZlbnRzPy5vbkNvbGxpc2lvbkV4aXQ/Lihjb2xsaXNpb25QYXlsb2FkMSk7XG5cdFx0XHRcdHNvdXJjZTIucmlnaWRCb2R5LmV2ZW50cz8ub25Db2xsaXNpb25FeGl0Py4oY29sbGlzaW9uUGF5bG9hZDIpO1xuXHRcdFx0XHRzb3VyY2UxLmNvbGxpZGVyLmV2ZW50cz8ub25Db2xsaXNpb25FeGl0Py4oY29sbGlzaW9uUGF5bG9hZDEpO1xuXHRcdFx0XHRzb3VyY2UyLmNvbGxpZGVyLmV2ZW50cz8ub25Db2xsaXNpb25FeGl0Py4oY29sbGlzaW9uUGF5bG9hZDIpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZW5zb3IgSW50ZXJzZWN0aW9uc1xuXHRcdFx0aWYgKHN0YXJ0ZWQpIHtcblx0XHRcdFx0aWYgKHdvcmxkLmludGVyc2VjdGlvblBhaXIoc291cmNlMS5jb2xsaWRlci5vYmplY3QsIHNvdXJjZTIuY29sbGlkZXIub2JqZWN0KSkge1xuXHRcdFx0XHRcdHNvdXJjZTEucmlnaWRCb2R5LmV2ZW50cz8ub25JbnRlcnNlY3Rpb25FbnRlcj8uKGNvbGxpc2lvblBheWxvYWQxKTtcblx0XHRcdFx0XHRzb3VyY2UyLnJpZ2lkQm9keS5ldmVudHM/Lm9uSW50ZXJzZWN0aW9uRW50ZXI/Lihjb2xsaXNpb25QYXlsb2FkMik7XG5cdFx0XHRcdFx0c291cmNlMS5jb2xsaWRlci5ldmVudHM/Lm9uSW50ZXJzZWN0aW9uRW50ZXI/Lihjb2xsaXNpb25QYXlsb2FkMSk7XG5cdFx0XHRcdFx0c291cmNlMi5jb2xsaWRlci5ldmVudHM/Lm9uSW50ZXJzZWN0aW9uRW50ZXI/Lihjb2xsaXNpb25QYXlsb2FkMik7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNvdXJjZTEucmlnaWRCb2R5LmV2ZW50cz8ub25JbnRlcnNlY3Rpb25FeGl0Py4oY29sbGlzaW9uUGF5bG9hZDEpO1xuXHRcdFx0XHRzb3VyY2UyLnJpZ2lkQm9keS5ldmVudHM/Lm9uSW50ZXJzZWN0aW9uRXhpdD8uKGNvbGxpc2lvblBheWxvYWQyKTtcblx0XHRcdFx0c291cmNlMS5jb2xsaWRlci5ldmVudHM/Lm9uSW50ZXJzZWN0aW9uRXhpdD8uKGNvbGxpc2lvblBheWxvYWQxKTtcblx0XHRcdFx0c291cmNlMi5jb2xsaWRlci5ldmVudHM/Lm9uSW50ZXJzZWN0aW9uRXhpdD8uKGNvbGxpc2lvblBheWxvYWQyKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGV2ZW50UXVldWUuZHJhaW5Db250YWN0Rm9yY2VFdmVudHMoKGV2ZW50KSA9PiB7XG5cdFx0XHRjb25zdCBzb3VyY2UxID0gdGhpcy5nZXRTb3VyY2VGcm9tQ29sbGlkZXJIYW5kbGUoZXZlbnQuY29sbGlkZXIxKCkpO1xuXHRcdFx0Y29uc3Qgc291cmNlMiA9IHRoaXMuZ2V0U291cmNlRnJvbUNvbGxpZGVySGFuZGxlKGV2ZW50LmNvbGxpZGVyMigpKTtcblxuXHRcdFx0Ly8gQ29sbGlzaW9uIEV2ZW50c1xuXHRcdFx0aWYgKCFzb3VyY2UxPy5jb2xsaWRlci5vYmplY3QgfHwgIXNvdXJjZTI/LmNvbGxpZGVyLm9iamVjdCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGNvbGxpc2lvblBheWxvYWQxID0gdGhpcy5nZXRDb2xsaXNpb25QYXlsb2FkRnJvbVNvdXJjZShzb3VyY2UxLCBzb3VyY2UyKTtcblx0XHRcdGNvbnN0IGNvbGxpc2lvblBheWxvYWQyID0gdGhpcy5nZXRDb2xsaXNpb25QYXlsb2FkRnJvbVNvdXJjZShzb3VyY2UyLCBzb3VyY2UxKTtcblxuXHRcdFx0c291cmNlMS5yaWdpZEJvZHkuZXZlbnRzPy5vbkNvbnRhY3RGb3JjZT8uKHtcblx0XHRcdFx0Li4uY29sbGlzaW9uUGF5bG9hZDEsXG5cdFx0XHRcdHRvdGFsRm9yY2U6IGV2ZW50LnRvdGFsRm9yY2UoKSxcblx0XHRcdFx0dG90YWxGb3JjZU1hZ25pdHVkZTogZXZlbnQudG90YWxGb3JjZU1hZ25pdHVkZSgpLFxuXHRcdFx0XHRtYXhGb3JjZURpcmVjdGlvbjogZXZlbnQubWF4Rm9yY2VEaXJlY3Rpb24oKSxcblx0XHRcdFx0bWF4Rm9yY2VNYWduaXR1ZGU6IGV2ZW50Lm1heEZvcmNlTWFnbml0dWRlKCksXG5cdFx0XHR9KTtcblxuXHRcdFx0c291cmNlMi5yaWdpZEJvZHkuZXZlbnRzPy5vbkNvbnRhY3RGb3JjZT8uKHtcblx0XHRcdFx0Li4uY29sbGlzaW9uUGF5bG9hZDIsXG5cdFx0XHRcdHRvdGFsRm9yY2U6IGV2ZW50LnRvdGFsRm9yY2UoKSxcblx0XHRcdFx0dG90YWxGb3JjZU1hZ25pdHVkZTogZXZlbnQudG90YWxGb3JjZU1hZ25pdHVkZSgpLFxuXHRcdFx0XHRtYXhGb3JjZURpcmVjdGlvbjogZXZlbnQubWF4Rm9yY2VEaXJlY3Rpb24oKSxcblx0XHRcdFx0bWF4Rm9yY2VNYWduaXR1ZGU6IGV2ZW50Lm1heEZvcmNlTWFnbml0dWRlKCksXG5cdFx0XHR9KTtcblxuXHRcdFx0c291cmNlMS5jb2xsaWRlci5ldmVudHM/Lm9uQ29udGFjdEZvcmNlPy4oe1xuXHRcdFx0XHQuLi5jb2xsaXNpb25QYXlsb2FkMSxcblx0XHRcdFx0dG90YWxGb3JjZTogZXZlbnQudG90YWxGb3JjZSgpLFxuXHRcdFx0XHR0b3RhbEZvcmNlTWFnbml0dWRlOiBldmVudC50b3RhbEZvcmNlTWFnbml0dWRlKCksXG5cdFx0XHRcdG1heEZvcmNlRGlyZWN0aW9uOiBldmVudC5tYXhGb3JjZURpcmVjdGlvbigpLFxuXHRcdFx0XHRtYXhGb3JjZU1hZ25pdHVkZTogZXZlbnQubWF4Rm9yY2VNYWduaXR1ZGUoKSxcblx0XHRcdH0pO1xuXG5cdFx0XHRzb3VyY2UyLmNvbGxpZGVyLmV2ZW50cz8ub25Db250YWN0Rm9yY2U/Lih7XG5cdFx0XHRcdC4uLmNvbGxpc2lvblBheWxvYWQyLFxuXHRcdFx0XHR0b3RhbEZvcmNlOiBldmVudC50b3RhbEZvcmNlKCksXG5cdFx0XHRcdHRvdGFsRm9yY2VNYWduaXR1ZGU6IGV2ZW50LnRvdGFsRm9yY2VNYWduaXR1ZGUoKSxcblx0XHRcdFx0bWF4Rm9yY2VEaXJlY3Rpb246IGV2ZW50Lm1heEZvcmNlRGlyZWN0aW9uKCksXG5cdFx0XHRcdG1heEZvcmNlTWFnbml0dWRlOiBldmVudC5tYXhGb3JjZU1hZ25pdHVkZSgpLFxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHR3b3JsZC5mb3JFYWNoQWN0aXZlUmlnaWRCb2R5KCgpID0+IHtcblx0XHRcdHRoaXMuc3RvcmUuc25hcHNob3QuaW52YWxpZGF0ZSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRTb3VyY2VGcm9tQ29sbGlkZXJIYW5kbGUoaGFuZGxlOiBDb2xsaWRlckhhbmRsZSkge1xuXHRcdGNvbnN0IHdvcmxkID0gdGhpcy53b3JsZFNpbmdsZXRvbigpO1xuXHRcdGlmICghd29ybGQpIHJldHVybjtcblxuXHRcdGNvbnN0IGNvbGxpZGVyID0gd29ybGQucHJveHkuZ2V0Q29sbGlkZXIoaGFuZGxlKTtcblx0XHRjb25zdCBjb2xFdmVudHMgPSB0aGlzLmNvbGxpZGVyRXZlbnRzLmdldChoYW5kbGUpO1xuXHRcdGNvbnN0IGNvbGxpZGVyU3RhdGUgPSB0aGlzLmNvbGxpZGVyU3RhdGVzLmdldChoYW5kbGUpO1xuXG5cdFx0Y29uc3QgcmlnaWRCb2R5SGFuZGxlID0gY29sbGlkZXIucGFyZW50KCk/LmhhbmRsZTtcblx0XHRjb25zdCByaWdpZEJvZHkgPSByaWdpZEJvZHlIYW5kbGUgIT09IHVuZGVmaW5lZCA/IHdvcmxkLnByb3h5LmdldFJpZ2lkQm9keShyaWdpZEJvZHlIYW5kbGUpIDogdW5kZWZpbmVkO1xuXHRcdGNvbnN0IHJpZ2lkQm9keUV2ZW50cyA9XG5cdFx0XHRyaWdpZEJvZHkgJiYgcmlnaWRCb2R5SGFuZGxlICE9PSB1bmRlZmluZWQgPyB0aGlzLnJpZ2lkQm9keUV2ZW50cy5nZXQocmlnaWRCb2R5SGFuZGxlKSA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCByaWdpZEJvZHlTdGF0ZSA9IHJpZ2lkQm9keUhhbmRsZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5yaWdpZEJvZHlTdGF0ZXMuZ2V0KHJpZ2lkQm9keUhhbmRsZSkgOiB1bmRlZmluZWQ7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0Y29sbGlkZXI6IHsgb2JqZWN0OiBjb2xsaWRlciwgZXZlbnRzOiBjb2xFdmVudHMsIHN0YXRlOiBjb2xsaWRlclN0YXRlIH0sXG5cdFx0XHRyaWdpZEJvZHk6IHsgb2JqZWN0OiByaWdpZEJvZHksIGV2ZW50czogcmlnaWRCb2R5RXZlbnRzLCBzdGF0ZTogcmlnaWRCb2R5U3RhdGUgfSxcblx0XHR9IGFzIE5ndHJDb2xsaXNpb25Tb3VyY2U7XG5cdH1cblxuXHRwcml2YXRlIGdldENvbGxpc2lvblBheWxvYWRGcm9tU291cmNlKHRhcmdldDogTmd0ckNvbGxpc2lvblNvdXJjZSwgb3RoZXI6IE5ndHJDb2xsaXNpb25Tb3VyY2UpOiBOZ3RyQ29sbGlzaW9uUGF5bG9hZCB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRhcmdldDoge1xuXHRcdFx0XHRyaWdpZEJvZHk6IHRhcmdldC5yaWdpZEJvZHkub2JqZWN0LFxuXHRcdFx0XHRjb2xsaWRlcjogdGFyZ2V0LmNvbGxpZGVyLm9iamVjdCxcblx0XHRcdFx0Y29sbGlkZXJPYmplY3Q6IHRhcmdldC5jb2xsaWRlci5zdGF0ZT8ub2JqZWN0LFxuXHRcdFx0XHRyaWdpZEJvZHlPYmplY3Q6IHRhcmdldC5yaWdpZEJvZHkuc3RhdGU/Lm9iamVjdCxcblx0XHRcdH0sXG5cdFx0XHRvdGhlcjoge1xuXHRcdFx0XHRyaWdpZEJvZHk6IG90aGVyLnJpZ2lkQm9keS5vYmplY3QsXG5cdFx0XHRcdGNvbGxpZGVyOiBvdGhlci5jb2xsaWRlci5vYmplY3QsXG5cdFx0XHRcdGNvbGxpZGVyT2JqZWN0OiBvdGhlci5jb2xsaWRlci5zdGF0ZT8ub2JqZWN0LFxuXHRcdFx0XHRyaWdpZEJvZHlPYmplY3Q6IG90aGVyLnJpZ2lkQm9keS5zdGF0ZT8ub2JqZWN0LFxuXHRcdFx0fSxcblx0XHR9O1xuXHR9XG59XG4iXX0=
|
|
389
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGh5c2ljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcmFwaWVyL3NyYy9saWIvcGh5c2ljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxFQUNaLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBZSxFQUFrQixVQUFVLEVBQTJCLE1BQU0sMkJBQTJCLENBQUM7QUFDeEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUF1QixNQUFNLE9BQU8sQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFVbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDRCQUE0QixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUU3RSxNQUFNLGNBQWMsR0FBdUI7SUFDMUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0QixrQkFBa0IsRUFBRSxLQUFLO0lBQ3pCLG1CQUFtQixFQUFFLENBQUM7SUFDdEIsK0JBQStCLEVBQUUsQ0FBQztJQUNsQyx3QkFBd0IsRUFBRSxD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QUMsTUFBTTtnQkFDaEMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU07Z0JBQzdDLGVBQWUsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNO2FBQy9DO1lBQ0QsS0FBSyxFQUFFO2dCQUNOLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07Z0JBQ2pDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07Z0JBQy9CLGNBQWMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNO2dCQUM1QyxlQUFlLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTTthQUM5QztTQUNELENBQUM7SUFDSCxDQUFDO3VHQTlWVyxXQUFXOzJGQUFYLFdBQVcsdVBBR1MsV0FBVyxrR0FDWixtQkFBbUIsZ0VBekJ4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQlQsNERBRVMsU0FBUywwRUFBRSxnQkFBZ0Isc0hBQUUsZ0JBQWdCOzsyRkFFM0MsV0FBVztrQkF4QnZCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7aUJBQ3hEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Y29udGVudENoaWxkLFxuXHREZXN0cm95UmVmLFxuXHREaXJlY3RpdmUsXG5cdGVmZmVjdCxcblx0aW5qZWN0LFxuXHRpbnB1dCxcblx0c2lnbmFsLFxuXHRUZW1wbGF0ZVJlZixcblx0dW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBSQVBJRVIsIHsgQ29sbGlkZXJIYW5kbGUsIEV2ZW50UXVldWUsIFJvdGF0aW9uLCBWZWN0b3IsIFdvcmxkIH0gZnJvbSAnQGRpbWZvcmdlL3JhcGllcjNkLWNvbXBhdCc7XG5pbXBvcnQgeyBpbmplY3RTdG9yZSwgcGljaywgdmVjdG9yMyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgTWF0aFV0aWxzLCBRdWF0ZXJuaW9uLCBWZWN0b3IzIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0ckRlYnVnIH0gZnJvbSAnLi9kZWJ1Zyc7XG5pbXBvcnQgeyBOZ3RyRnJhbWVTdGVwcGVyIH0gZnJvbSAnLi9mcmFtZS1zdGVwcGVyJztcbmltcG9ydCB7IF9tYXRyaXg0LCBfcG9zaXRpb24sIF9yb3RhdGlvbiwgX3NjYWxlIH0gZnJvbSAnLi9zaGFyZWQnO1xuaW1wb3J0IHtcblx0Tmd0ckNvbGxpZGVyU3RhdGVNYXAsXG5cdE5ndHJDb2xsaXNpb25QYXlsb2FkLFxuXHROZ3RyQ29sbGlzaW9uU291cmNlLFxuXHROZ3RyRXZlbnRNYXAsXG5cdE5ndHJQaHlzaWNzT3B0aW9ucyxcblx0Tmd0clJpZ2lkQm9keVN0YXRlTWFwLFxuXHROZ3RyV29ybGRTdGVwQ2FsbGJhY2tTZXQsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlU2luZ2xldG9uUHJveHksIHJhcGllclF1YXRlcm5pb25Ub1F1YXRlcm5pb24gfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHJQaHlzaWNzT3B0aW9ucyA9IHtcblx0Z3Jhdml0eTogWzAsIC05LjgxLCAwXSxcblx0YWxsb3dlZExpbmVhckVycm9yOiAwLjAwMSxcblx0bnVtU29sdmVySXRlcmF0aW9uczogNCxcblx0bnVtQWRkaXRpb25hbEZyaWN0aW9uSXRlcmF0aW9uczogNCxcblx0bnVtSW50ZXJuYWxQZ3NJdGVyYXRpb25zOiAxLFxuXHRwcmVkaWN0aW9uRGlzdGFuY2U6IDAuMDAyLFxuXHRtaW5Jc2xhbmRTaXplOiAxMjgsXG5cdG1heENjZFN1YnN0ZXBzOiAxLFxuXHRlcnA6IDAuOCxcblx0bGVuZ3RoVW5pdDogMSxcblx0Y29sbGlkZXJzOiAnY3Vib2lkJyxcblx0dXBkYXRlTG9vcDogJ2ZvbGxvdycsXG5cdGludGVycG9sYXRlOiB0cnVlLFxuXHRwYXVzZWQ6IGZhbHNlLFxuXHR0aW1lU3RlcDogMSAvIDYwLFxuXHRkZWJ1ZzogZmFsc2UsXG59O1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtyYXBpZXJGYWxsYmFja10nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0clBoeXNpY3NGYWxsYmFjayB7XG5cdHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF86IE5ndHJQaHlzaWNzRmFsbGJhY2ssIGN0eDogdW5rbm93bik6IGN0eCBpcyB7IGVycm9yOiBzdHJpbmcgfSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0ci1waHlzaWNzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHRAaWYgKHJhcGllckNvbnN0cnVjdCgpKSB7XG5cdFx0XHRAaWYgKGRlYnVnKCkpIHtcblx0XHRcdFx0PG5ndHItZGVidWcgW3dvcmxkXT1cIndvcmxkU2luZ2xldG9uKCk/LnByb3h5XCIgLz5cblx0XHRcdH1cblxuXHRcdFx0PG5ndHItZnJhbWUtc3RlcHBlclxuXHRcdFx0XHRbcmVhZHldPVwicmVhZHkoKVwiXG5cdFx0XHRcdFtzdGVwRm5dPVwic3RlcC5iaW5kKHRoaXMpXCJcblx0XHRcdFx0W3R5cGVdPVwidXBkYXRlTG9vcCgpXCJcblx0XHRcdFx0W3VwZGF0ZVByaW9yaXR5XT1cInVwZGF0ZVByaW9yaXR5KClcIlxuXHRcdFx0Lz5cblxuXHRcdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50KClcIiAvPlxuXHRcdH0gQGVsc2UgaWYgKHJhcGllckVycm9yKCkgJiYgISFmYWxsYmFja0NvbnRlbnQoKSkge1xuXHRcdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGZhbGxiYWNrQ29udGVudCgpKVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGVycm9yOiByYXBpZXJFcnJvcigpIH1cIiAvPlxuXHRcdH1cblx0YCxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RyRGVidWcsIE5ndHJGcmFtZVN0ZXBwZXIsIE5nVGVtcGxhdGVPdXRsZXRdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RyUGh5c2ljcyB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblxuXHRjb250ZW50ID0gY29udGVudENoaWxkLnJlcXVpcmVkKFRlbXBsYXRlUmVmKTtcblx0ZmFsbGJhY2tDb250ZW50ID0gY29udGVudENoaWxkKE5ndHJQaHlzaWNzRmFsbGJhY2spO1xuXG5cdHByb3RlY3RlZCB1cGRhdGVQcmlvcml0eSA9IHBpY2sodGhpcy5vcHRpb25zLCAndXBkYXRlUHJpb3JpdHknKTtcblx0cHJvdGVjdGVkIHVwZGF0ZUxvb3AgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3VwZGF0ZUxvb3AnKTtcblxuXHRwcml2YXRlIG51bVNvbHZlckl0ZXJhdGlvbnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ251bVNvbHZlckl0ZXJhdGlvbnMnKTtcblx0cHJpdmF0ZSBudW1BZGRpdGlvbmFsRnJpY3Rpb25JdGVyYXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdudW1BZGRpdGlvbmFsRnJpY3Rpb25JdGVyYXRpb25zJyk7XG5cdHByaXZhdGUgbnVtSW50ZXJuYWxQZ3NJdGVyYXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdudW1JbnRlcm5hbFBnc0l0ZXJhdGlvbnMnKTtcblx0cHJpdmF0ZSBhbGxvd2VkTGluZWFyRXJyb3IgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2FsbG93ZWRMaW5lYXJFcnJvcicpO1xuXHRwcml2YXRlIG1pbklzbGFuZFNpemUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ21pbklzbGFuZFNpemUnKTtcblx0cHJpdmF0ZSBtYXhDY2RTdWJzdGVwcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnbWF4Q2NkU3Vic3RlcHMnKTtcblx0cHJpdmF0ZSBwcmVkaWN0aW9uRGlzdGFuY2UgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3ByZWRpY3Rpb25EaXN0YW5jZScpO1xuXHRwcml2YXRlIGVycCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZXJwJyk7XG5cdHByaXZhdGUgbGVuZ3RoVW5pdCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbGVuZ3RoVW5pdCcpO1xuXHRwcml2YXRlIHRpbWVTdGVwID0gcGljayh0aGlzLm9wdGlvbnMsICd0aW1lU3RlcCcpO1xuXHRwcml2YXRlIGludGVycG9sYXRlID0gcGljayh0aGlzLm9wdGlvbnMsICdpbnRlcnBvbGF0ZScpO1xuXG5cdHBhdXNlZCA9IHBpY2sodGhpcy5vcHRpb25zLCAncGF1c2VkJyk7XG5cdGRlYnVnID0gcGljayh0aGlzLm9wdGlvbnMsICdkZWJ1ZycpO1xuXHRjb2xsaWRlcnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NvbGxpZGVycycpO1xuXG5cdHByaXZhdGUgZ3Jhdml0eSA9IHZlY3RvcjModGhpcy5vcHRpb25zLCAnZ3Jhdml0eScpO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cblx0cHJvdGVjdGVkIHJhcGllckNvbnN0cnVjdCA9IHNpZ25hbDx0eXBlb2YgUkFQSUVSIHwgbnVsbD4obnVsbCk7XG5cdHByb3RlY3RlZCByYXBpZXJFcnJvciA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblx0cmFwaWVyID0gdGhpcy5yYXBpZXJDb25zdHJ1Y3QuYXNSZWFkb25seSgpO1xuXG5cdHJlYWR5ID0gY29tcHV0ZWQoKCkgPT4gISF0aGlzLnJhcGllcigpKTtcblx0d29ybGRTaW5nbGV0b24gPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgcmFwaWVyID0gdGhpcy5yYXBpZXIoKTtcblx0XHRpZiAoIXJhcGllcikgcmV0dXJuIG51bGw7XG5cdFx0cmV0dXJuIGNyZWF0ZVNpbmdsZXRvblByb3h5PFdvcmxkPigoKSA9PiBuZXcgcmFwaWVyLldvcmxkKHVudHJhY2tlZCh0aGlzLmdyYXZpdHkpKSk7XG5cdH0pO1xuXG5cdHJpZ2lkQm9keVN0YXRlczogTmd0clJpZ2lkQm9keVN0YXRlTWFwID0gbmV3IE1hcCgpO1xuXHRjb2xsaWRlclN0YXRlczogTmd0ckNvbGxpZGVyU3RhdGVNYXAgPSBuZXcgTWFwKCk7XG5cdHJpZ2lkQm9keUV2ZW50czogTmd0ckV2ZW50TWFwID0gbmV3IE1hcCgpO1xuXHRjb2xsaWRlckV2ZW50czogTmd0ckV2ZW50TWFwID0gbmV3IE1hcCgpO1xuXHRwcml2YXRlIGJlZm9yZVN0ZXBDYWxsYmFja3M6IE5ndHJXb3JsZFN0ZXBDYWxsYmFja1NldCA9IG5ldyBTZXQoKTtcblx0cHJpdmF0ZSBhZnRlclN0ZXBDYWxsYmFja3M6IE5ndHJXb3JsZFN0ZXBDYWxsYmFja1NldCA9IG5ldyBTZXQoKTtcblxuXHRwcml2YXRlIGV2ZW50UXVldWUgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgcmFwaWVyID0gdGhpcy5yYXBpZXIoKTtcblx0XHRpZiAoIXJhcGllcikgcmV0dXJuIG51bGw7XG5cdFx0cmV0dXJuIG5ldyBFdmVudFF1ZXVlKGZhbHNlKTtcblx0fSk7XG5cblx0cHJpdmF0ZSBzdGVwcGluZ1N0YXRlOiB7XG5cdFx0YWNjdW11bGF0b3I6IG51bWJlcjtcblx0XHRwcmV2aW91c1N0YXRlOiBSZWNvcmQ8bnVtYmVyLCB7IHBvc2l0aW9uOiBWZWN0b3I7IHJvdGF0aW9uOiBSb3RhdGlvbiB9Pjtcblx0fSA9IHsgYWNjdW11bGF0b3I6IDAsIHByZXZpb3VzU3RhdGU6IHt9IH07XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0aW1wb3J0KCdAZGltZm9yZ2UvcmFwaWVyM2QtY29tcGF0Jylcblx0XHRcdC50aGVuKChyYXBpZXIpID0+IHJhcGllci5pbml0KCkudGhlbigoKSA9PiByYXBpZXIpKVxuXHRcdFx0LnRoZW4odGhpcy5yYXBpZXJDb25zdHJ1Y3Quc2V0LmJpbmQodGhpcy5yYXBpZXJDb25zdHJ1Y3QpKVxuXHRcdFx0LmNhdGNoKChlcnIpID0+IHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihgW05HVF0gRmFpbGVkIHRvIGxvYWQgcmFwaWVyM2QtY29tcGF0YCwgZXJyKTtcblx0XHRcdFx0dGhpcy5yYXBpZXJFcnJvci5zZXQoZXJyPy5tZXNzYWdlID8/IGVyci50b1N0cmluZygpKTtcblx0XHRcdH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdHRoaXMudXBkYXRlV29ybGRFZmZlY3QoKTtcblx0XHR9KTtcblxuXHRcdHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuXHRcdFx0Y29uc3Qgd29ybGQgPSB0aGlzLndvcmxkU2luZ2xldG9uKCk7XG5cdFx0XHRpZiAod29ybGQpIHtcblx0XHRcdFx0d29ybGQucHJveHkuZnJlZSgpO1xuXHRcdFx0XHR3b3JsZC5yZXNldCgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0c3RlcChkZWx0YTogbnVtYmVyKSB7XG5cdFx0aWYgKCF0aGlzLnBhdXNlZCgpKSB7XG5cdFx0XHR0aGlzLmludGVybmFsU3RlcChkZWx0YSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSB1cGRhdGVXb3JsZEVmZmVjdCgpIHtcblx0XHRjb25zdCB3b3JsZCA9IHRoaXMud29ybGRTaW5nbGV0b24oKTtcblx0XHRpZiAoIXdvcmxkKSByZXR1cm47XG5cblx0XHR3b3JsZC5wcm94eS5ncmF2aXR5ID0gdGhpcy5ncmF2aXR5KCk7XG5cdFx0d29ybGQucHJveHkuaW50ZWdyYXRpb25QYXJhbWV0ZXJzLm51bVNvbHZlckl0ZXJhdGlvbnMgPSB0aGlzLm51bVNvbHZlckl0ZXJhdGlvbnMoKTtcblx0XHR3b3JsZC5wcm94eS5pbnRlZ3JhdGlvblBhcmFtZXRlcnMubnVtQWRkaXRpb25hbEZyaWN0aW9uSXRlcmF0aW9ucyA9IHRoaXMubnVtQWRkaXRpb25hbEZyaWN0aW9uSXRlcmF0aW9ucygpO1xuXHRcdHdvcmxkLnByb3h5LmludGVncmF0aW9uUGFyYW1ldGVycy5udW1JbnRlcm5hbFBnc0l0ZXJhdGlvbnMgPSB0aGlzLm51bUludGVybmFsUGdzSXRlcmF0aW9ucygpO1xuXHRcdHdvcmxkLnByb3h5LmludGVncmF0aW9uUGFyYW1ldGVycy5ub3JtYWxpemVkQWxsb3dlZExpbmVhckVycm9yID0gdGhpcy5hbGxvd2VkTGluZWFyRXJyb3IoKTtcblx0XHR3b3JsZC5wcm94eS5pbnRlZ3JhdGlvblBhcmFtZXRlcnMubWluSXNsYW5kU2l6ZSA9IHRoaXMubWluSXNsYW5kU2l6ZSgpO1xuXHRcdHdvcmxkLnByb3h5LmludGVncmF0aW9uUGFyYW1ldGVycy5tYXhDY2RTdWJzdGVwcyA9IHRoaXMubWF4Q2NkU3Vic3RlcHMoKTtcblx0XHR3b3JsZC5wcm94eS5pbnRlZ3JhdGlvblBhcmFtZXRlcnMubm9ybWFsaXplZFByZWRpY3Rpb25EaXN0YW5jZSA9IHRoaXMucHJlZGljdGlvbkRpc3RhbmNlKCk7XG5cdFx0LyoqXG5cdFx0ICogTk9URTogd2UgZG9uJ3Qga25vdyBpZiB0aGlzIGlzIHRoZSBjb3JyZWN0IHdheSB0byBzZXQgZm9yIGNvbnRhY3RfbmF0dXJhbF9mcmVxdWVuY3kgb3Igbm90LlxuXHRcdCAqIGJ1dCBhdCBsZWFzdCwgaXQgZ2V0cyB0aGUgYGNvbnRhY3RfZXJwYCB2YWx1ZSB0byBiZSB2ZXJ5IGNsb3NlIHdpdGggc2V0dGluZyBgZXJwYFxuXHRcdCAqL1xuXHRcdHdvcmxkLnByb3h5LmludGVncmF0aW9uUGFyYW1ldGVycy5jb250YWN0X25hdHVyYWxfZnJlcXVlbmN5ID0gdGhpcy5lcnAoKSAqIDFfMDAwO1xuXHRcdHdvcmxkLnByb3h5Lmxlbmd0aFVuaXQgPSB0aGlzLmxlbmd0aFVuaXQoKTtcblx0fVxuXG5cdHByaXZhdGUgaW50ZXJuYWxTdGVwKGRlbHRhOiBudW1iZXIpIHtcblx0XHRjb25zdCB3b3JsZFNpbmdsZXRvbiA9IHRoaXMud29ybGRTaW5nbGV0b24oKTtcblx0XHRpZiAoIXdvcmxkU2luZ2xldG9uKSByZXR1cm47XG5cblx0XHRjb25zdCBldmVudFF1ZXVlID0gdGhpcy5ldmVudFF1ZXVlKCk7XG5cdFx0aWYgKCFldmVudFF1ZXVlKSByZXR1cm47XG5cblx0XHRjb25zdCB3b3JsZCA9IHdvcmxkU2luZ2xldG9uLnByb3h5O1xuXHRcdGNvbnN0IFt0aW1lU3RlcCwgaW50ZXJwb2xhdGUsIHBhdXNlZF0gPSBbdGhpcy50aW1lU3RlcCgpLCB0aGlzLmludGVycG9sYXRlKCksIHRoaXMucGF1c2VkKCldO1xuXG5cdFx0LyogQ2hlY2sgaWYgdGhlIHRpbWVzdGVwIGlzIHN1cHBvc2VkIHRvIGJlIHZhcmlhYmxlLiBXZSdsbCBkbyB0aGlzIGhlcmVcbiAgICAgIG9uY2Ugc28gd2UgZG9uJ3QgaGF2ZSB0byBzdHJpbmctY2hlY2sgZXZlcnkgZnJhbWUuICovXG5cdFx0Y29uc3QgdGltZVN0ZXBWYXJpYWJsZSA9IHRpbWVTdGVwID09PSAndmFyeSc7XG5cblx0XHQvKipcblx0XHQgKiBGaXhlZCB0aW1lU3RlcCBzaW11bGF0aW9uIHByb2dyZXNzaW9uXG5cdFx0ICogQHNlZSBodHRwczovL2dhZmZlcm9uZ2FtZXMuY29tL3Bvc3QvZml4X3lvdXJfdGltZXN0ZXAvXG5cdFx0ICovXG5cdFx0Y29uc3QgY2xhbXBlZERlbHRhID0gTWF0aFV0aWxzLmNsYW1wKGRlbHRhLCAwLCAwLjUpO1xuXG5cdFx0Y29uc3Qgc3RlcFdvcmxkID0gKGlubmVyRGVsdGE6IG51bWJlcikgPT4ge1xuXHRcdFx0Ly8gVHJpZ2dlciBiZWZvcmVTdGVwIGNhbGxiYWNrc1xuXHRcdFx0dGhpcy5iZWZvcmVTdGVwQ2FsbGJhY2tzLmZvckVhY2goKGNhbGxiYWNrKSA9PiB7XG5cdFx0XHRcdGNhbGxiYWNrKHdvcmxkKTtcblx0XHRcdH0pO1xuXG5cdFx0XHR3b3JsZC50aW1lc3RlcCA9IGlubmVyRGVsdGE7XG5cdFx0XHR3b3JsZC5zdGVwKGV2ZW50UXVldWUpO1xuXG5cdFx0XHQvLyBUcmlnZ2VyIGFmdGVyU3RlcCBjYWxsYmFja3Ncblx0XHRcdHRoaXMuYWZ0ZXJTdGVwQ2FsbGJhY2tzLmZvckVhY2goKGNhbGxiYWNrKSA9PiB7XG5cdFx0XHRcdGNhbGxiYWNrKHdvcmxkKTtcblx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHRpZiAodGltZVN0ZXBWYXJpYWJsZSkge1xuXHRcdFx0c3RlcFdvcmxkKGNsYW1wZWREZWx0YSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGRvbid0IHN0ZXAgdGltZSBmb3J3YXJkcyBpZiBwYXVzZWRcblx0XHRcdC8vIEluY3JlYXNlIGFjY3VtdWxhdG9yXG5cdFx0XHR0aGlzLnN0ZXBwaW5nU3RhdGUuYWNjdW11bGF0b3IgKz0gY2xhbXBlZERlbHRhO1xuXG5cdFx0XHR3aGlsZSAodGhpcy5zdGVwcGluZ1N0YXRlLmFjY3VtdWxhdG9yID49IHRpbWVTdGVwKSB7XG5cdFx0XHRcdC8vIFNldCB1cCBwcmV2aW91cyBzdGF0ZVxuXHRcdFx0XHQvLyBuZWVkZWQgZm9yIGFjY3VyYXRlIGludGVycG9sYXRpb25zIGlmIHRoZSB3b3JsZCBzdGVwcyBtb3JlIHRoYW4gb25jZVxuXHRcdFx0XHRpZiAoaW50ZXJwb2xhdGUpIHtcblx0XHRcdFx0XHR0aGlzLnN0ZXBwaW5nU3RhdGUucHJldmlvdXNTdGF0ZSA9IHt9O1xuXHRcdFx0XHRcdHdvcmxkLmZvckVhY2hSaWdpZEJvZHkoKGJvZHkpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuc3RlcHBpbmdTdGF0ZS5wcmV2aW91c1N0YXRlW2JvZHkuaGFuZGxlXSA9IHtcblx0XHRcdFx0XHRcdFx0cG9zaXRpb246IGJvZHkudHJhbnNsYXRpb24oKSxcblx0XHRcdFx0XHRcdFx0cm90YXRpb246IGJvZHkucm90YXRpb24oKSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRzdGVwV29ybGQodGltZVN0ZXApO1xuXHRcdFx0XHR0aGlzLnN0ZXBwaW5nU3RhdGUuYWNjdW11bGF0b3IgLT0gdGltZVN0ZXA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3QgaW50ZXJwb2xhdGlvbkFscGhhID1cblx0XHRcdHRpbWVTdGVwVmFyaWFibGUgfHwgIWludGVycG9sYXRlIHx8IHBhdXNlZCA/IDEgOiB0aGlzLnN0ZXBwaW5nU3RhdGUuYWNjdW11bGF0b3IgLyB0aW1lU3RlcDtcblxuXHRcdC8vIFVwZGF0ZSBtZXNoZXNcblx0XHR0aGlzLnJpZ2lkQm9keVN0YXRlcy5mb3JFYWNoKChzdGF0ZSwgaGFuZGxlKSA9PiB7XG5cdFx0XHRjb25zdCByaWdpZEJvZHkgPSB3b3JsZC5nZXRSaWdpZEJvZHkoaGFuZGxlKTtcblxuXHRcdFx0Y29uc3QgZXZlbnRzID0gdGhpcy5yaWdpZEJvZHlFdmVudHMuZ2V0KGhhbmRsZSk7XG5cdFx0XHRpZiAoZXZlbnRzPy5vblNsZWVwIHx8IGV2ZW50cz8ub25XYWtlKSB7XG5cdFx0XHRcdGlmIChyaWdpZEJvZHkuaXNTbGVlcGluZygpICYmICFzdGF0ZS5pc1NsZWVwaW5nKSBldmVudHM/Lm9uU2xlZXA/LigpO1xuXHRcdFx0XHRpZiAoIXJpZ2lkQm9keS5pc1NsZWVwaW5nKCkgJiYgc3RhdGUuaXNTbGVlcGluZykgZXZlbnRzPy5vbldha2U/LigpO1xuXHRcdFx0XHRzdGF0ZS5pc1NsZWVwaW5nID0gcmlnaWRCb2R5LmlzU2xlZXBpbmcoKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCFyaWdpZEJvZHkgfHwgKHJpZ2lkQm9keS5pc1NsZWVwaW5nKCkgJiYgISgnaXNJbnN0YW5jZWRNZXNoJyBpbiBzdGF0ZS5vYmplY3QpKSB8fCAhc3RhdGUuc2V0TWF0cml4KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTmV3IHN0YXRlc1xuXHRcdFx0bGV0IHQgPSByaWdpZEJvZHkudHJhbnNsYXRpb24oKSBhcyBWZWN0b3IzO1xuXHRcdFx0bGV0IHIgPSByaWdpZEJvZHkucm90YXRpb24oKSBhcyBRdWF0ZXJuaW9uO1xuXG5cdFx0XHRsZXQgcHJldmlvdXNTdGF0ZSA9IHRoaXMuc3RlcHBpbmdTdGF0ZS5wcmV2aW91c1N0YXRlW2hhbmRsZV07XG5cblx0XHRcdGlmIChwcmV2aW91c1N0YXRlKSB7XG5cdFx0XHRcdC8vIEdldCBwcmV2aW91cyBzaW11bGF0ZWQgd29ybGQgcG9zaXRpb25cblx0XHRcdFx0X21hdHJpeDRcblx0XHRcdFx0XHQuY29tcG9zZShwcmV2aW91c1N0YXRlLnBvc2l0aW9uIGFzIFZlY3RvcjMsIHJhcGllclF1YXRlcm5pb25Ub1F1YXRlcm5pb24ocHJldmlvdXNTdGF0ZS5yb3RhdGlvbiksIHN0YXRlLnNjYWxlKVxuXHRcdFx0XHRcdC5wcmVtdWx0aXBseShzdGF0ZS5pbnZlcnRlZFdvcmxkTWF0cml4KVxuXHRcdFx0XHRcdC5kZWNvbXBvc2UoX3Bvc2l0aW9uLCBfcm90YXRpb24sIF9zY2FsZSk7XG5cblx0XHRcdFx0Ly8gQXBwbHkgcHJldmlvdXMgdGljayBwb3NpdGlvblxuXHRcdFx0XHRpZiAoc3RhdGUubWVzaFR5cGUgPT0gJ21lc2gnKSB7XG5cdFx0XHRcdFx0c3RhdGUub2JqZWN0LnBvc2l0aW9uLmNvcHkoX3Bvc2l0aW9uKTtcblx0XHRcdFx0XHRzdGF0ZS5vYmplY3QucXVhdGVybmlvbi5jb3B5KF9yb3RhdGlvbik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gR2V0IG5ldyBwb3NpdGlvblxuXHRcdFx0X21hdHJpeDRcblx0XHRcdFx0LmNvbXBvc2UodCwgcmFwaWVyUXVhdGVybmlvblRvUXVhdGVybmlvbihyKSwgc3RhdGUuc2NhbGUpXG5cdFx0XHRcdC5wcmVtdWx0aXBseShzdGF0ZS5pbnZlcnRlZFdvcmxkTWF0cml4KVxuXHRcdFx0XHQuZGVjb21wb3NlKF9wb3NpdGlvbiwgX3JvdGF0aW9uLCBfc2NhbGUpO1xuXG5cdFx0XHRpZiAoc3RhdGUubWVzaFR5cGUgPT0gJ2luc3RhbmNlZE1lc2gnKSB7XG5cdFx0XHRcdHN0YXRlLnNldE1hdHJpeChfbWF0cml4NCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBJbnRlcnBvbGF0ZSB0byBuZXcgcG9zaXRpb25cblx0XHRcdFx0c3RhdGUub2JqZWN0LnBvc2l0aW9uLmxlcnAoX3Bvc2l0aW9uLCBpbnRlcnBvbGF0aW9uQWxwaGEpO1xuXHRcdFx0XHRzdGF0ZS5vYmplY3QucXVhdGVybmlvbi5zbGVycChfcm90YXRpb24sIGludGVycG9sYXRpb25BbHBoYSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRldmVudFF1ZXVlLmRyYWluQ29sbGlzaW9uRXZlbnRzKChoYW5kbGUxLCBoYW5kbGUyLCBzdGFydGVkKSA9PiB7XG5cdFx0XHRjb25zdCBzb3VyY2UxID0gdGhpcy5nZXRTb3VyY2VGcm9tQ29sbGlkZXJIYW5kbGUoaGFuZGxlMSk7XG5cdFx0XHRjb25zdCBzb3VyY2UyID0gdGhpcy5nZXRTb3VyY2VGcm9tQ29sbGlkZXJIYW5kbGUoaGFuZGxlMik7XG5cblx0XHRcdC8vIENvbGxpc2lvbiBFdmVudHNcblx0XHRcdGlmICghc291cmNlMT8uY29sbGlkZXIub2JqZWN0IHx8ICFzb3VyY2UyPy5jb2xsaWRlci5vYmplY3QpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBjb2xsaXNpb25QYXlsb2FkMSA9IHRoaXMuZ2V0Q29sbGlzaW9uUGF5bG9hZEZyb21Tb3VyY2Uoc291cmNlMSwgc291cmNlMik7XG5cdFx0XHRjb25zdCBjb2xsaXNpb25QYXlsb2FkMiA9IHRoaXMuZ2V0Q29sbGlzaW9uUGF5bG9hZEZyb21Tb3VyY2Uoc291cmNlMiwgc291cmNlMSk7XG5cblx0XHRcdGlmIChzdGFydGVkKSB7XG5cdFx0XHRcdHdvcmxkLmNvbnRhY3RQYWlyKHNvdXJjZTEuY29sbGlkZXIub2JqZWN0LCBzb3VyY2UyLmNvbGxpZGVyLm9iamVjdCwgKG1hbmlmb2xkLCBmbGlwcGVkKSA9PiB7XG5cdFx0XHRcdFx0LyogUmlnaWRCb2R5IGV2ZW50cyAqL1xuXHRcdFx0XHRcdHNvdXJjZTEucmlnaWRCb2R5LmV2ZW50cz8ub25Db2xsaXNpb25FbnRlcj8uKHsgLi4uY29sbGlzaW9uUGF5bG9hZDEsIG1hbmlmb2xkLCBmbGlwcGVkIH0pO1xuXHRcdFx0XHRcdHNvdXJjZTIucmlnaWRCb2R5LmV2ZW50cz8ub25Db2xsaXNpb25FbnRlcj8uKHsgLi4uY29sbGlzaW9uUGF5bG9hZDIsIG1hbmlmb2xkLCBmbGlwcGVkIH0pO1xuXG5cdFx0XHRcdFx0LyogQ29sbGlkZXIgZXZlbnRzICovXG5cdFx0XHRcdFx0c291cmNlMS5jb2xsaWRlci5ldmVudHM/Lm9uQ29sbGlzaW9uRW50ZXI/Lih7IC4uLmNvbGxpc2lvblBheWxvYWQxLCBtYW5pZm9sZCwgZmxpcHBlZCB9KTtcblx0XHRcdFx0XHRzb3VyY2UyLmNvbGxpZGVyLmV2ZW50cz8ub25Db2xsaXNpb25FbnRlcj8uKHsgLi4uY29sbGlzaW9uUGF5bG9hZDIsIG1hbmlmb2xkLCBmbGlwcGVkIH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNvdXJjZTEucmlnaWRCb2R5LmV2ZW50cz8ub25Db2xsaXNpb25FeGl0Py4oY29sbGlzaW9uUGF5bG9hZDEpO1xuXHRcdFx0XHRzb3VyY2UyLnJpZ2lkQm9keS5ldmVudHM/Lm9uQ29sbGlzaW9uRXhpdD8uKGNvbGxpc2lvblBheWxvYWQyKTtcblx0XHRcdFx0c291cmNlMS5jb2xsaWRlci5ldmVudHM/Lm9uQ29sbGlzaW9uRXhpdD8uKGNvbGxpc2lvblBheWxvYWQxKTtcblx0XHRcdFx0c291cmNlMi5jb2xsaWRlci5ldmVudHM/Lm9uQ29sbGlzaW9uRXhpdD8uKGNvbGxpc2lvblBheWxvYWQyKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2Vuc29yIEludGVyc2VjdGlvbnNcblx0XHRcdGlmIChzdGFydGVkKSB7XG5cdFx0XHRcdGlmICh3b3JsZC5pbnRlcnNlY3Rpb25QYWlyKHNvdXJjZTEuY29sbGlkZXIub2JqZWN0LCBzb3VyY2UyLmNvbGxpZGVyLm9iamVjdCkpIHtcblx0XHRcdFx0XHRzb3VyY2UxLnJpZ2lkQm9keS5ldmVudHM/Lm9uSW50ZXJzZWN0aW9uRW50ZXI/Lihjb2xsaXNpb25QYXlsb2FkMSk7XG5cdFx0XHRcdFx0c291cmNlMi5yaWdpZEJvZHkuZXZlbnRzPy5vbkludGVyc2VjdGlvbkVudGVyPy4oY29sbGlzaW9uUGF5bG9hZDIpO1xuXHRcdFx0XHRcdHNvdXJjZTEuY29sbGlkZXIuZXZlbnRzPy5vbkludGVyc2VjdGlvbkVudGVyPy4oY29sbGlzaW9uUGF5bG9hZDEpO1xuXHRcdFx0XHRcdHNvdXJjZTIuY29sbGlkZXIuZXZlbnRzPy5vbkludGVyc2VjdGlvbkVudGVyPy4oY29sbGlzaW9uUGF5bG9hZDIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzb3VyY2UxLnJpZ2lkQm9keS5ldmVudHM/Lm9uSW50ZXJzZWN0aW9uRXhpdD8uKGNvbGxpc2lvblBheWxvYWQxKTtcblx0XHRcdFx0c291cmNlMi5yaWdpZEJvZHkuZXZlbnRzPy5vbkludGVyc2VjdGlvbkV4aXQ/Lihjb2xsaXNpb25QYXlsb2FkMik7XG5cdFx0XHRcdHNvdXJjZTEuY29sbGlkZXIuZXZlbnRzPy5vbkludGVyc2VjdGlvbkV4aXQ/Lihjb2xsaXNpb25QYXlsb2FkMSk7XG5cdFx0XHRcdHNvdXJjZTIuY29sbGlkZXIuZXZlbnRzPy5vbkludGVyc2VjdGlvbkV4aXQ/Lihjb2xsaXNpb25QYXlsb2FkMik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRldmVudFF1ZXVlLmRyYWluQ29udGFjdEZvcmNlRXZlbnRzKChldmVudCkgPT4ge1xuXHRcdFx0Y29uc3Qgc291cmNlMSA9IHRoaXMuZ2V0U291cmNlRnJvbUNvbGxpZGVySGFuZGxlKGV2ZW50LmNvbGxpZGVyMSgpKTtcblx0XHRcdGNvbnN0IHNvdXJjZTIgPSB0aGlzLmdldFNvdXJjZUZyb21Db2xsaWRlckhhbmRsZShldmVudC5jb2xsaWRlcjIoKSk7XG5cblx0XHRcdC8vIENvbGxpc2lvbiBFdmVudHNcblx0XHRcdGlmICghc291cmNlMT8uY29sbGlkZXIub2JqZWN0IHx8ICFzb3VyY2UyPy5jb2xsaWRlci5vYmplY3QpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBjb2xsaXNpb25QYXlsb2FkMSA9IHRoaXMuZ2V0Q29sbGlzaW9uUGF5bG9hZEZyb21Tb3VyY2Uoc291cmNlMSwgc291cmNlMik7XG5cdFx0XHRjb25zdCBjb2xsaXNpb25QYXlsb2FkMiA9IHRoaXMuZ2V0Q29sbGlzaW9uUGF5bG9hZEZyb21Tb3VyY2Uoc291cmNlMiwgc291cmNlMSk7XG5cblx0XHRcdHNvdXJjZTEucmlnaWRCb2R5LmV2ZW50cz8ub25Db250YWN0Rm9yY2U/Lih7XG5cdFx0XHRcdC4uLmNvbGxpc2lvblBheWxvYWQxLFxuXHRcdFx0XHR0b3RhbEZvcmNlOiBldmVudC50b3RhbEZvcmNlKCksXG5cdFx0XHRcdHRvdGFsRm9yY2VNYWduaXR1ZGU6IGV2ZW50LnRvdGFsRm9yY2VNYWduaXR1ZGUoKSxcblx0XHRcdFx0bWF4Rm9yY2VEaXJlY3Rpb246IGV2ZW50Lm1heEZvcmNlRGlyZWN0aW9uKCksXG5cdFx0XHRcdG1heEZvcmNlTWFnbml0dWRlOiBldmVudC5tYXhGb3JjZU1hZ25pdHVkZSgpLFxuXHRcdFx0fSk7XG5cblx0XHRcdHNvdXJjZTIucmlnaWRCb2R5LmV2ZW50cz8ub25Db250YWN0Rm9yY2U/Lih7XG5cdFx0XHRcdC4uLmNvbGxpc2lvblBheWxvYWQyLFxuXHRcdFx0XHR0b3RhbEZvcmNlOiBldmVudC50b3RhbEZvcmNlKCksXG5cdFx0XHRcdHRvdGFsRm9yY2VNYWduaXR1ZGU6IGV2ZW50LnRvdGFsRm9yY2VNYWduaXR1ZGUoKSxcblx0XHRcdFx0bWF4Rm9yY2VEaXJlY3Rpb246IGV2ZW50Lm1heEZvcmNlRGlyZWN0aW9uKCksXG5cdFx0XHRcdG1heEZvcmNlTWFnbml0dWRlOiBldmVudC5tYXhGb3JjZU1hZ25pdHVkZSgpLFxuXHRcdFx0fSk7XG5cblx0XHRcdHNvdXJjZTEuY29sbGlkZXIuZXZlbnRzPy5vbkNvbnRhY3RGb3JjZT8uKHtcblx0XHRcdFx0Li4uY29sbGlzaW9uUGF5bG9hZDEsXG5cdFx0XHRcdHRvdGFsRm9yY2U6IGV2ZW50LnRvdGFsRm9yY2UoKSxcblx0XHRcdFx0dG90YWxGb3JjZU1hZ25pdHVkZTogZXZlbnQudG90YWxGb3JjZU1hZ25pdHVkZSgpLFxuXHRcdFx0XHRtYXhGb3JjZURpcmVjdGlvbjogZXZlbnQubWF4Rm9yY2VEaXJlY3Rpb24oKSxcblx0XHRcdFx0bWF4Rm9yY2VNYWduaXR1ZGU6IGV2ZW50Lm1heEZvcmNlTWFnbml0dWRlKCksXG5cdFx0XHR9KTtcblxuXHRcdFx0c291cmNlMi5jb2xsaWRlci5ldmVudHM/Lm9uQ29udGFjdEZvcmNlPy4oe1xuXHRcdFx0XHQuLi5jb2xsaXNpb25QYXlsb2FkMixcblx0XHRcdFx0dG90YWxGb3JjZTogZXZlbnQudG90YWxGb3JjZSgpLFxuXHRcdFx0XHR0b3RhbEZvcmNlTWFnbml0dWRlOiBldmVudC50b3RhbEZvcmNlTWFnbml0dWRlKCksXG5cdFx0XHRcdG1heEZvcmNlRGlyZWN0aW9uOiBldmVudC5tYXhGb3JjZURpcmVjdGlvbigpLFxuXHRcdFx0XHRtYXhGb3JjZU1hZ25pdHVkZTogZXZlbnQubWF4Rm9yY2VNYWduaXR1ZGUoKSxcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0d29ybGQuZm9yRWFjaEFjdGl2ZVJpZ2lkQm9keSgoKSA9PiB7XG5cdFx0XHR0aGlzLnN0b3JlLnNuYXBzaG90LmludmFsaWRhdGUoKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0U291cmNlRnJvbUNvbGxpZGVySGFuZGxlKGhhbmRsZTogQ29sbGlkZXJIYW5kbGUpIHtcblx0XHRjb25zdCB3b3JsZCA9IHRoaXMud29ybGRTaW5nbGV0b24oKTtcblx0XHRpZiAoIXdvcmxkKSByZXR1cm47XG5cblx0XHRjb25zdCBjb2xsaWRlciA9IHdvcmxkLnByb3h5LmdldENvbGxpZGVyKGhhbmRsZSk7XG5cdFx0Y29uc3QgY29sRXZlbnRzID0gdGhpcy5jb2xsaWRlckV2ZW50cy5nZXQoaGFuZGxlKTtcblx0XHRjb25zdCBjb2xsaWRlclN0YXRlID0gdGhpcy5jb2xsaWRlclN0YXRlcy5nZXQoaGFuZGxlKTtcblxuXHRcdGNvbnN0IHJpZ2lkQm9keUhhbmRsZSA9IGNvbGxpZGVyLnBhcmVudCgpPy5oYW5kbGU7XG5cdFx0Y29uc3QgcmlnaWRCb2R5ID0gcmlnaWRCb2R5SGFuZGxlICE9PSB1bmRlZmluZWQgPyB3b3JsZC5wcm94eS5nZXRSaWdpZEJvZHkocmlnaWRCb2R5SGFuZGxlKSA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCByaWdpZEJvZHlFdmVudHMgPVxuXHRcdFx0cmlnaWRCb2R5ICYmIHJpZ2lkQm9keUhhbmRsZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5yaWdpZEJvZHlFdmVudHMuZ2V0KHJpZ2lkQm9keUhhbmRsZSkgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgcmlnaWRCb2R5U3RhdGUgPSByaWdpZEJvZHlIYW5kbGUgIT09IHVuZGVmaW5lZCA/IHRoaXMucmlnaWRCb2R5U3RhdGVzLmdldChyaWdpZEJvZHlIYW5kbGUpIDogdW5kZWZpbmVkO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGNvbGxpZGVyOiB7IG9iamVjdDogY29sbGlkZXIsIGV2ZW50czogY29sRXZlbnRzLCBzdGF0ZTogY29sbGlkZXJTdGF0ZSB9LFxuXHRcdFx0cmlnaWRCb2R5OiB7IG9iamVjdDogcmlnaWRCb2R5LCBldmVudHM6IHJpZ2lkQm9keUV2ZW50cywgc3RhdGU6IHJpZ2lkQm9keVN0YXRlIH0sXG5cdFx0fSBhcyBOZ3RyQ29sbGlzaW9uU291cmNlO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRDb2xsaXNpb25QYXlsb2FkRnJvbVNvdXJjZSh0YXJnZXQ6IE5ndHJDb2xsaXNpb25Tb3VyY2UsIG90aGVyOiBOZ3RyQ29sbGlzaW9uU291cmNlKTogTmd0ckNvbGxpc2lvblBheWxvYWQge1xuXHRcdHJldHVybiB7XG5cdFx0XHR0YXJnZXQ6IHtcblx0XHRcdFx0cmlnaWRCb2R5OiB0YXJnZXQucmlnaWRCb2R5Lm9iamVjdCxcblx0XHRcdFx0Y29sbGlkZXI6IHRhcmdldC5jb2xsaWRlci5vYmplY3QsXG5cdFx0XHRcdGNvbGxpZGVyT2JqZWN0OiB0YXJnZXQuY29sbGlkZXIuc3RhdGU/Lm9iamVjdCxcblx0XHRcdFx0cmlnaWRCb2R5T2JqZWN0OiB0YXJnZXQucmlnaWRCb2R5LnN0YXRlPy5vYmplY3QsXG5cdFx0XHR9LFxuXHRcdFx0b3RoZXI6IHtcblx0XHRcdFx0cmlnaWRCb2R5OiBvdGhlci5yaWdpZEJvZHkub2JqZWN0LFxuXHRcdFx0XHRjb2xsaWRlcjogb3RoZXIuY29sbGlkZXIub2JqZWN0LFxuXHRcdFx0XHRjb2xsaWRlck9iamVjdDogb3RoZXIuY29sbGlkZXIuc3RhdGU/Lm9iamVjdCxcblx0XHRcdFx0cmlnaWRCb2R5T2JqZWN0OiBvdGhlci5yaWdpZEJvZHkuc3RhdGU/Lm9iamVjdCxcblx0XHRcdH0sXG5cdFx0fTtcblx0fVxufVxuIl19
|