@woosh/meep-engine 2.107.0 → 2.108.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bundle-worker-image-decoder.js +1 -1
- package/build/meep.cjs +78 -46
- package/build/meep.min.js +1 -1
- package/build/meep.module.js +78 -47
- package/package.json +1 -1
- package/src/core/binary/int32_to_binary_string.d.ts +3 -2
- package/src/core/binary/int32_to_binary_string.d.ts.map +1 -1
- package/src/core/binary/int32_to_binary_string.js +18 -14
- package/src/core/binary/split_by_3.spec.d.ts +2 -0
- package/src/core/binary/split_by_3.spec.d.ts.map +1 -0
- package/src/core/binary/split_by_3.spec.js +22 -0
- package/src/core/binary/to_half_float_uint16.d.ts.map +1 -1
- package/src/core/binary/to_half_float_uint16.js +7 -5
- package/src/core/collection/array/isArrayEqualStrict.d.ts.map +1 -1
- package/src/core/collection/array/isArrayEqualStrict.js +2 -2
- package/src/core/color/Color.d.ts.map +1 -1
- package/src/core/color/Color.js +7 -2
- package/src/core/color/hsv/rgb2hsv.d.ts +3 -3
- package/src/core/color/hsv/rgb2hsv.d.ts.map +1 -1
- package/src/core/color/hsv/rgb2hsv.js +11 -18
- package/src/core/color/rgb_to_luminance.d.ts +9 -0
- package/src/core/color/rgb_to_luminance.d.ts.map +1 -0
- package/src/core/color/rgb_to_luminance.js +10 -0
- package/src/core/geom/3d/sphere/harmonics/README.md +16 -2
- package/src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.d.ts +6 -0
- package/src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.js +15 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_basis_at.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/harmonics/sh3_basis_at.js +21 -9
- package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts +3 -3
- package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +35 -206
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts +8 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate.js +29 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_sample_by_direction.js +10 -10
- package/src/core/geom/3d/sphere/harmonics/sh_index.d.ts +8 -0
- package/src/core/geom/3d/sphere/harmonics/sh_index.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh_index.js +9 -0
- package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts +8 -0
- package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.js +44 -0
- package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts +8 -0
- package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.js +86 -0
- package/src/core/geom/3d/sphere/in_sphere3d_robust.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/in_sphere3d_robust.js +2 -1
- package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts +20 -1
- package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +53 -7
- package/src/core/geom/3d/tetrahedra/TetrahedralMesh.spec.js +2 -2
- package/src/core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.d.ts +1 -1
- package/src/core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.js +12 -7
- package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.d.ts +13 -0
- package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.js +135 -0
- package/src/core/geom/3d/tetrahedra/prototypeTetrahedraBuilder.js +38 -24
- package/src/core/geom/3d/tetrahedra/{compute_circumsphere.d.ts → tetrahedron_compute_circumsphere.d.ts} +3 -5
- package/src/core/geom/3d/tetrahedra/tetrahedron_compute_circumsphere.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/{compute_circumsphere.js → tetrahedron_compute_circumsphere.js} +2 -4
- package/src/core/geom/3d/tetrahedra/tetrahedron_compute_signed_volume.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/tetrahedron_compute_signed_volume.js +3 -1
- package/src/core/geom/Vector3.d.ts.map +1 -1
- package/src/core/geom/Vector3.js +1 -0
- package/src/core/geom/mat3/m3_multiply_vec3.d.ts +8 -0
- package/src/core/geom/mat3/m3_multiply_vec3.d.ts.map +1 -0
- package/src/core/geom/mat3/m3_multiply_vec3.js +21 -0
- package/src/core/geom/vec2/v2_cross_product.d.ts +15 -0
- package/src/core/geom/vec2/v2_cross_product.d.ts.map +1 -0
- package/src/core/geom/vec2/v2_cross_product.js +21 -0
- package/src/core/geom/vec3/v3_slerp.d.ts +1 -0
- package/src/core/geom/vec3/v3_slerp.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_slerp.js +1 -0
- package/src/core/graph/MultiNode.d.ts +1 -1
- package/src/core/graph/MultiNode.js +1 -1
- package/src/core/graph/WeightedEdge.d.ts +6 -4
- package/src/core/graph/WeightedEdge.d.ts.map +1 -1
- package/src/core/graph/WeightedEdge.js +3 -0
- package/src/core/graph/coloring/colorizeGraph.js +19 -19
- package/src/core/graph/convert_graph_to_dot_string.d.ts +1 -1
- package/src/core/graph/convert_graph_to_dot_string.d.ts.map +1 -1
- package/src/core/graph/convert_graph_to_dot_string.js +10 -6
- package/src/core/graph/graph_compute_adjacency_matrix.d.ts +9 -0
- package/src/core/graph/graph_compute_adjacency_matrix.d.ts.map +1 -0
- package/src/core/graph/{graph_adjacency_matrix.js → graph_compute_adjacency_matrix.js} +1 -2
- package/src/core/graph/graph_compute_degree_matrix.d.ts +10 -0
- package/src/core/graph/graph_compute_degree_matrix.d.ts.map +1 -0
- package/src/core/graph/graph_compute_degree_matrix.js +23 -0
- package/src/core/graph/graph_compute_distance_matrix.d.ts +13 -0
- package/src/core/graph/graph_compute_distance_matrix.d.ts.map +1 -0
- package/src/core/graph/graph_compute_distance_matrix.js +103 -0
- package/src/core/graph/{graph_laplacian_matrix.d.ts → graph_compute_laplacian_matrix.d.ts} +2 -2
- package/src/core/graph/graph_compute_laplacian_matrix.d.ts.map +1 -0
- package/src/core/graph/{graph_laplacian_matrix.js → graph_compute_laplacian_matrix.js} +6 -6
- package/src/core/graph/graph_k_means_cluster.d.ts.map +1 -1
- package/src/core/graph/graph_k_means_cluster.js +4 -119
- package/src/core/graph/{coarsen_graph.d.ts → mn_graph_coarsen.d.ts} +2 -2
- package/src/core/graph/mn_graph_coarsen.d.ts.map +1 -0
- package/src/core/graph/{coarsen_graph.js → mn_graph_coarsen.js} +1 -1
- package/src/core/graph/mn_graph_coarsen.spec.d.ts +2 -0
- package/src/core/graph/mn_graph_coarsen.spec.d.ts.map +1 -0
- package/src/core/graph/{coarsen_graph.spec.js → mn_graph_coarsen.spec.js} +4 -4
- package/src/core/graph/mn_graph_collapse_weighted_edge.d.ts +1 -0
- package/src/core/graph/mn_graph_collapse_weighted_edge.d.ts.map +1 -1
- package/src/core/graph/mn_graph_collapse_weighted_edge.js +7 -1
- package/src/core/math/physics/brdf/brdf_burley.d.ts.map +1 -1
- package/src/core/math/physics/brdf/brdf_burley.js +9 -1
- package/src/core/math/physics/brdf/{D_GGX.d.ts → diffuse_GGX.d.ts} +2 -2
- package/src/core/math/physics/brdf/diffuse_GGX.d.ts.map +1 -0
- package/src/core/math/physics/brdf/{D_GGX.js → diffuse_GGX.js} +1 -1
- package/src/core/math/physics/brdf/fresnel_Schlick.d.ts +3 -0
- package/src/core/math/physics/brdf/fresnel_Schlick.d.ts.map +1 -0
- package/src/core/math/physics/brdf/fresnel_Schlick.js +3 -0
- package/src/core/math/physics/brdf/fresnel_Schlick_optimized.d.ts +9 -0
- package/src/core/math/physics/brdf/fresnel_Schlick_optimized.d.ts.map +1 -0
- package/src/core/math/physics/brdf/fresnel_Schlick_optimized.js +12 -0
- package/src/core/math/physics/brdf/fresnel_Schlick_original.d.ts +9 -0
- package/src/core/math/physics/brdf/fresnel_Schlick_original.d.ts.map +1 -0
- package/src/core/math/physics/brdf/fresnel_Schlick_original.js +10 -0
- package/src/core/math/physics/bsdf/bsdf_schlick.d.ts.map +1 -1
- package/src/core/math/physics/bsdf/bsdf_schlick.js +3 -11
- package/src/core/math/physics/ior_to_reflectivity.d.ts +7 -0
- package/src/core/math/physics/ior_to_reflectivity.d.ts.map +1 -0
- package/src/core/math/physics/ior_to_reflectivity.js +9 -0
- package/src/core/math/physics/pdf/README.md +1 -0
- package/src/core/math/physics/pdf/pdf_GGX.d.ts +16 -0
- package/src/core/math/physics/pdf/pdf_GGX.d.ts.map +1 -0
- package/src/core/math/physics/pdf/pdf_GGX.js +25 -0
- package/src/core/math/physics/reflectivity_to_ior.d.ts +7 -0
- package/src/core/math/physics/reflectivity_to_ior.d.ts.map +1 -0
- package/src/core/math/physics/reflectivity_to_ior.js +8 -0
- package/src/engine/EngineHarness.d.ts +10 -1
- package/src/engine/EngineHarness.d.ts.map +1 -1
- package/src/engine/EngineHarness.js +16 -11
- package/src/engine/asset/loaders/image/png/PNGReader.d.ts +25 -11
- package/src/engine/asset/loaders/image/png/PNGReader.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/png/PNGReader.js +38 -24
- package/src/engine/asset/loaders/material/TextureAttachmensByMaterialType.js +2 -0
- package/src/engine/graphics/GraphicsEngine.js +1 -1
- package/src/engine/graphics/ecs/light/LightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/light/LightSystem.js +2 -3
- package/src/engine/graphics/ecs/light/binding/three/ThreeLightBinding.d.ts +6 -0
- package/src/engine/graphics/ecs/light/binding/three/ThreeLightBinding.d.ts.map +1 -1
- package/src/engine/graphics/ecs/light/binding/three/ThreeLightBinding.js +22 -11
- package/src/engine/graphics/render/forward_plus/model/DirectionalLight.d.ts.map +1 -1
- package/src/engine/graphics/render/forward_plus/model/DirectionalLight.js +25 -25
- package/src/engine/graphics/sh3/fromCubeRenderTarget.d.ts +9 -0
- package/src/engine/graphics/sh3/fromCubeRenderTarget.d.ts.map +1 -0
- package/src/engine/graphics/sh3/fromCubeRenderTarget.js +145 -0
- package/src/engine/graphics/sh3/gi/tetrahedral_mesh_to_texture.d.ts +8 -0
- package/src/engine/graphics/sh3/gi/tetrahedral_mesh_to_texture.d.ts.map +1 -0
- package/src/engine/graphics/sh3/gi/tetrahedral_mesh_to_texture.js +51 -0
- package/src/engine/graphics/sh3/{LightProbeVolume.d.ts → lpv/LightProbeVolume.d.ts} +18 -7
- package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/LightProbeVolume.js +340 -0
- package/src/engine/graphics/sh3/lpv/LightProbeVolumeSerializationAdapter.d.ts +18 -0
- package/src/engine/graphics/sh3/lpv/LightProbeVolumeSerializationAdapter.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/LightProbeVolumeSerializationAdapter.js +44 -0
- package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts +12 -0
- package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js +123 -0
- package/src/engine/graphics/sh3/lpv/ProbeRenderer.d.ts +29 -0
- package/src/engine/graphics/sh3/lpv/ProbeRenderer.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/ProbeRenderer.js +35 -0
- package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.d.ts +27 -0
- package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.js +158 -0
- package/src/engine/graphics/sh3/lpv/build_probes_for_scene.d.ts +11 -0
- package/src/engine/graphics/sh3/lpv/build_probes_for_scene.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/build_probes_for_scene.js +127 -0
- package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts +12 -0
- package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.js +89 -0
- package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts +90 -0
- package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/PathTracedScene.js +352 -0
- package/src/engine/graphics/sh3/path_tracer/PathTracer.d.ts +5 -91
- package/src/engine/graphics/sh3/path_tracer/PathTracer.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/PathTracer.js +41 -477
- package/src/engine/graphics/sh3/path_tracer/make_one_vector3.d.ts +1 -0
- package/src/engine/graphics/sh3/path_tracer/make_one_vector3.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/make_one_vector3.js +6 -3
- package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +26 -58
- package/src/engine/graphics/sh3/path_tracer/random_in_hemisphere.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/random_in_hemisphere.js +7 -1
- package/src/engine/graphics/sh3/path_tracer/sample_triangle_attribute.d.ts +2 -2
- package/src/engine/graphics/sh3/path_tracer/sample_triangle_attribute.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/sample_triangle_attribute.js +1 -1
- package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.d.ts +3 -0
- package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.js +3 -0
- package/src/engine/graphics/sh3/path_tracer/texture/apply_texture_clamping_to_coordinate.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/{apply_texture_clamping_to_coordinate.js → texture/apply_texture_clamping_to_coordinate.js} +2 -2
- package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts +11 -0
- package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +86 -0
- package/src/engine/graphics/sh3/path_tracer/texture/sample_texture.d.ts +10 -0
- package/src/engine/graphics/sh3/path_tracer/texture/sample_texture.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/texture/sample_texture.js +56 -0
- package/src/engine/graphics/sh3/prototypeSH3Probe.js +87 -195
- package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts +5 -5
- package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts.map +1 -1
- package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js +8 -8
- package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.d.ts +13 -0
- package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.d.ts.map +1 -0
- package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.js +54 -0
- package/src/engine/graphics/texture/AttributeDataTexture.d.ts +2 -2
- package/src/engine/graphics/texture/AttributeDataTexture.d.ts.map +1 -1
- package/src/engine/graphics/texture/AttributeDataTexture.js +11 -11
- package/src/engine/input/ecs/systems/InputControllerSystem.js +1 -1
- package/src/view/elements/ColorPickerView.d.ts.map +1 -1
- package/src/view/elements/ColorPickerView.js +7 -7
- package/src/core/geom/3d/tetrahedra/compute_circumsphere.d.ts.map +0 -1
- package/src/core/graph/coarsen_graph.d.ts.map +0 -1
- package/src/core/graph/coarsen_graph.spec.d.ts +0 -2
- package/src/core/graph/coarsen_graph.spec.d.ts.map +0 -1
- package/src/core/graph/graph_adjacency_matrix.d.ts +0 -9
- package/src/core/graph/graph_adjacency_matrix.d.ts.map +0 -1
- package/src/core/graph/graph_degree_matrix.d.ts +0 -9
- package/src/core/graph/graph_degree_matrix.d.ts.map +0 -1
- package/src/core/graph/graph_degree_matrix.js +0 -18
- package/src/core/graph/graph_laplacian_matrix.d.ts.map +0 -1
- package/src/core/math/physics/brdf/D_GGX.d.ts.map +0 -1
- package/src/engine/graphics/sh3/LightProbeVolume.d.ts.map +0 -1
- package/src/engine/graphics/sh3/LightProbeVolume.js +0 -609
- package/src/engine/graphics/sh3/path_tracer/apply_texture_clamping_to_coordinate.d.ts.map +0 -1
- package/src/engine/graphics/sh3/visualise_probe.d.ts +0 -12
- package/src/engine/graphics/sh3/visualise_probe.d.ts.map +0 -1
- package/src/engine/graphics/sh3/visualise_probe.js +0 -40
- /package/src/engine/graphics/sh3/path_tracer/{apply_texture_clamping_to_coordinate.d.ts → texture/apply_texture_clamping_to_coordinate.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vector3.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector3.js"],"names":[],"mappings":";AAmBA;
|
|
1
|
+
{"version":3,"file":"Vector3.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector3.js"],"names":[],"mappings":"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"}
|
package/src/core/geom/Vector3.js
CHANGED
|
@@ -598,6 +598,7 @@ class Vector3 {
|
|
|
598
598
|
const y = this.y;
|
|
599
599
|
const z = this.z;
|
|
600
600
|
|
|
601
|
+
// This is just 3x3 matrix multiplication
|
|
601
602
|
const _x = m4[0] * x + m4[4] * y + m4[8] * z;
|
|
602
603
|
const _y = m4[1] * x + m4[5] * y + m4[9] * z;
|
|
603
604
|
const _z = m4[2] * x + m4[6] * y + m4[10] * z;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"m3_multiply_vec3.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/mat3/m3_multiply_vec3.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oEAcC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {mat3} out
|
|
4
|
+
* @param {mat3} a
|
|
5
|
+
* @param {vec3} v
|
|
6
|
+
*/
|
|
7
|
+
export function m3_multiply_vec3(out, a, v) {
|
|
8
|
+
const x = v[0];
|
|
9
|
+
const y = v[1];
|
|
10
|
+
const z = v[2];
|
|
11
|
+
|
|
12
|
+
out[0] = x * a[0];
|
|
13
|
+
out[1] = x * a[1];
|
|
14
|
+
out[2] = x * a[2];
|
|
15
|
+
out[3] = y * a[3];
|
|
16
|
+
out[4] = y * a[4];
|
|
17
|
+
out[5] = y * a[5];
|
|
18
|
+
out[6] = z * a[6];
|
|
19
|
+
out[7] = z * a[7];
|
|
20
|
+
out[8] = z * a[8];
|
|
21
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Not really a cross-product, since that doesn't exist in 2d.
|
|
3
|
+
* We imagine Z to be 0, and essentially do a 3d vector cross product
|
|
4
|
+
* Also known as "perpendicular dot product"
|
|
5
|
+
* Also known as "exterior product"
|
|
6
|
+
* Also known as "determinant"
|
|
7
|
+
* Also known as "wedge product"
|
|
8
|
+
* @param {number} x0
|
|
9
|
+
* @param {number} y0
|
|
10
|
+
* @param {number} x1
|
|
11
|
+
* @param {number} y1
|
|
12
|
+
* @return {number}
|
|
13
|
+
*/
|
|
14
|
+
export function v2_cross_product(x0: number, y0: number, x1: number, y1: number): number;
|
|
15
|
+
//# sourceMappingURL=v2_cross_product.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2_cross_product.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec2/v2_cross_product.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,qCANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACL,MAAM,CASjB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Not really a cross-product, since that doesn't exist in 2d.
|
|
3
|
+
* We imagine Z to be 0, and essentially do a 3d vector cross product
|
|
4
|
+
* Also known as "perpendicular dot product"
|
|
5
|
+
* Also known as "exterior product"
|
|
6
|
+
* Also known as "determinant"
|
|
7
|
+
* Also known as "wedge product"
|
|
8
|
+
* @param {number} x0
|
|
9
|
+
* @param {number} y0
|
|
10
|
+
* @param {number} x1
|
|
11
|
+
* @param {number} y1
|
|
12
|
+
* @return {number}
|
|
13
|
+
*/
|
|
14
|
+
export function v2_cross_product(
|
|
15
|
+
x0, y0,
|
|
16
|
+
x1, y1
|
|
17
|
+
) {
|
|
18
|
+
|
|
19
|
+
return x0 * y1 - y0 * x1;
|
|
20
|
+
|
|
21
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v3_slerp.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec3/v3_slerp.js"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"v3_slerp.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec3/v3_slerp.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,+CARW,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,YACN,MAAM,QAkChB"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @template T
|
|
3
|
+
*/
|
|
4
|
+
export class WeightedEdge<T> extends Edge<any> {
|
|
2
5
|
/**
|
|
3
6
|
*
|
|
4
7
|
* @param {WeightedEdge} e
|
|
5
8
|
* @returns {number}
|
|
6
9
|
*/
|
|
7
|
-
static extractWeight(e: WeightedEdge): number;
|
|
10
|
+
static extractWeight(e: WeightedEdge<any>): number;
|
|
8
11
|
/**
|
|
9
12
|
*
|
|
10
13
|
* @param {WeightedEdge} e
|
|
11
14
|
* @returns {number}
|
|
12
15
|
*/
|
|
13
|
-
static extractNegativeWeight(e: WeightedEdge): number;
|
|
14
|
-
constructor(a: N, b: N);
|
|
16
|
+
static extractNegativeWeight(e: WeightedEdge<any>): number;
|
|
15
17
|
/**
|
|
16
18
|
*
|
|
17
19
|
* @type {number}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WeightedEdge.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/WeightedEdge.js"],"names":[],"mappings":"AAEA;IAOI;;;;OAIG;IACH,
|
|
1
|
+
{"version":3,"file":"WeightedEdge.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/WeightedEdge.js"],"names":[],"mappings":"AAEA;;GAEG;AACH;IAOI;;;;OAIG;IACH,4CAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,oDAFa,MAAM,CAIlB;IAtBD;;;OAGG;IACH,QAFU,MAAM,CAEL;CAmBd;qBA7BoB,WAAW"}
|
|
@@ -97,7 +97,7 @@ function updateNN(NN, a, vertexCount, colors, colorNumber) {
|
|
|
97
97
|
|
|
98
98
|
const columnAddress = i * vertexCount;
|
|
99
99
|
|
|
100
|
-
for (
|
|
100
|
+
for (let j = 0; j < NN.length; j++) {
|
|
101
101
|
|
|
102
102
|
|
|
103
103
|
while (a[columnAddress + NN[j]] === 1) {
|
|
@@ -121,25 +121,25 @@ function updateNN(NN, a, vertexCount, colors, colorNumber) {
|
|
|
121
121
|
* @return {number[]}
|
|
122
122
|
*/
|
|
123
123
|
function findSuitableY(vertexCount, a, NN, color, colorNumber) {
|
|
124
|
-
|
|
124
|
+
let temp, tmp_y, y = 0;
|
|
125
125
|
|
|
126
|
-
|
|
126
|
+
const scanned = [];
|
|
127
127
|
|
|
128
128
|
let VerticesInCommon = 0;
|
|
129
129
|
|
|
130
|
-
for (
|
|
130
|
+
for (let i = 0; i < NN.length; i++) {
|
|
131
131
|
tmp_y = NN[i];
|
|
132
132
|
temp = 0;
|
|
133
133
|
|
|
134
|
-
for (
|
|
134
|
+
for (let f = 0; f < vertexCount; f++) {
|
|
135
135
|
scanned[f] = 0;
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
-
for (
|
|
138
|
+
for (let x = 0; x < vertexCount; x++) {
|
|
139
139
|
|
|
140
140
|
if (color[x] === colorNumber) {
|
|
141
141
|
|
|
142
|
-
for (
|
|
142
|
+
for (let k = 0; k < vertexCount; k++) {
|
|
143
143
|
|
|
144
144
|
if (color[k] === 0 && scanned[k] === 0) {
|
|
145
145
|
|
|
@@ -174,12 +174,12 @@ function findSuitableY(vertexCount, a, NN, color, colorNumber) {
|
|
|
174
174
|
*/
|
|
175
175
|
function computeMaxDegreeInNN(NN, colors, degree) {
|
|
176
176
|
|
|
177
|
-
|
|
178
|
-
|
|
177
|
+
let max = -1;
|
|
178
|
+
let max_i, i;
|
|
179
179
|
|
|
180
180
|
const l = NN.length;
|
|
181
181
|
|
|
182
|
-
for (
|
|
182
|
+
for (let k = 0; k < l; k++) {
|
|
183
183
|
i = NN[k];
|
|
184
184
|
|
|
185
185
|
if ((colors[i] === 0) && (degree[i] > max)) {
|
|
@@ -201,15 +201,15 @@ function computeMaxDegreeInNN(NN, colors, degree) {
|
|
|
201
201
|
function colorizing(a, vertexCount) {
|
|
202
202
|
const NN = [];
|
|
203
203
|
|
|
204
|
-
|
|
205
|
-
|
|
204
|
+
const colors = [];
|
|
205
|
+
const degrees = [];
|
|
206
206
|
|
|
207
|
-
for (
|
|
207
|
+
for (let i = 0; i < vertexCount; i++) {
|
|
208
208
|
|
|
209
209
|
colors[i] = 0;
|
|
210
210
|
degrees[i] = 0;
|
|
211
211
|
|
|
212
|
-
for (
|
|
212
|
+
for (let j = 0; j < vertexCount; j++) {
|
|
213
213
|
const address = i * vertexCount + j;
|
|
214
214
|
|
|
215
215
|
if (a[address] === 1) {
|
|
@@ -220,11 +220,11 @@ function colorizing(a, vertexCount) {
|
|
|
220
220
|
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
223
|
+
let x, y;
|
|
224
|
+
let result;
|
|
225
|
+
let colorNumber = 0;
|
|
226
|
+
let VerticesInCommon = 0;
|
|
227
|
+
let unprocessed = vertexCount;
|
|
228
228
|
|
|
229
229
|
while (unprocessed > 0) {
|
|
230
230
|
x = computeMaxDegreeVertex(vertexCount, colors, degrees);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert_graph_to_dot_string.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/convert_graph_to_dot_string.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"convert_graph_to_dot_string.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/convert_graph_to_dot_string.js"],"names":[],"mappings":"AAYA;;;;;;GAMG;AACH,0FAFa,MAAM,CAgElB"}
|
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
import LineBuilder from "../codegen/LineBuilder.js";
|
|
2
2
|
import { EdgeDirectionType } from "./Edge.js";
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* @template T
|
|
6
|
+
* @param {T} node
|
|
7
|
+
* @return {string}
|
|
8
|
+
*/
|
|
9
|
+
function defaultNodeToDot(node) {
|
|
6
10
|
return `[label="${node.toString()}"]`;
|
|
7
11
|
}
|
|
8
12
|
|
|
9
13
|
/**
|
|
10
|
-
* @template Node
|
|
11
14
|
* Build a Graphviz DOT representation of the graph
|
|
15
|
+
* @template Node
|
|
12
16
|
* @param {Graph<Node>} graph
|
|
13
17
|
* @param {function(Node):string} nodeToDot
|
|
14
18
|
* @returns {string}
|
|
15
19
|
*/
|
|
16
20
|
export function convert_graph_to_dot_string({
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}) {
|
|
21
|
+
graph,
|
|
22
|
+
nodeToDot = defaultNodeToDot
|
|
23
|
+
}) {
|
|
20
24
|
const lb = new LineBuilder();
|
|
21
25
|
|
|
22
26
|
lb.add('strict digraph Graph {');
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NOTE: does not clear matrix before writing adjacency
|
|
3
|
+
* @template T
|
|
4
|
+
* @param {Graph<T>} graph
|
|
5
|
+
* @param {SquareMatrix} result
|
|
6
|
+
* @param {Map<T,number>} node_indices
|
|
7
|
+
*/
|
|
8
|
+
export function graph_compute_adjacency_matrix<T>(graph: Graph<T>, result: SquareMatrix, node_indices: Map<T, number>): void;
|
|
9
|
+
//# sourceMappingURL=graph_compute_adjacency_matrix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph_compute_adjacency_matrix.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/graph_compute_adjacency_matrix.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,6HAUC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//
|
|
2
1
|
|
|
3
2
|
|
|
4
3
|
/**
|
|
@@ -8,7 +7,7 @@
|
|
|
8
7
|
* @param {SquareMatrix} result
|
|
9
8
|
* @param {Map<T,number>} node_indices
|
|
10
9
|
*/
|
|
11
|
-
export function
|
|
10
|
+
export function graph_compute_adjacency_matrix(graph, result, node_indices) {
|
|
12
11
|
const edges = graph.getEdges();
|
|
13
12
|
|
|
14
13
|
for (const edge of edges) {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds a matrix with node cardinality for each Node, that is, number of edges attached to each Node
|
|
3
|
+
* NOTE: does not clear matrix before writing
|
|
4
|
+
* @template T
|
|
5
|
+
* @param {Graph<T>} graph
|
|
6
|
+
* @param {SquareMatrix} result Where to store the result
|
|
7
|
+
* @param {Map<T,number>} node_indices de-referencing dictionary from Node to unsigned integer index
|
|
8
|
+
*/
|
|
9
|
+
export function graph_compute_degree_matrix<T>(graph: Graph<T>, result: SquareMatrix, node_indices: Map<T, number>): void;
|
|
10
|
+
//# sourceMappingURL=graph_compute_degree_matrix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph_compute_degree_matrix.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/graph_compute_degree_matrix.js"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,0HAYC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { assert } from "../assert.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Builds a matrix with node cardinality for each Node, that is, number of edges attached to each Node
|
|
5
|
+
* NOTE: does not clear matrix before writing
|
|
6
|
+
* @template T
|
|
7
|
+
* @param {Graph<T>} graph
|
|
8
|
+
* @param {SquareMatrix} result Where to store the result
|
|
9
|
+
* @param {Map<T,number>} node_indices de-referencing dictionary from Node to unsigned integer index
|
|
10
|
+
*/
|
|
11
|
+
export function graph_compute_degree_matrix(graph, result, node_indices) {
|
|
12
|
+
const nodes = graph.getNodes();
|
|
13
|
+
|
|
14
|
+
for (const node of nodes) {
|
|
15
|
+
const node_index = node_indices.get(node);
|
|
16
|
+
|
|
17
|
+
assert.isNonNegativeInteger(node_index, 'index');
|
|
18
|
+
|
|
19
|
+
const degree = graph.getNodeDegree(node);
|
|
20
|
+
|
|
21
|
+
result.setCellValue(node_index, node_index, degree);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Produce a distance matrix from an input graph, tracing distances from each node to every node specified in target vector
|
|
3
|
+
* @see "A Fast Algorithm to Find All-Pairs Shortest Paths in Complex Networks" by Wei Peng et Al. 2012
|
|
4
|
+
* @template T
|
|
5
|
+
* @param {Graph<T>} graph
|
|
6
|
+
* @param {T[]} node_array graph nodes as an array
|
|
7
|
+
* @param {number[]} targets node indices, distances to which need to be calculated
|
|
8
|
+
* @param {Map<T, number>} node_index_map
|
|
9
|
+
* @returns {SquareMatrix}
|
|
10
|
+
*/
|
|
11
|
+
export function graph_compute_distance_matrix<T>(graph: Graph<T>, node_array: T[], targets: number[], node_index_map: Map<T, number>): SquareMatrix;
|
|
12
|
+
import { SquareMatrix } from "./SquareMatrix.js";
|
|
13
|
+
//# sourceMappingURL=graph_compute_distance_matrix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph_compute_distance_matrix.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/graph_compute_distance_matrix.js"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,4FAJW,MAAM,EAAE,mCAEN,YAAY,CAyFxB;6BAnG4B,mBAAmB"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { BitSet } from "../binary/BitSet.js";
|
|
2
|
+
import { BinaryDataType } from "../binary/type/BinaryDataType.js";
|
|
3
|
+
import FastBinaryHeap from "../collection/heap/FastBinaryHeap.js";
|
|
4
|
+
import { SquareMatrix } from "./SquareMatrix.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Produce a distance matrix from an input graph, tracing distances from each node to every node specified in target vector
|
|
8
|
+
* @see "A Fast Algorithm to Find All-Pairs Shortest Paths in Complex Networks" by Wei Peng et Al. 2012
|
|
9
|
+
* @template T
|
|
10
|
+
* @param {Graph<T>} graph
|
|
11
|
+
* @param {T[]} node_array graph nodes as an array
|
|
12
|
+
* @param {number[]} targets node indices, distances to which need to be calculated
|
|
13
|
+
* @param {Map<T, number>} node_index_map
|
|
14
|
+
* @returns {SquareMatrix}
|
|
15
|
+
*/
|
|
16
|
+
export function graph_compute_distance_matrix(graph, node_array, targets, node_index_map) {
|
|
17
|
+
const node_count = node_array.length;
|
|
18
|
+
|
|
19
|
+
const m_distances = new SquareMatrix(node_count, BinaryDataType.Float32);
|
|
20
|
+
|
|
21
|
+
const flags = BitSet.fixedSize(node_count);
|
|
22
|
+
|
|
23
|
+
// initialize distances
|
|
24
|
+
m_distances.fill(Number.POSITIVE_INFINITY);
|
|
25
|
+
|
|
26
|
+
let source_node;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
*
|
|
30
|
+
* @param {number} other_node
|
|
31
|
+
* @returns {number}
|
|
32
|
+
*/
|
|
33
|
+
function score(other_node) {
|
|
34
|
+
return m_distances.getCellValue(source_node, other_node);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
for (let i = 0; i < targets.length; i++) {
|
|
38
|
+
source_node = targets[i];
|
|
39
|
+
|
|
40
|
+
// distance to self is always 0
|
|
41
|
+
m_distances.setCellValue(source_node, source_node, 0);
|
|
42
|
+
|
|
43
|
+
const heap = new FastBinaryHeap(score);
|
|
44
|
+
heap.push(source_node);
|
|
45
|
+
|
|
46
|
+
while (!heap.isEmpty()) {
|
|
47
|
+
const t = heap.pop();
|
|
48
|
+
|
|
49
|
+
const distance_to_this_node = m_distances.getCellValue(source_node, t);
|
|
50
|
+
if (flags.get(t)) {
|
|
51
|
+
// already visited
|
|
52
|
+
for (let v = 0; v < node_count; v++) {
|
|
53
|
+
const shortcut_distance = distance_to_this_node + m_distances.getCellValue(t, v);
|
|
54
|
+
|
|
55
|
+
if (shortcut_distance < m_distances.getCellValue(source_node, v)) {
|
|
56
|
+
m_distances.setCellValue(source_node, v, shortcut_distance)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
}
|
|
60
|
+
} else {
|
|
61
|
+
// not visited yet
|
|
62
|
+
const t_node = node_array[t];
|
|
63
|
+
|
|
64
|
+
const t_node_container = graph.getNodeContainer(t_node);
|
|
65
|
+
|
|
66
|
+
const node_edges = t_node_container.getEdges();
|
|
67
|
+
const node_edge_count = node_edges.length;
|
|
68
|
+
|
|
69
|
+
for (let i1 = 0; i1 < node_edge_count; i1++) {
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
*
|
|
73
|
+
* @type {WeightedEdge<N>}
|
|
74
|
+
*/
|
|
75
|
+
const node_edge = node_edges[i1];
|
|
76
|
+
|
|
77
|
+
const neighbour_node = node_edge.other(t_node);
|
|
78
|
+
|
|
79
|
+
const neighbour_node_index = node_index_map.get(neighbour_node);
|
|
80
|
+
|
|
81
|
+
if (neighbour_node_index === -1) {
|
|
82
|
+
// not in the input set
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const transition_cost = node_edge.weight + 1e-5;
|
|
87
|
+
|
|
88
|
+
const distance_to_neighbour = distance_to_this_node + transition_cost;
|
|
89
|
+
|
|
90
|
+
if (distance_to_neighbour < m_distances.getCellValue(source_node, neighbour_node_index)) {
|
|
91
|
+
m_distances.setCellValue(source_node, neighbour_node_index, distance_to_neighbour);
|
|
92
|
+
|
|
93
|
+
heap.push(neighbour_node_index);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
flags.set(source_node, true);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return m_distances;
|
|
103
|
+
}
|
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
* @param {SquareMatrix} result
|
|
7
7
|
* @param {Map<T,number>} node_indices
|
|
8
8
|
*/
|
|
9
|
-
export function
|
|
9
|
+
export function graph_compute_laplacian_matrix<T>(graph: Graph<T>, result: SquareMatrix, node_indices: Map<T, number>): void;
|
|
10
10
|
import { SquareMatrix } from "./SquareMatrix.js";
|
|
11
|
-
//# sourceMappingURL=
|
|
11
|
+
//# sourceMappingURL=graph_compute_laplacian_matrix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph_compute_laplacian_matrix.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/graph_compute_laplacian_matrix.js"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,2EAHW,YAAY,sCAWtB;6BAlB4B,mBAAmB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { graph_degree_matrix } from "./graph_degree_matrix.js";
|
|
2
|
-
import { SquareMatrix } from "./SquareMatrix.js";
|
|
3
1
|
import { BinaryDataType } from "../binary/type/BinaryDataType.js";
|
|
4
|
-
import {
|
|
2
|
+
import { graph_compute_adjacency_matrix } from "./graph_compute_adjacency_matrix.js";
|
|
3
|
+
import { graph_compute_degree_matrix } from "./graph_compute_degree_matrix.js";
|
|
4
|
+
import { SquareMatrix } from "./SquareMatrix.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Laplacian matrix (graph Laplacian)
|
|
@@ -11,12 +11,12 @@ import { graph_adjacency_matrix } from "./graph_adjacency_matrix.js";
|
|
|
11
11
|
* @param {SquareMatrix} result
|
|
12
12
|
* @param {Map<T,number>} node_indices
|
|
13
13
|
*/
|
|
14
|
-
export function
|
|
14
|
+
export function graph_compute_laplacian_matrix(graph, result, node_indices) {
|
|
15
15
|
const degree = new SquareMatrix(result.size, BinaryDataType.Uint8);
|
|
16
16
|
const adjacency = new SquareMatrix(result.size, BinaryDataType.Uint8);
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
graph_compute_degree_matrix(graph, degree, node_indices);
|
|
19
|
+
graph_compute_adjacency_matrix(graph, adjacency, node_indices);
|
|
20
20
|
|
|
21
21
|
result.subtractMatrices(degree, adjacency);
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_k_means_cluster.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/graph_k_means_cluster.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph_k_means_cluster.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/graph_k_means_cluster.js"],"names":[],"mappings":"AAMA;;;;;;;;GAQG;AACH,2DARW,cAAc,KACd,MAAM,eACN,MAAM,4BACN,MAAM,EAAE,GAAC,UAAU,GAAC,WAAW,GAAC,WAAW,kBAC3C,OAAO,MAAM,CAAC,+BAEZ,MAAM,EAAE,EAAE,CA2EtB;AAED;;;;;;;GAOG;AACH,6DAJW,MAAM,eACN,MAAM,GACJ,MAAM,EAAE,EAAE,CA0BtB"}
|