import*as wasm from"../../wasm/index.js";import{Mat3,Mat4}from"./mat.js";import{Quat}from"./quat.js";import{Vec3}from"./vec.js";export function translation2d(v,out=Mat3.identity()){wasm.translation2d(out.byteOffset,v.byteOffset);return out}export function scaling2d(v,out=Mat3.identity()){wasm.scaling2d(out.byteOffset,v.byteOffset);return out}export function rotation2d(angle,out=Mat3.identity()){wasm.rotation2d(out.byteOffset,angle);return out}export function transformation2d(translate,rotateAngle,scale,out=Mat3.identity()){wasm.transformation2d(out.byteOffset,translate.byteOffset,rotateAngle,scale.byteOffset);return out}export function translation(v,out=Mat4.identity()){wasm.translation(out.byteOffset,v.byteOffset);return out}export function scaling(v,out=Mat4.identity()){wasm.scaling(out.byteOffset,v.byteOffset);return out}export function rotation(q,out=Mat4.identity()){wasm.rotation(out.byteOffset,q.byteOffset);return out}export function translationOf(m,out=new Vec3){wasm.translationof(out.byteOffset,m.byteOffset);return out}export function scalingOf(m,out=new Vec3){wasm.scalingof(out.byteOffset,m.byteOffset);return out}export function rotationOf(m,out=Quat.identity()){wasm.rotationof(out.byteOffset,m.byteOffset);return out}export function transformation(translate,rotate,scale,out=Mat4.identity()){wasm.transformation(out.byteOffset,translate.byteOffset,rotate.byteOffset,scale.byteOffset);return out}export function inverseTRS(trs,out=Mat4.identity()){return!!wasm.inverttrs(out.byteOffset,trs.byteOffset)}export function ortho(left,right,bottom,top,znear,zfar,out=Mat4.identity()){wasm.ortho(out.byteOffset,left,right,bottom,top,znear,zfar);return out}export function perspective(aspect,yfov,znear,zfar,out=Mat4.identity()){wasm.perspective(out.byteOffset,aspect,yfov,znear,zfar);return out}export function perspectiveViewport(left,right,bottom,top,znear,zfar,out=Mat4.identity()){wasm.perspectiveviewport(out.byteOffset,left,right,bottom,top,znear,zfar);return out}export function targetTo(eye,center,up,out=Mat4.identity()){wasm.targetto(out.byteOffset,eye.byteOffset,center.byteOffset,up.byteOffset);return out}export function lookAt(eye,center,up,out=Mat4.identity()){wasm.lookat(out.byteOffset,eye.byteOffset,center.byteOffset,up.byteOffset);return out}export function lookAtDir(pitch,yaw,out=new Vec3){wasm.lookatdir(out.byteOffset,pitch,yaw);return out} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3YXNtIiwiTWF0MyIsIk1hdDQiLCJRdWF0IiwiVmVjMyIsInRyYW5zbGF0aW9uMmQiLCJ2Iiwib3V0IiwiaWRlbnRpdHkiLCJieXRlT2Zmc2V0Iiwic2NhbGluZzJkIiwicm90YXRpb24yZCIsImFuZ2xlIiwidHJhbnNmb3JtYXRpb24yZCIsInRyYW5zbGF0ZSIsInJvdGF0ZUFuZ2xlIiwic2NhbGUiLCJ0cmFuc2xhdGlvbiIsInNjYWxpbmciLCJyb3RhdGlvbiIsInEiLCJ0cmFuc2xhdGlvbk9mIiwibSIsInRyYW5zbGF0aW9ub2YiLCJzY2FsaW5nT2YiLCJzY2FsaW5nb2YiLCJyb3RhdGlvbk9mIiwicm90YXRpb25vZiIsInRyYW5zZm9ybWF0aW9uIiwicm90YXRlIiwiaW52ZXJzZVRSUyIsInRycyIsImludmVydHRycyIsIm9ydGhvIiwibGVmdCIsInJpZ2h0IiwiYm90dG9tIiwidG9wIiwiem5lYXIiLCJ6ZmFyIiwicGVyc3BlY3RpdmUiLCJhc3BlY3QiLCJ5Zm92IiwicGVyc3BlY3RpdmVWaWV3cG9ydCIsInBlcnNwZWN0aXZldmlld3BvcnQiLCJ0YXJnZXRUbyIsImV5ZSIsImNlbnRlciIsInVwIiwidGFyZ2V0dG8iLCJsb29rQXQiLCJsb29rYXQiLCJsb29rQXREaXIiLCJwaXRjaCIsInlhdyIsImxvb2thdGRpciJdLCJzb3VyY2VzIjpbIi4uLy4uL2pzL3dhc20vdHJhbnNmb3JtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHdhc20gZnJvbSAnLi4vLi4vd2FzbS9pbmRleC5qcyc7XG5pbXBvcnQgeyBNYXQzLCBNYXQ0IH0gZnJvbSAnLi9tYXQudHMnO1xuaW1wb3J0IHsgUXVhdCB9IGZyb20gJy4vcXVhdC50cyc7XG5pbXBvcnQgeyBWZWMyLCBWZWMzIH0gZnJvbSAnLi92ZWMudHMnO1xuXG4vKiogUmV0dXJucyBhIHtAbGluayBNYXQzfSBmb3IgYSAyRCBwb2ludCB0cmFuc2xhdGVkIGJ5ICh4LCB5KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2xhdGlvbjJkKHY6IFZlYzIsIG91dCA9IE1hdDMuaWRlbnRpdHkoKSk6IE1hdDMge1xuICB3YXNtLnRyYW5zbGF0aW9uMmQob3V0LmJ5dGVPZmZzZXQsIHYuYnl0ZU9mZnNldCk7XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKiBSZXR1cm5zIGEge0BsaW5rIE1hdDN9IGZvciBhIDJEIHBvaW50IHNjYWxlZCBieSAoeCwgeSkuICovXG5leHBvcnQgZnVuY3Rpb24gc2NhbGluZzJkKHY6IFZlYzIsIG91dCA9IE1hdDMuaWRlbnRpdHkoKSk6IE1hdDMge1xuICB3YXNtLnNjYWxpbmcyZChvdXQuYnl0ZU9mZnNldCwgdi5ieXRlT2Zmc2V0KTtcbiAgcmV0dXJuIG91dDtcbn1cblxuLyoqIFJldHVybnMgYSB7QGxpbmsgTWF0M30gZm9yIGEgMkQgcG9pbnQgcm90YXRlZCBpbiBjb3V0ZXJjbG9ja3dpc2UgZGlyZWN0aW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0aW9uMmQoYW5nbGU6IG51bWJlciwgb3V0ID0gTWF0My5pZGVudGl0eSgpKTogTWF0MyB7XG4gIHdhc20ucm90YXRpb24yZChvdXQuYnl0ZU9mZnNldCwgYW5nbGUpO1xuICByZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSB7QGxpbmsgTWF0M30gZm9yIHRyYW5zZm9ybWF0aW9uIGluIFRSUyBvcmRlciAoPSB0cmFuc2xhdGlvbiAqIHJvdGF0aW9uICogc2NhbGUpLlxuICogQHJldHVybnMgb3V0ID0gdHJhbnNsYXRpb24gKiByb3RhdGlvbiAqIHNjYWxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1hdGlvbjJkKHRyYW5zbGF0ZTogVmVjMiwgcm90YXRlQW5nbGU6IG51bWJlciwgc2NhbGU6IFZlYzIsIG91dCA9IE1hdDMuaWRlbnRpdHkoKSk6IE1hdDMge1xuICB3YXNtLnRyYW5zZm9ybWF0aW9uMmQob3V0LmJ5dGVPZmZzZXQsIHRyYW5zbGF0ZS5ieXRlT2Zmc2V0LCByb3RhdGVBbmdsZSwgc2NhbGUuYnl0ZU9mZnNldCk7XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKiBSZXR1cm4gYSB7QGxpbmsgTWF0NH0gZm9yIGEgM0QgcG9pbnQgdHJhbnNsYXRlZCBieSAoeCwgeSwgeikuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRpb24odjogVmVjMywgb3V0ID0gTWF0NC5pZGVudGl0eSgpKTogTWF0NCB7XG4gIHdhc20udHJhbnNsYXRpb24ob3V0LmJ5dGVPZmZzZXQsIHYuYnl0ZU9mZnNldCk7XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKiBSZXR1cm4gYSB7QGxpbmsgTWF0NH0gZm9yIGEgM0QgcG9pbnQgc2NhbGVkIGJ5ICh4LCB5LCB6KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY2FsaW5nKHY6IFZlYzMsIG91dCA9IE1hdDQuaWRlbnRpdHkoKSk6IE1hdDQge1xuICB3YXNtLnNjYWxpbmcob3V0LmJ5dGVPZmZzZXQsIHYuYnl0ZU9mZnNldCk7XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKiBSZXR1cm5zIGEge0BsaW5rIE1hdDR9IGZvciBhIHJvdGF0aW9uIGJ5IGEge0BsaW5rIFF1YXR9LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0aW9uKHE6IFF1YXQsIG91dCA9IE1hdDQuaWRlbnRpdHkoKSk6IE1hdDQge1xuICB3YXNtLnJvdGF0aW9uKG91dC5ieXRlT2Zmc2V0LCBxLmJ5dGVPZmZzZXQpO1xuICByZXR1cm4gb3V0O1xufVxuXG4vKiogRXh0cmFjdCB0aGUge0BsaW5rIFZlYzN9IHRyYW5zbGF0aW9uIGNvbXBvbmVudCBmcm9tIGEgdHJhbnNmb3JtYXRpb24gbWF0cml4LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbGF0aW9uT2YobTogTWF0NCwgb3V0ID0gbmV3IFZlYzMoKSk6IFZlYzMge1xuICB3YXNtLnRyYW5zbGF0aW9ub2Yob3V0LmJ5dGVPZmZzZXQsIG0uYnl0ZU9mZnNldCk7XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKlxuICogRXh0cmFjdCB0aGUge0BsaW5rIFZlYzN9IHNjYWxpbmcgY29tcG9uZW50cyBmcm9tIGEgdHJhbnNmb3JtYXRpb24gbWF0cml4XG4gKiBpbiBUUlMgb3JkZXIgKD0gdHJhbnNsYXRpb24gKiByb3RhdGlvbiAqIHNjYWxlKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjYWxpbmdPZihtOiBNYXQ0LCBvdXQgPSBuZXcgVmVjMygpKTogVmVjMyB7XG4gIHdhc20uc2NhbGluZ29mKG91dC5ieXRlT2Zmc2V0LCBtLmJ5dGVPZmZzZXQpO1xuICByZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIEV4dHJhY3QgdGhlIHtAbGluayBRdWF0fSByb3RhdGlvbiBjb21wb25lbnRzIGZyb20gYSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXhcbiAqIGluIFRSUyBvcmRlciAoPSB0cmFuc2xhdGlvbiAqIHJvdGF0aW9uICogc2NhbGUpLlxuICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb3RhdGlvbl9tYXRyaXgjUXVhdGVybmlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gcm90YXRpb25PZihtOiBNYXQ0LCBvdXQgPSBRdWF0LmlkZW50aXR5KCkpOiBRdWF0IHtcbiAgd2FzbS5yb3RhdGlvbm9mKG91dC5ieXRlT2Zmc2V0LCBtLmJ5dGVPZmZzZXQpO1xuICByZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSB7QGxpbmsgTWF0NH0gZm9yIHRyYW5zZm9ybWF0aW9uIGluIFRSUyBvcmRlciAoPSB0cmFuc2xhdGlvbiAqIHJvdGF0aW9uICogc2NhbGUpLlxuICogQHJldHVybnMgb3V0ID0gdHJhbnNsYXRpb24gKiByb3RhdGlvbiAqIHNjYWxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1hdGlvbih0cmFuc2xhdGU6IFZlYzMsIHJvdGF0ZTogUXVhdCwgc2NhbGU6IFZlYzMsIG91dCA9IE1hdDQuaWRlbnRpdHkoKSk6IE1hdDQge1xuICB3YXNtLnRyYW5zZm9ybWF0aW9uKG91dC5ieXRlT2Zmc2V0LCB0cmFuc2xhdGUuYnl0ZU9mZnNldCwgcm90YXRlLmJ5dGVPZmZzZXQsIHNjYWxlLmJ5dGVPZmZzZXQpO1xuICByZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGludmVyc2Ugb2YgYSB7QGxpbmsgTWF0NH0gdGhhdCBpcyBhc3N1bWVkIHRvIHJlcHJlc2VudCBhIHZhbGlkIHRyYW5zZm9ybWF0aW9uXG4gKiBpbiBUUlMgb3JkZXIgKD0gdHJhbnNsYXRpb24gKiByb3RhdGlvbiAqIHNjYWxlKS5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB7QGxpbmsgTWF0NC5pbnZlcnR9IGJ5IHVzaW5nIHRoZSBwcm9wZXJ0aWVzIG9mIGEgVFJTIG1hdHJpeC5cbiAqIEByZXR1cm5zIG91dCA9IE1eLTFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludmVyc2VUUlModHJzOiBNYXQ0LCBvdXQgPSBNYXQ0LmlkZW50aXR5KCkpOiBib29sZWFuIHtcbiAgcmV0dXJuICEhd2FzbS5pbnZlcnR0cnMob3V0LmJ5dGVPZmZzZXQsIHRycy5ieXRlT2Zmc2V0KTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIHtAbGluayBNYXQ0fSBvcnRob2dyYXBoaWMgcHJvamVjdGlvbiBtYXRyaXguXG4gKiBUbyBhcHBseSBhIGdsVEYgb3J0aG9ncmFwaGljIGNhbWVyYSwgdXNlOiBsZWZ0ID0gLXhtYWcsIHJpZ2h0ID0geG1hZywgYm90dG9tID0gLXltYWcsIHRvcCA9IHltYWcuXG4gKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09ydGhvZ3JhcGhpY19wcm9qZWN0aW9uXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvZ2xURi90cmVlL21hc3Rlci9zcGVjaWZpY2F0aW9uLzIuMFxuICovXG5leHBvcnQgZnVuY3Rpb24gb3J0aG8oXG4gIGxlZnQ6IG51bWJlciwgcmlnaHQ6IG51bWJlciwgYm90dG9tOiBudW1iZXIsIHRvcDogbnVtYmVyLCB6bmVhcjogbnVtYmVyLCB6ZmFyOiBudW1iZXIsIG91dCA9IE1hdDQuaWRlbnRpdHkoKVxuKTogTWF0NCB7XG4gIHdhc20ub3J0aG8ob3V0LmJ5dGVPZmZzZXQsIGxlZnQsIHJpZ2h0LCBib3R0b20sIHRvcCwgem5lYXIsIHpmYXIpO1xuICByZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUge0BsaW5rIE1hdDR9IHBlcnNwZWN0aXZlIHByb2plY3Rpb24gdXNpbmcgZ2xURidzIGZvcm11bGEuIFVzZSBpbmZpbml0ZSBwcm9qZWN0aW9uIGlmIHpmYXIgPSBJbmZpbml0eS5cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9nbFRGL3RyZWUvbWFzdGVyL3NwZWNpZmljYXRpb24vMi4wXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwZXJzcGVjdGl2ZShhc3BlY3Q6IG51bWJlciwgeWZvdjogbnVtYmVyLCB6bmVhcjogbnVtYmVyLCB6ZmFyOiBudW1iZXIsIG91dCA9IE1hdDQuaWRlbnRpdHkoKSk6IE1hdDQge1xuICB3YXNtLnBlcnNwZWN0aXZlKG91dC5ieXRlT2Zmc2V0LCBhc3BlY3QsIHlmb3YsIHpuZWFyLCB6ZmFyKTtcbiAgcmV0dXJuIG91dDtcbn1cblxuLyoqIENhbGN1bGF0ZSB0aGUge0BsaW5rIE1hdDR9IHBlcnNwZWN0aXZlIHByb2plY3Rpb24gZnJvbSBhIHZpZXdwb3J0LiBVc2UgaW5maW5pdGUgcHJvamVjdGlvbiBpZiB6ZmFyID0gSW5maW5pdHkuICovXG5leHBvcnQgZnVuY3Rpb24gcGVyc3BlY3RpdmVWaWV3cG9ydChcbiAgbGVmdDogbnVtYmVyLCByaWdodDogbnVtYmVyLCBib3R0b206IG51bWJlciwgdG9wOiBudW1iZXIsIHpuZWFyOiBudW1iZXIsIHpmYXI6IG51bWJlciwgb3V0ID0gTWF0NC5pZGVudGl0eSgpXG4pOiBNYXQ0IHtcbiAgd2FzbS5wZXJzcGVjdGl2ZXZpZXdwb3J0KG91dC5ieXRlT2Zmc2V0LCBsZWZ0LCByaWdodCwgYm90dG9tLCB0b3AsIHpuZWFyLCB6ZmFyKTtcbiAgcmV0dXJuIG91dDtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIHtAbGluayBNYXQ0fSBtb2RlbCBtYXRyaXggZm9yIGEgY2FtZXJhIGF0IGV5ZSBwb3NpdGlvbiBsb29raW5nIGF0IHRoZSBjZW50ZXJcbiAqIHBvc2l0aW9uIHdpdGggYSBnaXZlbiB1cCBkaXJlY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YXJnZXRUbyhleWU6IFZlYzMsIGNlbnRlcjogVmVjMywgdXA6IFZlYzMsIG91dCA9IE1hdDQuaWRlbnRpdHkoKSk6IE1hdDQge1xuICB3YXNtLnRhcmdldHRvKG91dC5ieXRlT2Zmc2V0LCBleWUuYnl0ZU9mZnNldCwgY2VudGVyLmJ5dGVPZmZzZXQsIHVwLmJ5dGVPZmZzZXQpO1xuICByZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUge0BsaW5rIE1hdDR9IHZpZXcgbWF0cml4IGZvciBhIGNhbWVyYSBhdCBleWUgcG9zaXRpb24gbG9va2luZyBhdCB0aGUgY2VudGVyXG4gKiBwb3NpdGlvbiB3aXRoIGEgZ2l2ZW4gdXAgZGlyZWN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9va0F0KGV5ZTogVmVjMywgY2VudGVyOiBWZWMzLCB1cDogVmVjMywgb3V0ID0gTWF0NC5pZGVudGl0eSgpKTogTWF0NCB7XG4gIHdhc20ubG9va2F0KG91dC5ieXRlT2Zmc2V0LCBleWUuYnl0ZU9mZnNldCwgY2VudGVyLmJ5dGVPZmZzZXQsIHVwLmJ5dGVPZmZzZXQpO1xuICByZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgbG9vay1hdCBkaXJlY3Rpb24ge0BsaW5rIFZlYzN9IHZlY3RvciBmcm9tIHBpdGNoICh1cC9kb3duKSBhbmQgeWF3IChsZWZ0L3JpZ2h0KSBhbmdsZXMgaW4gcmFkaWFucy5cbiAqIEl0IGxvb2tzIHRvd2FyZHMgLVogYXhpcyB3aGVuIHBpdGNoID0gMCBhbmQgeWF3ID0gMC5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgd2l0aCBsb29rQXQgbWV0aG9kIHRvIGJ1aWxkIGFuIEZQUyBjYW1lcmEgdmlldyBtYXRyaXggYnk6XG4gKiB2aWV3TWF0cml4ID0gbG9va0F0KGV5ZSwgbG9va0F0RGlyKHlhdywgcGl0Y2gpLmFkZChleWUpLCBuZXcgVmVjMygwLCAxLCAwKSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb29rQXREaXIocGl0Y2g6IG51bWJlciwgeWF3OiBudW1iZXIsIG91dCA9IG5ldyBWZWMzKCkpOiBWZWMzIHtcbiAgd2FzbS5sb29rYXRkaXIob3V0LmJ5dGVPZmZzZXQsIHBpdGNoLCB5YXcpO1xuICByZXR1cm4gb3V0O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFPLEdBQUssQ0FBQUEsSUFBSSxLQUFNLHFCQUFxQixDQUFDLE9BQ25DQyxJQUFJLENBQUVDLElBQUksdUJBQ1ZDLElBQUksd0JBQ0VDLElBQUksZ0JBR25CLE1BQU8sU0FBUyxDQUFBQyxhQUFhQSxDQUFDQyxDQUFPLENBQUVDLEdBQUcsQ0FBR04sSUFBSSxDQUFDTyxRQUFRLENBQUMsQ0FBQyxDQUFRLENBQ2xFUixJQUFJLENBQUNLLGFBQWEsQ0FBQ0UsR0FBRyxDQUFDRSxVQUFVLENBQUVILENBQUMsQ0FBQ0csVUFBVSxDQUFDLENBQ2hELE1BQU8sQ0FBQUYsR0FDVCxDQUdBLE1BQU8sU0FBUyxDQUFBRyxTQUFTQSxDQUFDSixDQUFPLENBQUVDLEdBQUcsQ0FBR04sSUFBSSxDQUFDTyxRQUFRLENBQUMsQ0FBQyxDQUFRLENBQzlEUixJQUFJLENBQUNVLFNBQVMsQ0FBQ0gsR0FBRyxDQUFDRSxVQUFVLENBQUVILENBQUMsQ0FBQ0csVUFBVSxDQUFDLENBQzVDLE1BQU8sQ0FBQUYsR0FDVCxDQUdBLE1BQU8sU0FBUyxDQUFBSSxVQUFVQSxDQUFDQyxLQUFhLENBQUVMLEdBQUcsQ0FBR04sSUFBSSxDQUFDTyxRQUFRLENBQUMsQ0FBQyxDQUFRLENBQ3JFUixJQUFJLENBQUNXLFVBQVUsQ0FBQ0osR0FBRyxDQUFDRSxVQUFV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