@kite3d/engine 0.17.0 → 0.18.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/dist/index.js CHANGED
@@ -1,161 +1,161 @@
1
- import * as ve from "threepipe";
2
- import { EntityComponentPlugin as L, Object3DComponent as oa, Vector3 as F, literalStrings as Ca, Quaternion as C, BufferAttribute as ie, BufferGeometry as ia, Box3 as se, ConvexHull as xe, Mesh as xa, MathUtils as Pe, SphereGeometry as Ia, BoxGeometry as Fa, PlaneGeometry as Va, LineMaterial2 as Ae, Wireframe as Y, WireframeGeometry3 as X, CylinderGeometry as De, Float32BufferAttribute as Da, Object3DWidgetsPlugin as ce, AHelperWidget as Me, Group as Ie, MeshStandardMaterial as Fe, Object3D as Ee, uiFolderContainer as Sa, generateUUID as Ne, AViewerPluginSync as Ce, Matrix4 as Ya, FrameFadePlugin as Se, uiInput as Be, uiMonitor as Le, uiNumber as ne, ThreeSerialization as Ba, TypeSystem as ze, serialize as oe, uiToggle as de, uiConfig as re, copyObject3DUserData as Re, getPartialProps as Ue, setPartialProps as Ge, ThreeViewer as _e, GBufferPlugin as Te, PopmotionPlugin as Oe, GLTFAnimationPlugin as Qe, GLTFMeshOptDecodePlugin as We, KTX2LoadPlugin as qe, KTXLoadPlugin as Ke, PLYLoadPlugin as He, Rhino3dmLoadPlugin as Je, STLLoadPlugin as Ve, USDZLoadPlugin as Ye } from "threepipe";
1
+ import * as De from "threepipe";
2
+ import { EntityComponentPlugin as L, Object3DComponent as ra, Vector3 as F, literalStrings as Ba, Quaternion as C, BufferAttribute as ce, BufferGeometry as sa, Box3 as oe, ConvexHull as Me, Mesh as Pa, MathUtils as Ie, SphereGeometry as Fa, BoxGeometry as Ea, PlaneGeometry as Za, LineMaterial2 as Fe, Wireframe as X, WireframeGeometry3 as Z, CylinderGeometry as Ee, Float32BufferAttribute as Ma, Object3DWidgetsPlugin as re, AHelperWidget as Ne, Group as Ce, MeshStandardMaterial as Se, Object3D as Be, uiFolderContainer as La, generateUUID as Le, AViewerPluginSync as ze, Matrix4 as $a, FrameFadePlugin as Re, uiInput as Ue, uiMonitor as Ge, uiNumber as de, ThreeSerialization as za, TypeSystem as Oe, serialize as he, uiToggle as fe, uiConfig as le, copyObject3DUserData as Te, getPartialProps as _e, setPartialProps as Qe, ThreeViewer as We, GBufferPlugin as qe, PopmotionPlugin as Ke, GLTFAnimationPlugin as He, GLTFMeshOptDecodePlugin as Je, KTX2LoadPlugin as Ve, KTXLoadPlugin as Ye, PLYLoadPlugin as Xe, Rhino3dmLoadPlugin as Ze, STLLoadPlugin as $e, USDZLoadPlugin as at } from "threepipe";
3
3
  export * from "threepipe";
4
- import { getAuthoringMetadata as ma, setAuthoringMetadata as he } from "./authoring.js";
5
- import { KITE3D_AUTHORING_METADATA_KEY as ub, KITE3D_RUNTIME_METADATA_KEY as jb, RuntimeObjectOwner as yb, getRuntimeObjectMetadata as kb, getTrackedRuntimeObjects as wb, isRuntimeObject as vb } from "./authoring.js";
6
- import { Vec3 as y, Quaternion as da, Box as K, Cylinder as Xe, Sphere as le, ConvexPolyhedron as Ze, Trimesh as $e, Body as N, Shape as q, ConeTwistConstraint as Q, Material as La, World as fe, ContactMaterial as pe } from "cannon-es";
7
- import { installGameHooks as at, runtimeCleanupReport as et } from "./authoringValidation.js";
8
- import { authoringQualityReport as Pb, persistenceReport as Ab, publishGameTelemetry as Db, registerGameValidation as Mb, semanticSceneSnapshot as Ib } from "./authoringValidation.js";
9
- import { parsePackageJSON as tt, parsePackageJsonSettingsConfig as bt, parseAssetsJSONManifest as it, createProjectAssetURLModifier as st, isDependencyModuleSpecifier as ge } from "./projectFormat.js";
10
- import { assetUrlPrefix as Eb, readProjectGeneratorStates as Nb, settingsKey as Cb, updateProjectGeneratorState as Sb, validateSceneSource as Bb } from "./projectFormat.js";
11
- import { RUNTIME_VERSION as zb } from "./version.js";
12
- import { PROJECT_MIGRATIONS as Ub } from "./migrations.js";
13
- import { serializeSceneGltf as _b, serializeSceneGltfDocument as Tb } from "./sceneSerialization.js";
4
+ import { getAuthoringMetadata as ua, setAuthoringMetadata as pe } from "./authoring.js";
5
+ import { KITE3D_AUTHORING_METADATA_KEY as Ib, KITE3D_RUNTIME_METADATA_KEY as Fb, RuntimeObjectOwner as Eb, getRuntimeObjectMetadata as Nb, getTrackedRuntimeObjects as Cb, isRuntimeObject as Sb } from "./authoring.js";
6
+ import { Vec3 as y, Quaternion as da, Box as H, Cylinder as et, Sphere as ge, ConvexPolyhedron as tt, Trimesh as bt, Body as N, Shape as q, ConeTwistConstraint as Q, Material as Ra, World as me, ContactMaterial as ue } from "cannon-es";
7
+ import { installGameHooks as it, runtimeCleanupReport as st } from "./authoringValidation.js";
8
+ import { authoringQualityReport as Lb, persistenceReport as zb, publishGameTelemetry as Rb, registerGameValidation as Ub, semanticSceneSnapshot as Gb } from "./authoringValidation.js";
9
+ import { parsePackageJSON as nt, parsePackageJsonSettingsConfig as ct, parseAssetsJSONManifest as ot, createProjectAssetURLModifier as rt, isDependencyModuleSpecifier as je } from "./projectFormat.js";
10
+ import { assetUrlPrefix as Tb, readProjectGeneratorStates as _b, settingsKey as Qb, updateProjectGeneratorState as Wb, validateSceneSource as qb } from "./projectFormat.js";
11
+ import { RUNTIME_VERSION as Hb } from "./version.js";
12
+ import { PROJECT_MIGRATIONS as Vb } from "./migrations.js";
13
+ import { serializeSceneGltf as Xb, serializeSceneGltfDocument as Zb } from "./sceneSerialization.js";
14
14
  export * from "uiconfig.js";
15
15
  export * from "ts-browser-helpers";
16
- import { RUNTIME_SPECIFIERS as qb, dependencyImportMap as Kb, projectDependencies as Hb, projectPluginNames as Jb } from "./importMap.js";
17
- import { extensionMimeTypes as Yb, mimeToExt as Xb, mimeTypeForPath as Zb, typesExts as $b } from "./fileTypes.js";
18
- import { BACKUPS_DIRECTORY as ei, CONSOLE_PATH as ti, DEPLOYS_PATH as bi, JOURNAL_PATH as ii, KITE3D_DIRECTORY as si, KITE3D_SERVER_CLIENT_ID as ci, RUNNING_DIRECTORY as ni, STATE_PATH as oi, THUMBS_DIRECTORY as di } from "./paths.js";
16
+ import { RUNTIME_SPECIFIERS as ti, dependencyImportMap as bi, projectDependencies as ii, projectPluginNames as si } from "./importMap.js";
17
+ import { extensionMimeTypes as ci, mimeToExt as oi, mimeTypeForPath as ri, typesExts as di } from "./fileTypes.js";
18
+ import { BACKUPS_DIRECTORY as fi, CONSOLE_PATH as li, DEPLOYS_PATH as pi, JOURNAL_PATH as gi, KITE3D_DIRECTORY as mi, KITE3D_SERVER_CLIENT_ID as ui, RUNNING_DIRECTORY as ji, STATE_PATH as yi, THUMBS_DIRECTORY as ki } from "./paths.js";
19
19
  (function() {
20
- var t = "b9H79TebbbeJq9Geueu9Geub9Gbb9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiKLdilevlevlooroowwvwbDDbelve9Weiiviebeoweuec:W;kekr;RiOo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbe8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbdE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UbiY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbl8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbv8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UboE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbra9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbwL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbDK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbqL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbkE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbPa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbzK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbHl79IV9RbODwebcekdQXq:g9sLdbk;3keYu8Jjjjjbcjo9Rgv8Kjjjjbcbhodnalcefae0mbabcbRb:S:kjjbc:GeV86bbavcjdfcbcjdzNjjjb8AdnaiTmbavcjdfadalz:tjjjb8Akabaefhrabcefhwavalfcbcbcjdal9RalcFe0EzNjjjb8Aavavcjdfalz:tjjjbhDcj;abal9UhodndndndndnalTmbaoc;WFbGgecjdaecjd6Ehqcbhkdninakai9pmiaDcjlfcbcjdzNjjjb8Aaqaiak9Rakaqfai6Egxcsfgecl4cifcd4hmadakal2fhPdndndndndnaec9WGgsTmbcbhzcehHaPhOawhAxekdnaxTmbcbhAcehHaPhCinaDaAfRbbhXaDcjlfheaChoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkaraw9Ram6miawcbamzNjjjbgeTmiaCcefhCaeamfhwaAcefgAal6hHaAal9hmbxvkkaraw9Ram6mvawcbamzNjjjb8AceheinawgXamfhwalaegoSmldnaraw9Ram6mbaocefheawcbamzNjjjb8AaXmekkaoal6hHxekindnaxTmbaDazfRbbhXaDcjlfheaOhoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkkaraA9Ram6mearaAcbamzNjjjbgKamfgw9RcK6mdcbhYaDcjlfhAinaDcjlfaYfh8AcwhCczhLcehQindndnaQce9hmbcuhoa8ARbbmecbhodninaogecsSmeaecefhoaAaefcefRbbTmbkkcucbaecs6EhoxekaQcetc;:FFFeGhocuaQtcu7cFeGhXcbheinaoaXaAaefRbb9nfhoaecefgecz9hmbkkaoaLaoaL6geEhLaQaCaeEhCaQcetgQcw6mbkdndndndnaCcufPdiebkaKaYco4fgeaeRbbcdciaCclSEaYci4coGtV86bbaCcw9hmeawa8A8Pbb83bbawcwfa8Acwf8Pbb83bbawczfhwxdkaKaYco4fgeaeRbbceaYci4coGtV86bbkdncwaC9TgEmbinawcb86bbawcefhwxbkkcuaCtcu7h8Acbh3aAh5ina5heaEhQcbhoinaeRbbgLa8AcFeGgXaLaX6EaoaCtVhoaecefheaQcufgQmbkawao86bba5aEfh5awcefhwa3aEfg3cz6mbkcbheindnaAaefRbbgoaX6mbawao86bbawcefhwkaecefgecz9hmbkkdnaYczfgYas9pmbaAczfhAaraw9RcL0mekkaYas6meawTmeaOcefhOazcefgzal6hHawhAazalSmixbkkcbhwaHceGTmexikcbhwaHceGmdkaDaPaxcufal2falz:tjjjb8AaxakfhkawmbkcbhoxokcbhoxvkaiTmekcbhoaraw9Ralcaalca0E6mialc8F9nmexdkcbhoaecufca6mdkawcbcaal9RgezNjjjbaefhwkawaDcjdfalz:tjjjbalfab9Rhokavcjof8Kjjjjbaok9heeuaecaaeca0Eabcj;abae9Uc;WFbGgdcjdadcjd6Egdfcufad9Uae2adcl4cifcd4adV2fcefkmbcbabBd:S:kjjbk;rse3u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd:C:kjjbgrc;GeV86bbalc;abfcFecjezNjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgoydbhLaocwfydbhKaoclfydbhYcbh8Adndninalc;abfavcsGcitfgoydlhEdndndnaoydbgoaL9hmbaEaYSmekdnaoaY9hmbaEaK9hmba8Acefh8AxekaoaK9hmeaEaL9hmea8Acdfh8Aka8Ac870mdaXcufhvada8AciGcx2goc:y1jjbfydbaCfcdtfydbhEadaocN1jjbfydbaCfcdtfydbhKadaoc:q1jjbfydbaCfcdtfydbhLcbhodnindnalavcsGcdtfydbaE9hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaEaOSgvaYce9iaYaH9oVgoGh3dndndndndncbcsavEaYaoEgvcs9hmbarce9imbaEaEaAaEcefaASgvEgAcefSmecmcsavEhvkasava8Acdtc;WeGV86bbavcs9hmeaEaA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbkaEhAxdkcPhvasa8AcdtcPV86bbaEhAkavTmbavaH9imekalaXcdtfaEBdbaXcefcsGhXkaOa3fhOalc;abfaQcitfgvaKBdlavaEBdbalc;abfaQcefcsGgvcitfgoaEBdlaoaLBdbavcefhoxikavcufhva8Aclfg8Ac;ab9hmbkkdnadceaKaOScetaYaOSEcx2gvc:q1jjbfydbaCfcdtfydbgLTadavcN1jjbfydbaCfcdtfydbg8AceSGadavc:y1jjbfydbaCfcdtfydbgYcdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhKxdkcuhKaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydbaY9hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaLaOSg8Efh3dndnaKcm0mbaKcefhKxekcbcsa8Aa3SgvEhKa3avfh3kdndnaEcm0mbaEcefhExekcbcsaYa3SgvEhEa3avfh3kc9:cua8EEh8FaEaKcltVhocbhvdndndninavcj1jjbfRbbaocFeGSmeavcefgvcz9hmbxdkka5aLaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeao86bbaecefhekdna8EmbaLaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaLhAkdnaKcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmbaYaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaYhAkalaXcdtfaLBdbaXcefcsGhvdndnaKPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfaYBdbavcefcsGhvkalc;abfaQcitfgoaLBdlaoa8ABdbalc;abfaQcefcsGcitfgoa8ABdlaoaYBdbalc;abfaQcdfcsGcitfgoaYBdlaoaLBdbaQcifhoavhXa3hOkascefhsaocsGhQaCcifgCai6mbkkcbhvaeaP0mbcbhvinaeavfavcj1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd:C:kjjbk:ydewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb:C:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkcbhvaoar0mbaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:dvli99dui99ludnaeTmbcuadcetcuftcu7:Yhvdndncuaicuftcu7:YgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhralcxfIdbhqdndnakJbbbb9GTmbaxhkxekJbbjZar:l:tgkak:maxJbbbb9GEhkJbbjZax:l:tgxax:marJbbbb9GEhrkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEavNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohmxekcjjjj94hmkdndnakJbbj:;akJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;akJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;klld99eud99eudnaeTmbdndncuaicuftcu7:YgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicdfciGcdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk:Hvdxue998Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6mearcearce0EhwaohDinaDc:CuBdbaDclfhDawcufgwmbkaeTmiadcl6mdarcearce0EhqarcdthkalhxcbhminaohDaxhwaqhPinaDaDydbgsawydbgzcL4cFeGc:cufcbazEgzasaz9kEBdbawclfhwaDclfhDaPcufgPmbkaxakfhxamcefgmae9hmbkkaeTmdxekaeTmekavcb9hadcl6gqVhHarcearce0Ehkarcdthrceai9Rhmcbhdindndndnavce9hmbaqmdc:CuhwalhDakhPinawaDydbgscL4cFeGc:cufcbasEgsawas9kEhwaDclfhDaPcufgPmbxdkkc:CuhwaHmbaohDalhPakhsinaDaPydbgzcL4cFeGgxc8Aaxc8A9kEc:cufcbazEBdbaPclfhPaDclfhDascufgsmbkkaqmbcbhDakhsinawhPdnavceSmbaoaDfydbhPkdndnalaDfIdbgOcjjj;8iamaPfgPcLt9R::NJbbbZJbbb:;aOJbbbb9GEMgO:lJbbb9p9DTmbaO:Ohzxekcjjjj94hzkabaDfazcFFFrGaPcKtVBdbaDclfhDascufgsmbkkabarfhbalarfhladcefgdae9hmbkkaocjdf8KjjjjbkFkdCui998Jjjjjbc:Gd9Rgv8Kjjjjbavc:4efcbc;KbzNjjjb8AcbhodnadTmbcbhoaiTmbdnabae9hmbavcuadcdtgoadcFFFFi0Ecbyd:K:kjjbHjjjjbbgeBd:4eavceBd:ydaeabaoz:tjjjb8Akavc:OefcwfcbBdbav9cb83i:Oeavc:Oefaeadaiavc:4efz:njjjbcuaicdtgraicFFFFi0Egwcbyd:K:kjjbHjjjjbbhoavc:4efavyd:ydgDcdtfaoBdbavaDcefgqBd:ydaoavyd:Oegkarz:tjjjbhxavc:4efaqcdtfadci9Ugmcbyd:K:kjjbHjjjjbbgoBdbavaDcdfgrBd:ydaocbamzNjjjbhPavc:4efarcdtfawcbyd:K:kjjbHjjjjbbgsBdbavaDcifgqBd:ydaxhoashrinaralIdbalaoydbgwcwawcw6Ecdtfc;ebfIdbMUdbaoclfhoarclfhraicufgimbkavc:4efaqcdtfcuamcdtadcFFFF970Ecbyd:K:kjjbHjjjjbbgqBdbavaDclfBd:yddnadci6mbamceamce0EhiaehoaqhrinarasaoydbcdtfIdbasaoclfydbcdtfIdbMasaocwfydbcdtfIdbMUdbaocxfhoarclfhraicufgimbkkavc;qbfhzavhoavyd:SehHavyd:WehOcbhwcbhrcbhAcehCinaohXcihQaearci2gLcdtfgocwfydbhdaoydbhDabaAcx2fgiclfaoclfydbgKBdbaiaDBdbaicwfadBdbaParfce86bbazadBdwazaKBdlazaDBdbaqarcdtfcbBdbdnawTmbcihQaXhiinazaQcdtfaiydbgoBdbaQaoaD9haoaK9hGaoad9hGfhQaiclfhiawcufgwmbkkaAcefhAaxaDcdtfgoaoydbcufBdbaxaKcdtfgoaoydbcufBdbaxadcdtfgoaoydbcufBdbcbhwinaOaHaeawaLfcdtfydbcdtgifydbcdtfgKhoakaifgDydbgdhidnadTmbdninaoydbarSmeaoclfhoaicufgiTmdxbkkaoadcdtaKfc98fydbBdbaDaDydbcufBdbkawcefgwci9hmbkdndndnaQTmbcuhrJbbbbhYcbhDavyd:SehKavyd:WehLindndnakazaDcdtfydbcdtgofydbgimbaDcefhDxekaDcs0hwasaofgdIdbh8AadalcbaDcefgDawEcdtfIdbalaxaofydbgwcwawcw6Ecdtfc;ebfIdbMgEUdbaEa8A:thEaicdthiaLaKaofydbcdtfhoinaqaoydbgwcdtfgdaEadIdbMg8AUdba8AaYaYa8A9DgdEhYawaradEhraoclfhoaic98fgimbkkaDaQ9hmbkarcu9hmekaCam9pmeindnaPaCfRbbmbaChrxdkamaCcefgC9hmbxdkkaQczaQcz6EhwazhoaXhzarcu9hmekkavyd:ydhokaocdtavc:4effc98fhrdninaoTmearydbcbyd:G:kjjbH:bjjjbbarc98fhraocufhoxbkkavc:Gdf8Kjjjjbk;UlevucuaicdtgvaicFFFFi0Egocbyd:K:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavzNjjjb8Aadci9UhwdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbawceawce0EhDabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic:01jjbz:mjjjbkQbabaeadaic:C:jjjbz:mjjjbk9DeeuabcFeaicdtzNjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;:kivuo99lu8Jjjjjbcj;Hb9Rgl8Kjjjjbcbhvalc1;Gbfcbc;KbzNjjjb8AalcuadcdtadcFFFFi0Egocbyd:K:kjjbHjjjjbbgrBd19GalceBd;O9Galcwfcbyd:m:kjjbBdbalcb8Pd:e:kjjb83ibalc;W;Gbfcwfcbyd:y:kjjbBdbalcb8Pd:q:kjjb83i;W9Gaicd4hwdndnadmbJFFuFhDJFFuuhqJFFuuhkJFFuFhxJFFuuhmJFFuFhPxekawcdthsaehzincbhiinalaifgHazaifIdbgDaHIdbgxaxaD9EEUdbalc;W;GbfaifgHaDaHIdbgxaxaD9DEUdbaiclfgicx9hmbkazasfhzavcefgvad9hmbkalIdwhqalId;49GhDalIdlhkalId;09GhxalIdbhmalId;W9GhPkdndnadTmbJbbbbJbbjZaPam:tJbbbb:xgPaxak:tgxaxaP9DEgxaDaq:tgDaDax9DEgD:vaDJbbbb9BEhDawcdthsarhHadhzindndnaDaeIdbam:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcv2c;j:KM;jbGhvdndnaDaeclfIdbak:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcq2cM;j:KMeGavVhvdndnaDaecwfIdbaq:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaHavaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcC2c:KM;j:KdGVBdbaeasfheaHclfhHazcufgzmbkalcbcj;GbzNjjjbhiarhHadheinaiaHydbgzcFrGcx2fgvavydbcefBdbaiazcq4cFrGcx2fgvavydlcefBdlaiazcC4cFrGcx2fgzazydwcefBdwaHclfhHaecufgembxdkkalcbcj;GbzNjjjb8AkcbhHcbhzcbhecbhvinalaHfgiydbhsaiazBdbaicwfgwydbhOawavBdbaiclfgiydbhwaiaeBdbasazfhzaOavfhvawaefheaHcxfgHcj;Gb9hmbkcbhialaocbyd:K:kjjbHjjjjbbgzBd:m9GdnadTmbabhHinaHaiBdbaHclfhHadaicefgi9hmbkadTmbabhiadhHinalaraiydbgecdtfydbcFrGcx2fgvavydbgvcefBdbazavcdtfaeBdbaiclfhiaHcufgHmbkazhiadhHinalaraiydbgecdtfydbcq4cFrGcx2fgvavydlgvcefBdlabavcdtfaeBdbaiclfhiaHcufgHmbkabhiadhHinalaraiydbgecdtfydbcC4cFrGcx2fgvavydwgvcefBdwazavcdtfaeBdbaiclfhiaHcufgHmbkadTmbcbhiinabazydbcdtfaiBdbazclfhzadaicefgi9hmbkkclhidninaic98Smealc1;Gbfaifydbcbyd:G:kjjbH:bjjjbbaic98fhixbkkalcj;Hbf8Kjjjjbk9teiucbcbyd:O:kjjbgeabcifc98GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:O:kjjbgeabcrfc94GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:O:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:O:kjjbfgdBd:O:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:6ddbcjwk:Cdb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc:Cqkzebbbebbbdbbb8WWbb", a = new Uint8Array([32, 0, 65, 2, 1, 106, 34, 33, 3, 128, 11, 4, 13, 64, 6, 253, 10, 7, 15, 116, 127, 5, 8, 12, 40, 16, 19, 54, 20, 9, 27, 255, 113, 17, 42, 67, 24, 23, 146, 148, 18, 14, 22, 45, 70, 69, 56, 114, 101, 21, 25, 63, 75, 136, 108, 28, 118, 29, 73, 115]);
20
+ var e = "b9H79TebbbeJq9Geueu9Geub9Gbb9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiKLdilevlevlooroowwvwbDDbelve9Weiiviebeoweuec:W;kekr;RiOo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbe8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbdE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UbiY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbl8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbv8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UboE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbra9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbwL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbDK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbqL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbkE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbPa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbzK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbHl79IV9RbODwebcekdQXq:g9sLdbk;3keYu8Jjjjjbcjo9Rgv8Kjjjjbcbhodnalcefae0mbabcbRb:S:kjjbc:GeV86bbavcjdfcbcjdzNjjjb8AdnaiTmbavcjdfadalz:tjjjb8Akabaefhrabcefhwavalfcbcbcjdal9RalcFe0EzNjjjb8Aavavcjdfalz:tjjjbhDcj;abal9UhodndndndndnalTmbaoc;WFbGgecjdaecjd6Ehqcbhkdninakai9pmiaDcjlfcbcjdzNjjjb8Aaqaiak9Rakaqfai6Egxcsfgecl4cifcd4hmadakal2fhPdndndndndnaec9WGgsTmbcbhzcehHaPhOawhAxekdnaxTmbcbhAcehHaPhCinaDaAfRbbhXaDcjlfheaChoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkaraw9Ram6miawcbamzNjjjbgeTmiaCcefhCaeamfhwaAcefgAal6hHaAal9hmbxvkkaraw9Ram6mvawcbamzNjjjb8AceheinawgXamfhwalaegoSmldnaraw9Ram6mbaocefheawcbamzNjjjb8AaXmekkaoal6hHxekindnaxTmbaDazfRbbhXaDcjlfheaOhoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkkaraA9Ram6mearaAcbamzNjjjbgKamfgw9RcK6mdcbhYaDcjlfhAinaDcjlfaYfh8AcwhCczhLcehQindndnaQce9hmbcuhoa8ARbbmecbhodninaogecsSmeaecefhoaAaefcefRbbTmbkkcucbaecs6EhoxekaQcetc;:FFFeGhocuaQtcu7cFeGhXcbheinaoaXaAaefRbb9nfhoaecefgecz9hmbkkaoaLaoaL6geEhLaQaCaeEhCaQcetgQcw6mbkdndndndnaCcufPdiebkaKaYco4fgeaeRbbcdciaCclSEaYci4coGtV86bbaCcw9hmeawa8A8Pbb83bbawcwfa8Acwf8Pbb83bbawczfhwxdkaKaYco4fgeaeRbbceaYci4coGtV86bbkdncwaC9TgEmbinawcb86bbawcefhwxbkkcuaCtcu7h8Acbh3aAh5ina5heaEhQcbhoinaeRbbgLa8AcFeGgXaLaX6EaoaCtVhoaecefheaQcufgQmbkawao86bba5aEfh5awcefhwa3aEfg3cz6mbkcbheindnaAaefRbbgoaX6mbawao86bbawcefhwkaecefgecz9hmbkkdnaYczfgYas9pmbaAczfhAaraw9RcL0mekkaYas6meawTmeaOcefhOazcefgzal6hHawhAazalSmixbkkcbhwaHceGTmexikcbhwaHceGmdkaDaPaxcufal2falz:tjjjb8AaxakfhkawmbkcbhoxokcbhoxvkaiTmekcbhoaraw9Ralcaalca0E6mialc8F9nmexdkcbhoaecufca6mdkawcbcaal9RgezNjjjbaefhwkawaDcjdfalz:tjjjbalfab9Rhokavcjof8Kjjjjbaok9heeuaecaaeca0Eabcj;abae9Uc;WFbGgdcjdadcjd6Egdfcufad9Uae2adcl4cifcd4adV2fcefkmbcbabBd:S:kjjbk;rse3u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd:C:kjjbgrc;GeV86bbalc;abfcFecjezNjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgoydbhLaocwfydbhKaoclfydbhYcbh8Adndninalc;abfavcsGcitfgoydlhEdndndnaoydbgoaL9hmbaEaYSmekdnaoaY9hmbaEaK9hmba8Acefh8AxekaoaK9hmeaEaL9hmea8Acdfh8Aka8Ac870mdaXcufhvada8AciGcx2goc:y1jjbfydbaCfcdtfydbhEadaocN1jjbfydbaCfcdtfydbhKadaoc:q1jjbfydbaCfcdtfydbhLcbhodnindnalavcsGcdtfydbaE9hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaEaOSgvaYce9iaYaH9oVgoGh3dndndndndncbcsavEaYaoEgvcs9hmbarce9imbaEaEaAaEcefaASgvEgAcefSmecmcsavEhvkasava8Acdtc;WeGV86bbavcs9hmeaEaA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbkaEhAxdkcPhvasa8AcdtcPV86bbaEhAkavTmbavaH9imekalaXcdtfaEBdbaXcefcsGhXkaOa3fhOalc;abfaQcitfgvaKBdlavaEBdbalc;abfaQcefcsGgvcitfgoaEBdlaoaLBdbavcefhoxikavcufhva8Aclfg8Ac;ab9hmbkkdnadceaKaOScetaYaOSEcx2gvc:q1jjbfydbaCfcdtfydbgLTadavcN1jjbfydbaCfcdtfydbg8AceSGadavc:y1jjbfydbaCfcdtfydbgYcdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhKxdkcuhKaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydbaY9hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaLaOSg8Efh3dndnaKcm0mbaKcefhKxekcbcsa8Aa3SgvEhKa3avfh3kdndnaEcm0mbaEcefhExekcbcsaYa3SgvEhEa3avfh3kc9:cua8EEh8FaEaKcltVhocbhvdndndninavcj1jjbfRbbaocFeGSmeavcefgvcz9hmbxdkka5aLaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeao86bbaecefhekdna8EmbaLaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaLhAkdnaKcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmbaYaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaYhAkalaXcdtfaLBdbaXcefcsGhvdndnaKPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfaYBdbavcefcsGhvkalc;abfaQcitfgoaLBdlaoa8ABdbalc;abfaQcefcsGcitfgoa8ABdlaoaYBdbalc;abfaQcdfcsGcitfgoaYBdlaoaLBdbaQcifhoavhXa3hOkascefhsaocsGhQaCcifgCai6mbkkcbhvaeaP0mbcbhvinaeavfavcj1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd:C:kjjbk:ydewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb:C:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkcbhvaoar0mbaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:dvli99dui99ludnaeTmbcuadcetcuftcu7:Yhvdndncuaicuftcu7:YgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhralcxfIdbhqdndnakJbbbb9GTmbaxhkxekJbbjZar:l:tgkak:maxJbbbb9GEhkJbbjZax:l:tgxax:marJbbbb9GEhrkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEavNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohmxekcjjjj94hmkdndnakJbbj:;akJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;akJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;klld99eud99eudnaeTmbdndncuaicuftcu7:YgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicdfciGcdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk:Hvdxue998Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6mearcearce0EhwaohDinaDc:CuBdbaDclfhDawcufgwmbkaeTmiadcl6mdarcearce0EhqarcdthkalhxcbhminaohDaxhwaqhPinaDaDydbgsawydbgzcL4cFeGc:cufcbazEgzasaz9kEBdbawclfhwaDclfhDaPcufgPmbkaxakfhxamcefgmae9hmbkkaeTmdxekaeTmekavcb9hadcl6gqVhHarcearce0Ehkarcdthrceai9Rhmcbhdindndndnavce9hmbaqmdc:CuhwalhDakhPinawaDydbgscL4cFeGc:cufcbasEgsawas9kEhwaDclfhDaPcufgPmbxdkkc:CuhwaHmbaohDalhPakhsinaDaPydbgzcL4cFeGgxc8Aaxc8A9kEc:cufcbazEBdbaPclfhPaDclfhDascufgsmbkkaqmbcbhDakhsinawhPdnavceSmbaoaDfydbhPkdndnalaDfIdbgOcjjj;8iamaPfgPcLt9R::NJbbbZJbbb:;aOJbbbb9GEMgO:lJbbb9p9DTmbaO:Ohzxekcjjjj94hzkabaDfazcFFFrGaPcKtVBdbaDclfhDascufgsmbkkabarfhbalarfhladcefgdae9hmbkkaocjdf8KjjjjbkFkdCui998Jjjjjbc:Gd9Rgv8Kjjjjbavc:4efcbc;KbzNjjjb8AcbhodnadTmbcbhoaiTmbdnabae9hmbavcuadcdtgoadcFFFFi0Ecbyd:K:kjjbHjjjjbbgeBd:4eavceBd:ydaeabaoz:tjjjb8Akavc:OefcwfcbBdbav9cb83i:Oeavc:Oefaeadaiavc:4efz:njjjbcuaicdtgraicFFFFi0Egwcbyd:K:kjjbHjjjjbbhoavc:4efavyd:ydgDcdtfaoBdbavaDcefgqBd:ydaoavyd:Oegkarz:tjjjbhxavc:4efaqcdtfadci9Ugmcbyd:K:kjjbHjjjjbbgoBdbavaDcdfgrBd:ydaocbamzNjjjbhPavc:4efarcdtfawcbyd:K:kjjbHjjjjbbgsBdbavaDcifgqBd:ydaxhoashrinaralIdbalaoydbgwcwawcw6Ecdtfc;ebfIdbMUdbaoclfhoarclfhraicufgimbkavc:4efaqcdtfcuamcdtadcFFFF970Ecbyd:K:kjjbHjjjjbbgqBdbavaDclfBd:yddnadci6mbamceamce0EhiaehoaqhrinarasaoydbcdtfIdbasaoclfydbcdtfIdbMasaocwfydbcdtfIdbMUdbaocxfhoarclfhraicufgimbkkavc;qbfhzavhoavyd:SehHavyd:WehOcbhwcbhrcbhAcehCinaohXcihQaearci2gLcdtfgocwfydbhdaoydbhDabaAcx2fgiclfaoclfydbgKBdbaiaDBdbaicwfadBdbaParfce86bbazadBdwazaKBdlazaDBdbaqarcdtfcbBdbdnawTmbcihQaXhiinazaQcdtfaiydbgoBdbaQaoaD9haoaK9hGaoad9hGfhQaiclfhiawcufgwmbkkaAcefhAaxaDcdtfgoaoydbcufBdbaxaKcdtfgoaoydbcufBdbaxadcdtfgoaoydbcufBdbcbhwinaOaHaeawaLfcdtfydbcdtgifydbcdtfgKhoakaifgDydbgdhidnadTmbdninaoydbarSmeaoclfhoaicufgiTmdxbkkaoadcdtaKfc98fydbBdbaDaDydbcufBdbkawcefgwci9hmbkdndndnaQTmbcuhrJbbbbhYcbhDavyd:SehKavyd:WehLindndnakazaDcdtfydbcdtgofydbgimbaDcefhDxekaDcs0hwasaofgdIdbh8AadalcbaDcefgDawEcdtfIdbalaxaofydbgwcwawcw6Ecdtfc;ebfIdbMgEUdbaEa8A:thEaicdthiaLaKaofydbcdtfhoinaqaoydbgwcdtfgdaEadIdbMg8AUdba8AaYaYa8A9DgdEhYawaradEhraoclfhoaic98fgimbkkaDaQ9hmbkarcu9hmekaCam9pmeindnaPaCfRbbmbaChrxdkamaCcefgC9hmbxdkkaQczaQcz6EhwazhoaXhzarcu9hmekkavyd:ydhokaocdtavc:4effc98fhrdninaoTmearydbcbyd:G:kjjbH:bjjjbbarc98fhraocufhoxbkkavc:Gdf8Kjjjjbk;UlevucuaicdtgvaicFFFFi0Egocbyd:K:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavzNjjjb8Aadci9UhwdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbawceawce0EhDabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic:01jjbz:mjjjbkQbabaeadaic:C:jjjbz:mjjjbk9DeeuabcFeaicdtzNjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;:kivuo99lu8Jjjjjbcj;Hb9Rgl8Kjjjjbcbhvalc1;Gbfcbc;KbzNjjjb8AalcuadcdtadcFFFFi0Egocbyd:K:kjjbHjjjjbbgrBd19GalceBd;O9Galcwfcbyd:m:kjjbBdbalcb8Pd:e:kjjb83ibalc;W;Gbfcwfcbyd:y:kjjbBdbalcb8Pd:q:kjjb83i;W9Gaicd4hwdndnadmbJFFuFhDJFFuuhqJFFuuhkJFFuFhxJFFuuhmJFFuFhPxekawcdthsaehzincbhiinalaifgHazaifIdbgDaHIdbgxaxaD9EEUdbalc;W;GbfaifgHaDaHIdbgxaxaD9DEUdbaiclfgicx9hmbkazasfhzavcefgvad9hmbkalIdwhqalId;49GhDalIdlhkalId;09GhxalIdbhmalId;W9GhPkdndnadTmbJbbbbJbbjZaPam:tJbbbb:xgPaxak:tgxaxaP9DEgxaDaq:tgDaDax9DEgD:vaDJbbbb9BEhDawcdthsarhHadhzindndnaDaeIdbam:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcv2c;j:KM;jbGhvdndnaDaeclfIdbak:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcq2cM;j:KMeGavVhvdndnaDaecwfIdbaq:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaHavaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcC2c:KM;j:KdGVBdbaeasfheaHclfhHazcufgzmbkalcbcj;GbzNjjjbhiarhHadheinaiaHydbgzcFrGcx2fgvavydbcefBdbaiazcq4cFrGcx2fgvavydlcefBdlaiazcC4cFrGcx2fgzazydwcefBdwaHclfhHaecufgembxdkkalcbcj;GbzNjjjb8AkcbhHcbhzcbhecbhvinalaHfgiydbhsaiazBdbaicwfgwydbhOawavBdbaiclfgiydbhwaiaeBdbasazfhzaOavfhvawaefheaHcxfgHcj;Gb9hmbkcbhialaocbyd:K:kjjbHjjjjbbgzBd:m9GdnadTmbabhHinaHaiBdbaHclfhHadaicefgi9hmbkadTmbabhiadhHinalaraiydbgecdtfydbcFrGcx2fgvavydbgvcefBdbazavcdtfaeBdbaiclfhiaHcufgHmbkazhiadhHinalaraiydbgecdtfydbcq4cFrGcx2fgvavydlgvcefBdlabavcdtfaeBdbaiclfhiaHcufgHmbkabhiadhHinalaraiydbgecdtfydbcC4cFrGcx2fgvavydwgvcefBdwazavcdtfaeBdbaiclfhiaHcufgHmbkadTmbcbhiinabazydbcdtfaiBdbazclfhzadaicefgi9hmbkkclhidninaic98Smealc1;Gbfaifydbcbyd:G:kjjbH:bjjjbbaic98fhixbkkalcj;Hbf8Kjjjjbk9teiucbcbyd:O:kjjbgeabcifc98GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:O:kjjbgeabcrfc94GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:O:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:O:kjjbfgdBd:O:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:6ddbcjwk:Cdb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc:Cqkzebbbebbbdbbb8WWbb", a = new Uint8Array([32, 0, 65, 2, 1, 106, 34, 33, 3, 128, 11, 4, 13, 64, 6, 253, 10, 7, 15, 116, 127, 5, 8, 12, 40, 16, 19, 54, 20, 9, 27, 255, 113, 17, 42, 67, 24, 23, 146, 148, 18, 14, 22, 45, 70, 69, 56, 114, 101, 21, 25, 63, 75, 136, 108, 28, 118, 29, 73, 115]);
21
21
  if (typeof WebAssembly != "object")
22
22
  return {
23
23
  supported: !1
24
24
  };
25
- var e, b = WebAssembly.instantiate(s(t), {}).then(function(m) {
26
- e = m.instance, e.exports.__wasm_call_ctors(), e.exports.meshopt_encodeVertexVersion(0), e.exports.meshopt_encodeIndexVersion(1);
25
+ var t, b = WebAssembly.instantiate(s(e), {}).then(function(m) {
26
+ t = m.instance, t.exports.__wasm_call_ctors(), t.exports.meshopt_encodeVertexVersion(0), t.exports.meshopt_encodeIndexVersion(1);
27
27
  });
28
28
  function s(m) {
29
- for (var o = new Uint8Array(m.length), c = 0; c < m.length; ++c) {
30
- var d = m.charCodeAt(c);
31
- o[c] = d > 96 ? d - 97 : d > 64 ? d - 39 : d + 4;
29
+ for (var r = new Uint8Array(m.length), n = 0; n < m.length; ++n) {
30
+ var o = m.charCodeAt(n);
31
+ r[n] = o > 96 ? o - 97 : o > 64 ? o - 39 : o + 4;
32
32
  }
33
- for (var r = 0, c = 0; c < m.length; ++c)
34
- o[r++] = o[c] < 60 ? a[o[c]] : (o[c] - 60) * 64 + o[++c];
35
- return o.buffer.slice(0, r);
33
+ for (var d = 0, n = 0; n < m.length; ++n)
34
+ r[d++] = r[n] < 60 ? a[r[n]] : (r[n] - 60) * 64 + r[++n];
35
+ return r.buffer.slice(0, d);
36
36
  }
37
37
  function i(m) {
38
38
  if (!m)
39
39
  throw new Error("Assertion failed");
40
40
  }
41
- function n(m) {
41
+ function c(m) {
42
42
  return new Uint8Array(m.buffer, m.byteOffset, m.byteLength);
43
43
  }
44
- function l(m, o, c, d) {
45
- var r = e.exports.sbrk, h = r(o.length * 4), f = r(c * 4), g = new Uint8Array(e.exports.memory.buffer), u = n(o);
46
- g.set(u, h), d && d(h, h, o.length, c);
47
- var w = m(f, h, o.length, c);
48
- g = new Uint8Array(e.exports.memory.buffer);
49
- var v = new Uint32Array(c);
50
- new Uint8Array(v.buffer).set(g.subarray(f, f + c * 4)), u.set(g.subarray(h, h + o.length * 4)), r(h - r(0));
51
- for (var A = 0; A < o.length; ++A)
52
- o[A] = v[o[A]];
53
- return [v, w];
54
- }
55
- function p(m, o, c, d) {
56
- var r = e.exports.sbrk, h = r(c * 4), f = r(c * d), g = new Uint8Array(e.exports.memory.buffer);
57
- g.set(n(o), f), m(h, f, c, d), g = new Uint8Array(e.exports.memory.buffer);
58
- var u = new Uint32Array(c);
59
- return new Uint8Array(u.buffer).set(g.subarray(h, h + c * 4)), r(h - r(0)), u;
60
- }
61
- function j(m, o, c, d, r) {
62
- var h = e.exports.sbrk, f = h(o), g = h(d * r), u = new Uint8Array(e.exports.memory.buffer);
63
- u.set(n(c), g);
64
- var w = m(f, o, g, d, r), v = new Uint8Array(w);
65
- return v.set(u.subarray(f, f + w)), h(f - h(0)), v;
44
+ function f(m, r, n, o) {
45
+ var d = t.exports.sbrk, h = d(r.length * 4), l = d(n * 4), g = new Uint8Array(t.exports.memory.buffer), u = c(r);
46
+ g.set(u, h), o && o(h, h, r.length, n);
47
+ var w = m(l, h, r.length, n);
48
+ g = new Uint8Array(t.exports.memory.buffer);
49
+ var x = new Uint32Array(n);
50
+ new Uint8Array(x.buffer).set(g.subarray(l, l + n * 4)), u.set(g.subarray(h, h + r.length * 4)), d(h - d(0));
51
+ for (var A = 0; A < r.length; ++A)
52
+ r[A] = x[r[A]];
53
+ return [x, w];
54
+ }
55
+ function p(m, r, n, o) {
56
+ var d = t.exports.sbrk, h = d(n * 4), l = d(n * o), g = new Uint8Array(t.exports.memory.buffer);
57
+ g.set(c(r), l), m(h, l, n, o), g = new Uint8Array(t.exports.memory.buffer);
58
+ var u = new Uint32Array(n);
59
+ return new Uint8Array(u.buffer).set(g.subarray(h, h + n * 4)), d(h - d(0)), u;
60
+ }
61
+ function j(m, r, n, o, d) {
62
+ var h = t.exports.sbrk, l = h(r), g = h(o * d), u = new Uint8Array(t.exports.memory.buffer);
63
+ u.set(c(n), g);
64
+ var w = m(l, r, g, o, d), x = new Uint8Array(w);
65
+ return x.set(u.subarray(l, l + w)), h(l - h(0)), x;
66
66
  }
67
67
  function P(m) {
68
- for (var o = 0, c = 0; c < m.length; ++c) {
69
- var d = m[c];
70
- o = o < d ? d : o;
68
+ for (var r = 0, n = 0; n < m.length; ++n) {
69
+ var o = m[n];
70
+ r = r < o ? o : r;
71
71
  }
72
- return o;
72
+ return r;
73
73
  }
74
- function k(m, o) {
75
- if (i(o == 2 || o == 4), o == 4)
74
+ function k(m, r) {
75
+ if (i(r == 2 || r == 4), r == 4)
76
76
  return new Uint32Array(m.buffer, m.byteOffset, m.byteLength / 4);
77
- var c = new Uint16Array(m.buffer, m.byteOffset, m.byteLength / 2);
78
- return new Uint32Array(c);
77
+ var n = new Uint16Array(m.buffer, m.byteOffset, m.byteLength / 2);
78
+ return new Uint32Array(n);
79
79
  }
80
- function M(m, o, c, d, r, h, f) {
81
- var g = e.exports.sbrk, u = g(c * d), w = g(c * h), v = new Uint8Array(e.exports.memory.buffer);
82
- v.set(n(o), w), m(u, c, d, r, w, f);
83
- var A = new Uint8Array(c * d);
84
- return A.set(v.subarray(u, u + c * d)), g(u - g(0)), A;
80
+ function M(m, r, n, o, d, h, l) {
81
+ var g = t.exports.sbrk, u = g(n * o), w = g(n * h), x = new Uint8Array(t.exports.memory.buffer);
82
+ x.set(c(r), w), m(u, n, o, d, w, l);
83
+ var A = new Uint8Array(n * o);
84
+ return A.set(x.subarray(u, u + n * o)), g(u - g(0)), A;
85
85
  }
86
86
  return {
87
87
  ready: b,
88
88
  supported: !0,
89
- reorderMesh: function(m, o, c) {
90
- var d = o ? c ? e.exports.meshopt_optimizeVertexCacheStrip : e.exports.meshopt_optimizeVertexCache : void 0;
91
- return l(e.exports.meshopt_optimizeVertexFetchRemap, m, P(m) + 1, d);
92
- },
93
- reorderPoints: function(m, o) {
94
- return i(m instanceof Float32Array), i(m.length % o == 0), i(o >= 3), p(e.exports.meshopt_spatialSortRemap, m, m.length / o, o * 4);
95
- },
96
- encodeVertexBuffer: function(m, o, c) {
97
- i(c > 0 && c <= 256), i(c % 4 == 0);
98
- var d = e.exports.meshopt_encodeVertexBufferBound(o, c);
99
- return j(e.exports.meshopt_encodeVertexBuffer, d, m, o, c);
100
- },
101
- encodeIndexBuffer: function(m, o, c) {
102
- i(c == 2 || c == 4), i(o % 3 == 0);
103
- var d = k(m, c), r = e.exports.meshopt_encodeIndexBufferBound(o, P(d) + 1);
104
- return j(e.exports.meshopt_encodeIndexBuffer, r, d, o, 4);
105
- },
106
- encodeIndexSequence: function(m, o, c) {
107
- i(c == 2 || c == 4);
108
- var d = k(m, c), r = e.exports.meshopt_encodeIndexSequenceBound(o, P(d) + 1);
109
- return j(e.exports.meshopt_encodeIndexSequence, r, d, o, 4);
110
- },
111
- encodeGltfBuffer: function(m, o, c, d) {
112
- var r = {
89
+ reorderMesh: function(m, r, n) {
90
+ var o = r ? n ? t.exports.meshopt_optimizeVertexCacheStrip : t.exports.meshopt_optimizeVertexCache : void 0;
91
+ return f(t.exports.meshopt_optimizeVertexFetchRemap, m, P(m) + 1, o);
92
+ },
93
+ reorderPoints: function(m, r) {
94
+ return i(m instanceof Float32Array), i(m.length % r == 0), i(r >= 3), p(t.exports.meshopt_spatialSortRemap, m, m.length / r, r * 4);
95
+ },
96
+ encodeVertexBuffer: function(m, r, n) {
97
+ i(n > 0 && n <= 256), i(n % 4 == 0);
98
+ var o = t.exports.meshopt_encodeVertexBufferBound(r, n);
99
+ return j(t.exports.meshopt_encodeVertexBuffer, o, m, r, n);
100
+ },
101
+ encodeIndexBuffer: function(m, r, n) {
102
+ i(n == 2 || n == 4), i(r % 3 == 0);
103
+ var o = k(m, n), d = t.exports.meshopt_encodeIndexBufferBound(r, P(o) + 1);
104
+ return j(t.exports.meshopt_encodeIndexBuffer, d, o, r, 4);
105
+ },
106
+ encodeIndexSequence: function(m, r, n) {
107
+ i(n == 2 || n == 4);
108
+ var o = k(m, n), d = t.exports.meshopt_encodeIndexSequenceBound(r, P(o) + 1);
109
+ return j(t.exports.meshopt_encodeIndexSequence, d, o, r, 4);
110
+ },
111
+ encodeGltfBuffer: function(m, r, n, o) {
112
+ var d = {
113
113
  ATTRIBUTES: this.encodeVertexBuffer,
114
114
  TRIANGLES: this.encodeIndexBuffer,
115
115
  INDICES: this.encodeIndexSequence
116
116
  };
117
- return i(r[d]), r[d](m, o, c);
117
+ return i(d[o]), d[o](m, r, n);
118
118
  },
119
- encodeFilterOct: function(m, o, c, d) {
120
- return i(c == 4 || c == 8), i(d >= 1 && d <= 16), M(e.exports.meshopt_encodeFilterOct, m, o, c, d, 16);
119
+ encodeFilterOct: function(m, r, n, o) {
120
+ return i(n == 4 || n == 8), i(o >= 1 && o <= 16), M(t.exports.meshopt_encodeFilterOct, m, r, n, o, 16);
121
121
  },
122
- encodeFilterQuat: function(m, o, c, d) {
123
- return i(c == 8), i(d >= 4 && d <= 16), M(e.exports.meshopt_encodeFilterQuat, m, o, c, d, 16);
122
+ encodeFilterQuat: function(m, r, n, o) {
123
+ return i(n == 8), i(o >= 4 && o <= 16), M(t.exports.meshopt_encodeFilterQuat, m, r, n, o, 16);
124
124
  },
125
- encodeFilterExp: function(m, o, c, d, r) {
126
- i(c > 0 && c % 4 == 0), i(d >= 1 && d <= 24);
125
+ encodeFilterExp: function(m, r, n, o, d) {
126
+ i(n > 0 && n % 4 == 0), i(o >= 1 && o <= 24);
127
127
  var h = {
128
128
  Separate: 0,
129
129
  SharedVector: 1,
130
130
  SharedComponent: 2
131
131
  };
132
- return M(e.exports.meshopt_encodeFilterExp, m, o, c, d, c, r ? h[r] : 1);
132
+ return M(t.exports.meshopt_encodeFilterExp, m, r, n, o, n, d ? h[d] : 1);
133
133
  }
134
134
  };
135
135
  })();
136
- var ct = (function() {
137
- var t = "b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq;d8Yqdbk:yzeHu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhlaicefhodnadTmbalc;WFbGglcjdalcjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfglcl4cifcd4hxdndndndnalc9WGgmTmbcbhPcehsawcjdfhzaohHinaraH9Rax6midnaraHaxfgo9RcK6mbczhlcbhOinalgic9WfgAawcj;cbffhldndndndndnaHaAco4fRbbaOcoG4ciGPlbedibkal9cb83ibalcwf9cb83ibxikalaoRblaoRbbgAco4gCaCciSgCE86bbawcj;cbfaifglcGfaoclfaCfgCRbbaAcl4ciGgXaXciSgXE86bbalcVfaCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc7faCaXfgCRbbaAciGgAaAciSgAE86bbalctfaCaAfgCRbbaoRbegAco4gXaXciSgXE86bbalc91faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc4faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc93faCaXfgCRbbaAciGgAaAciSgAE86bbalc94faCaAfgCRbbaoRbdgAco4gXaXciSgXE86bbalc95faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc96faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc97faCaXfgCRbbaAciGgAaAciSgAE86bbalc98faCaAfgARbbaoRbigoco4gCaCciSgCE86bbalc99faAaCfgARbbaocl4ciGgCaCciSgCE86bbalc9:faAaCfgARbbaocd4ciGgCaCciSgCE86bbalcufaAaCfglRbbaociGgoaociSgoE86bbalaofhoxdkalaoRbwaoRbbgAcl4gCaCcsSgCE86bbawcj;cbfaifglcGfaocwfaCfgCRbbaAcsGgAaAcsSgAE86bbalcVfaCaAfgARbbaoRbegCcl4gXaXcsSgXE86bbalc7faAaXfgARbbaCcsGgCaCcsSgCE86bbalctfaAaCfgARbbaoRbdgCcl4gXaXcsSgXE86bbalc91faAaXfgARbbaCcsGgCaCcsSgCE86bbalc4faAaCfgARbbaoRbigCcl4gXaXcsSgXE86bbalc93faAaXfgARbbaCcsGgCaCcsSgCE86bbalc94faAaCfgARbbaoRblgCcl4gXaXcsSgXE86bbalc95faAaXfgARbbaCcsGgCaCcsSgCE86bbalc96faAaCfgARbbaoRbvgCcl4gXaXcsSgXE86bbalc97faAaXfgARbbaCcsGgCaCcsSgCE86bbalc98faAaCfgARbbaoRbogCcl4gXaXcsSgXE86bbalc99faAaXfgARbbaCcsGgCaCcsSgCE86bbalc9:faAaCfgARbbaoRbrgocl4gCaCcsSgCE86bbalcufaAaCfglRbbaocsGgoaocsSgoE86bbalaofhoxekalao8Pbb83bbalcwfaocwf8Pbb83bbaoczfhokdnaiam9pmbaOcdfhOaiczfhlarao9RcL0mekkaiam6miaoTmidnakTmbawaPfRbbhOawcj;cbfhlazhiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkkazcefhzaPcefgPad6hsaohHaPad9hmexvkkcbhoasceGmdxikaoaxad2fhXdnakTmbcbhmcehsawcjdfhCinarao9Rax6miaoTmdaoaxfhoawamfRbbhOawcj;cbfhlaChiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkaCcefhCamcefgmad6hsamad9hmbkaXhoxikcbhlcehsinarao9Rax6mdaoTmeaoaxfhoalcefglad6hsadal9hmbkaXhoxdkcbhoasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqaombkc9:hoxekcbc99arao9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;xzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabaiavcdfciGfcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabaiavcufciGfcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabaiavciGfcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb", a = "b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;b9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;e8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincbhHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAcd0hHalhOaAcefgAclSmdxekkcbhlaHceGTmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;tzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:wPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabalcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnaval9pmbaialciGgecdtgdVcbc;abad9R;8kbaiabavcdtfgvad;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkavaiad;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb", e = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 3, 2, 0, 0, 5, 3, 1, 0, 1, 12, 1, 0, 10, 22, 2, 12, 0, 65, 0, 65, 0, 65, 0, 252, 10, 0, 0, 11, 7, 0, 65, 0, 253, 15, 26, 11]), b = new Uint8Array([32, 0, 65, 2, 1, 106, 34, 33, 3, 128, 11, 4, 13, 64, 6, 253, 10, 7, 15, 116, 127, 5, 8, 12, 40, 16, 19, 54, 20, 9, 27, 255, 113, 17, 42, 67, 24, 23, 146, 148, 18, 14, 22, 45, 70, 69, 56, 114, 101, 21, 25, 63, 75, 136, 108, 28, 118, 29, 73, 115]);
136
+ var dt = (function() {
137
+ var e = "b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq;d8Yqdbk:yzeHu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhlaicefhodnadTmbalc;WFbGglcjdalcjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfglcl4cifcd4hxdndndndnalc9WGgmTmbcbhPcehsawcjdfhzaohHinaraH9Rax6midnaraHaxfgo9RcK6mbczhlcbhOinalgic9WfgAawcj;cbffhldndndndndnaHaAco4fRbbaOcoG4ciGPlbedibkal9cb83ibalcwf9cb83ibxikalaoRblaoRbbgAco4gCaCciSgCE86bbawcj;cbfaifglcGfaoclfaCfgCRbbaAcl4ciGgXaXciSgXE86bbalcVfaCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc7faCaXfgCRbbaAciGgAaAciSgAE86bbalctfaCaAfgCRbbaoRbegAco4gXaXciSgXE86bbalc91faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc4faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc93faCaXfgCRbbaAciGgAaAciSgAE86bbalc94faCaAfgCRbbaoRbdgAco4gXaXciSgXE86bbalc95faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc96faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc97faCaXfgCRbbaAciGgAaAciSgAE86bbalc98faCaAfgARbbaoRbigoco4gCaCciSgCE86bbalc99faAaCfgARbbaocl4ciGgCaCciSgCE86bbalc9:faAaCfgARbbaocd4ciGgCaCciSgCE86bbalcufaAaCfglRbbaociGgoaociSgoE86bbalaofhoxdkalaoRbwaoRbbgAcl4gCaCcsSgCE86bbawcj;cbfaifglcGfaocwfaCfgCRbbaAcsGgAaAcsSgAE86bbalcVfaCaAfgARbbaoRbegCcl4gXaXcsSgXE86bbalc7faAaXfgARbbaCcsGgCaCcsSgCE86bbalctfaAaCfgARbbaoRbdgCcl4gXaXcsSgXE86bbalc91faAaXfgARbbaCcsGgCaCcsSgCE86bbalc4faAaCfgARbbaoRbigCcl4gXaXcsSgXE86bbalc93faAaXfgARbbaCcsGgCaCcsSgCE86bbalc94faAaCfgARbbaoRblgCcl4gXaXcsSgXE86bbalc95faAaXfgARbbaCcsGgCaCcsSgCE86bbalc96faAaCfgARbbaoRbvgCcl4gXaXcsSgXE86bbalc97faAaXfgARbbaCcsGgCaCcsSgCE86bbalc98faAaCfgARbbaoRbogCcl4gXaXcsSgXE86bbalc99faAaXfgARbbaCcsGgCaCcsSgCE86bbalc9:faAaCfgARbbaoRbrgocl4gCaCcsSgCE86bbalcufaAaCfglRbbaocsGgoaocsSgoE86bbalaofhoxekalao8Pbb83bbalcwfaocwf8Pbb83bbaoczfhokdnaiam9pmbaOcdfhOaiczfhlarao9RcL0mekkaiam6miaoTmidnakTmbawaPfRbbhOawcj;cbfhlazhiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkkazcefhzaPcefgPad6hsaohHaPad9hmexvkkcbhoasceGmdxikaoaxad2fhXdnakTmbcbhmcehsawcjdfhCinarao9Rax6miaoTmdaoaxfhoawamfRbbhOawcj;cbfhlaChiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkaCcefhCamcefgmad6hsamad9hmbkaXhoxikcbhlcehsinarao9Rax6mdaoTmeaoaxfhoalcefglad6hsadal9hmbkaXhoxdkcbhoasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqaombkc9:hoxekcbc99arao9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;xzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabaiavcdfciGfcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabaiavcufciGfcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabaiavciGfcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb", a = "b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;b9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;e8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincbhHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAcd0hHalhOaAcefgAclSmdxekkcbhlaHceGTmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;tzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:wPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabalcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnaval9pmbaialciGgecdtgdVcbc;abad9R;8kbaiabavcdtfgvad;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkavaiad;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb", t = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 3, 2, 0, 0, 5, 3, 1, 0, 1, 12, 1, 0, 10, 22, 2, 12, 0, 65, 0, 65, 0, 65, 0, 252, 10, 0, 0, 11, 7, 0, 65, 0, 253, 15, 26, 11]), b = new Uint8Array([32, 0, 65, 2, 1, 106, 34, 33, 3, 128, 11, 4, 13, 64, 6, 253, 10, 7, 15, 116, 127, 5, 8, 12, 40, 16, 19, 54, 20, 9, 27, 255, 113, 17, 42, 67, 24, 23, 146, 148, 18, 14, 22, 45, 70, 69, 56, 114, 101, 21, 25, 63, 75, 136, 108, 28, 118, 29, 73, 115]);
138
138
  if (typeof WebAssembly != "object")
139
139
  return {
140
140
  supported: !1
141
141
  };
142
- var s = WebAssembly.validate(e) ? a : t, i, n = WebAssembly.instantiate(l(s), {}).then(function(r) {
143
- i = r.instance, i.exports.__wasm_call_ctors();
142
+ var s = WebAssembly.validate(t) ? a : e, i, c = WebAssembly.instantiate(f(s), {}).then(function(d) {
143
+ i = d.instance, i.exports.__wasm_call_ctors();
144
144
  });
145
- function l(r) {
146
- for (var h = new Uint8Array(r.length), f = 0; f < r.length; ++f) {
147
- var g = r.charCodeAt(f);
148
- h[f] = g > 96 ? g - 97 : g > 64 ? g - 39 : g + 4;
145
+ function f(d) {
146
+ for (var h = new Uint8Array(d.length), l = 0; l < d.length; ++l) {
147
+ var g = d.charCodeAt(l);
148
+ h[l] = g > 96 ? g - 97 : g > 64 ? g - 39 : g + 4;
149
149
  }
150
- for (var u = 0, f = 0; f < r.length; ++f)
151
- h[u++] = h[f] < 60 ? b[h[f]] : (h[f] - 60) * 64 + h[++f];
150
+ for (var u = 0, l = 0; l < d.length; ++l)
151
+ h[u++] = h[l] < 60 ? b[h[l]] : (h[l] - 60) * 64 + h[++l];
152
152
  return h.buffer.slice(0, u);
153
153
  }
154
- function p(r, h, f, g, u, w, v) {
155
- var A = r.exports.sbrk, x = g + 3 & -4, D = A(x * u), I = A(w.length), E = new Uint8Array(r.exports.memory.buffer);
154
+ function p(d, h, l, g, u, w, x) {
155
+ var A = d.exports.sbrk, v = g + 3 & -4, D = A(v * u), I = A(w.length), E = new Uint8Array(d.exports.memory.buffer);
156
156
  E.set(w, I);
157
157
  var S = h(D, g, u, I, w.length);
158
- if (S == 0 && v && v(D, x, u), f.set(E.subarray(D, D + g * u)), A(D - A(0)), S != 0)
158
+ if (S == 0 && x && x(D, v, u), l.set(E.subarray(D, D + g * u)), A(D - A(0)), S != 0)
159
159
  throw new Error("Malformed buffer data: " + S);
160
160
  }
161
161
  var j = {
@@ -168,147 +168,147 @@ var ct = (function() {
168
168
  TRIANGLES: "meshopt_decodeIndexBuffer",
169
169
  INDICES: "meshopt_decodeIndexSequence"
170
170
  }, k = [], M = 0;
171
- function m(r) {
171
+ function m(d) {
172
172
  var h = {
173
- object: new Worker(r),
173
+ object: new Worker(d),
174
174
  pending: 0,
175
175
  requests: {}
176
176
  };
177
- return h.object.onmessage = function(f) {
178
- var g = f.data;
177
+ return h.object.onmessage = function(l) {
178
+ var g = l.data;
179
179
  h.pending -= g.count, h.requests[g.id][g.action](g.value), delete h.requests[g.id];
180
180
  }, h;
181
181
  }
182
- function o(r) {
183
- for (var h = "self.ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(l(s)) + "]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = " + d.name + ";" + p.toString() + d.toString(), f = new Blob([h], { type: "text/javascript" }), g = URL.createObjectURL(f), u = k.length; u < r; ++u)
182
+ function r(d) {
183
+ for (var h = "self.ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(f(s)) + "]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = " + o.name + ";" + p.toString() + o.toString(), l = new Blob([h], { type: "text/javascript" }), g = URL.createObjectURL(l), u = k.length; u < d; ++u)
184
184
  k[u] = m(g);
185
- for (var u = r; u < k.length; ++u)
185
+ for (var u = d; u < k.length; ++u)
186
186
  k[u].object.postMessage({});
187
- k.length = r, URL.revokeObjectURL(g);
188
- }
189
- function c(r, h, f, g, u) {
190
- for (var w = k[0], v = 1; v < k.length; ++v)
191
- k[v].pending < w.pending && (w = k[v]);
192
- return new Promise(function(A, x) {
193
- var D = new Uint8Array(f), I = ++M;
194
- w.pending += r, w.requests[I] = { resolve: A, reject: x }, w.object.postMessage({ id: I, count: r, size: h, source: D, mode: g, filter: u }, [D.buffer]);
187
+ k.length = d, URL.revokeObjectURL(g);
188
+ }
189
+ function n(d, h, l, g, u) {
190
+ for (var w = k[0], x = 1; x < k.length; ++x)
191
+ k[x].pending < w.pending && (w = k[x]);
192
+ return new Promise(function(A, v) {
193
+ var D = new Uint8Array(l), I = ++M;
194
+ w.pending += d, w.requests[I] = { resolve: A, reject: v }, w.object.postMessage({ id: I, count: d, size: h, source: D, mode: g, filter: u }, [D.buffer]);
195
195
  });
196
196
  }
197
- function d(r) {
198
- var h = r.data;
197
+ function o(d) {
198
+ var h = d.data;
199
199
  if (!h.id)
200
200
  return self.close();
201
- self.ready.then(function(f) {
201
+ self.ready.then(function(l) {
202
202
  try {
203
203
  var g = new Uint8Array(h.count * h.size);
204
- p(f, f.exports[h.mode], g, h.count, h.size, h.source, f.exports[h.filter]), self.postMessage({ id: h.id, count: h.count, action: "resolve", value: g }, [g.buffer]);
204
+ p(l, l.exports[h.mode], g, h.count, h.size, h.source, l.exports[h.filter]), self.postMessage({ id: h.id, count: h.count, action: "resolve", value: g }, [g.buffer]);
205
205
  } catch (u) {
206
206
  self.postMessage({ id: h.id, count: h.count, action: "reject", value: u });
207
207
  }
208
208
  });
209
209
  }
210
210
  return {
211
- ready: n,
211
+ ready: c,
212
212
  supported: !0,
213
- useWorkers: function(r) {
214
- o(r);
213
+ useWorkers: function(d) {
214
+ r(d);
215
215
  },
216
- decodeVertexBuffer: function(r, h, f, g, u) {
217
- p(i, i.exports.meshopt_decodeVertexBuffer, r, h, f, g, i.exports[j[u]]);
216
+ decodeVertexBuffer: function(d, h, l, g, u) {
217
+ p(i, i.exports.meshopt_decodeVertexBuffer, d, h, l, g, i.exports[j[u]]);
218
218
  },
219
- decodeIndexBuffer: function(r, h, f, g) {
220
- p(i, i.exports.meshopt_decodeIndexBuffer, r, h, f, g);
219
+ decodeIndexBuffer: function(d, h, l, g) {
220
+ p(i, i.exports.meshopt_decodeIndexBuffer, d, h, l, g);
221
221
  },
222
- decodeIndexSequence: function(r, h, f, g) {
223
- p(i, i.exports.meshopt_decodeIndexSequence, r, h, f, g);
222
+ decodeIndexSequence: function(d, h, l, g) {
223
+ p(i, i.exports.meshopt_decodeIndexSequence, d, h, l, g);
224
224
  },
225
- decodeGltfBuffer: function(r, h, f, g, u, w) {
226
- p(i, i.exports[P[u]], r, h, f, g, i.exports[j[w]]);
225
+ decodeGltfBuffer: function(d, h, l, g, u, w) {
226
+ p(i, i.exports[P[u]], d, h, l, g, i.exports[j[w]]);
227
227
  },
228
- decodeGltfBufferAsync: function(r, h, f, g, u) {
229
- return k.length > 0 ? c(r, h, f, P[g], j[u]) : n.then(function() {
230
- var w = new Uint8Array(r * h);
231
- return p(i, i.exports[P[g]], w, r, h, f, i.exports[j[u]]), w;
228
+ decodeGltfBufferAsync: function(d, h, l, g, u) {
229
+ return k.length > 0 ? n(d, h, l, P[g], j[u]) : c.then(function() {
230
+ var w = new Uint8Array(d * h);
231
+ return p(i, i.exports[P[g]], w, d, h, l, i.exports[j[u]]), w;
232
232
  });
233
233
  }
234
234
  };
235
235
  })();
236
236
  (function() {
237
- var t = "b9H79Tebbbe9Ek9Geueu9Geub9Gbb9GPuuuuuuuuuuu99uueu9Gvuuuuub9Gluuuub9Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuizsdilvoirwDbqqbeqlve9Weiiviebeoweuec:G;jekr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bl8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bvQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7boX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbra9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbwl79IV9RbDDwebcekdxmq::9Usdbk;i6iKuY99Ou8Jjjjjbc;W;ab9RgP8KjjjjbaPcwfcbc;Kbz:ljjjb8AaPcualcefgscdtascFFFFi0Ecbyd1:jjjbHjjjjbbgzBdwaPceBd9OaPazBdbaPcuadcitadcFFFFe0Ecbyd1:jjjbHjjjjbbgHBdxaPcdBd9OaPaHBdlaPaeadalcbz:cjjjbaPcualcdtgOalcFFFFi0EgAcbyd1:jjjbHjjjjbbgCBdzaPciBd9OaPaAcbyd1:jjjbHjjjjbbgXBdCaPclBd9Oalcd4alfhQcehLinaLgscethLasaQ6mbkcbhKaPcuascdtgLascFFFFi0Ecbyd1:jjjbHjjjjbbgQBdKaPcvBd9OaQcFeaLz:ljjjbhYdnalTmbavcd4h8AascufhEinaiaKa8A2cdtfg3ydlgscH4as7c:F:b:DD2a3ydbgscH4as7c;D;O:B8J27a3ydwgscH4as7c:3F;N8N27hQcbhsdndninaYaQaEGgQcdtfg5ydbgLcuSmeaiaLa8A2cdtfa3cxz:ojjjbTmdascefgsaQfhQasaE9nmbxdkka5aKBdbaKhLkaCaKcdtfaLBdbaKcefgKal9hmbkcbhsaXhLinaLasBdbaLclfhLalascefgs9hmbkcbhsaChLaXhQindnasaLydbgESmbaQaXaEcdtfgEydbBdbaEasBdbkaLclfhLaQclfhQalascefgs9hmbkkcbh8EaYcbyd:m:jjjbH:bjjjbbaPclBd9OaPalcbyd1:jjjbHjjjjbbgEBdKaPcvBd9OaPaAcbyd1:jjjbHjjjjbbgsBd3aPcoBd9OaPaAcbyd1:jjjbHjjjjbbgLBdaaPcrBd9OascFeaOz:ljjjbh8FaLcFeaOz:ljjjbhadnalTmbaHcwfhhindnaza8EgQcefg8Ecdtfydbg3azaQcdtgsfydbgLSmba3aL9RhOaHaLcitfhgaaasfh8Ja8FasfhKcbh8Aindndnaga8Acitfydbg5aQ9hmbaKaQBdba8JaQBdbxekdnaza5cdtg8KfgsclfydbgLasydbgsSmbaHascitg3fydbaQSmeaLas9Rh8Lascu7aLfhYaha3fhLcbhsinaYasSmeascefhsaLydbh3aLcwfhLa3aQ9hmbkasa8L6mekaaa8KfgsaQa5asydbcuSEBdbaKa5aQaKydbcuSEBdbka8Acefg8AaO9hmbkka8Eal9hmbkaChLaXhQaah3a8Fh8AcbhsindndnasaLydbg59hmbdnasaQydbg59hmba8Aydbh5dna3ydbgYcu9hmba5cu9hmbaEasfcb86bbxikaEasfhKdnasaYSmbasa5SmbaKce86bbxikaKcl86bbxdkdnasaXa5cdtgYfydb9hmbdna3ydbgKcuSmbasaKSmba8AydbgOcuSmbasaOSmbaaaYfydbggcuSmbaga5Smba8FaYfydbgYcuSmbaYa5SmbdnaCaKcdtfydbaCaYcdtfydb9hmbaCaOcdtfydbaCagcdtfydb9hmbaEasfcd86bbxlkaEasfcl86bbxikaEasfcl86bbxdkaEasfcl86bbxekaEasfaEa5fRbb86bbkaLclfhLaQclfhQa3clfh3a8Aclfh8Aalascefgs9hmbkaxceGTmbaEhsalhLindnasRbbce9hmbascl86bbkascefhsaLcufgLmbkkcualcx2alc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8JaPcwfaPyd9Ogscdtfa8JBdbaPascefgOBd9Oa8Jaialavz:djjjbdndnaDmbcbhvxekcbh5aPcwfaOcdtfcuaDal2gLcdtaLcFFFFi0Ecbyd1:jjjbHjjjjbbgvBdbaPascdfgOBd9OalTmbarcd4cdthYaDcdthKavh8AinaohsawhLa8AhQaDh3inaQasIdbaLIdbNUdbasclfhsaLclfhLaQclfhQa3cufg3mbkaoaYfhoa8AaKfh8Aa5cefg5al9hmbkkaPcwfaOcdtfcualc8S2gsalc;D;O;f8U0EgQcbyd1:jjjbHjjjjbbgLBdbaPaOcefg3Bd9OaLcbasz:ljjjbh8EdndndnaDTmbaPcwfa3cdtfaQcbyd1:jjjbHjjjjbbgoBdbaPaOcdfgLBd9Oaocbasz:ljjjb8AaPcwfaLcdtfcuaDal2gscltgLascFFFFb0Ecbyd1:jjjbHjjjjbbgwBdbaPaOcifBd9OawcbaLz:ljjjb8AadmexdkcbhocbhwadTmekcbh8AaehLindna8JaLclfydbg5cx2fgsIdba8JaLydbgYcx2fgQIdbg8M:tg8Na8JaLcwfydbgKcx2fg3IdlaQIdlgy:tg8PNa3Idba8M:tgIasIdlay:tg8RN:tg8Sa8SNa8Ra3IdwaQIdwgR:tg8UNa8PasIdwaR:tg8RN:tg8Pa8PNa8RaINa8Ua8NN:tg8Na8NNMM:rgIJbbbb9ETmba8SaI:vh8Sa8NaI:vh8Na8PaI:vh8Pka8EaCaYcdtfydbc8S2fgsa8PaI:rgIa8PNNg8RasIdbMUdbasa8NaIa8NNg8VNg8UasIdlMUdlasa8SaIa8SNg8WNg8XasIdwMUdwasa8Va8PNg8VasIdxMUdxasa8Wa8PNg8YasIdzMUdzasa8Wa8NNg8WasIdCMUdCasa8PaIa8SaRNa8Pa8MNaya8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asa8Sa8MNg8SasIdaMUdaasa8MayNg8MasId8KMUd8KasaIasIdyMUdya8EaCa5cdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdya8EaCaKcdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdyaLcxfhLa8Acifg8Aad6mbkcbh5aehYincbhLinaEaeaLc:G1jjbfydba5fcdtfydbgQfRbbhsdndnaEaYaLfydbg3fRbbg8Ac99fcFeGcpe0mbasceSmbascd9hmekdna8AcufcFeGce0mba8Fa3cdtfydbaQ9hmekdnascufcFeGce0mbaaaQcdtfydba39hmekdna8Acv2asfc:W1jjbfRbbTmbaCaQcdtfydbaCa3cdtfydb0mekJbbacJbbjZasceSEhIa8AceShOa8JaeaLc:K1jjbfydba5fcdtfydbcx2fhsdna8JaQcx2fg8AIdwa8Ja3cx2fgKIdwgy:tg8Pa8PNa8AIdbaKIdbgR:tg8Na8NNa8AIdlaKIdlg8R:tg8Sa8SNMM:rg8MJbbbb9ETmba8Pa8M:vh8Pa8Sa8M:vh8Sa8Na8M:vh8NkJbbacaIaOEh8WdnasIdway:tgIa8PaIa8PNasIdbaR:tg8Xa8NNa8SasIdla8R:tg8VNMMg8UN:tgIaINa8Xa8Na8UN:tg8Pa8PNa8Va8Sa8UN:tg8Na8NNMM:rg8SJbbbb9ETmbaIa8S:vhIa8Na8S:vh8Na8Pa8S:vh8Pka8EaCa3cdtfydbc8S2fgsa8Pa8Wa8MNg8Sa8PNNg8UasIdbMUdbasa8Na8Sa8NNg8WNg8XasIdlMUdlasaIa8SaINg8MNg8VasIdwMUdwasa8Wa8PNg8WasIdxMUdxasa8Ma8PNg8YasIdzMUdzasa8Ma8NNg8ZasIdCMUdCasa8Pa8SaIayNa8PaRNa8Ra8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asaIa8MNgIasIdaMUdaasa8MayNg8MasId8KMUd8Kasa8SasIdyMUdya8EaCaQcdtfydbc8S2fgsa8UasIdbMUdbasa8XasIdlMUdlasa8VasIdwMUdwasa8WasIdxMUdxasa8YasIdzMUdzasa8ZasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asaIasIdaMUdaasa8MasId8KMUd8Kasa8SasIdyMUdykaLclfgLcx9hmbkaYcxfhYa5cifg5ad6mbkaDTmbcbhYinJbbbbhRa8JaeaYcdtfgsclfydbgKcx2fgLIdwa8JasydbgOcx2fgQIdwg8V:tg8Na8NNaLIdbaQIdbg8Y:tgIaINaLIdlaQIdlg8Z:tg8Sa8SNMMg8Wa8Jascwfydbggcx2fgsIdwa8V:tg8MNa8Na8Na8MNaIasIdba8Y:tgyNa8SasIdla8Z:tg8RNMMg8PN:tJbbbbJbbjZa8Wa8Ma8MNayayNa8Ra8RNMMg8XNa8Pa8PN:tg8U:va8UJbbbb9BEg8UNh80a8Xa8NNa8Ma8PN:ta8UNh81a8Wa8RNa8Sa8PN:ta8UNhBa8Xa8SNa8Ra8PN:ta8UNh83a8WayNaIa8PN:ta8UNhUa8XaINaya8PN:ta8UNh85aIa8RNaya8SN:tg8Pa8PNa8Sa8MNa8Ra8NN:tg8Pa8PNa8NayNa8MaIN:tg8Pa8PNMM:r:rh8PavaOaD2cdtfhLavagaD2cdtfhQavaKaD2cdtfh3a8V:mh86a8Z:mh87a8Y:mh88cbh8AaDh5Jbbbbh8RJbbbbh8UJbbbbh8WJbbbbh8XJbbbbh8VJbbbbh8YJbbbbh8ZJbbbbh89Jbbbbh8:inaPc;Wbfa8Afgscwfa8Pa81a3IdbaLIdbg8M:tg8SNa80aQIdba8M:tgyNMg8NNUdbasclfa8Pa83a8SNaBayNMgINUdbasa8Pa85a8SNaUayNMg8SNUdbascxfa8Pa86a8NNa87aINa8Ma88a8SNMMMg8MNUdba8Pa8NaINNa8XMh8Xa8Pa8Na8SNNa8VMh8Va8PaIa8SNNa8YMh8Ya8Pa8Ma8MNNaRMhRa8Pa8Na8MNNa8RMh8Ra8PaIa8MNNa8UMh8Ua8Pa8Sa8MNNa8WMh8Wa8Pa8Na8NNNa8ZMh8Za8PaIaINNa89Mh89a8Pa8Sa8SNNa8:Mh8:aLclfhLa3clfh3aQclfhQa8Aczfh8Aa5cufg5mbkaoaCaOcdtfydbgLc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCaKcdtfydbgKc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCagcdtfydbgOc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyawaLaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaKaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaOaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkaYcifgYad6mbkkdnabaeSmbabaeadcdtz:kjjjb8AkaPydbhZcbhsdnalTmbaZclfhsaZydbh3aEhLalh8AcbhQincbasydbg5a39RaLRbbcpeGEaQfhQaLcefhLasclfhsa5h3a8Acufg8AmbkaQce4hskcuadas9Rcifgrcx2arc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8LaPcwfaPyd9Ogscdtfa8LBdbaPascefgLBd9OaPcwfaLcdtfcuarcdtarcFFFFi0Ecbyd1:jjjbHjjjjbbgxBdbaPascdfgLBd9OaPcwfaLcdtfaAcbyd1:jjjbHjjjjbbgHBdbaPascifgLBd9OaPcwfaLcdtfalcbyd1:jjjbHjjjjbbgnBdbaPasclfBd9OJbbbbh8Ydnadaq9nmbdnarci6mbakakNh8VaDclthca8Lcwfh9cJbbbbh8YinaPabadghalaCz:cjjjbabhOcbhzcbhKincbhsindnaCaOasfydbgQcdtgYfydbg8AaCabasc;m1jjbfydbaKfcdtfydbgLcdtfydbg5SmbaEaLfRbbgecv2aEaQfRbbg3fc;G1jjbfRbbg8Ka3cv2aefggc;G1jjbfRbbgiVcFeGTmbdnagc:W1jjbfRbbTmba5a8A0mekdna3ae9hmba3cufcFeGce0mba8FaYfydbaL9hmeka8Lazcx2fg3aLaQaicFeGg8AEBdla3aQaLa8AEBdba3a8Aa8KGcb9hBdwazcefhzkasclfgscx9hmbkdnaKcifgKah9pmbaOcxfhOazcifar9nmekkdnazmbahhdxikcbheinJbbbbJbbjZa8EaCa8Laecx2fg3ydlg8Aa3ydbg5a3ydwgLEgKcdtfydbg8Kc8S2gifgsIdyg8P:va8PJbbbb9BEasIdwa8Ja5a8AaLEgYcx2fgLIdwg8SNasIdzaLIdbg8MNasIdaMg8Pa8PMMa8SNasIdlaLIdlgyNasIdCa8SNasId3Mg8Pa8PMMayNasIdba8MNasIdxayNasIdKMg8Pa8PMMa8MNasId8KMMM:lNh8WJbbbbJbbjZa8EaCa5cdtfydbgdc8S2gQfgsIdyg8P:va8PJbbbb9BEasIdwa8Ja8Acx2fgLIdwgINasIdzaLIdbgRNasIdaMg8Pa8PMMaINasIdlaLIdlg8RNasIdCaINasId3Mg8Pa8PMMa8RNasIdbaRNasIdxa8RNasIdKMg8Pa8PMMaRNasId8KMMM:lNh8Xa3cwfhOa3clfhgdnaDTmbaoaQfgQIdwaINaQIdzaRNaQIdaMg8Pa8PMMaINaQIdla8RNaQIdCaINaQId3Mg8Pa8PMMa8RNaQIdbaRNaQIdxa8RNaQIdKMg8Pa8PMMaRNaQId8KMMMh8Nava8AaD2cdtfhLawadaD2cltfhsaQIdyh8UaDhQinaLIdbg8PJbbb;aNascxfIdbaIascwfIdbNaRasIdbNa8RasclfIdbNMMMNa8Pa8PNa8UNa8NMMh8NaLclfhLasczfhsaQcufgQmbkaoaifgQIdwa8SNaQIdza8MNaQIdaMg8Pa8PMMa8SNaQIdlayNaQIdCa8SNaQId3Mg8Pa8PMMayNaQIdba8MNaQIdxayNaQIdKMg8Pa8PMMa8MNaQId8KMMMhIavaYaD2cdtfhLawa8KaD2cltfhsaQIdyhRaDhQinaLIdbg8PJbbb;aNascxfIdba8SascwfIdbNa8MasIdbNayasclfIdbNMMMNa8Pa8PNaRNaIMMhIaLclfhLasczfhsaQcufgQmbka8WaI:lMh8Wa8Xa8N:lMh8Xkaga8AaYa8Xa8W9FgsEBdba3a5aKasEBdbaOa8Xa8WasEUdbaecefgeaz9hmbkaPc;Wbfcbcj;abz:ljjjb8Aa9chsazhLinaPc;WbfasydbcO4c;8ZGfgQaQydbcefBdbascxfhsaLcufgLmbkcbhscbhLinaPc;WbfasfgQydbh3aQaLBdba3aLfhLasclfgscj;ab9hmbkcbhsa9chLinaPc;WbfaLydbcO4c;8ZGfgQaQydbgQcefBdbaxaQcdtfasBdbaLcxfhLazascefgs9hmbkahaq9RgQci9UhJdnalTmbcbhsaHhLinaLasBdbaLclfhLalascefgs9hmbkkcbh9eancbalz:ljjjbhTaQcO9UhSaJce4h9haPydlh9icbhicbhgdnina8Laxagcdtfydbcx2fgOIdwg8Na8V9EmeaiaJ9pmeJFFuuh8Pdna9haz9pmba8Laxa9hcdtfydbcx2fIdwJbb;aZNh8Pkdna8Na8P9ETmbaiaS0mdkdnaTaCaOydlg6cdtg9kfydbg3fg0RbbaTaCaOydbgKcdtg9mfydbg9nfg9oRbbVmbdnaZa9ncdtfgsclfydbgLasydbgsSmbaLas9Rh5a9iascitfhsa8Ja3cx2fgYcwfhdaYclfhAa8Ja9ncx2fg8Kcwfh9pa8Kclfh9qcbhLcehednindnaHasydbcdtfydbgQa3SmbaHasclfydbcdtfydbg8Aa3SmbaQa8ASmba8Ja8Acx2fg8AIdba8JaQcx2fgQIdbgI:tg8Pa9qIdbaQIdlg8S:tg8MNa8KIdbaI:tgya8AIdla8S:tg8NN:ta8PaAIdba8S:tgRNaYIdbaI:tg8Ra8NN:tNa8Na9pIdbaQIdwg8S:tg8UNa8Ma8AIdwa8S:tgIN:ta8NadIdba8S:tg8SNaRaIN:tNaIayNa8Ua8PN:taIa8RNa8Sa8PN:tNMMJbbbb9FmdkascwfhsaLcefgLa56hea5aL9hmbkkaeceGTmba9hcefh9hxeka8Ea3c8S2gQfgsa8Ea9nc8S2g8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdydnaDTmbaoaQfgsaoa8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdyaca9n2heaca32hYawhLaDh8AinaLaYfgsaLaefgQIdbasIdbMUdbasclfg5aQclfIdba5IdbMUdbascwfg5aQcwfIdba5IdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa8Acufg8AmbkkaOcwfhLdndndndnaEaKfgQRbbc9:fPdebdkaKhsinaHascdtgsfa3BdbaXasfydbgsaK9hmbxikkaXa9kfydbhsaXa9mfydbhKaHa9mfa6Bdbash6kaHaKcdtfa6Bdbka9oce86bba0ce86bbaLIdbg8Pa8Ya8Ya8P9DEh8Ya9ecefh9ececdaQRbbceSEaifhikagcefggaz9hmbkkdna9embahhdxikdnalTmbcbhLa8FhsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmba8Fa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkcbhLaahsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmbaaa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkkcbhdabhscbh8AindnaHasydbcdtfydbgLaHasclfydbcdtfydbgQSmbaLaHascwfydbcdtfydbg3SmbaQa3Smbabadcdtfg5aLBdba5clfaQBdba5cwfa3Bdbadcifhdkascxfhsa8Acifg8Aah6mbkadaq9nmdxbkkaPabadalaCz:cjjjbkdnamTmbama8Y:rUdbkaPyd9OgscdtaPcwffc98fhCdninasTmeaCydbcbyd:m:jjjbH:bjjjbbaCc98fhCascufhsxbkkaPc;W;abf8Kjjjjbadk;:ieouabydlhvabydbclfcbaicdtz:ljjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbarcearce0EhdinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfheadcufgdmbkkabydbcbBdbk:Zldouv998Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdnadTmbaicd4hvdnabTmbavcdthocbhraehwinabarcx2fgiaearav2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinalczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawaofhwarcefgrad9hmbxdkkavcdthrcbhwincbhiinalczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbkkdnabTmbadTmbJbbbbJbbjZalIdbalIdzgk:tJbbbb:xgqalIdlalIdCgx:tgmamaq9DEgqalIdwalIdKgm:tgPaPaq9DEgq:vaqJbbbb9BEhqinabaqabIdbak:tNUdbabclfgiaqaiIdbax:tNUdbabcwfgiaqaiIdbam:tNUdbabcxfhbadcufgdmbkkk8KbabaeadaialavcbcbcbcbaoarawaDz:bjjjbk8KbabaeadaialavaoarawaDaqakaxamz:bjjjbk;lOowud99wue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcwfcbc;Kbz:ljjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbgqBdwawceBd9Oaqaeadaiz:djjjbawcuadcdtadcFFFFi0Egkcbyd1:jjjbHjjjjbbgxBdxawcdBd9Oadcd4adfhmceheinaegicetheaiam6mbkcbhmawcuaicdtgPaicFFFFi0Ecbyd1:jjjbHjjjjbbgsBdzawciBd9Odndnar:Zgz:rJbbbZMgH:lJbbb9p9DTmbaH:Ohexekcjjjj94hekaicufhOc:bwhAcbhCcbhXadhQinaChLaeaAgKcufaeaK9iEamgDcefaeaD9kEhYdndnadTmbaYcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbh3cbh5indnaEaxa5cdtfydbgAcm4aA7c:v;t;h;Ev2gics4ai7aOGgmcdtfgCydbgecuSmbaeaASmbcehiinaEamaifaOGgmcdtfgCydbgecuSmeaicefhiaeaA9hmbkkaCaABdba3aecuSfh3a5cefg5ad9hmbxdkkascFeaPz:ljjjb8Acbh3kaDaYa3ar0giEhmaLa3aiEhCdna3arSmbaYaKaiEgAam9Rcd9imbdndnaXcl0mbdnaQ:ZgHaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa3:Zghaz:tNNNaHaz:taaNa8Aah:tNa8Aaz:ta8FNahaH:tNM:va8EMJbbbZMgH:lJbbb9p9DTmbaH:Ohexdkcjjjj94hexekamaAfcd9Theka3aQaiEhQaXcefgXcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd1:jjjbHjjjjbbg5BdCawclBd9OdndnadTmbamcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbhDcbh3inaxa3cdtgYfydbgAcm4aA7c:v;t;h;Ev2gics4ai7hecbhidndninaEaeaOGgmcdtfgCydbgecuSmednaxaecdtgCfydbaASmbaicefgiamfheaiaO9nmekka5aCfydbhixekaCa3BdbaDhiaDcefhDka5aYfaiBdba3cefg3ad9hmbkcuaDc32giaDc;j:KM;jb0EhexekascFeaPz:ljjjb8AcbhDcbhekawaecbyd1:jjjbHjjjjbbgeBdKawcvBd9Oaecbaiz:ljjjbhOavcd4hxdnadTmbaxcdth3a5hmalhAaqheadhEinaOamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaAc;81jjbalEgCIdbaiIdxMUdxaiaCIdlaiIdzMUdzaiaCIdwaiIdCMUdCaiaiIdKJbbjZMUdKamclfhmaAa3fhAaecxfheaEcufgEmbkkdnaDTmbaOcxfhiaDheinaictfgmamIdbJbbbbJbbjZaicxfIdbgH:vaHJbbbb9BEgHNUdbaic94fgmaHamIdbNUdbaic98fgmaHamIdbNUdbaiaHaiIdbNUdbaiclfgmaHamIdbNUdbaicwfgmaHamIdbNUdbaic3fhiaecufgembkkcbhAawcuaDcdtgYaDcFFFFi0Egicbyd1:jjjbHjjjjbbgeBd3awcoBd9Oawaicbyd1:jjjbHjjjjbbgEBdaaecFeaYz:ljjjbh3dnadTmbaoaoNh8Aaxcdthxalheina8Aaec;81jjbalEgmIdwaOa5ydbgCc32fgiIdC:tgHaHNamIdbaiIdx:tgHaHNamIdlaiIdz:tgHaHNMMNaqcwfIdbaiIdw:tgHaHNaqIdbaiIdb:tgHaHNaqclfIdbaiIdl:tgHaHNMMMhHdndna3aCcdtgifgmydbcuSmbaEaifIdbaH9ETmekamaABdbaEaifaHUdbka5clfh5aeaxfheaqcxfhqadaAcefgA9hmbkkaba3aYz:kjjjb8AcrhikaicdthiinaiTmeaic98fgiawcwffydbcbyd:m:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Qdidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgoaDIdbgrarao9EEUdbaladfgDaoaDIdbgrarao9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkavJbbbb:xgvaoaoav9DEgoararao9DEk9DeeuabcFeaicdtz:ljjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk6eiucbhidnadTmbdninabRbbglaeRbbgv9hmeaecefheabcefhbadcufgdmbxdkkalav9Rhikaikk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbebbbdbbbbbbbebbbeeebeebebbeeebebbbbbebebbbbbebbbdbbbbbbbbbbbbbbbeeeeebebbbbbebbbbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:G9Kbb", a = new Uint8Array([32, 0, 65, 2, 1, 106, 34, 33, 3, 128, 11, 4, 13, 64, 6, 253, 10, 7, 15, 116, 127, 5, 8, 12, 40, 16, 19, 54, 20, 9, 27, 255, 113, 17, 42, 67, 24, 23, 146, 148, 18, 14, 22, 45, 70, 69, 56, 114, 101, 21, 25, 63, 75, 136, 108, 28, 118, 29, 73, 115]);
237
+ var e = "b9H79Tebbbe9Ek9Geueu9Geub9Gbb9GPuuuuuuuuuuu99uueu9Gvuuuuub9Gluuuub9Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuizsdilvoirwDbqqbeqlve9Weiiviebeoweuec:G;jekr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bl8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bvQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7boX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbra9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbwl79IV9RbDDwebcekdxmq::9Usdbk;i6iKuY99Ou8Jjjjjbc;W;ab9RgP8KjjjjbaPcwfcbc;Kbz:ljjjb8AaPcualcefgscdtascFFFFi0Ecbyd1:jjjbHjjjjbbgzBdwaPceBd9OaPazBdbaPcuadcitadcFFFFe0Ecbyd1:jjjbHjjjjbbgHBdxaPcdBd9OaPaHBdlaPaeadalcbz:cjjjbaPcualcdtgOalcFFFFi0EgAcbyd1:jjjbHjjjjbbgCBdzaPciBd9OaPaAcbyd1:jjjbHjjjjbbgXBdCaPclBd9Oalcd4alfhQcehLinaLgscethLasaQ6mbkcbhKaPcuascdtgLascFFFFi0Ecbyd1:jjjbHjjjjbbgQBdKaPcvBd9OaQcFeaLz:ljjjbhYdnalTmbavcd4h8AascufhEinaiaKa8A2cdtfg3ydlgscH4as7c:F:b:DD2a3ydbgscH4as7c;D;O:B8J27a3ydwgscH4as7c:3F;N8N27hQcbhsdndninaYaQaEGgQcdtfg5ydbgLcuSmeaiaLa8A2cdtfa3cxz:ojjjbTmdascefgsaQfhQasaE9nmbxdkka5aKBdbaKhLkaCaKcdtfaLBdbaKcefgKal9hmbkcbhsaXhLinaLasBdbaLclfhLalascefgs9hmbkcbhsaChLaXhQindnasaLydbgESmbaQaXaEcdtfgEydbBdbaEasBdbkaLclfhLaQclfhQalascefgs9hmbkkcbh8EaYcbyd:m:jjjbH:bjjjbbaPclBd9OaPalcbyd1:jjjbHjjjjbbgEBdKaPcvBd9OaPaAcbyd1:jjjbHjjjjbbgsBd3aPcoBd9OaPaAcbyd1:jjjbHjjjjbbgLBdaaPcrBd9OascFeaOz:ljjjbh8FaLcFeaOz:ljjjbhadnalTmbaHcwfhhindnaza8EgQcefg8Ecdtfydbg3azaQcdtgsfydbgLSmba3aL9RhOaHaLcitfhgaaasfh8Ja8FasfhKcbh8Aindndnaga8Acitfydbg5aQ9hmbaKaQBdba8JaQBdbxekdnaza5cdtg8KfgsclfydbgLasydbgsSmbaHascitg3fydbaQSmeaLas9Rh8Lascu7aLfhYaha3fhLcbhsinaYasSmeascefhsaLydbh3aLcwfhLa3aQ9hmbkasa8L6mekaaa8KfgsaQa5asydbcuSEBdbaKa5aQaKydbcuSEBdbka8Acefg8AaO9hmbkka8Eal9hmbkaChLaXhQaah3a8Fh8AcbhsindndnasaLydbg59hmbdnasaQydbg59hmba8Aydbh5dna3ydbgYcu9hmba5cu9hmbaEasfcb86bbxikaEasfhKdnasaYSmbasa5SmbaKce86bbxikaKcl86bbxdkdnasaXa5cdtgYfydb9hmbdna3ydbgKcuSmbasaKSmba8AydbgOcuSmbasaOSmbaaaYfydbggcuSmbaga5Smba8FaYfydbgYcuSmbaYa5SmbdnaCaKcdtfydbaCaYcdtfydb9hmbaCaOcdtfydbaCagcdtfydb9hmbaEasfcd86bbxlkaEasfcl86bbxikaEasfcl86bbxdkaEasfcl86bbxekaEasfaEa5fRbb86bbkaLclfhLaQclfhQa3clfh3a8Aclfh8Aalascefgs9hmbkaxceGTmbaEhsalhLindnasRbbce9hmbascl86bbkascefhsaLcufgLmbkkcualcx2alc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8JaPcwfaPyd9Ogscdtfa8JBdbaPascefgOBd9Oa8Jaialavz:djjjbdndnaDmbcbhvxekcbh5aPcwfaOcdtfcuaDal2gLcdtaLcFFFFi0Ecbyd1:jjjbHjjjjbbgvBdbaPascdfgOBd9OalTmbarcd4cdthYaDcdthKavh8AinaohsawhLa8AhQaDh3inaQasIdbaLIdbNUdbasclfhsaLclfhLaQclfhQa3cufg3mbkaoaYfhoa8AaKfh8Aa5cefg5al9hmbkkaPcwfaOcdtfcualc8S2gsalc;D;O;f8U0EgQcbyd1:jjjbHjjjjbbgLBdbaPaOcefg3Bd9OaLcbasz:ljjjbh8EdndndnaDTmbaPcwfa3cdtfaQcbyd1:jjjbHjjjjbbgoBdbaPaOcdfgLBd9Oaocbasz:ljjjb8AaPcwfaLcdtfcuaDal2gscltgLascFFFFb0Ecbyd1:jjjbHjjjjbbgwBdbaPaOcifBd9OawcbaLz:ljjjb8AadmexdkcbhocbhwadTmekcbh8AaehLindna8JaLclfydbg5cx2fgsIdba8JaLydbgYcx2fgQIdbg8M:tg8Na8JaLcwfydbgKcx2fg3IdlaQIdlgy:tg8PNa3Idba8M:tgIasIdlay:tg8RN:tg8Sa8SNa8Ra3IdwaQIdwgR:tg8UNa8PasIdwaR:tg8RN:tg8Pa8PNa8RaINa8Ua8NN:tg8Na8NNMM:rgIJbbbb9ETmba8SaI:vh8Sa8NaI:vh8Na8PaI:vh8Pka8EaCaYcdtfydbc8S2fgsa8PaI:rgIa8PNNg8RasIdbMUdbasa8NaIa8NNg8VNg8UasIdlMUdlasa8SaIa8SNg8WNg8XasIdwMUdwasa8Va8PNg8VasIdxMUdxasa8Wa8PNg8YasIdzMUdzasa8Wa8NNg8WasIdCMUdCasa8PaIa8SaRNa8Pa8MNaya8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asa8Sa8MNg8SasIdaMUdaasa8MayNg8MasId8KMUd8KasaIasIdyMUdya8EaCa5cdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdya8EaCaKcdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdyaLcxfhLa8Acifg8Aad6mbkcbh5aehYincbhLinaEaeaLc:G1jjbfydba5fcdtfydbgQfRbbhsdndnaEaYaLfydbg3fRbbg8Ac99fcFeGcpe0mbasceSmbascd9hmekdna8AcufcFeGce0mba8Fa3cdtfydbaQ9hmekdnascufcFeGce0mbaaaQcdtfydba39hmekdna8Acv2asfc:W1jjbfRbbTmbaCaQcdtfydbaCa3cdtfydb0mekJbbacJbbjZasceSEhIa8AceShOa8JaeaLc:K1jjbfydba5fcdtfydbcx2fhsdna8JaQcx2fg8AIdwa8Ja3cx2fgKIdwgy:tg8Pa8PNa8AIdbaKIdbgR:tg8Na8NNa8AIdlaKIdlg8R:tg8Sa8SNMM:rg8MJbbbb9ETmba8Pa8M:vh8Pa8Sa8M:vh8Sa8Na8M:vh8NkJbbacaIaOEh8WdnasIdway:tgIa8PaIa8PNasIdbaR:tg8Xa8NNa8SasIdla8R:tg8VNMMg8UN:tgIaINa8Xa8Na8UN:tg8Pa8PNa8Va8Sa8UN:tg8Na8NNMM:rg8SJbbbb9ETmbaIa8S:vhIa8Na8S:vh8Na8Pa8S:vh8Pka8EaCa3cdtfydbc8S2fgsa8Pa8Wa8MNg8Sa8PNNg8UasIdbMUdbasa8Na8Sa8NNg8WNg8XasIdlMUdlasaIa8SaINg8MNg8VasIdwMUdwasa8Wa8PNg8WasIdxMUdxasa8Ma8PNg8YasIdzMUdzasa8Ma8NNg8ZasIdCMUdCasa8Pa8SaIayNa8PaRNa8Ra8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asaIa8MNgIasIdaMUdaasa8MayNg8MasId8KMUd8Kasa8SasIdyMUdya8EaCaQcdtfydbc8S2fgsa8UasIdbMUdbasa8XasIdlMUdlasa8VasIdwMUdwasa8WasIdxMUdxasa8YasIdzMUdzasa8ZasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asaIasIdaMUdaasa8MasId8KMUd8Kasa8SasIdyMUdykaLclfgLcx9hmbkaYcxfhYa5cifg5ad6mbkaDTmbcbhYinJbbbbhRa8JaeaYcdtfgsclfydbgKcx2fgLIdwa8JasydbgOcx2fgQIdwg8V:tg8Na8NNaLIdbaQIdbg8Y:tgIaINaLIdlaQIdlg8Z:tg8Sa8SNMMg8Wa8Jascwfydbggcx2fgsIdwa8V:tg8MNa8Na8Na8MNaIasIdba8Y:tgyNa8SasIdla8Z:tg8RNMMg8PN:tJbbbbJbbjZa8Wa8Ma8MNayayNa8Ra8RNMMg8XNa8Pa8PN:tg8U:va8UJbbbb9BEg8UNh80a8Xa8NNa8Ma8PN:ta8UNh81a8Wa8RNa8Sa8PN:ta8UNhBa8Xa8SNa8Ra8PN:ta8UNh83a8WayNaIa8PN:ta8UNhUa8XaINaya8PN:ta8UNh85aIa8RNaya8SN:tg8Pa8PNa8Sa8MNa8Ra8NN:tg8Pa8PNa8NayNa8MaIN:tg8Pa8PNMM:r:rh8PavaOaD2cdtfhLavagaD2cdtfhQavaKaD2cdtfh3a8V:mh86a8Z:mh87a8Y:mh88cbh8AaDh5Jbbbbh8RJbbbbh8UJbbbbh8WJbbbbh8XJbbbbh8VJbbbbh8YJbbbbh8ZJbbbbh89Jbbbbh8:inaPc;Wbfa8Afgscwfa8Pa81a3IdbaLIdbg8M:tg8SNa80aQIdba8M:tgyNMg8NNUdbasclfa8Pa83a8SNaBayNMgINUdbasa8Pa85a8SNaUayNMg8SNUdbascxfa8Pa86a8NNa87aINa8Ma88a8SNMMMg8MNUdba8Pa8NaINNa8XMh8Xa8Pa8Na8SNNa8VMh8Va8PaIa8SNNa8YMh8Ya8Pa8Ma8MNNaRMhRa8Pa8Na8MNNa8RMh8Ra8PaIa8MNNa8UMh8Ua8Pa8Sa8MNNa8WMh8Wa8Pa8Na8NNNa8ZMh8Za8PaIaINNa89Mh89a8Pa8Sa8SNNa8:Mh8:aLclfhLa3clfh3aQclfhQa8Aczfh8Aa5cufg5mbkaoaCaOcdtfydbgLc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCaKcdtfydbgKc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCagcdtfydbgOc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyawaLaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaKaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaOaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkaYcifgYad6mbkkdnabaeSmbabaeadcdtz:kjjjb8AkaPydbhZcbhsdnalTmbaZclfhsaZydbh3aEhLalh8AcbhQincbasydbg5a39RaLRbbcpeGEaQfhQaLcefhLasclfhsa5h3a8Acufg8AmbkaQce4hskcuadas9Rcifgrcx2arc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8LaPcwfaPyd9Ogscdtfa8LBdbaPascefgLBd9OaPcwfaLcdtfcuarcdtarcFFFFi0Ecbyd1:jjjbHjjjjbbgxBdbaPascdfgLBd9OaPcwfaLcdtfaAcbyd1:jjjbHjjjjbbgHBdbaPascifgLBd9OaPcwfaLcdtfalcbyd1:jjjbHjjjjbbgnBdbaPasclfBd9OJbbbbh8Ydnadaq9nmbdnarci6mbakakNh8VaDclthca8Lcwfh9cJbbbbh8YinaPabadghalaCz:cjjjbabhOcbhzcbhKincbhsindnaCaOasfydbgQcdtgYfydbg8AaCabasc;m1jjbfydbaKfcdtfydbgLcdtfydbg5SmbaEaLfRbbgecv2aEaQfRbbg3fc;G1jjbfRbbg8Ka3cv2aefggc;G1jjbfRbbgiVcFeGTmbdnagc:W1jjbfRbbTmba5a8A0mekdna3ae9hmba3cufcFeGce0mba8FaYfydbaL9hmeka8Lazcx2fg3aLaQaicFeGg8AEBdla3aQaLa8AEBdba3a8Aa8KGcb9hBdwazcefhzkasclfgscx9hmbkdnaKcifgKah9pmbaOcxfhOazcifar9nmekkdnazmbahhdxikcbheinJbbbbJbbjZa8EaCa8Laecx2fg3ydlg8Aa3ydbg5a3ydwgLEgKcdtfydbg8Kc8S2gifgsIdyg8P:va8PJbbbb9BEasIdwa8Ja5a8AaLEgYcx2fgLIdwg8SNasIdzaLIdbg8MNasIdaMg8Pa8PMMa8SNasIdlaLIdlgyNasIdCa8SNasId3Mg8Pa8PMMayNasIdba8MNasIdxayNasIdKMg8Pa8PMMa8MNasId8KMMM:lNh8WJbbbbJbbjZa8EaCa5cdtfydbgdc8S2gQfgsIdyg8P:va8PJbbbb9BEasIdwa8Ja8Acx2fgLIdwgINasIdzaLIdbgRNasIdaMg8Pa8PMMaINasIdlaLIdlg8RNasIdCaINasId3Mg8Pa8PMMa8RNasIdbaRNasIdxa8RNasIdKMg8Pa8PMMaRNasId8KMMM:lNh8Xa3cwfhOa3clfhgdnaDTmbaoaQfgQIdwaINaQIdzaRNaQIdaMg8Pa8PMMaINaQIdla8RNaQIdCaINaQId3Mg8Pa8PMMa8RNaQIdbaRNaQIdxa8RNaQIdKMg8Pa8PMMaRNaQId8KMMMh8Nava8AaD2cdtfhLawadaD2cltfhsaQIdyh8UaDhQinaLIdbg8PJbbb;aNascxfIdbaIascwfIdbNaRasIdbNa8RasclfIdbNMMMNa8Pa8PNa8UNa8NMMh8NaLclfhLasczfhsaQcufgQmbkaoaifgQIdwa8SNaQIdza8MNaQIdaMg8Pa8PMMa8SNaQIdlayNaQIdCa8SNaQId3Mg8Pa8PMMayNaQIdba8MNaQIdxayNaQIdKMg8Pa8PMMa8MNaQId8KMMMhIavaYaD2cdtfhLawa8KaD2cltfhsaQIdyhRaDhQinaLIdbg8PJbbb;aNascxfIdba8SascwfIdbNa8MasIdbNayasclfIdbNMMMNa8Pa8PNaRNaIMMhIaLclfhLasczfhsaQcufgQmbka8WaI:lMh8Wa8Xa8N:lMh8Xkaga8AaYa8Xa8W9FgsEBdba3a5aKasEBdbaOa8Xa8WasEUdbaecefgeaz9hmbkaPc;Wbfcbcj;abz:ljjjb8Aa9chsazhLinaPc;WbfasydbcO4c;8ZGfgQaQydbcefBdbascxfhsaLcufgLmbkcbhscbhLinaPc;WbfasfgQydbh3aQaLBdba3aLfhLasclfgscj;ab9hmbkcbhsa9chLinaPc;WbfaLydbcO4c;8ZGfgQaQydbgQcefBdbaxaQcdtfasBdbaLcxfhLazascefgs9hmbkahaq9RgQci9UhJdnalTmbcbhsaHhLinaLasBdbaLclfhLalascefgs9hmbkkcbh9eancbalz:ljjjbhTaQcO9UhSaJce4h9haPydlh9icbhicbhgdnina8Laxagcdtfydbcx2fgOIdwg8Na8V9EmeaiaJ9pmeJFFuuh8Pdna9haz9pmba8Laxa9hcdtfydbcx2fIdwJbb;aZNh8Pkdna8Na8P9ETmbaiaS0mdkdnaTaCaOydlg6cdtg9kfydbg3fg0RbbaTaCaOydbgKcdtg9mfydbg9nfg9oRbbVmbdnaZa9ncdtfgsclfydbgLasydbgsSmbaLas9Rh5a9iascitfhsa8Ja3cx2fgYcwfhdaYclfhAa8Ja9ncx2fg8Kcwfh9pa8Kclfh9qcbhLcehednindnaHasydbcdtfydbgQa3SmbaHasclfydbcdtfydbg8Aa3SmbaQa8ASmba8Ja8Acx2fg8AIdba8JaQcx2fgQIdbgI:tg8Pa9qIdbaQIdlg8S:tg8MNa8KIdbaI:tgya8AIdla8S:tg8NN:ta8PaAIdba8S:tgRNaYIdbaI:tg8Ra8NN:tNa8Na9pIdbaQIdwg8S:tg8UNa8Ma8AIdwa8S:tgIN:ta8NadIdba8S:tg8SNaRaIN:tNaIayNa8Ua8PN:taIa8RNa8Sa8PN:tNMMJbbbb9FmdkascwfhsaLcefgLa56hea5aL9hmbkkaeceGTmba9hcefh9hxeka8Ea3c8S2gQfgsa8Ea9nc8S2g8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdydnaDTmbaoaQfgsaoa8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdyaca9n2heaca32hYawhLaDh8AinaLaYfgsaLaefgQIdbasIdbMUdbasclfg5aQclfIdba5IdbMUdbascwfg5aQcwfIdba5IdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa8Acufg8AmbkkaOcwfhLdndndndnaEaKfgQRbbc9:fPdebdkaKhsinaHascdtgsfa3BdbaXasfydbgsaK9hmbxikkaXa9kfydbhsaXa9mfydbhKaHa9mfa6Bdbash6kaHaKcdtfa6Bdbka9oce86bba0ce86bbaLIdbg8Pa8Ya8Ya8P9DEh8Ya9ecefh9ececdaQRbbceSEaifhikagcefggaz9hmbkkdna9embahhdxikdnalTmbcbhLa8FhsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmba8Fa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkcbhLaahsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmbaaa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkkcbhdabhscbh8AindnaHasydbcdtfydbgLaHasclfydbcdtfydbgQSmbaLaHascwfydbcdtfydbg3SmbaQa3Smbabadcdtfg5aLBdba5clfaQBdba5cwfa3Bdbadcifhdkascxfhsa8Acifg8Aah6mbkadaq9nmdxbkkaPabadalaCz:cjjjbkdnamTmbama8Y:rUdbkaPyd9OgscdtaPcwffc98fhCdninasTmeaCydbcbyd:m:jjjbH:bjjjbbaCc98fhCascufhsxbkkaPc;W;abf8Kjjjjbadk;:ieouabydlhvabydbclfcbaicdtz:ljjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbarcearce0EhdinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfheadcufgdmbkkabydbcbBdbk:Zldouv998Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdnadTmbaicd4hvdnabTmbavcdthocbhraehwinabarcx2fgiaearav2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinalczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawaofhwarcefgrad9hmbxdkkavcdthrcbhwincbhiinalczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbkkdnabTmbadTmbJbbbbJbbjZalIdbalIdzgk:tJbbbb:xgqalIdlalIdCgx:tgmamaq9DEgqalIdwalIdKgm:tgPaPaq9DEgq:vaqJbbbb9BEhqinabaqabIdbak:tNUdbabclfgiaqaiIdbax:tNUdbabcwfgiaqaiIdbam:tNUdbabcxfhbadcufgdmbkkk8KbabaeadaialavcbcbcbcbaoarawaDz:bjjjbk8KbabaeadaialavaoarawaDaqakaxamz:bjjjbk;lOowud99wue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcwfcbc;Kbz:ljjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbgqBdwawceBd9Oaqaeadaiz:djjjbawcuadcdtadcFFFFi0Egkcbyd1:jjjbHjjjjbbgxBdxawcdBd9Oadcd4adfhmceheinaegicetheaiam6mbkcbhmawcuaicdtgPaicFFFFi0Ecbyd1:jjjbHjjjjbbgsBdzawciBd9Odndnar:Zgz:rJbbbZMgH:lJbbb9p9DTmbaH:Ohexekcjjjj94hekaicufhOc:bwhAcbhCcbhXadhQinaChLaeaAgKcufaeaK9iEamgDcefaeaD9kEhYdndnadTmbaYcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbh3cbh5indnaEaxa5cdtfydbgAcm4aA7c:v;t;h;Ev2gics4ai7aOGgmcdtfgCydbgecuSmbaeaASmbcehiinaEamaifaOGgmcdtfgCydbgecuSmeaicefhiaeaA9hmbkkaCaABdba3aecuSfh3a5cefg5ad9hmbxdkkascFeaPz:ljjjb8Acbh3kaDaYa3ar0giEhmaLa3aiEhCdna3arSmbaYaKaiEgAam9Rcd9imbdndnaXcl0mbdnaQ:ZgHaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa3:Zghaz:tNNNaHaz:taaNa8Aah:tNa8Aaz:ta8FNahaH:tNM:va8EMJbbbZMgH:lJbbb9p9DTmbaH:Ohexdkcjjjj94hexekamaAfcd9Theka3aQaiEhQaXcefgXcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd1:jjjbHjjjjbbg5BdCawclBd9OdndnadTmbamcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbhDcbh3inaxa3cdtgYfydbgAcm4aA7c:v;t;h;Ev2gics4ai7hecbhidndninaEaeaOGgmcdtfgCydbgecuSmednaxaecdtgCfydbaASmbaicefgiamfheaiaO9nmekka5aCfydbhixekaCa3BdbaDhiaDcefhDka5aYfaiBdba3cefg3ad9hmbkcuaDc32giaDc;j:KM;jb0EhexekascFeaPz:ljjjb8AcbhDcbhekawaecbyd1:jjjbHjjjjbbgeBdKawcvBd9Oaecbaiz:ljjjbhOavcd4hxdnadTmbaxcdth3a5hmalhAaqheadhEinaOamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaAc;81jjbalEgCIdbaiIdxMUdxaiaCIdlaiIdzMUdzaiaCIdwaiIdCMUdCaiaiIdKJbbjZMUdKamclfhmaAa3fhAaecxfheaEcufgEmbkkdnaDTmbaOcxfhiaDheinaictfgmamIdbJbbbbJbbjZaicxfIdbgH:vaHJbbbb9BEgHNUdbaic94fgmaHamIdbNUdbaic98fgmaHamIdbNUdbaiaHaiIdbNUdbaiclfgmaHamIdbNUdbaicwfgmaHamIdbNUdbaic3fhiaecufgembkkcbhAawcuaDcdtgYaDcFFFFi0Egicbyd1:jjjbHjjjjbbgeBd3awcoBd9Oawaicbyd1:jjjbHjjjjbbgEBdaaecFeaYz:ljjjbh3dnadTmbaoaoNh8Aaxcdthxalheina8Aaec;81jjbalEgmIdwaOa5ydbgCc32fgiIdC:tgHaHNamIdbaiIdx:tgHaHNamIdlaiIdz:tgHaHNMMNaqcwfIdbaiIdw:tgHaHNaqIdbaiIdb:tgHaHNaqclfIdbaiIdl:tgHaHNMMMhHdndna3aCcdtgifgmydbcuSmbaEaifIdbaH9ETmekamaABdbaEaifaHUdbka5clfh5aeaxfheaqcxfhqadaAcefgA9hmbkkaba3aYz:kjjjb8AcrhikaicdthiinaiTmeaic98fgiawcwffydbcbyd:m:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Qdidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgoaDIdbgrarao9EEUdbaladfgDaoaDIdbgrarao9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkavJbbbb:xgvaoaoav9DEgoararao9DEk9DeeuabcFeaicdtz:ljjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk6eiucbhidnadTmbdninabRbbglaeRbbgv9hmeaecefheabcefhbadcufgdmbxdkkalav9Rhikaikk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbebbbdbbbbbbbebbbeeebeebebbeeebebbbbbebebbbbbebbbdbbbbbbbbbbbbbbbeeeeebebbbbbebbbbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:G9Kbb", a = new Uint8Array([32, 0, 65, 2, 1, 106, 34, 33, 3, 128, 11, 4, 13, 64, 6, 253, 10, 7, 15, 116, 127, 5, 8, 12, 40, 16, 19, 54, 20, 9, 27, 255, 113, 17, 42, 67, 24, 23, 146, 148, 18, 14, 22, 45, 70, 69, 56, 114, 101, 21, 25, 63, 75, 136, 108, 28, 118, 29, 73, 115]);
238
238
  if (typeof WebAssembly != "object")
239
239
  return {
240
240
  supported: !1
241
241
  };
242
- var e, b = WebAssembly.instantiate(s(t), {}).then(function(o) {
243
- e = o.instance, e.exports.__wasm_call_ctors();
242
+ var t, b = WebAssembly.instantiate(s(e), {}).then(function(r) {
243
+ t = r.instance, t.exports.__wasm_call_ctors();
244
244
  });
245
- function s(o) {
246
- for (var c = new Uint8Array(o.length), d = 0; d < o.length; ++d) {
247
- var r = o.charCodeAt(d);
248
- c[d] = r > 96 ? r - 97 : r > 64 ? r - 39 : r + 4;
245
+ function s(r) {
246
+ for (var n = new Uint8Array(r.length), o = 0; o < r.length; ++o) {
247
+ var d = r.charCodeAt(o);
248
+ n[o] = d > 96 ? d - 97 : d > 64 ? d - 39 : d + 4;
249
249
  }
250
- for (var h = 0, d = 0; d < o.length; ++d)
251
- c[h++] = c[d] < 60 ? a[c[d]] : (c[d] - 60) * 64 + c[++d];
252
- return c.buffer.slice(0, h);
250
+ for (var h = 0, o = 0; o < r.length; ++o)
251
+ n[h++] = n[o] < 60 ? a[n[o]] : (n[o] - 60) * 64 + n[++o];
252
+ return n.buffer.slice(0, h);
253
253
  }
254
- function i(o) {
255
- if (!o)
254
+ function i(r) {
255
+ if (!r)
256
256
  throw new Error("Assertion failed");
257
257
  }
258
- function n(o) {
259
- return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);
258
+ function c(r) {
259
+ return new Uint8Array(r.buffer, r.byteOffset, r.byteLength);
260
260
  }
261
- function l(o, c, d) {
262
- var r = e.exports.sbrk, h = r(c.length * 4), f = r(d * 4), g = new Uint8Array(e.exports.memory.buffer), u = n(c);
261
+ function f(r, n, o) {
262
+ var d = t.exports.sbrk, h = d(n.length * 4), l = d(o * 4), g = new Uint8Array(t.exports.memory.buffer), u = c(n);
263
263
  g.set(u, h);
264
- var w = o(f, h, c.length, d);
265
- g = new Uint8Array(e.exports.memory.buffer);
266
- var v = new Uint32Array(d);
267
- new Uint8Array(v.buffer).set(g.subarray(f, f + d * 4)), u.set(g.subarray(h, h + c.length * 4)), r(h - r(0));
268
- for (var A = 0; A < c.length; ++A)
269
- c[A] = v[c[A]];
270
- return [v, w];
271
- }
272
- function p(o) {
273
- for (var c = 0, d = 0; d < o.length; ++d) {
274
- var r = o[d];
275
- c = c < r ? r : c;
264
+ var w = r(l, h, n.length, o);
265
+ g = new Uint8Array(t.exports.memory.buffer);
266
+ var x = new Uint32Array(o);
267
+ new Uint8Array(x.buffer).set(g.subarray(l, l + o * 4)), u.set(g.subarray(h, h + n.length * 4)), d(h - d(0));
268
+ for (var A = 0; A < n.length; ++A)
269
+ n[A] = x[n[A]];
270
+ return [x, w];
271
+ }
272
+ function p(r) {
273
+ for (var n = 0, o = 0; o < r.length; ++o) {
274
+ var d = r[o];
275
+ n = n < d ? d : n;
276
276
  }
277
- return c;
277
+ return n;
278
278
  }
279
- function j(o, c, d, r, h, f, g, u, w) {
280
- var v = e.exports.sbrk, A = v(4), x = v(d * 4), D = v(h * f), I = v(d * 4), E = new Uint8Array(e.exports.memory.buffer);
281
- E.set(n(r), D), E.set(n(c), I);
282
- var S = o(x, I, d, D, h, f, g, u, w, A);
283
- E = new Uint8Array(e.exports.memory.buffer);
279
+ function j(r, n, o, d, h, l, g, u, w) {
280
+ var x = t.exports.sbrk, A = x(4), v = x(o * 4), D = x(h * l), I = x(o * 4), E = new Uint8Array(t.exports.memory.buffer);
281
+ E.set(c(d), D), E.set(c(n), I);
282
+ var S = r(v, I, o, D, h, l, g, u, w, A);
283
+ E = new Uint8Array(t.exports.memory.buffer);
284
284
  var R = new Uint32Array(S);
285
- n(R).set(E.subarray(x, x + S * 4));
285
+ c(R).set(E.subarray(v, v + S * 4));
286
286
  var U = new Float32Array(1);
287
- return n(U).set(E.subarray(A, A + 4)), v(A - v(0)), [R, U[0]];
288
- }
289
- function P(o, c, d, r, h, f, g, u, w, v, A, x) {
290
- var D = e.exports.sbrk, I = D(4), E = D(d * 4), S = D(h * f), R = D(h * u), U = D(w.length * 4), ta = D(d * 4), B = new Uint8Array(e.exports.memory.buffer);
291
- B.set(n(r), S), B.set(n(g), R), B.set(n(w), U), B.set(n(c), ta);
292
- var Z = o(E, ta, d, S, h, f, R, u, U, w.length, v, A, x, I);
293
- B = new Uint8Array(e.exports.memory.buffer);
294
- var G = new Uint32Array(Z);
295
- n(G).set(B.subarray(E, E + Z * 4));
296
- var ra = new Float32Array(1);
297
- return n(ra).set(B.subarray(I, I + 4)), D(I - D(0)), [G, ra[0]];
298
- }
299
- function k(o, c, d, r) {
300
- var h = e.exports.sbrk, f = h(d * r), g = new Uint8Array(e.exports.memory.buffer);
301
- g.set(n(c), f);
302
- var u = o(f, d, r);
303
- return h(f - h(0)), u;
304
- }
305
- function M(o, c, d, r, h, f, g, u) {
306
- var w = e.exports.sbrk, v = w(u * 4), A = w(d * r), x = w(d * f), D = new Uint8Array(e.exports.memory.buffer);
307
- D.set(n(c), A), h && D.set(n(h), x);
308
- var I = o(v, A, d, r, x, f, g, u);
309
- D = new Uint8Array(e.exports.memory.buffer);
287
+ return c(U).set(E.subarray(A, A + 4)), x(A - x(0)), [R, U[0]];
288
+ }
289
+ function P(r, n, o, d, h, l, g, u, w, x, A, v) {
290
+ var D = t.exports.sbrk, I = D(4), E = D(o * 4), S = D(h * l), R = D(h * u), U = D(w.length * 4), ba = D(o * 4), B = new Uint8Array(t.exports.memory.buffer);
291
+ B.set(c(d), S), B.set(c(g), R), B.set(c(w), U), B.set(c(n), ba);
292
+ var $ = r(E, ba, o, S, h, l, R, u, U, w.length, x, A, v, I);
293
+ B = new Uint8Array(t.exports.memory.buffer);
294
+ var G = new Uint32Array($);
295
+ c(G).set(B.subarray(E, E + $ * 4));
296
+ var ha = new Float32Array(1);
297
+ return c(ha).set(B.subarray(I, I + 4)), D(I - D(0)), [G, ha[0]];
298
+ }
299
+ function k(r, n, o, d) {
300
+ var h = t.exports.sbrk, l = h(o * d), g = new Uint8Array(t.exports.memory.buffer);
301
+ g.set(c(n), l);
302
+ var u = r(l, o, d);
303
+ return h(l - h(0)), u;
304
+ }
305
+ function M(r, n, o, d, h, l, g, u) {
306
+ var w = t.exports.sbrk, x = w(u * 4), A = w(o * d), v = w(o * l), D = new Uint8Array(t.exports.memory.buffer);
307
+ D.set(c(n), A), h && D.set(c(h), v);
308
+ var I = r(x, A, o, d, v, l, g, u);
309
+ D = new Uint8Array(t.exports.memory.buffer);
310
310
  var E = new Uint32Array(I);
311
- return n(E).set(D.subarray(v, v + I * 4)), w(v - w(0)), E;
311
+ return c(E).set(D.subarray(x, x + I * 4)), w(x - w(0)), E;
312
312
  }
313
313
  var m = {
314
314
  LockBorder: 1
@@ -319,104 +319,104 @@ var ct = (function() {
319
319
  // set this to true to be able to use simplifyPoints and simplifyWithAttributes
320
320
  // note that these functions are experimental and may change interface/behavior in a way that will require revising calling code
321
321
  useExperimentalFeatures: !1,
322
- compactMesh: function(o) {
323
- i(o instanceof Uint32Array || o instanceof Int32Array || o instanceof Uint16Array || o instanceof Int16Array), i(o.length % 3 == 0);
324
- var c = o.BYTES_PER_ELEMENT == 4 ? o : new Uint32Array(o);
325
- return l(e.exports.meshopt_optimizeVertexFetchRemap, c, p(o) + 1);
326
- },
327
- simplify: function(o, c, d, r, h, f) {
328
- i(o instanceof Uint32Array || o instanceof Int32Array || o instanceof Uint16Array || o instanceof Int16Array), i(o.length % 3 == 0), i(c instanceof Float32Array), i(c.length % d == 0), i(d >= 3), i(r >= 0 && r <= o.length), i(r % 3 == 0), i(h >= 0 && h <= 1);
329
- for (var g = 0, u = 0; u < (f ? f.length : 0); ++u)
330
- g |= m[f[u]];
331
- var w = o.BYTES_PER_ELEMENT == 4 ? o : new Uint32Array(o), v = j(e.exports.meshopt_simplify, w, o.length, c, c.length / d, d * 4, r, h, g);
332
- return v[0] = o instanceof Uint32Array ? v[0] : new o.constructor(v[0]), v;
333
- },
334
- simplifyWithAttributes: function(o, c, d, r, h, f, g, u, w) {
335
- i(this.useExperimentalFeatures), i(o instanceof Uint32Array || o instanceof Int32Array || o instanceof Uint16Array || o instanceof Int16Array), i(o.length % 3 == 0), i(c instanceof Float32Array), i(c.length % d == 0), i(d >= 3), i(r instanceof Float32Array), i(r.length % h == 0), i(h >= 0), i(g >= 0 && g <= o.length), i(g % 3 == 0), i(u >= 0 && u <= 1), i(Array.isArray(f)), i(h >= f.length), i(f.length <= 16);
336
- for (var v = 0, A = 0; A < (w ? w.length : 0); ++A)
337
- v |= m[w[A]];
338
- var x = o.BYTES_PER_ELEMENT == 4 ? o : new Uint32Array(o), D = P(e.exports.meshopt_simplifyWithAttributes, x, o.length, c, c.length / d, d * 4, r, h * 4, new Float32Array(f), g, u, v);
339
- return D[0] = o instanceof Uint32Array ? D[0] : new o.constructor(D[0]), D;
340
- },
341
- getScale: function(o, c) {
342
- return i(o instanceof Float32Array), i(o.length % c == 0), i(c >= 3), k(e.exports.meshopt_simplifyScale, o, o.length / c, c * 4);
343
- },
344
- simplifyPoints: function(o, c, d, r, h, f) {
345
- return i(this.useExperimentalFeatures), i(o instanceof Float32Array), i(o.length % c == 0), i(c >= 3), i(d >= 0 && d <= o.length / c), r ? (i(r instanceof Float32Array), i(r.length % h == 0), i(h >= 3), i(o.length / c == r.length / h), M(e.exports.meshopt_simplifyPoints, o, o.length / c, c * 4, r, h * 4, f, d)) : M(e.exports.meshopt_simplifyPoints, o, o.length / c, c * 4, void 0, 0, 0, d);
322
+ compactMesh: function(r) {
323
+ i(r instanceof Uint32Array || r instanceof Int32Array || r instanceof Uint16Array || r instanceof Int16Array), i(r.length % 3 == 0);
324
+ var n = r.BYTES_PER_ELEMENT == 4 ? r : new Uint32Array(r);
325
+ return f(t.exports.meshopt_optimizeVertexFetchRemap, n, p(r) + 1);
326
+ },
327
+ simplify: function(r, n, o, d, h, l) {
328
+ i(r instanceof Uint32Array || r instanceof Int32Array || r instanceof Uint16Array || r instanceof Int16Array), i(r.length % 3 == 0), i(n instanceof Float32Array), i(n.length % o == 0), i(o >= 3), i(d >= 0 && d <= r.length), i(d % 3 == 0), i(h >= 0 && h <= 1);
329
+ for (var g = 0, u = 0; u < (l ? l.length : 0); ++u)
330
+ g |= m[l[u]];
331
+ var w = r.BYTES_PER_ELEMENT == 4 ? r : new Uint32Array(r), x = j(t.exports.meshopt_simplify, w, r.length, n, n.length / o, o * 4, d, h, g);
332
+ return x[0] = r instanceof Uint32Array ? x[0] : new r.constructor(x[0]), x;
333
+ },
334
+ simplifyWithAttributes: function(r, n, o, d, h, l, g, u, w) {
335
+ i(this.useExperimentalFeatures), i(r instanceof Uint32Array || r instanceof Int32Array || r instanceof Uint16Array || r instanceof Int16Array), i(r.length % 3 == 0), i(n instanceof Float32Array), i(n.length % o == 0), i(o >= 3), i(d instanceof Float32Array), i(d.length % h == 0), i(h >= 0), i(g >= 0 && g <= r.length), i(g % 3 == 0), i(u >= 0 && u <= 1), i(Array.isArray(l)), i(h >= l.length), i(l.length <= 16);
336
+ for (var x = 0, A = 0; A < (w ? w.length : 0); ++A)
337
+ x |= m[w[A]];
338
+ var v = r.BYTES_PER_ELEMENT == 4 ? r : new Uint32Array(r), D = P(t.exports.meshopt_simplifyWithAttributes, v, r.length, n, n.length / o, o * 4, d, h * 4, new Float32Array(l), g, u, x);
339
+ return D[0] = r instanceof Uint32Array ? D[0] : new r.constructor(D[0]), D;
340
+ },
341
+ getScale: function(r, n) {
342
+ return i(r instanceof Float32Array), i(r.length % n == 0), i(n >= 3), k(t.exports.meshopt_simplifyScale, r, r.length / n, n * 4);
343
+ },
344
+ simplifyPoints: function(r, n, o, d, h, l) {
345
+ return i(this.useExperimentalFeatures), i(r instanceof Float32Array), i(r.length % n == 0), i(n >= 3), i(o >= 0 && o <= r.length / n), d ? (i(d instanceof Float32Array), i(d.length % h == 0), i(h >= 3), i(r.length / n == d.length / h), M(t.exports.meshopt_simplifyPoints, r, r.length / n, n * 4, d, h * 4, l, o)) : M(t.exports.meshopt_simplifyPoints, r, r.length / n, n * 4, void 0, 0, 0, o);
346
346
  }
347
347
  };
348
348
  })();
349
- function nt(t) {
350
- const a = [], e = [];
351
- for (const [b, s] of Object.entries(t))
352
- dt(s) && a.push({ name: b, value: s }), rt(s) && e.push({ name: b, value: s });
353
- return { plugins: a, components: e };
354
- }
355
- async function ot(t, a) {
356
- const e = { plugins: [], components: [] }, b = t.getPlugin(L);
349
+ function ht(e) {
350
+ const a = [], t = [];
351
+ for (const [b, s] of Object.entries(e))
352
+ lt(s) && a.push({ name: b, value: s }), pt(s) && t.push({ name: b, value: s });
353
+ return { plugins: a, components: t };
354
+ }
355
+ async function ft(e, a) {
356
+ const t = { plugins: [], components: [] }, b = e.getPlugin(L);
357
357
  if (!b) throw new Error("EntityComponentPlugin must be added before project scripts");
358
358
  for (const s of a) {
359
- const i = nt(s);
360
- e.plugins.push(...i.plugins), e.components.push(...i.components);
359
+ const i = ht(s);
360
+ t.plugins.push(...i.plugins), t.components.push(...i.components);
361
361
  }
362
- for (const s of e.components) {
362
+ for (const s of t.components) {
363
363
  const i = b.componentTypes.get(s.value.ComponentType);
364
364
  i !== s.value && (i && b.removeComponentType(i), await b.addComponentType(s.value));
365
365
  }
366
- for (const s of e.plugins)
367
- t.getPlugin(s.value) || await t.addPlugin(s.value);
368
- return e;
366
+ for (const s of t.plugins)
367
+ e.getPlugin(s.value) || await e.addPlugin(s.value);
368
+ return t;
369
369
  }
370
- function dt(t) {
371
- return typeof t == "function" && typeof t.PluginType == "string";
370
+ function lt(e) {
371
+ return typeof e == "function" && typeof e.PluginType == "string";
372
372
  }
373
- function rt(t) {
374
- return typeof t == "function" && typeof t.ComponentType == "string";
373
+ function pt(e) {
374
+ return typeof e == "function" && typeof e.ComponentType == "string";
375
375
  }
376
- const ht = ["world", "screen", "viewport"], ka = class ka extends oa {
376
+ const gt = ["world", "screen", "viewport"], wa = class wa extends ra {
377
377
  constructor() {
378
378
  super(), this.enabled = !0, this.htmlData = "<div>Hello World</div>", this.width = -1, this.height = -1, this.scrollable = !1, this.interactable = !0, this.visible = !0, this.appendToBody = !1, this.positionMode = "world", this.offsetX = 0, this.offsetY = 0, this.zIndex = 1e3, this._worldPosition = new F(), this._objectUpdate = (a) => {
379
379
  if (a.source === "HtmlUiComponent") return;
380
- const e = (a == null ? void 0 : a.change) ?? (a == null ? void 0 : a.key);
381
- (!e || e === "position" || e === "transform" || e === "quaternion" || e === "visible" || e === "controls") && this.positionMode === "world" && this._updateElementPosition();
380
+ const t = (a == null ? void 0 : a.change) ?? (a == null ? void 0 : a.key);
381
+ (!t || t === "position" || t === "transform" || t === "quaternion" || t === "visible" || t === "controls") && this.positionMode === "world" && this._updateElementPosition();
382
382
  }, this.onStateChange("htmlData", (a) => {
383
383
  this.element && (this.element.innerHTML = a);
384
384
  }), this.onStateChange("width", (a) => {
385
- var e, b;
386
- this.element && (this.element.style.width = a < 0 ? "auto" : `${a}px`, (b = (e = this.object).setDirty) == null || b.call(e, { source: "HtmlUiComponent" }));
385
+ var t, b;
386
+ this.element && (this.element.style.width = a < 0 ? "auto" : `${a}px`, (b = (t = this.object).setDirty) == null || b.call(t, { source: "HtmlUiComponent" }));
387
387
  }), this.onStateChange("height", (a) => {
388
- var e, b;
389
- this.element && (this.element.style.height = a < 0 ? "auto" : `${a}px`, (b = (e = this.object).setDirty) == null || b.call(e, { source: "HtmlUiComponent" }));
388
+ var t, b;
389
+ this.element && (this.element.style.height = a < 0 ? "auto" : `${a}px`, (b = (t = this.object).setDirty) == null || b.call(t, { source: "HtmlUiComponent" }));
390
390
  }), this.onStateChange("scrollable", (a) => {
391
- var e, b;
392
- this.element && (this.element.style.overflow = a ? "auto" : "hidden", (b = (e = this.object).setDirty) == null || b.call(e, { source: "HtmlUiComponent" }));
391
+ var t, b;
392
+ this.element && (this.element.style.overflow = a ? "auto" : "hidden", (b = (t = this.object).setDirty) == null || b.call(t, { source: "HtmlUiComponent" }));
393
393
  }), this.onStateChange("interactable", (a) => {
394
- var e, b;
395
- this.element && (this.element.style.pointerEvents = a ? "auto" : "none", (b = (e = this.object).setDirty) == null || b.call(e, { source: "HtmlUiComponent" }));
394
+ var t, b;
395
+ this.element && (this.element.style.pointerEvents = a ? "auto" : "none", (b = (t = this.object).setDirty) == null || b.call(t, { source: "HtmlUiComponent" }));
396
396
  }), this.onStateChange("visible", (a) => {
397
- var e, b;
398
- this.element && (this.element.style.display = a ? "block" : "none", (b = (e = this.object).setDirty) == null || b.call(e, { source: "HtmlUiComponent" }));
397
+ var t, b;
398
+ this.element && (this.element.style.display = a ? "block" : "none", (b = (t = this.object).setDirty) == null || b.call(t, { source: "HtmlUiComponent" }));
399
399
  }), this.onStateChange("positionMode", () => {
400
- var a, e;
401
- this.element && (this._updateElementPosition(), (e = (a = this.object).setDirty) == null || e.call(a, { source: "HtmlUiComponent" }));
400
+ var a, t;
401
+ this.element && (this._updateElementPosition(), (t = (a = this.object).setDirty) == null || t.call(a, { source: "HtmlUiComponent" }));
402
402
  }), this.onStateChange("offsetX", () => {
403
- var a, e;
404
- this.element && (this._updateElementPosition(), (e = (a = this.object).setDirty) == null || e.call(a, { source: "HtmlUiComponent" }));
403
+ var a, t;
404
+ this.element && (this._updateElementPosition(), (t = (a = this.object).setDirty) == null || t.call(a, { source: "HtmlUiComponent" }));
405
405
  }), this.onStateChange("offsetY", () => {
406
- var a, e;
407
- this.element && (this._updateElementPosition(), (e = (a = this.object).setDirty) == null || e.call(a, { source: "HtmlUiComponent" }));
406
+ var a, t;
407
+ this.element && (this._updateElementPosition(), (t = (a = this.object).setDirty) == null || t.call(a, { source: "HtmlUiComponent" }));
408
408
  }), this.onStateChange("zIndex", (a) => {
409
- var e, b;
410
- this.element && (this.element.style.zIndex = `${a}`, (b = (e = this.object).setDirty) == null || b.call(e, { source: "HtmlUiComponent" }));
409
+ var t, b;
410
+ this.element && (this.element.style.zIndex = `${a}`, (b = (t = this.object).setDirty) == null || b.call(t, { source: "HtmlUiComponent" }));
411
411
  }), this.onStateChange("appendToBody", (a) => {
412
- var b, s, i, n;
412
+ var b, s, i, c;
413
413
  if (!this.element) return;
414
- this.element.parentNode && this.element.parentNode.removeChild(this.element), (a ? document.body : ((s = (b = this.ctx) == null ? void 0 : b.viewer) == null ? void 0 : s.container) || document.body).appendChild(this.element), (n = (i = this.object).setDirty) == null || n.call(i, { source: "HtmlUiComponent" });
414
+ this.element.parentNode && this.element.parentNode.removeChild(this.element), (a ? document.body : ((s = (b = this.ctx) == null ? void 0 : b.viewer) == null ? void 0 : s.container) || document.body).appendChild(this.element), (c = (i = this.object).setDirty) == null || c.call(i, { source: "HtmlUiComponent" });
415
415
  });
416
416
  }
417
- init(a, e) {
417
+ init(a, t) {
418
418
  var s, i;
419
- super.init(a, e), this.element = document.createElement("div"), this.element.className = "threepipe-html-ui", this.element.style.position = "absolute", this.element.style.width = this.width < 0 ? "auto" : `${this.width}px`, this.element.style.height = this.height < 0 ? "auto" : `${this.height}px`, this.element.style.overflow = this.scrollable ? "auto" : "hidden", this.element.style.pointerEvents = this.interactable ? "auto" : "none", this.element.style.zIndex = `${this.zIndex}`, this.element.style.display = this.visible ? "block" : "none", this.element.style.boxSizing = "border-box", this.element.innerHTML = this.htmlData, (this.appendToBody ? document.body : ((i = (s = this.ctx) == null ? void 0 : s.viewer) == null ? void 0 : i.container) || document.body).appendChild(this.element), a.addEventListener("objectUpdate", this._objectUpdate), this.ctx.viewer.scene.addEventListener("mainCameraUpdate", this._objectUpdate), this._updateElementPosition();
419
+ super.init(a, t), this.element = document.createElement("div"), this.element.className = "threepipe-html-ui", this.element.style.position = "absolute", this.element.style.width = this.width < 0 ? "auto" : `${this.width}px`, this.element.style.height = this.height < 0 ? "auto" : `${this.height}px`, this.element.style.overflow = this.scrollable ? "auto" : "hidden", this.element.style.pointerEvents = this.interactable ? "auto" : "none", this.element.style.zIndex = `${this.zIndex}`, this.element.style.display = this.visible ? "block" : "none", this.element.style.boxSizing = "border-box", this.element.innerHTML = this.htmlData, (this.appendToBody ? document.body : ((i = (s = this.ctx) == null ? void 0 : s.viewer) == null ? void 0 : i.container) || document.body).appendChild(this.element), a.addEventListener("objectUpdate", this._objectUpdate), this.ctx.viewer.scene.addEventListener("mainCameraUpdate", this._objectUpdate), this._updateElementPosition();
420
420
  }
421
421
  destroy() {
422
422
  return this._stopPositionTracking(), this.object.removeEventListener("objectUpdate", this._objectUpdate), this.ctx.viewer.scene.removeEventListener("mainCameraUpdate", this._objectUpdate), this.element && this.element.parentNode && this.element.parentNode.removeChild(this.element), this.element = null, super.destroy();
@@ -442,15 +442,15 @@ const ht = ["world", "screen", "viewport"], ka = class ka extends oa {
442
442
  }
443
443
  }
444
444
  _updateWorldPosition() {
445
- var n, l, p, j, P;
445
+ var c, f, p, j, P;
446
446
  this.object.getWorldPosition(this._worldPosition);
447
- const a = (p = (l = (n = this.ctx) == null ? void 0 : n.viewer) == null ? void 0 : l.scene) == null ? void 0 : p.mainCamera;
447
+ const a = (p = (f = (c = this.ctx) == null ? void 0 : c.viewer) == null ? void 0 : f.scene) == null ? void 0 : p.mainCamera;
448
448
  if (!a) return;
449
- const e = (P = (j = this.ctx) == null ? void 0 : j.viewer) == null ? void 0 : P.canvas;
450
- if (!e) return;
449
+ const t = (P = (j = this.ctx) == null ? void 0 : j.viewer) == null ? void 0 : P.canvas;
450
+ if (!t) return;
451
451
  const b = this._worldPosition.clone();
452
452
  b.project(a);
453
- const s = (b.x * 0.5 + 0.5) * e.clientWidth, i = (b.y * -0.5 + 0.5) * e.clientHeight;
453
+ const s = (b.x * 0.5 + 0.5) * t.clientWidth, i = (b.y * -0.5 + 0.5) * t.clientHeight;
454
454
  this.element.style.left = `${s + this.offsetX}px`, this.element.style.top = `${i + this.offsetY}px`, this.element.style.transform = "translate(-50%, -50%)";
455
455
  }
456
456
  _updateScreenPosition() {
@@ -460,8 +460,8 @@ const ht = ["world", "screen", "viewport"], ka = class ka extends oa {
460
460
  var s, i;
461
461
  const a = (i = (s = this.ctx) == null ? void 0 : s.viewer) == null ? void 0 : i.canvas;
462
462
  if (!a) return;
463
- const e = this.offsetX / 100 * a.clientWidth, b = this.offsetY / 100 * a.clientHeight;
464
- this.element.style.left = `${e}px`, this.element.style.top = `${b}px`, this.element.style.transform = "none";
463
+ const t = this.offsetX / 100 * a.clientWidth, b = this.offsetY / 100 * a.clientHeight;
464
+ this.element.style.left = `${t}px`, this.element.style.top = `${b}px`, this.element.style.transform = "none";
465
465
  }
466
466
  /**
467
467
  * Update the HTML content programmatically
@@ -472,14 +472,14 @@ const ht = ["world", "screen", "viewport"], ka = class ka extends oa {
472
472
  /**
473
473
  * Set the position
474
474
  */
475
- setPosition(a, e) {
476
- this.offsetX = a, this.offsetY = e;
475
+ setPosition(a, t) {
476
+ this.offsetX = a, this.offsetY = t;
477
477
  }
478
478
  /**
479
479
  * Set the size
480
480
  */
481
- setSize(a, e) {
482
- this.width = a, this.height = e;
481
+ setSize(a, t) {
482
+ this.width = a, this.height = t;
483
483
  }
484
484
  /**
485
485
  * Show the element
@@ -494,7 +494,7 @@ const ht = ["world", "screen", "viewport"], ka = class ka extends oa {
494
494
  this.visible = !1;
495
495
  }
496
496
  };
497
- ka.ComponentType = "HtmlUiComponent", ka.StateProperties = [
497
+ wa.ComponentType = "HtmlUiComponent", wa.StateProperties = [
498
498
  "enabled",
499
499
  {
500
500
  key: "htmlData",
@@ -511,7 +511,7 @@ ka.ComponentType = "HtmlUiComponent", ka.StateProperties = [
511
511
  "interactable",
512
512
  {
513
513
  key: "positionMode",
514
- type: Ca(ht)
514
+ type: Ba(gt)
515
515
  },
516
516
  "offsetX",
517
517
  "offsetY",
@@ -519,378 +519,486 @@ ka.ComponentType = "HtmlUiComponent", ka.StateProperties = [
519
519
  "visible",
520
520
  "appendToBody"
521
521
  ];
522
- let Ea = ka;
523
- const ga = /* @__PURE__ */ new WeakMap();
524
- let lt = 0;
525
- const wa = class wa extends oa {
522
+ let Na = wa;
523
+ const mt = [
524
+ "boolean",
525
+ "number",
526
+ "integer",
527
+ "string",
528
+ "select",
529
+ "vector",
530
+ "color",
531
+ "json"
532
+ ];
533
+ function ut(e, a, t = console.warn) {
534
+ if (e === void 0) return {};
535
+ if (!Ua(e))
536
+ return t(`[kite3d] Ignoring invalid generator params export from ${a}: expected an object`), {};
537
+ const b = {};
538
+ for (const [s, i] of Object.entries(e)) {
539
+ const c = kt(i);
540
+ if (typeof c == "string") {
541
+ t(`[kite3d] Ignoring invalid generator param "${s}" from ${a}: ${c}`);
542
+ continue;
543
+ }
544
+ b[s] = c;
545
+ }
546
+ return b;
547
+ }
548
+ function jt(e) {
549
+ return typeof e == "boolean" ? { type: "boolean" } : typeof e == "number" ? { type: "number" } : ye(e) ? { type: "vector" } : typeof e == "string" ? { type: "string" } : { type: "json" };
550
+ }
551
+ function yt(e, a) {
552
+ var b;
553
+ const t = a.label || "Value";
554
+ switch (a.type) {
555
+ case "boolean":
556
+ return typeof e == "boolean" ? void 0 : `${t} must be true or false.`;
557
+ case "number":
558
+ case "integer":
559
+ return typeof e != "number" || !Number.isFinite(e) ? `${t} must be a number.` : a.type === "integer" && !Number.isInteger(e) ? `${t} must be an integer.` : a.min !== void 0 && e < a.min ? `${t} must be at least ${a.min}.` : a.max !== void 0 && e > a.max ? `${t} must be at most ${a.max}.` : void 0;
560
+ case "string":
561
+ return typeof e == "string" ? void 0 : `${t} must be text.`;
562
+ case "select":
563
+ return typeof e != "string" && typeof e != "number" ? `${t} must be one of the available options.` : (b = a.options) != null && b.length && !a.options.some((s) => Object.is(xt(s), e)) ? `${t} must be one of the available options.` : void 0;
564
+ case "vector":
565
+ return ye(e) ? void 0 : `${t} must be an array of 2 to 4 numbers.`;
566
+ case "color":
567
+ return typeof e == "string" && /^#[\da-f]{6}$/i.test(e) ? void 0 : `${t} must be a six-digit hex color.`;
568
+ case "json":
569
+ return Ca(e) ? void 0 : `${t} must be a JSON value.`;
570
+ }
571
+ }
572
+ function kt(e) {
573
+ if (!Ua(e)) return "expected an object";
574
+ if (e.type !== void 0 && !mt.includes(e.type))
575
+ return `unknown type ${JSON.stringify(e.type)}`;
576
+ if (e.label !== void 0 && typeof e.label != "string") return "label must be a string";
577
+ if (e.help !== void 0 && typeof e.help != "string") return "help must be a string";
578
+ if (e.options !== void 0 && !wt(e.options)) return "options must contain strings, numbers, or labeled values";
579
+ for (const b of ["min", "max", "step"])
580
+ if (e[b] !== void 0 && !K(e[b])) return `${b} must be a finite number`;
581
+ if (K(e.step) && e.step <= 0) return "step must be greater than zero";
582
+ if (K(e.min) && K(e.max) && e.min > e.max)
583
+ return "min must not be greater than max";
584
+ const a = e.type ?? (e.options !== void 0 ? "select" : jt(e.default).type);
585
+ if ((e.min !== void 0 || e.max !== void 0 || e.step !== void 0) && a !== "number" && a !== "integer")
586
+ return "min, max, and step require a number or integer type";
587
+ if (e.options !== void 0 && a !== "select") return "options require the select type";
588
+ const t = {
589
+ type: a,
590
+ ...e.label !== void 0 ? { label: e.label } : {},
591
+ ...e.help !== void 0 ? { help: e.help } : {},
592
+ ...Object.prototype.hasOwnProperty.call(e, "default") ? { default: e.default } : {},
593
+ ...e.options !== void 0 ? { options: e.options } : {},
594
+ ...K(e.min) ? { min: e.min } : {},
595
+ ...K(e.max) ? { max: e.max } : {},
596
+ ...K(e.step) ? { step: e.step } : {}
597
+ };
598
+ if (Object.prototype.hasOwnProperty.call(t, "default")) {
599
+ const b = yt(t.default, t);
600
+ if (b) return `invalid default: ${b}`;
601
+ }
602
+ return t;
603
+ }
604
+ function wt(e) {
605
+ return Array.isArray(e) && e.every((a) => typeof a == "string" || typeof a == "number" ? !0 : Ua(a) && (typeof a.value == "string" || typeof a.value == "number") && typeof a.label == "string");
606
+ }
607
+ function xt(e) {
608
+ return typeof e == "object" ? e.value : e;
609
+ }
610
+ function ye(e) {
611
+ return Array.isArray(e) && e.length >= 2 && e.length <= 4 && e.every(K);
612
+ }
613
+ function K(e) {
614
+ return typeof e == "number" && Number.isFinite(e);
615
+ }
616
+ function Ca(e, a = /* @__PURE__ */ new Set()) {
617
+ if (e === null || typeof e == "string" || typeof e == "boolean") return !0;
618
+ if (typeof e == "number") return Number.isFinite(e);
619
+ if (!e || typeof e != "object" || a.has(e)) return !1;
620
+ a.add(e);
621
+ const t = Array.isArray(e) ? e.every((b) => Ca(b, a)) : Object.getPrototypeOf(e) === Object.prototype && Object.values(e).every((b) => Ca(b, a));
622
+ return a.delete(e), t;
623
+ }
624
+ function Ua(e) {
625
+ return !!e && typeof e == "object" && !Array.isArray(e);
626
+ }
627
+ const ma = /* @__PURE__ */ new WeakMap();
628
+ let vt = 0;
629
+ const xa = class xa extends ra {
526
630
  constructor() {
527
- super(...arguments), this.module = "", this.params = {}, this.runRevision = 0;
631
+ super(...arguments), this.module = "", this.params = {}, this.schema = {}, this.runRevision = 0;
528
632
  }
529
- static configureViewer(a, e) {
530
- ga.set(a, {
531
- base: typeof e.base == "string" ? new URL(e.base) : e.base,
532
- onError: e.onError,
633
+ static configureViewer(a, t) {
634
+ ma.set(a, {
635
+ base: typeof t.base == "string" ? new URL(t.base) : t.base,
636
+ onError: t.onError,
533
637
  pending: /* @__PURE__ */ new Set()
534
638
  });
535
639
  }
536
640
  static async waitForViewer(a) {
537
- const e = ga.get(a);
538
- for (; e != null && e.pending.size; ) await Promise.all([...e.pending]);
641
+ const t = ma.get(a);
642
+ for (; t != null && t.pending.size; ) await Promise.all([...t.pending]);
539
643
  }
540
- init(a, e) {
541
- super.init(a, e);
644
+ init(a, t) {
645
+ super.init(a, t);
542
646
  const b = () => {
543
- this.run().catch((s) => kt(this.ctx.viewer, s));
647
+ this.run().catch((s) => Nt(this.ctx.viewer, s));
544
648
  };
545
649
  this.onStateChange("module", b), this.onStateChange("params", b), b();
546
650
  }
547
651
  async run() {
548
- const a = this.ctx.viewer, e = ga.get(a);
549
- if (!e) throw new Error("Generator viewer is not configured");
550
- const b = ++this.runRevision, s = ft({
652
+ const a = this.ctx.viewer, t = ma.get(a);
653
+ if (!t) throw new Error("Generator viewer is not configured");
654
+ const b = ++this.runRevision, s = Pt({
551
655
  node: this.object,
552
656
  params: this.params,
553
657
  viewer: a,
554
658
  module: this.module,
555
- base: e.base,
556
- revision: ++lt,
557
- isCurrent: () => b === this.runRevision
659
+ base: t.base,
660
+ revision: ++vt,
661
+ isCurrent: () => b === this.runRevision,
662
+ onSchema: (i) => {
663
+ this.schema = i;
664
+ }
558
665
  }).then(() => {
559
666
  b === this.runRevision && a.setDirty(this);
560
- }).finally(() => e.pending.delete(s));
561
- e.pending.add(s), await s;
667
+ }).finally(() => t.pending.delete(s));
668
+ t.pending.add(s), await s;
562
669
  }
563
670
  async bake() {
564
671
  var i;
565
672
  await this.run();
566
- const a = this.object, e = a.children.filter((n) => n.userData.kite3dGenerated === !0), b = {
673
+ const a = this.object, t = a.children.filter((c) => c.userData.kite3dGenerated === !0), b = {
567
674
  module: this.module,
568
675
  params: JSON.parse(JSON.stringify(this.params)),
569
676
  ts: (/* @__PURE__ */ new Date()).toISOString()
570
677
  };
571
- for (const n of e) pt(n);
678
+ for (const c of t) At(c);
572
679
  this.ctx.ecp.removeComponent(a, this.uuid);
573
- const s = ma(a);
574
- return (s == null ? void 0 : s.role) === "generator" && !s.sourceId && he(a, {
680
+ const s = ua(a);
681
+ return (s == null ? void 0 : s.role) === "generator" && !s.sourceId && pe(a, {
575
682
  role: "direct",
576
683
  id: s.id,
577
684
  ...s.allowCameraInside !== void 0 ? { allowCameraInside: s.allowCameraInside } : {}
578
- }), a.userData.kite3dBakedFrom = b, a._sChildren = [...a.children], (i = a.setDirty) == null || i.call(a, { change: "userData.kite3dBakedFrom", source: "kite3d bake" }), e.length;
685
+ }), a.userData.kite3dBakedFrom = b, a._sChildren = [...a.children], (i = a.setDirty) == null || i.call(a, { change: "userData.kite3dBakedFrom", source: "kite3d bake" }), t.length;
579
686
  }
580
687
  destroy() {
581
- return this.runRevision += 1, me(this.object), super.destroy();
688
+ return this.runRevision += 1, ke(this.object), super.destroy();
582
689
  }
583
690
  };
584
- wa.ComponentType = "Generator", wa.StateProperties = ["module", "params"];
585
- let sa = wa;
586
- async function ft({
587
- node: t,
691
+ xa.ComponentType = "Generator", xa.StateProperties = ["module", "params"];
692
+ let na = xa;
693
+ async function Pt({
694
+ node: e,
588
695
  params: a,
589
- viewer: e,
696
+ viewer: t,
590
697
  module: b,
591
698
  base: s,
592
699
  revision: i = 0,
593
- isCurrent: n
700
+ isCurrent: c,
701
+ onSchema: f
594
702
  }) {
595
- if (me(t), !b) return [];
596
- const l = gt(t), p = ut(b, s);
597
- i && p.searchParams.set("kite3d-generator", String(i));
598
- const j = await yt(p.href);
599
- if (typeof j.default != "function")
703
+ if (ke(e), f == null || f({}), !b) return [];
704
+ const p = Dt(e), j = It(b, s);
705
+ i && j.searchParams.set("kite3d-generator", String(i));
706
+ const P = await Et(j.href);
707
+ if ((!c || c()) && (f == null || f(ut(P.params, b))), typeof P.default != "function")
600
708
  throw new Error(`Generator module must have a default generate function: ${b}`);
601
- const P = new Set(t.children), k = await j.default({
602
- node: t,
709
+ const k = new Set(e.children), M = await P.default({
710
+ node: e,
603
711
  params: a,
604
- viewer: e,
605
- engine: ve
606
- }), M = jt(k);
607
- for (const [o, c] of M.entries())
608
- c.parent !== t && (Xa(c, l.id, o), t.add(c));
609
- const m = t.children.filter((o) => !P.has(o));
610
- if (n && !n()) {
611
- for (const o of m) ue(o);
712
+ viewer: t,
713
+ engine: De
714
+ }), m = Ft(M);
715
+ for (const [n, o] of m.entries())
716
+ o.parent !== e && (ae(o, p.id, n), e.add(o));
717
+ const r = e.children.filter((n) => !k.has(n));
718
+ if (c && !c()) {
719
+ for (const n of r) we(n);
612
720
  return [];
613
721
  }
614
- return m.forEach((o, c) => Xa(o, l.id, c)), m;
722
+ return r.forEach((n, o) => ae(n, p.id, o)), r;
615
723
  }
616
- function me(t) {
617
- for (const a of [...t.children])
618
- a.userData.kite3dGenerated === !0 && ue(a);
724
+ function ke(e) {
725
+ for (const a of [...e.children])
726
+ a.userData.kite3dGenerated === !0 && we(a);
619
727
  }
620
- function Xa(t, a, e = 0) {
728
+ function ae(e, a, t = 0) {
621
729
  let b = 0;
622
- t.traverse((s) => {
730
+ e.traverse((s) => {
623
731
  s.userData.kite3dGenerated = !0, s.userData.excludeFromExport = !0, a && (s.userData.kite3dAuthoring = {
624
732
  role: "generator",
625
- id: `${a}:preview:${e}:${b++}`,
733
+ id: `${a}:preview:${t}:${b++}`,
626
734
  sourceId: a
627
735
  });
628
736
  });
629
737
  }
630
- function pt(t) {
631
- t.traverse((a) => {
738
+ function At(e) {
739
+ e.traverse((a) => {
632
740
  delete a.userData.kite3dGenerated, delete a.userData.excludeFromExport;
633
- const e = ma(a);
634
- (e == null ? void 0 : e.role) === "generator" && e.sourceId && delete a.userData.kite3dAuthoring;
741
+ const t = ua(a);
742
+ (t == null ? void 0 : t.role) === "generator" && t.sourceId && delete a.userData.kite3dAuthoring;
635
743
  });
636
744
  }
637
- function gt(t) {
638
- const a = ma(t);
745
+ function Dt(e) {
746
+ const a = ua(e);
639
747
  if ((a == null ? void 0 : a.role) === "generator" && !a.sourceId) return a;
640
- const e = typeof t.userData.gltfUUID == "string" && t.userData.gltfUUID.trim() ? t.userData.gltfUUID.trim() : (a == null ? void 0 : a.id) || mt(t);
641
- return he(t, { role: "generator", id: e }), ma(t);
748
+ const t = typeof e.userData.gltfUUID == "string" && e.userData.gltfUUID.trim() ? e.userData.gltfUUID.trim() : (a == null ? void 0 : a.id) || Mt(e);
749
+ return pe(e, { role: "generator", id: t }), ua(e);
642
750
  }
643
- function mt(t) {
644
- var e;
751
+ function Mt(e) {
752
+ var t;
645
753
  const a = [];
646
- for (let b = t; b != null && b.parent; b = b.parent) {
754
+ for (let b = e; b != null && b.parent; b = b.parent) {
647
755
  const s = b.parent.children.indexOf(b);
648
- if (a.push(`${b.name || b.type}:${s}`), (e = b.parent.userData) != null && e.rootSceneModelRoot) break;
756
+ if (a.push(`${b.name || b.type}:${s}`), (t = b.parent.userData) != null && t.rootSceneModelRoot) break;
649
757
  }
650
758
  return `generator:${a.reverse().join("/")}`;
651
759
  }
652
- function ue(t) {
653
- t.removeFromParent();
760
+ function we(e) {
761
+ e.removeFromParent();
654
762
  const a = /* @__PURE__ */ new Set();
655
- t.traverse((e) => {
656
- const b = e;
657
- Ma(b.geometry, a);
763
+ e.traverse((t) => {
764
+ const b = t;
765
+ Ia(b.geometry, a);
658
766
  const s = Array.isArray(b.material) ? b.material : [b.material];
659
767
  for (const i of s)
660
768
  if (!(!i || typeof i != "object")) {
661
- for (const n of Object.values(i))
662
- n && typeof n == "object" && "isTexture" in n && Ma(n, a);
663
- Ma(i, a);
769
+ for (const c of Object.values(i))
770
+ c && typeof c == "object" && "isTexture" in c && Ia(c, a);
771
+ Ia(i, a);
664
772
  }
665
773
  });
666
774
  }
667
- function Ma(t, a) {
668
- var e;
669
- !t || typeof t != "object" || a.has(t) || (a.add(t), (e = t.dispose) == null || e.call(t));
775
+ function Ia(e, a) {
776
+ var t;
777
+ !e || typeof e != "object" || a.has(e) || (a.add(e), (t = e.dispose) == null || t.call(e));
670
778
  }
671
- function ut(t, a) {
672
- if (!t || t.startsWith("/") || /^[a-z][a-z\d+.-]*:/i.test(t))
673
- throw new Error(`Generator module must be a project-relative path: ${t}`);
674
- const e = new URL(t, a);
675
- if (e.origin !== a.origin)
676
- throw new Error(`Generator module must be same-origin: ${e.href}`);
677
- return e;
779
+ function It(e, a) {
780
+ if (!e || e.startsWith("/") || /^[a-z][a-z\d+.-]*:/i.test(e))
781
+ throw new Error(`Generator module must be a project-relative path: ${e}`);
782
+ const t = new URL(e, a);
783
+ if (t.origin !== a.origin)
784
+ throw new Error(`Generator module must be same-origin: ${t.href}`);
785
+ return t;
678
786
  }
679
- function jt(t) {
680
- if (!t) return [];
681
- const a = Array.isArray(t) ? t : [t], e = [];
787
+ function Ft(e) {
788
+ if (!e) return [];
789
+ const a = Array.isArray(e) ? e : [e], t = [];
682
790
  for (const b of a) {
683
791
  if (!(b != null && b.isObject3D))
684
792
  throw new Error("Generator output must be an Object3D, an array of Object3D values, or undefined");
685
- e.push(b);
793
+ t.push(b);
686
794
  }
687
- return e;
795
+ return t;
688
796
  }
689
- async function yt(t) {
797
+ async function Et(e) {
690
798
  return import(
691
799
  /* @vite-ignore */
692
- t
800
+ e
693
801
  );
694
802
  }
695
- function kt(t, a) {
803
+ function Nt(e, a) {
696
804
  var b;
697
- const e = (b = ga.get(t)) == null ? void 0 : b.onError;
698
- e ? e(a) : console.error("[kite3d] Generator error", a);
805
+ const t = (b = ma.get(e)) == null ? void 0 : b.onError;
806
+ t ? t(a) : console.error("[kite3d] Generator error", a);
699
807
  }
700
- const wt = new F(), fa = new F(), vt = new C();
701
- function ua(t) {
702
- const a = Pt(t);
808
+ const Ct = new F(), pa = new F(), St = new C();
809
+ function ja(e) {
810
+ const a = Lt(e);
703
811
  if (a.length === 0) return null;
704
812
  if (a.length === 1)
705
- return Za(a[0]);
706
- let e;
813
+ return ee(a[0]);
814
+ let t;
707
815
  const b = [];
708
- for (; e = a.pop(); )
709
- b.push(At(Za(e)));
710
- return xt(b);
816
+ for (; t = a.pop(); )
817
+ b.push(zt(ee(t)));
818
+ return Bt(b);
711
819
  }
712
- function Za(t) {
713
- const a = t.geometry.clone();
714
- return t.updateMatrixWorld(), t.matrixWorld.decompose(wt, vt, fa), a.scale(fa.x, fa.y, fa.z), a;
820
+ function ee(e) {
821
+ const a = e.geometry.clone();
822
+ return e.updateMatrixWorld(), e.matrixWorld.decompose(Ct, St, pa), a.scale(pa.x, pa.y, pa.z), a;
715
823
  }
716
- function xt(t) {
824
+ function Bt(e) {
717
825
  let a = 0;
718
- for (let s = 0; s < t.length; s++) {
719
- const i = t[s].attributes.position;
826
+ for (let s = 0; s < e.length; s++) {
827
+ const i = e[s].attributes.position;
720
828
  i && i.itemSize === 3 && (a += i.count);
721
829
  }
722
- const e = new Float32Array(a * 3);
830
+ const t = new Float32Array(a * 3);
723
831
  let b = 0;
724
- for (let s = 0; s < t.length; s++) {
725
- const i = t[s].attributes.position;
832
+ for (let s = 0; s < e.length; s++) {
833
+ const i = e[s].attributes.position;
726
834
  if (i && i.itemSize === 3)
727
- for (let n = 0; n < i.count; n++)
728
- e[b++] = i.getX(n), e[b++] = i.getY(n), e[b++] = i.getZ(n);
835
+ for (let c = 0; c < i.count; c++)
836
+ t[b++] = i.getX(c), t[b++] = i.getY(c), t[b++] = i.getZ(c);
729
837
  }
730
- return new ia().setAttribute("position", new ie(e, 3));
838
+ return new sa().setAttribute("position", new ce(t, 3));
731
839
  }
732
- function je(t) {
733
- const a = t.attributes.position, e = new Float32Array(a.count * 3);
840
+ function xe(e) {
841
+ const a = e.attributes.position, t = new Float32Array(a.count * 3);
734
842
  for (let b = 0; b < a.count; b++)
735
- e[b * 3] = a.getX(b), e[b * 3 + 1] = a.getY(b), e[b * 3 + 2] = a.getZ(b);
736
- return e;
843
+ t[b * 3] = a.getX(b), t[b * 3 + 1] = a.getY(b), t[b * 3 + 2] = a.getZ(b);
844
+ return t;
737
845
  }
738
- function Pt(t) {
846
+ function Lt(e) {
739
847
  const a = [];
740
- return t.traverse(function(e) {
741
- e.isMesh && a.push(e);
848
+ return e.traverse(function(t) {
849
+ t.isMesh && a.push(t);
742
850
  }), a;
743
851
  }
744
- function pa(t, a) {
852
+ function ga(e, a) {
745
853
  switch (a) {
746
854
  case "x":
747
- return t.x;
855
+ return e.x;
748
856
  case "y":
749
- return t.y;
857
+ return e.y;
750
858
  case "z":
751
- return t.z;
859
+ return e.z;
752
860
  }
753
861
  throw new Error(`Unexpected component ${a}`);
754
862
  }
755
- function At(t, a = 1e-4) {
863
+ function zt(e, a = 1e-4) {
756
864
  a = Math.max(a, Number.EPSILON);
757
- const e = {}, b = t.getIndex(), s = t.getAttribute("position"), i = b ? b.count : s.count;
758
- let n = 0;
759
- const l = [], p = [], j = Math.log10(1 / a), P = Math.pow(10, j);
865
+ const t = {}, b = e.getIndex(), s = e.getAttribute("position"), i = b ? b.count : s.count;
866
+ let c = 0;
867
+ const f = [], p = [], j = Math.log10(1 / a), P = Math.pow(10, j);
760
868
  for (let m = 0; m < i; m++) {
761
- const o = b ? b.getX(m) : m;
762
- let c = "";
763
- c += `${~~(s.getX(o) * P)},`, c += `${~~(s.getY(o) * P)},`, c += `${~~(s.getZ(o) * P)},`, c in e ? l.push(e[c]) : (p.push(s.getX(o)), p.push(s.getY(o)), p.push(s.getZ(o)), e[c] = n, l.push(n), n++);
869
+ const r = b ? b.getX(m) : m;
870
+ let n = "";
871
+ n += `${~~(s.getX(r) * P)},`, n += `${~~(s.getY(r) * P)},`, n += `${~~(s.getZ(r) * P)},`, n in t ? f.push(t[n]) : (p.push(s.getX(r)), p.push(s.getY(r)), p.push(s.getZ(r)), t[n] = c, f.push(c), c++);
764
872
  }
765
- const k = new ie(
873
+ const k = new ce(
766
874
  new Float32Array(p),
767
875
  s.itemSize,
768
876
  s.normalized
769
- ), M = new ia();
770
- return M.setAttribute("position", k), M.setIndex(l), M;
877
+ ), M = new sa();
878
+ return M.setAttribute("position", k), M.setIndex(f), M;
771
879
  }
772
- const $a = Math.PI / 2;
773
- var _ = /* @__PURE__ */ ((t) => (t.BOX = "Box", t.CYLINDER = "Cylinder", t.SPHERE = "Sphere", t.HULL = "ConvexPolyhedron", t.MESH = "Trimesh", t))(_ || {});
774
- const ye = function(t, a = {}) {
775
- let e;
880
+ const te = Math.PI / 2;
881
+ var O = /* @__PURE__ */ ((e) => (e.BOX = "Box", e.CYLINDER = "Cylinder", e.SPHERE = "Sphere", e.HULL = "ConvexPolyhedron", e.MESH = "Trimesh", e))(O || {});
882
+ const ve = function(e, a = {}) {
883
+ let t;
776
884
  if (a.type === "Box")
777
- return ee(t);
885
+ return ie(e);
778
886
  if (a.type === "Cylinder")
779
- return Bt(t, a);
887
+ return qt(e, a);
780
888
  if (a.type === "Sphere")
781
- return Rt(t, a);
889
+ return Jt(e, a);
782
890
  if (a.type === "ConvexPolyhedron")
783
- return Ct(t);
891
+ return Qt(e);
784
892
  if (a.type === "Trimesh")
785
- return e = ua(t), e ? Ut(e) : null;
893
+ return t = ja(e), t ? Vt(t) : null;
786
894
  if (a.type)
787
895
  throw new Error(`[CANNON.getShapeParameters] Invalid type "${a.type}".`);
788
- if (e = ua(t), !e) return null;
789
- switch (e.type) {
896
+ if (t = ja(e), !t) return null;
897
+ switch (t.type) {
790
898
  case "BoxGeometry":
791
899
  case "BoxBufferGeometry":
792
- return ae(e);
900
+ return be(t);
793
901
  case "CylinderGeometry":
794
902
  case "CylinderBufferGeometry":
795
- return St(e);
903
+ return Wt(t);
796
904
  case "PlaneGeometry":
797
905
  case "PlaneBufferGeometry":
798
- return Lt(e);
906
+ return Kt(t);
799
907
  case "SphereGeometry":
800
908
  case "SphereBufferGeometry":
801
- return zt(e);
909
+ return Ht(t);
802
910
  case "TubeGeometry":
803
911
  case "BufferGeometry":
804
- return ee(t);
912
+ return ie(e);
805
913
  default:
806
914
  return console.warn(
807
915
  'Unrecognized geometry: "%s". Using bounding box as shape.',
808
- e.type
809
- ), ae(e);
916
+ t.type
917
+ ), be(t);
810
918
  }
811
- }, Dt = function(t, a = {}, e) {
812
- if (e = e || ye(t, a), !e)
919
+ }, Rt = function(e, a = {}, t) {
920
+ if (t = t || ve(e, a), !t)
813
921
  return null;
814
- const { type: b, params: s, offset: i, orientation: n } = e;
815
- let l;
816
- return b === "Box" ? l = Mt(s) : b === "Cylinder" ? l = It(s) : b === "Sphere" ? l = Ft(s) : b === "ConvexPolyhedron" ? l = Et(s) : l = Nt(s), {
817
- shape: l,
922
+ const { type: b, params: s, offset: i, orientation: c } = t;
923
+ let f;
924
+ return b === "Box" ? f = Ut(s) : b === "Cylinder" ? f = Gt(s) : b === "Sphere" ? f = Ot(s) : b === "ConvexPolyhedron" ? f = Tt(s) : f = _t(s), {
925
+ shape: f,
818
926
  offset: i,
819
- orientation: n
927
+ orientation: c
820
928
  };
821
929
  };
822
- function Mt(t) {
823
- const { x: a, y: e, z: b } = t;
824
- return new K(new y(a || 0.025, e || 0.025, b || 0.025));
930
+ function Ut(e) {
931
+ const { x: a, y: t, z: b } = e;
932
+ return new H(new y(a || 0.025, t || 0.025, b || 0.025));
825
933
  }
826
- function It(t) {
827
- const { radiusTop: a, radiusBottom: e, height: b, segments: s } = t, i = new Xe(a, e, b, s);
828
- return i.radiusTop = e, i.radiusBottom = e, i.height = b, i.numSegments = s, i;
934
+ function Gt(e) {
935
+ const { radiusTop: a, radiusBottom: t, height: b, segments: s } = e, i = new et(a, t, b, s);
936
+ return i.radiusTop = t, i.radiusBottom = t, i.height = b, i.numSegments = s, i;
829
937
  }
830
- function Ft(t) {
831
- return new le(t.radius);
938
+ function Ot(e) {
939
+ return new ge(e.radius);
832
940
  }
833
- function Et(t) {
834
- const { faces: a, vertices: e } = t, b = [];
835
- for (let i = 0; i < e.length; i += 3)
941
+ function Tt(e) {
942
+ const { faces: a, vertices: t } = e, b = [];
943
+ for (let i = 0; i < t.length; i += 3)
836
944
  b.push(new y(
837
- e[i],
838
- e[i + 1],
839
- e[i + 2]
945
+ t[i],
946
+ t[i + 1],
947
+ t[i + 2]
840
948
  ));
841
- return new Ze({
949
+ return new tt({
842
950
  faces: a,
843
951
  vertices: b
844
952
  });
845
953
  }
846
- function Nt(t) {
847
- const { vertices: a, indices: e } = t;
848
- return new $e(
954
+ function _t(e) {
955
+ const { vertices: a, indices: t } = e;
956
+ return new bt(
849
957
  a,
850
- e
958
+ t
851
959
  );
852
960
  }
853
- function ae(t) {
854
- if (!je(t).length) return null;
855
- t.computeBoundingBox();
856
- const e = t.boundingBox;
961
+ function be(e) {
962
+ if (!xe(e).length) return null;
963
+ e.computeBoundingBox();
964
+ const t = e.boundingBox;
857
965
  return {
858
966
  type: "Box",
859
967
  params: {
860
- x: (e.max.x - e.min.x) / 2,
861
- y: (e.max.y - e.min.y) / 2,
862
- z: (e.max.z - e.min.z) / 2
968
+ x: (t.max.x - t.min.x) / 2,
969
+ y: (t.max.y - t.min.y) / 2,
970
+ z: (t.max.z - t.min.z) / 2
863
971
  }
864
972
  };
865
973
  }
866
- function ee(t) {
867
- const a = t.clone();
974
+ function ie(e) {
975
+ const a = e.clone();
868
976
  a.quaternion.set(0, 0, 0, 1), a.updateMatrixWorld();
869
- const e = new se().setFromObject(a);
870
- if (!isFinite(e.min.lengthSq())) return null;
871
- const b = e.translate(a.position.negate()).getCenter(new F());
977
+ const t = new oe().setFromObject(a);
978
+ if (!isFinite(t.min.lengthSq())) return null;
979
+ const b = t.translate(a.position.negate()).getCenter(new F());
872
980
  return {
873
981
  type: "Box",
874
982
  params: {
875
- x: (e.max.x - e.min.x) / 2,
876
- y: (e.max.y - e.min.y) / 2,
877
- z: (e.max.z - e.min.z) / 2
983
+ x: (t.max.x - t.min.x) / 2,
984
+ y: (t.max.y - t.min.y) / 2,
985
+ z: (t.max.z - t.min.z) / 2
878
986
  },
879
987
  offset: b.lengthSq() ? new y(b.x, b.y, b.z) : void 0
880
988
  };
881
989
  }
882
- function Ct(t) {
883
- const a = ua(t);
990
+ function Qt(e) {
991
+ const a = ja(e);
884
992
  if (!a) return null;
885
- const e = 1e-4;
993
+ const t = 1e-4;
886
994
  for (let i = 0; i < a.attributes.position.count; i++)
887
995
  a.attributes.position.setXYZ(
888
996
  i,
889
- a.attributes.position.getX(i) + (Math.random() - 0.5) * e,
890
- a.attributes.position.getY(i) + (Math.random() - 0.5) * e,
891
- a.attributes.position.getZ(i) + (Math.random() - 0.5) * e
997
+ a.attributes.position.getX(i) + (Math.random() - 0.5) * t,
998
+ a.attributes.position.getY(i) + (Math.random() - 0.5) * t,
999
+ a.attributes.position.getZ(i) + (Math.random() - 0.5) * t
892
1000
  );
893
- const [b, s] = Gt(new xe().setFromObject(new xa(a)));
1001
+ const [b, s] = Yt(new Me().setFromObject(new Pa(a)));
894
1002
  return {
895
1003
  type: "ConvexPolyhedron",
896
1004
  params: {
@@ -899,8 +1007,8 @@ function Ct(t) {
899
1007
  }
900
1008
  };
901
1009
  }
902
- function St(t) {
903
- const a = t.parameters;
1010
+ function Wt(e) {
1011
+ const a = e.parameters;
904
1012
  return {
905
1013
  type: "Cylinder",
906
1014
  params: {
@@ -909,22 +1017,22 @@ function St(t) {
909
1017
  height: a.height,
910
1018
  segments: a.radialSegments
911
1019
  },
912
- orientation: new da().setFromEuler(Pe.degToRad(-90), 0, 0, "XYZ").normalize()
1020
+ orientation: new da().setFromEuler(Ie.degToRad(-90), 0, 0, "XYZ").normalize()
913
1021
  };
914
1022
  }
915
- function Bt(t, a) {
916
- const e = ["x", "y", "z"], b = a.cylinderAxis || "y", s = e.splice(e.indexOf(b), 1) && e, i = new se().setFromObject(t);
1023
+ function qt(e, a) {
1024
+ const t = ["x", "y", "z"], b = a.cylinderAxis || "y", s = t.splice(t.indexOf(b), 1) && t, i = new oe().setFromObject(e);
917
1025
  if (!isFinite(i.min.lengthSq())) return null;
918
- const n = i.max[b] - i.min[b], l = 0.5 * Math.max(
919
- pa(i.max, s[0]) - pa(i.min, s[0]),
920
- pa(i.max, s[1]) - pa(i.min, s[1])
921
- ), p = b === "y" ? $a : 0, j = b === "z" ? $a : 0;
1026
+ const c = i.max[b] - i.min[b], f = 0.5 * Math.max(
1027
+ ga(i.max, s[0]) - ga(i.min, s[0]),
1028
+ ga(i.max, s[1]) - ga(i.min, s[1])
1029
+ ), p = b === "y" ? te : 0, j = b === "z" ? te : 0;
922
1030
  return {
923
1031
  type: "Cylinder",
924
1032
  params: {
925
- radiusTop: l,
926
- radiusBottom: l,
927
- height: n,
1033
+ radiusTop: f,
1034
+ radiusBottom: f,
1035
+ height: c,
928
1036
  segments: 12
929
1037
  },
930
1038
  orientation: new da().setFromEuler(p, j, 0, "XYZ").normalize(),
@@ -935,9 +1043,9 @@ function Bt(t, a) {
935
1043
  )
936
1044
  };
937
1045
  }
938
- function Lt(t) {
939
- t.computeBoundingBox();
940
- const a = t.boundingBox;
1046
+ function Kt(e) {
1047
+ e.computeBoundingBox();
1048
+ const a = e.boundingBox;
941
1049
  return {
942
1050
  type: "Box",
943
1051
  params: {
@@ -947,90 +1055,90 @@ function Lt(t) {
947
1055
  }
948
1056
  };
949
1057
  }
950
- function zt(t) {
1058
+ function Ht(e) {
951
1059
  return {
952
1060
  type: "Sphere",
953
- params: { radius: t.parameters.radius }
1061
+ params: { radius: e.parameters.radius }
954
1062
  };
955
1063
  }
956
- function Rt(t, a) {
1064
+ function Jt(e, a) {
957
1065
  if (a.sphereRadius)
958
1066
  return {
959
1067
  type: "Sphere",
960
1068
  params: { radius: a.sphereRadius }
961
1069
  };
962
- const e = ua(t);
963
- if (!e) return null;
964
- e.computeBoundingSphere();
965
- const b = e.boundingSphere;
1070
+ const t = ja(e);
1071
+ if (!t) return null;
1072
+ t.computeBoundingSphere();
1073
+ const b = t.boundingSphere;
966
1074
  return !b || !isFinite(b.radius) ? null : {
967
1075
  type: "Sphere",
968
- params: { radius: e.boundingSphere.radius }
1076
+ params: { radius: t.boundingSphere.radius }
969
1077
  // offset: localPosition.lengthSq()
970
1078
  // ? new Vec3(localPosition.x, localPosition.y, localPosition.z)
971
1079
  // : undefined,
972
1080
  };
973
1081
  }
974
- function Ut(t) {
975
- const a = je(t);
1082
+ function Vt(e) {
1083
+ const a = xe(e);
976
1084
  if (!a.length) return null;
977
- const e = new Uint32Array(a.length);
1085
+ const t = new Uint32Array(a.length);
978
1086
  for (let b = 0; b < a.length; b++)
979
- e[b] = b;
1087
+ t[b] = b;
980
1088
  return {
981
1089
  type: "Trimesh",
982
1090
  params: {
983
1091
  vertices: a,
984
- indices: e
1092
+ indices: t
985
1093
  }
986
1094
  };
987
1095
  }
988
- function Gt(t) {
989
- const a = t.faces.map((n) => {
990
- const l = [];
991
- let p = n.edge;
1096
+ function Yt(e) {
1097
+ const a = e.faces.map((c) => {
1098
+ const f = [];
1099
+ let p = c.edge;
992
1100
  do {
993
- const j = p.head(), P = t.vertices.indexOf(j);
994
- P >= 0 && l.push(P), p = p.next;
995
- } while (p !== n.edge);
996
- return l;
997
- }), e = Array.from(new Set(a.flat())).sort(), b = [];
998
- for (let n = 0; n < e.length; n++)
1101
+ const j = p.head(), P = e.vertices.indexOf(j);
1102
+ P >= 0 && f.push(P), p = p.next;
1103
+ } while (p !== c.edge);
1104
+ return f;
1105
+ }), t = Array.from(new Set(a.flat())).sort(), b = [];
1106
+ for (let c = 0; c < t.length; c++)
999
1107
  b.push(
1000
- t.vertices[e[n]].point.x,
1001
- t.vertices[e[n]].point.y,
1002
- t.vertices[e[n]].point.z
1108
+ e.vertices[t[c]].point.x,
1109
+ e.vertices[t[c]].point.y,
1110
+ e.vertices[t[c]].point.z
1003
1111
  );
1004
1112
  const s = /* @__PURE__ */ new Map();
1005
- for (let n = 0; n < e.length; n++)
1006
- s.set(e[n], n);
1113
+ for (let c = 0; c < t.length; c++)
1114
+ s.set(t[c], c);
1007
1115
  const i = [];
1008
- for (let n = 0; n < a.length; n++)
1116
+ for (let c = 0; c < a.length; c++)
1009
1117
  i.push([
1010
- s.get(a[n][0]),
1011
- s.get(a[n][1]),
1012
- s.get(a[n][2])
1118
+ s.get(a[c][0]),
1119
+ s.get(a[c][1]),
1120
+ s.get(a[c][2])
1013
1121
  ]);
1014
1122
  return [b, i];
1015
1123
  }
1016
- const _t = ["static", "dynamic", "kinematic"], va = class va extends oa {
1124
+ const Xt = ["static", "dynamic", "kinematic"], va = class va extends ra {
1017
1125
  constructor() {
1018
1126
  super(), this.mass = 1, this.type = "dynamic", this.isTrigger = !1, this.material = new T(), this._objectUpdate = (a) => {
1019
1127
  if (a.source === "Cannon3DBodyComponent" || a.source === "CannonPhysicsPlugin") return;
1020
- const e = (a == null ? void 0 : a.change) ?? (a == null ? void 0 : a.key);
1021
- (!e || e === "position" || e === "transform" || e === "quaternion") && this.resetTransform(e);
1128
+ const t = (a == null ? void 0 : a.change) ?? (a == null ? void 0 : a.key);
1129
+ (!t || t === "position" || t === "transform" || t === "quaternion") && this.resetTransform(t);
1022
1130
  }, this.shapeRefs = [], this.onStateChange("mass", (a) => {
1023
- var e, b;
1024
- this.body && (this.body.mass = a, this.updateMassProperties(), (b = (e = this.object).setDirty) == null || b.call(e, { source: "Cannon3DBodyComponent" }));
1131
+ var t, b;
1132
+ this.body && (this.body.mass = a, this.updateMassProperties(), (b = (t = this.object).setDirty) == null || b.call(t, { source: "Cannon3DBodyComponent" }));
1025
1133
  }), this.onStateChange("type", (a) => {
1026
- var e, b;
1027
- this.body && (this.body.type = this._typeToCannon(a), this.updateMassProperties(), (b = (e = this.object).setDirty) == null || b.call(e, { source: "Cannon3DBodyComponent" }));
1134
+ var t, b;
1135
+ this.body && (this.body.type = this._typeToCannon(a), this.updateMassProperties(), (b = (t = this.object).setDirty) == null || b.call(t, { source: "Cannon3DBodyComponent" }));
1028
1136
  }), this.onStateChange("isTrigger", (a) => {
1029
- var e, b;
1030
- this.body && (this.body.isTrigger = a, (b = (e = this.object).setDirty) == null || b.call(e, { source: "Cannon3DBodyComponent" }));
1137
+ var t, b;
1138
+ this.body && (this.body.isTrigger = a, (b = (t = this.object).setDirty) == null || b.call(t, { source: "Cannon3DBodyComponent" }));
1031
1139
  }), this.onStateChange("material", (a) => {
1032
- var e, b, s, i;
1033
- this.body && (this.body.material = a, (b = (e = this.uiConfig) == null ? void 0 : e.uiRefresh) == null || b.call(e), (i = (s = this.object).setDirty) == null || i.call(s, { source: "Cannon3DBodyComponent" }));
1140
+ var t, b, s, i;
1141
+ this.body && (this.body.material = a, (b = (t = this.uiConfig) == null ? void 0 : t.uiRefresh) == null || b.call(t), (i = (s = this.object).setDirty) == null || i.call(s, { source: "Cannon3DBodyComponent" }));
1034
1142
  });
1035
1143
  }
1036
1144
  _typeToCannon(a) {
@@ -1052,8 +1160,8 @@ const _t = ["static", "dynamic", "kinematic"], va = class va extends oa {
1052
1160
  console.error("[Cannon3DBodyComponent] updateBoundingRadius error", a);
1053
1161
  }
1054
1162
  }
1055
- init(a, e) {
1056
- super.init(a, e);
1163
+ init(a, t) {
1164
+ super.init(a, t);
1057
1165
  const b = this.ctx.plugin(z);
1058
1166
  this.body = new N(), this.body.material = this.material, this.body.mass = this.mass, this.body.type = this._typeToCannon(this.type), this.body.isTrigger = this.isTrigger, this.updateMassProperties(), this.resetTransform(), a.addEventListener("objectUpdate", this._objectUpdate), b.addBody(this), a.traverseModels && a.traverseModels((s) => {
1059
1167
  L.GetComponents(s, ca).forEach((i) => {
@@ -1062,8 +1170,8 @@ const _t = ["static", "dynamic", "kinematic"], va = class va extends oa {
1062
1170
  }, { widgets: !1, visible: !1 }), this.shapeRefs.length && this.refreshShapes();
1063
1171
  }
1064
1172
  destroy() {
1065
- return this.shapeRefs.forEach((e) => {
1066
- this.removeShape(e, !1);
1173
+ return this.shapeRefs.forEach((t) => {
1174
+ this.removeShape(t, !1);
1067
1175
  }), this.refreshShapes(!1), this.object.removeEventListener("objectUpdate", this._objectUpdate), this.ctx.plugin(z).removeBody(this), this.body = null, super.destroy();
1068
1176
  }
1069
1177
  // update({time}: IAnimationLoopEvent) {
@@ -1072,24 +1180,24 @@ const _t = ["static", "dynamic", "kinematic"], va = class va extends oa {
1072
1180
  resetTransform(a) {
1073
1181
  (!a || a === "position" || a === "transform") && this.body.position.set(...this.object.getWorldPosition(new F()).toArray()), (!a || a === "quaternion" || a === "transform") && this.body.quaternion.set(...this.object.getWorldQuaternion(new C()).toArray()), this.body.angularVelocity.set(0, 0, 0), this.body.velocity.set(0, 0, 0);
1074
1182
  }
1075
- addShape(a, e = !0) {
1183
+ addShape(a, t = !0) {
1076
1184
  if (!this.shapeRefs.includes(a)) {
1077
1185
  if (a.bodyRef && a.bodyRef !== this)
1078
1186
  return;
1079
- this.shapeRefs.push(a), a.bodyRef = this, e && this.refreshShapes();
1187
+ this.shapeRefs.push(a), a.bodyRef = this, t && this.refreshShapes();
1080
1188
  }
1081
1189
  }
1082
- removeShape(a, e = !0) {
1190
+ removeShape(a, t = !0) {
1083
1191
  const b = this.shapeRefs.indexOf(a);
1084
- b !== -1 && (a.bodyRef === this && (a.bodyRef = void 0), this.shapeRefs.splice(b, 1), e && this.refreshShapes());
1192
+ b !== -1 && (a.bodyRef === this && (a.bodyRef = void 0), this.shapeRefs.splice(b, 1), t && this.refreshShapes());
1085
1193
  }
1086
1194
  refreshShapes(a = !0) {
1087
- var n, l;
1088
- let e = !1;
1195
+ var c, f;
1196
+ let t = !1;
1089
1197
  for (const p of this.body.shapes)
1090
1198
  if (!this.shapeRefs.find((j) => j.result.shape === p)) {
1091
1199
  const j = this.body.shapes.indexOf(p);
1092
- j !== -1 && (this.body.shapes.splice(j, 1), this.body.shapeOffsets.splice(j, 1), this.body.shapeOrientations.splice(j, 1), p.body = null, e = !0);
1200
+ j !== -1 && (this.body.shapes.splice(j, 1), this.body.shapeOffsets.splice(j, 1), this.body.shapeOrientations.splice(j, 1), p.body = null, t = !0);
1093
1201
  }
1094
1202
  const b = this.object;
1095
1203
  b.updateMatrixWorld(!0);
@@ -1105,23 +1213,23 @@ const _t = ["static", "dynamic", "kinematic"], va = class va extends oa {
1105
1213
  M.updateMatrixWorld(!0);
1106
1214
  const m = M.getWorldPosition(new F());
1107
1215
  P.x += m.x - s.x, P.y += m.y - s.y, P.z += m.z - s.z;
1108
- const c = M.getWorldQuaternion(new C()).multiply(i.invert());
1109
- k.x = c.x, k.y = c.y, k.z = c.z, k.w = c.w;
1216
+ const n = M.getWorldQuaternion(new C()).multiply(i.invert());
1217
+ k.x = n.x, k.y = n.y, k.z = n.z, k.w = n.w;
1110
1218
  }
1111
- this.body.shapeOffsets.push(P), this.body.shapeOrientations.push(k), j.body = this.body, e = !0;
1219
+ this.body.shapeOffsets.push(P), this.body.shapeOrientations.push(k), j.body = this.body, t = !0;
1112
1220
  }
1113
- a && e && (this.updateMassProperties(), this.updateBoundingRadius(), this.body.aabbNeedsUpdate = !0, (l = (n = this.object).setDirty) == null || l.call(n, { source: "Cannon3DBodyComponent" }));
1221
+ a && t && (this.updateMassProperties(), this.updateBoundingRadius(), this.body.aabbNeedsUpdate = !0, (f = (c = this.object).setDirty) == null || f.call(c, { source: "Cannon3DBodyComponent" }));
1114
1222
  }
1115
1223
  };
1116
1224
  va.ComponentType = "Cannon3DBodyComponent", va.StateProperties = ["mass", {
1117
1225
  key: "type",
1118
- type: Ca(_t)
1226
+ type: Ba(Xt)
1119
1227
  }, "isTrigger", "material"];
1120
- let ja = va;
1121
- function Tt() {
1122
- const a = new y(), e = new y(), b = new y();
1228
+ let ya = va;
1229
+ function Zt() {
1230
+ const a = new y(), t = new y(), b = new y();
1123
1231
  new da();
1124
- const s = new Ia(1), i = new Fa(1, 1, 1), n = new Va(10, 10, 10, 10), l = new Ae({
1232
+ const s = new Fa(1), i = new Ea(1, 1, 1), c = new Za(10, 10, 10, 10), f = new Fe({
1125
1233
  color: 65280,
1126
1234
  linewidth: 3,
1127
1235
  // in world units with size attenuation, pixels otherwise
@@ -1135,125 +1243,125 @@ function Tt() {
1135
1243
  depthWrite: !1,
1136
1244
  allowOverride: !1
1137
1245
  });
1138
- l.userData.renderToGBuffer = !1, l.userData.renderToDepth = !1, n.translate(0, 0, 1e-4);
1139
- function p(c) {
1140
- const d = new ia(), r = [];
1141
- for (let f = 0; f < c.vertices.length; f++) {
1142
- const g = c.vertices[f];
1143
- r.push(g.x, g.y, g.z);
1246
+ f.userData.renderToGBuffer = !1, f.userData.renderToDepth = !1, c.translate(0, 0, 1e-4);
1247
+ function p(n) {
1248
+ const o = new sa(), d = [];
1249
+ for (let l = 0; l < n.vertices.length; l++) {
1250
+ const g = n.vertices[l];
1251
+ d.push(g.x, g.y, g.z);
1144
1252
  }
1145
- d.setAttribute("position", new Da(r, 3));
1253
+ o.setAttribute("position", new Ma(d, 3));
1146
1254
  const h = [];
1147
- for (let f = 0; f < c.faces.length; f++) {
1148
- const g = c.faces[f], u = g[0];
1255
+ for (let l = 0; l < n.faces.length; l++) {
1256
+ const g = n.faces[l], u = g[0];
1149
1257
  for (let w = 1; w < g.length - 1; w++) {
1150
- const v = g[w], A = g[w + 1];
1151
- h.push(u, v, A);
1258
+ const x = g[w], A = g[w + 1];
1259
+ h.push(u, x, A);
1152
1260
  }
1153
1261
  }
1154
- return d.setIndex(h), d.computeBoundingSphere(), d.computeVertexNormals(), d;
1155
- }
1156
- function j(c) {
1157
- const d = new ia(), r = [], h = a, f = e, g = b;
1158
- for (let u = 0; u < c.indices.length / 3; u++)
1159
- c.getTriangleVertices(u, h, f, g), r.push(h.x, h.y, h.z), r.push(f.x, f.y, f.z), r.push(g.x, g.y, g.z);
1160
- return d.setAttribute("position", new Da(r, 3)), d.computeBoundingSphere(), d.computeVertexNormals(), d;
1161
- }
1162
- function P(c) {
1163
- const d = new ia(), r = c.elementSize || 1, h = c.data.flatMap((g, u) => g.flatMap((w, v) => [u * r, v * r, w])), f = [];
1164
- for (let g = 0; g < c.data.length - 1; g++)
1165
- for (let u = 0; u < c.data[g].length - 1; u++) {
1166
- const w = c.data[g].length, v = g * w + u;
1167
- f.push(v + 1, v + w, v + w + 1), f.push(v + w, v + 1, v);
1262
+ return o.setIndex(h), o.computeBoundingSphere(), o.computeVertexNormals(), o;
1263
+ }
1264
+ function j(n) {
1265
+ const o = new sa(), d = [], h = a, l = t, g = b;
1266
+ for (let u = 0; u < n.indices.length / 3; u++)
1267
+ n.getTriangleVertices(u, h, l, g), d.push(h.x, h.y, h.z), d.push(l.x, l.y, l.z), d.push(g.x, g.y, g.z);
1268
+ return o.setAttribute("position", new Ma(d, 3)), o.computeBoundingSphere(), o.computeVertexNormals(), o;
1269
+ }
1270
+ function P(n) {
1271
+ const o = new sa(), d = n.elementSize || 1, h = n.data.flatMap((g, u) => g.flatMap((w, x) => [u * d, x * d, w])), l = [];
1272
+ for (let g = 0; g < n.data.length - 1; g++)
1273
+ for (let u = 0; u < n.data[g].length - 1; u++) {
1274
+ const w = n.data[g].length, x = g * w + u;
1275
+ l.push(x + 1, x + w, x + w + 1), l.push(x + w, x + 1, x);
1168
1276
  }
1169
- return d.setIndex(f), d.setAttribute("position", new Da(h, 3)), d.computeBoundingSphere(), d.computeVertexNormals(), d;
1170
- }
1171
- function k(c) {
1172
- let d = new xa();
1173
- const { SPHERE: r, BOX: h, PLANE: f, CYLINDER: g, CONVEXPOLYHEDRON: u, TRIMESH: w, HEIGHTFIELD: v } = q.types;
1174
- switch (c.type) {
1175
- case r: {
1176
- d = new Y(new X(s), l);
1277
+ return o.setIndex(l), o.setAttribute("position", new Ma(h, 3)), o.computeBoundingSphere(), o.computeVertexNormals(), o;
1278
+ }
1279
+ function k(n) {
1280
+ let o = new Pa();
1281
+ const { SPHERE: d, BOX: h, PLANE: l, CYLINDER: g, CONVEXPOLYHEDRON: u, TRIMESH: w, HEIGHTFIELD: x } = q.types;
1282
+ switch (n.type) {
1283
+ case d: {
1284
+ o = new X(new Z(s), f);
1177
1285
  break;
1178
1286
  }
1179
1287
  case h: {
1180
- d = new Y(new X(i), l);
1288
+ o = new X(new Z(i), f);
1181
1289
  break;
1182
1290
  }
1183
- case f: {
1184
- d = new Y(new X(n), l);
1291
+ case l: {
1292
+ o = new X(new Z(c), f);
1185
1293
  break;
1186
1294
  }
1187
1295
  case g: {
1188
- const A = new De(
1189
- c.radiusTop,
1190
- c.radiusBottom,
1191
- c.height,
1192
- c.numSegments
1296
+ const A = new Ee(
1297
+ n.radiusTop,
1298
+ n.radiusBottom,
1299
+ n.height,
1300
+ n.numSegments
1193
1301
  );
1194
- d = new Y(new X(A), l), c.geometryId = A.id;
1302
+ o = new X(new Z(A), f), n.geometryId = A.id;
1195
1303
  break;
1196
1304
  }
1197
1305
  case u: {
1198
- const A = p(c);
1199
- d = new Y(new X(A), l), c.geometryId = A.id;
1306
+ const A = p(n);
1307
+ o = new X(new Z(A), f), n.geometryId = A.id;
1200
1308
  break;
1201
1309
  }
1202
1310
  case w: {
1203
- const A = j(c);
1204
- d = new Y(new X(A), l), c.geometryId = A.id;
1311
+ const A = j(n);
1312
+ o = new X(new Z(A), f), n.geometryId = A.id;
1205
1313
  break;
1206
1314
  }
1207
- case v: {
1208
- const A = P(c);
1209
- d = new Y(new X(A), l), c.geometryId = A.id;
1315
+ case x: {
1316
+ const A = P(n);
1317
+ o = new X(new Z(A), f), n.geometryId = A.id;
1210
1318
  break;
1211
1319
  }
1212
1320
  }
1213
- return d;
1214
- }
1215
- function M(c, d) {
1216
- const { SPHERE: r, BOX: h, PLANE: f, CYLINDER: g, CONVEXPOLYHEDRON: u, TRIMESH: w, HEIGHTFIELD: v } = q.types;
1217
- switch (d.type) {
1218
- case r: {
1219
- const { radius: A } = d;
1220
- c.scale.set(A * 1, A * 1, A * 1);
1321
+ return o;
1322
+ }
1323
+ function M(n, o) {
1324
+ const { SPHERE: d, BOX: h, PLANE: l, CYLINDER: g, CONVEXPOLYHEDRON: u, TRIMESH: w, HEIGHTFIELD: x } = q.types;
1325
+ switch (o.type) {
1326
+ case d: {
1327
+ const { radius: A } = o;
1328
+ n.scale.set(A * 1, A * 1, A * 1);
1221
1329
  break;
1222
1330
  }
1223
1331
  case h: {
1224
- c.scale.copy(d.halfExtents), c.scale.multiplyScalar(2);
1332
+ n.scale.copy(o.halfExtents), n.scale.multiplyScalar(2);
1225
1333
  break;
1226
1334
  }
1227
- case f:
1335
+ case l:
1228
1336
  break;
1229
1337
  case g: {
1230
- c.scale.set(1, 1, 1);
1338
+ n.scale.set(1, 1, 1);
1231
1339
  break;
1232
1340
  }
1233
1341
  case u: {
1234
- c.scale.set(1, 1, 1);
1342
+ n.scale.set(1, 1, 1);
1235
1343
  break;
1236
1344
  }
1237
1345
  case w: {
1238
- c.scale.copy(d.scale).multiplyScalar(1);
1346
+ n.scale.copy(o.scale).multiplyScalar(1);
1239
1347
  break;
1240
1348
  }
1241
- case v: {
1242
- c.scale.set(1, 1, 1);
1349
+ case x: {
1350
+ n.scale.set(1, 1, 1);
1243
1351
  break;
1244
1352
  }
1245
1353
  }
1246
1354
  }
1247
- function m(c, d) {
1248
- if (!c) return !1;
1249
- const { geometry: r } = c;
1250
- return r instanceof Ia && d.type === q.types.SPHERE || r instanceof Fa && d.type === q.types.BOX || r instanceof Va && d.type === q.types.PLANE || // geometry.id === (shape as ComplexShape).geometryId && shape.type === Shape.types.BOX ||
1355
+ function m(n, o) {
1356
+ if (!n) return !1;
1357
+ const { geometry: d } = n;
1358
+ return d instanceof Fa && o.type === q.types.SPHERE || d instanceof Ea && o.type === q.types.BOX || d instanceof Za && o.type === q.types.PLANE || // geometry.id === (shape as ComplexShape).geometryId && shape.type === Shape.types.BOX ||
1251
1359
  // geometry.id === (shape as ComplexShape).geometryId && shape.type === Shape.types.SPHERE ||
1252
1360
  // geometry.id === (shape as ComplexShape).geometryId && shape.type === Shape.types.PLANE ||
1253
- r.id === d.geometryId && d.type === q.types.CONVEXPOLYHEDRON || r.id === d.geometryId && d.type === q.types.TRIMESH || r.id === d.geometryId && d.type === q.types.HEIGHTFIELD;
1361
+ d.id === o.geometryId && o.type === q.types.CONVEXPOLYHEDRON || d.id === o.geometryId && o.type === q.types.TRIMESH || d.id === o.geometryId && o.type === q.types.HEIGHTFIELD;
1254
1362
  }
1255
- function o(c, d) {
1256
- return m(c, d) || (c = k(d)), c && M(c, d), c;
1363
+ function r(n, o) {
1364
+ return m(n, o) || (n = k(o)), n && M(n, o), n;
1257
1365
  }
1258
1366
  return {
1259
1367
  createConvexPolyhedronGeometry: p,
@@ -1262,31 +1370,31 @@ function Tt() {
1262
1370
  createMesh: k,
1263
1371
  scaleMesh: M,
1264
1372
  typeMatch: m,
1265
- updateMesh: o
1373
+ updateMesh: r
1266
1374
  };
1267
1375
  }
1268
- const Ot = Tt(), Na = {
1269
- autoBox: _.BOX,
1270
- autoCylinder: _.CYLINDER,
1271
- autoSphere: _.SPHERE,
1272
- autoConvex: _.HULL,
1273
- autoTrimesh: _.MESH,
1274
- box: _.BOX,
1275
- sphere: _.SPHERE,
1276
- cylinder: _.CYLINDER,
1277
- convex: _.HULL,
1278
- trimesh: _.MESH
1376
+ const $t = Zt(), Sa = {
1377
+ autoBox: O.BOX,
1378
+ autoCylinder: O.CYLINDER,
1379
+ autoSphere: O.SPHERE,
1380
+ autoConvex: O.HULL,
1381
+ autoTrimesh: O.MESH,
1382
+ box: O.BOX,
1383
+ sphere: O.SPHERE,
1384
+ cylinder: O.CYLINDER,
1385
+ convex: O.HULL,
1386
+ trimesh: O.MESH
1279
1387
  // plane: ShapeType.PLANE,
1280
- }, Qt = Object.keys(Na), Wt = {
1388
+ }, ab = Object.keys(Sa), eb = {
1281
1389
  box: { x: 1, y: 1, z: 1 },
1282
1390
  sphere: { radius: 1 },
1283
1391
  cylinder: { radiusTop: 1, radiusBottom: 1, height: 1, segments: 8 },
1284
1392
  convex: { vertices: new Float32Array([1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 0, 0, -1]), faces: [[0, 1, 2, 3], [4, 0, 3], [4, 3, 2], [4, 2, 1], [4, 1, 0]] },
1285
1393
  trimesh: { vertices: new Float32Array([1, 1, 1, -1, -1, 1, -1, 1, -1, 1, -1, -1]), indices: new Uint32Array([0, 1, 2, 0, 3, 1, 0, 2, 3, 1, 3, 2]) }
1286
1394
  // not for auto
1287
- }, H = class H extends oa {
1395
+ }, J = class J extends ra {
1288
1396
  constructor() {
1289
- super(), this.result = H.EmptyResult, this.type = "autoBox", this.params = null, this._needsUpdate = !1, this.objectUpdate = (a) => {
1397
+ super(), this.result = J.EmptyResult, this.type = "autoBox", this.params = null, this._needsUpdate = !1, this.objectUpdate = (a) => {
1290
1398
  }, this.childadded = (a) => {
1291
1399
  this._needsUpdate = !0, a.child.addEventListener("objectUpdate", this.objectUpdate), a.child.addEventListener("childadded", this.childadded), a.child.addEventListener("childremoved", this.childremoved);
1292
1400
  }, this.childremoved = (a) => {
@@ -1294,14 +1402,14 @@ const Ot = Tt(), Na = {
1294
1402
  }, this.preFrame = () => {
1295
1403
  this._needsUpdate && (this._needsUpdate = !1, this.refreshShape());
1296
1404
  }, this.onStateChange("type", () => {
1297
- const a = Wt[this.type];
1405
+ const a = eb[this.type];
1298
1406
  if (a) {
1299
- const e = {};
1407
+ const t = {};
1300
1408
  Object.entries(a).forEach(([b, s]) => {
1301
- e[b] = s.slice ? s.slice() : s;
1409
+ t[b] = s.slice ? s.slice() : s;
1302
1410
  }), this.params = {
1303
- type: Na[this.type],
1304
- params: e,
1411
+ type: Sa[this.type],
1412
+ params: t,
1305
1413
  offset: new y(),
1306
1414
  orientation: new da()
1307
1415
  };
@@ -1311,32 +1419,32 @@ const Ot = Tt(), Na = {
1311
1419
  });
1312
1420
  }
1313
1421
  // static IsCompatible(_object: IObject3D) { return true }
1314
- init(a, e) {
1315
- super.init(a, e), this.refreshShape(!1);
1316
- const b = L.GetComponentInParent(a, ja);
1422
+ init(a, t) {
1423
+ super.init(a, t), this.refreshShape(!1);
1424
+ const b = L.GetComponentInParent(a, ya);
1317
1425
  b && b.addShape(this), this.object.addEventListener("objectUpdate", this.objectUpdate), this.object.addEventListener("childadded", this.childadded), this.object.addEventListener("childremoved", this.childremoved), this.ctx.viewer.addEventListener("preFrame", this.preFrame);
1318
1426
  }
1319
1427
  destroy() {
1320
- return this.bodyRef && (this.bodyRef.removeShape(this, !1), this.bodyRef = void 0), this.object.removeEventListener("objectUpdate", this.objectUpdate), this.ctx.viewer.removeEventListener("preFrame", this.preFrame), this.result = H.EmptyResult, super.destroy();
1428
+ return this.bodyRef && (this.bodyRef.removeShape(this, !1), this.bodyRef = void 0), this.object.removeEventListener("objectUpdate", this.objectUpdate), this.ctx.viewer.removeEventListener("preFrame", this.preFrame), this.result = J.EmptyResult, super.destroy();
1321
1429
  }
1322
1430
  refreshShape(a = !0) {
1323
- var s, i, n;
1431
+ var s, i, c;
1324
1432
  if (this.object.__cannonShapes || (this.object.__cannonShapes = []), this.result) {
1325
- const l = this.object.__cannonShapes.indexOf(this.result);
1326
- l !== -1 && this.object.__cannonShapes.splice(l, 1);
1433
+ const f = this.object.__cannonShapes.indexOf(this.result);
1434
+ f !== -1 && this.object.__cannonShapes.splice(f, 1);
1327
1435
  }
1328
- const e = Na[this.type], b = this.params ?? (e ? ye(this.object, { type: e }) : null);
1329
- b ? this.result = Dt(this.object, void 0, b) : this.result = H.EmptyResult, this.object.__cannonShapes.includes(this.result) || this.object.__cannonShapes.push(this.result), a && this.bodyRef && this.bodyRef.refreshShapes(), (i = (s = this.object).setDirty) == null || i.call(s), (n = this.ctx.plugin(ce)) == null || n.refreshObject(this.object);
1436
+ const t = Sa[this.type], b = this.params ?? (t ? ve(this.object, { type: t }) : null);
1437
+ b ? this.result = Rt(this.object, void 0, b) : this.result = J.EmptyResult, this.object.__cannonShapes.includes(this.result) || this.object.__cannonShapes.push(this.result), a && this.bodyRef && this.bodyRef.refreshShapes(), (i = (s = this.object).setDirty) == null || i.call(s), (c = this.ctx.plugin(re)) == null || c.refreshObject(this.object);
1330
1438
  }
1331
1439
  };
1332
- H.ComponentType = "Cannon3DShapeComponent", H.StateProperties = [{
1440
+ J.ComponentType = "Cannon3DShapeComponent", J.StateProperties = [{
1333
1441
  key: "type",
1334
- type: Ca(Qt)
1335
- }], H.EmptyResult = { shape: new K(new y(0.025, 0.025, 0.025)) };
1336
- let ca = H;
1337
- class ya extends Me {
1442
+ type: Ba(ab)
1443
+ }], J.EmptyResult = { shape: new H(new y(0.025, 0.025, 0.025)) };
1444
+ let ca = J;
1445
+ class ka extends Ne {
1338
1446
  constructor(a) {
1339
- super(a, !1), this.autoUpgradeChildren = !1, this._shapes = [], this._meshes = /* @__PURE__ */ new WeakMap(), this._gp = new Ie(), this.attach(a), this.add(this._gp), this.visible = !1;
1447
+ super(a, !1), this.autoUpgradeChildren = !1, this._shapes = [], this._meshes = /* @__PURE__ */ new WeakMap(), this._gp = new Ce(), this.attach(a), this.add(this._gp), this.visible = !1;
1340
1448
  }
1341
1449
  update() {
1342
1450
  var s;
@@ -1345,37 +1453,37 @@ class ya extends Me {
1345
1453
  1 / this._gp.scale.y,
1346
1454
  1 / this._gp.scale.z
1347
1455
  );
1348
- const a = ((s = this.object) == null ? void 0 : s.__cannonShapes) || [], e = a.filter((i) => !this._shapes.includes(i)), b = this._shapes.filter((i) => !a.includes(i));
1349
- if (!(!e.length && !b.length)) {
1456
+ const a = ((s = this.object) == null ? void 0 : s.__cannonShapes) || [], t = a.filter((i) => !this._shapes.includes(i)), b = this._shapes.filter((i) => !a.includes(i));
1457
+ if (!(!t.length && !b.length)) {
1350
1458
  for (const i of b) {
1351
- const n = this._meshes.get(i.shape);
1352
- n && (this._gp.remove(n), n.geometry.dispose(), n.material.dispose(), this._meshes.delete(i.shape));
1459
+ const c = this._meshes.get(i.shape);
1460
+ c && (this._gp.remove(c), c.geometry.dispose(), c.material.dispose(), this._meshes.delete(i.shape));
1353
1461
  }
1354
1462
  this._shapes = [];
1355
1463
  for (const i of a) {
1356
- const n = this._meshes.get(i.shape), l = Ot.updateMesh(n, i.shape);
1357
- l !== n && l && (this._gp.add(l), n && (n.removeFromParent(), n.geometry.dispose(), n.material.dispose()), this._meshes.set(i.shape, l)), l && (i.offset && l.position.set(i.offset.x, i.offset.y, i.offset.z), i.orientation && l.quaternion.set(i.orientation.x, i.orientation.y, i.orientation.z, i.orientation.w)), this._shapes.push(i);
1464
+ const c = this._meshes.get(i.shape), f = $t.updateMesh(c, i.shape);
1465
+ f !== c && f && (this._gp.add(f), c && (c.removeFromParent(), c.geometry.dispose(), c.material.dispose()), this._meshes.set(i.shape, f)), f && (i.offset && f.position.set(i.offset.x, i.offset.y, i.offset.z), i.orientation && f.quaternion.set(i.orientation.x, i.orientation.y, i.orientation.z, i.orientation.w)), this._shapes.push(i);
1358
1466
  }
1359
1467
  }
1360
1468
  }
1361
1469
  dispose() {
1362
1470
  this._shapes = [], this.children.forEach((a) => {
1363
- a instanceof xa && (a.geometry.dispose(), a.material.dispose());
1471
+ a instanceof Pa && (a.geometry.dispose(), a.material.dispose());
1364
1472
  }), super.dispose();
1365
1473
  }
1366
1474
  static Check(a) {
1367
1475
  return !!L.GetComponentData(a, ca);
1368
1476
  }
1369
1477
  static Create(a) {
1370
- return new ya(a);
1478
+ return new ka(a);
1371
1479
  }
1372
1480
  }
1373
- var qt = Object.getOwnPropertyDescriptor, Kt = (t, a, e, b) => {
1374
- for (var s = b > 1 ? void 0 : b ? qt(a, e) : a, i = t.length - 1, n; i >= 0; i--)
1375
- (n = t[i]) && (s = n(s) || s);
1481
+ var tb = Object.getOwnPropertyDescriptor, bb = (e, a, t, b) => {
1482
+ for (var s = b > 1 ? void 0 : b ? tb(a, t) : a, i = e.length - 1, c; i >= 0; i--)
1483
+ (c = e[i]) && (s = c(s) || s);
1376
1484
  return s;
1377
1485
  };
1378
- let na = class extends oa {
1486
+ let oa = class extends ra {
1379
1487
  constructor() {
1380
1488
  super(), this.scale = 1, this.angle = Math.PI / 4, this.angleShoulders = Math.PI / 2, this.twistAngle = Math.PI / 8, this.mass = 1, this.autoCreateOnInit = !0, this.hideRagdollMeshes = !1, this.material = new T(), this._bodies = [], this._constraints = [], this._parts = null, this._ragdollConstraints = null, this._cannon = null, this._meshes = [], this._meshContainer = null, this._visualMaterial = null, this._lastObjectPosition = new F(), this._lastObjectQuaternion = new C(), this._initialized = !1, this._isActive = !1, this._characterMeshes = [], this._boneMap = /* @__PURE__ */ new Map(), this._initialBoneQuats = /* @__PURE__ */ new Map(), this._initialBoneWorldQuats = /* @__PURE__ */ new Map(), this._initialBodyQuats = /* @__PURE__ */ new Map(), this._boneNames = {
1381
1489
  head: ["Head", "mixamorigHead", "head"],
@@ -1410,16 +1518,16 @@ let na = class extends oa {
1410
1518
  get isActive() {
1411
1519
  return this._isActive;
1412
1520
  }
1413
- init(t, a) {
1414
- var e;
1415
- super.init(t, a), this._cannon = this.ctx.plugin(z), this._removeRagdoll(), this._visualMaterial || (this._visualMaterial = new Fe({ color: 8947848 })), this._meshContainer || (this._meshContainer = new Ee(), this._meshContainer.name = `RagdollMeshes_${this.object.uuid}`, (e = this.ctx.viewer) == null || e.scene.add(this._meshContainer)), this._findCharacterMeshes(), this._buildBoneMap(), this.autoCreateOnInit && (this._createRagdoll(), this._deactivateBodies()), this._updateMeshVisibility();
1521
+ init(e, a) {
1522
+ var t;
1523
+ super.init(e, a), this._cannon = this.ctx.plugin(z), this._removeRagdoll(), this._visualMaterial || (this._visualMaterial = new Se({ color: 8947848 })), this._meshContainer || (this._meshContainer = new Be(), this._meshContainer.name = `RagdollMeshes_${this.object.uuid}`, (t = this.ctx.viewer) == null || t.scene.add(this._meshContainer)), this._findCharacterMeshes(), this._buildBoneMap(), this.autoCreateOnInit && (this._createRagdoll(), this._deactivateBodies()), this._updateMeshVisibility();
1416
1524
  }
1417
1525
  destroy() {
1418
- var t;
1419
- return this._removeRagdoll(), this._meshContainer && ((t = this.ctx.viewer) == null || t.scene.remove(this._meshContainer), this._meshContainer = null), this._visualMaterial && (this._visualMaterial.dispose(), this._visualMaterial = null), this._cannon = null, super.destroy();
1526
+ var e;
1527
+ return this._removeRagdoll(), this._meshContainer && ((e = this.ctx.viewer) == null || e.scene.remove(this._meshContainer), this._meshContainer = null), this._visualMaterial && (this._visualMaterial.dispose(), this._visualMaterial = null), this._cannon = null, super.destroy();
1420
1528
  }
1421
1529
  // Called automatically by the component system each frame
1422
- preFrame(t) {
1530
+ preFrame(e) {
1423
1531
  this._isActive ? this._syncRagdollToBones() : this._syncObjectPosition(), this._updateMeshes();
1424
1532
  }
1425
1533
  /**
@@ -1436,23 +1544,23 @@ let na = class extends oa {
1436
1544
  */
1437
1545
  _syncRagdollToBones() {
1438
1546
  if (!this._parts || this._characterMeshes.length === 0) return;
1439
- const t = (e, b) => {
1547
+ const e = (t, b) => {
1440
1548
  const s = this._findBone(b);
1441
1549
  if (!s) return;
1442
- const i = s.name, n = this._initialBodyQuats.get(e), l = this._initialBoneWorldQuats.get(i);
1443
- if (!n || !l)
1550
+ const i = s.name, c = this._initialBodyQuats.get(t), f = this._initialBoneWorldQuats.get(i);
1551
+ if (!c || !f)
1444
1552
  return;
1445
1553
  const p = new C(
1446
- e.quaternion.x,
1447
- e.quaternion.y,
1448
- e.quaternion.z,
1449
- e.quaternion.w
1450
- ), j = n.clone().invert(), k = p.clone().multiply(j).clone().multiply(l);
1554
+ t.quaternion.x,
1555
+ t.quaternion.y,
1556
+ t.quaternion.z,
1557
+ t.quaternion.w
1558
+ ), j = c.clone().invert(), k = p.clone().multiply(j).clone().multiply(f);
1451
1559
  if (s.parent) {
1452
1560
  const M = new C();
1453
1561
  s.parent.getWorldQuaternion(M);
1454
- const o = M.clone().invert().clone().multiply(k);
1455
- s.quaternion.copy(o);
1562
+ const r = M.clone().invert().clone().multiply(k);
1563
+ s.quaternion.copy(r);
1456
1564
  } else
1457
1565
  s.quaternion.copy(k);
1458
1566
  }, a = this._findBone(this._boneNames.hips);
@@ -1462,19 +1570,19 @@ let na = class extends oa {
1462
1570
  this._parts.pelvis.position.y,
1463
1571
  this._parts.pelvis.position.z
1464
1572
  ), a.parent) {
1465
- const e = a.parent.matrixWorld.clone().invert();
1466
- this._tempWorldPos.applyMatrix4(e);
1573
+ const t = a.parent.matrixWorld.clone().invert();
1574
+ this._tempWorldPos.applyMatrix4(t);
1467
1575
  }
1468
- a.position.copy(this._tempWorldPos), t(this._parts.pelvis, this._boneNames.hips);
1576
+ a.position.copy(this._tempWorldPos), e(this._parts.pelvis, this._boneNames.hips);
1469
1577
  }
1470
- t(this._parts.head, this._boneNames.head), t(this._parts.upperBody, this._boneNames.spine2), t(this._parts.upperLeftLeg, this._boneNames.leftUpLeg), t(this._parts.upperRightLeg, this._boneNames.rightUpLeg), t(this._parts.lowerLeftLeg, this._boneNames.leftLeg), t(this._parts.lowerRightLeg, this._boneNames.rightLeg), t(this._parts.upperLeftArm, this._boneNames.leftArm), t(this._parts.upperRightArm, this._boneNames.rightArm), t(this._parts.lowerLeftArm, this._boneNames.leftForeArm), t(this._parts.lowerRightArm, this._boneNames.rightForeArm);
1471
- for (const e of this._characterMeshes)
1472
- e.skeleton && e.skeleton.update();
1578
+ e(this._parts.head, this._boneNames.head), e(this._parts.upperBody, this._boneNames.spine2), e(this._parts.upperLeftLeg, this._boneNames.leftUpLeg), e(this._parts.upperRightLeg, this._boneNames.rightUpLeg), e(this._parts.lowerLeftLeg, this._boneNames.leftLeg), e(this._parts.lowerRightLeg, this._boneNames.rightLeg), e(this._parts.upperLeftArm, this._boneNames.leftArm), e(this._parts.upperRightArm, this._boneNames.rightArm), e(this._parts.lowerLeftArm, this._boneNames.leftForeArm), e(this._parts.lowerRightArm, this._boneNames.rightForeArm);
1579
+ for (const t of this._characterMeshes)
1580
+ t.skeleton && t.skeleton.update();
1473
1581
  }
1474
1582
  _syncObjectPosition() {
1475
1583
  if (!this._initialized || this._bodies.length === 0) return;
1476
1584
  this.object.getWorldPosition(this._currentObjectPosition), this.object.getWorldQuaternion(this._currentObjectQuaternion);
1477
- const t = this._currentObjectPosition.x - this._lastObjectPosition.x, a = this._currentObjectPosition.y - this._lastObjectPosition.y, e = this._currentObjectPosition.z - this._lastObjectPosition.z;
1585
+ const e = this._currentObjectPosition.x - this._lastObjectPosition.x, a = this._currentObjectPosition.y - this._lastObjectPosition.y, t = this._currentObjectPosition.z - this._lastObjectPosition.z;
1478
1586
  if (!this._currentObjectQuaternion.equals(this._lastObjectQuaternion)) {
1479
1587
  this._invLastQuaternion.copy(this._lastObjectQuaternion).invert(), this._deltaQuaternion.copy(this._currentObjectQuaternion).multiply(this._invLastQuaternion), this._pivotPoint.copy(this._lastObjectPosition);
1480
1588
  for (const s of this._bodies) {
@@ -1493,17 +1601,17 @@ let na = class extends oa {
1493
1601
  }
1494
1602
  this._lastObjectQuaternion.copy(this._currentObjectQuaternion);
1495
1603
  }
1496
- if (t !== 0 || a !== 0 || e !== 0) {
1604
+ if (e !== 0 || a !== 0 || t !== 0) {
1497
1605
  for (const s of this._bodies)
1498
- s.position.x += t, s.position.y += a, s.position.z += e;
1606
+ s.position.x += e, s.position.y += a, s.position.z += t;
1499
1607
  this._lastObjectPosition.copy(this._currentObjectPosition);
1500
1608
  }
1501
1609
  }
1502
1610
  _updateMeshes() {
1503
1611
  if (!(!this._parts || this._meshes.length === 0))
1504
- for (let t = 0; t < this._bodies.length && t < this._meshes.length; t++) {
1505
- const a = this._bodies[t], e = this._meshes[t];
1506
- e.position.set(a.position.x, a.position.y, a.position.z), e.quaternion.set(
1612
+ for (let e = 0; e < this._bodies.length && e < this._meshes.length; e++) {
1613
+ const a = this._bodies[e], t = this._meshes[e];
1614
+ t.position.set(a.position.x, a.position.y, a.position.z), t.quaternion.set(
1507
1615
  a.quaternion.x,
1508
1616
  a.quaternion.y,
1509
1617
  a.quaternion.z,
@@ -1512,135 +1620,135 @@ let na = class extends oa {
1512
1620
  }
1513
1621
  }
1514
1622
  _recreateRagdoll() {
1515
- var t, a;
1516
- this._cannon && (this._removeRagdoll(), this._createRagdoll(), (a = (t = this.object).setDirty) == null || a.call(t, { source: "CannonRagdollComponent" }));
1623
+ var e, a;
1624
+ this._cannon && (this._removeRagdoll(), this._createRagdoll(), (a = (e = this.object).setDirty) == null || a.call(e, { source: "CannonRagdollComponent" }));
1517
1625
  }
1518
1626
  _updateMass() {
1519
- var t, a;
1520
- for (const e of this._bodies)
1521
- e.mass = this.mass, e.updateMassProperties();
1522
- (a = (t = this.object).setDirty) == null || a.call(t, { source: "CannonRagdollComponent" });
1627
+ var e, a;
1628
+ for (const t of this._bodies)
1629
+ t.mass = this.mass, t.updateMassProperties();
1630
+ (a = (e = this.object).setDirty) == null || a.call(e, { source: "CannonRagdollComponent" });
1523
1631
  }
1524
1632
  _updateConstraints() {
1525
1633
  this._recreateRagdoll();
1526
1634
  }
1527
1635
  _createRagdoll() {
1528
1636
  if (!this._cannon) return;
1529
- const t = this.scale, a = this.angle, e = this.angleShoulders, b = this.twistAngle, s = 0.5 * t, i = 0.4 * t, n = 0.4 * t, l = 0.2 * t, p = 0.2 * t, j = 0.1 * t, P = 0.25 * t, k = 0.6 * t, M = 0.4 * t, m = 0.5 * t, o = 0.2 * t, c = 0.2 * t, d = 0.5 * t, r = new le(P), h = new K(
1530
- new y(i * 0.5, l * 0.5, l * 0.5)
1531
- ), f = new K(
1532
- new y(n * 0.5, p * 0.5, p * 0.5)
1533
- ), g = new K(
1637
+ const e = this.scale, a = this.angle, t = this.angleShoulders, b = this.twistAngle, s = 0.5 * e, i = 0.4 * e, c = 0.4 * e, f = 0.2 * e, p = 0.2 * e, j = 0.1 * e, P = 0.25 * e, k = 0.6 * e, M = 0.4 * e, m = 0.5 * e, r = 0.2 * e, n = 0.2 * e, o = 0.5 * e, d = new ge(P), h = new H(
1638
+ new y(i * 0.5, f * 0.5, f * 0.5)
1639
+ ), l = new H(
1640
+ new y(c * 0.5, p * 0.5, p * 0.5)
1641
+ ), g = new H(
1534
1642
  new y(s * 0.5, k * 0.5, p * 0.5)
1535
- ), u = new K(
1643
+ ), u = new H(
1536
1644
  new y(s * 0.5, M * 0.5, p * 0.5)
1537
- ), w = new K(
1538
- new y(o * 0.5, m * 0.5, p * 0.5)
1539
- ), v = new K(
1540
- new y(c * 0.5, d * 0.5, p * 0.5)
1541
- ), A = this.object.getWorldPosition(new F()), x = this.object.getWorldQuaternion(new C()), D = (O) => {
1542
- const ba = O.clone().applyQuaternion(x);
1645
+ ), w = new H(
1646
+ new y(r * 0.5, m * 0.5, p * 0.5)
1647
+ ), x = new H(
1648
+ new y(n * 0.5, o * 0.5, p * 0.5)
1649
+ ), A = this.object.getWorldPosition(new F()), v = this.object.getWorldQuaternion(new C()), D = (_) => {
1650
+ const ia = _.clone().applyQuaternion(v);
1543
1651
  return new y(
1544
- A.x + ba.x,
1545
- A.y + ba.y,
1546
- A.z + ba.z
1652
+ A.x + ia.x,
1653
+ A.y + ia.y,
1654
+ A.z + ia.z
1547
1655
  );
1548
- }, I = (O, ba = !1) => {
1549
- var Ja;
1550
- let Pa;
1551
- if (ba)
1552
- Pa = new Ia(P, 16, 16);
1656
+ }, I = (_, ia = !1) => {
1657
+ var Xa;
1658
+ let Aa;
1659
+ if (ia)
1660
+ Aa = new Fa(P, 16, 16);
1553
1661
  else {
1554
- const Aa = O.shapes[0];
1555
- Pa = new Fa(
1556
- Aa.halfExtents.x * 2,
1557
- Aa.halfExtents.y * 2,
1558
- Aa.halfExtents.z * 2
1662
+ const Da = _.shapes[0];
1663
+ Aa = new Ea(
1664
+ Da.halfExtents.x * 2,
1665
+ Da.halfExtents.y * 2,
1666
+ Da.halfExtents.z * 2
1559
1667
  );
1560
1668
  }
1561
- const la = new xa(Pa, this._visualMaterial);
1562
- return la.position.set(O.position.x, O.position.y, O.position.z), (Ja = this._meshContainer) == null || Ja.add(la), this._meshes.push(la), la;
1669
+ const la = new Pa(Aa, this._visualMaterial);
1670
+ return la.position.set(_.position.x, _.position.y, _.position.z), (Xa = this._meshContainer) == null || Xa.add(la), this._meshes.push(la), la;
1563
1671
  }, E = new N({
1564
1672
  mass: this.mass,
1565
- position: D(new F(s / 2, d / 2, 0)),
1673
+ position: D(new F(s / 2, o / 2, 0)),
1566
1674
  material: this.material
1567
1675
  }), S = new N({
1568
1676
  mass: this.mass,
1569
- position: D(new F(-s / 2, d / 2, 0)),
1677
+ position: D(new F(-s / 2, o / 2, 0)),
1570
1678
  material: this.material
1571
1679
  });
1572
- E.addShape(v), S.addShape(v), E.quaternion.set(x.x, x.y, x.z, x.w), S.quaternion.set(x.x, x.y, x.z, x.w), this._bodies.push(E, S), I(E), I(S);
1680
+ E.addShape(x), S.addShape(x), E.quaternion.set(v.x, v.y, v.z, v.w), S.quaternion.set(v.x, v.y, v.z, v.w), this._bodies.push(E, S), I(E), I(S);
1573
1681
  const R = new N({
1574
1682
  mass: this.mass,
1575
- position: D(new F(s / 2, d + m / 2, 0)),
1683
+ position: D(new F(s / 2, o + m / 2, 0)),
1576
1684
  material: this.material
1577
1685
  }), U = new N({
1578
1686
  mass: this.mass,
1579
- position: D(new F(-s / 2, d + m / 2, 0)),
1687
+ position: D(new F(-s / 2, o + m / 2, 0)),
1580
1688
  material: this.material
1581
1689
  });
1582
- R.addShape(w), U.addShape(w), R.quaternion.set(x.x, x.y, x.z, x.w), U.quaternion.set(x.x, x.y, x.z, x.w), this._bodies.push(R, U), I(R), I(U);
1583
- const ta = d + m + M / 2, B = new N({
1690
+ R.addShape(w), U.addShape(w), R.quaternion.set(v.x, v.y, v.z, v.w), U.quaternion.set(v.x, v.y, v.z, v.w), this._bodies.push(R, U), I(R), I(U);
1691
+ const ba = o + m + M / 2, B = new N({
1584
1692
  mass: this.mass,
1585
- position: D(new F(0, ta, 0)),
1693
+ position: D(new F(0, ba, 0)),
1586
1694
  material: this.material
1587
1695
  });
1588
- B.addShape(u), B.quaternion.set(x.x, x.y, x.z, x.w), this._bodies.push(B), I(B);
1589
- const Z = ta + M / 2 + k / 2, G = new N({
1696
+ B.addShape(u), B.quaternion.set(v.x, v.y, v.z, v.w), this._bodies.push(B), I(B);
1697
+ const $ = ba + M / 2 + k / 2, G = new N({
1590
1698
  mass: this.mass,
1591
- position: D(new F(0, Z, 0)),
1699
+ position: D(new F(0, $, 0)),
1592
1700
  material: this.material
1593
1701
  });
1594
- G.addShape(g), G.quaternion.set(x.x, x.y, x.z, x.w), this._bodies.push(G), I(G);
1595
- const ra = Z + k / 2 + P + j, $ = new N({
1702
+ G.addShape(g), G.quaternion.set(v.x, v.y, v.z, v.w), this._bodies.push(G), I(G);
1703
+ const ha = $ + k / 2 + P + j, aa = new N({
1596
1704
  mass: this.mass,
1597
- position: D(new F(0, ra, 0)),
1705
+ position: D(new F(0, ha, 0)),
1598
1706
  material: this.material
1599
1707
  });
1600
- $.addShape(r), $.quaternion.set(x.x, x.y, x.z, x.w), this._bodies.push($), I($, !0);
1601
- const ha = Z + k / 2, J = new N({
1708
+ aa.addShape(d), aa.quaternion.set(v.x, v.y, v.z, v.w), this._bodies.push(aa), I(aa, !0);
1709
+ const fa = $ + k / 2, V = new N({
1602
1710
  mass: this.mass,
1603
- position: D(new F(s / 2 + i / 2, ha, 0)),
1711
+ position: D(new F(s / 2 + i / 2, fa, 0)),
1604
1712
  material: this.material
1605
- }), V = new N({
1713
+ }), Y = new N({
1606
1714
  mass: this.mass,
1607
- position: D(new F(-s / 2 - i / 2, ha, 0)),
1715
+ position: D(new F(-s / 2 - i / 2, fa, 0)),
1608
1716
  material: this.material
1609
1717
  });
1610
- J.addShape(h), V.addShape(h), J.quaternion.set(x.x, x.y, x.z, x.w), V.quaternion.set(x.x, x.y, x.z, x.w), this._bodies.push(J, V), I(J), I(V);
1611
- const aa = new N({
1718
+ V.addShape(h), Y.addShape(h), V.quaternion.set(v.x, v.y, v.z, v.w), Y.quaternion.set(v.x, v.y, v.z, v.w), this._bodies.push(V, Y), I(V), I(Y);
1719
+ const ea = new N({
1612
1720
  mass: this.mass,
1613
1721
  position: D(new F(
1614
- s / 2 + i + n / 2,
1615
- ha,
1722
+ s / 2 + i + c / 2,
1723
+ fa,
1616
1724
  0
1617
1725
  )),
1618
1726
  material: this.material
1619
- }), ea = new N({
1727
+ }), ta = new N({
1620
1728
  mass: this.mass,
1621
1729
  position: D(new F(
1622
- -s / 2 - i - n / 2,
1623
- ha,
1730
+ -s / 2 - i - c / 2,
1731
+ fa,
1624
1732
  0
1625
1733
  )),
1626
1734
  material: this.material
1627
1735
  });
1628
- aa.addShape(f), ea.addShape(f), aa.quaternion.set(x.x, x.y, x.z, x.w), ea.quaternion.set(x.x, x.y, x.z, x.w), this._bodies.push(aa, ea), I(aa), I(ea), this._parts = {
1736
+ ea.addShape(l), ta.addShape(l), ea.quaternion.set(v.x, v.y, v.z, v.w), ta.quaternion.set(v.x, v.y, v.z, v.w), this._bodies.push(ea, ta), I(ea), I(ta), this._parts = {
1629
1737
  lowerLeftLeg: E,
1630
1738
  lowerRightLeg: S,
1631
1739
  upperLeftLeg: R,
1632
1740
  upperRightLeg: U,
1633
1741
  pelvis: B,
1634
1742
  upperBody: G,
1635
- head: $,
1636
- upperLeftArm: J,
1637
- upperRightArm: V,
1638
- lowerLeftArm: aa,
1639
- lowerRightArm: ea
1743
+ head: aa,
1744
+ upperLeftArm: V,
1745
+ upperRightArm: Y,
1746
+ lowerLeftArm: ea,
1747
+ lowerRightArm: ta
1640
1748
  };
1641
- for (const O of this._bodies)
1642
- this._cannon.world.addBody(O);
1643
- const Ua = new Q($, G, {
1749
+ for (const _ of this._bodies)
1750
+ this._cannon.world.addBody(_);
1751
+ const Ta = new Q(aa, G, {
1644
1752
  pivotA: new y(0, -P - j / 2, 0),
1645
1753
  pivotB: new y(0, k / 2, 0),
1646
1754
  axisA: y.UNIT_Y,
@@ -1648,31 +1756,31 @@ let na = class extends oa {
1648
1756
  angle: a,
1649
1757
  twistAngle: b
1650
1758
  });
1651
- this._constraints.push(Ua);
1652
- const Ga = new Q(E, R, {
1653
- pivotA: new y(0, d / 2, 0),
1759
+ this._constraints.push(Ta);
1760
+ const _a = new Q(E, R, {
1761
+ pivotA: new y(0, o / 2, 0),
1654
1762
  pivotB: new y(0, -m / 2, 0),
1655
1763
  axisA: y.UNIT_Y,
1656
1764
  axisB: y.UNIT_Y,
1657
1765
  angle: a,
1658
1766
  twistAngle: b
1659
- }), _a = new Q(S, U, {
1660
- pivotA: new y(0, d / 2, 0),
1767
+ }), Qa = new Q(S, U, {
1768
+ pivotA: new y(0, o / 2, 0),
1661
1769
  pivotB: new y(0, -m / 2, 0),
1662
1770
  axisA: y.UNIT_Y,
1663
1771
  axisB: y.UNIT_Y,
1664
1772
  angle: a,
1665
1773
  twistAngle: b
1666
1774
  });
1667
- this._constraints.push(Ga, _a);
1668
- const Ta = new Q(R, B, {
1775
+ this._constraints.push(_a, Qa);
1776
+ const Wa = new Q(R, B, {
1669
1777
  pivotA: new y(0, m / 2, 0),
1670
1778
  pivotB: new y(s / 2, -M / 2, 0),
1671
1779
  axisA: y.UNIT_Y,
1672
1780
  axisB: y.UNIT_Y,
1673
1781
  angle: a,
1674
1782
  twistAngle: b
1675
- }), Oa = new Q(U, B, {
1783
+ }), qa = new Q(U, B, {
1676
1784
  pivotA: new y(0, m / 2, 0),
1677
1785
  pivotB: new y(-s / 2, -M / 2, 0),
1678
1786
  axisA: y.UNIT_Y,
@@ -1680,8 +1788,8 @@ let na = class extends oa {
1680
1788
  angle: a,
1681
1789
  twistAngle: b
1682
1790
  });
1683
- this._constraints.push(Ta, Oa);
1684
- const Qa = new Q(B, G, {
1791
+ this._constraints.push(Wa, qa);
1792
+ const Ka = new Q(B, G, {
1685
1793
  pivotA: new y(0, M / 2, 0),
1686
1794
  pivotB: new y(0, -k / 2, 0),
1687
1795
  axisA: y.UNIT_Y,
@@ -1689,160 +1797,160 @@ let na = class extends oa {
1689
1797
  angle: a,
1690
1798
  twistAngle: b
1691
1799
  });
1692
- this._constraints.push(Qa);
1693
- const Wa = new Q(G, J, {
1800
+ this._constraints.push(Ka);
1801
+ const Ha = new Q(G, V, {
1694
1802
  pivotA: new y(s / 2, k / 2, 0),
1695
1803
  pivotB: new y(-i / 2, 0, 0),
1696
1804
  axisA: y.UNIT_Z,
1697
1805
  axisB: y.UNIT_Z,
1698
- angle: e,
1806
+ angle: t,
1699
1807
  twistAngle: b
1700
- }), qa = new Q(G, V, {
1808
+ }), Ja = new Q(G, Y, {
1701
1809
  pivotA: new y(-s / 2, k / 2, 0),
1702
1810
  pivotB: new y(i / 2, 0, 0),
1703
1811
  axisA: y.UNIT_Z,
1704
1812
  axisB: y.UNIT_Z,
1705
- angle: e,
1813
+ angle: t,
1706
1814
  twistAngle: b
1707
1815
  });
1708
- this._constraints.push(Wa, qa);
1709
- const Ka = new Q(aa, J, {
1710
- pivotA: new y(-n / 2, 0, 0),
1816
+ this._constraints.push(Ha, Ja);
1817
+ const Va = new Q(ea, V, {
1818
+ pivotA: new y(-c / 2, 0, 0),
1711
1819
  pivotB: new y(i / 2, 0, 0),
1712
1820
  axisA: y.UNIT_Z,
1713
1821
  axisB: y.UNIT_Z,
1714
1822
  angle: a,
1715
1823
  twistAngle: b
1716
- }), Ha = new Q(ea, V, {
1717
- pivotA: new y(n / 2, 0, 0),
1824
+ }), Ya = new Q(ta, Y, {
1825
+ pivotA: new y(c / 2, 0, 0),
1718
1826
  pivotB: new y(-i / 2, 0, 0),
1719
1827
  axisA: y.UNIT_Z,
1720
1828
  axisB: y.UNIT_Z,
1721
1829
  angle: a,
1722
1830
  twistAngle: b
1723
1831
  });
1724
- this._constraints.push(Ka, Ha), this._ragdollConstraints = {
1725
- neckJoint: Ua,
1726
- leftKneeJoint: Ga,
1727
- rightKneeJoint: _a,
1728
- leftHipJoint: Ta,
1729
- rightHipJoint: Oa,
1730
- spineJoint: Qa,
1731
- leftShoulder: Wa,
1732
- rightShoulder: qa,
1733
- leftElbowJoint: Ka,
1734
- rightElbowJoint: Ha
1832
+ this._constraints.push(Va, Ya), this._ragdollConstraints = {
1833
+ neckJoint: Ta,
1834
+ leftKneeJoint: _a,
1835
+ rightKneeJoint: Qa,
1836
+ leftHipJoint: Wa,
1837
+ rightHipJoint: qa,
1838
+ spineJoint: Ka,
1839
+ leftShoulder: Ha,
1840
+ rightShoulder: Ja,
1841
+ leftElbowJoint: Va,
1842
+ rightElbowJoint: Ya
1735
1843
  };
1736
- for (const O of this._constraints)
1737
- this._cannon.world.addConstraint(O);
1844
+ for (const _ of this._constraints)
1845
+ this._cannon.world.addConstraint(_);
1738
1846
  this.object.getWorldPosition(this._lastObjectPosition), this.object.getWorldQuaternion(this._lastObjectQuaternion), this._initialized = !0;
1739
1847
  }
1740
1848
  _removeRagdoll() {
1741
- var t, a, e;
1849
+ var e, a, t;
1742
1850
  for (const b of this._constraints)
1743
- (t = this._cannon) == null || t.world.removeConstraint(b);
1851
+ (e = this._cannon) == null || e.world.removeConstraint(b);
1744
1852
  this._constraints = [], this._ragdollConstraints = null;
1745
1853
  for (const b of this._bodies)
1746
1854
  (a = this._cannon) == null || a.world.removeBody(b);
1747
1855
  this._bodies = [], this._parts = null;
1748
1856
  for (const b of this._meshes)
1749
- b.geometry.dispose(), (e = this._meshContainer) == null || e.remove(b);
1857
+ b.geometry.dispose(), (t = this._meshContainer) == null || t.remove(b);
1750
1858
  this._meshes = [];
1751
1859
  }
1752
1860
  /**
1753
1861
  * Reset the ragdoll to its initial position relative to the object
1754
1862
  */
1755
1863
  resetPosition() {
1756
- var d, r;
1864
+ var o, d;
1757
1865
  if (!this._parts) return;
1758
- const t = this.object.getWorldPosition(new F()), a = this.scale, e = 0.5 * a, b = 0.5 * a, s = 0.5 * a, i = 0.4 * a, n = 0.6 * a, l = 0.25 * a, p = 0.1 * a, j = 0.4 * a, P = 0.4 * a, k = (h, f) => {
1759
- h.position.copy(f), h.velocity.set(0, 0, 0), h.angularVelocity.set(0, 0, 0), h.quaternion.set(0, 0, 0, 1);
1866
+ const e = this.object.getWorldPosition(new F()), a = this.scale, t = 0.5 * a, b = 0.5 * a, s = 0.5 * a, i = 0.4 * a, c = 0.6 * a, f = 0.25 * a, p = 0.1 * a, j = 0.4 * a, P = 0.4 * a, k = (h, l) => {
1867
+ h.position.copy(l), h.velocity.set(0, 0, 0), h.angularVelocity.set(0, 0, 0), h.quaternion.set(0, 0, 0, 1);
1760
1868
  };
1761
1869
  k(this._parts.lowerLeftLeg, new y(
1762
- t.x + e / 2,
1763
- t.y + b / 2,
1764
- t.z
1870
+ e.x + t / 2,
1871
+ e.y + b / 2,
1872
+ e.z
1765
1873
  )), k(this._parts.lowerRightLeg, new y(
1766
- t.x - e / 2,
1767
- t.y + b / 2,
1768
- t.z
1874
+ e.x - t / 2,
1875
+ e.y + b / 2,
1876
+ e.z
1769
1877
  )), k(this._parts.upperLeftLeg, new y(
1770
- t.x + e / 2,
1771
- t.y + b + s / 2,
1772
- t.z
1878
+ e.x + t / 2,
1879
+ e.y + b + s / 2,
1880
+ e.z
1773
1881
  )), k(this._parts.upperRightLeg, new y(
1774
- t.x - e / 2,
1775
- t.y + b + s / 2,
1776
- t.z
1882
+ e.x - t / 2,
1883
+ e.y + b + s / 2,
1884
+ e.z
1777
1885
  ));
1778
- const M = t.y + b + s + i / 2;
1779
- k(this._parts.pelvis, new y(t.x, M, t.z));
1780
- const m = M + i / 2 + n / 2;
1781
- k(this._parts.upperBody, new y(t.x, m, t.z));
1782
- const o = m + n / 2 + l + p;
1783
- k(this._parts.head, new y(t.x, o, t.z));
1784
- const c = m + n / 2;
1886
+ const M = e.y + b + s + i / 2;
1887
+ k(this._parts.pelvis, new y(e.x, M, e.z));
1888
+ const m = M + i / 2 + c / 2;
1889
+ k(this._parts.upperBody, new y(e.x, m, e.z));
1890
+ const r = m + c / 2 + f + p;
1891
+ k(this._parts.head, new y(e.x, r, e.z));
1892
+ const n = m + c / 2;
1785
1893
  k(this._parts.upperLeftArm, new y(
1786
- t.x + e / 2 + j / 2,
1787
- c,
1788
- t.z
1894
+ e.x + t / 2 + j / 2,
1895
+ n,
1896
+ e.z
1789
1897
  )), k(this._parts.upperRightArm, new y(
1790
- t.x - e / 2 - j / 2,
1791
- c,
1792
- t.z
1898
+ e.x - t / 2 - j / 2,
1899
+ n,
1900
+ e.z
1793
1901
  )), k(this._parts.lowerLeftArm, new y(
1794
- t.x + e / 2 + j + P / 2,
1795
- c,
1796
- t.z
1902
+ e.x + t / 2 + j + P / 2,
1903
+ n,
1904
+ e.z
1797
1905
  )), k(this._parts.lowerRightArm, new y(
1798
- t.x - e / 2 - j - P / 2,
1799
- c,
1800
- t.z
1801
- )), (r = (d = this.object).setDirty) == null || r.call(d, { source: "CannonRagdollComponent" });
1906
+ e.x - t / 2 - j - P / 2,
1907
+ n,
1908
+ e.z
1909
+ )), (d = (o = this.object).setDirty) == null || d.call(o, { source: "CannonRagdollComponent" });
1802
1910
  }
1803
1911
  /**
1804
1912
  * Apply an impulse to all bodies
1805
1913
  */
1806
- applyImpulse(t, a) {
1807
- for (const e of this._bodies)
1808
- e.applyImpulse(t, a || e.position);
1914
+ applyImpulse(e, a) {
1915
+ for (const t of this._bodies)
1916
+ t.applyImpulse(e, a || t.position);
1809
1917
  }
1810
1918
  /**
1811
1919
  * Apply an impulse to a specific body part
1812
1920
  */
1813
- applyImpulseToPart(t, a, e) {
1921
+ applyImpulseToPart(e, a, t) {
1814
1922
  if (!this._parts) return;
1815
- const b = this._parts[t];
1816
- b && b.applyImpulse(a, e || b.position);
1923
+ const b = this._parts[e];
1924
+ b && b.applyImpulse(a, t || b.position);
1817
1925
  }
1818
1926
  _updateMeshVisibility() {
1819
1927
  this._meshContainer && (this._meshContainer.visible = !this.hideRagdollMeshes);
1820
1928
  }
1821
1929
  _findCharacterMeshes() {
1822
- this._characterMeshes = [], this.object.traverse((t) => {
1823
- t.isSkinnedMesh && this._characterMeshes.push(t);
1930
+ this._characterMeshes = [], this.object.traverse((e) => {
1931
+ e.isSkinnedMesh && this._characterMeshes.push(e);
1824
1932
  });
1825
1933
  }
1826
1934
  _buildBoneMap() {
1827
- this._boneMap.clear(), this.object.traverse((t) => {
1828
- if (t.isBone) {
1829
- const a = t;
1935
+ this._boneMap.clear(), this.object.traverse((e) => {
1936
+ if (e.isBone) {
1937
+ const a = e;
1830
1938
  this._boneMap.set(a.name, a), this._boneMap.set(a.name.toLowerCase(), a);
1831
1939
  }
1832
1940
  });
1833
1941
  }
1834
- _findBone(t) {
1835
- for (const a of t) {
1836
- const e = this._boneMap.get(a) || this._boneMap.get(a.toLowerCase());
1837
- if (e) return e;
1942
+ _findBone(e) {
1943
+ for (const a of e) {
1944
+ const t = this._boneMap.get(a) || this._boneMap.get(a.toLowerCase());
1945
+ if (t) return t;
1838
1946
  }
1839
1947
  return null;
1840
1948
  }
1841
- _getBoneWorldPosition(t) {
1842
- return t.getWorldPosition(this._tempWorldPos), this._tempWorldPos.clone();
1949
+ _getBoneWorldPosition(e) {
1950
+ return e.getWorldPosition(this._tempWorldPos), this._tempWorldPos.clone();
1843
1951
  }
1844
- _getBoneWorldQuaternion(t) {
1845
- return t.getWorldQuaternion(this._tempWorldQuat), this._tempWorldQuat.clone();
1952
+ _getBoneWorldQuaternion(e) {
1953
+ return e.getWorldQuaternion(this._tempWorldQuat), this._tempWorldQuat.clone();
1846
1954
  }
1847
1955
  start() {
1848
1956
  super.start(), setTimeout(() => {
@@ -1855,35 +1963,35 @@ let na = class extends oa {
1855
1963
  * @param impulse Optional initial impulse to apply (e.g., from bullet impact)
1856
1964
  * @param impactPoint Optional world point where impulse is applied
1857
1965
  */
1858
- activate(t, a) {
1859
- this._isActive || (this._parts || this._createRagdoll(), this._storeInitialBoneQuats(), this._storeInitialBodyQuats(), this._activateBodies(), this._meshContainer && (this._meshContainer.visible = !this.hideRagdollMeshes), t && this._parts && (this._parts.pelvis.applyImpulse(t, new y(0, 0, 0)), this._parts.upperBody.applyImpulse(t, new y(0, 0, 0)), this._parts.head.applyImpulse(t, new y(0, 0, 0))), this._isActive = !0);
1966
+ activate(e, a) {
1967
+ this._isActive || (this._parts || this._createRagdoll(), this._storeInitialBoneQuats(), this._storeInitialBodyQuats(), this._activateBodies(), this._meshContainer && (this._meshContainer.visible = !this.hideRagdollMeshes), e && this._parts && (this._parts.pelvis.applyImpulse(e, new y(0, 0, 0)), this._parts.upperBody.applyImpulse(e, new y(0, 0, 0)), this._parts.head.applyImpulse(e, new y(0, 0, 0))), this._isActive = !0);
1860
1968
  }
1861
1969
  /**
1862
1970
  * Store initial bone quaternions (both local and world space) for rotation offset calculation
1863
1971
  */
1864
1972
  _storeInitialBoneQuats() {
1865
1973
  this._initialBoneQuats.clear(), this._initialBoneWorldQuats.clear();
1866
- const t = (a) => {
1867
- const e = this._findBone(a);
1868
- if (e) {
1869
- this._initialBoneQuats.set(e.name, e.quaternion.clone());
1974
+ const e = (a) => {
1975
+ const t = this._findBone(a);
1976
+ if (t) {
1977
+ this._initialBoneQuats.set(t.name, t.quaternion.clone());
1870
1978
  const b = new C();
1871
- e.getWorldQuaternion(b), this._initialBoneWorldQuats.set(e.name, b);
1979
+ t.getWorldQuaternion(b), this._initialBoneWorldQuats.set(t.name, b);
1872
1980
  }
1873
1981
  };
1874
- t(this._boneNames.head), t(this._boneNames.spine2), t(this._boneNames.hips), t(this._boneNames.leftUpLeg), t(this._boneNames.rightUpLeg), t(this._boneNames.leftLeg), t(this._boneNames.rightLeg), t(this._boneNames.leftArm), t(this._boneNames.rightArm), t(this._boneNames.leftForeArm), t(this._boneNames.rightForeArm);
1982
+ e(this._boneNames.head), e(this._boneNames.spine2), e(this._boneNames.hips), e(this._boneNames.leftUpLeg), e(this._boneNames.rightUpLeg), e(this._boneNames.leftLeg), e(this._boneNames.rightLeg), e(this._boneNames.leftArm), e(this._boneNames.rightArm), e(this._boneNames.leftForeArm), e(this._boneNames.rightForeArm);
1875
1983
  }
1876
1984
  /**
1877
1985
  * Store initial body quaternions (world space) for rotation offset calculation
1878
1986
  */
1879
1987
  _storeInitialBodyQuats() {
1880
1988
  this._initialBodyQuats.clear();
1881
- for (const t of this._bodies)
1882
- this._initialBodyQuats.set(t, new C(
1883
- t.quaternion.x,
1884
- t.quaternion.y,
1885
- t.quaternion.z,
1886
- t.quaternion.w
1989
+ for (const e of this._bodies)
1990
+ this._initialBodyQuats.set(e, new C(
1991
+ e.quaternion.x,
1992
+ e.quaternion.y,
1993
+ e.quaternion.z,
1994
+ e.quaternion.w
1887
1995
  ));
1888
1996
  }
1889
1997
  /**
@@ -1895,38 +2003,38 @@ let na = class extends oa {
1895
2003
  }
1896
2004
  _matchBonesToRagdoll() {
1897
2005
  if (!this._parts) return;
1898
- const t = (a, e) => {
1899
- const b = this._findBone(e);
2006
+ const e = (a, t) => {
2007
+ const b = this._findBone(t);
1900
2008
  if (b) {
1901
2009
  const s = this._getBoneWorldPosition(b), i = this._getBoneWorldQuaternion(b);
1902
2010
  a.position.set(s.x, s.y, s.z), a.quaternion.set(i.x, i.y, i.z, i.w), a.velocity.set(0, 0, 0), a.angularVelocity.set(0, 0, 0);
1903
2011
  }
1904
2012
  };
1905
- t(this._parts.head, this._boneNames.head), t(this._parts.upperBody, this._boneNames.spine2), t(this._parts.pelvis, this._boneNames.hips), t(this._parts.upperLeftLeg, this._boneNames.leftUpLeg), t(this._parts.upperRightLeg, this._boneNames.rightUpLeg), t(this._parts.lowerLeftLeg, this._boneNames.leftLeg), t(this._parts.lowerRightLeg, this._boneNames.rightLeg), t(this._parts.upperLeftArm, this._boneNames.leftArm), t(this._parts.upperRightArm, this._boneNames.rightArm), t(this._parts.lowerLeftArm, this._boneNames.leftForeArm), t(this._parts.lowerRightArm, this._boneNames.rightForeArm);
2013
+ e(this._parts.head, this._boneNames.head), e(this._parts.upperBody, this._boneNames.spine2), e(this._parts.pelvis, this._boneNames.hips), e(this._parts.upperLeftLeg, this._boneNames.leftUpLeg), e(this._parts.upperRightLeg, this._boneNames.rightUpLeg), e(this._parts.lowerLeftLeg, this._boneNames.leftLeg), e(this._parts.lowerRightLeg, this._boneNames.rightLeg), e(this._parts.upperLeftArm, this._boneNames.leftArm), e(this._parts.upperRightArm, this._boneNames.rightArm), e(this._parts.lowerLeftArm, this._boneNames.leftForeArm), e(this._parts.lowerRightArm, this._boneNames.rightForeArm);
1906
2014
  }
1907
2015
  _activateBodies() {
1908
- for (const t of this._bodies)
1909
- t.type = N.DYNAMIC, t.mass = this.mass, t.updateMassProperties(), t.wakeUp();
2016
+ for (const e of this._bodies)
2017
+ e.type = N.DYNAMIC, e.mass = this.mass, e.updateMassProperties(), e.wakeUp();
1910
2018
  }
1911
2019
  _deactivateBodies() {
1912
- for (const t of this._bodies)
1913
- t.type = N.KINEMATIC, t.mass = 0, t.velocity.set(0, 0, 0), t.angularVelocity.set(0, 0, 0);
2020
+ for (const e of this._bodies)
2021
+ e.type = N.KINEMATIC, e.mass = 0, e.velocity.set(0, 0, 0), e.angularVelocity.set(0, 0, 0);
1914
2022
  }
1915
- _setCharacterVisible(t) {
2023
+ _setCharacterVisible(e) {
1916
2024
  for (const a of this._characterMeshes)
1917
- a.visible = t;
2025
+ a.visible = e;
1918
2026
  }
1919
- _findClosestBody(t) {
1920
- let a = null, e = 1 / 0;
2027
+ _findClosestBody(e) {
2028
+ let a = null, t = 1 / 0;
1921
2029
  for (const b of this._bodies) {
1922
- const s = b.position.x - t.x, i = b.position.y - t.y, n = b.position.z - t.z, l = s * s + i * i + n * n;
1923
- l < e && (e = l, a = b);
2030
+ const s = b.position.x - e.x, i = b.position.y - e.y, c = b.position.z - e.z, f = s * s + i * i + c * c;
2031
+ f < t && (t = f, a = b);
1924
2032
  }
1925
2033
  return a;
1926
2034
  }
1927
2035
  };
1928
- na.ComponentType = "CannonRagdollComponent";
1929
- na.StateProperties = [
2036
+ oa.ComponentType = "CannonRagdollComponent";
2037
+ oa.StateProperties = [
1930
2038
  "scale",
1931
2039
  "angle",
1932
2040
  "angleShoulders",
@@ -1935,37 +2043,37 @@ na.StateProperties = [
1935
2043
  "autoCreateOnInit",
1936
2044
  "hideRagdollMeshes"
1937
2045
  ];
1938
- na = Kt([
1939
- Sa("Ragdoll")
1940
- ], na);
1941
- var Ht = Object.defineProperty, Jt = Object.getOwnPropertyDescriptor, W = (t, a, e, b) => {
1942
- for (var s = b > 1 ? void 0 : b ? Jt(a, e) : a, i = t.length - 1, n; i >= 0; i--)
1943
- (n = t[i]) && (s = (b ? n(a, e, s) : n(s)) || s);
1944
- return b && s && Ht(a, e, s), s;
2046
+ oa = bb([
2047
+ La("Ragdoll")
2048
+ ], oa);
2049
+ var ib = Object.defineProperty, sb = Object.getOwnPropertyDescriptor, W = (e, a, t, b) => {
2050
+ for (var s = b > 1 ? void 0 : b ? sb(a, t) : a, i = e.length - 1, c; i >= 0; i--)
2051
+ (c = e[i]) && (s = (b ? c(a, t, s) : c(s)) || s);
2052
+ return b && s && ib(a, t, s), s;
1945
2053
  };
1946
- let T = class extends La {
2054
+ let T = class extends Ra {
1947
2055
  constructor() {
1948
- super(...arguments), this.uuid = Ne();
2056
+ super(...arguments), this.uuid = Le();
1949
2057
  }
1950
2058
  };
1951
2059
  W([
1952
- Be()
2060
+ Ue()
1953
2061
  ], T.prototype, "name", 2);
1954
2062
  W([
1955
- Le()
2063
+ Ge()
1956
2064
  ], T.prototype, "uuid", 2);
1957
2065
  W([
1958
- ne()
2066
+ de()
1959
2067
  ], T.prototype, "friction", 2);
1960
2068
  W([
1961
- ne()
2069
+ de()
1962
2070
  ], T.prototype, "restitution", 2);
1963
2071
  T = W([
1964
- Sa("Cannon Material")
2072
+ La("Cannon Material")
1965
2073
  ], T);
1966
- Ba.MakeSerializable(La, "CannonMaterial", ["friction", "restitution"]);
1967
- Ba.MakeSerializable(T, "CannonMaterial", ["name", "uuid", "friction", "restitution"]);
1968
- Ba.MakeSerializable(pe, "CannonContactMaterial", [
2074
+ za.MakeSerializable(Ra, "CannonMaterial", ["friction", "restitution"]);
2075
+ za.MakeSerializable(T, "CannonMaterial", ["name", "uuid", "friction", "restitution"]);
2076
+ za.MakeSerializable(ue, "CannonContactMaterial", [
1969
2077
  /* 'materials', */
1970
2078
  "friction",
1971
2079
  "restitution",
@@ -1974,20 +2082,20 @@ Ba.MakeSerializable(pe, "CannonContactMaterial", [
1974
2082
  "frictionEquationStiffness",
1975
2083
  "frictionEquationRelaxation"
1976
2084
  ]);
1977
- ze.AddClass({
2085
+ Oe.AddClass({
1978
2086
  key: "CannonMaterial",
1979
- getId(t) {
1980
- return t.uuid;
2087
+ getId(e) {
2088
+ return e.uuid;
1981
2089
  },
1982
- getLabel(t) {
1983
- return t ? t.name : "Cannon Material";
2090
+ getLabel(e) {
2091
+ return e ? e.name : "Cannon Material";
1984
2092
  },
1985
- setName(t, a) {
1986
- t.name = a;
2093
+ setName(e, a) {
2094
+ e.name = a;
1987
2095
  },
1988
2096
  ctor: T
1989
2097
  });
1990
- let z = class extends Ce {
2098
+ let z = class extends ze {
1991
2099
  // @uiButton('Make Root Bodies')
1992
2100
  // makeRootBodies = () => {
1993
2101
  // this._viewer?.scene.modelRoot.children.forEach((child) => {
@@ -2010,17 +2118,17 @@ let z = class extends Ce {
2010
2118
  // // })
2011
2119
  // // this._viewer?.setDirty()
2012
2120
  // }
2013
- constructor(t = !0, a = !1) {
2014
- super(), this._world = new fe(), this.enabled = !0, this.running = !0, this.nextSteps = 0, this.stepPhysics = {
2121
+ constructor(e = !0, a = !1) {
2122
+ super(), this._world = new me(), this.enabled = !0, this.running = !0, this.nextSteps = 0, this.stepPhysics = {
2015
2123
  stepCount: 100,
2016
2124
  delta: 0.1,
2017
2125
  step: () => {
2018
2126
  this.nextSteps = this.stepPhysics.stepCount;
2019
2127
  }
2020
- }, this.defaultMaterial = new T("default"), this.dependencies = [L], this._v1 = new F(), this._v2 = new F(), this._s2 = new F(), this._q1 = new C(), this._q2 = new C(), this._m1 = new Ya(), this._m2 = new Ya(), this.frameFadeToggled = !1, this._preFrame = (b) => {
2128
+ }, this.defaultMaterial = new T("default"), this.dependencies = [L], this._v1 = new F(), this._v2 = new F(), this._s2 = new F(), this._q1 = new C(), this._q2 = new C(), this._m1 = new $a(), this._m2 = new $a(), this.frameFadeToggled = !1, this._preFrame = (b) => {
2021
2129
  const s = this._viewer;
2022
2130
  if (!s || this.isDisabled()) return;
2023
- const i = s.getPlugin(Se);
2131
+ const i = s.getPlugin(Re);
2024
2132
  if (!this.running)
2025
2133
  if (this.nextSteps > 0) this.running = !0;
2026
2134
  else {
@@ -2030,111 +2138,111 @@ let z = class extends Ce {
2030
2138
  i && !this.frameFadeToggled && i.disable(z.PluginType);
2031
2139
  try {
2032
2140
  if (this.nextSteps > 0)
2033
- for (let l = 0; l < this.stepPhysics.stepCount; l++)
2141
+ for (let f = 0; f < this.stepPhysics.stepCount; f++)
2034
2142
  this._world.step(this.stepPhysics.delta);
2035
2143
  else
2036
2144
  this._world.fixedStep();
2037
- } catch (l) {
2038
- console.error("[CannonPhysicsPlugin] Error stepping physics world"), console.error(l);
2145
+ } catch (f) {
2146
+ console.error("[CannonPhysicsPlugin] Error stepping physics world"), console.error(f);
2039
2147
  }
2040
2148
  this._dirty = !1;
2041
- let n = !1;
2042
- for (const l of this.bodyComponents.values()) {
2043
- if (l.mass === 0) continue;
2044
- const p = l.object, j = l.body;
2045
- p && (n = !1, p.updateWorldMatrix(!0, !1), p.getWorldPosition(this._v2), p.getWorldQuaternion(this._q2), p.getWorldScale(this._s2), this._v1.copy(j.position), !n && this._v2.manhattanDistanceTo(this._v1) > 0 && (n = !0), this._q1.copy(j.quaternion), !n && this._q2.angleTo(this._q1) > 0 && (n = !0), n && (this._m1.compose(this._v1, this._q1, this._s2), p.parent ? (this._m2.copy(p.parent.matrixWorld).invert(), this._m2.multiply(this._m1), this._m2.decompose(this._v1, this._q1, this._s2), p.position.copy(this._v1), p.quaternion.copy(this._q1), p.setDirty && p.setDirty({ change: "transform", source: "CannonPhysicsPlugin" })) : console.error("[CannonPhysicsPlugin] Mesh has no parent, cannot set world transform", p)));
2149
+ let c = !1;
2150
+ for (const f of this.bodyComponents.values()) {
2151
+ if (f.mass === 0) continue;
2152
+ const p = f.object, j = f.body;
2153
+ p && (c = !1, p.updateWorldMatrix(!0, !1), p.getWorldPosition(this._v2), p.getWorldQuaternion(this._q2), p.getWorldScale(this._s2), this._v1.copy(j.position), !c && this._v2.manhattanDistanceTo(this._v1) > 0 && (c = !0), this._q1.copy(j.quaternion), !c && this._q2.angleTo(this._q1) > 0 && (c = !0), c && (this._m1.compose(this._v1, this._q1, this._s2), p.parent ? (this._m2.copy(p.parent.matrixWorld).invert(), this._m2.multiply(this._m1), this._m2.decompose(this._v1, this._q1, this._s2), p.position.copy(this._v1), p.quaternion.copy(this._q1), p.setDirty && p.setDirty({ change: "transform", source: "CannonPhysicsPlugin" })) : console.error("[CannonPhysicsPlugin] Mesh has no parent, cannot set world transform", p)));
2046
2154
  }
2047
- this._dirty = n, s.setDirty(), s.renderManager.resetShadows(), this.nextSteps > 0 && (this.running = !1, this.nextSteps = 0);
2155
+ this._dirty = c, s.setDirty(), s.renderManager.resetShadows(), this.nextSteps > 0 && (this.running = !1, this.nextSteps = 0);
2048
2156
  }, this._onRemove = [], this._objectAdd = (b) => {
2049
- var l, p;
2157
+ var f, p;
2050
2158
  const s = b.object;
2051
- ((l = s == null ? void 0 : s.userData) == null ? void 0 : l.physicsMass) === void 0 || !((p = this._viewer) != null && p.getPlugin(L)) || L.GetComponentData(s, this.componentTypes.body);
2159
+ ((f = s == null ? void 0 : s.userData) == null ? void 0 : f.physicsMass) === void 0 || !((p = this._viewer) != null && p.getPlugin(L)) || L.GetComponentData(s, this.componentTypes.body);
2052
2160
  }, this._objectRemove = (b) => {
2053
2161
  var i;
2054
2162
  const s = b.object;
2055
2163
  (i = s == null ? void 0 : s.userData) != null && i.physicsMass;
2056
2164
  }, this.componentTypes = {
2057
- body: ja,
2165
+ body: ya,
2058
2166
  shape: ca,
2059
- ragdoll: na
2060
- }, this.bodyComponents = /* @__PURE__ */ new Set(), this.cannonBodies = /* @__PURE__ */ new WeakMap(), this.enabled = t, this.running = a, this.defaultMaterial.friction = 0, this.defaultMaterial.restitution = 0, this._world.defaultMaterial = this.defaultMaterial, this._world.defaultContactMaterial.materials = [this.defaultMaterial, this.defaultMaterial];
2061
- const e = {};
2167
+ ragdoll: oa
2168
+ }, this.bodyComponents = /* @__PURE__ */ new Set(), this.cannonBodies = /* @__PURE__ */ new WeakMap(), this.enabled = e, this.running = a, this.defaultMaterial.friction = 0, this.defaultMaterial.restitution = 0, this._world.defaultMaterial = this.defaultMaterial, this._world.defaultContactMaterial.materials = [this.defaultMaterial, this.defaultMaterial];
2169
+ const t = {};
2062
2170
  this._world.addEventListener("beginContact", (b) => {
2063
2171
  const s = this.cannonBodies.get(b.bodyA), i = this.cannonBodies.get(b.bodyB);
2064
2172
  if (!s || !i) {
2065
2173
  console.warn("[CannonPhysicsPlugin] Contact bodies not managed by plugin", b.bodyA, b.bodyB);
2066
2174
  return;
2067
2175
  }
2068
- e.object = i.object, e.body = i, L.ObjectDispatch(s.object, "onBeginContact", e), e.object = s.object, e.body = s, L.ObjectDispatch(i.object, "onBeginContact", e);
2176
+ t.object = i.object, t.body = i, L.ObjectDispatch(s.object, "onBeginContact", t), t.object = s.object, t.body = s, L.ObjectDispatch(i.object, "onBeginContact", t);
2069
2177
  }), this._world.addEventListener("endContact", (b) => {
2070
2178
  const s = this.cannonBodies.get(b.bodyA), i = this.cannonBodies.get(b.bodyB);
2071
2179
  if (!s || !i) {
2072
2180
  console.warn("[CannonPhysicsPlugin] Contact bodies not managed by plugin", b.bodyA, b.bodyB);
2073
2181
  return;
2074
2182
  }
2075
- e.object = i.object, e.body = i, L.ObjectDispatch(s.object, "onEndContact", e), e.object = s.object, e.body = s, L.ObjectDispatch(i.object, "onEndContact", e);
2183
+ t.object = i.object, t.body = i, L.ObjectDispatch(s.object, "onEndContact", t), t.object = s.object, t.body = s, L.ObjectDispatch(i.object, "onEndContact", t);
2076
2184
  }), this._world.gravity.set(0, -9.81, 0);
2077
2185
  }
2078
2186
  get world() {
2079
2187
  return this._world;
2080
2188
  }
2081
- async onAdded(t) {
2082
- super.onAdded(t);
2083
- const a = t.on("preFrame", {
2189
+ async onAdded(e) {
2190
+ super.onAdded(e);
2191
+ const a = e.on("preFrame", {
2084
2192
  order: -1,
2085
2193
  // before most things
2086
2194
  callback: this._preFrame
2087
2195
  });
2088
- a && this._onRemove.push(a), Object.values(this.componentTypes).forEach((e) => {
2196
+ a && this._onRemove.push(a), Object.values(this.componentTypes).forEach((t) => {
2089
2197
  var b;
2090
- (b = t.getPlugin(L)) == null || b.addComponentType(e);
2091
- }), t.object3dManager.getObjects().forEach((e) => this._objectAdd({ object: e })), t.object3dManager.addEventListener("objectAdd", this._objectAdd), t.object3dManager.addEventListener("objectRemove", this._objectRemove), t.forPlugin(ce, (e) => {
2092
- e.helpers.push(ya);
2093
- }, (e) => {
2094
- const b = e.helpers.indexOf(ya);
2095
- b >= 0 && e.helpers.splice(b, 1);
2198
+ (b = e.getPlugin(L)) == null || b.addComponentType(t);
2199
+ }), e.object3dManager.getObjects().forEach((t) => this._objectAdd({ object: t })), e.object3dManager.addEventListener("objectAdd", this._objectAdd), e.object3dManager.addEventListener("objectRemove", this._objectRemove), e.forPlugin(re, (t) => {
2200
+ t.helpers.push(ka);
2201
+ }, (t) => {
2202
+ const b = t.helpers.indexOf(ka);
2203
+ b >= 0 && t.helpers.splice(b, 1);
2096
2204
  });
2097
2205
  }
2098
- onRemove(t) {
2206
+ onRemove(e) {
2099
2207
  this._onRemove.forEach((a) => a()), Object.values(this.componentTypes).forEach((a) => {
2100
- var e;
2101
- (e = t.getPlugin(L)) == null || e.removeComponentType(a);
2102
- }), t.object3dManager.removeEventListener("objectAdd", this._objectAdd), t.object3dManager.removeEventListener("objectRemove", this._objectRemove), t.object3dManager.getObjects().forEach((a) => this._objectRemove({ object: a })), super.onRemove(t);
2208
+ var t;
2209
+ (t = e.getPlugin(L)) == null || t.removeComponentType(a);
2210
+ }), e.object3dManager.removeEventListener("objectAdd", this._objectAdd), e.object3dManager.removeEventListener("objectRemove", this._objectRemove), e.object3dManager.getObjects().forEach((a) => this._objectRemove({ object: a })), super.onRemove(e);
2103
2211
  }
2104
- addBody(t) {
2105
- this.bodyComponents.has(t) || (this.bodyComponents.add(t), this._world.addBody(t.body), this.cannonBodies.set(t.body, t));
2212
+ addBody(e) {
2213
+ this.bodyComponents.has(e) || (this.bodyComponents.add(e), this._world.addBody(e.body), this.cannonBodies.set(e.body, e));
2106
2214
  }
2107
- removeBody(t) {
2108
- this.bodyComponents.has(t) && (this.bodyComponents.delete(t), this._world.removeBody(t.body), this.cannonBodies.delete(t.body));
2215
+ removeBody(e) {
2216
+ this.bodyComponents.has(e) && (this.bodyComponents.delete(e), this._world.removeBody(e.body), this.cannonBodies.delete(e.body));
2109
2217
  }
2110
2218
  };
2111
2219
  z.PluginType = "CannonPhysicsPlugin";
2112
2220
  z.CannonTypes = {
2113
2221
  Body: N,
2114
2222
  Shape: q,
2115
- World: fe,
2116
- Material: La,
2117
- ContactMaterial: pe
2223
+ World: me,
2224
+ Material: Ra,
2225
+ ContactMaterial: ue
2118
2226
  };
2119
2227
  W([
2120
- oe(),
2121
- de()
2228
+ he(),
2229
+ fe()
2122
2230
  ], z.prototype, "enabled", 2);
2123
2231
  W([
2124
- de("Running", (t) => ({ onChange: () => {
2232
+ fe("Running", (e) => ({ onChange: () => {
2125
2233
  } }))
2126
2234
  ], z.prototype, "running", 2);
2127
2235
  W([
2128
- re()
2236
+ le()
2129
2237
  ], z.prototype, "stepPhysics", 2);
2130
2238
  W([
2131
- re(),
2132
- oe()
2239
+ le(),
2240
+ he()
2133
2241
  ], z.prototype, "defaultMaterial", 2);
2134
2242
  z = W([
2135
- Sa("Physics")
2243
+ La("Physics")
2136
2244
  ], z);
2137
- const Vt = ["visible", "name", "position", "quaternion", "scale"], Yt = ["name"], Xt = [
2245
+ const nb = ["visible", "name", "position", "quaternion", "scale"], cb = ["name"], ob = [
2138
2246
  "position",
2139
2247
  "quaternion",
2140
2248
  "scale",
@@ -2144,9 +2252,9 @@ const Vt = ["visible", "name", "position", "quaternion", "scale"], Yt = ["name"]
2144
2252
  "frustumCulled",
2145
2253
  "renderOrder"
2146
2254
  ];
2147
- class Zt {
2148
- constructor(a, e) {
2149
- this.viewer = a, this.onError = e, this.cache = /* @__PURE__ */ new Map(), this.pending = /* @__PURE__ */ new Set(), this.onProcessRaw = (b) => {
2255
+ class rb {
2256
+ constructor(a, t) {
2257
+ this.viewer = a, this.onError = t, this.cache = /* @__PURE__ */ new Map(), this.pending = /* @__PURE__ */ new Set(), this.onProcessRaw = (b) => {
2150
2258
  const s = b.data;
2151
2259
  if (!(s != null && s.isObject3D)) return;
2152
2260
  const i = this.loadObjectDependencies(s);
@@ -2158,39 +2266,39 @@ class Zt {
2158
2266
  }
2159
2267
  async loadObjectDependencies(a) {
2160
2268
  if (!a.traverse) return;
2161
- const e = [], b = /* @__PURE__ */ new Set();
2162
- a.traverse((n) => {
2163
- e.push(n);
2164
- const l = n.material;
2165
- l && (Array.isArray(l) ? l : [l]).forEach((j) => (j == null ? void 0 : j.isMaterial) && b.add(j));
2269
+ const t = [], b = /* @__PURE__ */ new Set();
2270
+ a.traverse((c) => {
2271
+ t.push(c);
2272
+ const f = c.material;
2273
+ f && (Array.isArray(f) ? f : [f]).forEach((j) => (j == null ? void 0 : j.isMaterial) && b.add(j));
2166
2274
  });
2167
2275
  const s = [];
2168
- for (const n of e) {
2169
- if (!this.isEmbeddedReference(n)) continue;
2170
- if (n._loadingPromise) {
2171
- s.push(n._loadingPromise.then(() => {
2276
+ for (const c of t) {
2277
+ if (!this.isEmbeddedReference(c)) continue;
2278
+ if (c._loadingPromise) {
2279
+ s.push(c._loadingPromise.then(() => {
2172
2280
  }));
2173
2281
  continue;
2174
2282
  }
2175
- n.userData.sProperties.length || (n.userData.sProperties = [...Vt]), n._sChildren || (n._sChildren = []);
2176
- const l = this.loadReference(n);
2177
- n._loadingPromise = l, s.push(l);
2283
+ c.userData.sProperties.length || (c.userData.sProperties = [...nb]), c._sChildren || (c._sChildren = []);
2284
+ const f = this.loadReference(c);
2285
+ c._loadingPromise = f, s.push(f);
2178
2286
  }
2179
- for (const n of b) {
2180
- if (!this.isEmbeddedReference(n)) continue;
2181
- if (n._loadingPromise) {
2182
- s.push(n._loadingPromise.then(() => {
2287
+ for (const c of b) {
2288
+ if (!this.isEmbeddedReference(c)) continue;
2289
+ if (c._loadingPromise) {
2290
+ s.push(c._loadingPromise.then(() => {
2183
2291
  }));
2184
2292
  continue;
2185
2293
  }
2186
- n.userData.sProperties.length || (n.userData.sProperties = [...Yt]);
2187
- const l = this.loadReference(n);
2188
- n._loadingPromise = l, s.push(l);
2294
+ c.userData.sProperties.length || (c.userData.sProperties = [...cb]);
2295
+ const f = this.loadReference(c);
2296
+ c._loadingPromise = f, s.push(f);
2189
2297
  }
2190
2298
  if (!s.length) return;
2191
- const i = Promise.allSettled(s).then((n) => {
2192
- for (const l of n)
2193
- l.status === "rejected" && this.onError(l.reason);
2299
+ const i = Promise.allSettled(s).then((c) => {
2300
+ for (const f of c)
2301
+ f.status === "rejected" && this.onError(f.reason);
2194
2302
  });
2195
2303
  a._loadingPromise = i, this.track(i), await i;
2196
2304
  }
@@ -2202,13 +2310,13 @@ class Zt {
2202
2310
  var b;
2203
2311
  return typeof ((b = a.userData) == null ? void 0 : b.rootPath) == "string" && !a.__rootPath && !a.userData.rootPathRefresh && Array.isArray(a.userData.sProperties);
2204
2312
  }
2205
- loadAsset(a, e) {
2313
+ loadAsset(a, t) {
2206
2314
  let b = this.cache.get(a);
2207
- return b || (b = this.importer.importSingle(a, e || {}), this.cache.set(a, b)), b;
2315
+ return b || (b = this.importer.importSingle(a, t || {}), this.cache.set(a, b)), b;
2208
2316
  }
2209
2317
  async loadReference(a) {
2210
- const e = a.userData.rootPath, b = await this.loadAsset(e, a.userData.rootPathOptions);
2211
- if (!b) throw new Error(`Unable to load nested asset from ${e}`);
2318
+ const t = a.userData.rootPath, b = await this.loadAsset(t, a.userData.rootPathOptions);
2319
+ if (!b) throw new Error(`Unable to load nested asset from ${t}`);
2212
2320
  b._loadingPromise && await b._loadingPromise;
2213
2321
  const s = a, i = a;
2214
2322
  if (s.isObject3D && b.isObject3D) {
@@ -2219,183 +2327,183 @@ class Zt {
2219
2327
  this.updateMaterial(b, i);
2220
2328
  return;
2221
2329
  }
2222
- throw new Error(`Nested asset at ${e} does not match its reference type`);
2330
+ throw new Error(`Nested asset at ${t} does not match its reference type`);
2223
2331
  }
2224
- updateObject(a, e) {
2225
- var l;
2226
- if (e._sChildren)
2227
- for (const p of [...e.children])
2228
- e._sChildren.includes(p) || p.removeFromParent();
2332
+ updateObject(a, t) {
2333
+ var f;
2334
+ if (t._sChildren)
2335
+ for (const p of [...t.children])
2336
+ t._sChildren.includes(p) || p.removeFromParent();
2229
2337
  for (const p of a.children) {
2230
- const j = ke(p);
2231
- j.userData.excludeFromExport = !0, e.add(j);
2338
+ const j = Pe(p);
2339
+ j.userData.excludeFromExport = !0, t.add(j);
2232
2340
  }
2233
- const b = e.userData.sProperties, s = e.name, i = e.visible;
2234
- for (const p of Xt) {
2341
+ const b = t.userData.sProperties, s = t.name, i = t.visible;
2342
+ for (const p of ob) {
2235
2343
  if (b.includes(p)) continue;
2236
- const j = a[p], P = e[p];
2237
- j && P && j.isVector3 || j && P && j.isQuaternion ? P.copy(j) : j !== void 0 && Object.assign(e, { [p]: j });
2344
+ const j = a[p], P = t[p];
2345
+ j && P && j.isVector3 || j && P && j.isQuaternion ? P.copy(j) : j !== void 0 && Object.assign(t, { [p]: j });
2238
2346
  }
2239
- const n = e.userData;
2240
- e.userData = {}, Re(e.userData, a.userData, ["uuid", "sProperties"]), Object.assign(e.userData, n), e.name = s, e.visible = i, e.userData.uuid = e.uuid, e.userData.sProperties = b, (l = e.setDirty) == null || l.call(e, { source: "RuntimeNestedAssetLoader" });
2347
+ const c = t.userData;
2348
+ t.userData = {}, Te(t.userData, a.userData, ["uuid", "sProperties"]), Object.assign(t.userData, c), t.name = s, t.visible = i, t.userData.uuid = t.uuid, t.userData.sProperties = b, (f = t.setDirty) == null || f.call(t, { source: "RuntimeNestedAssetLoader" });
2241
2349
  }
2242
- updateMaterial(a, e) {
2243
- const b = e.userData.sProperties, s = Ue(e, b), i = e.name;
2244
- e.setValues(a), e.name = i, Ge(s, e), e.userData.uuid = e.uuid, e.userData.sProperties = b;
2350
+ updateMaterial(a, t) {
2351
+ const b = t.userData.sProperties, s = _e(t, b), i = t.name;
2352
+ t.setValues(a), t.name = i, Qe(s, t), t.userData.uuid = t.uuid, t.userData.sProperties = b;
2245
2353
  }
2246
2354
  track(a) {
2247
2355
  this.pending.add(a);
2248
- const e = () => this.pending.delete(a);
2249
- a.then(e, e);
2356
+ const t = () => this.pending.delete(a);
2357
+ a.then(t, t);
2250
2358
  }
2251
2359
  }
2252
- function ke(t) {
2253
- const a = t.clone(!1), e = t, b = a;
2254
- b._tpRootPath = e._tpRootPath, b._tpRootUid = e._tpRootUid || t.uuid, delete a.userData.cloneParent;
2255
- for (const s of t.children) a.add(ke(s));
2360
+ function Pe(e) {
2361
+ const a = e.clone(!1), t = e, b = a;
2362
+ b._tpRootPath = t._tpRootPath, b._tpRootUid = t._tpRootUid || e.uuid, delete a.userData.cloneParent;
2363
+ for (const s of e.children) a.add(Pe(s));
2256
2364
  return a;
2257
2365
  }
2258
- function hb(t) {
2259
- return we(t, !0);
2366
+ function xb(e) {
2367
+ return Ae(e, !0);
2260
2368
  }
2261
- function lb(t) {
2262
- return we(t, !1);
2369
+ function vb(e) {
2370
+ return Ae(e, !1);
2263
2371
  }
2264
- async function we({
2265
- base: t,
2372
+ async function Ae({
2373
+ base: e,
2266
2374
  canvas: a,
2267
- onError: e,
2375
+ onError: t,
2268
2376
  fileRevisions: b = {},
2269
2377
  moduleRevision: s
2270
2378
  }, i) {
2271
- const n = sb(e);
2272
- let l, p, j, P;
2379
+ const c = mb(t);
2380
+ let f, p, j, P;
2273
2381
  try {
2274
- const k = bb(t), [M, m] = await Promise.all([
2275
- be(new URL("package.json", k)),
2276
- be(new URL("assets.json", k))
2277
- ]), o = tt(M), c = await bt(o), d = it(m), r = {
2278
- packageJson: o,
2279
- config: c,
2280
- assetsManifest: d,
2281
- mainScene: o.mainScene
2282
- }, h = new L(!1), f = new z(!0, !1);
2283
- L.AddObjectUiConfig = !1, window.MeshoptDecoder = ct, l = new _e({
2382
+ const k = pb(e), [M, m] = await Promise.all([
2383
+ ne(new URL("package.json", k)),
2384
+ ne(new URL("assets.json", k))
2385
+ ]), r = nt(M), n = await ct(r), o = ot(m), d = {
2386
+ packageJson: r,
2387
+ config: n,
2388
+ assetsManifest: o,
2389
+ mainScene: r.mainScene
2390
+ }, h = new L(!1), l = new z(!0, !1);
2391
+ L.AddObjectUiConfig = !1, window.MeshoptDecoder = dt, f = new We({
2284
2392
  canvas: a,
2285
- ...c.viewer,
2393
+ ...n.viewer,
2286
2394
  assetManager: {
2287
2395
  simpleCache: !1,
2288
2396
  storage: !1
2289
2397
  },
2290
2398
  plugins: [
2291
2399
  h,
2292
- new Te(),
2293
- f,
2294
- new Oe(),
2295
- new Qe(),
2296
- new We(!1),
2297
2400
  new qe(),
2401
+ l,
2298
2402
  new Ke(),
2299
2403
  new He(),
2300
- new Je(),
2404
+ new Je(!1),
2301
2405
  new Ve(),
2302
- new Ye()
2406
+ new Ye(),
2407
+ new Xe(),
2408
+ new Ze(),
2409
+ new $e(),
2410
+ new at()
2303
2411
  ]
2304
- }), l.timeline.endTime = 0, P = at(), h.addComponentType(Ea), h.addComponentType(sa), sa.configureViewer(l, { base: k, onError: n });
2305
- const g = st(k, d);
2306
- l.assetManager.importer.addURLModifier(g), j = () => l == null ? void 0 : l.assetManager.importer.removeURLModifier(g), p = new Zt(l, n), await ab(l, r, k, b, s), await $t(l, r, k, b, s);
2307
- const u = new URL(r.mainScene, k).href, w = await l.load(u, { importAsModelRoot: !0 });
2412
+ }), f.timeline.endTime = 0, P = it(), h.addComponentType(Na), h.addComponentType(na), na.configureViewer(f, { base: k, onError: c });
2413
+ const g = rt(k, o);
2414
+ f.assetManager.importer.addURLModifier(g), j = () => f == null ? void 0 : f.assetManager.importer.removeURLModifier(g), p = new rb(f, c), await hb(f, d, k, b, s), await db(f, d, k, b, s);
2415
+ const u = new URL(d.mainScene, k).href, w = await f.load(u, { importAsModelRoot: !0 });
2308
2416
  if (!(w != null && w.isObject3D))
2309
2417
  throw new Error(`The main scene did not load as an Object3D: ${u}`);
2310
- if (await p.loadObjectDependencies(w), await p.waitForPending(), await sa.waitForViewer(l), i) {
2311
- l.timeline.reset(), l.timeline.start(), h.start(), f.running = !0;
2312
- const D = za("main.js", k, b, s), I = await Ra(D.href);
2418
+ if (await p.loadObjectDependencies(w), await p.waitForPending(), await na.waitForViewer(f), i) {
2419
+ f.timeline.reset(), f.timeline.start(), h.start(), l.running = !0;
2420
+ const D = Ga("main.js", k, b, s), I = await Oa(D.href);
2313
2421
  if (I.main !== void 0) {
2314
2422
  if (typeof I.main != "function")
2315
2423
  throw new Error('main.js export "main" must be a function');
2316
- await I.main({ viewer: l });
2424
+ await I.main({ viewer: f });
2317
2425
  }
2318
2426
  }
2319
- const v = l;
2320
- let A = !1, x;
2427
+ const x = f;
2428
+ let A = !1, v;
2321
2429
  return {
2322
- viewer: v,
2323
- project: r,
2430
+ viewer: x,
2431
+ project: d,
2324
2432
  registerGameValidation: P.registerGameValidation,
2325
2433
  publishGameTelemetry: P.publishGameTelemetry,
2326
2434
  runGameValidation: P.runGameValidation,
2327
2435
  dispose() {
2328
- return A || (A = !0, h.stop(), f.running = !1, v.timeline.stop(), x = et(v), p == null || p.dispose(), j == null || j(), P == null || P.dispose(), v.dispose()), x;
2436
+ return A || (A = !0, h.stop(), l.running = !1, x.timeline.stop(), v = st(x), p == null || p.dispose(), j == null || j(), P == null || P.dispose(), x.dispose()), v;
2329
2437
  }
2330
2438
  };
2331
2439
  } catch (k) {
2332
- throw p == null || p.dispose(), j == null || j(), P == null || P.dispose(), l == null || l.dispose(), n(k), k;
2440
+ throw p == null || p.dispose(), j == null || j(), P == null || P.dispose(), f == null || f.dispose(), c(k), k;
2333
2441
  }
2334
2442
  }
2335
- async function $t(t, a, e, b, s) {
2336
- const { config: i, packageJson: n } = a;
2337
- for (const l of i.plugins) {
2338
- if (l.active === !1) continue;
2339
- const p = eb(l, n, e, b, s), j = await Ra(p), P = tb(j, l);
2340
- t.getPlugin(P) || await t.addPlugin(P, ...l.params || []);
2443
+ async function db(e, a, t, b, s) {
2444
+ const { config: i, packageJson: c } = a;
2445
+ for (const f of i.plugins) {
2446
+ if (f.active === !1) continue;
2447
+ const p = fb(f, c, t, b, s), j = await Oa(p), P = lb(j, f);
2448
+ e.getPlugin(P) || await e.addPlugin(P, ...f.params || []);
2341
2449
  }
2342
2450
  }
2343
- async function ab(t, a, e, b, s) {
2344
- const { config: i, packageJson: n } = a, l = [];
2451
+ async function hb(e, a, t, b, s) {
2452
+ const { config: i, packageJson: c } = a, f = [];
2345
2453
  for (const p of i.scripts) {
2346
2454
  if (p.active === !1) continue;
2347
- const j = ge(p.import, n) ? p.import : za(p.import, e, b, s).href;
2348
- l.push(await Ra(j));
2455
+ const j = je(p.import, c) ? p.import : Ga(p.import, t, b, s).href;
2456
+ f.push(await Oa(j));
2349
2457
  }
2350
- await ot(t, l);
2458
+ await ft(e, f);
2351
2459
  }
2352
- function eb(t, a, e, b, s) {
2353
- return ge(t.import, a) ? t.import : za(t.import, e, b, s).href;
2460
+ function fb(e, a, t, b, s) {
2461
+ return je(e.import, a) ? e.import : Ga(e.import, t, b, s).href;
2354
2462
  }
2355
- function za(t, a, e, b) {
2356
- const s = ib(new URL(t, a), a), i = t.replace(/^\.\//, ""), n = e[i];
2357
- return n && s.searchParams.set("v", n), b && s.searchParams.set("r", b), s;
2463
+ function Ga(e, a, t, b) {
2464
+ const s = gb(new URL(e, a), a), i = e.replace(/^\.\//, ""), c = t[i];
2465
+ return c && s.searchParams.set("v", c), b && s.searchParams.set("r", b), s;
2358
2466
  }
2359
- function tb(t, a) {
2360
- const e = a.className || "default", b = t[e];
2361
- if (te(b)) return b;
2467
+ function lb(e, a) {
2468
+ const t = a.className || "default", b = e[t];
2469
+ if (se(b)) return b;
2362
2470
  if (!a.className) {
2363
- const s = Object.values(t).filter(te);
2471
+ const s = Object.values(e).filter(se);
2364
2472
  if (s.length === 1) return s[0];
2365
2473
  }
2366
- throw new Error(`Cannot find plugin export "${e}" in ${a.import}`);
2474
+ throw new Error(`Cannot find plugin export "${t}" in ${a.import}`);
2367
2475
  }
2368
- function te(t) {
2369
- return typeof t == "function" && typeof t.PluginType == "string";
2476
+ function se(e) {
2477
+ return typeof e == "function" && typeof e.PluginType == "string";
2370
2478
  }
2371
- async function Ra(t) {
2479
+ async function Oa(e) {
2372
2480
  return import(
2373
2481
  /* @vite-ignore */
2374
- t
2482
+ e
2375
2483
  );
2376
2484
  }
2377
- async function be(t) {
2378
- const a = await fetch(t);
2379
- if (!a.ok) throw new Error(`Failed to fetch ${t.href}: ${a.status} ${a.statusText}`);
2485
+ async function ne(e) {
2486
+ const a = await fetch(e);
2487
+ if (!a.ok) throw new Error(`Failed to fetch ${e.href}: ${a.status} ${a.statusText}`);
2380
2488
  return a.text();
2381
2489
  }
2382
- function bb(t) {
2383
- if (!t.endsWith("/")) throw new Error('createGame base must end in "/"');
2384
- const a = new URL(t);
2490
+ function pb(e) {
2491
+ if (!e.endsWith("/")) throw new Error('createGame base must end in "/"');
2492
+ const a = new URL(e);
2385
2493
  if (!a.protocol.startsWith("http")) throw new Error("createGame base must be an absolute HTTP(S) URL");
2386
2494
  return a;
2387
2495
  }
2388
- function ib(t, a) {
2389
- if (t.origin !== a.origin)
2390
- throw new Error(`Project modules must be same-origin: ${t.href}`);
2391
- return t;
2496
+ function gb(e, a) {
2497
+ if (e.origin !== a.origin)
2498
+ throw new Error(`Project modules must be same-origin: ${e.href}`);
2499
+ return e;
2392
2500
  }
2393
- function sb(t) {
2501
+ function mb(e) {
2394
2502
  return (a) => {
2395
- console.error("[kite3d] Runtime error", a), t == null || t(a);
2503
+ console.error("[kite3d] Runtime error", a), e == null || e(a);
2396
2504
  };
2397
2505
  }
2398
- const fb = {
2506
+ const Pb = {
2399
2507
  plugins: [
2400
2508
  {
2401
2509
  import: "threepipe",
@@ -2590,9 +2698,9 @@ const fb = {
2590
2698
  import: "@threepipe/plugin-configurator",
2591
2699
  className: "SwitchNodePlugin"
2592
2700
  },
2593
- ...["B3DMLoadPlugin", "CMPTLoadPlugin", "DeepZoomImageLoadPlugin", "EnvironmentControlsPlugin", "GlobeControlsPlugin", "I3DMLoadPlugin", "PNTSLoadPlugin", "TilesRendererPlugin"].map((t) => ({
2701
+ ...["B3DMLoadPlugin", "CMPTLoadPlugin", "DeepZoomImageLoadPlugin", "EnvironmentControlsPlugin", "GlobeControlsPlugin", "I3DMLoadPlugin", "PNTSLoadPlugin", "TilesRendererPlugin"].map((e) => ({
2594
2702
  import: "@threepipe/plugin-3d-tiles-renderer",
2595
- className: t
2703
+ className: e
2596
2704
  })),
2597
2705
  {
2598
2706
  import: "@threepipe/plugin-assimpjs",
@@ -2631,9 +2739,9 @@ const fb = {
2631
2739
  "LDrawLoadPlugin",
2632
2740
  "VTKLoadPlugin",
2633
2741
  "XYZLoadPlugin"
2634
- ].map((t) => ({
2742
+ ].map((e) => ({
2635
2743
  import: "@threepipe/plugins-extra-importers",
2636
- className: t
2744
+ className: e
2637
2745
  }))
2638
2746
  ],
2639
2747
  dependencies: [{
@@ -2671,76 +2779,80 @@ const fb = {
2671
2779
  viewer: {}
2672
2780
  };
2673
2781
  export {
2674
- ei as BACKUPS_DIRECTORY,
2675
- ti as CONSOLE_PATH,
2676
- ja as Cannon3DBodyComponent,
2782
+ fi as BACKUPS_DIRECTORY,
2783
+ li as CONSOLE_PATH,
2784
+ ya as Cannon3DBodyComponent,
2677
2785
  ca as Cannon3DShapeComponent,
2678
- ya as Cannon3DShapeHelper,
2786
+ ka as Cannon3DShapeHelper,
2679
2787
  T as CannonMaterial2,
2680
2788
  z as CannonPhysicsPlugin,
2681
- na as CannonRagdollComponent,
2682
- bi as DEPLOYS_PATH,
2683
- sa as GeneratorComponent,
2684
- Ea as HtmlUiComponent,
2685
- ii as JOURNAL_PATH,
2686
- ub as KITE3D_AUTHORING_METADATA_KEY,
2687
- si as KITE3D_DIRECTORY,
2688
- jb as KITE3D_RUNTIME_METADATA_KEY,
2689
- ci as KITE3D_SERVER_CLIENT_ID,
2690
- Ub as PROJECT_MIGRATIONS,
2691
- ni as RUNNING_DIRECTORY,
2692
- qb as RUNTIME_SPECIFIERS,
2693
- zb as RUNTIME_VERSION,
2694
- Zt as RuntimeNestedAssetLoader,
2695
- yb as RuntimeObjectOwner,
2696
- oi as STATE_PATH,
2697
- di as THUMBS_DIRECTORY,
2698
- Eb as assetUrlPrefix,
2699
- Pb as authoringQualityReport,
2700
- Wt as cannonShapeTypeParams,
2701
- Qt as cannonShapeTypes,
2702
- hb as createGame,
2703
- st as createProjectAssetURLModifier,
2704
- lb as createStoppedGame,
2705
- Kb as dependencyImportMap,
2706
- fb as emptyProjectSettings,
2707
- Yb as extensionMimeTypes,
2708
- ma as getAuthoringMetadata,
2709
- kb as getRuntimeObjectMetadata,
2710
- wb as getTrackedRuntimeObjects,
2711
- at as installGameHooks,
2712
- rt as isComponentType,
2713
- ge as isDependencyModuleSpecifier,
2714
- dt as isPluginType,
2715
- vb as isRuntimeObject,
2716
- Xa as markGenerated,
2717
- Xb as mimeToExt,
2718
- Zb as mimeTypeForPath,
2719
- it as parseAssetsJSONManifest,
2720
- tt as parsePackageJSON,
2721
- bt as parsePackageJsonSettingsConfig,
2722
- Ab as persistenceReport,
2723
- _t as physicsBodyType,
2724
- Hb as projectDependencies,
2725
- Jb as projectPluginNames,
2726
- Db as publishGameTelemetry,
2727
- Nb as readProjectGeneratorStates,
2728
- Mb as registerGameValidation,
2729
- ot as registerScripts,
2730
- me as removeGeneratedChildren,
2731
- ut as resolveGeneratorModule,
2732
- ft as runGenerator,
2733
- et as runtimeCleanupReport,
2734
- Ib as semanticSceneSnapshot,
2735
- _b as serializeSceneGltf,
2736
- Tb as serializeSceneGltfDocument,
2737
- he as setAuthoringMetadata,
2738
- Cb as settingsKey,
2739
- Na as typeToCannon,
2740
- $b as typesExts,
2741
- ht as uiPositionMode,
2742
- Sb as updateProjectGeneratorState,
2743
- Bb as validateSceneSource,
2744
- nt as walkScriptExports
2789
+ oa as CannonRagdollComponent,
2790
+ pi as DEPLOYS_PATH,
2791
+ na as GeneratorComponent,
2792
+ Na as HtmlUiComponent,
2793
+ gi as JOURNAL_PATH,
2794
+ Ib as KITE3D_AUTHORING_METADATA_KEY,
2795
+ mi as KITE3D_DIRECTORY,
2796
+ Fb as KITE3D_RUNTIME_METADATA_KEY,
2797
+ ui as KITE3D_SERVER_CLIENT_ID,
2798
+ Vb as PROJECT_MIGRATIONS,
2799
+ ji as RUNNING_DIRECTORY,
2800
+ ti as RUNTIME_SPECIFIERS,
2801
+ Hb as RUNTIME_VERSION,
2802
+ rb as RuntimeNestedAssetLoader,
2803
+ Eb as RuntimeObjectOwner,
2804
+ yi as STATE_PATH,
2805
+ ki as THUMBS_DIRECTORY,
2806
+ Tb as assetUrlPrefix,
2807
+ Lb as authoringQualityReport,
2808
+ eb as cannonShapeTypeParams,
2809
+ ab as cannonShapeTypes,
2810
+ xb as createGame,
2811
+ rt as createProjectAssetURLModifier,
2812
+ vb as createStoppedGame,
2813
+ bi as dependencyImportMap,
2814
+ Pb as emptyProjectSettings,
2815
+ ci as extensionMimeTypes,
2816
+ mt as generatorParamTypes,
2817
+ ua as getAuthoringMetadata,
2818
+ Nb as getRuntimeObjectMetadata,
2819
+ Cb as getTrackedRuntimeObjects,
2820
+ jt as inferGeneratorParam,
2821
+ it as installGameHooks,
2822
+ pt as isComponentType,
2823
+ je as isDependencyModuleSpecifier,
2824
+ lt as isPluginType,
2825
+ Sb as isRuntimeObject,
2826
+ ae as markGenerated,
2827
+ oi as mimeToExt,
2828
+ ri as mimeTypeForPath,
2829
+ ot as parseAssetsJSONManifest,
2830
+ ut as parseGeneratorParamsSchema,
2831
+ nt as parsePackageJSON,
2832
+ ct as parsePackageJsonSettingsConfig,
2833
+ zb as persistenceReport,
2834
+ Xt as physicsBodyType,
2835
+ ii as projectDependencies,
2836
+ si as projectPluginNames,
2837
+ Rb as publishGameTelemetry,
2838
+ _b as readProjectGeneratorStates,
2839
+ Ub as registerGameValidation,
2840
+ ft as registerScripts,
2841
+ ke as removeGeneratedChildren,
2842
+ It as resolveGeneratorModule,
2843
+ Pt as runGenerator,
2844
+ st as runtimeCleanupReport,
2845
+ Gb as semanticSceneSnapshot,
2846
+ Xb as serializeSceneGltf,
2847
+ Zb as serializeSceneGltfDocument,
2848
+ pe as setAuthoringMetadata,
2849
+ Qb as settingsKey,
2850
+ Sa as typeToCannon,
2851
+ di as typesExts,
2852
+ gt as uiPositionMode,
2853
+ Wb as updateProjectGeneratorState,
2854
+ yt as validateGeneratorParam,
2855
+ qb as validateSceneSource,
2856
+ ht as walkScriptExports
2745
2857
  };
2746
2858
  //# sourceMappingURL=index.js.map