@kite3d/engine 0.18.0 → 0.19.0-alpha.1

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,162 +1,160 @@
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";
1
+ import { EntityComponentPlugin as L, Object3DComponent as ja, Vector3 as F, literalStrings as Da, Quaternion as C, BufferAttribute as Za, BufferGeometry as ia, Box3 as $a, ConvexHull as fe, Mesh as ya, MathUtils as pe, SphereGeometry as va, BoxGeometry as Pa, PlaneGeometry as Wa, LineMaterial2 as ge, Wireframe as Y, WireframeGeometry3 as X, CylinderGeometry as me, Float32BufferAttribute as xa, Object3DWidgetsPlugin as ae, AHelperWidget as ue, Group as je, MeshStandardMaterial as ye, Object3D as ke, uiFolderContainer as Ia, generateUUID as we, AViewerPluginSync as xe, Matrix4 as qa, FrameFadePlugin as ve, uiInput as Pe, uiMonitor as Ae, uiNumber as ee, ThreeSerialization as Fa, TypeSystem as Me, serialize as te, uiToggle as be, uiConfig as ie, copyObject3DUserData as De, getPartialProps as Ie, setPartialProps as Fe, ThreeViewer as Ee, GBufferPlugin as Ne, PopmotionPlugin as Ce, GLTFAnimationPlugin as Be, GLTFMeshOptDecodePlugin as Se, KTX2LoadPlugin as Le, KTXLoadPlugin as ze, PLYLoadPlugin as Re, Rhino3dmLoadPlugin as Ue, STLLoadPlugin as Ge, USDZLoadPlugin as _e } from "threepipe";
3
2
  export * from "threepipe";
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";
3
+ import { Vec3 as y, Quaternion as na, Box as K, Cylinder as Te, Sphere as se, ConvexPolyhedron as Oe, Trimesh as Qe, Body as N, Shape as q, ConeTwistConstraint as Q, Material as Ea, World as ce, ContactMaterial as ne } from "cannon-es";
4
+ import { installGameHooks as We, runtimeCleanupReport as qe } from "./authoringValidation.js";
5
+ import { authoringQualityReport as Xt, persistenceReport as Zt, publishGameTelemetry as $t, registerGameValidation as ab, semanticSceneSnapshot as eb } from "./authoringValidation.js";
6
+ import { parsePackageJSON as Ke, parsePackageJsonSettingsConfig as He, parseAssetsJSONManifest as Je, createProjectAssetURLModifier as Ve, isDependencyModuleSpecifier as de } from "./projectFormat.js";
7
+ import { REMOVED_GENERATOR_GUIDANCE as bb, assetUrlPrefix as ib, findRemovedGeneratorNodes as sb, removedGeneratorMessage as cb, settingsKey as nb, validateSceneSource as db } from "./projectFormat.js";
8
+ import { RUNTIME_VERSION as rb } from "./version.js";
9
+ import { PROJECT_MIGRATIONS as lb } from "./migrations.js";
10
+ import { serializeSceneGltf as pb, serializeSceneGltfDocument as gb } from "./sceneSerialization.js";
11
+ import { KITE3D_AUTHORING_METADATA_KEY as ub, KITE3D_RUNTIME_METADATA_KEY as jb, RuntimeObjectOwner as yb, getAuthoringMetadata as kb, getRuntimeObjectMetadata as wb, getTrackedRuntimeObjects as xb, isRuntimeObject as vb, setAuthoringMetadata as Pb } from "./authoring.js";
14
12
  export * from "uiconfig.js";
15
13
  export * from "ts-browser-helpers";
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";
14
+ import { RUNTIME_SPECIFIERS as Ib, dependencyImportMap as Fb, projectDependencies as Eb, projectPluginNames as Nb } from "./importMap.js";
15
+ import { extensionMimeTypes as Bb, mimeToExt as Sb, mimeTypeForPath as Lb, typesExts as zb } from "./fileTypes.js";
16
+ import { BACKUPS_DIRECTORY as Ub, CONSOLE_PATH as Gb, DEPLOYS_PATH as _b, JOURNAL_PATH as Tb, KITE3D_DIRECTORY as Ob, KITE3D_SERVER_CLIENT_ID as Qb, RUNNING_DIRECTORY as Wb, STATE_PATH as qb, THUMBS_DIRECTORY as Kb } from "./paths.js";
19
17
  (function() {
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]);
18
+ 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]);
21
19
  if (typeof WebAssembly != "object")
22
20
  return {
23
21
  supported: !1
24
22
  };
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);
23
+ var e, b = WebAssembly.instantiate(s(t), {}).then(function(m) {
24
+ e = m.instance, e.exports.__wasm_call_ctors(), e.exports.meshopt_encodeVertexVersion(0), e.exports.meshopt_encodeIndexVersion(1);
27
25
  });
28
26
  function s(m) {
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;
27
+ for (var d = new Uint8Array(m.length), c = 0; c < m.length; ++c) {
28
+ var n = m.charCodeAt(c);
29
+ d[c] = n > 96 ? n - 97 : n > 64 ? n - 39 : n + 4;
32
30
  }
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);
31
+ for (var r = 0, c = 0; c < m.length; ++c)
32
+ d[r++] = d[c] < 60 ? a[d[c]] : (d[c] - 60) * 64 + d[++c];
33
+ return d.buffer.slice(0, r);
36
34
  }
37
35
  function i(m) {
38
36
  if (!m)
39
37
  throw new Error("Assertion failed");
40
38
  }
41
- function c(m) {
39
+ function o(m) {
42
40
  return new Uint8Array(m.buffer, m.byteOffset, m.byteLength);
43
41
  }
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;
42
+ function l(m, d, c, n) {
43
+ var r = e.exports.sbrk, h = r(d.length * 4), f = r(c * 4), p = new Uint8Array(e.exports.memory.buffer), u = o(d);
44
+ p.set(u, h), n && n(h, h, d.length, c);
45
+ var k = m(f, h, d.length, c);
46
+ p = new Uint8Array(e.exports.memory.buffer);
47
+ var w = new Uint32Array(c);
48
+ new Uint8Array(w.buffer).set(p.subarray(f, f + c * 4)), u.set(p.subarray(h, h + d.length * 4)), r(h - r(0));
49
+ for (var A = 0; A < d.length; ++A)
50
+ d[A] = w[d[A]];
51
+ return [w, k];
52
+ }
53
+ function g(m, d, c, n) {
54
+ var r = e.exports.sbrk, h = r(c * 4), f = r(c * n), p = new Uint8Array(e.exports.memory.buffer);
55
+ p.set(o(d), f), m(h, f, c, n), p = new Uint8Array(e.exports.memory.buffer);
56
+ var u = new Uint32Array(c);
57
+ return new Uint8Array(u.buffer).set(p.subarray(h, h + c * 4)), r(h - r(0)), u;
58
+ }
59
+ function j(m, d, c, n, r) {
60
+ var h = e.exports.sbrk, f = h(d), p = h(n * r), u = new Uint8Array(e.exports.memory.buffer);
61
+ u.set(o(c), p);
62
+ var k = m(f, d, p, n, r), w = new Uint8Array(k);
63
+ return w.set(u.subarray(f, f + k)), h(f - h(0)), w;
66
64
  }
67
65
  function P(m) {
68
- for (var r = 0, n = 0; n < m.length; ++n) {
69
- var o = m[n];
70
- r = r < o ? o : r;
66
+ for (var d = 0, c = 0; c < m.length; ++c) {
67
+ var n = m[c];
68
+ d = d < n ? n : d;
71
69
  }
72
- return r;
70
+ return d;
73
71
  }
74
- function k(m, r) {
75
- if (i(r == 2 || r == 4), r == 4)
72
+ function x(m, d) {
73
+ if (i(d == 2 || d == 4), d == 4)
76
74
  return new Uint32Array(m.buffer, m.byteOffset, m.byteLength / 4);
77
- var n = new Uint16Array(m.buffer, m.byteOffset, m.byteLength / 2);
78
- return new Uint32Array(n);
75
+ var c = new Uint16Array(m.buffer, m.byteOffset, m.byteLength / 2);
76
+ return new Uint32Array(c);
79
77
  }
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;
78
+ function D(m, d, c, n, r, h, f) {
79
+ var p = e.exports.sbrk, u = p(c * n), k = p(c * h), w = new Uint8Array(e.exports.memory.buffer);
80
+ w.set(o(d), k), m(u, c, n, r, k, f);
81
+ var A = new Uint8Array(c * n);
82
+ return A.set(w.subarray(u, u + c * n)), p(u - p(0)), A;
85
83
  }
86
84
  return {
87
85
  ready: b,
88
86
  supported: !0,
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 = {
87
+ reorderMesh: function(m, d, c) {
88
+ var n = d ? c ? e.exports.meshopt_optimizeVertexCacheStrip : e.exports.meshopt_optimizeVertexCache : void 0;
89
+ return l(e.exports.meshopt_optimizeVertexFetchRemap, m, P(m) + 1, n);
90
+ },
91
+ reorderPoints: function(m, d) {
92
+ return i(m instanceof Float32Array), i(m.length % d == 0), i(d >= 3), g(e.exports.meshopt_spatialSortRemap, m, m.length / d, d * 4);
93
+ },
94
+ encodeVertexBuffer: function(m, d, c) {
95
+ i(c > 0 && c <= 256), i(c % 4 == 0);
96
+ var n = e.exports.meshopt_encodeVertexBufferBound(d, c);
97
+ return j(e.exports.meshopt_encodeVertexBuffer, n, m, d, c);
98
+ },
99
+ encodeIndexBuffer: function(m, d, c) {
100
+ i(c == 2 || c == 4), i(d % 3 == 0);
101
+ var n = x(m, c), r = e.exports.meshopt_encodeIndexBufferBound(d, P(n) + 1);
102
+ return j(e.exports.meshopt_encodeIndexBuffer, r, n, d, 4);
103
+ },
104
+ encodeIndexSequence: function(m, d, c) {
105
+ i(c == 2 || c == 4);
106
+ var n = x(m, c), r = e.exports.meshopt_encodeIndexSequenceBound(d, P(n) + 1);
107
+ return j(e.exports.meshopt_encodeIndexSequence, r, n, d, 4);
108
+ },
109
+ encodeGltfBuffer: function(m, d, c, n) {
110
+ var r = {
113
111
  ATTRIBUTES: this.encodeVertexBuffer,
114
112
  TRIANGLES: this.encodeIndexBuffer,
115
113
  INDICES: this.encodeIndexSequence
116
114
  };
117
- return i(d[o]), d[o](m, r, n);
115
+ return i(r[n]), r[n](m, d, c);
118
116
  },
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);
117
+ encodeFilterOct: function(m, d, c, n) {
118
+ return i(c == 4 || c == 8), i(n >= 1 && n <= 16), D(e.exports.meshopt_encodeFilterOct, m, d, c, n, 16);
121
119
  },
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);
120
+ encodeFilterQuat: function(m, d, c, n) {
121
+ return i(c == 8), i(n >= 4 && n <= 16), D(e.exports.meshopt_encodeFilterQuat, m, d, c, n, 16);
124
122
  },
125
- encodeFilterExp: function(m, r, n, o, d) {
126
- i(n > 0 && n % 4 == 0), i(o >= 1 && o <= 24);
123
+ encodeFilterExp: function(m, d, c, n, r) {
124
+ i(c > 0 && c % 4 == 0), i(n >= 1 && n <= 24);
127
125
  var h = {
128
126
  Separate: 0,
129
127
  SharedVector: 1,
130
128
  SharedComponent: 2
131
129
  };
132
- return M(t.exports.meshopt_encodeFilterExp, m, r, n, o, n, d ? h[d] : 1);
130
+ return D(e.exports.meshopt_encodeFilterExp, m, d, c, n, c, r ? h[r] : 1);
133
131
  }
134
132
  };
135
133
  })();
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]);
134
+ var Ye = (function() {
135
+ 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]);
138
136
  if (typeof WebAssembly != "object")
139
137
  return {
140
138
  supported: !1
141
139
  };
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();
140
+ var s = WebAssembly.validate(e) ? a : t, i, o = WebAssembly.instantiate(l(s), {}).then(function(r) {
141
+ i = r.instance, i.exports.__wasm_call_ctors();
144
142
  });
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;
143
+ function l(r) {
144
+ for (var h = new Uint8Array(r.length), f = 0; f < r.length; ++f) {
145
+ var p = r.charCodeAt(f);
146
+ h[f] = p > 96 ? p - 97 : p > 64 ? p - 39 : p + 4;
149
147
  }
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];
148
+ for (var u = 0, f = 0; f < r.length; ++f)
149
+ h[u++] = h[f] < 60 ? b[h[f]] : (h[f] - 60) * 64 + h[++f];
152
150
  return h.buffer.slice(0, u);
153
151
  }
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
- E.set(w, I);
157
- var S = h(D, g, u, I, w.length);
158
- if (S == 0 && x && x(D, v, u), l.set(E.subarray(D, D + g * u)), A(D - A(0)), S != 0)
159
- throw new Error("Malformed buffer data: " + S);
152
+ function g(r, h, f, p, u, k, w) {
153
+ var A = r.exports.sbrk, v = p + 3 & -4, M = A(v * u), I = A(k.length), E = new Uint8Array(r.exports.memory.buffer);
154
+ E.set(k, I);
155
+ var B = h(M, p, u, I, k.length);
156
+ if (B == 0 && w && w(M, v, u), f.set(E.subarray(M, M + p * u)), A(M - A(0)), B != 0)
157
+ throw new Error("Malformed buffer data: " + B);
160
158
  }
161
159
  var j = {
162
160
  NONE: "",
@@ -167,148 +165,148 @@ var dt = (function() {
167
165
  ATTRIBUTES: "meshopt_decodeVertexBuffer",
168
166
  TRIANGLES: "meshopt_decodeIndexBuffer",
169
167
  INDICES: "meshopt_decodeIndexSequence"
170
- }, k = [], M = 0;
171
- function m(d) {
168
+ }, x = [], D = 0;
169
+ function m(r) {
172
170
  var h = {
173
- object: new Worker(d),
171
+ object: new Worker(r),
174
172
  pending: 0,
175
173
  requests: {}
176
174
  };
177
- return h.object.onmessage = function(l) {
178
- var g = l.data;
179
- h.pending -= g.count, h.requests[g.id][g.action](g.value), delete h.requests[g.id];
175
+ return h.object.onmessage = function(f) {
176
+ var p = f.data;
177
+ h.pending -= p.count, h.requests[p.id][p.action](p.value), delete h.requests[p.id];
180
178
  }, h;
181
179
  }
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
- k[u] = m(g);
185
- for (var u = d; u < k.length; ++u)
186
- k[u].object.postMessage({});
187
- k.length = d, URL.revokeObjectURL(g);
180
+ function d(r) {
181
+ 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 = " + n.name + ";" + g.toString() + n.toString(), f = new Blob([h], { type: "text/javascript" }), p = URL.createObjectURL(f), u = x.length; u < r; ++u)
182
+ x[u] = m(p);
183
+ for (var u = r; u < x.length; ++u)
184
+ x[u].object.postMessage({});
185
+ x.length = r, URL.revokeObjectURL(p);
188
186
  }
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]);
187
+ function c(r, h, f, p, u) {
188
+ for (var k = x[0], w = 1; w < x.length; ++w)
189
+ x[w].pending < k.pending && (k = x[w]);
192
190
  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]);
191
+ var M = new Uint8Array(f), I = ++D;
192
+ k.pending += r, k.requests[I] = { resolve: A, reject: v }, k.object.postMessage({ id: I, count: r, size: h, source: M, mode: p, filter: u }, [M.buffer]);
195
193
  });
196
194
  }
197
- function o(d) {
198
- var h = d.data;
195
+ function n(r) {
196
+ var h = r.data;
199
197
  if (!h.id)
200
198
  return self.close();
201
- self.ready.then(function(l) {
199
+ self.ready.then(function(f) {
202
200
  try {
203
- var g = new Uint8Array(h.count * h.size);
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]);
201
+ var p = new Uint8Array(h.count * h.size);
202
+ g(f, f.exports[h.mode], p, h.count, h.size, h.source, f.exports[h.filter]), self.postMessage({ id: h.id, count: h.count, action: "resolve", value: p }, [p.buffer]);
205
203
  } catch (u) {
206
204
  self.postMessage({ id: h.id, count: h.count, action: "reject", value: u });
207
205
  }
208
206
  });
209
207
  }
210
208
  return {
211
- ready: c,
209
+ ready: o,
212
210
  supported: !0,
213
- useWorkers: function(d) {
214
- r(d);
211
+ useWorkers: function(r) {
212
+ d(r);
215
213
  },
216
- decodeVertexBuffer: function(d, h, l, g, u) {
217
- p(i, i.exports.meshopt_decodeVertexBuffer, d, h, l, g, i.exports[j[u]]);
214
+ decodeVertexBuffer: function(r, h, f, p, u) {
215
+ g(i, i.exports.meshopt_decodeVertexBuffer, r, h, f, p, i.exports[j[u]]);
218
216
  },
219
- decodeIndexBuffer: function(d, h, l, g) {
220
- p(i, i.exports.meshopt_decodeIndexBuffer, d, h, l, g);
217
+ decodeIndexBuffer: function(r, h, f, p) {
218
+ g(i, i.exports.meshopt_decodeIndexBuffer, r, h, f, p);
221
219
  },
222
- decodeIndexSequence: function(d, h, l, g) {
223
- p(i, i.exports.meshopt_decodeIndexSequence, d, h, l, g);
220
+ decodeIndexSequence: function(r, h, f, p) {
221
+ g(i, i.exports.meshopt_decodeIndexSequence, r, h, f, p);
224
222
  },
225
- decodeGltfBuffer: function(d, h, l, g, u, w) {
226
- p(i, i.exports[P[u]], d, h, l, g, i.exports[j[w]]);
223
+ decodeGltfBuffer: function(r, h, f, p, u, k) {
224
+ g(i, i.exports[P[u]], r, h, f, p, i.exports[j[k]]);
227
225
  },
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;
226
+ decodeGltfBufferAsync: function(r, h, f, p, u) {
227
+ return x.length > 0 ? c(r, h, f, P[p], j[u]) : o.then(function() {
228
+ var k = new Uint8Array(r * h);
229
+ return g(i, i.exports[P[p]], k, r, h, f, i.exports[j[u]]), k;
232
230
  });
233
231
  }
234
232
  };
235
233
  })();
236
234
  (function() {
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]);
235
+ 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]);
238
236
  if (typeof WebAssembly != "object")
239
237
  return {
240
238
  supported: !1
241
239
  };
242
- var t, b = WebAssembly.instantiate(s(e), {}).then(function(r) {
243
- t = r.instance, t.exports.__wasm_call_ctors();
240
+ var e, b = WebAssembly.instantiate(s(t), {}).then(function(d) {
241
+ e = d.instance, e.exports.__wasm_call_ctors();
244
242
  });
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;
243
+ function s(d) {
244
+ for (var c = new Uint8Array(d.length), n = 0; n < d.length; ++n) {
245
+ var r = d.charCodeAt(n);
246
+ c[n] = r > 96 ? r - 97 : r > 64 ? r - 39 : r + 4;
249
247
  }
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);
248
+ for (var h = 0, n = 0; n < d.length; ++n)
249
+ c[h++] = c[n] < 60 ? a[c[n]] : (c[n] - 60) * 64 + c[++n];
250
+ return c.buffer.slice(0, h);
253
251
  }
254
- function i(r) {
255
- if (!r)
252
+ function i(d) {
253
+ if (!d)
256
254
  throw new Error("Assertion failed");
257
255
  }
258
- function c(r) {
259
- return new Uint8Array(r.buffer, r.byteOffset, r.byteLength);
260
- }
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
- g.set(u, h);
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;
256
+ function o(d) {
257
+ return new Uint8Array(d.buffer, d.byteOffset, d.byteLength);
258
+ }
259
+ function l(d, c, n) {
260
+ var r = e.exports.sbrk, h = r(c.length * 4), f = r(n * 4), p = new Uint8Array(e.exports.memory.buffer), u = o(c);
261
+ p.set(u, h);
262
+ var k = d(f, h, c.length, n);
263
+ p = new Uint8Array(e.exports.memory.buffer);
264
+ var w = new Uint32Array(n);
265
+ new Uint8Array(w.buffer).set(p.subarray(f, f + n * 4)), u.set(p.subarray(h, h + c.length * 4)), r(h - r(0));
266
+ for (var A = 0; A < c.length; ++A)
267
+ c[A] = w[c[A]];
268
+ return [w, k];
269
+ }
270
+ function g(d) {
271
+ for (var c = 0, n = 0; n < d.length; ++n) {
272
+ var r = d[n];
273
+ c = c < r ? r : c;
276
274
  }
277
- return n;
278
- }
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
- var R = new Uint32Array(S);
285
- c(R).set(E.subarray(v, v + S * 4));
275
+ return c;
276
+ }
277
+ function j(d, c, n, r, h, f, p, u, k) {
278
+ var w = e.exports.sbrk, A = w(4), v = w(n * 4), M = w(h * f), I = w(n * 4), E = new Uint8Array(e.exports.memory.buffer);
279
+ E.set(o(r), M), E.set(o(c), I);
280
+ var B = d(v, I, n, M, h, f, p, u, k, A);
281
+ E = new Uint8Array(e.exports.memory.buffer);
282
+ var R = new Uint32Array(B);
283
+ o(R).set(E.subarray(v, v + B * 4));
286
284
  var U = new Float32Array(1);
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);
285
+ return o(U).set(E.subarray(A, A + 4)), w(A - w(0)), [R, U[0]];
286
+ }
287
+ function P(d, c, n, r, h, f, p, u, k, w, A, v) {
288
+ var M = e.exports.sbrk, I = M(4), E = M(n * 4), B = M(h * f), R = M(h * u), U = M(k.length * 4), ta = M(n * 4), S = new Uint8Array(e.exports.memory.buffer);
289
+ S.set(o(r), B), S.set(o(p), R), S.set(o(k), U), S.set(o(c), ta);
290
+ var Z = d(E, ta, n, B, h, f, R, u, U, k.length, w, A, v, I);
291
+ S = new Uint8Array(e.exports.memory.buffer);
292
+ var G = new Uint32Array(Z);
293
+ o(G).set(S.subarray(E, E + Z * 4));
294
+ var da = new Float32Array(1);
295
+ return o(da).set(S.subarray(I, I + 4)), M(I - M(0)), [G, da[0]];
296
+ }
297
+ function x(d, c, n, r) {
298
+ var h = e.exports.sbrk, f = h(n * r), p = new Uint8Array(e.exports.memory.buffer);
299
+ p.set(o(c), f);
300
+ var u = d(f, n, r);
301
+ return h(f - h(0)), u;
302
+ }
303
+ function D(d, c, n, r, h, f, p, u) {
304
+ var k = e.exports.sbrk, w = k(u * 4), A = k(n * r), v = k(n * f), M = new Uint8Array(e.exports.memory.buffer);
305
+ M.set(o(c), A), h && M.set(o(h), v);
306
+ var I = d(w, A, n, r, v, f, p, u);
307
+ M = new Uint8Array(e.exports.memory.buffer);
310
308
  var E = new Uint32Array(I);
311
- return c(E).set(D.subarray(x, x + I * 4)), w(x - w(0)), E;
309
+ return o(E).set(M.subarray(w, w + I * 4)), k(w - k(0)), E;
312
310
  }
313
311
  var m = {
314
312
  LockBorder: 1
@@ -319,104 +317,104 @@ var dt = (function() {
319
317
  // set this to true to be able to use simplifyPoints and simplifyWithAttributes
320
318
  // note that these functions are experimental and may change interface/behavior in a way that will require revising calling code
321
319
  useExperimentalFeatures: !1,
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);
320
+ compactMesh: function(d) {
321
+ i(d instanceof Uint32Array || d instanceof Int32Array || d instanceof Uint16Array || d instanceof Int16Array), i(d.length % 3 == 0);
322
+ var c = d.BYTES_PER_ELEMENT == 4 ? d : new Uint32Array(d);
323
+ return l(e.exports.meshopt_optimizeVertexFetchRemap, c, g(d) + 1);
324
+ },
325
+ simplify: function(d, c, n, r, h, f) {
326
+ i(d instanceof Uint32Array || d instanceof Int32Array || d instanceof Uint16Array || d instanceof Int16Array), i(d.length % 3 == 0), i(c instanceof Float32Array), i(c.length % n == 0), i(n >= 3), i(r >= 0 && r <= d.length), i(r % 3 == 0), i(h >= 0 && h <= 1);
327
+ for (var p = 0, u = 0; u < (f ? f.length : 0); ++u)
328
+ p |= m[f[u]];
329
+ var k = d.BYTES_PER_ELEMENT == 4 ? d : new Uint32Array(d), w = j(e.exports.meshopt_simplify, k, d.length, c, c.length / n, n * 4, r, h, p);
330
+ return w[0] = d instanceof Uint32Array ? w[0] : new d.constructor(w[0]), w;
331
+ },
332
+ simplifyWithAttributes: function(d, c, n, r, h, f, p, u, k) {
333
+ i(this.useExperimentalFeatures), i(d instanceof Uint32Array || d instanceof Int32Array || d instanceof Uint16Array || d instanceof Int16Array), i(d.length % 3 == 0), i(c instanceof Float32Array), i(c.length % n == 0), i(n >= 3), i(r instanceof Float32Array), i(r.length % h == 0), i(h >= 0), i(p >= 0 && p <= d.length), i(p % 3 == 0), i(u >= 0 && u <= 1), i(Array.isArray(f)), i(h >= f.length), i(f.length <= 16);
334
+ for (var w = 0, A = 0; A < (k ? k.length : 0); ++A)
335
+ w |= m[k[A]];
336
+ var v = d.BYTES_PER_ELEMENT == 4 ? d : new Uint32Array(d), M = P(e.exports.meshopt_simplifyWithAttributes, v, d.length, c, c.length / n, n * 4, r, h * 4, new Float32Array(f), p, u, w);
337
+ return M[0] = d instanceof Uint32Array ? M[0] : new d.constructor(M[0]), M;
338
+ },
339
+ getScale: function(d, c) {
340
+ return i(d instanceof Float32Array), i(d.length % c == 0), i(c >= 3), x(e.exports.meshopt_simplifyScale, d, d.length / c, c * 4);
341
+ },
342
+ simplifyPoints: function(d, c, n, r, h, f) {
343
+ return i(this.useExperimentalFeatures), i(d instanceof Float32Array), i(d.length % c == 0), i(c >= 3), i(n >= 0 && n <= d.length / c), r ? (i(r instanceof Float32Array), i(r.length % h == 0), i(h >= 3), i(d.length / c == r.length / h), D(e.exports.meshopt_simplifyPoints, d, d.length / c, c * 4, r, h * 4, f, n)) : D(e.exports.meshopt_simplifyPoints, d, d.length / c, c * 4, void 0, 0, 0, n);
346
344
  }
347
345
  };
348
346
  })();
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);
347
+ function Xe(t) {
348
+ const a = [], e = [];
349
+ for (const [b, s] of Object.entries(t))
350
+ $e(s) && a.push({ name: b, value: s }), at(s) && e.push({ name: b, value: s });
351
+ return { plugins: a, components: e };
352
+ }
353
+ async function Ze(t, a) {
354
+ const e = { plugins: [], components: [] }, b = t.getPlugin(L);
357
355
  if (!b) throw new Error("EntityComponentPlugin must be added before project scripts");
358
356
  for (const s of a) {
359
- const i = ht(s);
360
- t.plugins.push(...i.plugins), t.components.push(...i.components);
357
+ const i = Xe(s);
358
+ e.plugins.push(...i.plugins), e.components.push(...i.components);
361
359
  }
362
- for (const s of t.components) {
360
+ for (const s of e.components) {
363
361
  const i = b.componentTypes.get(s.value.ComponentType);
364
362
  i !== s.value && (i && b.removeComponentType(i), await b.addComponentType(s.value));
365
363
  }
366
- for (const s of t.plugins)
367
- e.getPlugin(s.value) || await e.addPlugin(s.value);
368
- return t;
364
+ for (const s of e.plugins)
365
+ t.getPlugin(s.value) || await t.addPlugin(s.value);
366
+ return e;
369
367
  }
370
- function lt(e) {
371
- return typeof e == "function" && typeof e.PluginType == "string";
368
+ function $e(t) {
369
+ return typeof t == "function" && typeof t.PluginType == "string";
372
370
  }
373
- function pt(e) {
374
- return typeof e == "function" && typeof e.ComponentType == "string";
371
+ function at(t) {
372
+ return typeof t == "function" && typeof t.ComponentType == "string";
375
373
  }
376
- const gt = ["world", "screen", "viewport"], wa = class wa extends ra {
374
+ const et = ["world", "screen", "viewport"], ma = class ma extends ja {
377
375
  constructor() {
378
376
  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
377
  if (a.source === "HtmlUiComponent") return;
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();
378
+ const e = (a == null ? void 0 : a.change) ?? (a == null ? void 0 : a.key);
379
+ (!e || e === "position" || e === "transform" || e === "quaternion" || e === "visible" || e === "controls") && this.positionMode === "world" && this._updateElementPosition();
382
380
  }, this.onStateChange("htmlData", (a) => {
383
381
  this.element && (this.element.innerHTML = a);
384
382
  }), this.onStateChange("width", (a) => {
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" }));
383
+ var e, b;
384
+ this.element && (this.element.style.width = a < 0 ? "auto" : `${a}px`, (b = (e = this.object).setDirty) == null || b.call(e, { source: "HtmlUiComponent" }));
387
385
  }), this.onStateChange("height", (a) => {
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" }));
386
+ var e, b;
387
+ this.element && (this.element.style.height = a < 0 ? "auto" : `${a}px`, (b = (e = this.object).setDirty) == null || b.call(e, { source: "HtmlUiComponent" }));
390
388
  }), this.onStateChange("scrollable", (a) => {
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" }));
389
+ var e, b;
390
+ this.element && (this.element.style.overflow = a ? "auto" : "hidden", (b = (e = this.object).setDirty) == null || b.call(e, { source: "HtmlUiComponent" }));
393
391
  }), this.onStateChange("interactable", (a) => {
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" }));
392
+ var e, b;
393
+ this.element && (this.element.style.pointerEvents = a ? "auto" : "none", (b = (e = this.object).setDirty) == null || b.call(e, { source: "HtmlUiComponent" }));
396
394
  }), this.onStateChange("visible", (a) => {
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" }));
395
+ var e, b;
396
+ this.element && (this.element.style.display = a ? "block" : "none", (b = (e = this.object).setDirty) == null || b.call(e, { source: "HtmlUiComponent" }));
399
397
  }), this.onStateChange("positionMode", () => {
400
- var a, t;
401
- this.element && (this._updateElementPosition(), (t = (a = this.object).setDirty) == null || t.call(a, { source: "HtmlUiComponent" }));
398
+ var a, e;
399
+ this.element && (this._updateElementPosition(), (e = (a = this.object).setDirty) == null || e.call(a, { source: "HtmlUiComponent" }));
402
400
  }), this.onStateChange("offsetX", () => {
403
- var a, t;
404
- this.element && (this._updateElementPosition(), (t = (a = this.object).setDirty) == null || t.call(a, { source: "HtmlUiComponent" }));
401
+ var a, e;
402
+ this.element && (this._updateElementPosition(), (e = (a = this.object).setDirty) == null || e.call(a, { source: "HtmlUiComponent" }));
405
403
  }), this.onStateChange("offsetY", () => {
406
- var a, t;
407
- this.element && (this._updateElementPosition(), (t = (a = this.object).setDirty) == null || t.call(a, { source: "HtmlUiComponent" }));
404
+ var a, e;
405
+ this.element && (this._updateElementPosition(), (e = (a = this.object).setDirty) == null || e.call(a, { source: "HtmlUiComponent" }));
408
406
  }), this.onStateChange("zIndex", (a) => {
409
- var t, b;
410
- this.element && (this.element.style.zIndex = `${a}`, (b = (t = this.object).setDirty) == null || b.call(t, { source: "HtmlUiComponent" }));
407
+ var e, b;
408
+ this.element && (this.element.style.zIndex = `${a}`, (b = (e = this.object).setDirty) == null || b.call(e, { source: "HtmlUiComponent" }));
411
409
  }), this.onStateChange("appendToBody", (a) => {
412
- var b, s, i, c;
410
+ var b, s, i, o;
413
411
  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), (c = (i = this.object).setDirty) == null || c.call(i, { source: "HtmlUiComponent" });
412
+ 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), (o = (i = this.object).setDirty) == null || o.call(i, { source: "HtmlUiComponent" });
415
413
  });
416
414
  }
417
- init(a, t) {
415
+ init(a, e) {
418
416
  var s, i;
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();
417
+ 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();
420
418
  }
421
419
  destroy() {
422
420
  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 +440,15 @@ const gt = ["world", "screen", "viewport"], wa = class wa extends ra {
442
440
  }
443
441
  }
444
442
  _updateWorldPosition() {
445
- var c, f, p, j, P;
443
+ var o, l, g, j, P;
446
444
  this.object.getWorldPosition(this._worldPosition);
447
- const a = (p = (f = (c = this.ctx) == null ? void 0 : c.viewer) == null ? void 0 : f.scene) == null ? void 0 : p.mainCamera;
445
+ const a = (g = (l = (o = this.ctx) == null ? void 0 : o.viewer) == null ? void 0 : l.scene) == null ? void 0 : g.mainCamera;
448
446
  if (!a) return;
449
- const t = (P = (j = this.ctx) == null ? void 0 : j.viewer) == null ? void 0 : P.canvas;
450
- if (!t) return;
447
+ const e = (P = (j = this.ctx) == null ? void 0 : j.viewer) == null ? void 0 : P.canvas;
448
+ if (!e) return;
451
449
  const b = this._worldPosition.clone();
452
450
  b.project(a);
453
- const s = (b.x * 0.5 + 0.5) * t.clientWidth, i = (b.y * -0.5 + 0.5) * t.clientHeight;
451
+ const s = (b.x * 0.5 + 0.5) * e.clientWidth, i = (b.y * -0.5 + 0.5) * e.clientHeight;
454
452
  this.element.style.left = `${s + this.offsetX}px`, this.element.style.top = `${i + this.offsetY}px`, this.element.style.transform = "translate(-50%, -50%)";
455
453
  }
456
454
  _updateScreenPosition() {
@@ -460,8 +458,8 @@ const gt = ["world", "screen", "viewport"], wa = class wa extends ra {
460
458
  var s, i;
461
459
  const a = (i = (s = this.ctx) == null ? void 0 : s.viewer) == null ? void 0 : i.canvas;
462
460
  if (!a) return;
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";
461
+ const e = this.offsetX / 100 * a.clientWidth, b = this.offsetY / 100 * a.clientHeight;
462
+ this.element.style.left = `${e}px`, this.element.style.top = `${b}px`, this.element.style.transform = "none";
465
463
  }
466
464
  /**
467
465
  * Update the HTML content programmatically
@@ -472,14 +470,14 @@ const gt = ["world", "screen", "viewport"], wa = class wa extends ra {
472
470
  /**
473
471
  * Set the position
474
472
  */
475
- setPosition(a, t) {
476
- this.offsetX = a, this.offsetY = t;
473
+ setPosition(a, e) {
474
+ this.offsetX = a, this.offsetY = e;
477
475
  }
478
476
  /**
479
477
  * Set the size
480
478
  */
481
- setSize(a, t) {
482
- this.width = a, this.height = t;
479
+ setSize(a, e) {
480
+ this.width = a, this.height = e;
483
481
  }
484
482
  /**
485
483
  * Show the element
@@ -494,7 +492,7 @@ const gt = ["world", "screen", "viewport"], wa = class wa extends ra {
494
492
  this.visible = !1;
495
493
  }
496
494
  };
497
- wa.ComponentType = "HtmlUiComponent", wa.StateProperties = [
495
+ ma.ComponentType = "HtmlUiComponent", ma.StateProperties = [
498
496
  "enabled",
499
497
  {
500
498
  key: "htmlData",
@@ -511,7 +509,7 @@ wa.ComponentType = "HtmlUiComponent", wa.StateProperties = [
511
509
  "interactable",
512
510
  {
513
511
  key: "positionMode",
514
- type: Ba(gt)
512
+ type: Da(et)
515
513
  },
516
514
  "offsetX",
517
515
  "offsetY",
@@ -519,486 +517,201 @@ wa.ComponentType = "HtmlUiComponent", wa.StateProperties = [
519
517
  "visible",
520
518
  "appendToBody"
521
519
  ];
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 {
630
- constructor() {
631
- super(...arguments), this.module = "", this.params = {}, this.schema = {}, this.runRevision = 0;
632
- }
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,
637
- pending: /* @__PURE__ */ new Set()
638
- });
639
- }
640
- static async waitForViewer(a) {
641
- const t = ma.get(a);
642
- for (; t != null && t.pending.size; ) await Promise.all([...t.pending]);
643
- }
644
- init(a, t) {
645
- super.init(a, t);
646
- const b = () => {
647
- this.run().catch((s) => Nt(this.ctx.viewer, s));
648
- };
649
- this.onStateChange("module", b), this.onStateChange("params", b), b();
650
- }
651
- async run() {
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({
655
- node: this.object,
656
- params: this.params,
657
- viewer: a,
658
- module: this.module,
659
- base: t.base,
660
- revision: ++vt,
661
- isCurrent: () => b === this.runRevision,
662
- onSchema: (i) => {
663
- this.schema = i;
664
- }
665
- }).then(() => {
666
- b === this.runRevision && a.setDirty(this);
667
- }).finally(() => t.pending.delete(s));
668
- t.pending.add(s), await s;
669
- }
670
- async bake() {
671
- var i;
672
- await this.run();
673
- const a = this.object, t = a.children.filter((c) => c.userData.kite3dGenerated === !0), b = {
674
- module: this.module,
675
- params: JSON.parse(JSON.stringify(this.params)),
676
- ts: (/* @__PURE__ */ new Date()).toISOString()
677
- };
678
- for (const c of t) At(c);
679
- this.ctx.ecp.removeComponent(a, this.uuid);
680
- const s = ua(a);
681
- return (s == null ? void 0 : s.role) === "generator" && !s.sourceId && pe(a, {
682
- role: "direct",
683
- id: s.id,
684
- ...s.allowCameraInside !== void 0 ? { allowCameraInside: s.allowCameraInside } : {}
685
- }), a.userData.kite3dBakedFrom = b, a._sChildren = [...a.children], (i = a.setDirty) == null || i.call(a, { change: "userData.kite3dBakedFrom", source: "kite3d bake" }), t.length;
686
- }
687
- destroy() {
688
- return this.runRevision += 1, ke(this.object), super.destroy();
689
- }
690
- };
691
- xa.ComponentType = "Generator", xa.StateProperties = ["module", "params"];
692
- let na = xa;
693
- async function Pt({
694
- node: e,
695
- params: a,
696
- viewer: t,
697
- module: b,
698
- base: s,
699
- revision: i = 0,
700
- isCurrent: c,
701
- onSchema: f
702
- }) {
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")
708
- throw new Error(`Generator module must have a default generate function: ${b}`);
709
- const k = new Set(e.children), M = await P.default({
710
- node: e,
711
- params: a,
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);
720
- return [];
721
- }
722
- return r.forEach((n, o) => ae(n, p.id, o)), r;
723
- }
724
- function ke(e) {
725
- for (const a of [...e.children])
726
- a.userData.kite3dGenerated === !0 && we(a);
727
- }
728
- function ae(e, a, t = 0) {
729
- let b = 0;
730
- e.traverse((s) => {
731
- s.userData.kite3dGenerated = !0, s.userData.excludeFromExport = !0, a && (s.userData.kite3dAuthoring = {
732
- role: "generator",
733
- id: `${a}:preview:${t}:${b++}`,
734
- sourceId: a
735
- });
736
- });
737
- }
738
- function At(e) {
739
- e.traverse((a) => {
740
- delete a.userData.kite3dGenerated, delete a.userData.excludeFromExport;
741
- const t = ua(a);
742
- (t == null ? void 0 : t.role) === "generator" && t.sourceId && delete a.userData.kite3dAuthoring;
743
- });
744
- }
745
- function Dt(e) {
746
- const a = ua(e);
747
- if ((a == null ? void 0 : a.role) === "generator" && !a.sourceId) return a;
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);
750
- }
751
- function Mt(e) {
752
- var t;
753
- const a = [];
754
- for (let b = e; b != null && b.parent; b = b.parent) {
755
- const s = b.parent.children.indexOf(b);
756
- if (a.push(`${b.name || b.type}:${s}`), (t = b.parent.userData) != null && t.rootSceneModelRoot) break;
757
- }
758
- return `generator:${a.reverse().join("/")}`;
759
- }
760
- function we(e) {
761
- e.removeFromParent();
762
- const a = /* @__PURE__ */ new Set();
763
- e.traverse((t) => {
764
- const b = t;
765
- Ia(b.geometry, a);
766
- const s = Array.isArray(b.material) ? b.material : [b.material];
767
- for (const i of s)
768
- if (!(!i || typeof i != "object")) {
769
- for (const c of Object.values(i))
770
- c && typeof c == "object" && "isTexture" in c && Ia(c, a);
771
- Ia(i, a);
772
- }
773
- });
774
- }
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));
778
- }
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;
786
- }
787
- function Ft(e) {
788
- if (!e) return [];
789
- const a = Array.isArray(e) ? e : [e], t = [];
790
- for (const b of a) {
791
- if (!(b != null && b.isObject3D))
792
- throw new Error("Generator output must be an Object3D, an array of Object3D values, or undefined");
793
- t.push(b);
794
- }
795
- return t;
796
- }
797
- async function Et(e) {
798
- return import(
799
- /* @vite-ignore */
800
- e
801
- );
802
- }
803
- function Nt(e, a) {
804
- var b;
805
- const t = (b = ma.get(e)) == null ? void 0 : b.onError;
806
- t ? t(a) : console.error("[kite3d] Generator error", a);
807
- }
808
- const Ct = new F(), pa = new F(), St = new C();
809
- function ja(e) {
810
- const a = Lt(e);
520
+ let Aa = ma;
521
+ const tt = new F(), ha = new F(), bt = new C();
522
+ function fa(t) {
523
+ const a = st(t);
811
524
  if (a.length === 0) return null;
812
525
  if (a.length === 1)
813
- return ee(a[0]);
814
- let t;
526
+ return Ka(a[0]);
527
+ let e;
815
528
  const b = [];
816
- for (; t = a.pop(); )
817
- b.push(zt(ee(t)));
818
- return Bt(b);
529
+ for (; e = a.pop(); )
530
+ b.push(ct(Ka(e)));
531
+ return it(b);
819
532
  }
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;
533
+ function Ka(t) {
534
+ const a = t.geometry.clone();
535
+ return t.updateMatrixWorld(), t.matrixWorld.decompose(tt, bt, ha), a.scale(ha.x, ha.y, ha.z), a;
823
536
  }
824
- function Bt(e) {
537
+ function it(t) {
825
538
  let a = 0;
826
- for (let s = 0; s < e.length; s++) {
827
- const i = e[s].attributes.position;
539
+ for (let s = 0; s < t.length; s++) {
540
+ const i = t[s].attributes.position;
828
541
  i && i.itemSize === 3 && (a += i.count);
829
542
  }
830
- const t = new Float32Array(a * 3);
543
+ const e = new Float32Array(a * 3);
831
544
  let b = 0;
832
- for (let s = 0; s < e.length; s++) {
833
- const i = e[s].attributes.position;
545
+ for (let s = 0; s < t.length; s++) {
546
+ const i = t[s].attributes.position;
834
547
  if (i && i.itemSize === 3)
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);
548
+ for (let o = 0; o < i.count; o++)
549
+ e[b++] = i.getX(o), e[b++] = i.getY(o), e[b++] = i.getZ(o);
837
550
  }
838
- return new sa().setAttribute("position", new ce(t, 3));
551
+ return new ia().setAttribute("position", new Za(e, 3));
839
552
  }
840
- function xe(e) {
841
- const a = e.attributes.position, t = new Float32Array(a.count * 3);
553
+ function oe(t) {
554
+ const a = t.attributes.position, e = new Float32Array(a.count * 3);
842
555
  for (let b = 0; b < a.count; b++)
843
- t[b * 3] = a.getX(b), t[b * 3 + 1] = a.getY(b), t[b * 3 + 2] = a.getZ(b);
844
- return t;
556
+ e[b * 3] = a.getX(b), e[b * 3 + 1] = a.getY(b), e[b * 3 + 2] = a.getZ(b);
557
+ return e;
845
558
  }
846
- function Lt(e) {
559
+ function st(t) {
847
560
  const a = [];
848
- return e.traverse(function(t) {
849
- t.isMesh && a.push(t);
561
+ return t.traverse(function(e) {
562
+ e.isMesh && a.push(e);
850
563
  }), a;
851
564
  }
852
- function ga(e, a) {
565
+ function la(t, a) {
853
566
  switch (a) {
854
567
  case "x":
855
- return e.x;
568
+ return t.x;
856
569
  case "y":
857
- return e.y;
570
+ return t.y;
858
571
  case "z":
859
- return e.z;
572
+ return t.z;
860
573
  }
861
574
  throw new Error(`Unexpected component ${a}`);
862
575
  }
863
- function zt(e, a = 1e-4) {
576
+ function ct(t, a = 1e-4) {
864
577
  a = Math.max(a, Number.EPSILON);
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);
578
+ const e = {}, b = t.getIndex(), s = t.getAttribute("position"), i = b ? b.count : s.count;
579
+ let o = 0;
580
+ const l = [], g = [], j = Math.log10(1 / a), P = Math.pow(10, j);
868
581
  for (let m = 0; m < i; m++) {
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++);
582
+ const d = b ? b.getX(m) : m;
583
+ let c = "";
584
+ c += `${~~(s.getX(d) * P)},`, c += `${~~(s.getY(d) * P)},`, c += `${~~(s.getZ(d) * P)},`, c in e ? l.push(e[c]) : (g.push(s.getX(d)), g.push(s.getY(d)), g.push(s.getZ(d)), e[c] = o, l.push(o), o++);
872
585
  }
873
- const k = new ce(
874
- new Float32Array(p),
586
+ const x = new Za(
587
+ new Float32Array(g),
875
588
  s.itemSize,
876
589
  s.normalized
877
- ), M = new sa();
878
- return M.setAttribute("position", k), M.setIndex(f), M;
590
+ ), D = new ia();
591
+ return D.setAttribute("position", x), D.setIndex(l), D;
879
592
  }
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;
593
+ const Ha = Math.PI / 2;
594
+ var _ = /* @__PURE__ */ ((t) => (t.BOX = "Box", t.CYLINDER = "Cylinder", t.SPHERE = "Sphere", t.HULL = "ConvexPolyhedron", t.MESH = "Trimesh", t))(_ || {});
595
+ const re = function(t, a = {}) {
596
+ let e;
884
597
  if (a.type === "Box")
885
- return ie(e);
598
+ return Va(t);
886
599
  if (a.type === "Cylinder")
887
- return qt(e, a);
600
+ return gt(t, a);
888
601
  if (a.type === "Sphere")
889
- return Jt(e, a);
602
+ return jt(t, a);
890
603
  if (a.type === "ConvexPolyhedron")
891
- return Qt(e);
604
+ return ft(t);
892
605
  if (a.type === "Trimesh")
893
- return t = ja(e), t ? Vt(t) : null;
606
+ return e = fa(t), e ? yt(e) : null;
894
607
  if (a.type)
895
608
  throw new Error(`[CANNON.getShapeParameters] Invalid type "${a.type}".`);
896
- if (t = ja(e), !t) return null;
897
- switch (t.type) {
609
+ if (e = fa(t), !e) return null;
610
+ switch (e.type) {
898
611
  case "BoxGeometry":
899
612
  case "BoxBufferGeometry":
900
- return be(t);
613
+ return Ja(e);
901
614
  case "CylinderGeometry":
902
615
  case "CylinderBufferGeometry":
903
- return Wt(t);
616
+ return pt(e);
904
617
  case "PlaneGeometry":
905
618
  case "PlaneBufferGeometry":
906
- return Kt(t);
619
+ return mt(e);
907
620
  case "SphereGeometry":
908
621
  case "SphereBufferGeometry":
909
- return Ht(t);
622
+ return ut(e);
910
623
  case "TubeGeometry":
911
624
  case "BufferGeometry":
912
- return ie(e);
625
+ return Va(t);
913
626
  default:
914
627
  return console.warn(
915
628
  'Unrecognized geometry: "%s". Using bounding box as shape.',
916
- t.type
917
- ), be(t);
629
+ e.type
630
+ ), Ja(e);
918
631
  }
919
- }, Rt = function(e, a = {}, t) {
920
- if (t = t || ve(e, a), !t)
632
+ }, nt = function(t, a = {}, e) {
633
+ if (e = e || re(t, a), !e)
921
634
  return null;
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,
635
+ const { type: b, params: s, offset: i, orientation: o } = e;
636
+ let l;
637
+ return b === "Box" ? l = dt(s) : b === "Cylinder" ? l = ot(s) : b === "Sphere" ? l = rt(s) : b === "ConvexPolyhedron" ? l = ht(s) : l = lt(s), {
638
+ shape: l,
926
639
  offset: i,
927
- orientation: c
640
+ orientation: o
928
641
  };
929
642
  };
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));
643
+ function dt(t) {
644
+ const { x: a, y: e, z: b } = t;
645
+ return new K(new y(a || 0.025, e || 0.025, b || 0.025));
933
646
  }
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;
647
+ function ot(t) {
648
+ const { radiusTop: a, radiusBottom: e, height: b, segments: s } = t, i = new Te(a, e, b, s);
649
+ return i.radiusTop = e, i.radiusBottom = e, i.height = b, i.numSegments = s, i;
937
650
  }
938
- function Ot(e) {
939
- return new ge(e.radius);
651
+ function rt(t) {
652
+ return new se(t.radius);
940
653
  }
941
- function Tt(e) {
942
- const { faces: a, vertices: t } = e, b = [];
943
- for (let i = 0; i < t.length; i += 3)
654
+ function ht(t) {
655
+ const { faces: a, vertices: e } = t, b = [];
656
+ for (let i = 0; i < e.length; i += 3)
944
657
  b.push(new y(
945
- t[i],
946
- t[i + 1],
947
- t[i + 2]
658
+ e[i],
659
+ e[i + 1],
660
+ e[i + 2]
948
661
  ));
949
- return new tt({
662
+ return new Oe({
950
663
  faces: a,
951
664
  vertices: b
952
665
  });
953
666
  }
954
- function _t(e) {
955
- const { vertices: a, indices: t } = e;
956
- return new bt(
667
+ function lt(t) {
668
+ const { vertices: a, indices: e } = t;
669
+ return new Qe(
957
670
  a,
958
- t
671
+ e
959
672
  );
960
673
  }
961
- function be(e) {
962
- if (!xe(e).length) return null;
963
- e.computeBoundingBox();
964
- const t = e.boundingBox;
674
+ function Ja(t) {
675
+ if (!oe(t).length) return null;
676
+ t.computeBoundingBox();
677
+ const e = t.boundingBox;
965
678
  return {
966
679
  type: "Box",
967
680
  params: {
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
681
+ x: (e.max.x - e.min.x) / 2,
682
+ y: (e.max.y - e.min.y) / 2,
683
+ z: (e.max.z - e.min.z) / 2
971
684
  }
972
685
  };
973
686
  }
974
- function ie(e) {
975
- const a = e.clone();
687
+ function Va(t) {
688
+ const a = t.clone();
976
689
  a.quaternion.set(0, 0, 0, 1), a.updateMatrixWorld();
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());
690
+ const e = new $a().setFromObject(a);
691
+ if (!isFinite(e.min.lengthSq())) return null;
692
+ const b = e.translate(a.position.negate()).getCenter(new F());
980
693
  return {
981
694
  type: "Box",
982
695
  params: {
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
696
+ x: (e.max.x - e.min.x) / 2,
697
+ y: (e.max.y - e.min.y) / 2,
698
+ z: (e.max.z - e.min.z) / 2
986
699
  },
987
700
  offset: b.lengthSq() ? new y(b.x, b.y, b.z) : void 0
988
701
  };
989
702
  }
990
- function Qt(e) {
991
- const a = ja(e);
703
+ function ft(t) {
704
+ const a = fa(t);
992
705
  if (!a) return null;
993
- const t = 1e-4;
706
+ const e = 1e-4;
994
707
  for (let i = 0; i < a.attributes.position.count; i++)
995
708
  a.attributes.position.setXYZ(
996
709
  i,
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
710
+ a.attributes.position.getX(i) + (Math.random() - 0.5) * e,
711
+ a.attributes.position.getY(i) + (Math.random() - 0.5) * e,
712
+ a.attributes.position.getZ(i) + (Math.random() - 0.5) * e
1000
713
  );
1001
- const [b, s] = Yt(new Me().setFromObject(new Pa(a)));
714
+ const [b, s] = kt(new fe().setFromObject(new ya(a)));
1002
715
  return {
1003
716
  type: "ConvexPolyhedron",
1004
717
  params: {
@@ -1007,8 +720,8 @@ function Qt(e) {
1007
720
  }
1008
721
  };
1009
722
  }
1010
- function Wt(e) {
1011
- const a = e.parameters;
723
+ function pt(t) {
724
+ const a = t.parameters;
1012
725
  return {
1013
726
  type: "Cylinder",
1014
727
  params: {
@@ -1017,25 +730,25 @@ function Wt(e) {
1017
730
  height: a.height,
1018
731
  segments: a.radialSegments
1019
732
  },
1020
- orientation: new da().setFromEuler(Ie.degToRad(-90), 0, 0, "XYZ").normalize()
733
+ orientation: new na().setFromEuler(pe.degToRad(-90), 0, 0, "XYZ").normalize()
1021
734
  };
1022
735
  }
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);
736
+ function gt(t, a) {
737
+ const e = ["x", "y", "z"], b = a.cylinderAxis || "y", s = e.splice(e.indexOf(b), 1) && e, i = new $a().setFromObject(t);
1025
738
  if (!isFinite(i.min.lengthSq())) return null;
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;
739
+ const o = i.max[b] - i.min[b], l = 0.5 * Math.max(
740
+ la(i.max, s[0]) - la(i.min, s[0]),
741
+ la(i.max, s[1]) - la(i.min, s[1])
742
+ ), g = b === "y" ? Ha : 0, j = b === "z" ? Ha : 0;
1030
743
  return {
1031
744
  type: "Cylinder",
1032
745
  params: {
1033
- radiusTop: f,
1034
- radiusBottom: f,
1035
- height: c,
746
+ radiusTop: l,
747
+ radiusBottom: l,
748
+ height: o,
1036
749
  segments: 12
1037
750
  },
1038
- orientation: new da().setFromEuler(p, j, 0, "XYZ").normalize(),
751
+ orientation: new na().setFromEuler(g, j, 0, "XYZ").normalize(),
1039
752
  offset: new y(
1040
753
  (i.max.x + i.min.x) / 2,
1041
754
  (i.max.y + i.min.y) / 2,
@@ -1043,9 +756,9 @@ function qt(e, a) {
1043
756
  )
1044
757
  };
1045
758
  }
1046
- function Kt(e) {
1047
- e.computeBoundingBox();
1048
- const a = e.boundingBox;
759
+ function mt(t) {
760
+ t.computeBoundingBox();
761
+ const a = t.boundingBox;
1049
762
  return {
1050
763
  type: "Box",
1051
764
  params: {
@@ -1055,90 +768,90 @@ function Kt(e) {
1055
768
  }
1056
769
  };
1057
770
  }
1058
- function Ht(e) {
771
+ function ut(t) {
1059
772
  return {
1060
773
  type: "Sphere",
1061
- params: { radius: e.parameters.radius }
774
+ params: { radius: t.parameters.radius }
1062
775
  };
1063
776
  }
1064
- function Jt(e, a) {
777
+ function jt(t, a) {
1065
778
  if (a.sphereRadius)
1066
779
  return {
1067
780
  type: "Sphere",
1068
781
  params: { radius: a.sphereRadius }
1069
782
  };
1070
- const t = ja(e);
1071
- if (!t) return null;
1072
- t.computeBoundingSphere();
1073
- const b = t.boundingSphere;
783
+ const e = fa(t);
784
+ if (!e) return null;
785
+ e.computeBoundingSphere();
786
+ const b = e.boundingSphere;
1074
787
  return !b || !isFinite(b.radius) ? null : {
1075
788
  type: "Sphere",
1076
- params: { radius: t.boundingSphere.radius }
789
+ params: { radius: e.boundingSphere.radius }
1077
790
  // offset: localPosition.lengthSq()
1078
791
  // ? new Vec3(localPosition.x, localPosition.y, localPosition.z)
1079
792
  // : undefined,
1080
793
  };
1081
794
  }
1082
- function Vt(e) {
1083
- const a = xe(e);
795
+ function yt(t) {
796
+ const a = oe(t);
1084
797
  if (!a.length) return null;
1085
- const t = new Uint32Array(a.length);
798
+ const e = new Uint32Array(a.length);
1086
799
  for (let b = 0; b < a.length; b++)
1087
- t[b] = b;
800
+ e[b] = b;
1088
801
  return {
1089
802
  type: "Trimesh",
1090
803
  params: {
1091
804
  vertices: a,
1092
- indices: t
805
+ indices: e
1093
806
  }
1094
807
  };
1095
808
  }
1096
- function Yt(e) {
1097
- const a = e.faces.map((c) => {
1098
- const f = [];
1099
- let p = c.edge;
809
+ function kt(t) {
810
+ const a = t.faces.map((o) => {
811
+ const l = [];
812
+ let g = o.edge;
1100
813
  do {
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++)
814
+ const j = g.head(), P = t.vertices.indexOf(j);
815
+ P >= 0 && l.push(P), g = g.next;
816
+ } while (g !== o.edge);
817
+ return l;
818
+ }), e = Array.from(new Set(a.flat())).sort(), b = [];
819
+ for (let o = 0; o < e.length; o++)
1107
820
  b.push(
1108
- e.vertices[t[c]].point.x,
1109
- e.vertices[t[c]].point.y,
1110
- e.vertices[t[c]].point.z
821
+ t.vertices[e[o]].point.x,
822
+ t.vertices[e[o]].point.y,
823
+ t.vertices[e[o]].point.z
1111
824
  );
1112
825
  const s = /* @__PURE__ */ new Map();
1113
- for (let c = 0; c < t.length; c++)
1114
- s.set(t[c], c);
826
+ for (let o = 0; o < e.length; o++)
827
+ s.set(e[o], o);
1115
828
  const i = [];
1116
- for (let c = 0; c < a.length; c++)
829
+ for (let o = 0; o < a.length; o++)
1117
830
  i.push([
1118
- s.get(a[c][0]),
1119
- s.get(a[c][1]),
1120
- s.get(a[c][2])
831
+ s.get(a[o][0]),
832
+ s.get(a[o][1]),
833
+ s.get(a[o][2])
1121
834
  ]);
1122
835
  return [b, i];
1123
836
  }
1124
- const Xt = ["static", "dynamic", "kinematic"], va = class va extends ra {
837
+ const wt = ["static", "dynamic", "kinematic"], ua = class ua extends ja {
1125
838
  constructor() {
1126
839
  super(), this.mass = 1, this.type = "dynamic", this.isTrigger = !1, this.material = new T(), this._objectUpdate = (a) => {
1127
840
  if (a.source === "Cannon3DBodyComponent" || a.source === "CannonPhysicsPlugin") return;
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);
841
+ const e = (a == null ? void 0 : a.change) ?? (a == null ? void 0 : a.key);
842
+ (!e || e === "position" || e === "transform" || e === "quaternion") && this.resetTransform(e);
1130
843
  }, this.shapeRefs = [], this.onStateChange("mass", (a) => {
1131
- var t, b;
1132
- this.body && (this.body.mass = a, this.updateMassProperties(), (b = (t = this.object).setDirty) == null || b.call(t, { source: "Cannon3DBodyComponent" }));
844
+ var e, b;
845
+ this.body && (this.body.mass = a, this.updateMassProperties(), (b = (e = this.object).setDirty) == null || b.call(e, { source: "Cannon3DBodyComponent" }));
1133
846
  }), this.onStateChange("type", (a) => {
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" }));
847
+ var e, b;
848
+ this.body && (this.body.type = this._typeToCannon(a), this.updateMassProperties(), (b = (e = this.object).setDirty) == null || b.call(e, { source: "Cannon3DBodyComponent" }));
1136
849
  }), this.onStateChange("isTrigger", (a) => {
1137
- var t, b;
1138
- this.body && (this.body.isTrigger = a, (b = (t = this.object).setDirty) == null || b.call(t, { source: "Cannon3DBodyComponent" }));
850
+ var e, b;
851
+ this.body && (this.body.isTrigger = a, (b = (e = this.object).setDirty) == null || b.call(e, { source: "Cannon3DBodyComponent" }));
1139
852
  }), this.onStateChange("material", (a) => {
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" }));
853
+ var e, b, s, i;
854
+ 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" }));
1142
855
  });
1143
856
  }
1144
857
  _typeToCannon(a) {
@@ -1160,18 +873,18 @@ const Xt = ["static", "dynamic", "kinematic"], va = class va extends ra {
1160
873
  console.error("[Cannon3DBodyComponent] updateBoundingRadius error", a);
1161
874
  }
1162
875
  }
1163
- init(a, t) {
1164
- super.init(a, t);
876
+ init(a, e) {
877
+ super.init(a, e);
1165
878
  const b = this.ctx.plugin(z);
1166
879
  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) => {
1167
- L.GetComponents(s, ca).forEach((i) => {
880
+ L.GetComponents(s, sa).forEach((i) => {
1168
881
  this.addShape(i, !1);
1169
882
  });
1170
883
  }, { widgets: !1, visible: !1 }), this.shapeRefs.length && this.refreshShapes();
1171
884
  }
1172
885
  destroy() {
1173
- return this.shapeRefs.forEach((t) => {
1174
- this.removeShape(t, !1);
886
+ return this.shapeRefs.forEach((e) => {
887
+ this.removeShape(e, !1);
1175
888
  }), this.refreshShapes(!1), this.object.removeEventListener("objectUpdate", this._objectUpdate), this.ctx.plugin(z).removeBody(this), this.body = null, super.destroy();
1176
889
  }
1177
890
  // update({time}: IAnimationLoopEvent) {
@@ -1180,56 +893,56 @@ const Xt = ["static", "dynamic", "kinematic"], va = class va extends ra {
1180
893
  resetTransform(a) {
1181
894
  (!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);
1182
895
  }
1183
- addShape(a, t = !0) {
896
+ addShape(a, e = !0) {
1184
897
  if (!this.shapeRefs.includes(a)) {
1185
898
  if (a.bodyRef && a.bodyRef !== this)
1186
899
  return;
1187
- this.shapeRefs.push(a), a.bodyRef = this, t && this.refreshShapes();
900
+ this.shapeRefs.push(a), a.bodyRef = this, e && this.refreshShapes();
1188
901
  }
1189
902
  }
1190
- removeShape(a, t = !0) {
903
+ removeShape(a, e = !0) {
1191
904
  const b = this.shapeRefs.indexOf(a);
1192
- b !== -1 && (a.bodyRef === this && (a.bodyRef = void 0), this.shapeRefs.splice(b, 1), t && this.refreshShapes());
905
+ b !== -1 && (a.bodyRef === this && (a.bodyRef = void 0), this.shapeRefs.splice(b, 1), e && this.refreshShapes());
1193
906
  }
1194
907
  refreshShapes(a = !0) {
1195
- var c, f;
1196
- let t = !1;
1197
- for (const p of this.body.shapes)
1198
- if (!this.shapeRefs.find((j) => j.result.shape === p)) {
1199
- const j = this.body.shapes.indexOf(p);
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);
908
+ var o, l;
909
+ let e = !1;
910
+ for (const g of this.body.shapes)
911
+ if (!this.shapeRefs.find((j) => j.result.shape === g)) {
912
+ const j = this.body.shapes.indexOf(g);
913
+ j !== -1 && (this.body.shapes.splice(j, 1), this.body.shapeOffsets.splice(j, 1), this.body.shapeOrientations.splice(j, 1), g.body = null, e = !0);
1201
914
  }
1202
915
  const b = this.object;
1203
916
  b.updateMatrixWorld(!0);
1204
917
  const s = b.getWorldPosition(new F()), i = b.getWorldQuaternion(new C());
1205
- for (const p of this.shapeRefs)
1206
- if (!this.body.shapes.includes(p.result.shape)) {
1207
- const j = p.result.shape;
918
+ for (const g of this.shapeRefs)
919
+ if (!this.body.shapes.includes(g.result.shape)) {
920
+ const j = g.result.shape;
1208
921
  this.body.shapes.push(j);
1209
- const P = new y(), k = new da();
1210
- p.result.offset && (P.x += p.result.offset.x, P.y += p.result.offset.y, P.z += p.result.offset.z), p.result.orientation && (k.x = p.result.orientation.x, k.y = p.result.orientation.y, k.z = p.result.orientation.z, k.w = p.result.orientation.w);
1211
- const M = p.object;
1212
- if (b !== M) {
1213
- M.updateMatrixWorld(!0);
1214
- const m = M.getWorldPosition(new F());
922
+ const P = new y(), x = new na();
923
+ g.result.offset && (P.x += g.result.offset.x, P.y += g.result.offset.y, P.z += g.result.offset.z), g.result.orientation && (x.x = g.result.orientation.x, x.y = g.result.orientation.y, x.z = g.result.orientation.z, x.w = g.result.orientation.w);
924
+ const D = g.object;
925
+ if (b !== D) {
926
+ D.updateMatrixWorld(!0);
927
+ const m = D.getWorldPosition(new F());
1215
928
  P.x += m.x - s.x, P.y += m.y - s.y, P.z += m.z - s.z;
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;
929
+ const c = D.getWorldQuaternion(new C()).multiply(i.invert());
930
+ x.x = c.x, x.y = c.y, x.z = c.z, x.w = c.w;
1218
931
  }
1219
- this.body.shapeOffsets.push(P), this.body.shapeOrientations.push(k), j.body = this.body, t = !0;
932
+ this.body.shapeOffsets.push(P), this.body.shapeOrientations.push(x), j.body = this.body, e = !0;
1220
933
  }
1221
- a && t && (this.updateMassProperties(), this.updateBoundingRadius(), this.body.aabbNeedsUpdate = !0, (f = (c = this.object).setDirty) == null || f.call(c, { source: "Cannon3DBodyComponent" }));
934
+ a && e && (this.updateMassProperties(), this.updateBoundingRadius(), this.body.aabbNeedsUpdate = !0, (l = (o = this.object).setDirty) == null || l.call(o, { source: "Cannon3DBodyComponent" }));
1222
935
  }
1223
936
  };
1224
- va.ComponentType = "Cannon3DBodyComponent", va.StateProperties = ["mass", {
937
+ ua.ComponentType = "Cannon3DBodyComponent", ua.StateProperties = ["mass", {
1225
938
  key: "type",
1226
- type: Ba(Xt)
939
+ type: Da(wt)
1227
940
  }, "isTrigger", "material"];
1228
- let ya = va;
1229
- function Zt() {
1230
- const a = new y(), t = new y(), b = new y();
1231
- new da();
1232
- const s = new Fa(1), i = new Ea(1, 1, 1), c = new Za(10, 10, 10, 10), f = new Fe({
941
+ let pa = ua;
942
+ function xt() {
943
+ const a = new y(), e = new y(), b = new y();
944
+ new na();
945
+ const s = new va(1), i = new Pa(1, 1, 1), o = new Wa(10, 10, 10, 10), l = new ge({
1233
946
  color: 65280,
1234
947
  linewidth: 3,
1235
948
  // in world units with size attenuation, pixels otherwise
@@ -1243,158 +956,158 @@ function Zt() {
1243
956
  depthWrite: !1,
1244
957
  allowOverride: !1
1245
958
  });
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);
959
+ l.userData.renderToGBuffer = !1, l.userData.renderToDepth = !1, o.translate(0, 0, 1e-4);
960
+ function g(c) {
961
+ const n = new ia(), r = [];
962
+ for (let f = 0; f < c.vertices.length; f++) {
963
+ const p = c.vertices[f];
964
+ r.push(p.x, p.y, p.z);
1252
965
  }
1253
- o.setAttribute("position", new Ma(d, 3));
966
+ n.setAttribute("position", new xa(r, 3));
1254
967
  const h = [];
1255
- for (let l = 0; l < n.faces.length; l++) {
1256
- const g = n.faces[l], u = g[0];
1257
- for (let w = 1; w < g.length - 1; w++) {
1258
- const x = g[w], A = g[w + 1];
1259
- h.push(u, x, A);
968
+ for (let f = 0; f < c.faces.length; f++) {
969
+ const p = c.faces[f], u = p[0];
970
+ for (let k = 1; k < p.length - 1; k++) {
971
+ const w = p[k], A = p[k + 1];
972
+ h.push(u, w, A);
1260
973
  }
1261
974
  }
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);
975
+ return n.setIndex(h), n.computeBoundingSphere(), n.computeVertexNormals(), n;
976
+ }
977
+ function j(c) {
978
+ const n = new ia(), r = [], h = a, f = e, p = b;
979
+ for (let u = 0; u < c.indices.length / 3; u++)
980
+ c.getTriangleVertices(u, h, f, p), r.push(h.x, h.y, h.z), r.push(f.x, f.y, f.z), r.push(p.x, p.y, p.z);
981
+ return n.setAttribute("position", new xa(r, 3)), n.computeBoundingSphere(), n.computeVertexNormals(), n;
982
+ }
983
+ function P(c) {
984
+ const n = new ia(), r = c.elementSize || 1, h = c.data.flatMap((p, u) => p.flatMap((k, w) => [u * r, w * r, k])), f = [];
985
+ for (let p = 0; p < c.data.length - 1; p++)
986
+ for (let u = 0; u < c.data[p].length - 1; u++) {
987
+ const k = c.data[p].length, w = p * k + u;
988
+ f.push(w + 1, w + k, w + k + 1), f.push(w + k, w + 1, w);
1276
989
  }
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);
990
+ return n.setIndex(f), n.setAttribute("position", new xa(h, 3)), n.computeBoundingSphere(), n.computeVertexNormals(), n;
991
+ }
992
+ function x(c) {
993
+ let n = new ya();
994
+ const { SPHERE: r, BOX: h, PLANE: f, CYLINDER: p, CONVEXPOLYHEDRON: u, TRIMESH: k, HEIGHTFIELD: w } = q.types;
995
+ switch (c.type) {
996
+ case r: {
997
+ n = new Y(new X(s), l);
1285
998
  break;
1286
999
  }
1287
1000
  case h: {
1288
- o = new X(new Z(i), f);
1001
+ n = new Y(new X(i), l);
1289
1002
  break;
1290
1003
  }
1291
- case l: {
1292
- o = new X(new Z(c), f);
1004
+ case f: {
1005
+ n = new Y(new X(o), l);
1293
1006
  break;
1294
1007
  }
1295
- case g: {
1296
- const A = new Ee(
1297
- n.radiusTop,
1298
- n.radiusBottom,
1299
- n.height,
1300
- n.numSegments
1008
+ case p: {
1009
+ const A = new me(
1010
+ c.radiusTop,
1011
+ c.radiusBottom,
1012
+ c.height,
1013
+ c.numSegments
1301
1014
  );
1302
- o = new X(new Z(A), f), n.geometryId = A.id;
1015
+ n = new Y(new X(A), l), c.geometryId = A.id;
1303
1016
  break;
1304
1017
  }
1305
1018
  case u: {
1306
- const A = p(n);
1307
- o = new X(new Z(A), f), n.geometryId = A.id;
1019
+ const A = g(c);
1020
+ n = new Y(new X(A), l), c.geometryId = A.id;
1308
1021
  break;
1309
1022
  }
1310
- case w: {
1311
- const A = j(n);
1312
- o = new X(new Z(A), f), n.geometryId = A.id;
1023
+ case k: {
1024
+ const A = j(c);
1025
+ n = new Y(new X(A), l), c.geometryId = A.id;
1313
1026
  break;
1314
1027
  }
1315
- case x: {
1316
- const A = P(n);
1317
- o = new X(new Z(A), f), n.geometryId = A.id;
1028
+ case w: {
1029
+ const A = P(c);
1030
+ n = new Y(new X(A), l), c.geometryId = A.id;
1318
1031
  break;
1319
1032
  }
1320
1033
  }
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);
1034
+ return n;
1035
+ }
1036
+ function D(c, n) {
1037
+ const { SPHERE: r, BOX: h, PLANE: f, CYLINDER: p, CONVEXPOLYHEDRON: u, TRIMESH: k, HEIGHTFIELD: w } = q.types;
1038
+ switch (n.type) {
1039
+ case r: {
1040
+ const { radius: A } = n;
1041
+ c.scale.set(A * 1, A * 1, A * 1);
1329
1042
  break;
1330
1043
  }
1331
1044
  case h: {
1332
- n.scale.copy(o.halfExtents), n.scale.multiplyScalar(2);
1045
+ c.scale.copy(n.halfExtents), c.scale.multiplyScalar(2);
1333
1046
  break;
1334
1047
  }
1335
- case l:
1048
+ case f:
1336
1049
  break;
1337
- case g: {
1338
- n.scale.set(1, 1, 1);
1050
+ case p: {
1051
+ c.scale.set(1, 1, 1);
1339
1052
  break;
1340
1053
  }
1341
1054
  case u: {
1342
- n.scale.set(1, 1, 1);
1055
+ c.scale.set(1, 1, 1);
1343
1056
  break;
1344
1057
  }
1345
- case w: {
1346
- n.scale.copy(o.scale).multiplyScalar(1);
1058
+ case k: {
1059
+ c.scale.copy(n.scale).multiplyScalar(1);
1347
1060
  break;
1348
1061
  }
1349
- case x: {
1350
- n.scale.set(1, 1, 1);
1062
+ case w: {
1063
+ c.scale.set(1, 1, 1);
1351
1064
  break;
1352
1065
  }
1353
1066
  }
1354
1067
  }
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 ||
1068
+ function m(c, n) {
1069
+ if (!c) return !1;
1070
+ const { geometry: r } = c;
1071
+ return r instanceof va && n.type === q.types.SPHERE || r instanceof Pa && n.type === q.types.BOX || r instanceof Wa && n.type === q.types.PLANE || // geometry.id === (shape as ComplexShape).geometryId && shape.type === Shape.types.BOX ||
1359
1072
  // geometry.id === (shape as ComplexShape).geometryId && shape.type === Shape.types.SPHERE ||
1360
1073
  // geometry.id === (shape as ComplexShape).geometryId && shape.type === Shape.types.PLANE ||
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;
1074
+ r.id === n.geometryId && n.type === q.types.CONVEXPOLYHEDRON || r.id === n.geometryId && n.type === q.types.TRIMESH || r.id === n.geometryId && n.type === q.types.HEIGHTFIELD;
1362
1075
  }
1363
- function r(n, o) {
1364
- return m(n, o) || (n = k(o)), n && M(n, o), n;
1076
+ function d(c, n) {
1077
+ return m(c, n) || (c = x(n)), c && D(c, n), c;
1365
1078
  }
1366
1079
  return {
1367
- createConvexPolyhedronGeometry: p,
1080
+ createConvexPolyhedronGeometry: g,
1368
1081
  createTrimeshGeometry: j,
1369
1082
  createHeightfieldGeometry: P,
1370
- createMesh: k,
1371
- scaleMesh: M,
1083
+ createMesh: x,
1084
+ scaleMesh: D,
1372
1085
  typeMatch: m,
1373
- updateMesh: r
1086
+ updateMesh: d
1374
1087
  };
1375
1088
  }
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
1089
+ const vt = xt(), Ma = {
1090
+ autoBox: _.BOX,
1091
+ autoCylinder: _.CYLINDER,
1092
+ autoSphere: _.SPHERE,
1093
+ autoConvex: _.HULL,
1094
+ autoTrimesh: _.MESH,
1095
+ box: _.BOX,
1096
+ sphere: _.SPHERE,
1097
+ cylinder: _.CYLINDER,
1098
+ convex: _.HULL,
1099
+ trimesh: _.MESH
1387
1100
  // plane: ShapeType.PLANE,
1388
- }, ab = Object.keys(Sa), eb = {
1101
+ }, Pt = Object.keys(Ma), At = {
1389
1102
  box: { x: 1, y: 1, z: 1 },
1390
1103
  sphere: { radius: 1 },
1391
1104
  cylinder: { radiusTop: 1, radiusBottom: 1, height: 1, segments: 8 },
1392
1105
  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]] },
1393
1106
  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]) }
1394
1107
  // not for auto
1395
- }, J = class J extends ra {
1108
+ }, H = class H extends ja {
1396
1109
  constructor() {
1397
- super(), this.result = J.EmptyResult, this.type = "autoBox", this.params = null, this._needsUpdate = !1, this.objectUpdate = (a) => {
1110
+ super(), this.result = H.EmptyResult, this.type = "autoBox", this.params = null, this._needsUpdate = !1, this.objectUpdate = (a) => {
1398
1111
  }, this.childadded = (a) => {
1399
1112
  this._needsUpdate = !0, a.child.addEventListener("objectUpdate", this.objectUpdate), a.child.addEventListener("childadded", this.childadded), a.child.addEventListener("childremoved", this.childremoved);
1400
1113
  }, this.childremoved = (a) => {
@@ -1402,16 +1115,16 @@ const $t = Zt(), Sa = {
1402
1115
  }, this.preFrame = () => {
1403
1116
  this._needsUpdate && (this._needsUpdate = !1, this.refreshShape());
1404
1117
  }, this.onStateChange("type", () => {
1405
- const a = eb[this.type];
1118
+ const a = At[this.type];
1406
1119
  if (a) {
1407
- const t = {};
1120
+ const e = {};
1408
1121
  Object.entries(a).forEach(([b, s]) => {
1409
- t[b] = s.slice ? s.slice() : s;
1122
+ e[b] = s.slice ? s.slice() : s;
1410
1123
  }), this.params = {
1411
- type: Sa[this.type],
1412
- params: t,
1124
+ type: Ma[this.type],
1125
+ params: e,
1413
1126
  offset: new y(),
1414
- orientation: new da()
1127
+ orientation: new na()
1415
1128
  };
1416
1129
  } else
1417
1130
  this.params = null;
@@ -1419,32 +1132,32 @@ const $t = Zt(), Sa = {
1419
1132
  });
1420
1133
  }
1421
1134
  // static IsCompatible(_object: IObject3D) { return true }
1422
- init(a, t) {
1423
- super.init(a, t), this.refreshShape(!1);
1424
- const b = L.GetComponentInParent(a, ya);
1135
+ init(a, e) {
1136
+ super.init(a, e), this.refreshShape(!1);
1137
+ const b = L.GetComponentInParent(a, pa);
1425
1138
  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);
1426
1139
  }
1427
1140
  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();
1141
+ 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();
1429
1142
  }
1430
1143
  refreshShape(a = !0) {
1431
- var s, i, c;
1144
+ var s, i, o;
1432
1145
  if (this.object.__cannonShapes || (this.object.__cannonShapes = []), this.result) {
1433
- const f = this.object.__cannonShapes.indexOf(this.result);
1434
- f !== -1 && this.object.__cannonShapes.splice(f, 1);
1146
+ const l = this.object.__cannonShapes.indexOf(this.result);
1147
+ l !== -1 && this.object.__cannonShapes.splice(l, 1);
1435
1148
  }
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);
1149
+ const e = Ma[this.type], b = this.params ?? (e ? re(this.object, { type: e }) : null);
1150
+ b ? this.result = nt(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), (o = this.ctx.plugin(ae)) == null || o.refreshObject(this.object);
1438
1151
  }
1439
1152
  };
1440
- J.ComponentType = "Cannon3DShapeComponent", J.StateProperties = [{
1153
+ H.ComponentType = "Cannon3DShapeComponent", H.StateProperties = [{
1441
1154
  key: "type",
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 {
1155
+ type: Da(Pt)
1156
+ }], H.EmptyResult = { shape: new K(new y(0.025, 0.025, 0.025)) };
1157
+ let sa = H;
1158
+ class ga extends ue {
1446
1159
  constructor(a) {
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;
1160
+ super(a, !1), this.autoUpgradeChildren = !1, this._shapes = [], this._meshes = /* @__PURE__ */ new WeakMap(), this._gp = new je(), this.attach(a), this.add(this._gp), this.visible = !1;
1448
1161
  }
1449
1162
  update() {
1450
1163
  var s;
@@ -1453,37 +1166,37 @@ class ka extends Ne {
1453
1166
  1 / this._gp.scale.y,
1454
1167
  1 / this._gp.scale.z
1455
1168
  );
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)) {
1169
+ 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));
1170
+ if (!(!e.length && !b.length)) {
1458
1171
  for (const i of b) {
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));
1172
+ const o = this._meshes.get(i.shape);
1173
+ o && (this._gp.remove(o), o.geometry.dispose(), o.material.dispose(), this._meshes.delete(i.shape));
1461
1174
  }
1462
1175
  this._shapes = [];
1463
1176
  for (const i of a) {
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);
1177
+ const o = this._meshes.get(i.shape), l = vt.updateMesh(o, i.shape);
1178
+ l !== o && l && (this._gp.add(l), o && (o.removeFromParent(), o.geometry.dispose(), o.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);
1466
1179
  }
1467
1180
  }
1468
1181
  }
1469
1182
  dispose() {
1470
1183
  this._shapes = [], this.children.forEach((a) => {
1471
- a instanceof Pa && (a.geometry.dispose(), a.material.dispose());
1184
+ a instanceof ya && (a.geometry.dispose(), a.material.dispose());
1472
1185
  }), super.dispose();
1473
1186
  }
1474
1187
  static Check(a) {
1475
- return !!L.GetComponentData(a, ca);
1188
+ return !!L.GetComponentData(a, sa);
1476
1189
  }
1477
1190
  static Create(a) {
1478
- return new ka(a);
1191
+ return new ga(a);
1479
1192
  }
1480
1193
  }
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);
1194
+ var Mt = Object.getOwnPropertyDescriptor, Dt = (t, a, e, b) => {
1195
+ for (var s = b > 1 ? void 0 : b ? Mt(a, e) : a, i = t.length - 1, o; i >= 0; i--)
1196
+ (o = t[i]) && (s = o(s) || s);
1484
1197
  return s;
1485
1198
  };
1486
- let oa = class extends ra {
1199
+ let ca = class extends ja {
1487
1200
  constructor() {
1488
1201
  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 = {
1489
1202
  head: ["Head", "mixamorigHead", "head"],
@@ -1518,16 +1231,16 @@ let oa = class extends ra {
1518
1231
  get isActive() {
1519
1232
  return this._isActive;
1520
1233
  }
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();
1234
+ init(t, a) {
1235
+ var e;
1236
+ super.init(t, a), this._cannon = this.ctx.plugin(z), this._removeRagdoll(), this._visualMaterial || (this._visualMaterial = new ye({ color: 8947848 })), this._meshContainer || (this._meshContainer = new ke(), 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();
1524
1237
  }
1525
1238
  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();
1239
+ var t;
1240
+ 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();
1528
1241
  }
1529
1242
  // Called automatically by the component system each frame
1530
- preFrame(e) {
1243
+ preFrame(t) {
1531
1244
  this._isActive ? this._syncRagdollToBones() : this._syncObjectPosition(), this._updateMeshes();
1532
1245
  }
1533
1246
  /**
@@ -1544,25 +1257,25 @@ let oa = class extends ra {
1544
1257
  */
1545
1258
  _syncRagdollToBones() {
1546
1259
  if (!this._parts || this._characterMeshes.length === 0) return;
1547
- const e = (t, b) => {
1260
+ const t = (e, b) => {
1548
1261
  const s = this._findBone(b);
1549
1262
  if (!s) return;
1550
- const i = s.name, c = this._initialBodyQuats.get(t), f = this._initialBoneWorldQuats.get(i);
1551
- if (!c || !f)
1263
+ const i = s.name, o = this._initialBodyQuats.get(e), l = this._initialBoneWorldQuats.get(i);
1264
+ if (!o || !l)
1552
1265
  return;
1553
- const p = new C(
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);
1266
+ const g = new C(
1267
+ e.quaternion.x,
1268
+ e.quaternion.y,
1269
+ e.quaternion.z,
1270
+ e.quaternion.w
1271
+ ), j = o.clone().invert(), x = g.clone().multiply(j).clone().multiply(l);
1559
1272
  if (s.parent) {
1560
- const M = new C();
1561
- s.parent.getWorldQuaternion(M);
1562
- const r = M.clone().invert().clone().multiply(k);
1563
- s.quaternion.copy(r);
1273
+ const D = new C();
1274
+ s.parent.getWorldQuaternion(D);
1275
+ const d = D.clone().invert().clone().multiply(x);
1276
+ s.quaternion.copy(d);
1564
1277
  } else
1565
- s.quaternion.copy(k);
1278
+ s.quaternion.copy(x);
1566
1279
  }, a = this._findBone(this._boneNames.hips);
1567
1280
  if (a && this._parts.pelvis) {
1568
1281
  if (this._tempWorldPos.set(
@@ -1570,19 +1283,19 @@ let oa = class extends ra {
1570
1283
  this._parts.pelvis.position.y,
1571
1284
  this._parts.pelvis.position.z
1572
1285
  ), a.parent) {
1573
- const t = a.parent.matrixWorld.clone().invert();
1574
- this._tempWorldPos.applyMatrix4(t);
1286
+ const e = a.parent.matrixWorld.clone().invert();
1287
+ this._tempWorldPos.applyMatrix4(e);
1575
1288
  }
1576
- a.position.copy(this._tempWorldPos), e(this._parts.pelvis, this._boneNames.hips);
1289
+ a.position.copy(this._tempWorldPos), t(this._parts.pelvis, this._boneNames.hips);
1577
1290
  }
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();
1291
+ 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);
1292
+ for (const e of this._characterMeshes)
1293
+ e.skeleton && e.skeleton.update();
1581
1294
  }
1582
1295
  _syncObjectPosition() {
1583
1296
  if (!this._initialized || this._bodies.length === 0) return;
1584
1297
  this.object.getWorldPosition(this._currentObjectPosition), this.object.getWorldQuaternion(this._currentObjectQuaternion);
1585
- const e = this._currentObjectPosition.x - this._lastObjectPosition.x, a = this._currentObjectPosition.y - this._lastObjectPosition.y, t = this._currentObjectPosition.z - this._lastObjectPosition.z;
1298
+ const t = this._currentObjectPosition.x - this._lastObjectPosition.x, a = this._currentObjectPosition.y - this._lastObjectPosition.y, e = this._currentObjectPosition.z - this._lastObjectPosition.z;
1586
1299
  if (!this._currentObjectQuaternion.equals(this._lastObjectQuaternion)) {
1587
1300
  this._invLastQuaternion.copy(this._lastObjectQuaternion).invert(), this._deltaQuaternion.copy(this._currentObjectQuaternion).multiply(this._invLastQuaternion), this._pivotPoint.copy(this._lastObjectPosition);
1588
1301
  for (const s of this._bodies) {
@@ -1601,17 +1314,17 @@ let oa = class extends ra {
1601
1314
  }
1602
1315
  this._lastObjectQuaternion.copy(this._currentObjectQuaternion);
1603
1316
  }
1604
- if (e !== 0 || a !== 0 || t !== 0) {
1317
+ if (t !== 0 || a !== 0 || e !== 0) {
1605
1318
  for (const s of this._bodies)
1606
- s.position.x += e, s.position.y += a, s.position.z += t;
1319
+ s.position.x += t, s.position.y += a, s.position.z += e;
1607
1320
  this._lastObjectPosition.copy(this._currentObjectPosition);
1608
1321
  }
1609
1322
  }
1610
1323
  _updateMeshes() {
1611
1324
  if (!(!this._parts || this._meshes.length === 0))
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(
1325
+ for (let t = 0; t < this._bodies.length && t < this._meshes.length; t++) {
1326
+ const a = this._bodies[t], e = this._meshes[t];
1327
+ e.position.set(a.position.x, a.position.y, a.position.z), e.quaternion.set(
1615
1328
  a.quaternion.x,
1616
1329
  a.quaternion.y,
1617
1330
  a.quaternion.z,
@@ -1620,337 +1333,337 @@ let oa = class extends ra {
1620
1333
  }
1621
1334
  }
1622
1335
  _recreateRagdoll() {
1623
- var e, a;
1624
- this._cannon && (this._removeRagdoll(), this._createRagdoll(), (a = (e = this.object).setDirty) == null || a.call(e, { source: "CannonRagdollComponent" }));
1336
+ var t, a;
1337
+ this._cannon && (this._removeRagdoll(), this._createRagdoll(), (a = (t = this.object).setDirty) == null || a.call(t, { source: "CannonRagdollComponent" }));
1625
1338
  }
1626
1339
  _updateMass() {
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" });
1340
+ var t, a;
1341
+ for (const e of this._bodies)
1342
+ e.mass = this.mass, e.updateMassProperties();
1343
+ (a = (t = this.object).setDirty) == null || a.call(t, { source: "CannonRagdollComponent" });
1631
1344
  }
1632
1345
  _updateConstraints() {
1633
1346
  this._recreateRagdoll();
1634
1347
  }
1635
1348
  _createRagdoll() {
1636
1349
  if (!this._cannon) return;
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(
1642
- new y(s * 0.5, k * 0.5, p * 0.5)
1643
- ), u = new H(
1644
- new y(s * 0.5, M * 0.5, p * 0.5)
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);
1350
+ const t = this.scale, a = this.angle, e = this.angleShoulders, b = this.twistAngle, s = 0.5 * t, i = 0.4 * t, o = 0.4 * t, l = 0.2 * t, g = 0.2 * t, j = 0.1 * t, P = 0.25 * t, x = 0.6 * t, D = 0.4 * t, m = 0.5 * t, d = 0.2 * t, c = 0.2 * t, n = 0.5 * t, r = new se(P), h = new K(
1351
+ new y(i * 0.5, l * 0.5, l * 0.5)
1352
+ ), f = new K(
1353
+ new y(o * 0.5, g * 0.5, g * 0.5)
1354
+ ), p = new K(
1355
+ new y(s * 0.5, x * 0.5, g * 0.5)
1356
+ ), u = new K(
1357
+ new y(s * 0.5, D * 0.5, g * 0.5)
1358
+ ), k = new K(
1359
+ new y(d * 0.5, m * 0.5, g * 0.5)
1360
+ ), w = new K(
1361
+ new y(c * 0.5, n * 0.5, g * 0.5)
1362
+ ), A = this.object.getWorldPosition(new F()), v = this.object.getWorldQuaternion(new C()), M = (O) => {
1363
+ const ba = O.clone().applyQuaternion(v);
1651
1364
  return new y(
1652
- A.x + ia.x,
1653
- A.y + ia.y,
1654
- A.z + ia.z
1365
+ A.x + ba.x,
1366
+ A.y + ba.y,
1367
+ A.z + ba.z
1655
1368
  );
1656
- }, I = (_, ia = !1) => {
1657
- var Xa;
1658
- let Aa;
1659
- if (ia)
1660
- Aa = new Fa(P, 16, 16);
1369
+ }, I = (O, ba = !1) => {
1370
+ var Qa;
1371
+ let ka;
1372
+ if (ba)
1373
+ ka = new va(P, 16, 16);
1661
1374
  else {
1662
- const Da = _.shapes[0];
1663
- Aa = new Ea(
1664
- Da.halfExtents.x * 2,
1665
- Da.halfExtents.y * 2,
1666
- Da.halfExtents.z * 2
1375
+ const wa = O.shapes[0];
1376
+ ka = new Pa(
1377
+ wa.halfExtents.x * 2,
1378
+ wa.halfExtents.y * 2,
1379
+ wa.halfExtents.z * 2
1667
1380
  );
1668
1381
  }
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;
1382
+ const ra = new ya(ka, this._visualMaterial);
1383
+ return ra.position.set(O.position.x, O.position.y, O.position.z), (Qa = this._meshContainer) == null || Qa.add(ra), this._meshes.push(ra), ra;
1671
1384
  }, E = new N({
1672
1385
  mass: this.mass,
1673
- position: D(new F(s / 2, o / 2, 0)),
1386
+ position: M(new F(s / 2, n / 2, 0)),
1674
1387
  material: this.material
1675
- }), S = new N({
1388
+ }), B = new N({
1676
1389
  mass: this.mass,
1677
- position: D(new F(-s / 2, o / 2, 0)),
1390
+ position: M(new F(-s / 2, n / 2, 0)),
1678
1391
  material: this.material
1679
1392
  });
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);
1393
+ E.addShape(w), B.addShape(w), E.quaternion.set(v.x, v.y, v.z, v.w), B.quaternion.set(v.x, v.y, v.z, v.w), this._bodies.push(E, B), I(E), I(B);
1681
1394
  const R = new N({
1682
1395
  mass: this.mass,
1683
- position: D(new F(s / 2, o + m / 2, 0)),
1396
+ position: M(new F(s / 2, n + m / 2, 0)),
1684
1397
  material: this.material
1685
1398
  }), U = new N({
1686
1399
  mass: this.mass,
1687
- position: D(new F(-s / 2, o + m / 2, 0)),
1400
+ position: M(new F(-s / 2, n + m / 2, 0)),
1688
1401
  material: this.material
1689
1402
  });
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({
1403
+ R.addShape(k), U.addShape(k), 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);
1404
+ const ta = n + m + D / 2, S = new N({
1692
1405
  mass: this.mass,
1693
- position: D(new F(0, ba, 0)),
1406
+ position: M(new F(0, ta, 0)),
1694
1407
  material: this.material
1695
1408
  });
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({
1409
+ S.addShape(u), S.quaternion.set(v.x, v.y, v.z, v.w), this._bodies.push(S), I(S);
1410
+ const Z = ta + D / 2 + x / 2, G = new N({
1698
1411
  mass: this.mass,
1699
- position: D(new F(0, $, 0)),
1412
+ position: M(new F(0, Z, 0)),
1700
1413
  material: this.material
1701
1414
  });
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({
1415
+ G.addShape(p), G.quaternion.set(v.x, v.y, v.z, v.w), this._bodies.push(G), I(G);
1416
+ const da = Z + x / 2 + P + j, $ = new N({
1704
1417
  mass: this.mass,
1705
- position: D(new F(0, ha, 0)),
1418
+ position: M(new F(0, da, 0)),
1706
1419
  material: this.material
1707
1420
  });
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({
1421
+ $.addShape(r), $.quaternion.set(v.x, v.y, v.z, v.w), this._bodies.push($), I($, !0);
1422
+ const oa = Z + x / 2, J = new N({
1710
1423
  mass: this.mass,
1711
- position: D(new F(s / 2 + i / 2, fa, 0)),
1424
+ position: M(new F(s / 2 + i / 2, oa, 0)),
1712
1425
  material: this.material
1713
- }), Y = new N({
1426
+ }), V = new N({
1714
1427
  mass: this.mass,
1715
- position: D(new F(-s / 2 - i / 2, fa, 0)),
1428
+ position: M(new F(-s / 2 - i / 2, oa, 0)),
1716
1429
  material: this.material
1717
1430
  });
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({
1431
+ J.addShape(h), V.addShape(h), J.quaternion.set(v.x, v.y, v.z, v.w), V.quaternion.set(v.x, v.y, v.z, v.w), this._bodies.push(J, V), I(J), I(V);
1432
+ const aa = new N({
1720
1433
  mass: this.mass,
1721
- position: D(new F(
1722
- s / 2 + i + c / 2,
1723
- fa,
1434
+ position: M(new F(
1435
+ s / 2 + i + o / 2,
1436
+ oa,
1724
1437
  0
1725
1438
  )),
1726
1439
  material: this.material
1727
- }), ta = new N({
1440
+ }), ea = new N({
1728
1441
  mass: this.mass,
1729
- position: D(new F(
1730
- -s / 2 - i - c / 2,
1731
- fa,
1442
+ position: M(new F(
1443
+ -s / 2 - i - o / 2,
1444
+ oa,
1732
1445
  0
1733
1446
  )),
1734
1447
  material: this.material
1735
1448
  });
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 = {
1449
+ aa.addShape(f), ea.addShape(f), aa.quaternion.set(v.x, v.y, v.z, v.w), ea.quaternion.set(v.x, v.y, v.z, v.w), this._bodies.push(aa, ea), I(aa), I(ea), this._parts = {
1737
1450
  lowerLeftLeg: E,
1738
- lowerRightLeg: S,
1451
+ lowerRightLeg: B,
1739
1452
  upperLeftLeg: R,
1740
1453
  upperRightLeg: U,
1741
- pelvis: B,
1454
+ pelvis: S,
1742
1455
  upperBody: G,
1743
- head: aa,
1744
- upperLeftArm: V,
1745
- upperRightArm: Y,
1746
- lowerLeftArm: ea,
1747
- lowerRightArm: ta
1456
+ head: $,
1457
+ upperLeftArm: J,
1458
+ upperRightArm: V,
1459
+ lowerLeftArm: aa,
1460
+ lowerRightArm: ea
1748
1461
  };
1749
- for (const _ of this._bodies)
1750
- this._cannon.world.addBody(_);
1751
- const Ta = new Q(aa, G, {
1462
+ for (const O of this._bodies)
1463
+ this._cannon.world.addBody(O);
1464
+ const Ba = new Q($, G, {
1752
1465
  pivotA: new y(0, -P - j / 2, 0),
1753
- pivotB: new y(0, k / 2, 0),
1466
+ pivotB: new y(0, x / 2, 0),
1754
1467
  axisA: y.UNIT_Y,
1755
1468
  axisB: y.UNIT_Y,
1756
1469
  angle: a,
1757
1470
  twistAngle: b
1758
1471
  });
1759
- this._constraints.push(Ta);
1760
- const _a = new Q(E, R, {
1761
- pivotA: new y(0, o / 2, 0),
1472
+ this._constraints.push(Ba);
1473
+ const Sa = new Q(E, R, {
1474
+ pivotA: new y(0, n / 2, 0),
1762
1475
  pivotB: new y(0, -m / 2, 0),
1763
1476
  axisA: y.UNIT_Y,
1764
1477
  axisB: y.UNIT_Y,
1765
1478
  angle: a,
1766
1479
  twistAngle: b
1767
- }), Qa = new Q(S, U, {
1768
- pivotA: new y(0, o / 2, 0),
1480
+ }), La = new Q(B, U, {
1481
+ pivotA: new y(0, n / 2, 0),
1769
1482
  pivotB: new y(0, -m / 2, 0),
1770
1483
  axisA: y.UNIT_Y,
1771
1484
  axisB: y.UNIT_Y,
1772
1485
  angle: a,
1773
1486
  twistAngle: b
1774
1487
  });
1775
- this._constraints.push(_a, Qa);
1776
- const Wa = new Q(R, B, {
1488
+ this._constraints.push(Sa, La);
1489
+ const za = new Q(R, S, {
1777
1490
  pivotA: new y(0, m / 2, 0),
1778
- pivotB: new y(s / 2, -M / 2, 0),
1491
+ pivotB: new y(s / 2, -D / 2, 0),
1779
1492
  axisA: y.UNIT_Y,
1780
1493
  axisB: y.UNIT_Y,
1781
1494
  angle: a,
1782
1495
  twistAngle: b
1783
- }), qa = new Q(U, B, {
1496
+ }), Ra = new Q(U, S, {
1784
1497
  pivotA: new y(0, m / 2, 0),
1785
- pivotB: new y(-s / 2, -M / 2, 0),
1498
+ pivotB: new y(-s / 2, -D / 2, 0),
1786
1499
  axisA: y.UNIT_Y,
1787
1500
  axisB: y.UNIT_Y,
1788
1501
  angle: a,
1789
1502
  twistAngle: b
1790
1503
  });
1791
- this._constraints.push(Wa, qa);
1792
- const Ka = new Q(B, G, {
1793
- pivotA: new y(0, M / 2, 0),
1794
- pivotB: new y(0, -k / 2, 0),
1504
+ this._constraints.push(za, Ra);
1505
+ const Ua = new Q(S, G, {
1506
+ pivotA: new y(0, D / 2, 0),
1507
+ pivotB: new y(0, -x / 2, 0),
1795
1508
  axisA: y.UNIT_Y,
1796
1509
  axisB: y.UNIT_Y,
1797
1510
  angle: a,
1798
1511
  twistAngle: b
1799
1512
  });
1800
- this._constraints.push(Ka);
1801
- const Ha = new Q(G, V, {
1802
- pivotA: new y(s / 2, k / 2, 0),
1513
+ this._constraints.push(Ua);
1514
+ const Ga = new Q(G, J, {
1515
+ pivotA: new y(s / 2, x / 2, 0),
1803
1516
  pivotB: new y(-i / 2, 0, 0),
1804
1517
  axisA: y.UNIT_Z,
1805
1518
  axisB: y.UNIT_Z,
1806
- angle: t,
1519
+ angle: e,
1807
1520
  twistAngle: b
1808
- }), Ja = new Q(G, Y, {
1809
- pivotA: new y(-s / 2, k / 2, 0),
1521
+ }), _a = new Q(G, V, {
1522
+ pivotA: new y(-s / 2, x / 2, 0),
1810
1523
  pivotB: new y(i / 2, 0, 0),
1811
1524
  axisA: y.UNIT_Z,
1812
1525
  axisB: y.UNIT_Z,
1813
- angle: t,
1526
+ angle: e,
1814
1527
  twistAngle: b
1815
1528
  });
1816
- this._constraints.push(Ha, Ja);
1817
- const Va = new Q(ea, V, {
1818
- pivotA: new y(-c / 2, 0, 0),
1529
+ this._constraints.push(Ga, _a);
1530
+ const Ta = new Q(aa, J, {
1531
+ pivotA: new y(-o / 2, 0, 0),
1819
1532
  pivotB: new y(i / 2, 0, 0),
1820
1533
  axisA: y.UNIT_Z,
1821
1534
  axisB: y.UNIT_Z,
1822
1535
  angle: a,
1823
1536
  twistAngle: b
1824
- }), Ya = new Q(ta, Y, {
1825
- pivotA: new y(c / 2, 0, 0),
1537
+ }), Oa = new Q(ea, V, {
1538
+ pivotA: new y(o / 2, 0, 0),
1826
1539
  pivotB: new y(-i / 2, 0, 0),
1827
1540
  axisA: y.UNIT_Z,
1828
1541
  axisB: y.UNIT_Z,
1829
1542
  angle: a,
1830
1543
  twistAngle: b
1831
1544
  });
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
1545
+ this._constraints.push(Ta, Oa), this._ragdollConstraints = {
1546
+ neckJoint: Ba,
1547
+ leftKneeJoint: Sa,
1548
+ rightKneeJoint: La,
1549
+ leftHipJoint: za,
1550
+ rightHipJoint: Ra,
1551
+ spineJoint: Ua,
1552
+ leftShoulder: Ga,
1553
+ rightShoulder: _a,
1554
+ leftElbowJoint: Ta,
1555
+ rightElbowJoint: Oa
1843
1556
  };
1844
- for (const _ of this._constraints)
1845
- this._cannon.world.addConstraint(_);
1557
+ for (const O of this._constraints)
1558
+ this._cannon.world.addConstraint(O);
1846
1559
  this.object.getWorldPosition(this._lastObjectPosition), this.object.getWorldQuaternion(this._lastObjectQuaternion), this._initialized = !0;
1847
1560
  }
1848
1561
  _removeRagdoll() {
1849
- var e, a, t;
1562
+ var t, a, e;
1850
1563
  for (const b of this._constraints)
1851
- (e = this._cannon) == null || e.world.removeConstraint(b);
1564
+ (t = this._cannon) == null || t.world.removeConstraint(b);
1852
1565
  this._constraints = [], this._ragdollConstraints = null;
1853
1566
  for (const b of this._bodies)
1854
1567
  (a = this._cannon) == null || a.world.removeBody(b);
1855
1568
  this._bodies = [], this._parts = null;
1856
1569
  for (const b of this._meshes)
1857
- b.geometry.dispose(), (t = this._meshContainer) == null || t.remove(b);
1570
+ b.geometry.dispose(), (e = this._meshContainer) == null || e.remove(b);
1858
1571
  this._meshes = [];
1859
1572
  }
1860
1573
  /**
1861
1574
  * Reset the ragdoll to its initial position relative to the object
1862
1575
  */
1863
1576
  resetPosition() {
1864
- var o, d;
1577
+ var n, r;
1865
1578
  if (!this._parts) return;
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);
1579
+ 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, o = 0.6 * a, l = 0.25 * a, g = 0.1 * a, j = 0.4 * a, P = 0.4 * a, x = (h, f) => {
1580
+ h.position.copy(f), h.velocity.set(0, 0, 0), h.angularVelocity.set(0, 0, 0), h.quaternion.set(0, 0, 0, 1);
1868
1581
  };
1869
- k(this._parts.lowerLeftLeg, new y(
1870
- e.x + t / 2,
1871
- e.y + b / 2,
1872
- e.z
1873
- )), k(this._parts.lowerRightLeg, new y(
1874
- e.x - t / 2,
1875
- e.y + b / 2,
1876
- e.z
1877
- )), k(this._parts.upperLeftLeg, new y(
1878
- e.x + t / 2,
1879
- e.y + b + s / 2,
1880
- e.z
1881
- )), k(this._parts.upperRightLeg, new y(
1882
- e.x - t / 2,
1883
- e.y + b + s / 2,
1884
- e.z
1582
+ x(this._parts.lowerLeftLeg, new y(
1583
+ t.x + e / 2,
1584
+ t.y + b / 2,
1585
+ t.z
1586
+ )), x(this._parts.lowerRightLeg, new y(
1587
+ t.x - e / 2,
1588
+ t.y + b / 2,
1589
+ t.z
1590
+ )), x(this._parts.upperLeftLeg, new y(
1591
+ t.x + e / 2,
1592
+ t.y + b + s / 2,
1593
+ t.z
1594
+ )), x(this._parts.upperRightLeg, new y(
1595
+ t.x - e / 2,
1596
+ t.y + b + s / 2,
1597
+ t.z
1885
1598
  ));
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;
1893
- k(this._parts.upperLeftArm, new y(
1894
- e.x + t / 2 + j / 2,
1895
- n,
1896
- e.z
1897
- )), k(this._parts.upperRightArm, new y(
1898
- e.x - t / 2 - j / 2,
1899
- n,
1900
- e.z
1901
- )), k(this._parts.lowerLeftArm, new y(
1902
- e.x + t / 2 + j + P / 2,
1903
- n,
1904
- e.z
1905
- )), k(this._parts.lowerRightArm, new y(
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" });
1599
+ const D = t.y + b + s + i / 2;
1600
+ x(this._parts.pelvis, new y(t.x, D, t.z));
1601
+ const m = D + i / 2 + o / 2;
1602
+ x(this._parts.upperBody, new y(t.x, m, t.z));
1603
+ const d = m + o / 2 + l + g;
1604
+ x(this._parts.head, new y(t.x, d, t.z));
1605
+ const c = m + o / 2;
1606
+ x(this._parts.upperLeftArm, new y(
1607
+ t.x + e / 2 + j / 2,
1608
+ c,
1609
+ t.z
1610
+ )), x(this._parts.upperRightArm, new y(
1611
+ t.x - e / 2 - j / 2,
1612
+ c,
1613
+ t.z
1614
+ )), x(this._parts.lowerLeftArm, new y(
1615
+ t.x + e / 2 + j + P / 2,
1616
+ c,
1617
+ t.z
1618
+ )), x(this._parts.lowerRightArm, new y(
1619
+ t.x - e / 2 - j - P / 2,
1620
+ c,
1621
+ t.z
1622
+ )), (r = (n = this.object).setDirty) == null || r.call(n, { source: "CannonRagdollComponent" });
1910
1623
  }
1911
1624
  /**
1912
1625
  * Apply an impulse to all bodies
1913
1626
  */
1914
- applyImpulse(e, a) {
1915
- for (const t of this._bodies)
1916
- t.applyImpulse(e, a || t.position);
1627
+ applyImpulse(t, a) {
1628
+ for (const e of this._bodies)
1629
+ e.applyImpulse(t, a || e.position);
1917
1630
  }
1918
1631
  /**
1919
1632
  * Apply an impulse to a specific body part
1920
1633
  */
1921
- applyImpulseToPart(e, a, t) {
1634
+ applyImpulseToPart(t, a, e) {
1922
1635
  if (!this._parts) return;
1923
- const b = this._parts[e];
1924
- b && b.applyImpulse(a, t || b.position);
1636
+ const b = this._parts[t];
1637
+ b && b.applyImpulse(a, e || b.position);
1925
1638
  }
1926
1639
  _updateMeshVisibility() {
1927
1640
  this._meshContainer && (this._meshContainer.visible = !this.hideRagdollMeshes);
1928
1641
  }
1929
1642
  _findCharacterMeshes() {
1930
- this._characterMeshes = [], this.object.traverse((e) => {
1931
- e.isSkinnedMesh && this._characterMeshes.push(e);
1643
+ this._characterMeshes = [], this.object.traverse((t) => {
1644
+ t.isSkinnedMesh && this._characterMeshes.push(t);
1932
1645
  });
1933
1646
  }
1934
1647
  _buildBoneMap() {
1935
- this._boneMap.clear(), this.object.traverse((e) => {
1936
- if (e.isBone) {
1937
- const a = e;
1648
+ this._boneMap.clear(), this.object.traverse((t) => {
1649
+ if (t.isBone) {
1650
+ const a = t;
1938
1651
  this._boneMap.set(a.name, a), this._boneMap.set(a.name.toLowerCase(), a);
1939
1652
  }
1940
1653
  });
1941
1654
  }
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;
1655
+ _findBone(t) {
1656
+ for (const a of t) {
1657
+ const e = this._boneMap.get(a) || this._boneMap.get(a.toLowerCase());
1658
+ if (e) return e;
1946
1659
  }
1947
1660
  return null;
1948
1661
  }
1949
- _getBoneWorldPosition(e) {
1950
- return e.getWorldPosition(this._tempWorldPos), this._tempWorldPos.clone();
1662
+ _getBoneWorldPosition(t) {
1663
+ return t.getWorldPosition(this._tempWorldPos), this._tempWorldPos.clone();
1951
1664
  }
1952
- _getBoneWorldQuaternion(e) {
1953
- return e.getWorldQuaternion(this._tempWorldQuat), this._tempWorldQuat.clone();
1665
+ _getBoneWorldQuaternion(t) {
1666
+ return t.getWorldQuaternion(this._tempWorldQuat), this._tempWorldQuat.clone();
1954
1667
  }
1955
1668
  start() {
1956
1669
  super.start(), setTimeout(() => {
@@ -1963,35 +1676,35 @@ let oa = class extends ra {
1963
1676
  * @param impulse Optional initial impulse to apply (e.g., from bullet impact)
1964
1677
  * @param impactPoint Optional world point where impulse is applied
1965
1678
  */
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);
1679
+ activate(t, a) {
1680
+ 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);
1968
1681
  }
1969
1682
  /**
1970
1683
  * Store initial bone quaternions (both local and world space) for rotation offset calculation
1971
1684
  */
1972
1685
  _storeInitialBoneQuats() {
1973
1686
  this._initialBoneQuats.clear(), this._initialBoneWorldQuats.clear();
1974
- const e = (a) => {
1975
- const t = this._findBone(a);
1976
- if (t) {
1977
- this._initialBoneQuats.set(t.name, t.quaternion.clone());
1687
+ const t = (a) => {
1688
+ const e = this._findBone(a);
1689
+ if (e) {
1690
+ this._initialBoneQuats.set(e.name, e.quaternion.clone());
1978
1691
  const b = new C();
1979
- t.getWorldQuaternion(b), this._initialBoneWorldQuats.set(t.name, b);
1692
+ e.getWorldQuaternion(b), this._initialBoneWorldQuats.set(e.name, b);
1980
1693
  }
1981
1694
  };
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);
1695
+ 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);
1983
1696
  }
1984
1697
  /**
1985
1698
  * Store initial body quaternions (world space) for rotation offset calculation
1986
1699
  */
1987
1700
  _storeInitialBodyQuats() {
1988
1701
  this._initialBodyQuats.clear();
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
1702
+ for (const t of this._bodies)
1703
+ this._initialBodyQuats.set(t, new C(
1704
+ t.quaternion.x,
1705
+ t.quaternion.y,
1706
+ t.quaternion.z,
1707
+ t.quaternion.w
1995
1708
  ));
1996
1709
  }
1997
1710
  /**
@@ -2003,38 +1716,38 @@ let oa = class extends ra {
2003
1716
  }
2004
1717
  _matchBonesToRagdoll() {
2005
1718
  if (!this._parts) return;
2006
- const e = (a, t) => {
2007
- const b = this._findBone(t);
1719
+ const t = (a, e) => {
1720
+ const b = this._findBone(e);
2008
1721
  if (b) {
2009
1722
  const s = this._getBoneWorldPosition(b), i = this._getBoneWorldQuaternion(b);
2010
1723
  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);
2011
1724
  }
2012
1725
  };
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);
1726
+ 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);
2014
1727
  }
2015
1728
  _activateBodies() {
2016
- for (const e of this._bodies)
2017
- e.type = N.DYNAMIC, e.mass = this.mass, e.updateMassProperties(), e.wakeUp();
1729
+ for (const t of this._bodies)
1730
+ t.type = N.DYNAMIC, t.mass = this.mass, t.updateMassProperties(), t.wakeUp();
2018
1731
  }
2019
1732
  _deactivateBodies() {
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);
1733
+ for (const t of this._bodies)
1734
+ t.type = N.KINEMATIC, t.mass = 0, t.velocity.set(0, 0, 0), t.angularVelocity.set(0, 0, 0);
2022
1735
  }
2023
- _setCharacterVisible(e) {
1736
+ _setCharacterVisible(t) {
2024
1737
  for (const a of this._characterMeshes)
2025
- a.visible = e;
1738
+ a.visible = t;
2026
1739
  }
2027
- _findClosestBody(e) {
2028
- let a = null, t = 1 / 0;
1740
+ _findClosestBody(t) {
1741
+ let a = null, e = 1 / 0;
2029
1742
  for (const b of this._bodies) {
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);
1743
+ const s = b.position.x - t.x, i = b.position.y - t.y, o = b.position.z - t.z, l = s * s + i * i + o * o;
1744
+ l < e && (e = l, a = b);
2032
1745
  }
2033
1746
  return a;
2034
1747
  }
2035
1748
  };
2036
- oa.ComponentType = "CannonRagdollComponent";
2037
- oa.StateProperties = [
1749
+ ca.ComponentType = "CannonRagdollComponent";
1750
+ ca.StateProperties = [
2038
1751
  "scale",
2039
1752
  "angle",
2040
1753
  "angleShoulders",
@@ -2043,37 +1756,37 @@ oa.StateProperties = [
2043
1756
  "autoCreateOnInit",
2044
1757
  "hideRagdollMeshes"
2045
1758
  ];
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;
1759
+ ca = Dt([
1760
+ Ia("Ragdoll")
1761
+ ], ca);
1762
+ var It = Object.defineProperty, Ft = Object.getOwnPropertyDescriptor, W = (t, a, e, b) => {
1763
+ for (var s = b > 1 ? void 0 : b ? Ft(a, e) : a, i = t.length - 1, o; i >= 0; i--)
1764
+ (o = t[i]) && (s = (b ? o(a, e, s) : o(s)) || s);
1765
+ return b && s && It(a, e, s), s;
2053
1766
  };
2054
- let T = class extends Ra {
1767
+ let T = class extends Ea {
2055
1768
  constructor() {
2056
- super(...arguments), this.uuid = Le();
1769
+ super(...arguments), this.uuid = we();
2057
1770
  }
2058
1771
  };
2059
1772
  W([
2060
- Ue()
1773
+ Pe()
2061
1774
  ], T.prototype, "name", 2);
2062
1775
  W([
2063
- Ge()
1776
+ Ae()
2064
1777
  ], T.prototype, "uuid", 2);
2065
1778
  W([
2066
- de()
1779
+ ee()
2067
1780
  ], T.prototype, "friction", 2);
2068
1781
  W([
2069
- de()
1782
+ ee()
2070
1783
  ], T.prototype, "restitution", 2);
2071
1784
  T = W([
2072
- La("Cannon Material")
1785
+ Ia("Cannon Material")
2073
1786
  ], T);
2074
- za.MakeSerializable(Ra, "CannonMaterial", ["friction", "restitution"]);
2075
- za.MakeSerializable(T, "CannonMaterial", ["name", "uuid", "friction", "restitution"]);
2076
- za.MakeSerializable(ue, "CannonContactMaterial", [
1787
+ Fa.MakeSerializable(Ea, "CannonMaterial", ["friction", "restitution"]);
1788
+ Fa.MakeSerializable(T, "CannonMaterial", ["name", "uuid", "friction", "restitution"]);
1789
+ Fa.MakeSerializable(ne, "CannonContactMaterial", [
2077
1790
  /* 'materials', */
2078
1791
  "friction",
2079
1792
  "restitution",
@@ -2082,20 +1795,20 @@ za.MakeSerializable(ue, "CannonContactMaterial", [
2082
1795
  "frictionEquationStiffness",
2083
1796
  "frictionEquationRelaxation"
2084
1797
  ]);
2085
- Oe.AddClass({
1798
+ Me.AddClass({
2086
1799
  key: "CannonMaterial",
2087
- getId(e) {
2088
- return e.uuid;
1800
+ getId(t) {
1801
+ return t.uuid;
2089
1802
  },
2090
- getLabel(e) {
2091
- return e ? e.name : "Cannon Material";
1803
+ getLabel(t) {
1804
+ return t ? t.name : "Cannon Material";
2092
1805
  },
2093
- setName(e, a) {
2094
- e.name = a;
1806
+ setName(t, a) {
1807
+ t.name = a;
2095
1808
  },
2096
1809
  ctor: T
2097
1810
  });
2098
- let z = class extends ze {
1811
+ let z = class extends xe {
2099
1812
  // @uiButton('Make Root Bodies')
2100
1813
  // makeRootBodies = () => {
2101
1814
  // this._viewer?.scene.modelRoot.children.forEach((child) => {
@@ -2118,17 +1831,17 @@ let z = class extends ze {
2118
1831
  // // })
2119
1832
  // // this._viewer?.setDirty()
2120
1833
  // }
2121
- constructor(e = !0, a = !1) {
2122
- super(), this._world = new me(), this.enabled = !0, this.running = !0, this.nextSteps = 0, this.stepPhysics = {
1834
+ constructor(t = !0, a = !1) {
1835
+ super(), this._world = new ce(), this.enabled = !0, this.running = !0, this.nextSteps = 0, this.stepPhysics = {
2123
1836
  stepCount: 100,
2124
1837
  delta: 0.1,
2125
1838
  step: () => {
2126
1839
  this.nextSteps = this.stepPhysics.stepCount;
2127
1840
  }
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) => {
1841
+ }, 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 qa(), this._m2 = new qa(), this.frameFadeToggled = !1, this._preFrame = (b) => {
2129
1842
  const s = this._viewer;
2130
1843
  if (!s || this.isDisabled()) return;
2131
- const i = s.getPlugin(Re);
1844
+ const i = s.getPlugin(ve);
2132
1845
  if (!this.running)
2133
1846
  if (this.nextSteps > 0) this.running = !0;
2134
1847
  else {
@@ -2138,111 +1851,111 @@ let z = class extends ze {
2138
1851
  i && !this.frameFadeToggled && i.disable(z.PluginType);
2139
1852
  try {
2140
1853
  if (this.nextSteps > 0)
2141
- for (let f = 0; f < this.stepPhysics.stepCount; f++)
1854
+ for (let l = 0; l < this.stepPhysics.stepCount; l++)
2142
1855
  this._world.step(this.stepPhysics.delta);
2143
1856
  else
2144
1857
  this._world.fixedStep();
2145
- } catch (f) {
2146
- console.error("[CannonPhysicsPlugin] Error stepping physics world"), console.error(f);
1858
+ } catch (l) {
1859
+ console.error("[CannonPhysicsPlugin] Error stepping physics world"), console.error(l);
2147
1860
  }
2148
1861
  this._dirty = !1;
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)));
1862
+ let o = !1;
1863
+ for (const l of this.bodyComponents.values()) {
1864
+ if (l.mass === 0) continue;
1865
+ const g = l.object, j = l.body;
1866
+ g && (o = !1, g.updateWorldMatrix(!0, !1), g.getWorldPosition(this._v2), g.getWorldQuaternion(this._q2), g.getWorldScale(this._s2), this._v1.copy(j.position), !o && this._v2.manhattanDistanceTo(this._v1) > 0 && (o = !0), this._q1.copy(j.quaternion), !o && this._q2.angleTo(this._q1) > 0 && (o = !0), o && (this._m1.compose(this._v1, this._q1, this._s2), g.parent ? (this._m2.copy(g.parent.matrixWorld).invert(), this._m2.multiply(this._m1), this._m2.decompose(this._v1, this._q1, this._s2), g.position.copy(this._v1), g.quaternion.copy(this._q1), g.setDirty && g.setDirty({ change: "transform", source: "CannonPhysicsPlugin" })) : console.error("[CannonPhysicsPlugin] Mesh has no parent, cannot set world transform", g)));
2154
1867
  }
2155
- this._dirty = c, s.setDirty(), s.renderManager.resetShadows(), this.nextSteps > 0 && (this.running = !1, this.nextSteps = 0);
1868
+ this._dirty = o, s.setDirty(), s.renderManager.resetShadows(), this.nextSteps > 0 && (this.running = !1, this.nextSteps = 0);
2156
1869
  }, this._onRemove = [], this._objectAdd = (b) => {
2157
- var f, p;
1870
+ var l, g;
2158
1871
  const s = b.object;
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);
1872
+ ((l = s == null ? void 0 : s.userData) == null ? void 0 : l.physicsMass) === void 0 || !((g = this._viewer) != null && g.getPlugin(L)) || L.GetComponentData(s, this.componentTypes.body);
2160
1873
  }, this._objectRemove = (b) => {
2161
1874
  var i;
2162
1875
  const s = b.object;
2163
1876
  (i = s == null ? void 0 : s.userData) != null && i.physicsMass;
2164
1877
  }, this.componentTypes = {
2165
- body: ya,
2166
- shape: ca,
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 = {};
1878
+ body: pa,
1879
+ shape: sa,
1880
+ ragdoll: ca
1881
+ }, 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];
1882
+ const e = {};
2170
1883
  this._world.addEventListener("beginContact", (b) => {
2171
1884
  const s = this.cannonBodies.get(b.bodyA), i = this.cannonBodies.get(b.bodyB);
2172
1885
  if (!s || !i) {
2173
1886
  console.warn("[CannonPhysicsPlugin] Contact bodies not managed by plugin", b.bodyA, b.bodyB);
2174
1887
  return;
2175
1888
  }
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);
1889
+ 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);
2177
1890
  }), this._world.addEventListener("endContact", (b) => {
2178
1891
  const s = this.cannonBodies.get(b.bodyA), i = this.cannonBodies.get(b.bodyB);
2179
1892
  if (!s || !i) {
2180
1893
  console.warn("[CannonPhysicsPlugin] Contact bodies not managed by plugin", b.bodyA, b.bodyB);
2181
1894
  return;
2182
1895
  }
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);
1896
+ 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);
2184
1897
  }), this._world.gravity.set(0, -9.81, 0);
2185
1898
  }
2186
1899
  get world() {
2187
1900
  return this._world;
2188
1901
  }
2189
- async onAdded(e) {
2190
- super.onAdded(e);
2191
- const a = e.on("preFrame", {
1902
+ async onAdded(t) {
1903
+ super.onAdded(t);
1904
+ const a = t.on("preFrame", {
2192
1905
  order: -1,
2193
1906
  // before most things
2194
1907
  callback: this._preFrame
2195
1908
  });
2196
- a && this._onRemove.push(a), Object.values(this.componentTypes).forEach((t) => {
1909
+ a && this._onRemove.push(a), Object.values(this.componentTypes).forEach((e) => {
2197
1910
  var b;
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);
1911
+ (b = t.getPlugin(L)) == null || b.addComponentType(e);
1912
+ }), t.object3dManager.getObjects().forEach((e) => this._objectAdd({ object: e })), t.object3dManager.addEventListener("objectAdd", this._objectAdd), t.object3dManager.addEventListener("objectRemove", this._objectRemove), t.forPlugin(ae, (e) => {
1913
+ e.helpers.push(ga);
1914
+ }, (e) => {
1915
+ const b = e.helpers.indexOf(ga);
1916
+ b >= 0 && e.helpers.splice(b, 1);
2204
1917
  });
2205
1918
  }
2206
- onRemove(e) {
1919
+ onRemove(t) {
2207
1920
  this._onRemove.forEach((a) => a()), Object.values(this.componentTypes).forEach((a) => {
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);
1921
+ var e;
1922
+ (e = t.getPlugin(L)) == null || e.removeComponentType(a);
1923
+ }), t.object3dManager.removeEventListener("objectAdd", this._objectAdd), t.object3dManager.removeEventListener("objectRemove", this._objectRemove), t.object3dManager.getObjects().forEach((a) => this._objectRemove({ object: a })), super.onRemove(t);
2211
1924
  }
2212
- addBody(e) {
2213
- this.bodyComponents.has(e) || (this.bodyComponents.add(e), this._world.addBody(e.body), this.cannonBodies.set(e.body, e));
1925
+ addBody(t) {
1926
+ this.bodyComponents.has(t) || (this.bodyComponents.add(t), this._world.addBody(t.body), this.cannonBodies.set(t.body, t));
2214
1927
  }
2215
- removeBody(e) {
2216
- this.bodyComponents.has(e) && (this.bodyComponents.delete(e), this._world.removeBody(e.body), this.cannonBodies.delete(e.body));
1928
+ removeBody(t) {
1929
+ this.bodyComponents.has(t) && (this.bodyComponents.delete(t), this._world.removeBody(t.body), this.cannonBodies.delete(t.body));
2217
1930
  }
2218
1931
  };
2219
1932
  z.PluginType = "CannonPhysicsPlugin";
2220
1933
  z.CannonTypes = {
2221
1934
  Body: N,
2222
1935
  Shape: q,
2223
- World: me,
2224
- Material: Ra,
2225
- ContactMaterial: ue
1936
+ World: ce,
1937
+ Material: Ea,
1938
+ ContactMaterial: ne
2226
1939
  };
2227
1940
  W([
2228
- he(),
2229
- fe()
1941
+ te(),
1942
+ be()
2230
1943
  ], z.prototype, "enabled", 2);
2231
1944
  W([
2232
- fe("Running", (e) => ({ onChange: () => {
1945
+ be("Running", (t) => ({ onChange: () => {
2233
1946
  } }))
2234
1947
  ], z.prototype, "running", 2);
2235
1948
  W([
2236
- le()
1949
+ ie()
2237
1950
  ], z.prototype, "stepPhysics", 2);
2238
1951
  W([
2239
- le(),
2240
- he()
1952
+ ie(),
1953
+ te()
2241
1954
  ], z.prototype, "defaultMaterial", 2);
2242
1955
  z = W([
2243
- La("Physics")
1956
+ Ia("Physics")
2244
1957
  ], z);
2245
- const nb = ["visible", "name", "position", "quaternion", "scale"], cb = ["name"], ob = [
1958
+ const Et = ["visible", "name", "position", "quaternion", "scale"], Nt = ["name"], Ct = [
2246
1959
  "position",
2247
1960
  "quaternion",
2248
1961
  "scale",
@@ -2252,9 +1965,9 @@ const nb = ["visible", "name", "position", "quaternion", "scale"], cb = ["name"]
2252
1965
  "frustumCulled",
2253
1966
  "renderOrder"
2254
1967
  ];
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) => {
1968
+ class Bt {
1969
+ constructor(a, e) {
1970
+ this.viewer = a, this.onError = e, this.cache = /* @__PURE__ */ new Map(), this.pending = /* @__PURE__ */ new Set(), this.onProcessRaw = (b) => {
2258
1971
  const s = b.data;
2259
1972
  if (!(s != null && s.isObject3D)) return;
2260
1973
  const i = this.loadObjectDependencies(s);
@@ -2266,39 +1979,39 @@ class rb {
2266
1979
  }
2267
1980
  async loadObjectDependencies(a) {
2268
1981
  if (!a.traverse) return;
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));
1982
+ const e = [], b = /* @__PURE__ */ new Set();
1983
+ a.traverse((o) => {
1984
+ e.push(o);
1985
+ const l = o.material;
1986
+ l && (Array.isArray(l) ? l : [l]).forEach((j) => (j == null ? void 0 : j.isMaterial) && b.add(j));
2274
1987
  });
2275
1988
  const s = [];
2276
- for (const c of t) {
2277
- if (!this.isEmbeddedReference(c)) continue;
2278
- if (c._loadingPromise) {
2279
- s.push(c._loadingPromise.then(() => {
1989
+ for (const o of e) {
1990
+ if (!this.isEmbeddedReference(o)) continue;
1991
+ if (o._loadingPromise) {
1992
+ s.push(o._loadingPromise.then(() => {
2280
1993
  }));
2281
1994
  continue;
2282
1995
  }
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);
1996
+ o.userData.sProperties.length || (o.userData.sProperties = [...Et]), o._sChildren || (o._sChildren = []);
1997
+ const l = this.loadReference(o);
1998
+ o._loadingPromise = l, s.push(l);
2286
1999
  }
2287
- for (const c of b) {
2288
- if (!this.isEmbeddedReference(c)) continue;
2289
- if (c._loadingPromise) {
2290
- s.push(c._loadingPromise.then(() => {
2000
+ for (const o of b) {
2001
+ if (!this.isEmbeddedReference(o)) continue;
2002
+ if (o._loadingPromise) {
2003
+ s.push(o._loadingPromise.then(() => {
2291
2004
  }));
2292
2005
  continue;
2293
2006
  }
2294
- c.userData.sProperties.length || (c.userData.sProperties = [...cb]);
2295
- const f = this.loadReference(c);
2296
- c._loadingPromise = f, s.push(f);
2007
+ o.userData.sProperties.length || (o.userData.sProperties = [...Nt]);
2008
+ const l = this.loadReference(o);
2009
+ o._loadingPromise = l, s.push(l);
2297
2010
  }
2298
2011
  if (!s.length) return;
2299
- const i = Promise.allSettled(s).then((c) => {
2300
- for (const f of c)
2301
- f.status === "rejected" && this.onError(f.reason);
2012
+ const i = Promise.allSettled(s).then((o) => {
2013
+ for (const l of o)
2014
+ l.status === "rejected" && this.onError(l.reason);
2302
2015
  });
2303
2016
  a._loadingPromise = i, this.track(i), await i;
2304
2017
  }
@@ -2310,13 +2023,13 @@ class rb {
2310
2023
  var b;
2311
2024
  return typeof ((b = a.userData) == null ? void 0 : b.rootPath) == "string" && !a.__rootPath && !a.userData.rootPathRefresh && Array.isArray(a.userData.sProperties);
2312
2025
  }
2313
- loadAsset(a, t) {
2026
+ loadAsset(a, e) {
2314
2027
  let b = this.cache.get(a);
2315
- return b || (b = this.importer.importSingle(a, t || {}), this.cache.set(a, b)), b;
2028
+ return b || (b = this.importer.importSingle(a, e || {}), this.cache.set(a, b)), b;
2316
2029
  }
2317
2030
  async loadReference(a) {
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}`);
2031
+ const e = a.userData.rootPath, b = await this.loadAsset(e, a.userData.rootPathOptions);
2032
+ if (!b) throw new Error(`Unable to load nested asset from ${e}`);
2320
2033
  b._loadingPromise && await b._loadingPromise;
2321
2034
  const s = a, i = a;
2322
2035
  if (s.isObject3D && b.isObject3D) {
@@ -2327,183 +2040,183 @@ class rb {
2327
2040
  this.updateMaterial(b, i);
2328
2041
  return;
2329
2042
  }
2330
- throw new Error(`Nested asset at ${t} does not match its reference type`);
2331
- }
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();
2337
- for (const p of a.children) {
2338
- const j = Pe(p);
2339
- j.userData.excludeFromExport = !0, t.add(j);
2043
+ throw new Error(`Nested asset at ${e} does not match its reference type`);
2044
+ }
2045
+ updateObject(a, e) {
2046
+ var l;
2047
+ if (e._sChildren)
2048
+ for (const g of [...e.children])
2049
+ e._sChildren.includes(g) || g.removeFromParent();
2050
+ for (const g of a.children) {
2051
+ const j = he(g);
2052
+ j.userData.excludeFromExport = !0, e.add(j);
2340
2053
  }
2341
- const b = t.userData.sProperties, s = t.name, i = t.visible;
2342
- for (const p of ob) {
2343
- if (b.includes(p)) continue;
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 });
2054
+ const b = e.userData.sProperties, s = e.name, i = e.visible;
2055
+ for (const g of Ct) {
2056
+ if (b.includes(g)) continue;
2057
+ const j = a[g], P = e[g];
2058
+ j && P && j.isVector3 || j && P && j.isQuaternion ? P.copy(j) : j !== void 0 && Object.assign(e, { [g]: j });
2346
2059
  }
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" });
2060
+ const o = e.userData;
2061
+ e.userData = {}, De(e.userData, a.userData, ["uuid", "sProperties"]), Object.assign(e.userData, o), e.name = s, e.visible = i, e.userData.uuid = e.uuid, e.userData.sProperties = b, (l = e.setDirty) == null || l.call(e, { source: "RuntimeNestedAssetLoader" });
2349
2062
  }
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;
2063
+ updateMaterial(a, e) {
2064
+ const b = e.userData.sProperties, s = Ie(e, b), i = e.name;
2065
+ e.setValues(a), e.name = i, Fe(s, e), e.userData.uuid = e.uuid, e.userData.sProperties = b;
2353
2066
  }
2354
2067
  track(a) {
2355
2068
  this.pending.add(a);
2356
- const t = () => this.pending.delete(a);
2357
- a.then(t, t);
2069
+ const e = () => this.pending.delete(a);
2070
+ a.then(e, e);
2358
2071
  }
2359
2072
  }
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));
2073
+ function he(t) {
2074
+ const a = t.clone(!1), e = t, b = a;
2075
+ b._tpRootPath = e._tpRootPath, b._tpRootUid = e._tpRootUid || t.uuid, delete a.userData.cloneParent;
2076
+ for (const s of t.children) a.add(he(s));
2364
2077
  return a;
2365
2078
  }
2366
- function xb(e) {
2367
- return Ae(e, !0);
2079
+ function qt(t) {
2080
+ return le(t, !0);
2368
2081
  }
2369
- function vb(e) {
2370
- return Ae(e, !1);
2082
+ function Kt(t) {
2083
+ return le(t, !1);
2371
2084
  }
2372
- async function Ae({
2373
- base: e,
2085
+ async function le({
2086
+ base: t,
2374
2087
  canvas: a,
2375
- onError: t,
2088
+ onError: e,
2376
2089
  fileRevisions: b = {},
2377
2090
  moduleRevision: s
2378
2091
  }, i) {
2379
- const c = mb(t);
2380
- let f, p, j, P;
2092
+ const o = _t(e);
2093
+ let l, g, j, P;
2381
2094
  try {
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({
2095
+ const x = Ut(t), [D, m] = await Promise.all([
2096
+ Xa(new URL("package.json", x)),
2097
+ Xa(new URL("assets.json", x))
2098
+ ]), d = Ke(D), c = await He(d), n = Je(m), r = {
2099
+ packageJson: d,
2100
+ config: c,
2101
+ assetsManifest: n,
2102
+ mainScene: d.mainScene
2103
+ }, h = new L(!1), f = new z(!0, !1);
2104
+ L.AddObjectUiConfig = !1, window.MeshoptDecoder = Ye, l = new Ee({
2392
2105
  canvas: a,
2393
- ...n.viewer,
2106
+ ...c.viewer,
2394
2107
  assetManager: {
2395
2108
  simpleCache: !1,
2396
2109
  storage: !1
2397
2110
  },
2398
2111
  plugins: [
2399
2112
  h,
2400
- new qe(),
2401
- l,
2402
- new Ke(),
2403
- new He(),
2404
- new Je(!1),
2405
- new Ve(),
2406
- new Ye(),
2407
- new Xe(),
2408
- new Ze(),
2409
- new $e(),
2410
- new at()
2113
+ new Ne(),
2114
+ f,
2115
+ new Ce(),
2116
+ new Be(),
2117
+ new Se(!1),
2118
+ new Le(),
2119
+ new ze(),
2120
+ new Re(),
2121
+ new Ue(),
2122
+ new Ge(),
2123
+ new _e()
2411
2124
  ]
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 });
2416
- if (!(w != null && w.isObject3D))
2125
+ }), l.timeline.endTime = 0, P = We(), h.addComponentType(Aa);
2126
+ const p = Ve(x, n);
2127
+ l.assetManager.importer.addURLModifier(p), j = () => l == null ? void 0 : l.assetManager.importer.removeURLModifier(p), g = new Bt(l, o), await Lt(l, r, x, b, s), await St(l, r, x, b, s);
2128
+ const u = new URL(r.mainScene, x).href, k = await l.load(u, { importAsModelRoot: !0 });
2129
+ if (!(k != null && k.isObject3D))
2417
2130
  throw new Error(`The main scene did not load as an Object3D: ${u}`);
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);
2131
+ if (await g.loadObjectDependencies(k), await g.waitForPending(), i) {
2132
+ l.timeline.reset(), l.timeline.start(), h.start(), f.running = !0;
2133
+ const M = Na("main.js", x, b, s), I = await Ca(M.href);
2421
2134
  if (I.main !== void 0) {
2422
2135
  if (typeof I.main != "function")
2423
2136
  throw new Error('main.js export "main" must be a function');
2424
- await I.main({ viewer: f });
2137
+ await I.main({ viewer: l });
2425
2138
  }
2426
2139
  }
2427
- const x = f;
2140
+ const w = l;
2428
2141
  let A = !1, v;
2429
2142
  return {
2430
- viewer: x,
2431
- project: d,
2143
+ viewer: w,
2144
+ project: r,
2432
2145
  registerGameValidation: P.registerGameValidation,
2433
2146
  publishGameTelemetry: P.publishGameTelemetry,
2434
2147
  runGameValidation: P.runGameValidation,
2435
2148
  dispose() {
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;
2149
+ return A || (A = !0, h.stop(), f.running = !1, w.timeline.stop(), v = qe(w), g == null || g.dispose(), j == null || j(), P == null || P.dispose(), w.dispose()), v;
2437
2150
  }
2438
2151
  };
2439
- } catch (k) {
2440
- throw p == null || p.dispose(), j == null || j(), P == null || P.dispose(), f == null || f.dispose(), c(k), k;
2152
+ } catch (x) {
2153
+ throw g == null || g.dispose(), j == null || j(), P == null || P.dispose(), l == null || l.dispose(), o(x), x;
2441
2154
  }
2442
2155
  }
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 || []);
2156
+ async function St(t, a, e, b, s) {
2157
+ const { config: i, packageJson: o } = a;
2158
+ for (const l of i.plugins) {
2159
+ if (l.active === !1) continue;
2160
+ const g = zt(l, o, e, b, s), j = await Ca(g), P = Rt(j, l);
2161
+ t.getPlugin(P) || await t.addPlugin(P, ...l.params || []);
2449
2162
  }
2450
2163
  }
2451
- async function hb(e, a, t, b, s) {
2452
- const { config: i, packageJson: c } = a, f = [];
2453
- for (const p of i.scripts) {
2454
- if (p.active === !1) continue;
2455
- const j = je(p.import, c) ? p.import : Ga(p.import, t, b, s).href;
2456
- f.push(await Oa(j));
2457
- }
2458
- await ft(e, f);
2164
+ async function Lt(t, a, e, b, s) {
2165
+ const { config: i, packageJson: o } = a, l = [];
2166
+ for (const g of i.scripts) {
2167
+ if (g.active === !1) continue;
2168
+ const j = de(g.import, o) ? g.import : Na(g.import, e, b, s).href;
2169
+ l.push(await Ca(j));
2170
+ }
2171
+ await Ze(t, l);
2459
2172
  }
2460
- function fb(e, a, t, b, s) {
2461
- return je(e.import, a) ? e.import : Ga(e.import, t, b, s).href;
2173
+ function zt(t, a, e, b, s) {
2174
+ return de(t.import, a) ? t.import : Na(t.import, e, b, s).href;
2462
2175
  }
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;
2176
+ function Na(t, a, e, b) {
2177
+ const s = Gt(new URL(t, a), a), i = t.replace(/^\.\//, ""), o = e[i];
2178
+ return o && s.searchParams.set("v", o), b && s.searchParams.set("r", b), s;
2466
2179
  }
2467
- function lb(e, a) {
2468
- const t = a.className || "default", b = e[t];
2469
- if (se(b)) return b;
2180
+ function Rt(t, a) {
2181
+ const e = a.className || "default", b = t[e];
2182
+ if (Ya(b)) return b;
2470
2183
  if (!a.className) {
2471
- const s = Object.values(e).filter(se);
2184
+ const s = Object.values(t).filter(Ya);
2472
2185
  if (s.length === 1) return s[0];
2473
2186
  }
2474
- throw new Error(`Cannot find plugin export "${t}" in ${a.import}`);
2187
+ throw new Error(`Cannot find plugin export "${e}" in ${a.import}`);
2475
2188
  }
2476
- function se(e) {
2477
- return typeof e == "function" && typeof e.PluginType == "string";
2189
+ function Ya(t) {
2190
+ return typeof t == "function" && typeof t.PluginType == "string";
2478
2191
  }
2479
- async function Oa(e) {
2192
+ async function Ca(t) {
2480
2193
  return import(
2481
2194
  /* @vite-ignore */
2482
- e
2195
+ t
2483
2196
  );
2484
2197
  }
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}`);
2198
+ async function Xa(t) {
2199
+ const a = await fetch(t);
2200
+ if (!a.ok) throw new Error(`Failed to fetch ${t.href}: ${a.status} ${a.statusText}`);
2488
2201
  return a.text();
2489
2202
  }
2490
- function pb(e) {
2491
- if (!e.endsWith("/")) throw new Error('createGame base must end in "/"');
2492
- const a = new URL(e);
2203
+ function Ut(t) {
2204
+ if (!t.endsWith("/")) throw new Error('createGame base must end in "/"');
2205
+ const a = new URL(t);
2493
2206
  if (!a.protocol.startsWith("http")) throw new Error("createGame base must be an absolute HTTP(S) URL");
2494
2207
  return a;
2495
2208
  }
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;
2209
+ function Gt(t, a) {
2210
+ if (t.origin !== a.origin)
2211
+ throw new Error(`Project modules must be same-origin: ${t.href}`);
2212
+ return t;
2500
2213
  }
2501
- function mb(e) {
2214
+ function _t(t) {
2502
2215
  return (a) => {
2503
- console.error("[kite3d] Runtime error", a), e == null || e(a);
2216
+ console.error("[kite3d] Runtime error", a), t == null || t(a);
2504
2217
  };
2505
2218
  }
2506
- const Pb = {
2219
+ const Ht = {
2507
2220
  plugins: [
2508
2221
  {
2509
2222
  import: "threepipe",
@@ -2698,9 +2411,9 @@ const Pb = {
2698
2411
  import: "@threepipe/plugin-configurator",
2699
2412
  className: "SwitchNodePlugin"
2700
2413
  },
2701
- ...["B3DMLoadPlugin", "CMPTLoadPlugin", "DeepZoomImageLoadPlugin", "EnvironmentControlsPlugin", "GlobeControlsPlugin", "I3DMLoadPlugin", "PNTSLoadPlugin", "TilesRendererPlugin"].map((e) => ({
2414
+ ...["B3DMLoadPlugin", "CMPTLoadPlugin", "DeepZoomImageLoadPlugin", "EnvironmentControlsPlugin", "GlobeControlsPlugin", "I3DMLoadPlugin", "PNTSLoadPlugin", "TilesRendererPlugin"].map((t) => ({
2702
2415
  import: "@threepipe/plugin-3d-tiles-renderer",
2703
- className: e
2416
+ className: t
2704
2417
  })),
2705
2418
  {
2706
2419
  import: "@threepipe/plugin-assimpjs",
@@ -2739,9 +2452,9 @@ const Pb = {
2739
2452
  "LDrawLoadPlugin",
2740
2453
  "VTKLoadPlugin",
2741
2454
  "XYZLoadPlugin"
2742
- ].map((e) => ({
2455
+ ].map((t) => ({
2743
2456
  import: "@threepipe/plugins-extra-importers",
2744
- className: e
2457
+ className: t
2745
2458
  }))
2746
2459
  ],
2747
2460
  dependencies: [{
@@ -2779,80 +2492,72 @@ const Pb = {
2779
2492
  viewer: {}
2780
2493
  };
2781
2494
  export {
2782
- fi as BACKUPS_DIRECTORY,
2783
- li as CONSOLE_PATH,
2784
- ya as Cannon3DBodyComponent,
2785
- ca as Cannon3DShapeComponent,
2786
- ka as Cannon3DShapeHelper,
2495
+ Ub as BACKUPS_DIRECTORY,
2496
+ Gb as CONSOLE_PATH,
2497
+ pa as Cannon3DBodyComponent,
2498
+ sa as Cannon3DShapeComponent,
2499
+ ga as Cannon3DShapeHelper,
2787
2500
  T as CannonMaterial2,
2788
2501
  z as CannonPhysicsPlugin,
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
2502
+ ca as CannonRagdollComponent,
2503
+ _b as DEPLOYS_PATH,
2504
+ Aa as HtmlUiComponent,
2505
+ Tb as JOURNAL_PATH,
2506
+ ub as KITE3D_AUTHORING_METADATA_KEY,
2507
+ Ob as KITE3D_DIRECTORY,
2508
+ jb as KITE3D_RUNTIME_METADATA_KEY,
2509
+ Qb as KITE3D_SERVER_CLIENT_ID,
2510
+ lb as PROJECT_MIGRATIONS,
2511
+ bb as REMOVED_GENERATOR_GUIDANCE,
2512
+ Wb as RUNNING_DIRECTORY,
2513
+ Ib as RUNTIME_SPECIFIERS,
2514
+ rb as RUNTIME_VERSION,
2515
+ Bt as RuntimeNestedAssetLoader,
2516
+ yb as RuntimeObjectOwner,
2517
+ qb as STATE_PATH,
2518
+ Kb as THUMBS_DIRECTORY,
2519
+ ib as assetUrlPrefix,
2520
+ Xt as authoringQualityReport,
2521
+ At as cannonShapeTypeParams,
2522
+ Pt as cannonShapeTypes,
2523
+ qt as createGame,
2524
+ Ve as createProjectAssetURLModifier,
2525
+ Kt as createStoppedGame,
2526
+ Fb as dependencyImportMap,
2527
+ Ht as emptyProjectSettings,
2528
+ Bb as extensionMimeTypes,
2529
+ sb as findRemovedGeneratorNodes,
2530
+ kb as getAuthoringMetadata,
2531
+ wb as getRuntimeObjectMetadata,
2532
+ xb as getTrackedRuntimeObjects,
2533
+ We as installGameHooks,
2534
+ at as isComponentType,
2535
+ de as isDependencyModuleSpecifier,
2536
+ $e as isPluginType,
2537
+ vb as isRuntimeObject,
2538
+ Sb as mimeToExt,
2539
+ Lb as mimeTypeForPath,
2540
+ Je as parseAssetsJSONManifest,
2541
+ Ke as parsePackageJSON,
2542
+ He as parsePackageJsonSettingsConfig,
2543
+ Zt as persistenceReport,
2544
+ wt as physicsBodyType,
2545
+ Eb as projectDependencies,
2546
+ Nb as projectPluginNames,
2547
+ $t as publishGameTelemetry,
2548
+ ab as registerGameValidation,
2549
+ Ze as registerScripts,
2550
+ cb as removedGeneratorMessage,
2551
+ qe as runtimeCleanupReport,
2552
+ eb as semanticSceneSnapshot,
2553
+ pb as serializeSceneGltf,
2554
+ gb as serializeSceneGltfDocument,
2555
+ Pb as setAuthoringMetadata,
2556
+ nb as settingsKey,
2557
+ Ma as typeToCannon,
2558
+ zb as typesExts,
2559
+ et as uiPositionMode,
2560
+ db as validateSceneSource,
2561
+ Xe as walkScriptExports
2857
2562
  };
2858
2563
  //# sourceMappingURL=index.js.map