@realsee/five 6.8.0-alpha.19 → 6.8.0-alpha.20

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.
Files changed (120) hide show
  1. package/docs/assets/hierarchy.js +1 -1
  2. package/docs/assets/search.js +1 -1
  3. package/docs/classes/five.AdaptiveLuminancePass.html +1 -1
  4. package/docs/classes/five.EyeDomeLightingPass.html +1 -1
  5. package/docs/classes/five.Five.html +43 -42
  6. package/docs/classes/five.FivePass.html +1 -1
  7. package/docs/classes/five.Model.html +1 -1
  8. package/docs/classes/five.ModelScene.html +1 -1
  9. package/docs/classes/five.PBMContainer.html +1 -1
  10. package/docs/classes/five.PBMCustomShader.html +3 -3
  11. package/docs/classes/five.PBMGSObject.html +1 -1
  12. package/docs/classes/five.PBMGroup.html +1 -1
  13. package/docs/classes/five.PBMMesh.html +1 -1
  14. package/docs/classes/five.PBMMeshMaterial.html +4 -4
  15. package/docs/classes/five.PBMPanoFilter.html +8 -8
  16. package/docs/classes/five.PBMPointCloud.html +1 -1
  17. package/docs/classes/five.PBMPointCloudMaterial.html +4 -4
  18. package/docs/classes/five.PBMSkinnedMesh.html +1 -1
  19. package/docs/classes/five.PBMUpdateable.html +1 -1
  20. package/docs/classes/five.Parameter.html +1 -1
  21. package/docs/classes/five.Tile3D.html +1 -1
  22. package/docs/classes/five.TileNode.html +1 -1
  23. package/docs/classes/five.TrajectoryNode.html +1 -1
  24. package/docs/classes/five.WorkResolvedObserver.html +1 -1
  25. package/docs/classes/gltf-loader.DDSLoader.html +1 -1
  26. package/docs/classes/gltf-loader.DRACOLoader.html +1 -1
  27. package/docs/classes/gltf-loader.GLTFObject.html +1 -1
  28. package/docs/classes/gltf-loader.THREEGLTFLoader.html +1 -1
  29. package/docs/classes/line.LineGeometry.html +1 -1
  30. package/docs/classes/line.LineMaterial.html +1 -1
  31. package/docs/classes/line.LineSegmentsGeometry.html +1 -1
  32. package/docs/classes/line.THREE_Line2.html +1 -1
  33. package/docs/classes/line.THREE_LineSegments2.html +1 -1
  34. package/docs/classes/plugins.RoundedBoxGeometry.html +1 -1
  35. package/docs/classes/vfx.Airflow.html +1 -1
  36. package/docs/classes/vfx.Flame.html +1 -1
  37. package/docs/classes/vfx.Particle.html +1 -1
  38. package/docs/classes/vfx.ParticleGPU.html +1 -1
  39. package/docs/classes/vfx.SpotLight.html +1 -1
  40. package/docs/hierarchy.html +1 -1
  41. package/docs/interfaces/five.EventCallback.html +1 -1
  42. package/docs/interfaces/five.LooseWorkWithExtrinsics.html +1 -1
  43. package/docs/interfaces/five.ModelControllerCustomInitArgs.html +1 -1
  44. package/docs/interfaces/five.PBMClipperParameter.html +2 -2
  45. package/docs/interfaces/five.PBMCustomShaderInitArgs.html +2 -2
  46. package/docs/interfaces/five.PBMCustomShaderSlots.html +2 -2
  47. package/docs/interfaces/five.PBMMaterial.html +1 -1
  48. package/docs/interfaces/five.PBMMeshMaterialParameters.html +1 -1
  49. package/docs/interfaces/five.PBMPanoDepth.html +5 -5
  50. package/docs/interfaces/five.PBMPanoFilterValue.html +2 -2
  51. package/docs/interfaces/five.PBMPanoPicture.html +7 -7
  52. package/docs/interfaces/five.PBMPointCloudMaterialParameters.html +1 -1
  53. package/docs/interfaces/five.PBMRefinedScreen.html +2 -2
  54. package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +1 -1
  55. package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +1 -1
  56. package/docs/interfaces/five.ParameterMaterialValue.html +1 -1
  57. package/docs/interfaces/five.ParameterTilesetValue.html +1 -1
  58. package/docs/interfaces/five.ParameterValue.html +1 -1
  59. package/docs/interfaces/five.ResolvedParameterValue.html +1 -1
  60. package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +1 -1
  61. package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +1 -1
  62. package/docs/interfaces/five.ViewLayer.html +1 -1
  63. package/docs/interfaces/five.WorkCubeImage.html +1 -1
  64. package/docs/interfaces/five.WorkImage.html +1 -1
  65. package/docs/interfaces/five.WorkObserver.html +1 -1
  66. package/docs/interfaces/five.WorkTile.html +1 -1
  67. package/docs/interfaces/five.XRPanoramaControllerCustomInitArgs.html +1 -1
  68. package/docs/interfaces/plugins.BackgroundPluginController.html +1 -1
  69. package/docs/interfaces/plugins.BackgroundPluginType.EventMap.html +1 -1
  70. package/docs/interfaces/plugins.DynamicPathLinePluginController.html +1 -1
  71. package/docs/interfaces/plugins.DynamicPathLinePluginType.EventMap.html +1 -1
  72. package/docs/interfaces/plugins.DynamicPathLinePluginType.State.html +1 -1
  73. package/docs/interfaces/plugins.ItemMaskController.html +1 -1
  74. package/docs/interfaces/plugins.ItemMaskPluginType.EventMap.html +1 -1
  75. package/docs/interfaces/plugins.ItemMaskPluginType.State.html +1 -1
  76. package/docs/interfaces/plugins.OrientationPluginController.html +1 -1
  77. package/docs/interfaces/plugins.OrientationPluginType.EventMap.html +1 -1
  78. package/docs/interfaces/plugins.OrientationPluginType.State.html +1 -1
  79. package/docs/interfaces/plugins.PanoAnimeController.html +1 -1
  80. package/docs/interfaces/plugins.PanoAnimePluginType.EventMap.html +1 -1
  81. package/docs/interfaces/plugins.PanoAnimePluginType.State.html +1 -1
  82. package/docs/interfaces/plugins.PluginTemplateType.EventMap.html +1 -1
  83. package/docs/interfaces/plugins.PluginTemplateType.State.html +1 -1
  84. package/docs/interfaces/plugins.TrajectoryController.html +1 -1
  85. package/docs/interfaces/react.FiveInjectionTypes.html +1 -1
  86. package/docs/types/five.ParseOptions.html +1 -1
  87. package/five/application/five.d.ts +1 -0
  88. package/five/controllers/base.d.ts +1 -0
  89. package/five/controllers/mapview.d.ts +1 -0
  90. package/five/index.js +10 -8
  91. package/five/index.mjs +64 -27
  92. package/five/model/materials/pbmMaterial.d.ts +3 -2
  93. package/gltf-loader/index.js +3 -3
  94. package/gltf-loader/index.mjs +3 -3
  95. package/line/index.js +3 -3
  96. package/line/index.mjs +3 -3
  97. package/package.json +1 -1
  98. package/plugins/index.js +2 -2
  99. package/plugins/index.mjs +2 -2
  100. package/react/index.js +2 -2
  101. package/react/index.mjs +2 -2
  102. package/shader-lib/index.js +2 -2
  103. package/shader-lib/index.mjs +2 -2
  104. package/sticker/index.js +3 -3
  105. package/sticker/index.mjs +3 -3
  106. package/umd/five-gltf-loader.js +3 -3
  107. package/umd/five-line.js +3 -3
  108. package/umd/five-plugins.js +2 -2
  109. package/umd/five-react.js +2 -2
  110. package/umd/five-shader-lib.js +2 -2
  111. package/umd/five-sticker.js +3 -3
  112. package/umd/five-vfx.js +2 -2
  113. package/umd/five-vue.js +2 -2
  114. package/umd/five.js +10 -8
  115. package/vfx/index.js +2 -2
  116. package/vfx/index.mjs +2 -2
  117. package/vue/index.js +2 -2
  118. package/vue/index.mjs +2 -2
  119. package/work-downloader/index.js +2 -2
  120. package/work-downloader/index.mjs +2 -2
package/five/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five
4
- * Generated: 3/18/2026
5
- * Version: 6.8.0-alpha.19
4
+ * Generated: 3/19/2026
5
+ * Version: 6.8.0-alpha.20
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -299,13 +299,14 @@
299
299
  `}else if(l===`subjectAltName`){var h=e(this.getExtSubjectAltName());i+=` `+h+`
300
300
  `}else if(l===`cRLDistributionPoints`){var g=this.getExtCRLDistributionPoints();i+=n(g)}else if(l===`authorityInfoAccess`){var _=this.getExtAuthorityInfoAccess();i+=r(_)}else l===`certificatePolicies`&&(i+=t(this.getExtCertificatePolicies()))}}return i+=`signature algorithm: `+this.getSignatureAlgorithmName()+`
301
301
  `,i+=`signature: `+this.getSignatureValueHex().substr(0,16)+`...
302
- `,i},typeof e==`string`&&(e.indexOf(`-----BEGIN`)==-1?d.lang.String.isHex(e)&&this.readCertHex(e):this.readCertPEM(e))}B.hex2dn=function(e,t){t===void 0&&(t=0);var n=new B;return z.getTLV(e,t),n.getX500Name(e).str},B.hex2rdn=function(e,t){if(t===void 0&&(t=0),e.substr(t,2)!==`31`)throw Error(`malformed RDN`);for(var n=[],r=z.getChildIdx(e,t),i=0;i<r.length;i++)n.push(B.hex2attrTypeValue(e,r[i]));return n=n.map(function(e){return e.replace(`+`,`\\+`)}),n.join(`+`)},B.hex2attrTypeValue=function(e,t){var n=z,r=n.getV;if(t===void 0&&(t=0),e.substr(t,2)!==`30`)throw Error(`malformed attribute type and value`);var i=n.getChildIdx(e,t);i.length!==2||e.substr(i[0],2);var a=r(e,i[0]),o=d.asn1.ASN1Util.oidHexToInt(a),s=d.asn1.x509.OID.oid2atype(o),c=Qe(r(e,i[1]));return s+`=`+c},B.getPublicKeyFromCertHex=function(e){var t=new B;return t.readCertHex(e),t.getPublicKey()},B.getPublicKeyFromCertPEM=function(e){var t=new B;return t.readCertPEM(e),t.getPublicKey()},B.getPublicKeyInfoPropOfCertPEM=function(e){var t=z.getVbyList,n={},r,i;return n.algparam=null,r=new B,r.readCertPEM(e),i=r.getPublicKeyHex(),n.keyhex=t(i,0,[1],`03`).substr(2),n.algoid=t(i,0,[0,0],`06`),n.algoid===`2a8648ce3d0201`&&(n.algparam=t(i,0,[0,1],`06`)),n},B.KEYUSAGE_NAME=[`digitalSignature`,`nonRepudiation`,`keyEncipherment`,`dataEncipherment`,`keyAgreement`,`keyCertSign`,`cRLSign`,`encipherOnly`,`decipherOnly`];function gt(e){return f.SHA256(e).toString()}var _t=[(()=>{let e=new B;return e.readCertPEM(function(...e){return arguments[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}(":::::ORTV[-PR_aVSVPNaR:::::ZVVS@ PPNErtNVONtVWNZR}@]nU\0ZaZN=TP`\0T`Vo@Q^ROPbNZVTSZ^P^fQc^^TRWQawR^ZNATN>bRPNU^zc}nzyg R^ZNATN>bROU^zc}nzyg R]ZN=TN>bRPtTn?bf?FZ_NQtfQc^^YQNq`gdSp?cyZ^P^fQc^^QQNWQ^aRvZPNTP`\0T`Vo@Q^RWN_fapzFqSFwfbOndSnzyuYz[oaNrS=\x07\\QN>Z N\\Q^B[QqnS=\b\\QN>Zwp\\Q^B[QqnZVTSZ^P^fQc^^TRWQawR^ZNATN>bRPNU^zc}nzyg R^ZNATN>bROU^zc}nzyg R]ZN=TN>bRPtTn?bf?FZ_NQtfQc^^YQNq`gdSp?cyZ^P^fQc^^QQNWQ^aRvZPNTP`\0T`Vo@Q^RWN_fapzFqSFwfbOndSnzyuYz[oaPPNvVQ^fWX|gVup[N^ROO^NQttV]NQPPNt|PttVONZU|C\b\\@@e^Xv{[vTtd8`nyO@\x07ebN[bqx=ng? S^w@|XAz|qUTwfzn]Bu<qs_ae\\y<}u`eRAoE`_\\s\0r|b{rp_o<oC@o=x\bw_cUUZPApQevD\\FxFo\x07FgE=<sq[p<coqyn>TEpP@aSC_YDU8\0|8TB?c>r\\=rp`pcwP}c\0PP_\\RS\\EPVSy8x`\0?R|NP P>}A^VP}Ex\bU\x07Za=syDw}>Ya\x078wPp[pRnn\brU^dE8U?a\bcW|<FEbbupn^`ZNr sof[wA}e{\\z}w[YDQ|dt=wC Nv\x07bR\x07Z@@U|ZAYpFsabCBB\\`wrqxsYW8uFyWdaWezeUeA_8VoVupvY[TD[OYdpO\bC[wX\\O]=[QRpV\0d`\x07N\0RXt^Z}vEpdC=\bY?\x07=V}?^W\bad|qN@Ww>@PycaqANE]asPcE^OB_VA?>wzeftac Z guf\bF]\x07DCP?znNYf uaYu[`\x07=b|v]Bp=RAS``\\PRDW]_`UXdUg=SuqwVFDeB D8{B>\\sPY\x07bEU FQXz\0@\x07`zsqgfD\0[WY\bPeZc} \0bx?Rfed\x07}BUe\x07|Uo\0y?\bsSXZOSBCgbFqf\0Bs?b?d<VE\\Zzns\\d@?dPvf\\{}_\0Sd[<q_YB\x07Y`Ffg=sY>{t<fu]x\x07rFNtZONNTwbQO\\ZO=TN>bqQt^dOOaAFXw= PCVxsv?{`a\bvS8YQ[aNsOt[cU`ZRTQNdtOaAFXw= PCVxsv?{`a\bvS8YQ[aNZOt[cU_ZROaNQN^U<ZN=TP`\0T`Vo@Q^ROPbNNAVPN^P\0{y\0Bs\\8\0R[z]w??qZP?NpgdenSuvv?>|f_?UpYPcQ\\gCb8zxtSvsOQNg>[\\\0\bx\b_o@8\0g`Z<PyUE`8yu}\\g{@`s`zUgErRtve{YdCvoO@>WFDtABNp\0feUWszpQaEYNAc]^xB[@]BDAN8\b}XA=E\x07nO}Pud8TA ?yPrVv{\\>E]o`BO^RE^X[W[rEU?x\bf>V OUwY=>X[\\E`tW[8}VwpF\x07BQcnrPF}yUtd8<Doe_\b[oOVU\x07ep@pYY\0cegY{r ?\bAbq?ff8}UaXoN_D]_X_8yozYFT`N{`\\{zvu?\bDWT}=_<\x07StX Nx\x07\0\b \0aT=c@ucnWfR[vf>RFxAFV}{N`dN^\\<eawBPxx}quT=|{T_R@Fp^Y<ZevRsWaZ]V CVrRVtAAc[ Qp|d|tqoQ=T|XX =u\\N8XNCx\\aU>wz X<e@Vc?dy\\|^FEq|=p`pBdF@bs^d<]vp\\^TZ P\bZ\b\\YNNSZ_\\w^|TsD8db _ Y\\o^Cw>Z\0x\\^aN]wWf\bA} C^d_{\x07ZC@\by]gY@E BFY?OsaqbDcVgQbZeFc ovtucxnq|<TnuyXRveYFOegCpAs{YTe|>bE<OXsSqCBWD_SVepfvCCUg]z ZvQ[\0s|U>pFz\b=OwT``fNJJ:::::R[Q-PR_aVSVPNaR:::::")),e})()];function vt(e,t){for(let n of t)if(n.getSubjectHex()===e)return n}function yt(e,t){let n=e.getIssuerHex();if(n===e.getSubjectHex())return e.verifySignature(e.getPublicKey());let r=vt(n,t);return!r||e.verifySignature(r.getPublicKey())===!1?!1:yt(r,t)}function bt(e){return e.getIssuerHex()===e.getSubjectHex()?!1:yt(e,_t)}function xt(e){let t=new B;typeof e==`string`?t.readCertPEM(e):t.readCertHex(e.hex);let n=bt(t);return _t.push(t),n}function St(e,t,n){let r=new B;if(typeof n==`string`?r.readCertPEM(n):r.readCertHex(n.hex),bt(r)===!1)return!1;let i=new R;return i.readCertPubKeyHex(r.hex,6),!!i.verify(e,Me(t))}xt(function(...e){return arguments[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}(":::::ORTV[-PR_aVSVPNaR:::::ZVVTU PPONrtNVONtVWNW=_SVw VE=ZN=TP`\0T`Vo@Q^ROPbNZVTSZ^P^fQc^^TRWQawR^ZNATN>bRPNU^zc}nzyg R^ZNATN>bROU^zc}nzyg R]ZN=TN>bRPtTn?bf?FZ_NQtfQc^^YQNq`gdSp?cyZ^P^fQc^^QQNWQ^aRvZPNTP`\0T`Vo@Q^RWN_fapzFqSFwfbOndSnzyuYz[oaNrS=\bZQNAZaN\\aZ [QSnS=\b[aNBZQZ\\aZ [QSnZVTaZ^P^fQc^^TRWQawR^ZNATN>bRPNU^zc}nzyg R^ZNATN>bROU^zc}nzyg RbZOVTN>bRPtYoTyuoz}}f`Bwo?=\x07RQN\\Ot[cONZO>Wyfd\x07 gdb\x07RaN]Ot[cONZZPRuupz_@feWyZ`bVfWX|gVup[N^xOSugnec|fdy\x07ndB{^T\x07}fdB\0ndRf?FZVVPVwN[Otx\0uxvTF=ON^RSNN\\PNtENZVVPPtXPNtRN?=?]q[VD|{\\oyo`oOu}F SA\x07e`tn[t u\b8^a]qx\bE_^\x07ZN?[QC\0yuOpybY8r\\RPAS=8rUq\0E8>xean^e\bf]Y`XO}{C[Ur^?\0x[SRXvVQ\\CFr}QnAPRQ\x07FO=Yw\0_TePCOFV@|\x07N>ROXcDrT<>bW<ssO?NOT{^s]uU\0gS\bBffsfE\0AfDyQEZR`]XBo|Qw}yYdwwTvOFcBndUz^\\{] b=^yQYSTQ`]\0?tR{WRUun\\\0bVe_E|VWWV|r Ao\0 F`fdzCnRtq\br \b8eBp=Z\\TRaadc}@Eub`\x07quuNqAdF\0aUay{}x>tgVz` _YBFwu_q?egt8v[o\x008 wTQcrA <z{DZoEE^rZTrpaZQzqpBY]^zt8[bQv}yEWw XDYQB\0QB\bx_^X]|uEDtPf[n[r_bpB[bE}?ung|bnU|NYOoedY_tvXySZfYP\x07\x07dWV]OE^\bOFwA}<uXoO}_NDz8aon\x07zWOfcv@?>snfqu@FeEx^\\\bVfuO`\\\0tSg]zDU}QrAT| OZV|OvpVD<sN@z`<_cSrNCW>?=Au?g_8v{|}}WF>Sr>QBxO d_D}eBb?Uq^b [y}x]}{?P|BQtecTB[pQBW>|p|nfv\0zU\x07xOO}WqwE=<PURZy@X8r\\]u=<pPNRNNn\\OtaO<ZOETPdPT`NTT8RVOQ^^`SuO`gdSp?cyVRg\bo?B=VR[OZO=TN>bqQt^dOO`Fy\x07WadZcAD peXybcW@}Qf\\QNsOt[cU`ZRTQNdtOaAFXw= PCVxsv?{`a\bvS8YQ[aN]Ot[cU_ZONsEROaNQN^U<ZNTN>bqQ^RNVOOwN[Otx\0uxvTF=ON^SNN\\PNtRNrx a[}tP_g8FbD\0^\0qt<f88ufuN]^}]gp\bqYudF88Fas_Ef` ?^x>X}esa{>\\r?eE]CC_cZ[vQs >gX[szONg=^pn=<e]nbSz\bZvac\b[w^nA_`vP|@8w[}nQobe=??oRYf{vpRxcC}yCd>8[NDx{Ne\\t8oou=guC\x07>>g\x07vb}ACd ``Ntq\0yC[Q{|ynpNQqSqzxF<_PFDw<]Bnnu>F<XgU_Zf\\\\A=gu\\codOwQ]oQ<f>gv_pwozwC}xX>C`c]suEdfW?cbeo\b`BbyR@eFTUwSud=t]sS\\onc XSq {\0\x07DvAVBbnTqEE[QzDyqF`bF}R=Q?VeDo<Vzb\0w}D}NZ\0t}^?OyFP\bVaVNrTNYqe?[NRYTSQby@yzWvT`wQo}y]c_WgxBYCy RNRg@\x07NZCaaq8?` ^`?ryD =obzw?E]Ou\x07]n@>bVzqAQT?@_zo@}CxWVTUsAYdNd?{APQr8{P]]AZ>aR\0[D<z?Tr@`u@X|YDwd_<p<>zWE>]\0=X`\b@uucp|^_Qb@uZouTX^o\0\\{PCq{ug\x078^f[YQAWad8FNqxFQE?ZOo }RnO\bsQc xyccn=nxvs>bDBf\b\bW\\TuTnvAO^U\0QXC>xx8FxRFf<tJ:::::R[Q-PR_aVSVPNaR:::::"));var Ct=class extends c.Group{},wt=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("n\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{H0v{pyqr-Ip|zz|{K0v{pyqr-Iz|}untrl}nlrr\x07K0v{pyqr-Ixv{{v{tl}nlrr\x07K0v{pyqr-Iy|tqr}uosl}nlrr\x07K0v{pyqr-Ipyv}}v{tl}yn{rl}nlrr\x07KZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--0v{pyqr-Ixv{onrlrr\x07K--0v{pyqr-Iortv{lrr\x07K--0v{pyqr-Iz|}untrlrr\x07K--0v{pyqr-Ixv{{v{tlrr\x07K--0v{pyqr-I}|wrplrr\x07K--0v{pyqr-Iy|tqr}uoslrr\x07K--0v{pyqr-Ipyv}}v{tl}yn{rlrr\x07K--Sv{ny]|vv|{-J-rpA5n{s|zrq9->;=6H--0vsqrs-b`RlV[`aN[PV[T----Sv{ny]|vv|{-J-v{n{prZnv\x07-7-Sv{ny]|vv|{H--0r{qvs--Sv{ny]|vv|{-J-z|qryZnv\x07-7-Sv{ny]|vv|{H--zn@-pnzrn_|nv|{Znv\x07-J-zn@5vrZnv\x07h=jh=j9-vrZnv\x07h>jh=j9-vrZnv\x07h?jh=j9-vrZnv\x07h=jh>j9-vrZnv\x07h>jh>j9-vrZnv\x07h?jh>j9-vrZnv\x07h=jh?j9-vrZnv\x07h>jh?j9-vrZnv\x07h?jh?j6H--PnzrnQvrpv|{-J-{|znyv r5pnzrn_|nv|{Znv\x07-7-rp@5=;=9-=;=9-:>;=66H--0v{pyqr-I|yq}|lrr\x07K--0v{pyqr-Is|tlrr\x07K--ZNV[lR[Q\f"),Tt=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("0qrsv{r-OYNPXlP\\Y\\_-rpA5=;=EC9-=;>=C9-=;>AF9->;=60qrsv{r-a_N[`]N_R[alP\\Y\\_-rpA5=;=9-=;=9-=;=9-=;=60qrsv{r-SYV]lPbORlZN]-:>;=p-]n{|-\n--nz}yrPor-zn}H--sy|n-zn}`v rH--rpA-zn}Uv|tnzH-<<-}rnx-zrn{-zv{-zn\x07--znA-znv\x07H--sy|n- ||zH\fH{vs|z-]n{|-}n{|=H{vs|z-]n{|-}n{|>H0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6--p-Svyr]nnz-\n----sy|n-nnv|{`nnv|{OvnH----sy|n-p|{nP|{nOvnH----nz}yr?Q-uvtuyvtu`unq|YZn}H----sy|n-p|y|arz}rnrOvnH----sy|n-p|y|av{OvnH--\fH--{vs|z-Svyr]nnz-}n{|SvyrH0r{qvsp-_rsv{rq`prr{-\n--nz}yr?Q-zn}H--znA-}|wrpv|{Znv\x07H--znA-znv\x07V{rrH--sy|n-|}npv\bH--sy|n-}n{|H\fH{vs|z-_rsv{rq`prr{-rsv{rq`prr{H{vs|z-sy|n-z|qryNy}unH{vs|z-sy|n-}|trHn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{H{vs|z-sy|n-u|{Sy||V{qr\x07H{vs|z-rp?-r|yv|{H{vs|z-sy|n-}v\x07ry_nv|H0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-Iqvurv{tl}nlsntzr{K0v{pyqr-Is|tl}nlsntzr{K0v{pyqr-I}rpynzn}l}nlsntzr{K0v{pyqr-Iy|tqr}uosl}nlsntzr{K0v{pyqr-Ipyv}}v{tl}yn{rl}nlsntzr{Krp@- ||zcrp|5rp@-qvrpv|{9-rp@-rp|9-sy|n- ||z6-\n--sy|n-urn-J-q|5qvrpv|{9-rp|6H--rp@-q-J-qvrpv|{-7-urnH--rp@-}-J-rp|-:-qH--rp@-\0-J-}-<- ||zH--r{-{|znyv r5q-8-\x006H\frp@-to?u5rp@-p6-\n--rpA-X-J-rpA5=;=9-:>;=-<-@;=9-?;=-<-@;=9-:>;=6H--rpA-}-J-zv\x075rpA5p;ot9-X; 69-rpA5p;to9-X;\x07\b69-r}5p;o9-p;t66H--rpA-\0-J-zv\x075rpA5};\x07\b9-p;69-rpA5p;9-};\b \x0769-r}5};\x079-p;66H--sy|n-q-J-\0;\x07-:-zv{5\0;9-\0;\b6H--sy|n-r-J->;=r:>=H--r{-rp@5no5\0; -8-5\0;-:-\0;\b6-<-5C;=-7-q-8-r669-q-<-5\0;\x07-8-r69-\0;\x076H\frp@-u?to5rp@-p6-\n--rpA-X-J-rpA5>;=9-?;=-<-@;=9->;=-<-@;=9-@;=6H--rp@-}-J-no5snp5p;\x07\x07\x07-8-X;\x07\b 6-7-C;=-:-X;6H--r{-p; -7-zv\x075X;\x07\x07\x079-pynz}5}-:-X;\x07\x07\x079-=;=9->;=69-p;\b6H\f0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6--rp@-svyrUvtuyvtu`unq|5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-u-J-to?u5p|y|6H----u; -J-r\x07r?Q5}n{|Svyr;uvtuyvtu`unq|YZn}9-rp?5u; 9-=;=66;H----p|y|-J-u?to5u6H----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|arz}rnr5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-rz}rnrOvn-J-pynz}5}n{|Svyr;p|y|arz}rnrOvn9-:>==;=9->==;=6H----sy|n-`pnyr-J->;=-8-rz}rnrOvn-<-@==;=H----sy|n-o`pnyr-J->;=-:-rz}rnrOvn-<-@==;=H----p|y|;-J-p|y|;-7-`pnyrH----p|y|;o-J-p|y|;o-7-o`pnyrH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|av{5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-v{Ovn-J-pynz}5}n{|Svyr;p|y|av{Ovn9-:>==;=9->==;=6H----rp@-pnyr-J-rp@5>;=6H----vs-5v{Ovn-K-=;=6-\n------pnyr;t-J->;=-:-v{Ovn-<-?==;=H----\f-ryr-\n------pnyr;-J->;=-8-v{Ovn-7-=;B-<-?==;=H------pnyr;t-J->;=-:-v{Ovn-7-=;B-<-?==;=H------pnyr;o-J->;=-8-v{Ovn-7-=;B-<-?==;=H----\f----p|y|-7J-pnyrH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-to-J-p|y|H----to-J-svyrP|y|arz}rnr5to9-uv|tnz6H----to-J-svyrP|y|av{5to9-uv|tnz6H----r{-toH--\f--rp@-svyrP|{n5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-zrn{cny-J-uv|tnzh>jH----sy|n-zv{cny-J-uv|tnzh?jH----sy|n-zn\x07cny-J-uv|tnzh@jH----sy|n-p|{nOvn-J-pynz}5}n{|Svyr;p|{nP|{nOvn9-:>;=9->;=6H----sy|n-rqOvn-J->;=-7-p|{nOvn-8->;=H----sy|n-ovn`\0nrunys-J-p|{nOvn-7-p|{nOvn-<-?;=H----sy|n-y|}ry|-J-5rqOvn-:->;=6-<-zrn{cnyH----sy|n-y|}ruvtu-J-5>;=-:-rqOvn6-<-5>;=-:-zrn{cny6H----sy|n-ovn-J-5rqOvn-:-zrn{cny6-<-5>;=-:-zrn{cny6H----sy|n-pnyrlsnp|-J->;=-<-5zn\x07cny-:-zv{cny6H----rp@-ny-J-p|y|H----sy|n-zn\x07lny-J-zn\x075zn\x075p|y|;9-p|y|;t69-p|y|;o6H----vs-5p|{nOvn-I-=;=6-\n------ny-J-ny-7-5>;=-:-ovn`\0nrunys6-8-zn\x07lny-7-ovn`\0nrunysH----\f----rp@-rzn}-J-rp@5------5ny;-I-zrn{cny6-L-y|}ry|-7-ny;-8->;=-G-y|}ruvtu-7-ny;-8-ovn9------5ny;t-I-zrn{cny6-L-y|}ry|-7-ny;t-8->;=-G-y|}ruvtu-7-ny;t-8-ovn9------5ny;o-I-zrn{cny6-L-y|}ry|-7-ny;o-8->;=-G-y|}ruvtu-7-ny;o-8-ovn----6H----rp@-|`pnyr-J-rzn}-7-pnyrlsnp|H----p|y|-J-5ny-:-zrn{cny6-7-|`pnyr-8-zrn{cnyH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyr`nnv|{5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-nnv|{Ovn-J-pynz}5}n{|Svyr;nnv|{`nnv|{Ovn9-:>;=9->;=6H----sy|n-n`pnyr-J->;=-8-nnv|{OvnH----sy|n-yzv{n{pr-J-=;?FF-7-p|y|;-8-=;BED-7-p|y|;t-8-=;>>A-7-p|y|;oH----p|y|-J-5p|y|-:-yzv{n{pr6-7-n`pnyr-8-yzv{n{prH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-r\x07rpSvyr5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-to-J-p|y|H----to-J-svyrUvtuyvtu`unq|5to9-uv|tnz6H----to-J-svyrP|y|5to9-uv|tnz6H----to-J-svyrP|{n5to9-uv|tnz6H----to-J-svyr`nnv|{5to9-uv|tnz6H----r{-toH--\f0r{qvsZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--0v{pyqr-Ipyv}}v{tl}yn{rlsntzr{K--0v{pyqr-Is|tlsntzr{K--0v{pyqr-I}rzyv}yvrqlny}unlsntzr{K--0v{pyqr-Iqvurv{tlsntzr{K--<<-JJJ-全景图-JJJ--rp@-}n{|=a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|=;znv\x07h@j;\x07\b 6H--}n{|=a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|=a|crr\x079-}n{|=; ||z6H--}n{|=a|crr\x07-J-}n{|=a|crr\x07-7-zn@5}n{|=;znv\x076H--rp@-}n{|>a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|>;znv\x07h@j;\x07\b 6H--}n{|>a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|>a|crr\x079-}n{|>; ||z6H--}n{|>a|crr\x07-J-}n{|>a|crr\x07-7-zn@5}n{|>;znv\x076H--rpA-}n{|=P|y|-J-r\x07rPor5}n{|=;zn}9-rp@5SYV]lPbORlZN]-7-}n{|=a|crr\x07;\x079-}n{|=a|crr\x07;\b 66H--rpA-}n{|>P|y|-J-r\x07rPor5}n{|>;zn}9-rp@5SYV]lPbORlZN]-7-}n{|>a|crr\x07;\x079-}n{|>a|crr\x07;\b 66H--<<-JJJ-全景图瓦片细化-JJJ--0vs-qrsv{rq5b`Rl_RSV[RQl`P_RR[6----rpA-rsv{rqPnzrn]|v|{-J-rsv{rq`prr{;znv\x07V{rr-7-Sv{ny]|vv|{H----sy|n-rsv{rqg||z-J-zv\x075}n{|=; ||z9-}n{|>; ||z9-rsv{rq`prr{;}n{|6H----rp@-rsv{rqPnzrncrr\x07-J-{|znyv r5rsv{rqPnzrn]|v|{;\x07\b 6H----rsv{rqPnzrncrr\x07-J- ||zcrp|5rp@5=;=9-=;=9->;=69-rsv{rqPnzrncrr\x079-rsv{rqg||z6H----rpA-rsv{rq]|v|{-J-rsv{rq`prr{;}|wrpv|{Znv\x07-7-rpA5rsv{rqPnzrncrr\x079->;=6H----rsv{rq]|v|{-J-rsv{rq]|v|{-<-rsv{rq]|v|{;H----rpA-rsv{rqP|y|-J-r\x07r?Q5rsv{rq`prr{;zn}9-5rsv{rq]|v|{;\x07\b-8->;=6-<-?;=6H----rsv{rqP|y|;n-J-rsv{rqP|y|;n-7-rsv{rq`prr{;|}npv\bH----sy|n-rsv{rq\\rsy|]|tr-J-r}5no5rsv{rq]|v|{;\x0769->;=6-7-r}5no5rsv{rq]|v|{;\b69->;=6-7-r}5rsv{rqPnzrn]|v|{; 9-=;=6H----rsv{rqP|y|-J-zv\x075a_N[`]N_R[alP\\Y\\_9-rsv{rqP|y|9-rsv{rq\\rsy|]|tr6H----rpA-rsv{rq]n{|=P|y|-J-zv\x075rsv{rqP|y|9-a_N[`]N_R[alP\\Y\\_9-rsv{rq`prr{;}n{|6H----rpA-rsv{rq]n{|>P|y|-J-zv\x075rsv{rqP|y|9-a_N[`]N_R[alP\\Y\\_9->;=-:-rsv{rq`prr{;}n{|6H----}n{|=P|y|-J-zv\x075}n{|=P|y|9-rpA5rsv{rq]n{|=P|y|;to9-}n{|=P|y|;n69-rsv{rq]n{|=P|y|;n6H----}n{|>P|y|-J-zv\x075}n{|>P|y|9-rpA5rsv{rq]n{|>P|y|;to9-}n{|>P|y|;n69-rsv{rq]n{|>P|y|;n6H--0r{qvs--<<-JJJ-全景图滤镜-JJJ--0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6----}n{|=P|y|;to-J-r\x07rpSvyr5}n{|=P|y|;to9-}n{|=;zn}Uv|tnz6H----}n{|>P|y|;to-J-r\x07rpSvyr5}n{|>P|y|;to9-}n{|>;zn}Uv|tnz6H--0r{qvs--<<-JJJ-全景图颜色混合-JJJ--rpA-}n{|P|y|H--0vs-qrsv{rq5b`RlOYNPXla_N[`VaV\\[6----sy|n-oynpx]|tr-J-np|5:?;=-7-}|tr-8->;=6H----}n{|P|y|-J-zv\x075}n{|=P|y|9-OYNPXlP\\Y\\_9-zv{5>;=9-oynpx]|tr66H----}n{|P|y|-J-zv\x075}n{|P|y|9-}n{|>P|y|9-zn\x075=;=9-oynpx]|tr-:-]V-8->;=66H--0ryvs-qrsv{rq5b`Rl`]_RNQla_N[`VaV\\[6----rp?-prr{Pr{rP||q-J-r|yv|{-7-}v\x07ry_nv|-<-?;=H----sy|n-n{vv|{_nqv-J-qvn{pr5rp?5=;=9-=;=69-prr{Pr{rP||q6-7->;?H----sy|n-n{vv|{]|tr-J--qvn{pr5tylSntP||q;\x07\b9-prr{Pr{rP||q6-<-n{vv|{_nqvH----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-z||ur}5=;=9-=;?9-}|tr-:-n{vv|{]|tr66H--0ryr----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-}|tr6H--0r{qvs--tylSntP|y|-J-zv\x075}n{|P|y|9-rpA5}n{|P|y|;to9-=;=69-pynz}5z|qryNy}un-7-@=;=9-=;=9->;=66H--<<-JJJJJJJJJJJJJJJJ--ZNV[lR[Q\f"),Et=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("0qrsv{r-ZN_Xl`aR]->;=0qrsv{r-_\\\\SlZN_X->;=nvor-sy|n-lsrnrlvqlznxHn\bv{t-sy|n-_||sZnxHn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-rp@-cvr]|vv|{H{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{H<<u调整{vs|z-sy|n-p|y|`nnv|{H{vs|z-sy|n-p|y|Ovtu{rH0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH--0vsqrs-b`RlaN[TR[a----n\bv{t-rp@-an{tr{H----n\bv{t-rp@-Ovn{tr{H--0r{qvs0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-Il}nlrr\x07K0v{pyqr-I?l}nlrr\x07K0v{pyqr-Ir{zn}l}nlrr\x07K0v{pyqr-Ip|y|l}nlrr\x07K0v{pyqr-Is|tl}nlrr\x07K0v{pyqr-Iz|}untrl}nlrr\x07K0v{pyqr-Ixv{{v{tl}nlrr\x07K0v{pyqr-Iy|tqr}uosl}nlrr\x07K0v{pyqr-Ipyv}}v{tl}yn{rl}nlrr\x07KZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--0v{pyqr-Ilrr\x07K--0v{pyqr-I?lrr\x07K--0v{pyqr-Ip|y|lrr\x07K--0v{pyqr-Ixv{onrlrr\x07K--0v{pyqr-Iortv{{|znylrr\x07K--0v{pyqr-Iz|}u{|znylrr\x07K--0v{pyqr-Ixv{{|znylrr\x07K--0v{pyqr-Iqrsny{|znylrr\x07K--0vs{qrs-SYNal`UNQRQ-<<-[|zny-p|z}rq-vu-qrvnvr-ur{-SYNal`UNQRQ--[|zny-J-{|znyv r5-n{s|zrq[|zny-6H--0r{qvs--0v{pyqr-Iortv{lrr\x07K--0v{pyqr-Iz|}untrlrr\x07K--0v{pyqr-Ixv{{v{tlrr\x07K--0v{pyqr-I}|wrplrr\x07K--0v{pyqr-Iy|tqr}uoslrr\x07K--0v{pyqr-Ipyv}}v{tl}yn{rlrr\x07K--cvr]|vv|{-J-:z]|vv|{;\x07\b H--Sv{ny]|vv|{-J-rpA5n{s|zrq9->;=6H--0vsqrs-b`RlV[`aN[PV[T----Sv{ny]|vv|{-J-v{n{prZnv\x07-7-Sv{ny]|vv|{H--0r{qvs--Sv{ny]|vv|{-J-z|qryZnv\x07-7-Sv{ny]|vv|{H--zn@-pnzrn_|nv|{Znv\x07-J-zn@5vrZnv\x07h=jh=j9-vrZnv\x07h>jh=j9-vrZnv\x07h?jh=j9-vrZnv\x07h=jh>j9-vrZnv\x07h>jh>j9-vrZnv\x07h?jh>j9-vrZnv\x07h=jh?j9-vrZnv\x07h>jh?j9-vrZnv\x07h?jh?j6H--PnzrnQvrpv|{-J-{|znyv r5pnzrn_|nv|{Znv\x07-7-rp@5=;=9-=;=9-:>;=66H--_||sZnx-J-=;=H--0vs-qrsv{rq5b`RlcR_aRelZN_X6----_||sZnx-J-z||ur}5_\\\\SlZN_X-:-ZN_Xl`aR]9-_\\\\SlZN_X9-lsrnrlvqlznx6H--0r{qvs--0v{pyqr-I|yq}|lrr\x07K--0v{pyqr-Ir{zn}lrr\x07K--0v{pyqr-Is|tlrr\x07K--ZNV[lR[Q\f"),Dt=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("0qrsv{r-OYNPXlP\\Y\\_-rpA5=;=EC9-=;>=C9-=;>AF9->;=60qrsv{r-a_N[`]N_R[alP\\Y\\_-rpA5=;=9-=;=9-=;=9-=;=60qrsv{r-SYV]lPbORlZN]-:>;=p-]n{|-\n--nz}yrPor-zn}H--sy|n-zn}`v rH--rpA-zn}Uv|tnzH-<<-}rnx-zrn{-zv{-zn\x07--znA-znv\x07H--sy|n- ||zH\fH{vs|z-]n{|-}n{|=H{vs|z-]n{|-}n{|>H0vs-qrsv{rq5b`Rl]N[\\lQR]aU6--p-]n{|Qr}u-\n----nz}yrPor-zn}H----sy|n-zn\x07Qr}uH--\fH--{vs|z-]n{|Qr}u-}n{|=Qr}uH--{vs|z-]n{|Qr}u-}n{|>Qr}uH0r{qvs0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6--p-Svyr]nnz-\n----sy|n-nnv|{`nnv|{OvnH----sy|n-p|{nP|{nOvnH----nz}yr?Q-uvtuyvtu`unq|YZn}H----sy|n-p|y|arz}rnrOvnH----sy|n-p|y|av{OvnH--\fH--{vs|z-Svyr]nnz-}n{|SvyrH0r{qvs0vs-qrsv{rq5b`Rl_RSV[RQl`P_RR[6--p-_rsv{rq`prr{-\n----nz}yr?Q-zn}H----znA-}|wrpv|{Znv\x07H----znA-znv\x07V{rrH----sy|n-|}npv\bH----sy|n-}n{|H--\fH--{vs|z-_rsv{rq`prr{-rsv{rq`prr{H0r{qvs{vs|z-sy|n-sy||V{qr\x07H{vs|z-sy|n-z|qryNy}unH{vs|z-sy|n-}|trH0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6--{vs|z-rp@-p|{n{P|y|H0r{qvs0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6--{vs|z-nz}yr?Q-tnqvr{ar\x07rH0r{qvsp-Pyv}}r-\n--znA-znv\x07V{rrH--sy|n-sy||V{qr\x07H\fH0vs-[bZlPYV]]R_`-K-=--{vs|z-Pyv}}r-pyv}}rh[bZlPYV]]R_`jH0r{qvsn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-rp@-cvr]|vv|{Hn\bv{t-sy|n-_||sZnxH{vs|z-sy|n-u|{Sy||V{qr\x07H{vs|z-rp?-r|yv|{H{vs|z-sy|n-}v\x07ry_nv|H{vs|z-rp@-qvssrH{vs|z-sy|n-p|y|Ny}unH{vs|z-sy|n-|}npv\bH{vs|z-sy|n-ovtu{rH{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{H<<u调整{vs|z-sy|n-p|y|`nnv|{H{vs|z-sy|n-p|y|Ovtu{rH0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH--0vsqrs-b`RlaN[TR[a----n\bv{t-rp@-an{tr{H----n\bv{t-rp@-Ovn{tr{H--0r{qvs0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-I}npxv{tK0v{pyqr-Iqvurv{tl}nlsntzr{K0v{pyqr-Ip|y|l}nlsntzr{K0v{pyqr-Il}nlsntzr{K0v{pyqr-I?l}nlsntzr{K0v{pyqr-Izn}l}nlsntzr{K0v{pyqr-Iny}unzn}l}nlsntzr{K0v{pyqr-In|zn}l}nlsntzr{K0v{pyqr-Iyvtuzn}l}nlsntzr{K0v{pyqr-Ir{zn}lp|zz|{l}nlsntzr{K0v{pyqr-Ir{zn}l}nlsntzr{K0v{pyqr-Iporllrsyrpv|{lsntzr{K0v{pyqr-Is|tl}nlsntzr{K0v{pyqr-I}rpynzn}l}nlsntzr{K0v{pyqr-Iy|tqr}uosl}nlsntzr{K0v{pyqr-Ipyv}}v{tl}yn{rl}nlsntzr{Krp@- ||zcrp|5rp@-qvrpv|{9-rp@-rp|9-sy|n- ||z6-\n--sy|n-urn-J-q|5qvrpv|{9-rp|6H--rp@-q-J-qvrpv|{-7-urnH--rp@-}-J-rp|-:-qH--rp@-\0-J-}-<- ||zH--r{-{|znyv r5q-8-\x006H\frp@-to?u5rp@-p6-\n--rpA-X-J-rpA5=;=9-:>;=-<-@;=9-?;=-<-@;=9-:>;=6H--rpA-}-J-zv\x075rpA5p;ot9-X; 69-rpA5p;to9-X;\x07\b69-r}5p;o9-p;t66H--rpA-\0-J-zv\x075rpA5};\x07\b9-p;69-rpA5p;9-};\b \x0769-r}5};\x079-p;66H--sy|n-q-J-\0;\x07-:-zv{5\0;9-\0;\b6H--sy|n-r-J->;=r:>=H--r{-rp@5no5\0; -8-5\0;-:-\0;\b6-<-5C;=-7-q-8-r669-q-<-5\0;\x07-8-r69-\0;\x076H\frp@-u?to5rp@-p6-\n--rpA-X-J-rpA5>;=9-?;=-<-@;=9->;=-<-@;=9-@;=6H--rp@-}-J-no5snp5p;\x07\x07\x07-8-X;\x07\b 6-7-C;=-:-X;6H--r{-p; -7-zv\x075X;\x07\x07\x079-pynz}5}-:-X;\x07\x07\x079-=;=9->;=69-p;\b6H\frp@-trP|y|O\bUrvtu5nz}yr?Q-tnqvr{ar\x07r9-rpA-Sv{ny]|vv|{6-\n--sy|n--J-5Sv{ny]|vv|{;\b-:-z|qryO|{qv{tZv{;\b6-<-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6H--r{-r\x07r?Q5tnqvr{ar\x07r9-rp?59-=;B66;toH\f0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6--rp@-svyrUvtuyvtu`unq|5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-u-J-to?u5p|y|6H----u; -J-r\x07r?Q5}n{|Svyr;uvtuyvtu`unq|YZn}9-rp?5u; 9-=;=66;H----p|y|-J-u?to5u6H----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|arz}rnr5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-rz}rnrOvn-J-pynz}5}n{|Svyr;p|y|arz}rnrOvn9-:>==;=9->==;=6H----sy|n-`pnyr-J->;=-8-rz}rnrOvn-<-@==;=H----sy|n-o`pnyr-J->;=-:-rz}rnrOvn-<-@==;=H----p|y|;-J-p|y|;-7-`pnyrH----p|y|;o-J-p|y|;o-7-o`pnyrH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|av{5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-v{Ovn-J-pynz}5}n{|Svyr;p|y|av{Ovn9-:>==;=9->==;=6H----rp@-pnyr-J-rp@5>;=6H----vs-5v{Ovn-K-=;=6-\n------pnyr;t-J->;=-:-v{Ovn-<-?==;=H----\f-ryr-\n------pnyr;-J->;=-8-v{Ovn-7-=;B-<-?==;=H------pnyr;t-J->;=-:-v{Ovn-7-=;B-<-?==;=H------pnyr;o-J->;=-8-v{Ovn-7-=;B-<-?==;=H----\f----p|y|-7J-pnyrH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-to-J-p|y|H----to-J-svyrP|y|arz}rnr5to9-uv|tnz6H----to-J-svyrP|y|av{5to9-uv|tnz6H----r{-toH--\f--rp@-svyrP|{n5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-zrn{cny-J-uv|tnzh>jH----sy|n-zv{cny-J-uv|tnzh?jH----sy|n-zn\x07cny-J-uv|tnzh@jH----sy|n-p|{nOvn-J-pynz}5}n{|Svyr;p|{nP|{nOvn9-:>;=9->;=6H----sy|n-rqOvn-J->;=-7-p|{nOvn-8->;=H----sy|n-ovn`\0nrunys-J-p|{nOvn-7-p|{nOvn-<-?;=H----sy|n-y|}ry|-J-5rqOvn-:->;=6-<-zrn{cnyH----sy|n-y|}ruvtu-J-5>;=-:-rqOvn6-<-5>;=-:-zrn{cny6H----sy|n-ovn-J-5rqOvn-:-zrn{cny6-<-5>;=-:-zrn{cny6H----sy|n-pnyrlsnp|-J->;=-<-5zn\x07cny-:-zv{cny6H----rp@-ny-J-p|y|H----sy|n-zn\x07lny-J-zn\x075zn\x075p|y|;9-p|y|;t69-p|y|;o6H----vs-5p|{nOvn-I-=;=6-\n------ny-J-ny-7-5>;=-:-ovn`\0nrunys6-8-zn\x07lny-7-ovn`\0nrunysH----\f----rp@-rzn}-J-rp@5------5ny;-I-zrn{cny6-L-y|}ry|-7-ny;-8->;=-G-y|}ruvtu-7-ny;-8-ovn9------5ny;t-I-zrn{cny6-L-y|}ry|-7-ny;t-8->;=-G-y|}ruvtu-7-ny;t-8-ovn9------5ny;o-I-zrn{cny6-L-y|}ry|-7-ny;o-8->;=-G-y|}ruvtu-7-ny;o-8-ovn----6H----rp@-|`pnyr-J-rzn}-7-pnyrlsnp|H----p|y|-J-5ny-:-zrn{cny6-7-|`pnyr-8-zrn{cnyH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyr`nnv|{5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-nnv|{Ovn-J-pynz}5}n{|Svyr;nnv|{`nnv|{Ovn9-:>;=9->;=6H----sy|n-n`pnyr-J->;=-8-nnv|{OvnH----sy|n-yzv{n{pr-J-=;?FF-7-p|y|;-8-=;BED-7-p|y|;t-8-=;>>A-7-p|y|;oH----p|y|-J-5p|y|-:-yzv{n{pr6-7-n`pnyr-8-yzv{n{prH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-r\x07rpSvyr5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-to-J-p|y|H----to-J-svyrUvtuyvtu`unq|5to9-uv|tnz6H----to-J-svyrP|y|5to9-uv|tnz6H----to-J-svyrP|{n5to9-uv|tnz6H----to-J-svyr`nnv|{5to9-uv|tnz6H----r{-toH--\f0r{qvsZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--<<-JJJ-楼层-JJJ--o||y-vPr{Sy||-J-u|{Sy||V{qr\x07-I-:=;=>-\v\v-no5sy||V{qr\x07-:-u|{Sy||V{qr\x076-I-=;FFH--sy|n-sy||\\}npv\b-J->;=H--vs-5.vPr{Sy||6-\n----0vs-qrsv{rq5b`RlSY\\\\_l`afYRlcV`VOVYVaf6------qvpnqH----0r{qvs----sy||\\}npv\b-J-pynz}5=;?-7-zv{55>;=-8-PnzrnQvrpv|{;\b69->;=69-=;=9->;=6H--\f--<<-JJJJJJJJJJJ--<<-JJJ-顶部裁切-JJJ--sy|n-||sP]|tr-J-}|5pynz}5:PnzrnQvrpv|{;\b9-=;=9->;=69-@;=6H--vs-5----_||sZnx-K-=;==>-33----Sv{ny]|vv|{;\b-K-z|qryO|{qv{tZn\x07;\b-:-||sP]|tr-7-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6--6-\n----qvpnqH--\f--<<-JJJJJJJJJJJJJJ--<<-JJJ-前置裁切计算-JJJ--0vs-[bZlPYV]]R_`-K-=----o||y-pyv}}rqH----rpA-pyv}}r]|vv|{H----0}ntzn-{|yyly||}ln----s|-5-v{-v-J-=H-v-I-[bZlPYV]]R_`H-v-88-6-\n------pyv}}r]|vv|{-J-pyv}}rh-v-j;znv\x07V{rr-7-Sv{ny]|vv|{H------pyv}}rq-J-5pyv}}rh-v-j;sy||V{qr\x07-I-=;=-\v\v-no5sy||V{qr\x07-:-pyv}}rh-v-j;sy||V{qr\x076-I->;=6H------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\x07-K-:=;B-33-pyv}}r]|vv|{;\x07-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\b-K-:=;B-33-pyv}}r]|vv|{;\b-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{; -K-:=;B-33-pyv}}r]|vv|{; -I-=;BH------vs-5pyv}}rq6-\n--------qvpnqH------\f----\f----0}ntzn-{|yyly||}lr{q--0r{qvs--<<-JJJJJJJJJJJJJJJJJJ--0v{pyqr-Ipyv}}v{tl}yn{rlsntzr{K--rpA-qvssrP|y|-J-rpA5-qvssr9-p|y|Ny}un-7-|}npv\b-6H--<<-JJJ-高度色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6----qvssrP|y|;to-J-trP|y|O\bUrvtu5tnqvr{ar\x07r9-Sv{ny]|vv|{6H--0r{qvs--<<-JJJJJJJJJJJ--<<-JJJ-纯色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6----qvssrP|y|;to-J-p|{n{P|y|H--0r{qvs--<<-JJJJJJJJJJJ--0v{pyqr-Iy|tqr}uoslsntzr{K--0v{pyqr-Izn}lsntzr{K--0v{pyqr-Ip|y|lsntzr{K--0v{pyqr-Iny}unzn}lsntzr{K--0v{pyqr-Iny}unrlsntzr{K--0v{pyqr-I}rpynzn}lsntzr{K--0v{pyqr-I{|znylsntzr{lortv{K--_rsyrprqYvtu-rsyrprqYvtu-J-_rsyrprqYvtu5-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-6-6H--<<-nppzynv|{-5onxrq-v{qvrp-yvtuv{t-|{y\b6--0vsqrs-b`RlYVTUaZN]----rpA-yvtuZn}ar\x07ryJ-r\x07r?Q5-yvtuZn}9-b?-6H----rsyrprqYvtu;v{qvrpQvssr-8J-yvtuZn}ar\x07rya|Yv{rn5-yvtuZn}ar\x07ry-6;to-7-yvtuZn}V{r{v\bH--0ryr----rsyrprqYvtu;v{qvrpQvssr-8J-rp@5->;=-6H--0r{qvs--<<-z|qynv|{--0v{pyqr-In|zn}lsntzr{K--rsyrprqYvtu;v{qvrpQvssr-7J-qvssrP|y|;toH--rp@-|t|v{tYvtu-J-rsyrprqYvtu;v{qvrpQvssrH--0v{pyqr-Ir{zn}lsntzr{K--qvssrP|y|;n-J-qvssrP|y|;n-7-sy||\\}npv\b-7-ovtu{rH--0vs-qrsv{rq5b`Rl\\]N^bR6----qvssrP|y|;n-J->;=H--0r{qvs--tylSntP|y|-J-rpA5-|t|v{tYvtu9-qvssrP|y|;n-6H--<<-JJJ-颜色增益调整-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNQWb`aZR[a6----rp@-uP|y|-J-to?u5tylSntP|y|;to6H----uP|y|;\b-8J-p|y|`nnv|{H----uP|y|; -8J-p|y|Ovtu{rH----tylSntP|y|;to-J-zn\x075u?to5uP|y|69-=;=6H--0r{qvs--<<-JJJJJJJJJJJJJJJJJJ--ZNV[lZ\\QRYlP\\Y\\_--<<色调映射-色彩空间转换--0v{pyqr-I|{rzn}}v{tlsntzr{K--0v{pyqr-Ir{p|qv{tlsntzr{K--0v{pyqr-Is|tlsntzr{K--0v{pyqr-I}rzyv}yvrqlny}unlsntzr{K--0v{pyqr-Iqvurv{tlsntzr{K--<<-JJJ-全景图-JJJ--rp@-}n{|=a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|=;znv\x07h@j;\x07\b 6H--}n{|=a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|=a|crr\x079-}n{|=; ||z6H--}n{|=a|crr\x07-J-}n{|=a|crr\x07-7-zn@5}n{|=;znv\x076H--rp@-}n{|>a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|>;znv\x07h@j;\x07\b 6H--}n{|>a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|>a|crr\x079-}n{|>; ||z6H--}n{|>a|crr\x07-J-}n{|>a|crr\x07-7-zn@5}n{|>;znv\x076H--rpA-}n{|=P|y|-J-r\x07rPor5}n{|=;zn}9-rp@5SYV]lPbORlZN]-7-}n{|=a|crr\x07;\x079-}n{|=a|crr\x07;\b 66H--rpA-}n{|>P|y|-J-r\x07rPor5}n{|>;zn}9-rp@5SYV]lPbORlZN]-7-}n{|>a|crr\x07;\x079-}n{|>a|crr\x07;\b 66H--<<-JJJ-全景图瓦片细化-JJJ--0vs-qrsv{rq5b`Rl_RSV[RQl`P_RR[6----rpA-rsv{rqPnzrn]|v|{-J-rsv{rq`prr{;znv\x07V{rr-7-Sv{ny]|vv|{H----sy|n-rsv{rqg||z-J-zv\x075}n{|=; ||z9-}n{|>; ||z9-rsv{rq`prr{;}n{|6H----rp@-rsv{rqPnzrncrr\x07-J-{|znyv r5rsv{rqPnzrn]|v|{;\x07\b 6H----rsv{rqPnzrncrr\x07-J- ||zcrp|5rp@5=;=9-=;=9->;=69-rsv{rqPnzrncrr\x079-rsv{rqg||z6H----rpA-rsv{rq]|v|{-J-rsv{rq`prr{;}|wrpv|{Znv\x07-7-rpA5rsv{rqPnzrncrr\x079->;=6H----rsv{rq]|v|{-J-rsv{rq]|v|{-<-rsv{rq]|v|{;H----rpA-rsv{rqP|y|-J-r\x07r?Q5rsv{rq`prr{;zn}9-5rsv{rq]|v|{;\x07\b-8->;=6-<-?;=6H----rsv{rqP|y|;n-J-rsv{rqP|y|;n-7-rsv{rq`prr{;|}npv\bH----sy|n-rsv{rq\\rsy|]|tr-J-r}5no5rsv{rq]|v|{;\x0769->;=6-7-r}5no5rsv{rq]|v|{;\b69->;=6-7-r}5rsv{rqPnzrn]|v|{; 9-=;=6H----rsv{rqP|y|-J-zv\x075a_N[`]N_R[alP\\Y\\_9-rsv{rqP|y|9-rsv{rq\\rsy|]|tr6H----rpA-rsv{rq]n{|=P|y|-J-zv\x075rsv{rqP|y|9-a_N[`]N_R[alP\\Y\\_9-rsv{rq`prr{;}n{|6H----rpA-rsv{rq]n{|>P|y|-J-zv\x075rsv{rqP|y|9-a_N[`]N_R[alP\\Y\\_9->;=-:-rsv{rq`prr{;}n{|6H----}n{|=P|y|-J-zv\x075}n{|=P|y|9-rpA5rsv{rq]n{|=P|y|;to9-}n{|=P|y|;n69-rsv{rq]n{|=P|y|;n6H----}n{|>P|y|-J-zv\x075}n{|>P|y|9-rpA5rsv{rq]n{|>P|y|;to9-}n{|>P|y|;n69-rsv{rq]n{|>P|y|;n6H--0r{qvs--<<-JJJ-全景图滤镜-JJJ--0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6----}n{|=P|y|;to-J-r\x07rpSvyr5}n{|=P|y|;to9-}n{|=;zn}Uv|tnz6H----}n{|>P|y|;to-J-r\x07rpSvyr5}n{|>P|y|;to9-}n{|>;zn}Uv|tnz6H--0r{qvs--<<-JJJ-运动过程全景图通过深度剔除-JJJ--0vs-qrsv{rq5b`Rl]N[\\lQR]aU6----sy|n-}n{|=crr\x07Qr}u-J-pynz}5yr{tu5Sv{ny]|vv|{;\x07\b -:-}n{|=;znv\x07h@j;\x07\b 69-=;=9-}n{|=Qr}u;zn\x07Qr}u6H----sy|n-}n{|>crr\x07Qr}u-J-pynz}5yr{tu5Sv{ny]|vv|{;\x07\b -:-}n{|>;znv\x07h@j;\x07\b 69-=;=9-}n{|>Qr}u;zn\x07Qr}u6H----sy|n-}n{|=Qr}uZn}Qr}u-J-{}npx_TONa|Qr}u5r\x07rPor5}n{|=Qr}u;zn}9-}n{|=a|crr\x0766-7-}n{|=Qr}u;zn\x07Qr}uH----sy|n-}n{|>Qr}uZn}Qr}u-J-{}npx_TONa|Qr}u5r\x07rPor5}n{|>Qr}u;zn}9-}n{|>a|crr\x0766-7-}n{|>Qr}u;zn\x07Qr}uH----sy|n-}n{|=Qr}uQryn-J-no5}n{|=Qr}uZn}Qr}u-:-}n{|=crr\x07Qr}u6H----sy|n-}n{|>Qr}uQryn-J-no5}n{|>Qr}uZn}Qr}u-:-}n{|>crr\x07Qr}u6H----sy|n-zn\x07]n{|=Qr}uQryn-J-=;=@-7-}n{|=crr\x07Qr}uH----sy|n-zn\x07]n{|>Qr}uQryn-J-=;=@-7-}n{|>crr\x07Qr}uH----}n{|=P|y|-J-zv\x075}n{|=P|y|9-zv\x075}n{|=P|y|9-tylSntP|y|9-pynz}5}|tr-7->=;=9-=;=9->;=669-r}5zn\x07]n{|=Qr}uQryn9-}n{|=Qr}uQryn66H----}n{|>P|y|-J-zv\x075}n{|>P|y|9-zv\x075}n{|>P|y|9-tylSntP|y|9-pynz}55>;=-:-}|tr6-7->=;=9-=;=9->;=669-r}5zn\x07]n{|>Qr}uQryn9-}n{|>Qr}uQryn66H--0r{qvs--<<-JJJ-全景图颜色混合-JJJ--rpA-}n{|P|y|H--0vs-qrsv{rq5b`RlOYNPXla_N[`VaV\\[6----sy|n-oynpx]|tr-J-np|5:?;=-7-}|tr-8->;=6H----}n{|P|y|-J-zv\x075}n{|=P|y|9-OYNPXlP\\Y\\_9-zv{5>;=9-oynpx]|tr66H----}n{|P|y|-J-zv\x075}n{|P|y|9-}n{|>P|y|9-zn\x075=;=9-oynpx]|tr-:-]V-8->;=66H--0ryvs-qrsv{rq5b`Rl`]_RNQla_N[`VaV\\[6----rp?-prr{Pr{rP||q-J-r|yv|{-7-}v\x07ry_nv|-<-?;=H----sy|n-n{vv|{_nqv-J-qvn{pr5rp?5=;=9-=;=69-prr{Pr{rP||q6-7->;?H----sy|n-n{vv|{]|tr-J-qvn{pr5tylSntP||q;\x07\b9-prr{Pr{rP||q6-<-n{vv|{_nqvH----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-z||ur}5=;=9-=;?9-}|tr-:-n{vv|{]|tr66H--0ryr----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-}|tr6H--0r{qvs--tylSntP|y|-J-zv\x075}n{|P|y|9-tylSntP|y|9-z|qryNy}un6H--ZNV[lR[Q\f"),Ot=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("0qrsv{r-]U\\[T0qrsv{r-ZN_Xl`aR]->;=0qrsv{r-_\\\\SlZN_X->;=nvor-sy|n-lsrnrlvqlznxHn\bv{t-sy|n-_||sZnxHn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-rp@-cvr]|vv|{H{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{H<<u调整{vs|z-sy|n-p|y|`nnv|{H{vs|z-sy|n-p|y|Ovtu{rH0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH--0vsqrs-b`RlaN[TR[a----n\bv{t-rp@-an{tr{H----n\bv{t-rp@-Ovn{tr{H--0r{qvs0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-Il}nlrr\x07K0v{pyqr-I?l}nlrr\x07K0v{pyqr-Iqv}ynprzr{zn}l}nlrr\x07K0v{pyqr-Ir{zn}l}nlrr\x07K0v{pyqr-Ip|y|l}nlrr\x07K0v{pyqr-Is|tl}nlrr\x07K0v{pyqr-Iz|}untrl}nlrr\x07K0v{pyqr-Ixv{{v{tl}nlrr\x07K0v{pyqr-Iunq|zn}l}nlrr\x07K0v{pyqr-Iy|tqr}uosl}nlrr\x07K0v{pyqr-Ipyv}}v{tl}yn{rl}nlrr\x07KZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--0v{pyqr-Ilrr\x07K--0v{pyqr-I?lrr\x07K--0v{pyqr-Ip|y|lrr\x07K--0v{pyqr-Iortv{{|znylrr\x07K--0v{pyqr-Iz|}u{|znylrr\x07K--0v{pyqr-Ixv{onrlrr\x07K--0v{pyqr-Ixv{{|znylrr\x07K--0v{pyqr-Iqrsny{|znylrr\x07K--0vs{qrs-SYNal`UNQRQ-<<-[|zny-p|z}rq-vu-qrvnvr-ur{-SYNal`UNQRQ----[|zny-J-{|znyv r5-n{s|zrq[|zny-6H----0vsqrs-b`RlaN[TR[a------an{tr{-J-{|znyv r5-n{s|zrqan{tr{-6H------Ovn{tr{-J-{|znyv r5-p|5-[|zny9-an{tr{-6-7-n{tr{;-6H----0r{qvs--0r{qvs--0v{pyqr-Iortv{lrr\x07K--0v{pyqr-Iz|}untrlrr\x07K--0v{pyqr-Ixv{{v{tlrr\x07K--0v{pyqr-Iqv}ynprzr{zn}lrr\x07K--0v{pyqr-I}|wrplrr\x07K--0v{pyqr-Iy|tqr}uoslrr\x07K--0v{pyqr-Ipyv}}v{tl}yn{rlrr\x07K--cvr]|vv|{-J-:-z]|vv|{;\x07\b H--Sv{ny]|vv|{-J-rpA5n{s|zrq9->;=6H--0vsqrs-b`RlV[`aN[PV[T----Sv{ny]|vv|{-J-v{n{prZnv\x07-7-Sv{ny]|vv|{H--0r{qvs--Sv{ny]|vv|{-J-z|qryZnv\x07-7-Sv{ny]|vv|{H--zn@-pnzrn_|nv|{Znv\x07-J-zn@5vrZnv\x07h=jh=j9-vrZnv\x07h>jh=j9-vrZnv\x07h?jh=j9-vrZnv\x07h=jh>j9-vrZnv\x07h>jh>j9-vrZnv\x07h?jh>j9-vrZnv\x07h=jh?j9-vrZnv\x07h>jh?j9-vrZnv\x07h?jh?j6H--PnzrnQvrpv|{-J-{|znyv r5pnzrn_|nv|{Znv\x07-7-rp@5=;=9-=;=9-:>;=66H--_||sZnx-J-=;=H--0vs-qrsv{rq5b`RlcR_aRelZN_X6----_||sZnx-J-z||ur}5_\\\\SlZN_X-:-ZN_Xl`aR]9-_\\\\SlZN_X9-lsrnrlvqlznx6H--0r{qvs--0v{pyqr-I|yq}|lrr\x07K--0v{pyqr-Ir{zn}lrr\x07K--0v{pyqr-Iunq|zn}lrr\x07K--0v{pyqr-Is|tlrr\x07K--ZNV[lR[Q\f"),kt=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("0qrsv{r-]U\\[T0qrsv{r-OYNPXlP\\Y\\_-rpA5=;=EC9-=;>=C9-=;>AF9->;=60qrsv{r-a_N[`]N_R[alP\\Y\\_-rpA5=;=9-=;=9-=;=9-=;=60qrsv{r-SYV]lPbORlZN]-:>;=p-]n{|-\n--nz}yrPor-zn}H--sy|n-zn}`v rH--rpA-zn}Uv|tnzH-<<-}rnx-zrn{-zv{-zn\x07--znA-znv\x07H--sy|n- ||zH\fH{vs|z-]n{|-}n{|=H{vs|z-]n{|-}n{|>H0vs-qrsv{rq5b`Rl]N[\\lQR]aU6--p-]n{|Qr}u-\n----nz}yrPor-zn}H----sy|n-zn\x07Qr}uH--\fH--{vs|z-]n{|Qr}u-}n{|=Qr}uH--{vs|z-]n{|Qr}u-}n{|>Qr}uH0r{qvs0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6--p-Svyr]nnz-\n----sy|n-nnv|{`nnv|{OvnH----sy|n-p|{nP|{nOvnH----nz}yr?Q-uvtuyvtu`unq|YZn}H----sy|n-p|y|arz}rnrOvnH----sy|n-p|y|av{OvnH--\fH--{vs|z-Svyr]nnz-}n{|SvyrH0r{qvs0vs-qrsv{rq5b`Rl_RSV[RQl`P_RR[6--p-_rsv{rq`prr{-\n----nz}yr?Q-zn}H----znA-}|wrpv|{Znv\x07H----znA-znv\x07V{rrH----sy|n-|}npv\bH----sy|n-}n{|H--\fH--{vs|z-_rsv{rq`prr{-rsv{rq`prr{H0r{qvs{vs|z-sy|n-sy||V{qr\x07H{vs|z-sy|n-z|qryNy}unH{vs|z-sy|n-}|trH0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6--{vs|z-rp@-p|{n{P|y|H0r{qvs0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6--{vs|z-nz}yr?Q-tnqvr{ar\x07rH0r{qvsp-Pyv}}r-\n--znA-znv\x07V{rrH--sy|n-sy||V{qr\x07H\fH0vs-[bZlPYV]]R_`-K-=--{vs|z-Pyv}}r-pyv}}rh[bZlPYV]]R_`jH0r{qvsn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-sy|n-_||sZnxH{vs|z-sy|n-u|{Sy||V{qr\x07H{vs|z-rp?-r|yv|{H{vs|z-sy|n-}v\x07ry_nv|H{vs|z-rp@-qvssrH{vs|z-sy|n-p|y|Ny}unH{vs|z-rp@-rzvvrH{vs|z-rp@-}rpynH{vs|z-sy|n-uv{v{rH{vs|z-sy|n-|}npv\bH{vs|z-sy|n-ovtu{rH{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{H<<u调整{vs|z-sy|n-p|y|`nnv|{H{vs|z-sy|n-p|y|Ovtu{rH0vs{qrs-SYNal`UNQRQ--0vsqrs-b`RlaN[TR[a----n\bv{t-rp@-an{tr{H----n\bv{t-rp@-Ovn{tr{H--0r{qvs0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-I}npxv{tK0v{pyqr-Iqvurv{tl}nlsntzr{K0v{pyqr-Ip|y|l}nlsntzr{K0v{pyqr-Il}nlsntzr{K0v{pyqr-I?l}nlsntzr{K0v{pyqr-Izn}l}nlsntzr{K0v{pyqr-Iny}unzn}l}nlsntzr{K0v{pyqr-In|zn}l}nlsntzr{K0v{pyqr-Iyvtuzn}l}nlsntzr{K0v{pyqr-Irzvvrzn}l}nlsntzr{K0v{pyqr-IoqsK0v{pyqr-Iporllrsyrpv|{lsntzr{K0v{pyqr-Ir{zn}lp|zz|{l}nlsntzr{K0v{pyqr-Ir{zn}l}nlsntzr{K0v{pyqr-Is|tl}nlsntzr{K0v{pyqr-Iyvtul}nlortv{K0v{pyqr-Iyvtul}u|{tl}nlsntzr{K0v{pyqr-Iunq|zn}l}nlsntzr{K0v{pyqr-Ioz}zn}l}nlsntzr{K0v{pyqr-I{|znyzn}l}nlsntzr{K0v{pyqr-I}rpynzn}l}nlsntzr{K0v{pyqr-Iy|tqr}uosl}nlsntzr{K0v{pyqr-Ipyv}}v{tl}yn{rl}nlsntzr{Krp@- ||zcrp|5rp@-qvrpv|{9-rp@-rp|9-sy|n- ||z6-\n--sy|n-urn-J-q|5qvrpv|{9-rp|6H--rp@-q-J-qvrpv|{-7-urnH--rp@-}-J-rp|-:-qH--rp@-\0-J-}-<- ||zH--r{-{|znyv r5q-8-\x006H\frp@-to?u5rp@-p6-\n--rpA-X-J-rpA5=;=9-:>;=-<-@;=9-?;=-<-@;=9-:>;=6H--rpA-}-J-zv\x075rpA5p;ot9-X; 69-rpA5p;to9-X;\x07\b69-r}5p;o9-p;t66H--rpA-\0-J-zv\x075rpA5};\x07\b9-p;69-rpA5p;9-};\b \x0769-r}5};\x079-p;66H--sy|n-q-J-\0;\x07-:-zv{5\0;9-\0;\b6H--sy|n-r-J->;=r:>=H--r{-rp@5no5\0; -8-5\0;-:-\0;\b6-<-5C;=-7-q-8-r669-q-<-5\0;\x07-8-r69-\0;\x076H\frp@-u?to5rp@-p6-\n--rpA-X-J-rpA5>;=9-?;=-<-@;=9->;=-<-@;=9-@;=6H--rp@-}-J-no5snp5p;\x07\x07\x07-8-X;\x07\b 6-7-C;=-:-X;6H--r{-p; -7-zv\x075X;\x07\x07\x079-pynz}5}-:-X;\x07\x07\x079-=;=9->;=69-p;\b6H\frp@-trP|y|O\bUrvtu5nz}yr?Q-tnqvr{ar\x07r9-rpA-Sv{ny]|vv|{6-\n--sy|n--J-5Sv{ny]|vv|{;\b-:-z|qryO|{qv{tZv{;\b6-<-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6H--r{-r\x07r?Q5tnqvr{ar\x07r9-rp?59-=;B66;toH\f0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6--rp@-svyrUvtuyvtu`unq|5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-u-J-to?u5p|y|6H----u; -J-r\x07r?Q5}n{|Svyr;uvtuyvtu`unq|YZn}9-rp?5u; 9-=;=66;H----p|y|-J-u?to5u6H----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|arz}rnr5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-rz}rnrOvn-J-pynz}5}n{|Svyr;p|y|arz}rnrOvn9-:>==;=9->==;=6H----sy|n-`pnyr-J->;=-8-rz}rnrOvn-<-@==;=H----sy|n-o`pnyr-J->;=-:-rz}rnrOvn-<-@==;=H----p|y|;-J-p|y|;-7-`pnyrH----p|y|;o-J-p|y|;o-7-o`pnyrH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|av{5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-v{Ovn-J-pynz}5}n{|Svyr;p|y|av{Ovn9-:>==;=9->==;=6H----rp@-pnyr-J-rp@5>;=6H----vs-5v{Ovn-K-=;=6-\n------pnyr;t-J->;=-:-v{Ovn-<-?==;=H----\f-ryr-\n------pnyr;-J->;=-8-v{Ovn-7-=;B-<-?==;=H------pnyr;t-J->;=-:-v{Ovn-7-=;B-<-?==;=H------pnyr;o-J->;=-8-v{Ovn-7-=;B-<-?==;=H----\f----p|y|-7J-pnyrH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-to-J-p|y|H----to-J-svyrP|y|arz}rnr5to9-uv|tnz6H----to-J-svyrP|y|av{5to9-uv|tnz6H----r{-toH--\f--rp@-svyrP|{n5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-zrn{cny-J-uv|tnzh>jH----sy|n-zv{cny-J-uv|tnzh?jH----sy|n-zn\x07cny-J-uv|tnzh@jH----sy|n-p|{nOvn-J-pynz}5}n{|Svyr;p|{nP|{nOvn9-:>;=9->;=6H----sy|n-rqOvn-J->;=-7-p|{nOvn-8->;=H----sy|n-ovn`\0nrunys-J-p|{nOvn-7-p|{nOvn-<-?;=H----sy|n-y|}ry|-J-5rqOvn-:->;=6-<-zrn{cnyH----sy|n-y|}ruvtu-J-5>;=-:-rqOvn6-<-5>;=-:-zrn{cny6H----sy|n-ovn-J-5rqOvn-:-zrn{cny6-<-5>;=-:-zrn{cny6H----sy|n-pnyrlsnp|-J->;=-<-5zn\x07cny-:-zv{cny6H----rp@-ny-J-p|y|H----sy|n-zn\x07lny-J-zn\x075zn\x075p|y|;9-p|y|;t69-p|y|;o6H----vs-5p|{nOvn-I-=;=6-\n------ny-J-ny-7-5>;=-:-ovn`\0nrunys6-8-zn\x07lny-7-ovn`\0nrunysH----\f----rp@-rzn}-J-rp@5------5ny;-I-zrn{cny6-L-y|}ry|-7-ny;-8->;=-G-y|}ruvtu-7-ny;-8-ovn9------5ny;t-I-zrn{cny6-L-y|}ry|-7-ny;t-8->;=-G-y|}ruvtu-7-ny;t-8-ovn9------5ny;o-I-zrn{cny6-L-y|}ry|-7-ny;o-8->;=-G-y|}ruvtu-7-ny;o-8-ovn----6H----rp@-|`pnyr-J-rzn}-7-pnyrlsnp|H----p|y|-J-5ny-:-zrn{cny6-7-|`pnyr-8-zrn{cnyH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyr`nnv|{5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-nnv|{Ovn-J-pynz}5}n{|Svyr;nnv|{`nnv|{Ovn9-:>;=9->;=6H----sy|n-n`pnyr-J->;=-8-nnv|{OvnH----sy|n-yzv{n{pr-J-=;?FF-7-p|y|;-8-=;BED-7-p|y|;t-8-=;>>A-7-p|y|;oH----p|y|-J-5p|y|-:-yzv{n{pr6-7-n`pnyr-8-yzv{n{prH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-r\x07rpSvyr5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-to-J-p|y|H----to-J-svyrUvtuyvtu`unq|5to9-uv|tnz6H----to-J-svyrP|y|5to9-uv|tnz6H----to-J-svyrP|{n5to9-uv|tnz6H----to-J-svyr`nnv|{5to9-uv|tnz6H----r{-toH--\f0r{qvsZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--<<-JJJ-楼层-JJJ--o||y-vPr{Sy||-J-u|{Sy||V{qr\x07-I-:=;=>-\v\v-no5sy||V{qr\x07-:-u|{Sy||V{qr\x076-I-=;FFH--sy|n-sy||\\}npv\b-J->;=H--vs-5.vPr{Sy||6-\n----0vs-qrsv{rq5b`RlSY\\\\_l`afYRlcV`VOVYVaf6------qvpnqH----0r{qvs----sy||\\}npv\b-J-pynz}5=;?-7-zv{55>;=-8-PnzrnQvrpv|{;\b69->;=69-=;=9->;=6H--\f--<<-JJJJJJJJJJJ--<<-JJJ-顶部裁切-JJJ--sy|n-||sP]|tr-J-}|5pynz}5:PnzrnQvrpv|{;\b9-=;=9->;=69-@;=6H--vs-5----_||sZnx-K-=;==>-33----Sv{ny]|vv|{;\b-K-z|qryO|{qv{tZn\x07;\b-:-||sP]|tr-7-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6--6-\n----qvpnqH--\f--<<-JJJJJJJJJJJJJJ--<<-JJJ-前置裁切计算-JJJ--0vs-[bZlPYV]]R_`-K-=----o||y-pyv}}rqH----rpA-pyv}}r]|vv|{H----0}ntzn-{|yyly||}ln----s|-5-v{-v-J-=H-v-I-[bZlPYV]]R_`H-v-88-6-\n------pyv}}r]|vv|{-J-pyv}}rh-v-j;znv\x07V{rr-7-Sv{ny]|vv|{H------pyv}}rq-J-5pyv}}rh-v-j;sy||V{qr\x07-I-=;=-\v\v-no5sy||V{qr\x07-:-pyv}}rh-v-j;sy||V{qr\x076-I->;=6H------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\x07-K-:=;B-33-pyv}}r]|vv|{;\x07-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\b-K-:=;B-33-pyv}}r]|vv|{;\b-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{; -K-:=;B-33-pyv}}r]|vv|{; -I-=;BH------vs-5pyv}}rq6-\n--------qvpnqH------\f----\f----0}ntzn-{|yyly||}lr{q--0r{qvs--<<-JJJJJJJJJJJJJJJJ--0v{pyqr-Ipyv}}v{tl}yn{rlsntzr{K--rpA-qvssrP|y|-J-rpA5-qvssr9-p|y|Ny}un-7-|}npv\b-6H--<<-JJJ-高度色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6----qvssrP|y|;to-J-trP|y|O\bUrvtu5tnqvr{ar\x07r9-Sv{ny]|vv|{6H--0r{qvs--<<-JJJJJJJJJJJ--<<-JJJ-纯色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6----qvssrP|y|;to-J-p|{n{P|y|H--0r{qvs--<<-JJJJJJJJJJJ--_rsyrprqYvtu-rsyrprqYvtu-J-_rsyrprqYvtu5-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-6-6H--rp@-|nyRzvvr_nqvn{pr-J-rzvvrH--0v{pyqr-Iy|tqr}uoslsntzr{K--0v{pyqr-Izn}lsntzr{K--0v{pyqr-Ip|y|lsntzr{K--0v{pyqr-Iny}unzn}lsntzr{K--0v{pyqr-Iny}unrlsntzr{K--0v{pyqr-I}rpynzn}lsntzr{K--0v{pyqr-I{|znylsntzr{lortv{K--0v{pyqr-I{|znylsntzr{lzn}K--0v{pyqr-Irzvvrzn}lsntzr{K--<<-nppzynv|{--0v{pyqr-Iyvtul}u|{tlsntzr{K--0v{pyqr-Iyvtulsntzr{lortv{K--0v{pyqr-Iyvtulsntzr{lzn}K--0v{pyqr-Iyvtulsntzr{lr{qK--<<-z|qynv|{--0v{pyqr-In|zn}lsntzr{K--rp@-|t|v{tYvtu-J-rsyrprqYvtu;qvrpQvssr-8-rsyrprqYvtu;v{qvrpQvssr-8-rsyrprqYvtu;qvrp`}rpyn-8-rsyrprqYvtu;v{qvrp`}rpyn-8-|nyRzvvr_nqvn{prH--0v{pyqr-Ir{zn}lsntzr{K--qvssrP|y|;n-J-qvssrP|y|;n-7-sy||\\}npv\b-7-ovtu{rH--0vs-qrsv{rq5b`Rl\\]N^bR6----qvssrP|y|;n-J->;=H--0r{qvs--tylSntP|y|-J-rpA5|t|v{tYvtu9-qvssrP|y|;n6H--<<-JJJ-颜色增益调整-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNQWb`aZR[a6----rp@-uP|y|-J-to?u5tylSntP|y|;to6H----uP|y|;\b-8J-p|y|`nnv|{H----uP|y|; -8J-p|y|Ovtu{rH----tylSntP|y|;to-J-zn\x075u?to5uP|y|69-=;=6H--0r{qvs--<<-JJJJJJJJJJJJJJJJJJ--ZNV[lZ\\QRYlP\\Y\\_--<<色调映射-色彩空间转换--0v{pyqr-I|{rzn}}v{tlsntzr{K--0v{pyqr-Ir{p|qv{tlsntzr{K--0v{pyqr-Is|tlsntzr{K--0v{pyqr-I}rzyv}yvrqlny}unlsntzr{K--0v{pyqr-Iqvurv{tlsntzr{K--<<-JJJ-全景图-JJJ--rp@-}n{|=a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|=;znv\x07h@j;\x07\b 6H--}n{|=a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|=a|crr\x079-}n{|=; ||z6H--}n{|=a|crr\x07-J-}n{|=a|crr\x07-7-zn@5}n{|=;znv\x076H--rp@-}n{|>a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|>;znv\x07h@j;\x07\b 6H--}n{|>a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|>a|crr\x079-}n{|>; ||z6H--}n{|>a|crr\x07-J-}n{|>a|crr\x07-7-zn@5}n{|>;znv\x076H--rpA-}n{|=P|y|-J-r\x07rPor5}n{|=;zn}9-rp@5SYV]lPbORlZN]-7-}n{|=a|crr\x07;\x079-}n{|=a|crr\x07;\b 66H--rpA-}n{|>P|y|-J-r\x07rPor5}n{|>;zn}9-rp@5SYV]lPbORlZN]-7-}n{|>a|crr\x07;\x079-}n{|>a|crr\x07;\b 66H--<<-JJJ-全景图瓦片细化-JJJ--0vs-qrsv{rq5b`Rl_RSV[RQl`P_RR[6----rpA-rsv{rqPnzrn]|v|{-J-rsv{rq`prr{;znv\x07V{rr-7-Sv{ny]|vv|{H----sy|n-rsv{rqg||z-J-zv\x075}n{|=; ||z9-}n{|>; ||z9-rsv{rq`prr{;}n{|6H----rp@-rsv{rqPnzrncrr\x07-J-{|znyv r5rsv{rqPnzrn]|v|{;\x07\b 6H----rsv{rqPnzrncrr\x07-J- ||zcrp|5rp@5=;=9-=;=9->;=69-rsv{rqPnzrncrr\x079-rsv{rqg||z6H----rpA-rsv{rq]|v|{-J-rsv{rq`prr{;}|wrpv|{Znv\x07-7-rpA5rsv{rqPnzrncrr\x079->;=6H----rsv{rq]|v|{-J-rsv{rq]|v|{-<-rsv{rq]|v|{;H----rpA-rsv{rqP|y|-J-r\x07r?Q5rsv{rq`prr{;zn}9-5rsv{rq]|v|{;\x07\b-8->;=6-<-?;=6H----rsv{rqP|y|;n-J-rsv{rqP|y|;n-7-rsv{rq`prr{;|}npv\bH----sy|n-rsv{rq\\rsy|]|tr-J-r}5no5rsv{rq]|v|{;\x0769->;=6-7-r}5no5rsv{rq]|v|{;\b69->;=6-7-r}5rsv{rqPnzrn]|v|{; 9-=;=6H----rsv{rqP|y|-J-zv\x075a_N[`]N_R[alP\\Y\\_9-rsv{rqP|y|9-rsv{rq\\rsy|]|tr6H----rpA-rsv{rq]n{|=P|y|-J-zv\x075rsv{rqP|y|9-a_N[`]N_R[alP\\Y\\_9-rsv{rq`prr{;}n{|6H----rpA-rsv{rq]n{|>P|y|-J-zv\x075rsv{rqP|y|9-a_N[`]N_R[alP\\Y\\_9->;=-:-rsv{rq`prr{;}n{|6H----}n{|=P|y|-J-zv\x075}n{|=P|y|9-rpA5rsv{rq]n{|=P|y|;to9-}n{|=P|y|;n69-rsv{rq]n{|=P|y|;n6H----}n{|>P|y|-J-zv\x075}n{|>P|y|9-rpA5rsv{rq]n{|>P|y|;to9-}n{|>P|y|;n69-rsv{rq]n{|>P|y|;n6H--0r{qvs--<<-JJJ-运动过程全景图通过深度剔除-JJJ--0vs-qrsv{rq5b`Rl]N[\\lQR]aU6----sy|n-}n{|=crr\x07Qr}u-J-pynz}5yr{tu5Sv{ny]|vv|{;\x07\b -:-}n{|=;znv\x07h@j;\x07\b 69-=;=9-}n{|=Qr}u;zn\x07Qr}u6H----sy|n-}n{|>crr\x07Qr}u-J-pynz}5yr{tu5Sv{ny]|vv|{;\x07\b -:-}n{|>;znv\x07h@j;\x07\b 69-=;=9-}n{|>Qr}u;zn\x07Qr}u6H----sy|n-}n{|=Qr}uZn}Qr}u-J-{}npx_TONa|Qr}u5r\x07rPor5}n{|=Qr}u;zn}9-}n{|=a|crr\x0766-7-}n{|=Qr}u;zn\x07Qr}uH----sy|n-}n{|>Qr}uZn}Qr}u-J-{}npx_TONa|Qr}u5r\x07rPor5}n{|>Qr}u;zn}9-}n{|>a|crr\x0766-7-}n{|>Qr}u;zn\x07Qr}uH----sy|n-}n{|=Qr}uQryn-J-no5}n{|=Qr}uZn}Qr}u-:-}n{|=crr\x07Qr}u6H----sy|n-}n{|>Qr}uQryn-J-no5}n{|>Qr}uZn}Qr}u-:-}n{|>crr\x07Qr}u6H----sy|n-zn\x07]n{|=Qr}uQryn-J-=;=@-7-}n{|=crr\x07Qr}uH----sy|n-zn\x07]n{|>Qr}uQryn-J-=;=@-7-}n{|>crr\x07Qr}uH----}n{|=P|y|-J-zv\x075}n{|=P|y|9-zv\x075}n{|=P|y|9-tylSntP|y|9-pynz}5}|tr-7->=;=9-=;=9->;=669-r}5zn\x07]n{|=Qr}uQryn9-}n{|=Qr}uQryn66H----}n{|>P|y|-J-zv\x075}n{|>P|y|9-zv\x075}n{|>P|y|9-tylSntP|y|9-pynz}55>;=-:-}|tr6-7->=;=9-=;=9->;=669-r}5zn\x07]n{|>Qr}uQryn9-}n{|>Qr}uQryn66H--0r{qvs--<<-JJJ-全景图滤镜-JJJ--0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6----}n{|=P|y|;to-J-r\x07rpSvyr5}n{|=P|y|;to9-}n{|=;zn}Uv|tnz6H----}n{|>P|y|;to-J-r\x07rpSvyr5}n{|>P|y|;to9-}n{|>;zn}Uv|tnz6H--0r{qvs--<<-JJJ-全景图颜色混合-JJJ--rpA-}n{|P|y|H--0vs-qrsv{rq5b`RlOYNPXla_N[`VaV\\[6----sy|n-oynpx]|tr-J-np|5:?;=-7-}|tr-8->;=6H----}n{|P|y|-J-zv\x075}n{|=P|y|9-OYNPXlP\\Y\\_9-zv{5>;=9-oynpx]|tr66H----}n{|P|y|-J-zv\x075}n{|P|y|9-}n{|>P|y|9-zn\x075=;=9-oynpx]|tr-:-]V-8->;=66H--0ryvs-qrsv{rq5b`Rl`]_RNQla_N[`VaV\\[6----rp?-prr{Pr{rP||q-J-r|yv|{-7-}v\x07ry_nv|-<-?;=H----sy|n-n{vv|{_nqv-J-qvn{pr5rp?5=;=9-=;=69-prr{Pr{rP||q6-7->;?H----sy|n-n{vv|{]|tr-J-qvn{pr5tylSntP||q;\x07\b9-prr{Pr{rP||q6-<-n{vv|{_nqvH----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-z||ur}5=;=9-=;?9-}|tr-:-n{vv|{]|tr66H--0ryr----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-}|tr6H--0r{qvs--tylSntP|y|-J-zv\x075}n{|P|y|9-tylSntP|y|9-z|qryNy}un6H--ZNV[lR[Q\f"),At=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("0qrsv{r-`aN[QN_Q0qrsv{r-ZN_Xl`aR]->;=0qrsv{r-_\\\\SlZN_X->;=nvor-sy|n-lsrnrlvqlznxHn\bv{t-sy|n-_||sZnxHn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-rp@-cvr]|vv|{H{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{H<<u调整{vs|z-sy|n-p|y|`nnv|{H{vs|z-sy|n-p|y|Ovtu{rH0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH--0vsqrs-b`RlaN[TR[a----n\bv{t-rp@-an{tr{H----n\bv{t-rp@-Ovn{tr{H--0r{qvs0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-Il}nlrr\x07K0v{pyqr-I?l}nlrr\x07K0v{pyqr-Iqv}ynprzr{zn}l}nlrr\x07K0v{pyqr-Ir{zn}l}nlrr\x07K0v{pyqr-Ip|y|l}nlrr\x07K0v{pyqr-Is|tl}nlrr\x07K0v{pyqr-Iz|}untrl}nlrr\x07K0v{pyqr-Ixv{{v{tl}nlrr\x07K0v{pyqr-Iunq|zn}l}nlrr\x07K0v{pyqr-Iy|tqr}uosl}nlrr\x07K0v{pyqr-Ipyv}}v{tl}yn{rl}nlrr\x07KZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--0v{pyqr-Ilrr\x07K--0v{pyqr-I?lrr\x07K--0v{pyqr-Ip|y|lrr\x07K--0v{pyqr-Iortv{{|znylrr\x07K--0v{pyqr-Iz|}u{|znylrr\x07K--0v{pyqr-Ixv{onrlrr\x07K--0v{pyqr-Ixv{{|znylrr\x07K--0v{pyqr-Iqrsny{|znylrr\x07K0vs{qrs-SYNal`UNQRQ-<<-[|zny-p|z}rq-vu-qrvnvr-ur{-SYNal`UNQRQ--[|zny-J-{|znyv r5-n{s|zrq[|zny-6H--0vsqrs-b`RlaN[TR[a----an{tr{-J-{|znyv r5-n{s|zrqan{tr{-6H----Ovn{tr{-J-{|znyv r5-p|5-[|zny9-an{tr{-6-7-n{tr{;-6H--0r{qvs0r{qvs--0v{pyqr-Iortv{lrr\x07K--0v{pyqr-Iz|}untrlrr\x07K--0v{pyqr-Ixv{{v{tlrr\x07K--0v{pyqr-Iqv}ynprzr{zn}lrr\x07K--0v{pyqr-I}|wrplrr\x07K--0v{pyqr-Iy|tqr}uoslrr\x07K--0v{pyqr-Ipyv}}v{tl}yn{rlrr\x07K--cvr]|vv|{-J-:-z]|vv|{;\x07\b H--Sv{ny]|vv|{-J-rpA5n{s|zrq9->;=6H--0vsqrs-b`RlV[`aN[PV[T----Sv{ny]|vv|{-J-v{n{prZnv\x07-7-Sv{ny]|vv|{H--0r{qvs--Sv{ny]|vv|{-J-z|qryZnv\x07-7-Sv{ny]|vv|{H--zn@-pnzrn_|nv|{Znv\x07-J-zn@5vrZnv\x07h=jh=j9-vrZnv\x07h>jh=j9-vrZnv\x07h?jh=j9-vrZnv\x07h=jh>j9-vrZnv\x07h>jh>j9-vrZnv\x07h?jh>j9-vrZnv\x07h=jh?j9-vrZnv\x07h>jh?j9-vrZnv\x07h?jh?j6H--PnzrnQvrpv|{-J-{|znyv r5pnzrn_|nv|{Znv\x07-7-rp@5=;=9-=;=9-:>;=66H--_||sZnx-J-=;=H--0vs-qrsv{rq5b`RlcR_aRelZN_X6----_||sZnx-J-z||ur}5_\\\\SlZN_X-:-ZN_Xl`aR]9-_\\\\SlZN_X9-lsrnrlvqlznx6H--0r{qvs--0v{pyqr-I|yq}|lrr\x07K--0v{pyqr-Ir{zn}lrr\x07K--0v{pyqr-Iunq|zn}lrr\x07K--0v{pyqr-Is|tlrr\x07K--ZNV[lR[Q\f"),jt=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("0qrsv{r-`aN[QN_Q0qrsv{r-_RSYRPaVcVaf0qrsv{r-PYRN_P\\Na0qrsv{r-a_N[`]N_R[Pf0qrsv{r-OYNPXlP\\Y\\_-rpA5=;=EC9-=;>=C9-=;>AF9->;=60qrsv{r-a_N[`]N_R[alP\\Y\\_-rpA5=;=9-=;=9-=;=9-=;=60qrsv{r-SYV]lPbORlZN]-:>;=p-]n{|-\n--nz}yrPor-zn}H--sy|n-zn}`v rH--rpA-zn}Uv|tnzH-<<-}rnx-zrn{-zv{-zn\x07--znA-znv\x07H--sy|n- ||zH\fH{vs|z-]n{|-}n{|=H{vs|z-]n{|-}n{|>H0vs-qrsv{rq5b`Rl]N[\\lQR]aU6--p-]n{|Qr}u-\n----nz}yrPor-zn}H----sy|n-zn\x07Qr}uH--\fH--{vs|z-]n{|Qr}u-}n{|=Qr}uH--{vs|z-]n{|Qr}u-}n{|>Qr}uH0r{qvs0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6--p-Svyr]nnz-\n----sy|n-nnv|{`nnv|{OvnH----sy|n-p|{nP|{nOvnH----nz}yr?Q-uvtuyvtu`unq|YZn}H----sy|n-p|y|arz}rnrOvnH----sy|n-p|y|av{OvnH--\fH--{vs|z-Svyr]nnz-}n{|SvyrH0r{qvs0vs-qrsv{rq5b`Rl_RSV[RQl`P_RR[6--p-_rsv{rq`prr{-\n----nz}yr?Q-zn}H----znA-}|wrpv|{Znv\x07H----znA-znv\x07V{rrH----sy|n-|}npv\bH----sy|n-}n{|H--\fH--{vs|z-_rsv{rq`prr{-rsv{rq`prr{H0r{qvs{vs|z-sy|n-sy||V{qr\x07H{vs|z-sy|n-z|qryNy}unH{vs|z-sy|n-}|trH0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6--{vs|z-rp@-p|{n{P|y|H0r{qvs0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6--{vs|z-nz}yr?Q-tnqvr{ar\x07rH0r{qvsp-Pyv}}r-\n--znA-znv\x07V{rrH--sy|n-sy||V{qr\x07H\fH0vs-[bZlPYV]]R_`-K-=--{vs|z-Pyv}}r-pyv}}rh[bZlPYV]]R_`jH0r{qvsn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-sy|n-_||sZnxH{vs|z-sy|n-u|{Sy||V{qr\x07H{vs|z-rp?-r|yv|{H{vs|z-sy|n-}v\x07ry_nv|H{vs|z-rp@-qvssrH{vs|z-sy|n-p|y|Ny}unH{vs|z-rp@-rzvvrH{vs|z-sy|n-|tu{rH{vs|z-sy|n-zrny{rH{vs|z-sy|n-|}npv\bH{vs|z-sy|n-ovtu{rH0vsqrs-a_N[`]N_R[Pf--{vs|z-sy|n-n{}nr{p\bH0r{qvs0vsqrs-_RSYRPaVcVaf--{vs|z-sy|n-rsyrpvv\bH0r{qvs0vsqrs-PYRN_P\\Na--{vs|z-sy|n-pyrnp|nH--{vs|z-sy|n-pyrnp|n_|tu{rH0r{qvs0vsqrs-b`Rl`URR[--{vs|z-rp@-urr{H0r{qvs{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{H<<u调整{vs|z-sy|n-p|y|`nnv|{H{vs|z-sy|n-p|y|Ovtu{rHn\bv{t-rp@-cvr]|vv|{H0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH--0vsqrs-b`RlaN[TR[a----n\bv{t-rp@-an{tr{H----n\bv{t-rp@-Ovn{tr{H--0r{qvs0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-I}npxv{tK0v{pyqr-Iqvurv{tl}nlsntzr{K0v{pyqr-Ip|y|l}nlsntzr{K0v{pyqr-Il}nlsntzr{K0v{pyqr-I?l}nlsntzr{K0v{pyqr-Izn}l}nlsntzr{K0v{pyqr-Iny}unzn}l}nlsntzr{K0v{pyqr-In|zn}l}nlsntzr{K0v{pyqr-Iyvtuzn}l}nlsntzr{K0v{pyqr-Irzvvrzn}l}nlsntzr{K0v{pyqr-IoqsK0v{pyqr-Iporllrsyrpv|{lsntzr{K0v{pyqr-Ir{zn}lp|zz|{l}nlsntzr{K0v{pyqr-Ir{zn}l}u\bvpnyl}nlsntzr{K0v{pyqr-Is|tl}nlsntzr{K0v{pyqr-Iyvtul}nlortv{K0v{pyqr-Iyvtul}u\bvpnyl}nlsntzr{K0v{pyqr-Iunq|zn}l}nlsntzr{K0v{pyqr-Ioz}zn}l}nlsntzr{K0v{pyqr-I{|znyzn}l}nlsntzr{K0v{pyqr-Ipyrnp|nl}nlsntzr{K0v{pyqr-I|tu{rzn}l}nlsntzr{K0v{pyqr-Izrny{rzn}l}nlsntzr{K0v{pyqr-Iy|tqr}uosl}nlsntzr{K0v{pyqr-Ipyv}}v{tl}yn{rl}nlsntzr{Krp@- ||zcrp|5rp@-qvrpv|{9-rp@-rp|9-sy|n- ||z6-\n--sy|n-urn-J-q|5qvrpv|{9-rp|6H--rp@-q-J-qvrpv|{-7-urnH--rp@-}-J-rp|-:-qH--rp@-\0-J-}-<- ||zH--r{-{|znyv r5q-8-\x006H\frp@-to?u5rp@-p6-\n--rpA-X-J-rpA5=;=9-:>;=-<-@;=9-?;=-<-@;=9-:>;=6H--rpA-}-J-zv\x075rpA5p;ot9-X; 69-rpA5p;to9-X;\x07\b69-r}5p;o9-p;t66H--rpA-\0-J-zv\x075rpA5};\x07\b9-p;69-rpA5p;9-};\b \x0769-r}5};\x079-p;66H--sy|n-q-J-\0;\x07-:-zv{5\0;9-\0;\b6H--sy|n-r-J->;=r:>=H--r{-rp@5no5\0; -8-5\0;-:-\0;\b6-<-5C;=-7-q-8-r669-q-<-5\0;\x07-8-r69-\0;\x076H\frp@-u?to5rp@-p6-\n--rpA-X-J-rpA5>;=9-?;=-<-@;=9->;=-<-@;=9-@;=6H--rp@-}-J-no5snp5p;\x07\x07\x07-8-X;\x07\b 6-7-C;=-:-X;6H--r{-p; -7-zv\x075X;\x07\x07\x079-pynz}5}-:-X;\x07\x07\x079-=;=9->;=69-p;\b6H\frp@-trP|y|O\bUrvtu5nz}yr?Q-tnqvr{ar\x07r9-rpA-Sv{ny]|vv|{6-\n--sy|n--J-5Sv{ny]|vv|{;\b-:-z|qryO|{qv{tZv{;\b6-<-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6H--r{-r\x07r?Q5tnqvr{ar\x07r9-rp?59-=;B66;toH\f0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6--rp@-svyrUvtuyvtu`unq|5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-u-J-to?u5p|y|6H----u; -J-r\x07r?Q5}n{|Svyr;uvtuyvtu`unq|YZn}9-rp?5u; 9-=;=66;H----p|y|-J-u?to5u6H----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|arz}rnr5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-rz}rnrOvn-J-pynz}5}n{|Svyr;p|y|arz}rnrOvn9-:>==;=9->==;=6H----sy|n-`pnyr-J->;=-8-rz}rnrOvn-<-@==;=H----sy|n-o`pnyr-J->;=-:-rz}rnrOvn-<-@==;=H----p|y|;-J-p|y|;-7-`pnyrH----p|y|;o-J-p|y|;o-7-o`pnyrH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|av{5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-v{Ovn-J-pynz}5}n{|Svyr;p|y|av{Ovn9-:>==;=9->==;=6H----rp@-pnyr-J-rp@5>;=6H----vs-5v{Ovn-K-=;=6-\n------pnyr;t-J->;=-:-v{Ovn-<-?==;=H----\f-ryr-\n------pnyr;-J->;=-8-v{Ovn-7-=;B-<-?==;=H------pnyr;t-J->;=-:-v{Ovn-7-=;B-<-?==;=H------pnyr;o-J->;=-8-v{Ovn-7-=;B-<-?==;=H----\f----p|y|-7J-pnyrH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-to-J-p|y|H----to-J-svyrP|y|arz}rnr5to9-uv|tnz6H----to-J-svyrP|y|av{5to9-uv|tnz6H----r{-toH--\f--rp@-svyrP|{n5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-zrn{cny-J-uv|tnzh>jH----sy|n-zv{cny-J-uv|tnzh?jH----sy|n-zn\x07cny-J-uv|tnzh@jH----sy|n-p|{nOvn-J-pynz}5}n{|Svyr;p|{nP|{nOvn9-:>;=9->;=6H----sy|n-rqOvn-J->;=-7-p|{nOvn-8->;=H----sy|n-ovn`\0nrunys-J-p|{nOvn-7-p|{nOvn-<-?;=H----sy|n-y|}ry|-J-5rqOvn-:->;=6-<-zrn{cnyH----sy|n-y|}ruvtu-J-5>;=-:-rqOvn6-<-5>;=-:-zrn{cny6H----sy|n-ovn-J-5rqOvn-:-zrn{cny6-<-5>;=-:-zrn{cny6H----sy|n-pnyrlsnp|-J->;=-<-5zn\x07cny-:-zv{cny6H----rp@-ny-J-p|y|H----sy|n-zn\x07lny-J-zn\x075zn\x075p|y|;9-p|y|;t69-p|y|;o6H----vs-5p|{nOvn-I-=;=6-\n------ny-J-ny-7-5>;=-:-ovn`\0nrunys6-8-zn\x07lny-7-ovn`\0nrunysH----\f----rp@-rzn}-J-rp@5------5ny;-I-zrn{cny6-L-y|}ry|-7-ny;-8->;=-G-y|}ruvtu-7-ny;-8-ovn9------5ny;t-I-zrn{cny6-L-y|}ry|-7-ny;t-8->;=-G-y|}ruvtu-7-ny;t-8-ovn9------5ny;o-I-zrn{cny6-L-y|}ry|-7-ny;o-8->;=-G-y|}ruvtu-7-ny;o-8-ovn----6H----rp@-|`pnyr-J-rzn}-7-pnyrlsnp|H----p|y|-J-5ny-:-zrn{cny6-7-|`pnyr-8-zrn{cnyH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyr`nnv|{5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-nnv|{Ovn-J-pynz}5}n{|Svyr;nnv|{`nnv|{Ovn9-:>;=9->;=6H----sy|n-n`pnyr-J->;=-8-nnv|{OvnH----sy|n-yzv{n{pr-J-=;?FF-7-p|y|;-8-=;BED-7-p|y|;t-8-=;>>A-7-p|y|;oH----p|y|-J-5p|y|-:-yzv{n{pr6-7-n`pnyr-8-yzv{n{prH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-r\x07rpSvyr5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-to-J-p|y|H----to-J-svyrUvtuyvtu`unq|5to9-uv|tnz6H----to-J-svyrP|y|5to9-uv|tnz6H----to-J-svyrP|{n5to9-uv|tnz6H----to-J-svyr`nnv|{5to9-uv|tnz6H----r{-toH--\f0r{qvsZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--<<-JJJ-楼层-JJJ--o||y-vPr{Sy||-J-u|{Sy||V{qr\x07-I-:=;=>-\v\v-no5sy||V{qr\x07-:-u|{Sy||V{qr\x076-I-=;FFH--sy|n-sy||\\}npv\b-J->;=H--vs-5.vPr{Sy||6-\n----0vs-qrsv{rq5b`RlSY\\\\_l`afYRlcV`VOVYVaf6------qvpnqH----0r{qvs----sy||\\}npv\b-J-pynz}5=;?-7-zv{55>;=-8-PnzrnQvrpv|{;\b69->;=69-=;=9->;=6H--\f--<<-JJJJJJJJJJJ--<<-JJJ-顶部裁切-JJJ--sy|n-||sP]|tr-J-}|5pynz}5:PnzrnQvrpv|{;\b9-=;=9->;=69-@;=6H--vs-5----_||sZnx-K-=;==>-33----Sv{ny]|vv|{;\b-K-z|qryO|{qv{tZn\x07;\b-:-||sP]|tr-7-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6--6-\n----qvpnqH--\f--<<-JJJJJJJJJJJJJJ--<<-JJJ-前置裁切计算-JJJ--0vs-[bZlPYV]]R_`-K-=----o||y-pyv}}rqH----rpA-pyv}}r]|vv|{H----0}ntzn-{|yyly||}ln----s|-5-v{-v-J-=H-v-I-[bZlPYV]]R_`H-v-88-6-\n------pyv}}r]|vv|{-J-pyv}}rh-v-j;znv\x07V{rr-7-Sv{ny]|vv|{H------pyv}}rq-J-5pyv}}rh-v-j;sy||V{qr\x07-I-=;=-\v\v-no5sy||V{qr\x07-:-pyv}}rh-v-j;sy||V{qr\x076-I->;=6H------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\x07-K-:=;B-33-pyv}}r]|vv|{;\x07-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\b-K-:=;B-33-pyv}}r]|vv|{;\b-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{; -K-:=;B-33-pyv}}r]|vv|{; -I-=;BH------vs-5pyv}}rq6-\n--------qvpnqH------\f----\f----0}ntzn-{|yyly||}lr{q--0r{qvs--<<-JJJJJJJJJJJJJJJJ--0v{pyqr-Ipyv}}v{tl}yn{rlsntzr{K--rpA-qvssrP|y|-J-rpA5-qvssr9-p|y|Ny}un-7-|}npv\b-6H--<<-JJJ-高度色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6----qvssrP|y|;to-J-trP|y|O\bUrvtu5tnqvr{ar\x07r9-Sv{ny]|vv|{6H--0r{qvs--<<-JJJJJJJJJJJ--<<-JJJ-纯色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6----qvssrP|y|;to-J-p|{n{P|y|H--0r{qvs--<<-JJJJJJJJJJJ--_rsyrprqYvtu-rsyrprqYvtu-J-_rsyrprqYvtu5-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-6-6H--rp@-|nyRzvvr_nqvn{pr-J-rzvvrH--0v{pyqr-Iy|tqr}uoslsntzr{K--0v{pyqr-Izn}lsntzr{K--0v{pyqr-Ip|y|lsntzr{K--0v{pyqr-Iny}unzn}lsntzr{K--0v{pyqr-Iny}unrlsntzr{K--0v{pyqr-I|tu{rzn}lsntzr{K0v{pyqr-Izrny{rzn}lsntzr{K--0v{pyqr-I{|znylsntzr{lortv{K--0v{pyqr-I{|znylsntzr{lzn}K--0v{pyqr-Ipyrnp|nl{|znylsntzr{lortv{K--0v{pyqr-Ipyrnp|nl{|znylsntzr{lzn}K--0v{pyqr-Irzvvrzn}lsntzr{K--<<-nppzynv|{--0v{pyqr-Iyvtul}u\bvpnylsntzr{K--0v{pyqr-Iyvtulsntzr{lortv{K--0v{pyqr-Iyvtulsntzr{lzn}K--0v{pyqr-Iyvtulsntzr{lr{qK--<<-z|qynv|{--0v{pyqr-In|zn}lsntzr{K--rp@-|t|v{tYvtu-J-rsyrprqYvtu;qvrpQvssr-8-rsyrprqYvtu;v{qvrpQvssr-8-rsyrprqYvtu;qvrp`}rpyn-8-rsyrprqYvtu;v{qvrp`}rpyn-8-|nyRzvvr_nqvn{prH<<-s|-n{zvv|{--0vsqrs-a_N[`]N_R[Pf----qvssrP|y|;n-7J-nnr5->;=-:-n{}nr{p\b-7-5>;=-:-znrvny;}rpyn_|tu{r6-8-yv{rna|_rynvrYzv{n{pr5-rsyrprqYvtu;qvrp`}rpyn-8-rsyrprqYvtu;v{qvrp`}rpyn-6-6H--0r{qvs--qvssrP|y|;n-J-qvssrP|y|;n-7-sy||\\}npv\b-7-ovtu{rH--0vs-qrsv{rq5b`Rl\\]N^bR6----qvssrP|y|;n-J->;=H--0r{qvs--tylSntP|y|-J-rpA5|t|v{tYvtu9-qvssrP|y|;n6H--<<-JJJ-颜色增益调整-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNQWb`aZR[a6----rp@-uP|y|-J-to?u5tylSntP|y|;to6H----uP|y|;\b-8J-p|y|`nnv|{H----uP|y|; -8J-p|y|Ovtu{rH----tylSntP|y|;to-J-zn\x075u?to5uP|y|69-=;=6H--0r{qvs--<<-JJJJJJJJJJJJJJJJJJ--ZNV[lZ\\QRYlP\\Y\\_--<<色调映射-色彩空间转换--0v{pyqr-I|{rzn}}v{tlsntzr{K--0v{pyqr-Ir{p|qv{tlsntzr{K--0v{pyqr-Is|tlsntzr{K--0v{pyqr-I}rzyv}yvrqlny}unlsntzr{K--0v{pyqr-Iqvurv{tlsntzr{K--<<-JJJ-全景图-JJJ--rp@-}n{|=a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|=;znv\x07h@j;\x07\b 6H--}n{|=a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|=a|crr\x079-}n{|=; ||z6H--}n{|=a|crr\x07-J-}n{|=a|crr\x07-7-zn@5}n{|=;znv\x076H--rp@-}n{|>a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|>;znv\x07h@j;\x07\b 6H--}n{|>a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|>a|crr\x079-}n{|>; ||z6H--}n{|>a|crr\x07-J-}n{|>a|crr\x07-7-zn@5}n{|>;znv\x076H--rpA-}n{|=P|y|-J-r\x07rPor5}n{|=;zn}9-rp@5SYV]lPbORlZN]-7-}n{|=a|crr\x07;\x079-}n{|=a|crr\x07;\b 66H--rpA-}n{|>P|y|-J-r\x07rPor5}n{|>;zn}9-rp@5SYV]lPbORlZN]-7-}n{|>a|crr\x07;\x079-}n{|>a|crr\x07;\b 66H--<<-JJJ-全景图瓦片细化-JJJ--0vs-qrsv{rq5b`Rl_RSV[RQl`P_RR[6----rpA-rsv{rqPnzrn]|v|{-J-rsv{rq`prr{;znv\x07V{rr-7-Sv{ny]|vv|{H----sy|n-rsv{rqg||z-J-zv\x075}n{|=; ||z9-}n{|>; ||z9-rsv{rq`prr{;}n{|6H----rp@-rsv{rqPnzrncrr\x07-J-{|znyv r5rsv{rqPnzrn]|v|{;\x07\b 6H----rsv{rqPnzrncrr\x07-J- ||zcrp|5rp@5=;=9-=;=9->;=69-rsv{rqPnzrncrr\x079-rsv{rqg||z6H----rpA-rsv{rq]|v|{-J-rsv{rq`prr{;}|wrpv|{Znv\x07-7-rpA5rsv{rqPnzrncrr\x079->;=6H----rsv{rq]|v|{-J-rsv{rq]|v|{-<-rsv{rq]|v|{;H----rpA-rsv{rqP|y|-J-r\x07r?Q5rsv{rq`prr{;zn}9-5rsv{rq]|v|{;\x07\b-8->;=6-<-?;=6H----rsv{rqP|y|;n-J-rsv{rqP|y|;n-7-rsv{rq`prr{;|}npv\bH----sy|n-rsv{rq\\rsy|]|tr-J-r}5no5rsv{rq]|v|{;\x0769->;=6-7-r}5no5rsv{rq]|v|{;\b69->;=6-7-r}5rsv{rqPnzrn]|v|{; 9-=;=6H----rsv{rqP|y|-J-zv\x075a_N[`]N_R[alP\\Y\\_9-rsv{rqP|y|9-rsv{rq\\rsy|]|tr6H----rpA-rsv{rq]n{|=P|y|-J-zv\x075rsv{rqP|y|9-a_N[`]N_R[alP\\Y\\_9-rsv{rq`prr{;}n{|6H----rpA-rsv{rq]n{|>P|y|-J-zv\x075rsv{rqP|y|9-a_N[`]N_R[alP\\Y\\_9->;=-:-rsv{rq`prr{;}n{|6H----}n{|=P|y|-J-zv\x075}n{|=P|y|9-rpA5rsv{rq]n{|=P|y|;to9-}n{|=P|y|;n69-rsv{rq]n{|=P|y|;n6H----}n{|>P|y|-J-zv\x075}n{|>P|y|9-rpA5rsv{rq]n{|>P|y|;to9-}n{|>P|y|;n69-rsv{rq]n{|>P|y|;n6H--0r{qvs--<<-JJJ-运动过程全景图通过深度剔除-JJJ--0vs-qrsv{rq5b`Rl]N[\\lQR]aU6----sy|n-}n{|=crr\x07Qr}u-J-pynz}5yr{tu5Sv{ny]|vv|{;\x07\b -:-}n{|=;znv\x07h@j;\x07\b 69-=;=9-}n{|=Qr}u;zn\x07Qr}u6H----sy|n-}n{|>crr\x07Qr}u-J-pynz}5yr{tu5Sv{ny]|vv|{;\x07\b -:-}n{|>;znv\x07h@j;\x07\b 69-=;=9-}n{|>Qr}u;zn\x07Qr}u6H----sy|n-}n{|=Qr}uZn}Qr}u-J-{}npx_TONa|Qr}u5r\x07rPor5}n{|=Qr}u;zn}9-}n{|=a|crr\x0766-7-}n{|=Qr}u;zn\x07Qr}uH----sy|n-}n{|>Qr}uZn}Qr}u-J-{}npx_TONa|Qr}u5r\x07rPor5}n{|>Qr}u;zn}9-}n{|>a|crr\x0766-7-}n{|>Qr}u;zn\x07Qr}uH----sy|n-}n{|=Qr}uQryn-J-no5}n{|=Qr}uZn}Qr}u-:-}n{|=crr\x07Qr}u6H----sy|n-}n{|>Qr}uQryn-J-no5}n{|>Qr}uZn}Qr}u-:-}n{|>crr\x07Qr}u6H----sy|n-zn\x07]n{|=Qr}uQryn-J-=;=@-7-}n{|=crr\x07Qr}uH----sy|n-zn\x07]n{|>Qr}uQryn-J-=;=@-7-}n{|>crr\x07Qr}uH----}n{|=P|y|-J-zv\x075}n{|=P|y|9-zv\x075}n{|=P|y|9-tylSntP|y|9-pynz}5}|tr-7->=;=9-=;=9->;=669-r}5zn\x07]n{|=Qr}uQryn9-}n{|=Qr}uQryn66H----}n{|>P|y|-J-zv\x075}n{|>P|y|9-zv\x075}n{|>P|y|9-tylSntP|y|9-pynz}55>;=-:-}|tr6-7->=;=9-=;=9->;=669-r}5zn\x07]n{|>Qr}uQryn9-}n{|>Qr}uQryn66H--0r{qvs--<<-JJJ-全景图滤镜-JJJ--0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6----}n{|=P|y|;to-J-r\x07rpSvyr5}n{|=P|y|;to9-}n{|=;zn}Uv|tnz6H----}n{|>P|y|;to-J-r\x07rpSvyr5}n{|>P|y|;to9-}n{|>;zn}Uv|tnz6H--0r{qvs--<<-JJJ-全景图颜色混合-JJJ--rpA-}n{|P|y|H--0vs-qrsv{rq5b`RlOYNPXla_N[`VaV\\[6----sy|n-oynpx]|tr-J-np|5:?;=-7-}|tr-8->;=6H----}n{|P|y|-J-zv\x075}n{|=P|y|9-OYNPXlP\\Y\\_9-zv{5>;=9-oynpx]|tr66H----}n{|P|y|-J-zv\x075}n{|P|y|9-}n{|>P|y|9-zn\x075=;=9-oynpx]|tr-:-]V-8->;=66H--0ryvs-qrsv{rq5b`Rl`]_RNQla_N[`VaV\\[6----rp?-prr{Pr{rP||q-J-r|yv|{-7-}v\x07ry_nv|-<-?;=H----sy|n-n{vv|{_nqv-J-qvn{pr5rp?5=;=9-=;=69-prr{Pr{rP||q6-7->;?H----sy|n-n{vv|{]|tr-J-qvn{pr5tylSntP||q;\x07\b9-prr{Pr{rP||q6-<-n{vv|{_nqvH----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-z||ur}5=;=9-=;?9-}|tr-:-n{vv|{]|tr66H--0ryr----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-}|tr6H--0r{qvs--tylSntP|y|-J-zv\x075}n{|P|y|9-tylSntP|y|9-z|qryNy}un6H--ZNV[lR[Q\f"),V=class extends c.Uniform{constructor(e){super(e)}};function Mt(e,t){t&&e.value&&(t instanceof c.Color||t instanceof c.Matrix4||t instanceof c.Matrix3||t instanceof c.Vector2||t instanceof c.Vector3||t instanceof c.Vector4)?e.value.copy(t):Array.isArray(t)?e.value=t.slice():e.value=t}function Nt(e){return c.UniformsUtils.clone(e)}function Pt(...e){return c.UniformsUtils.merge(e)}function H(e,t,n){return Object.defineProperty(e,t,n)}var Ft=null;function It(e){if(Ft!==null&&typeof Ft.property){let e=Ft;return Ft=It.prototype=null,e}return Ft=It.prototype=e==null?Object.create(null):e,new It}var Lt=10;for(let e=0;e<=Lt;e++)It();function Rt(e){return It(e)}var zt=Math.PI*2;function Bt(e){return e>=0&&e<zt?e:(e%zt+zt)%zt}function Vt(e,t){let n=Math.abs(Math.cos(e.latitude)),r=-Math.sin(e.longitude)*n,i=-Math.sin(e.latitude),a=-Math.cos(e.longitude)*n;return t?t.set(r,i,a):new c.Vector3(r,i,a)}function Ht(e){return{longitude:Bt(-Math.atan2(e.x,-e.z)),latitude:-Math.asin(e.y/1)}}function Ut(e){return(-e/Math.PI*180-90)/360+.25}function Wt(e){return-((e-.25)*360+90)/180*Math.PI}var Gt=Date.now();typeof performance<`u`&&(typeof performance.timeOrigin==`number`?Gt=performance.timeOrigin:performance.timing!==void 0&&(Gt=performance.timing.navigationStart));var U=typeof performance<`u`?(()=>Gt+performance.now()):(()=>Date.now());function Kt(e){return e-Gt}function W(e,t,n){return e<t?t:typeof n==`number`&&e>n?n:e}var qt=1,Jt=.1,Yt=2e3,Xt=Math.PI*2,Zt=Math.PI/2;function Qt(e){return e>0&&e<=Xt?e:(e%Xt+Xt)%Xt}function $t(e,t,n,r){n=Math.pow(n,4);for(var i=0;i<16;i++)r.elements[i]=e.elements[i]+(t.elements[i]-e.elements[i])*n;return r}var en=class extends c.Camera{constructor(e,t=qt,n=Jt,r=Yt,i=new c.Vector2,a=new c.Vector2(512,512),o=1){super(),this.fov=e,this.aspect=t,this.near=n,this.far=r,this.perspToOrtho=i,this.resolution=a,this.pixelRatio=o,this.time=0,this.controllerMode=null,this.needsRender=!0,this.refineModel=!0,this.pose={longitude:0,latitude:0,fov:e,distance:0,offset:new c.Vector3},this.computePose(),this.perspectiveCamera=new c.PerspectiveCamera(this.fov,this.aspect,.001,this.far);let s=Math.max(this.orthoDistance,.01)*Math.tan(.5*this.fov/180*Math.PI),l=-.5*this.aspect*2*s;this.orthographicCamera=new c.OrthographicCamera(l,-l,s,-s,.001,this.far),this.computeProjectionMatrix(),this.lastValues={position:this.position.clone(),quaternion:this.quaternion.clone(),scale:this.scale.clone(),fov:this.fov,aspect:this.aspect,near:this.near,far:this.far,orthoDistance:this.orthoDistance,perspToOrtho:this.perspToOrtho.clone()},this.type=this.perspToOrtho.x<1?`PerspectiveCamera`:`OrthographicCamera`,this.autoNearFar=!0}get orthoDistance(){return this.pose.distance>1?this.pose.distance:1+(this.pose.distance-1)*this.perspToOrtho.x}get zoom(){return this.type===`OrthographicCamera`?this.orthographicCamera.zoom:this.type===`PerspectiveCamera`?this.perspectiveCamera.zoom:1}get top(){return this.type===`OrthographicCamera`?this.orthographicCamera.top:0}get bottom(){return this.type===`OrthographicCamera`?this.orthographicCamera.bottom:0}get left(){return this.type===`OrthographicCamera`?this.orthographicCamera.left:0}get right(){return this.type===`OrthographicCamera`?this.orthographicCamera.right:0}getDirection(e){return Vt(this.pose,e)}computePose(e=0){this.updateMatrix();let t=this.matrix.elements;return this.pose.latitude=Math.asin(W(t[9],-1,1)),Math.abs(t[9])<.9999999?this.pose.longitude=Qt(Math.atan2(t[8],t[10])):this.pose.longitude=Qt(Math.atan2(-t[2],t[0])),this.pose.fov=this.fov,this.pose.distance=e,this.pose.offset=new c.Vector3(-t[8],-t[9],-t[10]).setLength(this.pose.distance).add(this.position),this}setFromPose(e){var t,n,r,i,a;let o=Qt((t=e.longitude)==null?this.pose.longitude:t),s=Math.max(-Zt+1e-4,Math.min(Zt-1e-4,(n=e.latitude)==null?this.pose.latitude:n)),c=(r=e.fov)==null?this.pose.fov:r,l=(i=e.distance)==null?this.pose.distance:i,u=(a=e.offset)==null?this.pose.offset:a,d=Vt({longitude:o,latitude:s}).normalize();return this.position.set(0,0,0),this.lookAt(d),this.position.add(u).sub(d.clone().setLength(l)),this.fov!==c&&(this.fov=c,this.perspectiveCamera.fov=c,this.updateProjectionMatrix()),this.updateMatrixWorld(!0),this.pose.longitude=o,this.pose.latitude=s,this.pose.fov=c,this.pose.distance=l,this.pose.offset.copy(u),this.needsRender=!0,this}copyPose(){return{longitude:this.pose.longitude,latitude:this.pose.latitude,fov:this.pose.fov,distance:this.pose.distance,offset:this.pose.offset.clone()}}computeProjectionMatrix(){$t(this.orthographicCamera.projectionMatrix,this.perspectiveCamera.projectionMatrix,1-this.perspToOrtho.x,this.projectionMatrix),this.projectionMatrixInverse.getInverse(this.projectionMatrix),this.needsRender=!0}setViewOffset(e,t,n,r,i,a){this.perspectiveCamera.setViewOffset(e,t,n,r,i,a),this.orthographicCamera.setViewOffset(e,t,n,r,i,a),this.computeProjectionMatrix()}get view(){return this.perspectiveCamera.view?Object.assign({},this.perspectiveCamera.view):null}clearViewOffset(){this.perspectiveCamera.clearViewOffset(),this.orthographicCamera.clearViewOffset(),this.computeProjectionMatrix()}updateProjectionMatrix(){this.perspectiveCamera.updateProjectionMatrix(),this.orthographicCamera.updateProjectionMatrix(),this.computeProjectionMatrix()}get perspectiveProjectionMatrix(){return this.perspectiveCamera.projectionMatrix}get perspectiveProjectionMatrixInverse(){return this.perspectiveCamera.projectionMatrixInverse}get orthographicProjectionMatrix(){return this.orthographicCamera.projectionMatrix}get orthographicProjectionMatrixInverse(){return this.orthographicCamera.projectionMatrixInverse}updateTime(e){this.time=e;let t=!1;if((this.lastValues.fov!==this.fov||this.lastValues.near!==this.near||this.lastValues.far!==this.far||this.lastValues.aspect!==this.aspect)&&(this.perspectiveCamera.fov=this.fov,this.perspectiveCamera.near=this.near,this.perspectiveCamera.far=this.far,this.perspectiveCamera.aspect=this.aspect,this.perspectiveCamera.updateProjectionMatrix(),t=!0),!this.lastValues.position.equals(this.position)||!this.lastValues.quaternion.equals(this.quaternion)||!this.lastValues.scale.equals(this.scale)||!this.lastValues.perspToOrtho.equals(this.perspToOrtho)||this.lastValues.fov!==this.fov||this.lastValues.near!==this.near||this.lastValues.far!==this.far||this.lastValues.orthoDistance!==this.orthoDistance||this.lastValues.aspect!==this.aspect){let e=Math.max(this.orthoDistance,.01)*Math.tan(.5*this.fov/180*Math.PI),n=-.5*this.aspect*2*e;this.orthographicCamera.left=n,this.orthographicCamera.right=-n,this.orthographicCamera.top=e,this.orthographicCamera.bottom=-e,this.orthographicCamera.near=this.near,this.orthographicCamera.far=this.far,this.orthographicCamera.updateProjectionMatrix(),t=!0}t&&this.computeProjectionMatrix(),this.lastValues.position.copy(this.position),this.lastValues.quaternion.copy(this.quaternion),this.lastValues.scale.copy(this.scale),this.lastValues.fov=this.fov,this.lastValues.aspect=this.aspect,this.lastValues.near=this.near,this.lastValues.far=this.far,this.lastValues.orthoDistance=this.orthoDistance,this.lastValues.perspToOrtho.copy(this.perspToOrtho),this.type=this.perspToOrtho.x<1?`PerspectiveCamera`:`OrthographicCamera`}get isPerspectiveCamera(){return this.perspToOrtho.x<1}get isOrthographicCamera(){return this.perspToOrtho.x>=1}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.aspect=e.aspect,this.near=e.near,this.far=e.far,this.perspToOrtho.copy(e.perspToOrtho),this.updateTime(U()),this}};function tn(){return((1+Math.random())*65536|0).toString(16).substring(1)}function nn(){return(tn()+tn()+`-`+tn()+`-4`+tn().substr(0,3)+`-`+tn()+`-`+tn()+tn()+tn()).toLowerCase()}function rn(e){return typeof Symbol>`u`?`$Symbol<${e}>$`:Symbol(e)}var an=rn(`$$FIVE_EVENT$$`);function on(e){return e[an]||(e[an]={}),e[an]}function sn(e){e[an]&&delete e[an]}var cn=class{hasListener(e){let t=on(this);return t&&t[e]&&t[e].callbacks.length>0}on(e,t,n){let r=on(this);return r[e]||(r[e]={callbacks:[]}),r[e].callbacks.push([t,n||!1]),()=>this.off(e,t)}once(e,t){return this.on(e,t,!0)}off(e,t){if(e===void 0){sn(this);return}let n=on(this);if(n[e]||(n[e]={callbacks:[]}),t===void 0){n[e].callbacks.length=0;return}let r=0;for(;r<n[e].callbacks.length&&n[e].callbacks[r][0]!==t;r++);r<n[e].callbacks.length&&n[e].callbacks.splice(r,1)}emit(e,...t){let n=!1,r=on(this);r[e]||(r[e]={callbacks:[]});let i=r[e].callbacks.slice();for(let[r,a=!1]of i){let i=r(...t);a&&this.off(e,r),i===!1&&(n=!0)}return n}waitUntil(e,t){return new Promise(n=>{let r=this.on(e,(...e)=>{(!t||t(...e)!==!1)&&(n(e),r())})})}},ln=class extends cn{},un=class extends ln{constructor(e){var t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g;super(),this.id=nn(),this.version=0,this.uniforms=(t=e.uniforms)==null?{}:t,this.defines=(n=e.defines)==null?{}:n,this.type=e.type,this.vertex={mainBefore:(i=(r=e.vertex)==null?void 0:r.mainBefore)==null?``:i,mainStart:(o=(a=e.vertex)==null?void 0:a.mainStart)==null?``:o,mainEnd:(c=(s=e.vertex)==null?void 0:s.mainEnd)==null?``:c},this.fragment={mainBefore:(u=(l=e.fragment)==null?void 0:l.mainBefore)==null?``:u,mainStart:(f=(d=e.fragment)==null?void 0:d.mainStart)==null?``:f,mainModelColor:(m=(p=e.fragment)==null?void 0:p.mainModelColor)==null?``:m,mainEnd:(g=(h=e.fragment)==null?void 0:h.mainEnd)==null?``:g}}get needsUpdate(){return!1}set needsUpdate(e){e===!0&&this.version++}onBeforeCompile(e,t){}},dn=class e extends ln{static computeLut(e,t,n,r=1024,i=1,a,o){let s=W(e,-255,255)/255,c=W(t,-255,255)/255,l=W(n,-255,255)/255,u=new Float32Array(5),d=new Float32Array(5),f=new Float32Array(5);u[0]=0,u[1]=.125,u[2]=.5,u[3]=.875,u[4]=1;for(let e=0;e<5;e++)f[e]=u[e]*(1+l);f[4]=Math.max(1,f[4]);for(let e=0;e<5;e++){let t=Math.pow(f[e]/f[4],2.2),n=Math.pow(f[e]/f[4],.45454545454545453);e<2?d[e]=f[e]+n*c:e>2?d[e]=f[e]+t*s:d[e]=f[e]}d[0]=0,d[4]=Math.max(1,d[4]),d[1]=Math.max(d[0]+.05,d[1]),d[3]=Math.min(d[4]-.0875,d[3]),d[2]=Math.max(Math.min(d[3]-.275,d[2]),d[1]+.275),a=a==null?new Float32Array(r*i):a,o=o==null?0:o;let p=r*2;for(let e=0;e<p;e++){let t=e/p,n=t*t,s=n*t,c=s*t,l=1-t,f=l*l,m=f*l,h=m*l,g=h*u[0]+4*m*t*u[1]+6*f*n*u[2]+4*l*s*u[3]+c*u[4],_=h*d[0]+4*m*t*d[1]+6*f*n*d[2]+4*l*s*d[3]+c*d[4],v=W(Math.round(g*(r-1)),0,r-1);for(let e=0;e<i;e++)a[o+v*i+e]=_}return a}constructor(){super(),this.id=nn();let t=()=>this.emit(`update`),n=0;this.contrast={get contrastBias(){return n},set contrastBias(e){n=e,t()}};let r=0;this.saturation={get saturationBias(){return r},set saturationBias(e){r=e,t()}};let i=0,a=0;this.color={get temperatureBias(){return i},set temperatureBias(e){i=e,t()},get tintBias(){return a},set tintBias(e){a=e,t()}};let o=0,s=0,l=0,u=[0,0,0].join(`:`),d=1024,f=new Float32Array(d*3);e.computeLut(0,0,0,d,3,f);let p=new c.DataTexture(f,d,1);p.flipY=!1,p.format=c.RGBFormat,p.type=c.FloatType,p.minFilter=c.NearestFilter,p.magFilter=c.NearestFilter,p.generateMipmaps=!1,p.needsUpdate=!0;let m=()=>{let t=[o,s,l].join(`:`);return t!==u&&(e.computeLut(o,s,l,d,3,f),p.needsUpdate=!0,u=t),p};this.highlightShadow={lutMap:p,get highlightBias(){return o},set highlightBias(e){o=e,m(),t()},get shadowBias(){return s},set shadowBias(e){s=e,m(),t()},get globalBias(){return l},set globalBias(e){l=e,m(),t()}}}toValue(){return{saturationSaturationBias:this.saturation.saturationBias,contrastContrastBias:this.contrast.contrastBias,highlightShadowLutMap:this.highlightShadow.lutMap,colorTemperatureBias:this.color.temperatureBias,colorTintBias:this.color.tintBias}}},fn=class extends c.Material{},pn=new c.Vector4,mn={colorAlpha:new V(1),pano0:new V({map:null,mapSize:1,mapHistogram:new c.Vector4,matrix:new c.Matrix4,zoom:1}),pano1:new V({map:null,mapSize:1,mapHistogram:new c.Vector4,matrix:new c.Matrix4,zoom:1}),pano0Depth:new V({map:null,maxDepth:1}),pano1Depth:new V({map:null,maxDepth:1}),refinedScreen:new V({projectionMatrix:new c.Matrix4,matrixInverse:new c.Matrix4,map:null,pano:0,opacity:1}),panoFilter:new V(null),modelAlpha:new V(1),progress:new V(0),gradientTexture:new V(null),clippers:new V([]),shownFloorIndex:new V(-1),constantColor:new V(new c.Vector3),floorIndex:new V(0),brightness:new V(1),colorSaturation:new V(0),colorBrightness:new V(0),pixelRatio:new V(1),resolution:new V(new c.Vector2(512,512)),modelBoundingMin:new V(new c.Vector3),modelBoundingMax:new V(new c.Vector3)},hn={none:{vertexShader:wt,fragmentShader:Tt},basic:{vertexShader:Et,fragmentShader:Dt},phong:{vertexShader:Ot,fragmentShader:kt},standard:{vertexShader:At,fragmentShader:jt}},gn=Pt(c.ShaderLib.basic.uniforms,c.ShaderLib.phong.uniforms,c.ShaderLib.physical.uniforms,mn),_n={USE_OPAQUE:!1,USE_VERTEX_MARK:!1,USE_COLOR_CONSTANT:!1,USE_COLOR_ALTITUDE:!1,USE_COLOR_ADJUSTMENT:!1,USE_FLOOR_STYLE_VISIBILITY:!1,USE_BLACK_TRANSITION:!1,USE_SPREAD_TRANSITION:!1,USE_FADE_TRANSITION:!1,USE_REFINED_SCREEN:!1,USE_PANO_DEPTH:!1,USE_PANO_FILTER:!1,USE_HQ_WEIGHT:!1,USE_HQ_DEPTH:!1},vn=class extends fn{constructor(e){var t,n;typeof e==`string`&&(e={shaderType:e}),super(),this.vertexTangents=!1,this.color=new c.Color(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.specular=new c.Color(1118481),this.shininess=30,this.roughnessMap=null,this.roughness=1,this.metalnessMap=null,this.metalness=0,this.alphaMap=null,this.combine=null,this.envMap=null,this.envMapIntensity=1,this.reflectivity=.4,this.refractionRatio=.98,this.emissiveMap=null,this.emissive=new c.Color(0),this.emissiveIntensity=1,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=c.TangentSpaceNormalMap,this.normalScale=new c.Vector2(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.clearcoat=0,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new c.Vector2(1,1),this.clearcoatNormalMap=null,this.sheen=null,this.transparency=0,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=`round`,this.wireframeLinejoin=`round`,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.metal=!1,this.alphaMode=`OPAQUE`,this.clipping=!0,this.customShaders=[],this.type=`PBMMeshMaterial`;let r=Object.assign({},_n),i=Nt(gn);Rt(i),Rt(r),this.defines=r,this.onBeforeCompile=(e,t)=>{let n=this.shaderType;e.vertexShader=hn[n].vertexShader,e.fragmentShader=hn[n].fragmentShader,e.uniforms=i;for(let e of Object.keys(r))e in _n||delete r[e];for(let e of Object.keys(i))e in gn||delete i[e];let a=this.customShaders.filter(e=>e.type.includes(n));for(let e of a){for(let t in e.defines)t in r||Object.assign(r,{[t]:e.defines[t]});for(let t in e.uniforms)t in i||Object.assign(i,{[t]:e.uniforms[t]})}e.vertexShader=e.vertexShader.replace(/MAIN_BEFORE/g,a.map(e=>e.vertex.mainBefore).filter(e=>!!e).join(`
302
+ `,i},typeof e==`string`&&(e.indexOf(`-----BEGIN`)==-1?d.lang.String.isHex(e)&&this.readCertHex(e):this.readCertPEM(e))}B.hex2dn=function(e,t){t===void 0&&(t=0);var n=new B;return z.getTLV(e,t),n.getX500Name(e).str},B.hex2rdn=function(e,t){if(t===void 0&&(t=0),e.substr(t,2)!==`31`)throw Error(`malformed RDN`);for(var n=[],r=z.getChildIdx(e,t),i=0;i<r.length;i++)n.push(B.hex2attrTypeValue(e,r[i]));return n=n.map(function(e){return e.replace(`+`,`\\+`)}),n.join(`+`)},B.hex2attrTypeValue=function(e,t){var n=z,r=n.getV;if(t===void 0&&(t=0),e.substr(t,2)!==`30`)throw Error(`malformed attribute type and value`);var i=n.getChildIdx(e,t);i.length!==2||e.substr(i[0],2);var a=r(e,i[0]),o=d.asn1.ASN1Util.oidHexToInt(a),s=d.asn1.x509.OID.oid2atype(o),c=Qe(r(e,i[1]));return s+`=`+c},B.getPublicKeyFromCertHex=function(e){var t=new B;return t.readCertHex(e),t.getPublicKey()},B.getPublicKeyFromCertPEM=function(e){var t=new B;return t.readCertPEM(e),t.getPublicKey()},B.getPublicKeyInfoPropOfCertPEM=function(e){var t=z.getVbyList,n={},r,i;return n.algparam=null,r=new B,r.readCertPEM(e),i=r.getPublicKeyHex(),n.keyhex=t(i,0,[1],`03`).substr(2),n.algoid=t(i,0,[0,0],`06`),n.algoid===`2a8648ce3d0201`&&(n.algparam=t(i,0,[0,1],`06`)),n},B.KEYUSAGE_NAME=[`digitalSignature`,`nonRepudiation`,`keyEncipherment`,`dataEncipherment`,`keyAgreement`,`keyCertSign`,`cRLSign`,`encipherOnly`,`decipherOnly`];function gt(e){return f.SHA256(e).toString()}var _t=[(()=>{let e=new B;return e.readCertPEM(function(...e){return arguments[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}(":::::ORTV[-PR_aVSVPNaR:::::ZVVS@ PPNErtNVONtVWNZR}@]nU\0ZaZN=TP`\0T`Vo@Q^ROPbNZVTSZ^P^fQc^^TRWQawR^ZNATN>bRPNU^zc}nzyg R^ZNATN>bROU^zc}nzyg R]ZN=TN>bRPtTn?bf?FZ_NQtfQc^^YQNq`gdSp?cyZ^P^fQc^^QQNWQ^aRvZPNTP`\0T`Vo@Q^RWN_fapzFqSFwfbOndSnzyuYz[oaNrS=\x07\\QN>Z N\\Q^B[QqnS=\b\\QN>Zwp\\Q^B[QqnZVTSZ^P^fQc^^TRWQawR^ZNATN>bRPNU^zc}nzyg R^ZNATN>bROU^zc}nzyg R]ZN=TN>bRPtTn?bf?FZ_NQtfQc^^YQNq`gdSp?cyZ^P^fQc^^QQNWQ^aRvZPNTP`\0T`Vo@Q^RWN_fapzFqSFwfbOndSnzyuYz[oaPPNvVQ^fWX|gVup[N^ROO^NQttV]NQPPNt|PttVONZU|C\b\\@@e^Xv{[vTtd8`nyO@\x07ebN[bqx=ng? S^w@|XAz|qUTwfzn]Bu<qs_ae\\y<}u`eRAoE`_\\s\0r|b{rp_o<oC@o=x\bw_cUUZPApQevD\\FxFo\x07FgE=<sq[p<coqyn>TEpP@aSC_YDU8\0|8TB?c>r\\=rp`pcwP}c\0PP_\\RS\\EPVSy8x`\0?R|NP P>}A^VP}Ex\bU\x07Za=syDw}>Ya\x078wPp[pRnn\brU^dE8U?a\bcW|<FEbbupn^`ZNr sof[wA}e{\\z}w[YDQ|dt=wC Nv\x07bR\x07Z@@U|ZAYpFsabCBB\\`wrqxsYW8uFyWdaWezeUeA_8VoVupvY[TD[OYdpO\bC[wX\\O]=[QRpV\0d`\x07N\0RXt^Z}vEpdC=\bY?\x07=V}?^W\bad|qN@Ww>@PycaqANE]asPcE^OB_VA?>wzeftac Z guf\bF]\x07DCP?znNYf uaYu[`\x07=b|v]Bp=RAS``\\PRDW]_`UXdUg=SuqwVFDeB D8{B>\\sPY\x07bEU FQXz\0@\x07`zsqgfD\0[WY\bPeZc} \0bx?Rfed\x07}BUe\x07|Uo\0y?\bsSXZOSBCgbFqf\0Bs?b?d<VE\\Zzns\\d@?dPvf\\{}_\0Sd[<q_YB\x07Y`Ffg=sY>{t<fu]x\x07rFNtZONNTwbQO\\ZO=TN>bqQt^dOOaAFXw= PCVxsv?{`a\bvS8YQ[aNsOt[cU`ZRTQNdtOaAFXw= PCVxsv?{`a\bvS8YQ[aNZOt[cU_ZROaNQN^U<ZN=TP`\0T`Vo@Q^ROPbNNAVPN^P\0{y\0Bs\\8\0R[z]w??qZP?NpgdenSuvv?>|f_?UpYPcQ\\gCb8zxtSvsOQNg>[\\\0\bx\b_o@8\0g`Z<PyUE`8yu}\\g{@`s`zUgErRtve{YdCvoO@>WFDtABNp\0feUWszpQaEYNAc]^xB[@]BDAN8\b}XA=E\x07nO}Pud8TA ?yPrVv{\\>E]o`BO^RE^X[W[rEU?x\bf>V OUwY=>X[\\E`tW[8}VwpF\x07BQcnrPF}yUtd8<Doe_\b[oOVU\x07ep@pYY\0cegY{r ?\bAbq?ff8}UaXoN_D]_X_8yozYFT`N{`\\{zvu?\bDWT}=_<\x07StX Nx\x07\0\b \0aT=c@ucnWfR[vf>RFxAFV}{N`dN^\\<eawBPxx}quT=|{T_R@Fp^Y<ZevRsWaZ]V CVrRVtAAc[ Qp|d|tqoQ=T|XX =u\\N8XNCx\\aU>wz X<e@Vc?dy\\|^FEq|=p`pBdF@bs^d<]vp\\^TZ P\bZ\b\\YNNSZ_\\w^|TsD8db _ Y\\o^Cw>Z\0x\\^aN]wWf\bA} C^d_{\x07ZC@\by]gY@E BFY?OsaqbDcVgQbZeFc ovtucxnq|<TnuyXRveYFOegCpAs{YTe|>bE<OXsSqCBWD_SVepfvCCUg]z ZvQ[\0s|U>pFz\b=OwT``fNJJ:::::R[Q-PR_aVSVPNaR:::::")),e})()];function vt(e,t){for(let n of t)if(n.getSubjectHex()===e)return n}function yt(e,t){let n=e.getIssuerHex();if(n===e.getSubjectHex())return e.verifySignature(e.getPublicKey());let r=vt(n,t);return!r||e.verifySignature(r.getPublicKey())===!1?!1:yt(r,t)}function bt(e){return e.getIssuerHex()===e.getSubjectHex()?!1:yt(e,_t)}function xt(e){let t=new B;typeof e==`string`?t.readCertPEM(e):t.readCertHex(e.hex);let n=bt(t);return _t.push(t),n}function St(e,t,n){let r=new B;if(typeof n==`string`?r.readCertPEM(n):r.readCertHex(n.hex),bt(r)===!1)return!1;let i=new R;return i.readCertPubKeyHex(r.hex,6),!!i.verify(e,Me(t))}xt(function(...e){return arguments[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}(":::::ORTV[-PR_aVSVPNaR:::::ZVVTU PPONrtNVONtVWNW=_SVw VE=ZN=TP`\0T`Vo@Q^ROPbNZVTSZ^P^fQc^^TRWQawR^ZNATN>bRPNU^zc}nzyg R^ZNATN>bROU^zc}nzyg R]ZN=TN>bRPtTn?bf?FZ_NQtfQc^^YQNq`gdSp?cyZ^P^fQc^^QQNWQ^aRvZPNTP`\0T`Vo@Q^RWN_fapzFqSFwfbOndSnzyuYz[oaNrS=\bZQNAZaN\\aZ [QSnS=\b[aNBZQZ\\aZ [QSnZVTaZ^P^fQc^^TRWQawR^ZNATN>bRPNU^zc}nzyg R^ZNATN>bROU^zc}nzyg RbZOVTN>bRPtYoTyuoz}}f`Bwo?=\x07RQN\\Ot[cONZO>Wyfd\x07 gdb\x07RaN]Ot[cONZZPRuupz_@feWyZ`bVfWX|gVup[N^xOSugnec|fdy\x07ndB{^T\x07}fdB\0ndRf?FZVVPVwN[Otx\0uxvTF=ON^RSNN\\PNtENZVVPPtXPNtRN?=?]q[VD|{\\oyo`oOu}F SA\x07e`tn[t u\b8^a]qx\bE_^\x07ZN?[QC\0yuOpybY8r\\RPAS=8rUq\0E8>xean^e\bf]Y`XO}{C[Ur^?\0x[SRXvVQ\\CFr}QnAPRQ\x07FO=Yw\0_TePCOFV@|\x07N>ROXcDrT<>bW<ssO?NOT{^s]uU\0gS\bBffsfE\0AfDyQEZR`]XBo|Qw}yYdwwTvOFcBndUz^\\{] b=^yQYSTQ`]\0?tR{WRUun\\\0bVe_E|VWWV|r Ao\0 F`fdzCnRtq\br \b8eBp=Z\\TRaadc}@Eub`\x07quuNqAdF\0aUay{}x>tgVz` _YBFwu_q?egt8v[o\x008 wTQcrA <z{DZoEE^rZTrpaZQzqpBY]^zt8[bQv}yEWw XDYQB\0QB\bx_^X]|uEDtPf[n[r_bpB[bE}?ung|bnU|NYOoedY_tvXySZfYP\x07\x07dWV]OE^\bOFwA}<uXoO}_NDz8aon\x07zWOfcv@?>snfqu@FeEx^\\\bVfuO`\\\0tSg]zDU}QrAT| OZV|OvpVD<sN@z`<_cSrNCW>?=Au?g_8v{|}}WF>Sr>QBxO d_D}eBb?Uq^b [y}x]}{?P|BQtecTB[pQBW>|p|nfv\0zU\x07xOO}WqwE=<PURZy@X8r\\]u=<pPNRNNn\\OtaO<ZOETPdPT`NTT8RVOQ^^`SuO`gdSp?cyVRg\bo?B=VR[OZO=TN>bqQt^dOO`Fy\x07WadZcAD peXybcW@}Qf\\QNsOt[cU`ZRTQNdtOaAFXw= PCVxsv?{`a\bvS8YQ[aN]Ot[cU_ZONsEROaNQN^U<ZNTN>bqQ^RNVOOwN[Otx\0uxvTF=ON^SNN\\PNtRNrx a[}tP_g8FbD\0^\0qt<f88ufuN]^}]gp\bqYudF88Fas_Ef` ?^x>X}esa{>\\r?eE]CC_cZ[vQs >gX[szONg=^pn=<e]nbSz\bZvac\b[w^nA_`vP|@8w[}nQobe=??oRYf{vpRxcC}yCd>8[NDx{Ne\\t8oou=guC\x07>>g\x07vb}ACd ``Ntq\0yC[Q{|ynpNQqSqzxF<_PFDw<]Bnnu>F<XgU_Zf\\\\A=gu\\codOwQ]oQ<f>gv_pwozwC}xX>C`c]suEdfW?cbeo\b`BbyR@eFTUwSud=t]sS\\onc XSq {\0\x07DvAVBbnTqEE[QzDyqF`bF}R=Q?VeDo<Vzb\0w}D}NZ\0t}^?OyFP\bVaVNrTNYqe?[NRYTSQby@yzWvT`wQo}y]c_WgxBYCy RNRg@\x07NZCaaq8?` ^`?ryD =obzw?E]Ou\x07]n@>bVzqAQT?@_zo@}CxWVTUsAYdNd?{APQr8{P]]AZ>aR\0[D<z?Tr@`u@X|YDwd_<p<>zWE>]\0=X`\b@uucp|^_Qb@uZouTX^o\0\\{PCq{ug\x078^f[YQAWad8FNqxFQE?ZOo }RnO\bsQc xyccn=nxvs>bDBf\b\bW\\TuTnvAO^U\0QXC>xx8FxRFf<tJ:::::R[Q-PR_aVSVPNaR:::::"));var Ct=class extends c.Group{},wt=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("n\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{H0v{pyqr-Ip|zz|{K0v{pyqr-Iz|}untrl}nlrr\x07K0v{pyqr-Ixv{{v{tl}nlrr\x07K0v{pyqr-Iy|tqr}uosl}nlrr\x07K0v{pyqr-Ipyv}}v{tl}yn{rl}nlrr\x07KZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--0v{pyqr-Ixv{onrlrr\x07K--0v{pyqr-Iortv{lrr\x07K--0v{pyqr-Iz|}untrlrr\x07K--0v{pyqr-Ixv{{v{tlrr\x07K--0v{pyqr-I}|wrplrr\x07K--0v{pyqr-Iy|tqr}uoslrr\x07K--0v{pyqr-Ipyv}}v{tl}yn{rlrr\x07K--Sv{ny]|vv|{-J-rpA5n{s|zrq9->;=6H--0vsqrs-b`RlV[`aN[PV[T----Sv{ny]|vv|{-J-v{n{prZnv\x07-7-Sv{ny]|vv|{H--0r{qvs--Sv{ny]|vv|{-J-z|qryZnv\x07-7-Sv{ny]|vv|{H--zn@-pnzrn_|nv|{Znv\x07-J-zn@5vrZnv\x07h=jh=j9-vrZnv\x07h>jh=j9-vrZnv\x07h?jh=j9-vrZnv\x07h=jh>j9-vrZnv\x07h>jh>j9-vrZnv\x07h?jh>j9-vrZnv\x07h=jh?j9-vrZnv\x07h>jh?j9-vrZnv\x07h?jh?j6H--PnzrnQvrpv|{-J-{|znyv r5pnzrn_|nv|{Znv\x07-7-rp@5=;=9-=;=9-:>;=66H--0v{pyqr-I|yq}|lrr\x07K--0v{pyqr-Is|tlrr\x07K--ZNV[lR[Q\f"),Tt=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("0qrsv{r-OYNPXlP\\Y\\_-rpA5=;=EC9-=;>=C9-=;>AF9->;=60qrsv{r-a_N[`]N_R[alP\\Y\\_-rpA5=;=9-=;=9-=;=9-=;=60qrsv{r-SYV]lPbORlZN]-:>;=p-]n{|-\n--nz}yrPor-zn}H--sy|n-zn}`v rH--rpA-zn}Uv|tnzH-<<-}rnx-zrn{-zv{-zn\x07--znA-znv\x07H--sy|n- ||zH\fH{vs|z-]n{|-}n{|=H{vs|z-]n{|-}n{|>H0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6--p-Svyr]nnz-\n----sy|n-nnv|{`nnv|{OvnH----sy|n-p|{nP|{nOvnH----nz}yr?Q-uvtuyvtu`unq|YZn}H----sy|n-p|y|arz}rnrOvnH----sy|n-p|y|av{OvnH--\fH--{vs|z-Svyr]nnz-}n{|SvyrH0r{qvsp-_rsv{rq`prr{-\n--nz}yr?Q-zn}H--znA-}|wrpv|{Znv\x07H--znA-znv\x07V{rrH--sy|n-|}npv\bH--sy|n-}n{|H\fH{vs|z-_rsv{rq`prr{-rsv{rq`prr{H{vs|z-sy|n-z|qryNy}unH{vs|z-sy|n-}|trHn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{H{vs|z-sy|n-u|{Sy||V{qr\x07H{vs|z-rp?-r|yv|{H{vs|z-sy|n-}v\x07ry_nv|H0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-Iqvurv{tl}nlsntzr{K0v{pyqr-Is|tl}nlsntzr{K0v{pyqr-I}rpynzn}l}nlsntzr{K0v{pyqr-Iy|tqr}uosl}nlsntzr{K0v{pyqr-Ipyv}}v{tl}yn{rl}nlsntzr{Krp@- ||zcrp|5rp@-qvrpv|{9-rp@-rp|9-sy|n- ||z6-\n--sy|n-urn-J-q|5qvrpv|{9-rp|6H--rp@-q-J-qvrpv|{-7-urnH--rp@-}-J-rp|-:-qH--rp@-\0-J-}-<- ||zH--r{-{|znyv r5q-8-\x006H\frp@-to?u5rp@-p6-\n--rpA-X-J-rpA5=;=9-:>;=-<-@;=9-?;=-<-@;=9-:>;=6H--rpA-}-J-zv\x075rpA5p;ot9-X; 69-rpA5p;to9-X;\x07\b69-r}5p;o9-p;t66H--rpA-\0-J-zv\x075rpA5};\x07\b9-p;69-rpA5p;9-};\b \x0769-r}5};\x079-p;66H--sy|n-q-J-\0;\x07-:-zv{5\0;9-\0;\b6H--sy|n-r-J->;=r:>=H--r{-rp@5no5\0; -8-5\0;-:-\0;\b6-<-5C;=-7-q-8-r669-q-<-5\0;\x07-8-r69-\0;\x076H\frp@-u?to5rp@-p6-\n--rpA-X-J-rpA5>;=9-?;=-<-@;=9->;=-<-@;=9-@;=6H--rp@-}-J-no5snp5p;\x07\x07\x07-8-X;\x07\b 6-7-C;=-:-X;6H--r{-p; -7-zv\x075X;\x07\x07\x079-pynz}5}-:-X;\x07\x07\x079-=;=9->;=69-p;\b6H\f0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6--rp@-svyrUvtuyvtu`unq|5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-u-J-to?u5p|y|6H----u; -J-r\x07r?Q5}n{|Svyr;uvtuyvtu`unq|YZn}9-rp?5u; 9-=;=66;H----p|y|-J-u?to5u6H----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|arz}rnr5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-rz}rnrOvn-J-pynz}5}n{|Svyr;p|y|arz}rnrOvn9-:>==;=9->==;=6H----sy|n-`pnyr-J->;=-8-rz}rnrOvn-<-@==;=H----sy|n-o`pnyr-J->;=-:-rz}rnrOvn-<-@==;=H----p|y|;-J-p|y|;-7-`pnyrH----p|y|;o-J-p|y|;o-7-o`pnyrH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|av{5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-v{Ovn-J-pynz}5}n{|Svyr;p|y|av{Ovn9-:>==;=9->==;=6H----rp@-pnyr-J-rp@5>;=6H----vs-5v{Ovn-K-=;=6-\n------pnyr;t-J->;=-:-v{Ovn-<-?==;=H----\f-ryr-\n------pnyr;-J->;=-8-v{Ovn-7-=;B-<-?==;=H------pnyr;t-J->;=-:-v{Ovn-7-=;B-<-?==;=H------pnyr;o-J->;=-8-v{Ovn-7-=;B-<-?==;=H----\f----p|y|-7J-pnyrH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-to-J-p|y|H----to-J-svyrP|y|arz}rnr5to9-uv|tnz6H----to-J-svyrP|y|av{5to9-uv|tnz6H----r{-toH--\f--rp@-svyrP|{n5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-zrn{cny-J-uv|tnzh>jH----sy|n-zv{cny-J-uv|tnzh?jH----sy|n-zn\x07cny-J-uv|tnzh@jH----sy|n-p|{nOvn-J-pynz}5}n{|Svyr;p|{nP|{nOvn9-:>;=9->;=6H----sy|n-rqOvn-J->;=-7-p|{nOvn-8->;=H----sy|n-ovn`\0nrunys-J-p|{nOvn-7-p|{nOvn-<-?;=H----sy|n-y|}ry|-J-5rqOvn-:->;=6-<-zrn{cnyH----sy|n-y|}ruvtu-J-5>;=-:-rqOvn6-<-5>;=-:-zrn{cny6H----sy|n-ovn-J-5rqOvn-:-zrn{cny6-<-5>;=-:-zrn{cny6H----sy|n-pnyrlsnp|-J->;=-<-5zn\x07cny-:-zv{cny6H----rp@-ny-J-p|y|H----sy|n-zn\x07lny-J-zn\x075zn\x075p|y|;9-p|y|;t69-p|y|;o6H----vs-5p|{nOvn-I-=;=6-\n------ny-J-ny-7-5>;=-:-ovn`\0nrunys6-8-zn\x07lny-7-ovn`\0nrunysH----\f----rp@-rzn}-J-rp@5------5ny;-I-zrn{cny6-L-y|}ry|-7-ny;-8->;=-G-y|}ruvtu-7-ny;-8-ovn9------5ny;t-I-zrn{cny6-L-y|}ry|-7-ny;t-8->;=-G-y|}ruvtu-7-ny;t-8-ovn9------5ny;o-I-zrn{cny6-L-y|}ry|-7-ny;o-8->;=-G-y|}ruvtu-7-ny;o-8-ovn----6H----rp@-|`pnyr-J-rzn}-7-pnyrlsnp|H----p|y|-J-5ny-:-zrn{cny6-7-|`pnyr-8-zrn{cnyH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyr`nnv|{5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-nnv|{Ovn-J-pynz}5}n{|Svyr;nnv|{`nnv|{Ovn9-:>;=9->;=6H----sy|n-n`pnyr-J->;=-8-nnv|{OvnH----sy|n-yzv{n{pr-J-=;?FF-7-p|y|;-8-=;BED-7-p|y|;t-8-=;>>A-7-p|y|;oH----p|y|-J-5p|y|-:-yzv{n{pr6-7-n`pnyr-8-yzv{n{prH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-r\x07rpSvyr5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-to-J-p|y|H----to-J-svyrUvtuyvtu`unq|5to9-uv|tnz6H----to-J-svyrP|y|5to9-uv|tnz6H----to-J-svyrP|{n5to9-uv|tnz6H----to-J-svyr`nnv|{5to9-uv|tnz6H----r{-toH--\f0r{qvsZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--0v{pyqr-Ipyv}}v{tl}yn{rlsntzr{K--0v{pyqr-Is|tlsntzr{K--0v{pyqr-I}rzyv}yvrqlny}unlsntzr{K--0v{pyqr-Iqvurv{tlsntzr{K--<<-JJJ-全景图-JJJ--rp@-}n{|=a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|=;znv\x07h@j;\x07\b 6H--}n{|=a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|=a|crr\x079-}n{|=; ||z6H--}n{|=a|crr\x07-J-}n{|=a|crr\x07-7-zn@5}n{|=;znv\x076H--rp@-}n{|>a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|>;znv\x07h@j;\x07\b 6H--}n{|>a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|>a|crr\x079-}n{|>; ||z6H--}n{|>a|crr\x07-J-}n{|>a|crr\x07-7-zn@5}n{|>;znv\x076H--rpA-}n{|=P|y|-J-r\x07rPor5}n{|=;zn}9-rp@5SYV]lPbORlZN]-7-}n{|=a|crr\x07;\x079-}n{|=a|crr\x07;\b 66H--rpA-}n{|>P|y|-J-r\x07rPor5}n{|>;zn}9-rp@5SYV]lPbORlZN]-7-}n{|>a|crr\x07;\x079-}n{|>a|crr\x07;\b 66H--<<-JJJ-全景图瓦片细化-JJJ--0vs-qrsv{rq5b`Rl_RSV[RQl`P_RR[6----rpA-rsv{rqPnzrn]|v|{-J-rsv{rq`prr{;znv\x07V{rr-7-Sv{ny]|vv|{H----sy|n-rsv{rqg||z-J-zv\x075}n{|=; ||z9-}n{|>; ||z9-rsv{rq`prr{;}n{|6H----rp@-rsv{rqPnzrncrr\x07-J-{|znyv r5rsv{rqPnzrn]|v|{;\x07\b 6H----rsv{rqPnzrncrr\x07-J- ||zcrp|5rp@5=;=9-=;=9->;=69-rsv{rqPnzrncrr\x079-rsv{rqg||z6H----rpA-rsv{rq]|v|{-J-rsv{rq`prr{;}|wrpv|{Znv\x07-7-rpA5rsv{rqPnzrncrr\x079->;=6H----rsv{rq]|v|{-J-rsv{rq]|v|{-<-rsv{rq]|v|{;H----rpA-rsv{rqP|y|-J-r\x07r?Q5rsv{rq`prr{;zn}9-5rsv{rq]|v|{;\x07\b-8->;=6-<-?;=6H----rsv{rqP|y|;n-J-rsv{rqP|y|;n-7-rsv{rq`prr{;|}npv\bH----sy|n-rsv{rq\\rsy|]|tr-J-r}5no5rsv{rq]|v|{;\x0769->;=6-7-r}5no5rsv{rq]|v|{;\b69->;=6-7-r}5rsv{rqPnzrn]|v|{; 9-=;=6H----rsv{rqP|y|-J-zv\x075a_N[`]N_R[alP\\Y\\_9-rsv{rqP|y|9-rsv{rq\\rsy|]|tr6H----rpA-rsv{rq]n{|=P|y|-J-zv\x075rsv{rqP|y|9-a_N[`]N_R[alP\\Y\\_9-rsv{rq`prr{;}n{|6H----rpA-rsv{rq]n{|>P|y|-J-zv\x075rsv{rqP|y|9-a_N[`]N_R[alP\\Y\\_9->;=-:-rsv{rq`prr{;}n{|6H----}n{|=P|y|-J-zv\x075}n{|=P|y|9-rpA5rsv{rq]n{|=P|y|;to9-}n{|=P|y|;n69-rsv{rq]n{|=P|y|;n6H----}n{|>P|y|-J-zv\x075}n{|>P|y|9-rpA5rsv{rq]n{|>P|y|;to9-}n{|>P|y|;n69-rsv{rq]n{|>P|y|;n6H--0r{qvs--<<-JJJ-全景图滤镜-JJJ--0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6----}n{|=P|y|;to-J-r\x07rpSvyr5}n{|=P|y|;to9-}n{|=;zn}Uv|tnz6H----}n{|>P|y|;to-J-r\x07rpSvyr5}n{|>P|y|;to9-}n{|>;zn}Uv|tnz6H--0r{qvs--ZNV[l]N[\\lP\\Y\\_--<<-JJJ-全景图颜色混合-JJJ--rpA-}n{|P|y|H--0vs-qrsv{rq5b`RlOYNPXla_N[`VaV\\[6----sy|n-oynpx]|tr-J-np|5:?;=-7-}|tr-8->;=6H----}n{|P|y|-J-zv\x075}n{|=P|y|9-OYNPXlP\\Y\\_9-zv{5>;=9-oynpx]|tr66H----}n{|P|y|-J-zv\x075}n{|P|y|9-}n{|>P|y|9-zn\x075=;=9-oynpx]|tr-:-]V-8->;=66H--0ryvs-qrsv{rq5b`Rl`]_RNQla_N[`VaV\\[6----rp?-prr{Pr{rP||q-J-r|yv|{-7-}v\x07ry_nv|-<-?;=H----sy|n-n{vv|{_nqv-J-qvn{pr5rp?5=;=9-=;=69-prr{Pr{rP||q6-7->;?H----sy|n-n{vv|{]|tr-J--qvn{pr5tylSntP||q;\x07\b9-prr{Pr{rP||q6-<-n{vv|{_nqvH----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-z||ur}5=;=9-=;?9-}|tr-:-n{vv|{]|tr66H--0ryr----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-}|tr6H--0r{qvs--tylSntP|y|-J-zv\x075}n{|P|y|9-rpA5}n{|P|y|;to9-=;=69-pynz}5z|qryNy}un-7-@=;=9-=;=9->;=66H--<<-JJJJJJJJJJJJJJJJ--ZNV[lR[Q\f"),Et=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("0qrsv{r-ZN_Xl`aR]->;=0qrsv{r-_\\\\SlZN_X->;=nvor-sy|n-lsrnrlvqlznxHn\bv{t-sy|n-_||sZnxHn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-rp@-cvr]|vv|{H{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{H<<u调整{vs|z-sy|n-p|y|`nnv|{H{vs|z-sy|n-p|y|Ovtu{rH0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH--0vsqrs-b`RlaN[TR[a----n\bv{t-rp@-an{tr{H----n\bv{t-rp@-Ovn{tr{H--0r{qvs0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-Il}nlrr\x07K0v{pyqr-I?l}nlrr\x07K0v{pyqr-Ir{zn}l}nlrr\x07K0v{pyqr-Ip|y|l}nlrr\x07K0v{pyqr-Is|tl}nlrr\x07K0v{pyqr-Iz|}untrl}nlrr\x07K0v{pyqr-Ixv{{v{tl}nlrr\x07K0v{pyqr-Iy|tqr}uosl}nlrr\x07K0v{pyqr-Ipyv}}v{tl}yn{rl}nlrr\x07KZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--0v{pyqr-Ilrr\x07K--0v{pyqr-I?lrr\x07K--0v{pyqr-Ip|y|lrr\x07K--0v{pyqr-Ixv{onrlrr\x07K--0v{pyqr-Iortv{{|znylrr\x07K--0v{pyqr-Iz|}u{|znylrr\x07K--0v{pyqr-Ixv{{|znylrr\x07K--0v{pyqr-Iqrsny{|znylrr\x07K--0vs{qrs-SYNal`UNQRQ-<<-[|zny-p|z}rq-vu-qrvnvr-ur{-SYNal`UNQRQ--[|zny-J-{|znyv r5-n{s|zrq[|zny-6H--0r{qvs--0v{pyqr-Iortv{lrr\x07K--0v{pyqr-Iz|}untrlrr\x07K--0v{pyqr-Ixv{{v{tlrr\x07K--0v{pyqr-I}|wrplrr\x07K--0v{pyqr-Iy|tqr}uoslrr\x07K--0v{pyqr-Ipyv}}v{tl}yn{rlrr\x07K--cvr]|vv|{-J-:z]|vv|{;\x07\b H--Sv{ny]|vv|{-J-rpA5n{s|zrq9->;=6H--0vsqrs-b`RlV[`aN[PV[T----Sv{ny]|vv|{-J-v{n{prZnv\x07-7-Sv{ny]|vv|{H--0r{qvs--Sv{ny]|vv|{-J-z|qryZnv\x07-7-Sv{ny]|vv|{H--zn@-pnzrn_|nv|{Znv\x07-J-zn@5vrZnv\x07h=jh=j9-vrZnv\x07h>jh=j9-vrZnv\x07h?jh=j9-vrZnv\x07h=jh>j9-vrZnv\x07h>jh>j9-vrZnv\x07h?jh>j9-vrZnv\x07h=jh?j9-vrZnv\x07h>jh?j9-vrZnv\x07h?jh?j6H--PnzrnQvrpv|{-J-{|znyv r5pnzrn_|nv|{Znv\x07-7-rp@5=;=9-=;=9-:>;=66H--_||sZnx-J-=;=H--0vs-qrsv{rq5b`RlcR_aRelZN_X6----_||sZnx-J-z||ur}5_\\\\SlZN_X-:-ZN_Xl`aR]9-_\\\\SlZN_X9-lsrnrlvqlznx6H--0r{qvs--0v{pyqr-I|yq}|lrr\x07K--0v{pyqr-Ir{zn}lrr\x07K--0v{pyqr-Is|tlrr\x07K--ZNV[lR[Q\f"),Dt=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("0qrsv{r-OYNPXlP\\Y\\_-rpA5=;=EC9-=;>=C9-=;>AF9->;=60qrsv{r-a_N[`]N_R[alP\\Y\\_-rpA5=;=9-=;=9-=;=9-=;=60qrsv{r-SYV]lPbORlZN]-:>;=p-]n{|-\n--nz}yrPor-zn}H--sy|n-zn}`v rH--rpA-zn}Uv|tnzH-<<-}rnx-zrn{-zv{-zn\x07--znA-znv\x07H--sy|n- ||zH\fH{vs|z-]n{|-}n{|=H{vs|z-]n{|-}n{|>H0vs-qrsv{rq5b`Rl]N[\\lQR]aU6--p-]n{|Qr}u-\n----nz}yrPor-zn}H----sy|n-zn\x07Qr}uH--\fH--{vs|z-]n{|Qr}u-}n{|=Qr}uH--{vs|z-]n{|Qr}u-}n{|>Qr}uH0r{qvs0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6--p-Svyr]nnz-\n----sy|n-nnv|{`nnv|{OvnH----sy|n-p|{nP|{nOvnH----nz}yr?Q-uvtuyvtu`unq|YZn}H----sy|n-p|y|arz}rnrOvnH----sy|n-p|y|av{OvnH--\fH--{vs|z-Svyr]nnz-}n{|SvyrH0r{qvs0vs-qrsv{rq5b`Rl_RSV[RQl`P_RR[6--p-_rsv{rq`prr{-\n----nz}yr?Q-zn}H----znA-}|wrpv|{Znv\x07H----znA-znv\x07V{rrH----sy|n-|}npv\bH----sy|n-}n{|H--\fH--{vs|z-_rsv{rq`prr{-rsv{rq`prr{H0r{qvs{vs|z-sy|n-sy||V{qr\x07H{vs|z-sy|n-z|qryNy}unH{vs|z-sy|n-}|trH0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6--{vs|z-rp@-p|{n{P|y|H0r{qvs0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6--{vs|z-nz}yr?Q-tnqvr{ar\x07rH0r{qvsp-Pyv}}r-\n--znA-znv\x07V{rrH--sy|n-sy||V{qr\x07H\fH0vs-[bZlPYV]]R_`-K-=--{vs|z-Pyv}}r-pyv}}rh[bZlPYV]]R_`jH0r{qvsn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-rp@-cvr]|vv|{Hn\bv{t-sy|n-_||sZnxH{vs|z-sy|n-u|{Sy||V{qr\x07H{vs|z-rp?-r|yv|{H{vs|z-sy|n-}v\x07ry_nv|H{vs|z-rp@-qvssrH{vs|z-sy|n-p|y|Ny}unH{vs|z-sy|n-|}npv\bH{vs|z-sy|n-ovtu{rH{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{H<<u调整{vs|z-sy|n-p|y|`nnv|{H{vs|z-sy|n-p|y|Ovtu{rH0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH--0vsqrs-b`RlaN[TR[a----n\bv{t-rp@-an{tr{H----n\bv{t-rp@-Ovn{tr{H--0r{qvs0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-I}npxv{tK0v{pyqr-Iqvurv{tl}nlsntzr{K0v{pyqr-Ip|y|l}nlsntzr{K0v{pyqr-Il}nlsntzr{K0v{pyqr-I?l}nlsntzr{K0v{pyqr-Izn}l}nlsntzr{K0v{pyqr-Iny}unzn}l}nlsntzr{K0v{pyqr-In|zn}l}nlsntzr{K0v{pyqr-Iyvtuzn}l}nlsntzr{K0v{pyqr-Ir{zn}lp|zz|{l}nlsntzr{K0v{pyqr-Ir{zn}l}nlsntzr{K0v{pyqr-Iporllrsyrpv|{lsntzr{K0v{pyqr-Is|tl}nlsntzr{K0v{pyqr-I}rpynzn}l}nlsntzr{K0v{pyqr-Iy|tqr}uosl}nlsntzr{K0v{pyqr-Ipyv}}v{tl}yn{rl}nlsntzr{Krp@- ||zcrp|5rp@-qvrpv|{9-rp@-rp|9-sy|n- ||z6-\n--sy|n-urn-J-q|5qvrpv|{9-rp|6H--rp@-q-J-qvrpv|{-7-urnH--rp@-}-J-rp|-:-qH--rp@-\0-J-}-<- ||zH--r{-{|znyv r5q-8-\x006H\frp@-to?u5rp@-p6-\n--rpA-X-J-rpA5=;=9-:>;=-<-@;=9-?;=-<-@;=9-:>;=6H--rpA-}-J-zv\x075rpA5p;ot9-X; 69-rpA5p;to9-X;\x07\b69-r}5p;o9-p;t66H--rpA-\0-J-zv\x075rpA5};\x07\b9-p;69-rpA5p;9-};\b \x0769-r}5};\x079-p;66H--sy|n-q-J-\0;\x07-:-zv{5\0;9-\0;\b6H--sy|n-r-J->;=r:>=H--r{-rp@5no5\0; -8-5\0;-:-\0;\b6-<-5C;=-7-q-8-r669-q-<-5\0;\x07-8-r69-\0;\x076H\frp@-u?to5rp@-p6-\n--rpA-X-J-rpA5>;=9-?;=-<-@;=9->;=-<-@;=9-@;=6H--rp@-}-J-no5snp5p;\x07\x07\x07-8-X;\x07\b 6-7-C;=-:-X;6H--r{-p; -7-zv\x075X;\x07\x07\x079-pynz}5}-:-X;\x07\x07\x079-=;=9->;=69-p;\b6H\frp@-trP|y|O\bUrvtu5nz}yr?Q-tnqvr{ar\x07r9-rpA-Sv{ny]|vv|{6-\n--sy|n--J-5Sv{ny]|vv|{;\b-:-z|qryO|{qv{tZv{;\b6-<-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6H--r{-r\x07r?Q5tnqvr{ar\x07r9-rp?59-=;B66;toH\f0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6--rp@-svyrUvtuyvtu`unq|5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-u-J-to?u5p|y|6H----u; -J-r\x07r?Q5}n{|Svyr;uvtuyvtu`unq|YZn}9-rp?5u; 9-=;=66;H----p|y|-J-u?to5u6H----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|arz}rnr5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-rz}rnrOvn-J-pynz}5}n{|Svyr;p|y|arz}rnrOvn9-:>==;=9->==;=6H----sy|n-`pnyr-J->;=-8-rz}rnrOvn-<-@==;=H----sy|n-o`pnyr-J->;=-:-rz}rnrOvn-<-@==;=H----p|y|;-J-p|y|;-7-`pnyrH----p|y|;o-J-p|y|;o-7-o`pnyrH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|av{5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-v{Ovn-J-pynz}5}n{|Svyr;p|y|av{Ovn9-:>==;=9->==;=6H----rp@-pnyr-J-rp@5>;=6H----vs-5v{Ovn-K-=;=6-\n------pnyr;t-J->;=-:-v{Ovn-<-?==;=H----\f-ryr-\n------pnyr;-J->;=-8-v{Ovn-7-=;B-<-?==;=H------pnyr;t-J->;=-:-v{Ovn-7-=;B-<-?==;=H------pnyr;o-J->;=-8-v{Ovn-7-=;B-<-?==;=H----\f----p|y|-7J-pnyrH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-to-J-p|y|H----to-J-svyrP|y|arz}rnr5to9-uv|tnz6H----to-J-svyrP|y|av{5to9-uv|tnz6H----r{-toH--\f--rp@-svyrP|{n5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-zrn{cny-J-uv|tnzh>jH----sy|n-zv{cny-J-uv|tnzh?jH----sy|n-zn\x07cny-J-uv|tnzh@jH----sy|n-p|{nOvn-J-pynz}5}n{|Svyr;p|{nP|{nOvn9-:>;=9->;=6H----sy|n-rqOvn-J->;=-7-p|{nOvn-8->;=H----sy|n-ovn`\0nrunys-J-p|{nOvn-7-p|{nOvn-<-?;=H----sy|n-y|}ry|-J-5rqOvn-:->;=6-<-zrn{cnyH----sy|n-y|}ruvtu-J-5>;=-:-rqOvn6-<-5>;=-:-zrn{cny6H----sy|n-ovn-J-5rqOvn-:-zrn{cny6-<-5>;=-:-zrn{cny6H----sy|n-pnyrlsnp|-J->;=-<-5zn\x07cny-:-zv{cny6H----rp@-ny-J-p|y|H----sy|n-zn\x07lny-J-zn\x075zn\x075p|y|;9-p|y|;t69-p|y|;o6H----vs-5p|{nOvn-I-=;=6-\n------ny-J-ny-7-5>;=-:-ovn`\0nrunys6-8-zn\x07lny-7-ovn`\0nrunysH----\f----rp@-rzn}-J-rp@5------5ny;-I-zrn{cny6-L-y|}ry|-7-ny;-8->;=-G-y|}ruvtu-7-ny;-8-ovn9------5ny;t-I-zrn{cny6-L-y|}ry|-7-ny;t-8->;=-G-y|}ruvtu-7-ny;t-8-ovn9------5ny;o-I-zrn{cny6-L-y|}ry|-7-ny;o-8->;=-G-y|}ruvtu-7-ny;o-8-ovn----6H----rp@-|`pnyr-J-rzn}-7-pnyrlsnp|H----p|y|-J-5ny-:-zrn{cny6-7-|`pnyr-8-zrn{cnyH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyr`nnv|{5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-nnv|{Ovn-J-pynz}5}n{|Svyr;nnv|{`nnv|{Ovn9-:>;=9->;=6H----sy|n-n`pnyr-J->;=-8-nnv|{OvnH----sy|n-yzv{n{pr-J-=;?FF-7-p|y|;-8-=;BED-7-p|y|;t-8-=;>>A-7-p|y|;oH----p|y|-J-5p|y|-:-yzv{n{pr6-7-n`pnyr-8-yzv{n{prH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-r\x07rpSvyr5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-to-J-p|y|H----to-J-svyrUvtuyvtu`unq|5to9-uv|tnz6H----to-J-svyrP|y|5to9-uv|tnz6H----to-J-svyrP|{n5to9-uv|tnz6H----to-J-svyr`nnv|{5to9-uv|tnz6H----r{-toH--\f0r{qvsZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--<<-JJJ-楼层-JJJ--o||y-vPr{Sy||-J-u|{Sy||V{qr\x07-I-:=;=>-\v\v-no5sy||V{qr\x07-:-u|{Sy||V{qr\x076-I-=;FFH--sy|n-sy||\\}npv\b-J->;=H--vs-5.vPr{Sy||6-\n----0vs-qrsv{rq5b`RlSY\\\\_l`afYRlcV`VOVYVaf6------qvpnqH----0r{qvs----sy||\\}npv\b-J-pynz}5=;?-7-zv{55>;=-8-PnzrnQvrpv|{;\b69->;=69-=;=9->;=6H--\f--<<-JJJJJJJJJJJ--<<-JJJ-顶部裁切-JJJ--sy|n-||sP]|tr-J-}|5pynz}5:PnzrnQvrpv|{;\b9-=;=9->;=69-@;=6H--vs-5----_||sZnx-K-=;==>-33----Sv{ny]|vv|{;\b-K-z|qryO|{qv{tZn\x07;\b-:-||sP]|tr-7-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6--6-\n----qvpnqH--\f--<<-JJJJJJJJJJJJJJ--<<-JJJ-前置裁切计算-JJJ--0vs-[bZlPYV]]R_`-K-=----o||y-pyv}}rqH----rpA-pyv}}r]|vv|{H----0}ntzn-{|yyly||}ln----s|-5-v{-v-J-=H-v-I-[bZlPYV]]R_`H-v-88-6-\n------pyv}}r]|vv|{-J-pyv}}rh-v-j;znv\x07V{rr-7-Sv{ny]|vv|{H------pyv}}rq-J-5pyv}}rh-v-j;sy||V{qr\x07-I-=;=-\v\v-no5sy||V{qr\x07-:-pyv}}rh-v-j;sy||V{qr\x076-I->;=6H------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\x07-K-:=;B-33-pyv}}r]|vv|{;\x07-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\b-K-:=;B-33-pyv}}r]|vv|{;\b-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{; -K-:=;B-33-pyv}}r]|vv|{; -I-=;BH------vs-5pyv}}rq6-\n--------qvpnqH------\f----\f----0}ntzn-{|yyly||}lr{q--0r{qvs--<<-JJJJJJJJJJJJJJJJJJ--0v{pyqr-Ipyv}}v{tl}yn{rlsntzr{K--rpA-qvssrP|y|-J-rpA5-qvssr9-p|y|Ny}un-7-|}npv\b-6H--<<-JJJ-高度色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6----qvssrP|y|;to-J-trP|y|O\bUrvtu5tnqvr{ar\x07r9-Sv{ny]|vv|{6H--0r{qvs--<<-JJJJJJJJJJJ--<<-JJJ-纯色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6----qvssrP|y|;to-J-p|{n{P|y|H--0r{qvs--<<-JJJJJJJJJJJ--0v{pyqr-Iy|tqr}uoslsntzr{K--0v{pyqr-Izn}lsntzr{K--0v{pyqr-Ip|y|lsntzr{K--0v{pyqr-Iny}unzn}lsntzr{K--0v{pyqr-Iny}unrlsntzr{K--0v{pyqr-I}rpynzn}lsntzr{K--0v{pyqr-I{|znylsntzr{lortv{K--_rsyrprqYvtu-rsyrprqYvtu-J-_rsyrprqYvtu5-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-6-6H--<<-nppzynv|{-5onxrq-v{qvrp-yvtuv{t-|{y\b6--0vsqrs-b`RlYVTUaZN]----rpA-yvtuZn}ar\x07ryJ-r\x07r?Q5-yvtuZn}9-b?-6H----rsyrprqYvtu;v{qvrpQvssr-8J-yvtuZn}ar\x07rya|Yv{rn5-yvtuZn}ar\x07ry-6;to-7-yvtuZn}V{r{v\bH--0ryr----rsyrprqYvtu;v{qvrpQvssr-8J-rp@5->;=-6H--0r{qvs--<<-z|qynv|{--0v{pyqr-In|zn}lsntzr{K--rsyrprqYvtu;v{qvrpQvssr-7J-qvssrP|y|;toH--rp@-|t|v{tYvtu-J-rsyrprqYvtu;v{qvrpQvssrH--0v{pyqr-Ir{zn}lsntzr{K--qvssrP|y|;n-J-qvssrP|y|;n-7-sy||\\}npv\b-7-ovtu{rH--0vs-qrsv{rq5b`Rl\\]N^bR6----qvssrP|y|;n-J->;=H--0r{qvs--tylSntP|y|-J-rpA5-|t|v{tYvtu9-qvssrP|y|;n-6H--<<-JJJ-颜色增益调整-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNQWb`aZR[a6----rp@-uP|y|-J-to?u5tylSntP|y|;to6H----uP|y|;\b-8J-p|y|`nnv|{H----uP|y|; -8J-p|y|Ovtu{rH----tylSntP|y|;to-J-zn\x075u?to5uP|y|69-=;=6H--0r{qvs--<<-JJJJJJJJJJJJJJJJJJ--ZNV[lZ\\QRYlP\\Y\\_--<<色调映射-色彩空间转换--0v{pyqr-I|{rzn}}v{tlsntzr{K--0v{pyqr-Ir{p|qv{tlsntzr{K--0v{pyqr-Is|tlsntzr{K--0v{pyqr-I}rzyv}yvrqlny}unlsntzr{K--0v{pyqr-Iqvurv{tlsntzr{K--<<-JJJ-全景图-JJJ--rp@-}n{|=a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|=;znv\x07h@j;\x07\b 6H--}n{|=a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|=a|crr\x079-}n{|=; ||z6H--}n{|=a|crr\x07-J-}n{|=a|crr\x07-7-zn@5}n{|=;znv\x076H--rp@-}n{|>a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|>;znv\x07h@j;\x07\b 6H--}n{|>a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|>a|crr\x079-}n{|>; ||z6H--}n{|>a|crr\x07-J-}n{|>a|crr\x07-7-zn@5}n{|>;znv\x076H--rpA-}n{|=P|y|-J-r\x07rPor5}n{|=;zn}9-rp@5SYV]lPbORlZN]-7-}n{|=a|crr\x07;\x079-}n{|=a|crr\x07;\b 66H--rpA-}n{|>P|y|-J-r\x07rPor5}n{|>;zn}9-rp@5SYV]lPbORlZN]-7-}n{|>a|crr\x07;\x079-}n{|>a|crr\x07;\b 66H--<<-JJJ-全景图瓦片细化-JJJ--0vs-qrsv{rq5b`Rl_RSV[RQl`P_RR[6----rpA-rsv{rqPnzrn]|v|{-J-rsv{rq`prr{;znv\x07V{rr-7-Sv{ny]|vv|{H----sy|n-rsv{rqg||z-J-zv\x075}n{|=; ||z9-}n{|>; ||z9-rsv{rq`prr{;}n{|6H----rp@-rsv{rqPnzrncrr\x07-J-{|znyv r5rsv{rqPnzrn]|v|{;\x07\b 6H----rsv{rqPnzrncrr\x07-J- ||zcrp|5rp@5=;=9-=;=9->;=69-rsv{rqPnzrncrr\x079-rsv{rqg||z6H----rpA-rsv{rq]|v|{-J-rsv{rq`prr{;}|wrpv|{Znv\x07-7-rpA5rsv{rqPnzrncrr\x079->;=6H----rsv{rq]|v|{-J-rsv{rq]|v|{-<-rsv{rq]|v|{;H----rpA-rsv{rqP|y|-J-r\x07r?Q5rsv{rq`prr{;zn}9-5rsv{rq]|v|{;\x07\b-8->;=6-<-?;=6H----rsv{rqP|y|;n-J-rsv{rqP|y|;n-7-rsv{rq`prr{;|}npv\bH----sy|n-rsv{rq\\rsy|]|tr-J-r}5no5rsv{rq]|v|{;\x0769->;=6-7-r}5no5rsv{rq]|v|{;\b69->;=6-7-r}5rsv{rqPnzrn]|v|{; 9-=;=6H----rsv{rqP|y|-J-zv\x075a_N[`]N_R[alP\\Y\\_9-rsv{rqP|y|9-rsv{rq\\rsy|]|tr6H----rpA-rsv{rq]n{|=P|y|-J-zv\x075rsv{rqP|y|9-a_N[`]N_R[alP\\Y\\_9-rsv{rq`prr{;}n{|6H----rpA-rsv{rq]n{|>P|y|-J-zv\x075rsv{rqP|y|9-a_N[`]N_R[alP\\Y\\_9->;=-:-rsv{rq`prr{;}n{|6H----}n{|=P|y|-J-zv\x075}n{|=P|y|9-rpA5rsv{rq]n{|=P|y|;to9-}n{|=P|y|;n69-rsv{rq]n{|=P|y|;n6H----}n{|>P|y|-J-zv\x075}n{|>P|y|9-rpA5rsv{rq]n{|>P|y|;to9-}n{|>P|y|;n69-rsv{rq]n{|>P|y|;n6H--0r{qvs--<<-JJJ-全景图滤镜-JJJ--0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6----}n{|=P|y|;to-J-r\x07rpSvyr5}n{|=P|y|;to9-}n{|=;zn}Uv|tnz6H----}n{|>P|y|;to-J-r\x07rpSvyr5}n{|>P|y|;to9-}n{|>;zn}Uv|tnz6H--0r{qvs--ZNV[l]N[\\lP\\Y\\_--<<-JJJ-运动过程全景图通过深度剔除-JJJ--0vs-qrsv{rq5b`Rl]N[\\lQR]aU6----sy|n-}n{|=crr\x07Qr}u-J-pynz}5yr{tu5Sv{ny]|vv|{;\x07\b -:-}n{|=;znv\x07h@j;\x07\b 69-=;=9-}n{|=Qr}u;zn\x07Qr}u6H----sy|n-}n{|>crr\x07Qr}u-J-pynz}5yr{tu5Sv{ny]|vv|{;\x07\b -:-}n{|>;znv\x07h@j;\x07\b 69-=;=9-}n{|>Qr}u;zn\x07Qr}u6H----sy|n-}n{|=Qr}uZn}Qr}u-J-{}npx_TONa|Qr}u5r\x07rPor5}n{|=Qr}u;zn}9-}n{|=a|crr\x0766-7-}n{|=Qr}u;zn\x07Qr}uH----sy|n-}n{|>Qr}uZn}Qr}u-J-{}npx_TONa|Qr}u5r\x07rPor5}n{|>Qr}u;zn}9-}n{|>a|crr\x0766-7-}n{|>Qr}u;zn\x07Qr}uH----sy|n-}n{|=Qr}uQryn-J-no5}n{|=Qr}uZn}Qr}u-:-}n{|=crr\x07Qr}u6H----sy|n-}n{|>Qr}uQryn-J-no5}n{|>Qr}uZn}Qr}u-:-}n{|>crr\x07Qr}u6H----sy|n-zn\x07]n{|=Qr}uQryn-J-=;=@-7-}n{|=crr\x07Qr}uH----sy|n-zn\x07]n{|>Qr}uQryn-J-=;=@-7-}n{|>crr\x07Qr}uH----}n{|=P|y|-J-zv\x075}n{|=P|y|9-zv\x075}n{|=P|y|9-tylSntP|y|9-pynz}5}|tr-7->=;=9-=;=9->;=669-r}5zn\x07]n{|=Qr}uQryn9-}n{|=Qr}uQryn66H----}n{|>P|y|-J-zv\x075}n{|>P|y|9-zv\x075}n{|>P|y|9-tylSntP|y|9-pynz}55>;=-:-}|tr6-7->=;=9-=;=9->;=669-r}5zn\x07]n{|>Qr}uQryn9-}n{|>Qr}uQryn66H--0r{qvs--<<-JJJ-全景图颜色混合-JJJ--rpA-}n{|P|y|H--0vs-qrsv{rq5b`RlOYNPXla_N[`VaV\\[6----sy|n-oynpx]|tr-J-np|5:?;=-7-}|tr-8->;=6H----}n{|P|y|-J-zv\x075}n{|=P|y|9-OYNPXlP\\Y\\_9-zv{5>;=9-oynpx]|tr66H----}n{|P|y|-J-zv\x075}n{|P|y|9-}n{|>P|y|9-zn\x075=;=9-oynpx]|tr-:-]V-8->;=66H--0ryvs-qrsv{rq5b`Rl`]_RNQla_N[`VaV\\[6----rp?-prr{Pr{rP||q-J-r|yv|{-7-}v\x07ry_nv|-<-?;=H----sy|n-n{vv|{_nqv-J-qvn{pr5rp?5=;=9-=;=69-prr{Pr{rP||q6-7->;?H----sy|n-n{vv|{]|tr-J-qvn{pr5tylSntP||q;\x07\b9-prr{Pr{rP||q6-<-n{vv|{_nqvH----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-z||ur}5=;=9-=;?9-}|tr-:-n{vv|{]|tr66H--0ryr----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-}|tr6H--0r{qvs--tylSntP|y|-J-zv\x075}n{|P|y|9-tylSntP|y|9-z|qryNy}un6H--ZNV[lR[Q\f"),Ot=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("0qrsv{r-]U\\[T0qrsv{r-ZN_Xl`aR]->;=0qrsv{r-_\\\\SlZN_X->;=nvor-sy|n-lsrnrlvqlznxHn\bv{t-sy|n-_||sZnxHn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-rp@-cvr]|vv|{H{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{H<<u调整{vs|z-sy|n-p|y|`nnv|{H{vs|z-sy|n-p|y|Ovtu{rH0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH--0vsqrs-b`RlaN[TR[a----n\bv{t-rp@-an{tr{H----n\bv{t-rp@-Ovn{tr{H--0r{qvs0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-Il}nlrr\x07K0v{pyqr-I?l}nlrr\x07K0v{pyqr-Iqv}ynprzr{zn}l}nlrr\x07K0v{pyqr-Ir{zn}l}nlrr\x07K0v{pyqr-Ip|y|l}nlrr\x07K0v{pyqr-Is|tl}nlrr\x07K0v{pyqr-Iz|}untrl}nlrr\x07K0v{pyqr-Ixv{{v{tl}nlrr\x07K0v{pyqr-Iunq|zn}l}nlrr\x07K0v{pyqr-Iy|tqr}uosl}nlrr\x07K0v{pyqr-Ipyv}}v{tl}yn{rl}nlrr\x07KZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--0v{pyqr-Ilrr\x07K--0v{pyqr-I?lrr\x07K--0v{pyqr-Ip|y|lrr\x07K--0v{pyqr-Iortv{{|znylrr\x07K--0v{pyqr-Iz|}u{|znylrr\x07K--0v{pyqr-Ixv{onrlrr\x07K--0v{pyqr-Ixv{{|znylrr\x07K--0v{pyqr-Iqrsny{|znylrr\x07K--0vs{qrs-SYNal`UNQRQ-<<-[|zny-p|z}rq-vu-qrvnvr-ur{-SYNal`UNQRQ----[|zny-J-{|znyv r5-n{s|zrq[|zny-6H----0vsqrs-b`RlaN[TR[a------an{tr{-J-{|znyv r5-n{s|zrqan{tr{-6H------Ovn{tr{-J-{|znyv r5-p|5-[|zny9-an{tr{-6-7-n{tr{;-6H----0r{qvs--0r{qvs--0v{pyqr-Iortv{lrr\x07K--0v{pyqr-Iz|}untrlrr\x07K--0v{pyqr-Ixv{{v{tlrr\x07K--0v{pyqr-Iqv}ynprzr{zn}lrr\x07K--0v{pyqr-I}|wrplrr\x07K--0v{pyqr-Iy|tqr}uoslrr\x07K--0v{pyqr-Ipyv}}v{tl}yn{rlrr\x07K--cvr]|vv|{-J-:-z]|vv|{;\x07\b H--Sv{ny]|vv|{-J-rpA5n{s|zrq9->;=6H--0vsqrs-b`RlV[`aN[PV[T----Sv{ny]|vv|{-J-v{n{prZnv\x07-7-Sv{ny]|vv|{H--0r{qvs--Sv{ny]|vv|{-J-z|qryZnv\x07-7-Sv{ny]|vv|{H--zn@-pnzrn_|nv|{Znv\x07-J-zn@5vrZnv\x07h=jh=j9-vrZnv\x07h>jh=j9-vrZnv\x07h?jh=j9-vrZnv\x07h=jh>j9-vrZnv\x07h>jh>j9-vrZnv\x07h?jh>j9-vrZnv\x07h=jh?j9-vrZnv\x07h>jh?j9-vrZnv\x07h?jh?j6H--PnzrnQvrpv|{-J-{|znyv r5pnzrn_|nv|{Znv\x07-7-rp@5=;=9-=;=9-:>;=66H--_||sZnx-J-=;=H--0vs-qrsv{rq5b`RlcR_aRelZN_X6----_||sZnx-J-z||ur}5_\\\\SlZN_X-:-ZN_Xl`aR]9-_\\\\SlZN_X9-lsrnrlvqlznx6H--0r{qvs--0v{pyqr-I|yq}|lrr\x07K--0v{pyqr-Ir{zn}lrr\x07K--0v{pyqr-Iunq|zn}lrr\x07K--0v{pyqr-Is|tlrr\x07K--ZNV[lR[Q\f"),kt=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("0qrsv{r-]U\\[T0qrsv{r-OYNPXlP\\Y\\_-rpA5=;=EC9-=;>=C9-=;>AF9->;=60qrsv{r-a_N[`]N_R[alP\\Y\\_-rpA5=;=9-=;=9-=;=9-=;=60qrsv{r-SYV]lPbORlZN]-:>;=p-]n{|-\n--nz}yrPor-zn}H--sy|n-zn}`v rH--rpA-zn}Uv|tnzH-<<-}rnx-zrn{-zv{-zn\x07--znA-znv\x07H--sy|n- ||zH\fH{vs|z-]n{|-}n{|=H{vs|z-]n{|-}n{|>H0vs-qrsv{rq5b`Rl]N[\\lQR]aU6--p-]n{|Qr}u-\n----nz}yrPor-zn}H----sy|n-zn\x07Qr}uH--\fH--{vs|z-]n{|Qr}u-}n{|=Qr}uH--{vs|z-]n{|Qr}u-}n{|>Qr}uH0r{qvs0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6--p-Svyr]nnz-\n----sy|n-nnv|{`nnv|{OvnH----sy|n-p|{nP|{nOvnH----nz}yr?Q-uvtuyvtu`unq|YZn}H----sy|n-p|y|arz}rnrOvnH----sy|n-p|y|av{OvnH--\fH--{vs|z-Svyr]nnz-}n{|SvyrH0r{qvs0vs-qrsv{rq5b`Rl_RSV[RQl`P_RR[6--p-_rsv{rq`prr{-\n----nz}yr?Q-zn}H----znA-}|wrpv|{Znv\x07H----znA-znv\x07V{rrH----sy|n-|}npv\bH----sy|n-}n{|H--\fH--{vs|z-_rsv{rq`prr{-rsv{rq`prr{H0r{qvs{vs|z-sy|n-sy||V{qr\x07H{vs|z-sy|n-z|qryNy}unH{vs|z-sy|n-}|trH0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6--{vs|z-rp@-p|{n{P|y|H0r{qvs0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6--{vs|z-nz}yr?Q-tnqvr{ar\x07rH0r{qvsp-Pyv}}r-\n--znA-znv\x07V{rrH--sy|n-sy||V{qr\x07H\fH0vs-[bZlPYV]]R_`-K-=--{vs|z-Pyv}}r-pyv}}rh[bZlPYV]]R_`jH0r{qvsn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-sy|n-_||sZnxH{vs|z-sy|n-u|{Sy||V{qr\x07H{vs|z-rp?-r|yv|{H{vs|z-sy|n-}v\x07ry_nv|H{vs|z-rp@-qvssrH{vs|z-sy|n-p|y|Ny}unH{vs|z-rp@-rzvvrH{vs|z-rp@-}rpynH{vs|z-sy|n-uv{v{rH{vs|z-sy|n-|}npv\bH{vs|z-sy|n-ovtu{rH{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{H<<u调整{vs|z-sy|n-p|y|`nnv|{H{vs|z-sy|n-p|y|Ovtu{rH0vs{qrs-SYNal`UNQRQ--0vsqrs-b`RlaN[TR[a----n\bv{t-rp@-an{tr{H----n\bv{t-rp@-Ovn{tr{H--0r{qvs0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-I}npxv{tK0v{pyqr-Iqvurv{tl}nlsntzr{K0v{pyqr-Ip|y|l}nlsntzr{K0v{pyqr-Il}nlsntzr{K0v{pyqr-I?l}nlsntzr{K0v{pyqr-Izn}l}nlsntzr{K0v{pyqr-Iny}unzn}l}nlsntzr{K0v{pyqr-In|zn}l}nlsntzr{K0v{pyqr-Iyvtuzn}l}nlsntzr{K0v{pyqr-Irzvvrzn}l}nlsntzr{K0v{pyqr-IoqsK0v{pyqr-Iporllrsyrpv|{lsntzr{K0v{pyqr-Ir{zn}lp|zz|{l}nlsntzr{K0v{pyqr-Ir{zn}l}nlsntzr{K0v{pyqr-Is|tl}nlsntzr{K0v{pyqr-Iyvtul}nlortv{K0v{pyqr-Iyvtul}u|{tl}nlsntzr{K0v{pyqr-Iunq|zn}l}nlsntzr{K0v{pyqr-Ioz}zn}l}nlsntzr{K0v{pyqr-I{|znyzn}l}nlsntzr{K0v{pyqr-I}rpynzn}l}nlsntzr{K0v{pyqr-Iy|tqr}uosl}nlsntzr{K0v{pyqr-Ipyv}}v{tl}yn{rl}nlsntzr{Krp@- ||zcrp|5rp@-qvrpv|{9-rp@-rp|9-sy|n- ||z6-\n--sy|n-urn-J-q|5qvrpv|{9-rp|6H--rp@-q-J-qvrpv|{-7-urnH--rp@-}-J-rp|-:-qH--rp@-\0-J-}-<- ||zH--r{-{|znyv r5q-8-\x006H\frp@-to?u5rp@-p6-\n--rpA-X-J-rpA5=;=9-:>;=-<-@;=9-?;=-<-@;=9-:>;=6H--rpA-}-J-zv\x075rpA5p;ot9-X; 69-rpA5p;to9-X;\x07\b69-r}5p;o9-p;t66H--rpA-\0-J-zv\x075rpA5};\x07\b9-p;69-rpA5p;9-};\b \x0769-r}5};\x079-p;66H--sy|n-q-J-\0;\x07-:-zv{5\0;9-\0;\b6H--sy|n-r-J->;=r:>=H--r{-rp@5no5\0; -8-5\0;-:-\0;\b6-<-5C;=-7-q-8-r669-q-<-5\0;\x07-8-r69-\0;\x076H\frp@-u?to5rp@-p6-\n--rpA-X-J-rpA5>;=9-?;=-<-@;=9->;=-<-@;=9-@;=6H--rp@-}-J-no5snp5p;\x07\x07\x07-8-X;\x07\b 6-7-C;=-:-X;6H--r{-p; -7-zv\x075X;\x07\x07\x079-pynz}5}-:-X;\x07\x07\x079-=;=9->;=69-p;\b6H\frp@-trP|y|O\bUrvtu5nz}yr?Q-tnqvr{ar\x07r9-rpA-Sv{ny]|vv|{6-\n--sy|n--J-5Sv{ny]|vv|{;\b-:-z|qryO|{qv{tZv{;\b6-<-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6H--r{-r\x07r?Q5tnqvr{ar\x07r9-rp?59-=;B66;toH\f0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6--rp@-svyrUvtuyvtu`unq|5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-u-J-to?u5p|y|6H----u; -J-r\x07r?Q5}n{|Svyr;uvtuyvtu`unq|YZn}9-rp?5u; 9-=;=66;H----p|y|-J-u?to5u6H----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|arz}rnr5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-rz}rnrOvn-J-pynz}5}n{|Svyr;p|y|arz}rnrOvn9-:>==;=9->==;=6H----sy|n-`pnyr-J->;=-8-rz}rnrOvn-<-@==;=H----sy|n-o`pnyr-J->;=-:-rz}rnrOvn-<-@==;=H----p|y|;-J-p|y|;-7-`pnyrH----p|y|;o-J-p|y|;o-7-o`pnyrH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|av{5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-v{Ovn-J-pynz}5}n{|Svyr;p|y|av{Ovn9-:>==;=9->==;=6H----rp@-pnyr-J-rp@5>;=6H----vs-5v{Ovn-K-=;=6-\n------pnyr;t-J->;=-:-v{Ovn-<-?==;=H----\f-ryr-\n------pnyr;-J->;=-8-v{Ovn-7-=;B-<-?==;=H------pnyr;t-J->;=-:-v{Ovn-7-=;B-<-?==;=H------pnyr;o-J->;=-8-v{Ovn-7-=;B-<-?==;=H----\f----p|y|-7J-pnyrH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-to-J-p|y|H----to-J-svyrP|y|arz}rnr5to9-uv|tnz6H----to-J-svyrP|y|av{5to9-uv|tnz6H----r{-toH--\f--rp@-svyrP|{n5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-zrn{cny-J-uv|tnzh>jH----sy|n-zv{cny-J-uv|tnzh?jH----sy|n-zn\x07cny-J-uv|tnzh@jH----sy|n-p|{nOvn-J-pynz}5}n{|Svyr;p|{nP|{nOvn9-:>;=9->;=6H----sy|n-rqOvn-J->;=-7-p|{nOvn-8->;=H----sy|n-ovn`\0nrunys-J-p|{nOvn-7-p|{nOvn-<-?;=H----sy|n-y|}ry|-J-5rqOvn-:->;=6-<-zrn{cnyH----sy|n-y|}ruvtu-J-5>;=-:-rqOvn6-<-5>;=-:-zrn{cny6H----sy|n-ovn-J-5rqOvn-:-zrn{cny6-<-5>;=-:-zrn{cny6H----sy|n-pnyrlsnp|-J->;=-<-5zn\x07cny-:-zv{cny6H----rp@-ny-J-p|y|H----sy|n-zn\x07lny-J-zn\x075zn\x075p|y|;9-p|y|;t69-p|y|;o6H----vs-5p|{nOvn-I-=;=6-\n------ny-J-ny-7-5>;=-:-ovn`\0nrunys6-8-zn\x07lny-7-ovn`\0nrunysH----\f----rp@-rzn}-J-rp@5------5ny;-I-zrn{cny6-L-y|}ry|-7-ny;-8->;=-G-y|}ruvtu-7-ny;-8-ovn9------5ny;t-I-zrn{cny6-L-y|}ry|-7-ny;t-8->;=-G-y|}ruvtu-7-ny;t-8-ovn9------5ny;o-I-zrn{cny6-L-y|}ry|-7-ny;o-8->;=-G-y|}ruvtu-7-ny;o-8-ovn----6H----rp@-|`pnyr-J-rzn}-7-pnyrlsnp|H----p|y|-J-5ny-:-zrn{cny6-7-|`pnyr-8-zrn{cnyH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyr`nnv|{5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-nnv|{Ovn-J-pynz}5}n{|Svyr;nnv|{`nnv|{Ovn9-:>;=9->;=6H----sy|n-n`pnyr-J->;=-8-nnv|{OvnH----sy|n-yzv{n{pr-J-=;?FF-7-p|y|;-8-=;BED-7-p|y|;t-8-=;>>A-7-p|y|;oH----p|y|-J-5p|y|-:-yzv{n{pr6-7-n`pnyr-8-yzv{n{prH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-r\x07rpSvyr5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-to-J-p|y|H----to-J-svyrUvtuyvtu`unq|5to9-uv|tnz6H----to-J-svyrP|y|5to9-uv|tnz6H----to-J-svyrP|{n5to9-uv|tnz6H----to-J-svyr`nnv|{5to9-uv|tnz6H----r{-toH--\f0r{qvsZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--<<-JJJ-楼层-JJJ--o||y-vPr{Sy||-J-u|{Sy||V{qr\x07-I-:=;=>-\v\v-no5sy||V{qr\x07-:-u|{Sy||V{qr\x076-I-=;FFH--sy|n-sy||\\}npv\b-J->;=H--vs-5.vPr{Sy||6-\n----0vs-qrsv{rq5b`RlSY\\\\_l`afYRlcV`VOVYVaf6------qvpnqH----0r{qvs----sy||\\}npv\b-J-pynz}5=;?-7-zv{55>;=-8-PnzrnQvrpv|{;\b69->;=69-=;=9->;=6H--\f--<<-JJJJJJJJJJJ--<<-JJJ-顶部裁切-JJJ--sy|n-||sP]|tr-J-}|5pynz}5:PnzrnQvrpv|{;\b9-=;=9->;=69-@;=6H--vs-5----_||sZnx-K-=;==>-33----Sv{ny]|vv|{;\b-K-z|qryO|{qv{tZn\x07;\b-:-||sP]|tr-7-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6--6-\n----qvpnqH--\f--<<-JJJJJJJJJJJJJJ--<<-JJJ-前置裁切计算-JJJ--0vs-[bZlPYV]]R_`-K-=----o||y-pyv}}rqH----rpA-pyv}}r]|vv|{H----0}ntzn-{|yyly||}ln----s|-5-v{-v-J-=H-v-I-[bZlPYV]]R_`H-v-88-6-\n------pyv}}r]|vv|{-J-pyv}}rh-v-j;znv\x07V{rr-7-Sv{ny]|vv|{H------pyv}}rq-J-5pyv}}rh-v-j;sy||V{qr\x07-I-=;=-\v\v-no5sy||V{qr\x07-:-pyv}}rh-v-j;sy||V{qr\x076-I->;=6H------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\x07-K-:=;B-33-pyv}}r]|vv|{;\x07-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\b-K-:=;B-33-pyv}}r]|vv|{;\b-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{; -K-:=;B-33-pyv}}r]|vv|{; -I-=;BH------vs-5pyv}}rq6-\n--------qvpnqH------\f----\f----0}ntzn-{|yyly||}lr{q--0r{qvs--<<-JJJJJJJJJJJJJJJJ--0v{pyqr-Ipyv}}v{tl}yn{rlsntzr{K--rpA-qvssrP|y|-J-rpA5-qvssr9-p|y|Ny}un-7-|}npv\b-6H--<<-JJJ-高度色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6----qvssrP|y|;to-J-trP|y|O\bUrvtu5tnqvr{ar\x07r9-Sv{ny]|vv|{6H--0r{qvs--<<-JJJJJJJJJJJ--<<-JJJ-纯色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6----qvssrP|y|;to-J-p|{n{P|y|H--0r{qvs--<<-JJJJJJJJJJJ--_rsyrprqYvtu-rsyrprqYvtu-J-_rsyrprqYvtu5-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-6-6H--rp@-|nyRzvvr_nqvn{pr-J-rzvvrH--0v{pyqr-Iy|tqr}uoslsntzr{K--0v{pyqr-Izn}lsntzr{K--0v{pyqr-Ip|y|lsntzr{K--0v{pyqr-Iny}unzn}lsntzr{K--0v{pyqr-Iny}unrlsntzr{K--0v{pyqr-I}rpynzn}lsntzr{K--0v{pyqr-I{|znylsntzr{lortv{K--0v{pyqr-I{|znylsntzr{lzn}K--0v{pyqr-Irzvvrzn}lsntzr{K--<<-nppzynv|{--0v{pyqr-Iyvtul}u|{tlsntzr{K--0v{pyqr-Iyvtulsntzr{lortv{K--0v{pyqr-Iyvtulsntzr{lzn}K--0v{pyqr-Iyvtulsntzr{lr{qK--<<-z|qynv|{--0v{pyqr-In|zn}lsntzr{K--rp@-|t|v{tYvtu-J-rsyrprqYvtu;qvrpQvssr-8-rsyrprqYvtu;v{qvrpQvssr-8-rsyrprqYvtu;qvrp`}rpyn-8-rsyrprqYvtu;v{qvrp`}rpyn-8-|nyRzvvr_nqvn{prH--0v{pyqr-Ir{zn}lsntzr{K--qvssrP|y|;n-J-qvssrP|y|;n-7-sy||\\}npv\b-7-ovtu{rH--0vs-qrsv{rq5b`Rl\\]N^bR6----qvssrP|y|;n-J->;=H--0r{qvs--tylSntP|y|-J-rpA5|t|v{tYvtu9-qvssrP|y|;n6H--<<-JJJ-颜色增益调整-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNQWb`aZR[a6----rp@-uP|y|-J-to?u5tylSntP|y|;to6H----uP|y|;\b-8J-p|y|`nnv|{H----uP|y|; -8J-p|y|Ovtu{rH----tylSntP|y|;to-J-zn\x075u?to5uP|y|69-=;=6H--0r{qvs--<<-JJJJJJJJJJJJJJJJJJ--ZNV[lZ\\QRYlP\\Y\\_--<<色调映射-色彩空间转换--0v{pyqr-I|{rzn}}v{tlsntzr{K--0v{pyqr-Ir{p|qv{tlsntzr{K--0v{pyqr-Is|tlsntzr{K--0v{pyqr-I}rzyv}yvrqlny}unlsntzr{K--0v{pyqr-Iqvurv{tlsntzr{K--<<-JJJ-全景图-JJJ--rp@-}n{|=a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|=;znv\x07h@j;\x07\b 6H--}n{|=a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|=a|crr\x079-}n{|=; ||z6H--}n{|=a|crr\x07-J-}n{|=a|crr\x07-7-zn@5}n{|=;znv\x076H--rp@-}n{|>a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|>;znv\x07h@j;\x07\b 6H--}n{|>a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|>a|crr\x079-}n{|>; ||z6H--}n{|>a|crr\x07-J-}n{|>a|crr\x07-7-zn@5}n{|>;znv\x076H--rpA-}n{|=P|y|-J-r\x07rPor5}n{|=;zn}9-rp@5SYV]lPbORlZN]-7-}n{|=a|crr\x07;\x079-}n{|=a|crr\x07;\b 66H--rpA-}n{|>P|y|-J-r\x07rPor5}n{|>;zn}9-rp@5SYV]lPbORlZN]-7-}n{|>a|crr\x07;\x079-}n{|>a|crr\x07;\b 66H--<<-JJJ-全景图瓦片细化-JJJ--0vs-qrsv{rq5b`Rl_RSV[RQl`P_RR[6----rpA-rsv{rqPnzrn]|v|{-J-rsv{rq`prr{;znv\x07V{rr-7-Sv{ny]|vv|{H----sy|n-rsv{rqg||z-J-zv\x075}n{|=; ||z9-}n{|>; ||z9-rsv{rq`prr{;}n{|6H----rp@-rsv{rqPnzrncrr\x07-J-{|znyv r5rsv{rqPnzrn]|v|{;\x07\b 6H----rsv{rqPnzrncrr\x07-J- ||zcrp|5rp@5=;=9-=;=9->;=69-rsv{rqPnzrncrr\x079-rsv{rqg||z6H----rpA-rsv{rq]|v|{-J-rsv{rq`prr{;}|wrpv|{Znv\x07-7-rpA5rsv{rqPnzrncrr\x079->;=6H----rsv{rq]|v|{-J-rsv{rq]|v|{-<-rsv{rq]|v|{;H----rpA-rsv{rqP|y|-J-r\x07r?Q5rsv{rq`prr{;zn}9-5rsv{rq]|v|{;\x07\b-8->;=6-<-?;=6H----rsv{rqP|y|;n-J-rsv{rqP|y|;n-7-rsv{rq`prr{;|}npv\bH----sy|n-rsv{rq\\rsy|]|tr-J-r}5no5rsv{rq]|v|{;\x0769->;=6-7-r}5no5rsv{rq]|v|{;\b69->;=6-7-r}5rsv{rqPnzrn]|v|{; 9-=;=6H----rsv{rqP|y|-J-zv\x075a_N[`]N_R[alP\\Y\\_9-rsv{rqP|y|9-rsv{rq\\rsy|]|tr6H----rpA-rsv{rq]n{|=P|y|-J-zv\x075rsv{rqP|y|9-a_N[`]N_R[alP\\Y\\_9-rsv{rq`prr{;}n{|6H----rpA-rsv{rq]n{|>P|y|-J-zv\x075rsv{rqP|y|9-a_N[`]N_R[alP\\Y\\_9->;=-:-rsv{rq`prr{;}n{|6H----}n{|=P|y|-J-zv\x075}n{|=P|y|9-rpA5rsv{rq]n{|=P|y|;to9-}n{|=P|y|;n69-rsv{rq]n{|=P|y|;n6H----}n{|>P|y|-J-zv\x075}n{|>P|y|9-rpA5rsv{rq]n{|>P|y|;to9-}n{|>P|y|;n69-rsv{rq]n{|>P|y|;n6H--0r{qvs--<<-JJJ-运动过程全景图通过深度剔除-JJJ--0vs-qrsv{rq5b`Rl]N[\\lQR]aU6----sy|n-}n{|=crr\x07Qr}u-J-pynz}5yr{tu5Sv{ny]|vv|{;\x07\b -:-}n{|=;znv\x07h@j;\x07\b 69-=;=9-}n{|=Qr}u;zn\x07Qr}u6H----sy|n-}n{|>crr\x07Qr}u-J-pynz}5yr{tu5Sv{ny]|vv|{;\x07\b -:-}n{|>;znv\x07h@j;\x07\b 69-=;=9-}n{|>Qr}u;zn\x07Qr}u6H----sy|n-}n{|=Qr}uZn}Qr}u-J-{}npx_TONa|Qr}u5r\x07rPor5}n{|=Qr}u;zn}9-}n{|=a|crr\x0766-7-}n{|=Qr}u;zn\x07Qr}uH----sy|n-}n{|>Qr}uZn}Qr}u-J-{}npx_TONa|Qr}u5r\x07rPor5}n{|>Qr}u;zn}9-}n{|>a|crr\x0766-7-}n{|>Qr}u;zn\x07Qr}uH----sy|n-}n{|=Qr}uQryn-J-no5}n{|=Qr}uZn}Qr}u-:-}n{|=crr\x07Qr}u6H----sy|n-}n{|>Qr}uQryn-J-no5}n{|>Qr}uZn}Qr}u-:-}n{|>crr\x07Qr}u6H----sy|n-zn\x07]n{|=Qr}uQryn-J-=;=@-7-}n{|=crr\x07Qr}uH----sy|n-zn\x07]n{|>Qr}uQryn-J-=;=@-7-}n{|>crr\x07Qr}uH----}n{|=P|y|-J-zv\x075}n{|=P|y|9-zv\x075}n{|=P|y|9-tylSntP|y|9-pynz}5}|tr-7->=;=9-=;=9->;=669-r}5zn\x07]n{|=Qr}uQryn9-}n{|=Qr}uQryn66H----}n{|>P|y|-J-zv\x075}n{|>P|y|9-zv\x075}n{|>P|y|9-tylSntP|y|9-pynz}55>;=-:-}|tr6-7->=;=9-=;=9->;=669-r}5zn\x07]n{|>Qr}uQryn9-}n{|>Qr}uQryn66H--0r{qvs--<<-JJJ-全景图滤镜-JJJ--0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6----}n{|=P|y|;to-J-r\x07rpSvyr5}n{|=P|y|;to9-}n{|=;zn}Uv|tnz6H----}n{|>P|y|;to-J-r\x07rpSvyr5}n{|>P|y|;to9-}n{|>;zn}Uv|tnz6H--0r{qvs--ZNV[l]N[\\lP\\Y\\_--<<-JJJ-全景图颜色混合-JJJ--rpA-}n{|P|y|H--0vs-qrsv{rq5b`RlOYNPXla_N[`VaV\\[6----sy|n-oynpx]|tr-J-np|5:?;=-7-}|tr-8->;=6H----}n{|P|y|-J-zv\x075}n{|=P|y|9-OYNPXlP\\Y\\_9-zv{5>;=9-oynpx]|tr66H----}n{|P|y|-J-zv\x075}n{|P|y|9-}n{|>P|y|9-zn\x075=;=9-oynpx]|tr-:-]V-8->;=66H--0ryvs-qrsv{rq5b`Rl`]_RNQla_N[`VaV\\[6----rp?-prr{Pr{rP||q-J-r|yv|{-7-}v\x07ry_nv|-<-?;=H----sy|n-n{vv|{_nqv-J-qvn{pr5rp?5=;=9-=;=69-prr{Pr{rP||q6-7->;?H----sy|n-n{vv|{]|tr-J-qvn{pr5tylSntP||q;\x07\b9-prr{Pr{rP||q6-<-n{vv|{_nqvH----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-z||ur}5=;=9-=;?9-}|tr-:-n{vv|{]|tr66H--0ryr----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-}|tr6H--0r{qvs--tylSntP|y|-J-zv\x075}n{|P|y|9-tylSntP|y|9-z|qryNy}un6H--ZNV[lR[Q\f"),At=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("0qrsv{r-`aN[QN_Q0qrsv{r-ZN_Xl`aR]->;=0qrsv{r-_\\\\SlZN_X->;=nvor-sy|n-lsrnrlvqlznxHn\bv{t-sy|n-_||sZnxHn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-rp@-cvr]|vv|{H{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{H<<u调整{vs|z-sy|n-p|y|`nnv|{H{vs|z-sy|n-p|y|Ovtu{rH0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH--0vsqrs-b`RlaN[TR[a----n\bv{t-rp@-an{tr{H----n\bv{t-rp@-Ovn{tr{H--0r{qvs0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-Il}nlrr\x07K0v{pyqr-I?l}nlrr\x07K0v{pyqr-Iqv}ynprzr{zn}l}nlrr\x07K0v{pyqr-Ir{zn}l}nlrr\x07K0v{pyqr-Ip|y|l}nlrr\x07K0v{pyqr-Is|tl}nlrr\x07K0v{pyqr-Iz|}untrl}nlrr\x07K0v{pyqr-Ixv{{v{tl}nlrr\x07K0v{pyqr-Iunq|zn}l}nlrr\x07K0v{pyqr-Iy|tqr}uosl}nlrr\x07K0v{pyqr-Ipyv}}v{tl}yn{rl}nlrr\x07KZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--0v{pyqr-Ilrr\x07K--0v{pyqr-I?lrr\x07K--0v{pyqr-Ip|y|lrr\x07K--0v{pyqr-Iortv{{|znylrr\x07K--0v{pyqr-Iz|}u{|znylrr\x07K--0v{pyqr-Ixv{onrlrr\x07K--0v{pyqr-Ixv{{|znylrr\x07K--0v{pyqr-Iqrsny{|znylrr\x07K0vs{qrs-SYNal`UNQRQ-<<-[|zny-p|z}rq-vu-qrvnvr-ur{-SYNal`UNQRQ--[|zny-J-{|znyv r5-n{s|zrq[|zny-6H--0vsqrs-b`RlaN[TR[a----an{tr{-J-{|znyv r5-n{s|zrqan{tr{-6H----Ovn{tr{-J-{|znyv r5-p|5-[|zny9-an{tr{-6-7-n{tr{;-6H--0r{qvs0r{qvs--0v{pyqr-Iortv{lrr\x07K--0v{pyqr-Iz|}untrlrr\x07K--0v{pyqr-Ixv{{v{tlrr\x07K--0v{pyqr-Iqv}ynprzr{zn}lrr\x07K--0v{pyqr-I}|wrplrr\x07K--0v{pyqr-Iy|tqr}uoslrr\x07K--0v{pyqr-Ipyv}}v{tl}yn{rlrr\x07K--cvr]|vv|{-J-:-z]|vv|{;\x07\b H--Sv{ny]|vv|{-J-rpA5n{s|zrq9->;=6H--0vsqrs-b`RlV[`aN[PV[T----Sv{ny]|vv|{-J-v{n{prZnv\x07-7-Sv{ny]|vv|{H--0r{qvs--Sv{ny]|vv|{-J-z|qryZnv\x07-7-Sv{ny]|vv|{H--zn@-pnzrn_|nv|{Znv\x07-J-zn@5vrZnv\x07h=jh=j9-vrZnv\x07h>jh=j9-vrZnv\x07h?jh=j9-vrZnv\x07h=jh>j9-vrZnv\x07h>jh>j9-vrZnv\x07h?jh>j9-vrZnv\x07h=jh?j9-vrZnv\x07h>jh?j9-vrZnv\x07h?jh?j6H--PnzrnQvrpv|{-J-{|znyv r5pnzrn_|nv|{Znv\x07-7-rp@5=;=9-=;=9-:>;=66H--_||sZnx-J-=;=H--0vs-qrsv{rq5b`RlcR_aRelZN_X6----_||sZnx-J-z||ur}5_\\\\SlZN_X-:-ZN_Xl`aR]9-_\\\\SlZN_X9-lsrnrlvqlznx6H--0r{qvs--0v{pyqr-I|yq}|lrr\x07K--0v{pyqr-Ir{zn}lrr\x07K--0v{pyqr-Iunq|zn}lrr\x07K--0v{pyqr-Is|tlrr\x07K--ZNV[lR[Q\f"),jt=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("0qrsv{r-`aN[QN_Q0qrsv{r-_RSYRPaVcVaf0qrsv{r-PYRN_P\\Na0qrsv{r-a_N[`]N_R[Pf0qrsv{r-OYNPXlP\\Y\\_-rpA5=;=EC9-=;>=C9-=;>AF9->;=60qrsv{r-a_N[`]N_R[alP\\Y\\_-rpA5=;=9-=;=9-=;=9-=;=60qrsv{r-SYV]lPbORlZN]-:>;=p-]n{|-\n--nz}yrPor-zn}H--sy|n-zn}`v rH--rpA-zn}Uv|tnzH-<<-}rnx-zrn{-zv{-zn\x07--znA-znv\x07H--sy|n- ||zH\fH{vs|z-]n{|-}n{|=H{vs|z-]n{|-}n{|>H0vs-qrsv{rq5b`Rl]N[\\lQR]aU6--p-]n{|Qr}u-\n----nz}yrPor-zn}H----sy|n-zn\x07Qr}uH--\fH--{vs|z-]n{|Qr}u-}n{|=Qr}uH--{vs|z-]n{|Qr}u-}n{|>Qr}uH0r{qvs0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6--p-Svyr]nnz-\n----sy|n-nnv|{`nnv|{OvnH----sy|n-p|{nP|{nOvnH----nz}yr?Q-uvtuyvtu`unq|YZn}H----sy|n-p|y|arz}rnrOvnH----sy|n-p|y|av{OvnH--\fH--{vs|z-Svyr]nnz-}n{|SvyrH0r{qvs0vs-qrsv{rq5b`Rl_RSV[RQl`P_RR[6--p-_rsv{rq`prr{-\n----nz}yr?Q-zn}H----znA-}|wrpv|{Znv\x07H----znA-znv\x07V{rrH----sy|n-|}npv\bH----sy|n-}n{|H--\fH--{vs|z-_rsv{rq`prr{-rsv{rq`prr{H0r{qvs{vs|z-sy|n-sy||V{qr\x07H{vs|z-sy|n-z|qryNy}unH{vs|z-sy|n-}|trH0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6--{vs|z-rp@-p|{n{P|y|H0r{qvs0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6--{vs|z-nz}yr?Q-tnqvr{ar\x07rH0r{qvsp-Pyv}}r-\n--znA-znv\x07V{rrH--sy|n-sy||V{qr\x07H\fH0vs-[bZlPYV]]R_`-K-=--{vs|z-Pyv}}r-pyv}}rh[bZlPYV]]R_`jH0r{qvsn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-sy|n-_||sZnxH{vs|z-sy|n-u|{Sy||V{qr\x07H{vs|z-rp?-r|yv|{H{vs|z-sy|n-}v\x07ry_nv|H{vs|z-rp@-qvssrH{vs|z-sy|n-p|y|Ny}unH{vs|z-rp@-rzvvrH{vs|z-sy|n-|tu{rH{vs|z-sy|n-zrny{rH{vs|z-sy|n-|}npv\bH{vs|z-sy|n-ovtu{rH0vsqrs-a_N[`]N_R[Pf--{vs|z-sy|n-n{}nr{p\bH0r{qvs0vsqrs-_RSYRPaVcVaf--{vs|z-sy|n-rsyrpvv\bH0r{qvs0vsqrs-PYRN_P\\Na--{vs|z-sy|n-pyrnp|nH--{vs|z-sy|n-pyrnp|n_|tu{rH0r{qvs0vsqrs-b`Rl`URR[--{vs|z-rp@-urr{H0r{qvs{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{H<<u调整{vs|z-sy|n-p|y|`nnv|{H{vs|z-sy|n-p|y|Ovtu{rHn\bv{t-rp@-cvr]|vv|{H0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH--0vsqrs-b`RlaN[TR[a----n\bv{t-rp@-an{tr{H----n\bv{t-rp@-Ovn{tr{H--0r{qvs0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-I}npxv{tK0v{pyqr-Iqvurv{tl}nlsntzr{K0v{pyqr-Ip|y|l}nlsntzr{K0v{pyqr-Il}nlsntzr{K0v{pyqr-I?l}nlsntzr{K0v{pyqr-Izn}l}nlsntzr{K0v{pyqr-Iny}unzn}l}nlsntzr{K0v{pyqr-In|zn}l}nlsntzr{K0v{pyqr-Iyvtuzn}l}nlsntzr{K0v{pyqr-Irzvvrzn}l}nlsntzr{K0v{pyqr-IoqsK0v{pyqr-Iporllrsyrpv|{lsntzr{K0v{pyqr-Ir{zn}lp|zz|{l}nlsntzr{K0v{pyqr-Ir{zn}l}u\bvpnyl}nlsntzr{K0v{pyqr-Is|tl}nlsntzr{K0v{pyqr-Iyvtul}nlortv{K0v{pyqr-Iyvtul}u\bvpnyl}nlsntzr{K0v{pyqr-Iunq|zn}l}nlsntzr{K0v{pyqr-Ioz}zn}l}nlsntzr{K0v{pyqr-I{|znyzn}l}nlsntzr{K0v{pyqr-Ipyrnp|nl}nlsntzr{K0v{pyqr-I|tu{rzn}l}nlsntzr{K0v{pyqr-Izrny{rzn}l}nlsntzr{K0v{pyqr-Iy|tqr}uosl}nlsntzr{K0v{pyqr-Ipyv}}v{tl}yn{rl}nlsntzr{Krp@- ||zcrp|5rp@-qvrpv|{9-rp@-rp|9-sy|n- ||z6-\n--sy|n-urn-J-q|5qvrpv|{9-rp|6H--rp@-q-J-qvrpv|{-7-urnH--rp@-}-J-rp|-:-qH--rp@-\0-J-}-<- ||zH--r{-{|znyv r5q-8-\x006H\frp@-to?u5rp@-p6-\n--rpA-X-J-rpA5=;=9-:>;=-<-@;=9-?;=-<-@;=9-:>;=6H--rpA-}-J-zv\x075rpA5p;ot9-X; 69-rpA5p;to9-X;\x07\b69-r}5p;o9-p;t66H--rpA-\0-J-zv\x075rpA5};\x07\b9-p;69-rpA5p;9-};\b \x0769-r}5};\x079-p;66H--sy|n-q-J-\0;\x07-:-zv{5\0;9-\0;\b6H--sy|n-r-J->;=r:>=H--r{-rp@5no5\0; -8-5\0;-:-\0;\b6-<-5C;=-7-q-8-r669-q-<-5\0;\x07-8-r69-\0;\x076H\frp@-u?to5rp@-p6-\n--rpA-X-J-rpA5>;=9-?;=-<-@;=9->;=-<-@;=9-@;=6H--rp@-}-J-no5snp5p;\x07\x07\x07-8-X;\x07\b 6-7-C;=-:-X;6H--r{-p; -7-zv\x075X;\x07\x07\x079-pynz}5}-:-X;\x07\x07\x079-=;=9->;=69-p;\b6H\frp@-trP|y|O\bUrvtu5nz}yr?Q-tnqvr{ar\x07r9-rpA-Sv{ny]|vv|{6-\n--sy|n--J-5Sv{ny]|vv|{;\b-:-z|qryO|{qv{tZv{;\b6-<-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6H--r{-r\x07r?Q5tnqvr{ar\x07r9-rp?59-=;B66;toH\f0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6--rp@-svyrUvtuyvtu`unq|5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-u-J-to?u5p|y|6H----u; -J-r\x07r?Q5}n{|Svyr;uvtuyvtu`unq|YZn}9-rp?5u; 9-=;=66;H----p|y|-J-u?to5u6H----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|arz}rnr5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-rz}rnrOvn-J-pynz}5}n{|Svyr;p|y|arz}rnrOvn9-:>==;=9->==;=6H----sy|n-`pnyr-J->;=-8-rz}rnrOvn-<-@==;=H----sy|n-o`pnyr-J->;=-:-rz}rnrOvn-<-@==;=H----p|y|;-J-p|y|;-7-`pnyrH----p|y|;o-J-p|y|;o-7-o`pnyrH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|av{5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-v{Ovn-J-pynz}5}n{|Svyr;p|y|av{Ovn9-:>==;=9->==;=6H----rp@-pnyr-J-rp@5>;=6H----vs-5v{Ovn-K-=;=6-\n------pnyr;t-J->;=-:-v{Ovn-<-?==;=H----\f-ryr-\n------pnyr;-J->;=-8-v{Ovn-7-=;B-<-?==;=H------pnyr;t-J->;=-:-v{Ovn-7-=;B-<-?==;=H------pnyr;o-J->;=-8-v{Ovn-7-=;B-<-?==;=H----\f----p|y|-7J-pnyrH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyrP|y|5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-to-J-p|y|H----to-J-svyrP|y|arz}rnr5to9-uv|tnz6H----to-J-svyrP|y|av{5to9-uv|tnz6H----r{-toH--\f--rp@-svyrP|{n5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-zrn{cny-J-uv|tnzh>jH----sy|n-zv{cny-J-uv|tnzh?jH----sy|n-zn\x07cny-J-uv|tnzh@jH----sy|n-p|{nOvn-J-pynz}5}n{|Svyr;p|{nP|{nOvn9-:>;=9->;=6H----sy|n-rqOvn-J->;=-7-p|{nOvn-8->;=H----sy|n-ovn`\0nrunys-J-p|{nOvn-7-p|{nOvn-<-?;=H----sy|n-y|}ry|-J-5rqOvn-:->;=6-<-zrn{cnyH----sy|n-y|}ruvtu-J-5>;=-:-rqOvn6-<-5>;=-:-zrn{cny6H----sy|n-ovn-J-5rqOvn-:-zrn{cny6-<-5>;=-:-zrn{cny6H----sy|n-pnyrlsnp|-J->;=-<-5zn\x07cny-:-zv{cny6H----rp@-ny-J-p|y|H----sy|n-zn\x07lny-J-zn\x075zn\x075p|y|;9-p|y|;t69-p|y|;o6H----vs-5p|{nOvn-I-=;=6-\n------ny-J-ny-7-5>;=-:-ovn`\0nrunys6-8-zn\x07lny-7-ovn`\0nrunysH----\f----rp@-rzn}-J-rp@5------5ny;-I-zrn{cny6-L-y|}ry|-7-ny;-8->;=-G-y|}ruvtu-7-ny;-8-ovn9------5ny;t-I-zrn{cny6-L-y|}ry|-7-ny;t-8->;=-G-y|}ruvtu-7-ny;t-8-ovn9------5ny;o-I-zrn{cny6-L-y|}ry|-7-ny;o-8->;=-G-y|}ruvtu-7-ny;o-8-ovn----6H----rp@-|`pnyr-J-rzn}-7-pnyrlsnp|H----p|y|-J-5ny-:-zrn{cny6-7-|`pnyr-8-zrn{cnyH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-svyr`nnv|{5rp@-p|y|9-rpA-uv|tnz6-\n----sy|n-nnv|{Ovn-J-pynz}5}n{|Svyr;nnv|{`nnv|{Ovn9-:>;=9->;=6H----sy|n-n`pnyr-J->;=-8-nnv|{OvnH----sy|n-yzv{n{pr-J-=;?FF-7-p|y|;-8-=;BED-7-p|y|;t-8-=;>>A-7-p|y|;oH----p|y|-J-5p|y|-:-yzv{n{pr6-7-n`pnyr-8-yzv{n{prH----r{-pynz}5p|y|9-=;=9->;=6H--\f--rp@-r\x07rpSvyr5rp@-p|y|9-rpA-uv|tnz6-\n----rp@-to-J-p|y|H----to-J-svyrUvtuyvtu`unq|5to9-uv|tnz6H----to-J-svyrP|y|5to9-uv|tnz6H----to-J-svyrP|{n5to9-uv|tnz6H----to-J-svyr`nnv|{5to9-uv|tnz6H----r{-toH--\f0r{qvsZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--<<-JJJ-楼层-JJJ--o||y-vPr{Sy||-J-u|{Sy||V{qr\x07-I-:=;=>-\v\v-no5sy||V{qr\x07-:-u|{Sy||V{qr\x076-I-=;FFH--sy|n-sy||\\}npv\b-J->;=H--vs-5.vPr{Sy||6-\n----0vs-qrsv{rq5b`RlSY\\\\_l`afYRlcV`VOVYVaf6------qvpnqH----0r{qvs----sy||\\}npv\b-J-pynz}5=;?-7-zv{55>;=-8-PnzrnQvrpv|{;\b69->;=69-=;=9->;=6H--\f--<<-JJJJJJJJJJJ--<<-JJJ-顶部裁切-JJJ--sy|n-||sP]|tr-J-}|5pynz}5:PnzrnQvrpv|{;\b9-=;=9->;=69-@;=6H--vs-5----_||sZnx-K-=;==>-33----Sv{ny]|vv|{;\b-K-z|qryO|{qv{tZn\x07;\b-:-||sP]|tr-7-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6--6-\n----qvpnqH--\f--<<-JJJJJJJJJJJJJJ--<<-JJJ-前置裁切计算-JJJ--0vs-[bZlPYV]]R_`-K-=----o||y-pyv}}rqH----rpA-pyv}}r]|vv|{H----0}ntzn-{|yyly||}ln----s|-5-v{-v-J-=H-v-I-[bZlPYV]]R_`H-v-88-6-\n------pyv}}r]|vv|{-J-pyv}}rh-v-j;znv\x07V{rr-7-Sv{ny]|vv|{H------pyv}}rq-J-5pyv}}rh-v-j;sy||V{qr\x07-I-=;=-\v\v-no5sy||V{qr\x07-:-pyv}}rh-v-j;sy||V{qr\x076-I->;=6H------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\x07-K-:=;B-33-pyv}}r]|vv|{;\x07-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\b-K-:=;B-33-pyv}}r]|vv|{;\b-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{; -K-:=;B-33-pyv}}r]|vv|{; -I-=;BH------vs-5pyv}}rq6-\n--------qvpnqH------\f----\f----0}ntzn-{|yyly||}lr{q--0r{qvs--<<-JJJJJJJJJJJJJJJJ--0v{pyqr-Ipyv}}v{tl}yn{rlsntzr{K--rpA-qvssrP|y|-J-rpA5-qvssr9-p|y|Ny}un-7-|}npv\b-6H--<<-JJJ-高度色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6----qvssrP|y|;to-J-trP|y|O\bUrvtu5tnqvr{ar\x07r9-Sv{ny]|vv|{6H--0r{qvs--<<-JJJJJJJJJJJ--<<-JJJ-纯色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6----qvssrP|y|;to-J-p|{n{P|y|H--0r{qvs--<<-JJJJJJJJJJJ--_rsyrprqYvtu-rsyrprqYvtu-J-_rsyrprqYvtu5-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-6-6H--rp@-|nyRzvvr_nqvn{pr-J-rzvvrH--0v{pyqr-Iy|tqr}uoslsntzr{K--0v{pyqr-Izn}lsntzr{K--0v{pyqr-Ip|y|lsntzr{K--0v{pyqr-Iny}unzn}lsntzr{K--0v{pyqr-Iny}unrlsntzr{K--0v{pyqr-I|tu{rzn}lsntzr{K0v{pyqr-Izrny{rzn}lsntzr{K--0v{pyqr-I{|znylsntzr{lortv{K--0v{pyqr-I{|znylsntzr{lzn}K--0v{pyqr-Ipyrnp|nl{|znylsntzr{lortv{K--0v{pyqr-Ipyrnp|nl{|znylsntzr{lzn}K--0v{pyqr-Irzvvrzn}lsntzr{K--<<-nppzynv|{--0v{pyqr-Iyvtul}u\bvpnylsntzr{K--0v{pyqr-Iyvtulsntzr{lortv{K--0v{pyqr-Iyvtulsntzr{lzn}K--0v{pyqr-Iyvtulsntzr{lr{qK--<<-z|qynv|{--0v{pyqr-In|zn}lsntzr{K--rp@-|t|v{tYvtu-J-rsyrprqYvtu;qvrpQvssr-8-rsyrprqYvtu;v{qvrpQvssr-8-rsyrprqYvtu;qvrp`}rpyn-8-rsyrprqYvtu;v{qvrp`}rpyn-8-|nyRzvvr_nqvn{prH<<-s|-n{zvv|{--0vsqrs-a_N[`]N_R[Pf----qvssrP|y|;n-7J-nnr5->;=-:-n{}nr{p\b-7-5>;=-:-znrvny;}rpyn_|tu{r6-8-yv{rna|_rynvrYzv{n{pr5-rsyrprqYvtu;qvrp`}rpyn-8-rsyrprqYvtu;v{qvrp`}rpyn-6-6H--0r{qvs--qvssrP|y|;n-J-qvssrP|y|;n-7-sy||\\}npv\b-7-ovtu{rH--0vs-qrsv{rq5b`Rl\\]N^bR6----qvssrP|y|;n-J->;=H--0r{qvs--tylSntP|y|-J-rpA5|t|v{tYvtu9-qvssrP|y|;n6H--<<-JJJ-颜色增益调整-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNQWb`aZR[a6----rp@-uP|y|-J-to?u5tylSntP|y|;to6H----uP|y|;\b-8J-p|y|`nnv|{H----uP|y|; -8J-p|y|Ovtu{rH----tylSntP|y|;to-J-zn\x075u?to5uP|y|69-=;=6H--0r{qvs--<<-JJJJJJJJJJJJJJJJJJ--ZNV[lZ\\QRYlP\\Y\\_--<<色调映射-色彩空间转换--0v{pyqr-I|{rzn}}v{tlsntzr{K--0v{pyqr-Ir{p|qv{tlsntzr{K--0v{pyqr-Is|tlsntzr{K--0v{pyqr-I}rzyv}yvrqlny}unlsntzr{K--0v{pyqr-Iqvurv{tlsntzr{K--<<-JJJ-全景图-JJJ--rp@-}n{|=a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|=;znv\x07h@j;\x07\b 6H--}n{|=a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|=a|crr\x079-}n{|=; ||z6H--}n{|=a|crr\x07-J-}n{|=a|crr\x07-7-zn@5}n{|=;znv\x076H--rp@-}n{|>a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|>;znv\x07h@j;\x07\b 6H--}n{|>a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|>a|crr\x079-}n{|>; ||z6H--}n{|>a|crr\x07-J-}n{|>a|crr\x07-7-zn@5}n{|>;znv\x076H--rpA-}n{|=P|y|-J-r\x07rPor5}n{|=;zn}9-rp@5SYV]lPbORlZN]-7-}n{|=a|crr\x07;\x079-}n{|=a|crr\x07;\b 66H--rpA-}n{|>P|y|-J-r\x07rPor5}n{|>;zn}9-rp@5SYV]lPbORlZN]-7-}n{|>a|crr\x07;\x079-}n{|>a|crr\x07;\b 66H--<<-JJJ-全景图瓦片细化-JJJ--0vs-qrsv{rq5b`Rl_RSV[RQl`P_RR[6----rpA-rsv{rqPnzrn]|v|{-J-rsv{rq`prr{;znv\x07V{rr-7-Sv{ny]|vv|{H----sy|n-rsv{rqg||z-J-zv\x075}n{|=; ||z9-}n{|>; ||z9-rsv{rq`prr{;}n{|6H----rp@-rsv{rqPnzrncrr\x07-J-{|znyv r5rsv{rqPnzrn]|v|{;\x07\b 6H----rsv{rqPnzrncrr\x07-J- ||zcrp|5rp@5=;=9-=;=9->;=69-rsv{rqPnzrncrr\x079-rsv{rqg||z6H----rpA-rsv{rq]|v|{-J-rsv{rq`prr{;}|wrpv|{Znv\x07-7-rpA5rsv{rqPnzrncrr\x079->;=6H----rsv{rq]|v|{-J-rsv{rq]|v|{-<-rsv{rq]|v|{;H----rpA-rsv{rqP|y|-J-r\x07r?Q5rsv{rq`prr{;zn}9-5rsv{rq]|v|{;\x07\b-8->;=6-<-?;=6H----rsv{rqP|y|;n-J-rsv{rqP|y|;n-7-rsv{rq`prr{;|}npv\bH----sy|n-rsv{rq\\rsy|]|tr-J-r}5no5rsv{rq]|v|{;\x0769->;=6-7-r}5no5rsv{rq]|v|{;\b69->;=6-7-r}5rsv{rqPnzrn]|v|{; 9-=;=6H----rsv{rqP|y|-J-zv\x075a_N[`]N_R[alP\\Y\\_9-rsv{rqP|y|9-rsv{rq\\rsy|]|tr6H----rpA-rsv{rq]n{|=P|y|-J-zv\x075rsv{rqP|y|9-a_N[`]N_R[alP\\Y\\_9-rsv{rq`prr{;}n{|6H----rpA-rsv{rq]n{|>P|y|-J-zv\x075rsv{rqP|y|9-a_N[`]N_R[alP\\Y\\_9->;=-:-rsv{rq`prr{;}n{|6H----}n{|=P|y|-J-zv\x075}n{|=P|y|9-rpA5rsv{rq]n{|=P|y|;to9-}n{|=P|y|;n69-rsv{rq]n{|=P|y|;n6H----}n{|>P|y|-J-zv\x075}n{|>P|y|9-rpA5rsv{rq]n{|>P|y|;to9-}n{|>P|y|;n69-rsv{rq]n{|>P|y|;n6H--0r{qvs--<<-JJJ-运动过程全景图通过深度剔除-JJJ--0vs-qrsv{rq5b`Rl]N[\\lQR]aU6----sy|n-}n{|=crr\x07Qr}u-J-pynz}5yr{tu5Sv{ny]|vv|{;\x07\b -:-}n{|=;znv\x07h@j;\x07\b 69-=;=9-}n{|=Qr}u;zn\x07Qr}u6H----sy|n-}n{|>crr\x07Qr}u-J-pynz}5yr{tu5Sv{ny]|vv|{;\x07\b -:-}n{|>;znv\x07h@j;\x07\b 69-=;=9-}n{|>Qr}u;zn\x07Qr}u6H----sy|n-}n{|=Qr}uZn}Qr}u-J-{}npx_TONa|Qr}u5r\x07rPor5}n{|=Qr}u;zn}9-}n{|=a|crr\x0766-7-}n{|=Qr}u;zn\x07Qr}uH----sy|n-}n{|>Qr}uZn}Qr}u-J-{}npx_TONa|Qr}u5r\x07rPor5}n{|>Qr}u;zn}9-}n{|>a|crr\x0766-7-}n{|>Qr}u;zn\x07Qr}uH----sy|n-}n{|=Qr}uQryn-J-no5}n{|=Qr}uZn}Qr}u-:-}n{|=crr\x07Qr}u6H----sy|n-}n{|>Qr}uQryn-J-no5}n{|>Qr}uZn}Qr}u-:-}n{|>crr\x07Qr}u6H----sy|n-zn\x07]n{|=Qr}uQryn-J-=;=@-7-}n{|=crr\x07Qr}uH----sy|n-zn\x07]n{|>Qr}uQryn-J-=;=@-7-}n{|>crr\x07Qr}uH----}n{|=P|y|-J-zv\x075}n{|=P|y|9-zv\x075}n{|=P|y|9-tylSntP|y|9-pynz}5}|tr-7->=;=9-=;=9->;=669-r}5zn\x07]n{|=Qr}uQryn9-}n{|=Qr}uQryn66H----}n{|>P|y|-J-zv\x075}n{|>P|y|9-zv\x075}n{|>P|y|9-tylSntP|y|9-pynz}55>;=-:-}|tr6-7->=;=9-=;=9->;=669-r}5zn\x07]n{|>Qr}uQryn9-}n{|>Qr}uQryn66H--0r{qvs--<<-JJJ-全景图滤镜-JJJ--0vs-qrsv{rq5b`Rl]N[\\lSVYaR_6----}n{|=P|y|;to-J-r\x07rpSvyr5}n{|=P|y|;to9-}n{|=;zn}Uv|tnz6H----}n{|>P|y|;to-J-r\x07rpSvyr5}n{|>P|y|;to9-}n{|>;zn}Uv|tnz6H--0r{qvs--ZNV[l]N[\\lP\\Y\\_--<<-JJJ-全景图颜色混合-JJJ--rpA-}n{|P|y|H--0vs-qrsv{rq5b`RlOYNPXla_N[`VaV\\[6----sy|n-oynpx]|tr-J-np|5:?;=-7-}|tr-8->;=6H----}n{|P|y|-J-zv\x075}n{|=P|y|9-OYNPXlP\\Y\\_9-zv{5>;=9-oynpx]|tr66H----}n{|P|y|-J-zv\x075}n{|P|y|9-}n{|>P|y|9-zn\x075=;=9-oynpx]|tr-:-]V-8->;=66H--0ryvs-qrsv{rq5b`Rl`]_RNQla_N[`VaV\\[6----rp?-prr{Pr{rP||q-J-r|yv|{-7-}v\x07ry_nv|-<-?;=H----sy|n-n{vv|{_nqv-J-qvn{pr5rp?5=;=9-=;=69-prr{Pr{rP||q6-7->;?H----sy|n-n{vv|{]|tr-J-qvn{pr5tylSntP||q;\x07\b9-prr{Pr{rP||q6-<-n{vv|{_nqvH----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-z||ur}5=;=9-=;?9-}|tr-:-n{vv|{]|tr66H--0ryr----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-}|tr6H--0r{qvs--tylSntP|y|-J-zv\x075}n{|P|y|9-tylSntP|y|9-z|qryNy}un6H--ZNV[lR[Q\f"),V=class extends c.Uniform{constructor(e){super(e)}};function Mt(e,t){t&&e.value&&(t instanceof c.Color||t instanceof c.Matrix4||t instanceof c.Matrix3||t instanceof c.Vector2||t instanceof c.Vector3||t instanceof c.Vector4)?e.value.copy(t):Array.isArray(t)?e.value=t.slice():e.value=t}function Nt(e){return c.UniformsUtils.clone(e)}function Pt(...e){return c.UniformsUtils.merge(e)}function H(e,t,n){return Object.defineProperty(e,t,n)}var Ft=null;function It(e){if(Ft!==null&&typeof Ft.property){let e=Ft;return Ft=It.prototype=null,e}return Ft=It.prototype=e==null?Object.create(null):e,new It}var Lt=10;for(let e=0;e<=Lt;e++)It();function Rt(e){return It(e)}var zt=Math.PI*2;function Bt(e){return e>=0&&e<zt?e:(e%zt+zt)%zt}function Vt(e,t){let n=Math.abs(Math.cos(e.latitude)),r=-Math.sin(e.longitude)*n,i=-Math.sin(e.latitude),a=-Math.cos(e.longitude)*n;return t?t.set(r,i,a):new c.Vector3(r,i,a)}function Ht(e){return{longitude:Bt(-Math.atan2(e.x,-e.z)),latitude:-Math.asin(e.y/1)}}function Ut(e){return(-e/Math.PI*180-90)/360+.25}function Wt(e){return-((e-.25)*360+90)/180*Math.PI}var Gt=Date.now();typeof performance<`u`&&(typeof performance.timeOrigin==`number`?Gt=performance.timeOrigin:performance.timing!==void 0&&(Gt=performance.timing.navigationStart));var U=typeof performance<`u`?(()=>Gt+performance.now()):(()=>Date.now());function Kt(e){return e-Gt}function W(e,t,n){return e<t?t:typeof n==`number`&&e>n?n:e}var qt=1,Jt=.1,Yt=2e3,Xt=Math.PI*2,Zt=Math.PI/2;function Qt(e){return e>0&&e<=Xt?e:(e%Xt+Xt)%Xt}function $t(e,t,n,r){n=Math.pow(n,4);for(var i=0;i<16;i++)r.elements[i]=e.elements[i]+(t.elements[i]-e.elements[i])*n;return r}var en=class extends c.Camera{constructor(e,t=qt,n=Jt,r=Yt,i=new c.Vector2,a=new c.Vector2(512,512),o=1){super(),this.fov=e,this.aspect=t,this.near=n,this.far=r,this.perspToOrtho=i,this.resolution=a,this.pixelRatio=o,this.time=0,this.controllerMode=null,this.needsRender=!0,this.refineModel=!0,this.pose={longitude:0,latitude:0,fov:e,distance:0,offset:new c.Vector3},this.computePose(),this.perspectiveCamera=new c.PerspectiveCamera(this.fov,this.aspect,.001,this.far);let s=Math.max(this.orthoDistance,.01)*Math.tan(.5*this.fov/180*Math.PI),l=-.5*this.aspect*2*s;this.orthographicCamera=new c.OrthographicCamera(l,-l,s,-s,.001,this.far),this.computeProjectionMatrix(),this.lastValues={position:this.position.clone(),quaternion:this.quaternion.clone(),scale:this.scale.clone(),fov:this.fov,aspect:this.aspect,near:this.near,far:this.far,orthoDistance:this.orthoDistance,perspToOrtho:this.perspToOrtho.clone()},this.type=this.perspToOrtho.x<1?`PerspectiveCamera`:`OrthographicCamera`,this.autoNearFar=!0}get orthoDistance(){return this.pose.distance>1?this.pose.distance:1+(this.pose.distance-1)*this.perspToOrtho.x}get zoom(){return this.type===`OrthographicCamera`?this.orthographicCamera.zoom:this.type===`PerspectiveCamera`?this.perspectiveCamera.zoom:1}get top(){return this.type===`OrthographicCamera`?this.orthographicCamera.top:0}get bottom(){return this.type===`OrthographicCamera`?this.orthographicCamera.bottom:0}get left(){return this.type===`OrthographicCamera`?this.orthographicCamera.left:0}get right(){return this.type===`OrthographicCamera`?this.orthographicCamera.right:0}getDirection(e){return Vt(this.pose,e)}computePose(e=0){this.updateMatrix();let t=this.matrix.elements;return this.pose.latitude=Math.asin(W(t[9],-1,1)),Math.abs(t[9])<.9999999?this.pose.longitude=Qt(Math.atan2(t[8],t[10])):this.pose.longitude=Qt(Math.atan2(-t[2],t[0])),this.pose.fov=this.fov,this.pose.distance=e,this.pose.offset=new c.Vector3(-t[8],-t[9],-t[10]).setLength(this.pose.distance).add(this.position),this}setFromPose(e){var t,n,r,i,a;let o=Qt((t=e.longitude)==null?this.pose.longitude:t),s=Math.max(-Zt+1e-4,Math.min(Zt-1e-4,(n=e.latitude)==null?this.pose.latitude:n)),c=(r=e.fov)==null?this.pose.fov:r,l=(i=e.distance)==null?this.pose.distance:i,u=(a=e.offset)==null?this.pose.offset:a,d=Vt({longitude:o,latitude:s}).normalize();return this.position.set(0,0,0),this.lookAt(d),this.position.add(u).sub(d.clone().setLength(l)),this.fov!==c&&(this.fov=c,this.perspectiveCamera.fov=c,this.updateProjectionMatrix()),this.updateMatrixWorld(!0),this.pose.longitude=o,this.pose.latitude=s,this.pose.fov=c,this.pose.distance=l,this.pose.offset.copy(u),this.needsRender=!0,this}copyPose(){return{longitude:this.pose.longitude,latitude:this.pose.latitude,fov:this.pose.fov,distance:this.pose.distance,offset:this.pose.offset.clone()}}computeProjectionMatrix(){$t(this.orthographicCamera.projectionMatrix,this.perspectiveCamera.projectionMatrix,1-this.perspToOrtho.x,this.projectionMatrix),this.projectionMatrixInverse.getInverse(this.projectionMatrix),this.needsRender=!0}setViewOffset(e,t,n,r,i,a){this.perspectiveCamera.setViewOffset(e,t,n,r,i,a),this.orthographicCamera.setViewOffset(e,t,n,r,i,a),this.computeProjectionMatrix()}get view(){return this.perspectiveCamera.view?Object.assign({},this.perspectiveCamera.view):null}clearViewOffset(){this.perspectiveCamera.clearViewOffset(),this.orthographicCamera.clearViewOffset(),this.computeProjectionMatrix()}updateProjectionMatrix(){this.perspectiveCamera.updateProjectionMatrix(),this.orthographicCamera.updateProjectionMatrix(),this.computeProjectionMatrix()}get perspectiveProjectionMatrix(){return this.perspectiveCamera.projectionMatrix}get perspectiveProjectionMatrixInverse(){return this.perspectiveCamera.projectionMatrixInverse}get orthographicProjectionMatrix(){return this.orthographicCamera.projectionMatrix}get orthographicProjectionMatrixInverse(){return this.orthographicCamera.projectionMatrixInverse}updateTime(e){this.time=e;let t=!1;if((this.lastValues.fov!==this.fov||this.lastValues.near!==this.near||this.lastValues.far!==this.far||this.lastValues.aspect!==this.aspect)&&(this.perspectiveCamera.fov=this.fov,this.perspectiveCamera.near=this.near,this.perspectiveCamera.far=this.far,this.perspectiveCamera.aspect=this.aspect,this.perspectiveCamera.updateProjectionMatrix(),t=!0),!this.lastValues.position.equals(this.position)||!this.lastValues.quaternion.equals(this.quaternion)||!this.lastValues.scale.equals(this.scale)||!this.lastValues.perspToOrtho.equals(this.perspToOrtho)||this.lastValues.fov!==this.fov||this.lastValues.near!==this.near||this.lastValues.far!==this.far||this.lastValues.orthoDistance!==this.orthoDistance||this.lastValues.aspect!==this.aspect){let e=Math.max(this.orthoDistance,.01)*Math.tan(.5*this.fov/180*Math.PI),n=-.5*this.aspect*2*e;this.orthographicCamera.left=n,this.orthographicCamera.right=-n,this.orthographicCamera.top=e,this.orthographicCamera.bottom=-e,this.orthographicCamera.near=this.near,this.orthographicCamera.far=this.far,this.orthographicCamera.updateProjectionMatrix(),t=!0}t&&this.computeProjectionMatrix(),this.lastValues.position.copy(this.position),this.lastValues.quaternion.copy(this.quaternion),this.lastValues.scale.copy(this.scale),this.lastValues.fov=this.fov,this.lastValues.aspect=this.aspect,this.lastValues.near=this.near,this.lastValues.far=this.far,this.lastValues.orthoDistance=this.orthoDistance,this.lastValues.perspToOrtho.copy(this.perspToOrtho),this.type=this.perspToOrtho.x<1?`PerspectiveCamera`:`OrthographicCamera`}get isPerspectiveCamera(){return this.perspToOrtho.x<1}get isOrthographicCamera(){return this.perspToOrtho.x>=1}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.aspect=e.aspect,this.near=e.near,this.far=e.far,this.perspToOrtho.copy(e.perspToOrtho),this.updateTime(U()),this}};function tn(){return((1+Math.random())*65536|0).toString(16).substring(1)}function nn(){return(tn()+tn()+`-`+tn()+`-4`+tn().substr(0,3)+`-`+tn()+`-`+tn()+tn()+tn()).toLowerCase()}function rn(e){return typeof Symbol>`u`?`$Symbol<${e}>$`:Symbol(e)}var an=rn(`$$FIVE_EVENT$$`);function on(e){return e[an]||(e[an]={}),e[an]}function sn(e){e[an]&&delete e[an]}var cn=class{hasListener(e){let t=on(this);return t&&t[e]&&t[e].callbacks.length>0}on(e,t,n){let r=on(this);return r[e]||(r[e]={callbacks:[]}),r[e].callbacks.push([t,n||!1]),()=>this.off(e,t)}once(e,t){return this.on(e,t,!0)}off(e,t){if(e===void 0){sn(this);return}let n=on(this);if(n[e]||(n[e]={callbacks:[]}),t===void 0){n[e].callbacks.length=0;return}let r=0;for(;r<n[e].callbacks.length&&n[e].callbacks[r][0]!==t;r++);r<n[e].callbacks.length&&n[e].callbacks.splice(r,1)}emit(e,...t){let n=!1,r=on(this);r[e]||(r[e]={callbacks:[]});let i=r[e].callbacks.slice();for(let[r,a=!1]of i){let i=r(...t);a&&this.off(e,r),i===!1&&(n=!0)}return n}waitUntil(e,t){return new Promise(n=>{let r=this.on(e,(...e)=>{(!t||t(...e)!==!1)&&(n(e),r())})})}},ln=class extends cn{},un=class extends ln{constructor(e){var t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v;super(),this.id=nn(),this.version=0,this.uniforms=(t=e.uniforms)==null?{}:t,this.defines=(n=e.defines)==null?{}:n,this.type=e.type,this.vertex={mainBefore:(i=(r=e.vertex)==null?void 0:r.mainBefore)==null?``:i,mainStart:(o=(a=e.vertex)==null?void 0:a.mainStart)==null?``:o,mainEnd:(c=(s=e.vertex)==null?void 0:s.mainEnd)==null?``:c},this.fragment={mainBefore:(u=(l=e.fragment)==null?void 0:l.mainBefore)==null?``:u,mainStart:(f=(d=e.fragment)==null?void 0:d.mainStart)==null?``:f,mainModelColor:(m=(p=e.fragment)==null?void 0:p.mainModelColor)==null?``:m,mainPanoColor:(g=(h=e.fragment)==null?void 0:h.mainPanoColor)==null?``:g,mainEnd:(v=(_=e.fragment)==null?void 0:_.mainEnd)==null?``:v}}get needsUpdate(){return!1}set needsUpdate(e){e===!0&&this.version++}onBeforeCompile(e,t){}},dn=class e extends ln{static computeLut(e,t,n,r=1024,i=1,a,o){let s=W(e,-255,255)/255,c=W(t,-255,255)/255,l=W(n,-255,255)/255,u=new Float32Array(5),d=new Float32Array(5),f=new Float32Array(5);u[0]=0,u[1]=.125,u[2]=.5,u[3]=.875,u[4]=1;for(let e=0;e<5;e++)f[e]=u[e]*(1+l);f[4]=Math.max(1,f[4]);for(let e=0;e<5;e++){let t=Math.pow(f[e]/f[4],2.2),n=Math.pow(f[e]/f[4],.45454545454545453);e<2?d[e]=f[e]+n*c:e>2?d[e]=f[e]+t*s:d[e]=f[e]}d[0]=0,d[4]=Math.max(1,d[4]),d[1]=Math.max(d[0]+.05,d[1]),d[3]=Math.min(d[4]-.0875,d[3]),d[2]=Math.max(Math.min(d[3]-.275,d[2]),d[1]+.275),a=a==null?new Float32Array(r*i):a,o=o==null?0:o;let p=r*2;for(let e=0;e<p;e++){let t=e/p,n=t*t,s=n*t,c=s*t,l=1-t,f=l*l,m=f*l,h=m*l,g=h*u[0]+4*m*t*u[1]+6*f*n*u[2]+4*l*s*u[3]+c*u[4],_=h*d[0]+4*m*t*d[1]+6*f*n*d[2]+4*l*s*d[3]+c*d[4],v=W(Math.round(g*(r-1)),0,r-1);for(let e=0;e<i;e++)a[o+v*i+e]=_}return a}constructor(){super(),this.id=nn();let t=()=>this.emit(`update`),n=0;this.contrast={get contrastBias(){return n},set contrastBias(e){n=e,t()}};let r=0;this.saturation={get saturationBias(){return r},set saturationBias(e){r=e,t()}};let i=0,a=0;this.color={get temperatureBias(){return i},set temperatureBias(e){i=e,t()},get tintBias(){return a},set tintBias(e){a=e,t()}};let o=0,s=0,l=0,u=[0,0,0].join(`:`),d=1024,f=new Float32Array(d*3);e.computeLut(0,0,0,d,3,f);let p=new c.DataTexture(f,d,1);p.flipY=!1,p.format=c.RGBFormat,p.type=c.FloatType,p.minFilter=c.NearestFilter,p.magFilter=c.NearestFilter,p.generateMipmaps=!1,p.needsUpdate=!0;let m=()=>{let t=[o,s,l].join(`:`);return t!==u&&(e.computeLut(o,s,l,d,3,f),p.needsUpdate=!0,u=t),p};this.highlightShadow={lutMap:p,get highlightBias(){return o},set highlightBias(e){o=e,m(),t()},get shadowBias(){return s},set shadowBias(e){s=e,m(),t()},get globalBias(){return l},set globalBias(e){l=e,m(),t()}}}toValue(){return{saturationSaturationBias:this.saturation.saturationBias,contrastContrastBias:this.contrast.contrastBias,highlightShadowLutMap:this.highlightShadow.lutMap,colorTemperatureBias:this.color.temperatureBias,colorTintBias:this.color.tintBias}}},fn=class extends c.Material{},pn=new c.Vector4,mn={colorAlpha:new V(1),pano0:new V({map:null,mapSize:1,mapHistogram:new c.Vector4,matrix:new c.Matrix4,zoom:1}),pano1:new V({map:null,mapSize:1,mapHistogram:new c.Vector4,matrix:new c.Matrix4,zoom:1}),pano0Depth:new V({map:null,maxDepth:1}),pano1Depth:new V({map:null,maxDepth:1}),refinedScreen:new V({projectionMatrix:new c.Matrix4,matrixInverse:new c.Matrix4,map:null,pano:0,opacity:1}),panoFilter:new V(null),modelAlpha:new V(1),progress:new V(0),gradientTexture:new V(null),clippers:new V([]),shownFloorIndex:new V(-1),constantColor:new V(new c.Vector3),floorIndex:new V(0),brightness:new V(1),colorSaturation:new V(0),colorBrightness:new V(0),pixelRatio:new V(1),resolution:new V(new c.Vector2(512,512)),modelBoundingMin:new V(new c.Vector3),modelBoundingMax:new V(new c.Vector3)},hn={none:{vertexShader:wt,fragmentShader:Tt},basic:{vertexShader:Et,fragmentShader:Dt},phong:{vertexShader:Ot,fragmentShader:kt},standard:{vertexShader:At,fragmentShader:jt}},gn=Pt(c.ShaderLib.basic.uniforms,c.ShaderLib.phong.uniforms,c.ShaderLib.physical.uniforms,mn),_n={USE_OPAQUE:!1,USE_VERTEX_MARK:!1,USE_COLOR_CONSTANT:!1,USE_COLOR_ALTITUDE:!1,USE_COLOR_ADJUSTMENT:!1,USE_FLOOR_STYLE_VISIBILITY:!1,USE_BLACK_TRANSITION:!1,USE_SPREAD_TRANSITION:!1,USE_FADE_TRANSITION:!1,USE_REFINED_SCREEN:!1,USE_PANO_DEPTH:!1,USE_PANO_FILTER:!1,USE_HQ_WEIGHT:!1,USE_HQ_DEPTH:!1},vn=class extends fn{constructor(e){var t,n;typeof e==`string`&&(e={shaderType:e}),super(),this.vertexTangents=!1,this.color=new c.Color(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.specular=new c.Color(1118481),this.shininess=30,this.roughnessMap=null,this.roughness=1,this.metalnessMap=null,this.metalness=0,this.alphaMap=null,this.combine=null,this.envMap=null,this.envMapIntensity=1,this.reflectivity=.4,this.refractionRatio=.98,this.emissiveMap=null,this.emissive=new c.Color(0),this.emissiveIntensity=1,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=c.TangentSpaceNormalMap,this.normalScale=new c.Vector2(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.clearcoat=0,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new c.Vector2(1,1),this.clearcoatNormalMap=null,this.sheen=null,this.transparency=0,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=`round`,this.wireframeLinejoin=`round`,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.metal=!1,this.alphaMode=`OPAQUE`,this.clipping=!0,this.customShaders=[],this.type=`PBMMeshMaterial`;let r=Object.assign({},_n),i=Nt(gn);Rt(i),Rt(r),this.defines=r,this.onBeforeCompile=(e,t)=>{let n=this.shaderType;e.vertexShader=hn[n].vertexShader,e.fragmentShader=hn[n].fragmentShader,e.uniforms=i;for(let e of Object.keys(r))e in _n||delete r[e];for(let e of Object.keys(i))e in gn||delete i[e];let a=this.customShaders.filter(e=>e.type.includes(n));for(let e of a){for(let t in e.defines)t in r||Object.assign(r,{[t]:e.defines[t]});for(let t in e.uniforms)t in i||Object.assign(i,{[t]:e.uniforms[t]})}e.vertexShader=e.vertexShader.replace(/MAIN_BEFORE/g,a.map(e=>e.vertex.mainBefore).filter(e=>!!e).join(`
303
303
  `)),e.vertexShader=e.vertexShader.replace(/MAIN_START/g,a.map(e=>e.vertex.mainStart).filter(e=>!!e).join(`
304
304
  `)),e.vertexShader=e.vertexShader.replace(/MAIN_END/g,a.map(e=>e.vertex.mainEnd).filter(e=>!!e).join(`
305
305
  `)),e.fragmentShader=e.fragmentShader.replace(/MAIN_BEFORE/g,a.map(e=>e.fragment.mainBefore).filter(e=>!!e).join(`
306
306
  `)),e.fragmentShader=e.fragmentShader.replace(/MAIN_START/g,a.map(e=>e.fragment.mainStart).filter(e=>!!e).join(`
307
307
  `)),e.fragmentShader=e.fragmentShader.replace(/MAIN_END/g,a.map(e=>e.fragment.mainEnd).filter(e=>!!e).join(`
308
308
  `)),e.fragmentShader=e.fragmentShader.replace(/MAIN_MODEL_COLOR/g,a.map(e=>e.fragment.mainModelColor).filter(e=>!!e).join(`
309
+ `)),e.fragmentShader=e.fragmentShader.replace(/MAIN_PANO_COLOR/g,a.map(e=>e.fragment.mainPanoColor).filter(e=>!!e).join(`
309
310
  `));let o=String(this.clippers.length);e.vertexShader=e.vertexShader.replace(/NUM_CLIPPERS/g,o),e.fragmentShader=e.fragmentShader.replace(/NUM_CLIPPERS/g,o);for(let n of a)n.onBeforeCompile&&n.onBeforeCompile(e,t)};let a=``;this.onBeforeRender=(e,t,n,o,s,l)=>{let u=this.shaderType;n instanceof en?(i.pixelRatio.value=n.pixelRatio,i.resolution.value.copy(n.resolution)):(i.pixelRatio.value=e.getPixelRatio(),e.getViewport(pn),i.resolution.value.set(pn.width,pn.height));let d=this.transparent===!1&&this.blending===c.NormalBlending;r.USE_OPAQUE!==d&&(r.USE_OPAQUE=d,this.needsUpdate=!0);let f=this.customShaders.filter(e=>e.type.includes(u)).map(e=>`${e.id}:${e.version}`).join(`|`);a!==f&&(a=f,this.needsUpdate=!0)},Object.defineProperty(this,`uniform`,{configurable:!1,enumerable:!1,writable:!1,value:i});let o=(t=e==null?void 0:e.shaderType)==null?`standard`:t;H(this,`shaderType`,{get(){return o},set(e){o!==e&&(o=e,this.needsUpdate=!0)}});let s=(n=e==null?void 0:e.combine)==null?c.MultiplyOperation:n;H(this,`combine`,{get(){return o===`standard`?null:s},set(e){s=e}}),H(this,`isPBMMeshMaterial`,{configurable:!1,writable:!1,value:!0}),H(this,`isShaderMaterial`,{configurable:!1,writable:!1,value:!0}),H(this,`isMeshBasicMaterial`,{configurable:!1,get(){return o===`basic`||o===`none`}}),H(this,`isMeshPhongMaterial`,{configurable:!1,get(){return o===`phong`}}),H(this,`isMeshStandardMaterial`,{configurable:!1,get(){return o===`standard`}}),H(this,`isMeshPhysicalMaterial`,{configurable:!1,get(){return o===`standard`}}),H(this,`vertexMarks`,{get(){return!!r.USE_VERTEX_MARK},set(e){r.USE_VERTEX_MARK!==e&&(r.USE_VERTEX_MARK=e,this.needsUpdate=!0)}}),H(this,`colorAlpha`,{get(){return i.colorAlpha.value},set(e){i.colorAlpha.value=e}});let l=null;H(this,`pano0`,{get(){return l},set(e){l!==e&&(l=e,e===null?i.pano0.value={map:null,mapSize:1,mapHistogram:new c.Vector4,matrix:new c.Matrix4,zoom:1}:i.pano0.value={map:e.map,mapSize:e.mapSize,mapHistogram:e.mapHistogram,matrix:e.matrix,zoom:e.zoom})}});let u=null;H(this,`pano1`,{get(){return u},set(e){u!==e&&(u=e,e===null?i.pano1.value={map:null,mapSize:1,mapHistogram:new c.Vector4,matrix:new c.Matrix4,zoom:1}:i.pano1.value={map:e.map,mapSize:e.mapSize,mapHistogram:e.mapHistogram,matrix:e.matrix,zoom:e.zoom})}});let d=null;H(this,`pano0Depth`,{get(){return d},set(e){if(d===e)return;d=e,e===null?(i.pano0Depth.value.map=null,i.pano0Depth.value.maxDepth=1):(i.pano0Depth.value.map=e.map,i.pano0Depth.value.maxDepth=e.maxDepth);let t=d!==null&&f!==null;r.USE_PANO_DEPTH!==t&&(r.USE_PANO_DEPTH=t,this.needsUpdate=!0)}});let f=null;H(this,`pano1Depth`,{get(){return f},set(e){if(f===e)return;f=e,e===null?i.pano1Depth.value={map:null,maxDepth:1}:i.pano1Depth.value={map:e.map,maxDepth:e.maxDepth};let t=d!==null&&f!==null;r.USE_PANO_DEPTH!==t&&(r.USE_PANO_DEPTH=t,this.needsUpdate=!0)}}),H(this,`panoFilter`,{get(){return i.panoFilter.value},set(e){i.panoFilter.value=e;let t=!!e;r.USE_PANO_FILTER!==t&&(r.USE_PANO_FILTER=t,this.needsUpdate=!0)}});let p=null;H(this,`refinedScreen`,{get(){return p},set(e){if(p===e)return;p=e;let t;e===null?(t=!1,i.refinedScreen.value={matrixInverse:new c.Matrix4,projectionMatrix:new c.Matrix4,map:null,pano:0,opacity:0}):(t=!0,i.refinedScreen.value={matrixInverse:e.matrixInverse,projectionMatrix:e.projectionMatrix,map:e.map,pano:e.pano,opacity:e.opacity}),r.USE_REFINED_SCREEN!==t&&(r.USE_REFINED_SCREEN=t,this.needsUpdate=!0)}}),H(this,`modelAlpha`,{get(){return i.modelAlpha.value},set(e){i.modelAlpha.value=e}}),H(this,`progress`,{get(){return i.progress.value},set(e){i.progress.value=e}}),H(this,`transition`,{get(){return r.USE_BLACK_TRANSITION?`BLACK`:r.USE_SPREAD_TRANSITION?`SPREAD`:`FADE`},set(e){let t=r.USE_BLACK_TRANSITION,n=r.USE_SPREAD_TRANSITION,i=r.USE_FADE_TRANSITION;r.USE_BLACK_TRANSITION=!1,r.USE_SPREAD_TRANSITION=!1,r.USE_FADE_TRANSITION=!1,r[`USE_${e}_TRANSITION`]=!0;let a=!1;t!==r.USE_BLACK_TRANSITION&&(a=!0),n!==r.USE_SPREAD_TRANSITION&&(a=!0),i!==r.USE_FADE_TRANSITION&&(a=!0),a&&(this.needsUpdate=!0)}}),H(this,`colorStyle`,{get(){return r.USE_COLOR_CONSTANT?`CONSTANT`:r.USE_COLOR_ALTITUDE?`ALTITUDE`:`RGB`},set(e){let t=e===`CONSTANT`,n=e===`ALTITUDE`;r.USE_COLOR_CONSTANT!==t&&(r.USE_COLOR_CONSTANT=t,this.needsUpdate=!0),r.USE_COLOR_ALTITUDE!==n&&(r.USE_COLOR_ALTITUDE=n,this.needsUpdate=!0)}}),H(this,`constantColor`,{get(){return i.constantColor.value},set(e){i.constantColor.value=e}}),H(this,`floorIndex`,{get(){return i.floorIndex.value},set(e){i.floorIndex.value=e}}),H(this,`shownFloorIndex`,{get(){return i.shownFloorIndex.value},set(e){i.shownFloorIndex.value=e}}),H(this,`floorStyle`,{get(){return r.USE_FLOOR_STYLE_VISIBILITY?`VISIBILITY`:`OPACITY`},set(e){let t=e===`VISIBILITY`;r.USE_FLOOR_STYLE_VISIBILITY!==t&&(r.USE_FLOOR_STYLE_VISIBILITY=t,this.needsUpdate=!0)}}),H(this,`gradientTexture`,{get(){return i.gradientTexture.value},set(e){i.gradientTexture.value=e}}),H(this,`brightness`,{get(){return i.brightness.value},set(e){i.brightness.value=e}});let m=[];H(this,`clippers`,{get(){return m},set(e){m!==e&&(m=e,i.clippers.value=m.map(e=>{let t=typeof e.floorIndex==`number`?e.floorIndex:-1;return{matrixInverse:new c.Matrix4().getInverse(e.clippingBoxMatrix),floorIndex:t}}),this.needsUpdate=!0)}}),H(this,`colorSaturation`,{get(){return i.colorSaturation.value},set(e){i.colorSaturation.value=e;let t=i.colorSaturation.value!==0||i.colorBrightness.value!==0;r.USE_COLOR_ADJUSTMENT!==t&&(r.USE_COLOR_ADJUSTMENT=t,this.needsUpdate=!0)}}),H(this,`colorBrightness`,{get(){return i.colorBrightness.value},set(e){i.colorBrightness.value=e;let t=i.colorSaturation.value!==0||i.colorBrightness.value!==0;r.USE_COLOR_ADJUSTMENT!==t&&(r.USE_COLOR_ADJUSTMENT=t,this.needsUpdate=!0)}}),H(this,`useHQWeight`,{get(){return r.USE_HQ_WEIGHT},set(e){e!==r.USE_HQ_WEIGHT&&(r.USE_HQ_WEIGHT=e,this.needsUpdate=!0)}}),H(this,`useHQDepth`,{get(){return r.USE_HQ_DEPTH},set(e){e!==r.USE_HQ_DEPTH&&(r.USE_HQ_DEPTH=e,this.needsUpdate=!0)}}),H(this,`modelBoundingMin`,{get(){return i.modelBoundingMin.value},set(e){i.modelBoundingMin.value=e}}),H(this,`modelBoundingMax`,{get(){return i.modelBoundingMax.value},set(e){i.modelBoundingMax.value=e}}),typeof e==`object`&&this.setValues(e),Rt(this)}copy(e){return super.copy(e),this.shaderType=e.shaderType,this.vertexMarks=e.vertexMarks,this.vertexTangents=e.vertexColors,this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.specular.copy(e.specular),this.shininess=e.shininess,this.roughnessMap=e.roughnessMap,this.roughness=e.roughness,this.metalnessMap=e.metalnessMap,this.metalness=e.metalness,this.alphaMap=e.alphaMap,this.combine=e.combine,this.envMap=e.envMap,this.envMapIntensity=e.envMapIntensity,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.emissiveMap=e.emissiveMap,this.emissive.copy(e.emissive),this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.clearcoatNormalMap=e.clearcoatNormalMap,e.sheen?this.sheen=new c.Color().copy(e.sheen):this.sheen=null,this.transparency=e.transparency,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this.customShaders=e.customShaders,this.colorAlpha=e.colorAlpha,this.alphaMode=e.alphaMode,this.pano0=e.pano0,this.pano1=e.pano1,this.pano0Depth=e.pano0Depth,this.pano1Depth=e.pano1Depth,this.panoFilter=e.panoFilter,this.refinedScreen=e.refinedScreen,this.modelAlpha=e.modelAlpha,this.progress=e.progress,this.transition=e.transition,this.colorStyle=e.colorStyle,this.constantColor.copy(e.constantColor),this.floorIndex=e.floorIndex,this.shownFloorIndex=e.shownFloorIndex,this.floorStyle=e.floorStyle,this.gradientTexture=e.gradientTexture,this.brightness=e.brightness,this.clippers=e.clippers,this.colorSaturation=e.colorSaturation,this.colorBrightness=e.colorBrightness,this.useHQWeight=e.useHQWeight,this.useHQDepth=e.useHQDepth,this.modelBoundingMin.copy(e.modelBoundingMin),this.modelBoundingMax.copy(e.modelBoundingMax),this}clone(){let e=this.constructor;return new e().copy(this)}refreshUniforms(){}},yn=class extends c.Mesh{constructor(e,t){super(e,t),this.onBeforeRender=(e,t,n,r,i,a)=>{i instanceof vn&&i.onBeforeRender&&i.onBeforeRender(e,t,n,r,this,a)},Rt(this)}},bn=class extends c.SkinnedMesh{constructor(e,t,n){super(e,t,n),this.onBeforeRender=(e,t,n,r,i,a)=>{i instanceof vn&&i.onBeforeRender&&i.onBeforeRender(e,t,n,r,this,a)},Rt(this)}},xn=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("{vs|z-sy|n-sy||V{qr\x07H0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH0r{qvsp-Pyv}}r-\n--znA-znv\x07V{rrH--sy|n-sy||V{qr\x07H\fH0vs-[bZlPYV]]R_`-K-=--{vs|z-Pyv}}r-pyv}}rh[bZlPYV]]R_`jH0r{qvsn\bv{t-sy|n-_||sZnxHn\bv{t-rpA-d|yq]|vv|{Hn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-rp@-P|y|Hn\bv{t-sy|n-]|v{`v rH{vs|z-sy|n-|}npv\bH{vs|z-sy|n-z|qryNy}unH{vs|z-sy|n-u|{Sy||V{qr\x07H{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{H0v{pyqr-Ip|zz|{K0v{pyqr-Is|tl}nlsntzr{K0v{pyqr-Iy|tqr}uosl}nlsntzr{K0v{pyqr-Ipyv}}v{tl}yn{rl}nlsntzr{KZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--<<-JJJ-点-大小-形状-剔除-JJJ--vs-5]|v{`v r-I-=;==>6-\n----qvpnqH--\f--sy|n-}-J-?;=-7-tyl]|v{P||q;\x07-:->;=H--sy|n-}-J-?;=-7-tyl]|v{P||q;\b-:->;=H--sy|n-}-J-}-7-}-8-}-7-}H--<<-JJJ-形状裁切-JJJ--0vs-qrsv{rq5b`Rl]\\V[al`UN]RlPV_PYR6----vs-5]|v{`v r-K-@;=-33-}-K->;=6-\n------qvpnqH----\f--0r{qvs--<<-JJJJJJJJJJJJJ--<<-JJJ-楼层-JJJ--o||y-vPr{Sy||-J-u|{Sy||V{qr\x07-I-:=;=>-\v\v-no5sy||V{qr\x07-:-u|{Sy||V{qr\x076-I-=;FFH--sy|n-sy||\\}npv\b-J->;=H--vs-5.vPr{Sy||6-\n----0vs-qrsv{rq5b`RlSY\\\\_l`afYRlcV`VOVYVaf6------qvpnqH----0r{qvs----sy||\\}npv\b-J-pynz}5=;?-7-zv{55>;=-8-PnzrnQvrpv|{;\b69->;=69-=;=9->;=6H--\f--<<-JJJJJJJJJJJ--<<-JJJ-顶部裁切-JJJ--sy|n-||sP]|tr-J-}|5pynz}5:PnzrnQvrpv|{;\b9-=;=9->;=69-@;=6H--vs-5----_||sZnx-K-=;==>-33----Sv{ny]|vv|{;\b-K-z|qryO|{qv{tZn\x07;\b-:-||sP]|tr-7-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6--6-\n----qvpnqH--\f--<<-JJJJJJJJJJJJJJ--<<-JJJ-前置裁切计算-JJJ--0vs-[bZlPYV]]R_`-K-=----o||y-pyv}}rqH----rpA-pyv}}r]|vv|{H----0}ntzn-{|yyly||}ln----s|-5-v{-v-J-=H-v-I-[bZlPYV]]R_`H-v-88-6-\n------pyv}}r]|vv|{-J-pyv}}rh-v-j;znv\x07V{rr-7-Sv{ny]|vv|{H------pyv}}rq-J-5pyv}}rh-v-j;sy||V{qr\x07-I-=;=-\v\v-no5sy||V{qr\x07-:-pyv}}rh-v-j;sy||V{qr\x076-I->;=6H------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\x07-K-:=;B-33-pyv}}r]|vv|{;\x07-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\b-K-:=;B-33-pyv}}r]|vv|{;\b-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{; -K-:=;B-33-pyv}}r]|vv|{; -I-=;BH------vs-5pyv}}rq6-\n--------qvpnqH------\f----\f----0}ntzn-{|yyly||}lr{q--0r{qvs--<<-JJJJJJJJJJJJJJJJ--0v{pyqr-Ipyv}}v{tl}yn{rlsntzr{K--0v{pyqr-Iy|tqr}uoslsntzr{K--<<-JJJ-颜色-JJJ--rpA-qvssrP|y|-J-rpA5P|y|9-|}npv\b6H--qvssrP|y|;n-J-qvssrP|y|;n-7-sy||\\}npv\b-7-z|qryNy}unH--0vs-qrsv{rq5b`Rl\\]N^bR6----qvssrP|y|;n-J->;=H--0r{qvs--tylSntP|y|-J-qvssrP|y|H--ZNV[lZ\\QRYlP\\Y\\_--0v{pyqr-I|{rzn}}v{tlsntzr{K--0v{pyqr-Ir{p|qv{tlsntzr{K--0v{pyqr-Is|tlsntzr{K--0v{pyqr-I}rzyv}yvrqlny}unlsntzr{K--0vs-qrsv{rq5b`RlU^ldRVTUa6----sy|n-qvn{pr-J-?;=-7-yr{tu5tyl]|v{P||q;\x07\b-:-=;B6H----sy|n-rvtu-J-zn\x075=;=9->;=-:-qvn{pr6H----rvtu-J-}|5rvtu9->;B6H----tylSntP|y|;n-J-rvtuH----tylSntP|y|;to-J-tylSntP|y|;to-7-rvtuH--0r{qvs--ZNV[lR[Q\f"),Sn=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("nvor-sy|n-lsrnrlvqlznxHn\bv{t-sy|n-_||sZnxH0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6--{vs|z-rp@-p|{n{P|y|H0r{qvs0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6--{vs|z-nz}yr?Q-tnqvr{ar\x07rH0r{qvs{vs|z-rp?-r|yv|{H{vs|z-sy|n-}v\x07ry_nv|H{vs|z-sy|n-}|v{`pnyrH{vs|z-sy|n-}|v{Zv{]v\x07ryH{vs|z-sy|n-}|v{Zn\x07]v\x07ryH{vs|z-sy|n-|}npv\bH{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{H<<u调整{vs|z-sy|n-p|y|`nnv|{H{vs|z-sy|n-p|y|Ovtu{rH<<-边缘增益{vs|z-sy|n-|yv{rTnv{H{vs|z-sy|n-qvn{prTnv{Hn\bv{t-rpA-d|yq]|vv|{Hn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-rp@-P|y|Hn\bv{t-sy|n-]|v{`v rH0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-Is|tl}nlrr\x07K0v{pyqr-Iz|}untrl}nlrr\x07K0v{pyqr-Iy|tqr}uosl}nlrr\x07K0v{pyqr-Ipyv}}v{tl}yn{rl}nlrr\x07Krp@-_TOa|Yv{rn5rp@-nyr6-\n--r{-zv\x075----}|5-nyr;to-7-=;FADECD?FEC-8-rp@5-=;=B?>@?D=>A-69-rp@5-?;A-6-69----nyr;to-7-=;=DD@FF@E=E9----rp@5-yraun{R\0ny5-nyr;to9-rp@5-=;=A=AB-6-6-6--6H\frp@-to?u5rp@-p6-\n--rpA-X-J-rpA5=;=9-:>;=-<-@;=9-?;=-<-@;=9-:>;=6H--rpA-}-J-zv\x075rpA5p;ot9-X; 69-rpA5p;to9-X;\x07\b69-r}5p;o9-p;t66H--rpA-\0-J-zv\x075rpA5};\x07\b9-p;69-rpA5p;9-};\b \x0769-r}5};\x079-p;66H--sy|n-q-J-\0;\x07-:-zv{5\0;9-\0;\b6H--sy|n-r-J->;=r:>=H--r{-rp@5no5\0; -8-5\0;-:-\0;\b6-<-5C;=-7-q-8-r669-q-<-5\0;\x07-8-r69-\0;\x076H\frp@-u?to5rp@-p6-\n--rpA-X-J-rpA5>;=9-?;=-<-@;=9->;=-<-@;=9-@;=6H--rp@-}-J-no5snp5p;\x07\x07\x07-8-X;\x07\b 6-7-C;=-:-X;6H--r{-p; -7-zv\x075X;\x07\x07\x079-pynz}5}-:-X;\x07\x07\x079-=;=9->;=69-p;\b6H\frp@-trP|y|O\bUrvtu5nz}yr?Q-tnqvr{ar\x07r9-rpA-|yq]|vv|{6-\n--sy|n--J-5|yq]|vv|{;\b-:-z|qryO|{qv{tZv{;\b6-<-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6H--r{-r\x07r?Q5tnqvr{ar\x07r9-rp?59-=;B66;toH\fZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--0v{pyqr-Iortv{lrr\x07K--d|yq]|vv|{-J-rpA5n{s|zrq9->;=6H--0vsqrs-b`RlV[`aN[PV[T----d|yq]|vv|{-J-v{n{prZnv\x07-7-d|yq]|vv|{H--0r{qvs--d|yq]|vv|{-J-z|qryZnv\x07-7-d|yq]|vv|{H--rpA-z]|vv|{-J-vrZnv\x07-7-d|yq]|vv|{H--tyl]|vv|{-J-}|wrpv|{Znv\x07-7-z]|vv|{H--Sv{ny]|vv|{-J-d|yq]|vv|{H--0v{pyqr-Iy|tqr}uoslrr\x07K--0v{pyqr-Ipyv}}v{tl}yn{rlrr\x07K--zn@-pnzrn_|nv|{Znv\x07-J-zn@5vrZnv\x07h=jh=j9-vrZnv\x07h>jh=j9-vrZnv\x07h?jh=j9-vrZnv\x07h=jh>j9-vrZnv\x07h>jh>j9-vrZnv\x07h?jh>j9-vrZnv\x07h=jh?j9-vrZnv\x07h>jh?j9-vrZnv\x07h?jh?j6H--PnzrnQvrpv|{-J-{|znyv r5pnzrn_|nv|{Znv\x07-7-rp@5=;=9-=;=9-:>;=66H--<<传递nvor的p|y|到s里使用--<<动态调整}|v{`v r--sy|n-rny]|v{`v r-J-}|v{`pnyr-7-}v\x07ry_nv|H--0vs-qrsv{rq5b`Rl]\\V[al`VgRlNaaR[bNaV\\[6----sy|n-urvtu-J->;=-<-}|wrpv|{Znv\x07h>jh>j-7-zv\x075>;=9-:z]|vv|{; 9-:}|wrpv|{Znv\x07h?jh@j6-7-?;=H----rny]|v{`v r-J-r|yv|{;\b-7-rny]|v{`v r-<-urvtuH--0r{qvs--tyl]|v{`v r-J-pynz}5rny]|v{`v r9-}|v{Zv{]v\x07ry-7-}v\x07ry_nv|9-}|v{Zn\x07]v\x07ry-7-}v\x07ry_nv|6H--]|v{`v r-J-tyl]|v{`v rH--P|y|-J-_TOa|Yv{rn5p|y|6H--<<-JJJ-高度色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6----P|y|-J-trP|y|O\bUrvtu5tnqvr{ar\x07r9-Sv{ny]|vv|{6H--0r{qvs--<<-JJJJJJJJJJJ--<<-JJJ-纯色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6----P|y|-J-p|{n{P|y|H--0r{qvs--<<-JJJJJJJJJJJ--0vs{qrs-SYNal`UNQRQ----[|zny-J-{|znyv r5zn@5z|qryZnv\x076-7-{|zny6H--0r{qvs--<<-JJJ-背面渲染-JJJ--0vs{qrs-SYNal`UNQRQ----0vs-qrsv{rq5b`Rl]\\V[alONPXlUVQQR[6------rp@-pnzrnQvrpv|{-J-{|znyv r5pnzrn]|vv|{-:-Sv{ny]|vv|{;\x07\b 6H------vs-5q|5pnzrnQvrpv|{9-[|zny6-I-=;=6-\n--------]|v{`v r-J-=;=H------\f----0ryvs-qrsv{rq5b`Rl]\\V[alONPXlQN_X6------rp@-pnzrnQvrpv|{-J-{|znyv r5pnzrn]|vv|{-:-Sv{ny]|vv|{;\x07\b 6H------vs-5q|5pnzrnQvrpv|{9-[|zny6-I-=;=6-\n--------P|y|;\x07\b -J-P|y|;\x07\b -7-=;EH------\f----0r{qvs--0r{qvs--<<-JJJ-颜色增益调整-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNQWb`aZR[a6----rp@-uP|y|-J-to?u5P|y|6H----uP|y|;\b-8J-p|y|`nnv|{H----uP|y|; -8J-p|y|Ovtu{rH----0vs{qrs-SYNal`UNQRQ------rp@-vrQv-J-{|znyv r5v\\u|tn}uvp-L-PnzrnQvrpv|{-G-Sv{ny]|vv|{;\x07\b -:-pnzrn]|vv|{6H------<<-计算边缘增益------sy|n-p|aurn-J-q|5{|znyv r5[|zny69-vrQv6H------sy|n-n{tyr-J-np|5p|aurn6H------sy|n-|yv{rSnp|-J-}|5>;=-:-no5n{tyr-:-]VlUNYS6-<-]VlUNYS9-B;=6H------uP|y|; -8J-|yv{rTnv{-7-|yv{rSnp|H-<<-增加亮度------uP|y|; -J-pynz}5uP|y|; 9-=;=9->;=6H------<<-距离增益------rp@-o|{qv{tPr{r-J-5z|qryO|{qv{tZn\x07-8-z|qryO|{qv{tZv{6-<-?;=H------sy|n-o|{qv{tYr{tu-J-yr{tu5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6-7->;BH------sy|n-nrntrQvn{pr-J->=;=H-<<-设定一个平均距离------rp@-pnzrna|]|v{-J-Sv{ny]|vv|{;\x07\b -:-pnzrn]|vv|{H------sy|n-pnzrnO|{qv{tQvn{pr-J-zn\x075=;=9-yr{tu5pnzrn]|vv|{-:-o|{qv{tPr{r6-:-o|{qv{tYr{tu-<-?;=6H------sy|n-pnzrnQvn{pr-J-yr{tu5v\\u|tn}uvp-L-vrQv-7-q|5vrQv9-pnzrna|]|v{6-G-pnzrna|]|v{6-:-pnzrnO|{qv{tQvn{prH------sy|n-qvn{prSnp|-J-pynz}5zn\x075pnzrnQvn{pr-:-nrntrQvn{pr9-=;=6-<-o|{qv{tYr{tu9-=;=9->;=6H------qvn{prSnp|-J-5=;E-:-pynz}5>;=-:-}|5>;=-:-qvn{prSnp|9-@;=69-=;=9->;=66-7->?;=H------uP|y|; -8J-zv\x075uP|y|; -7-qvn{prTnv{-7-qvn{prSnp|9-=;=9-|yv{rSnp|6H-<<-增加透明度------uP|y|; -J-pynz}5uP|y|; 9-=;=9->;=6H----0r{qvs----P|y|-J-zn\x075u?to5uP|y|69-=;=6H--0r{qvs--<<-JJJJJJJJJJJJJJJJJJ--0vs-qrsv{rq5b`RlU^lQR]aU6----<<-sy|n-}|wSnp|-J-:=;B-7-r|yv|{;\b-<-5n{5s|-<-?;=6-7-z]|vv|{; 6H----<<-sy|n-_nqv-J-rny]|v{`v r-<-}|wSnp|H----sy|n-|vtv{nyQr}u-J-tyl]|vv|{;H----sy|n-nqwrqQr}u-J-|vtv{nyQr}u-8-=;>H----sy|n-nqw-J-nqwrqQr}u-<-|vtv{nyQr}uH----z]|vv|{;\x07\b -J-z]|vv|{;\x07\b -7-nqwH----tyl]|vv|{-J-}|wrpv|{Znv\x07-7-z]|vv|{H--0r{qvs--_||sZnx-J-=;=H--0vs-qrsv{rq5b`RlcR_aRelZN_X6----_||sZnx-J-z||ur}5_\\\\SlZN_X-:-ZN_Xl`aR]9-_\\\\SlZN_X9-lsrnrlvqlznx6H--0r{qvs--0v{pyqr-I|yq}|lrr\x07K--0v{pyqr-Is|tlrr\x07K--ZNV[lR[Q\f"),Cn=new c.Vector4,wn={pointScale:new V(1),pointMinPixel:new V(1),pointMaxPixel:new V(1),modelAlpha:new V(1),gradientTexture:new V(null),clippers:new V([]),shownFloorIndex:new V(-1),constantColor:new V(new c.Vector3),floorIndex:new V(0),brightness:new V(1),colorSaturation:new V(0),colorBrightness:new V(0),outlineGain:new V(0),distanceGain:new V(0),pixelRatio:new V(1),resolution:new V(new c.Vector2(512,512)),modelBoundingMin:new V(new c.Vector3),modelBoundingMax:new V(new c.Vector3)},Tn={pointcloud:{vertexShader:Sn,fragmentShader:xn}},En=Pt({opacity:{value:1}},wn),Dn={USE_OPAQUE:!1,USE_VERTEX_MARK:!1,USE_COLOR_CONSTANT:!1,USE_COLOR_ALTITUDE:!1,USE_COLOR_ADJUSTMENT:!1,USE_FLOOR_STYLE_VISIBILITY:!1,USE_POINT_SHAPE_CIRCLE:!1,USE_POINT_SIZE_ATTENUATION:!1,USE_POINT_BACK_HIDDEN:!1,USE_POINT_BACK_DARK:!1,USE_HQ_WEIGHT:!1,USE_HQ_DEPTH:!1},On=class extends fn{constructor(e){super(),this.shaderType=`pointcloud`,this.clipping=!0,this.customShaders=[],this.vertexColors=!0,this.type=`PBMPointCloudMaterial`;let t=Object.assign({},Dn),n=Nt(En);Rt(n),Rt(t),this.defines=t,this.onBeforeCompile=(e,r)=>{let i=this.shaderType;e.vertexShader=Tn[i].vertexShader,e.fragmentShader=Tn[i].fragmentShader,e.uniforms=n;for(let e of Object.keys(t))e in Dn||(t[e]=void 0);for(let e of Object.keys(n))e in En||(n[e]=void 0);let a=this.customShaders.filter(e=>e.type.includes(i));for(let e of a){for(let t in e.uniforms)t in n||Object.assign(n,{[t]:e.uniforms[t]});for(let n in e.defines)n in t||Object.assign(t,{[n]:e.defines[n]})}Rt(n),Rt(t),e.vertexShader=e.vertexShader.replace(/MAIN_BEFORE/g,a.map(e=>e.vertex.mainBefore).filter(e=>!!e).join(`
310
311
  `)),e.vertexShader=e.vertexShader.replace(/MAIN_START/g,a.map(e=>e.vertex.mainStart).filter(e=>!!e).join(`
311
312
  `)),e.vertexShader=e.vertexShader.replace(/MAIN_END/g,a.map(e=>e.vertex.mainEnd).filter(e=>!!e).join(`
@@ -313,6 +314,7 @@
313
314
  `)),e.fragmentShader=e.fragmentShader.replace(/MAIN_START/g,a.map(e=>e.fragment.mainStart).filter(e=>!!e).join(`
314
315
  `)),e.fragmentShader=e.fragmentShader.replace(/MAIN_END/g,a.map(e=>e.fragment.mainEnd).filter(e=>!!e).join(`
315
316
  `)),e.fragmentShader=e.fragmentShader.replace(/MAIN_MODEL_COLOR/g,a.map(e=>e.fragment.mainModelColor).filter(e=>!!e).join(`
317
+ `)),e.fragmentShader=e.fragmentShader.replace(/MAIN_PANO_COLOR/g,a.map(e=>e.fragment.mainPanoColor).filter(e=>!!e).join(`
316
318
  `));let o=String(this.clippers.length);e.vertexShader=e.vertexShader.replace(/NUM_CLIPPERS/g,o),e.fragmentShader=e.fragmentShader.replace(/NUM_CLIPPERS/g,o);for(let t of a)t.onBeforeCompile&&t.onBeforeCompile(e,r)};let r=``;this.onBeforeRender=(e,i,a,o,s,l)=>{let u=this.shaderType;a instanceof en?(n.pixelRatio.value=a.pixelRatio,n.resolution.value.copy(a.resolution)):(n.pixelRatio.value=e.getPixelRatio(),e.getViewport(Cn),n.resolution.value.set(Cn.width,Cn.height));let d=this.transparent===!1&&this.blending===c.NormalBlending;t.USE_OPAQUE!==d&&(t.USE_OPAQUE=d,this.needsUpdate=!0);let f=this.customShaders.filter(e=>e.type.includes(u)).map(e=>`${e.id}:${e.version}`).join(`|`);r!==f&&(r=f,this.needsUpdate=!0)},Object.defineProperty(this,`uniform`,{configurable:!1,enumerable:!1,writable:!1,value:n}),H(this,`isPBMPointCloudMaterial`,{configurable:!1,writable:!1,value:!0}),H(this,`isShaderMaterial`,{configurable:!1,writable:!1,value:!0}),H(this,`opacity`,{get(){return n.opacity.value},set(e){n.opacity.value=e}}),H(this,`vertexMarks`,{get(){return!!t.USE_VERTEX_MARK},set(e){t.USE_VERTEX_MARK!==e&&(t.USE_VERTEX_MARK=e,this.needsUpdate=!0)}}),H(this,`pointScale`,{get(){return n.pointScale.value},set(e){n.pointScale.value=e}}),H(this,`pointMinPixel`,{get(){return n.pointMinPixel.value},set(e){n.pointMinPixel.value=e}}),H(this,`pointMaxPixel`,{get(){return n.pointMinPixel.value},set(e){n.pointMaxPixel.value=e}}),H(this,`pointSize`,{get(){return this.defines.USE_POINT_SIZE_ATTENUATION===!0?`ATTENUATION`:`FIXED`},set(e){let t=e===`ATTENUATION`;this.defines.USE_POINT_SIZE_ATTENUATION!==t&&(this.defines.USE_POINT_SIZE_ATTENUATION=t,this.needsUpdate=!0)}}),H(this,`pointShape`,{get(){return this.defines.USE_POINT_SHAPE_CIRCLE===!0?`CIRCLE`:`SQUARE`},set(e){let t=e===`CIRCLE`;this.defines.USE_POINT_SHAPE_CIRCLE!==t&&(this.defines.USE_POINT_SHAPE_CIRCLE=t,this.needsUpdate=!0)}}),H(this,`pointBack`,{get(){return this.defines.USE_POINT_BACK_HIDDEN===!0?`HIDDEN`:this.defines.USE_POINT_BACK_DARK===!0?`DARK`:`VISIBLE`},set(e){let t=e===`HIDDEN`,n=e===`DARK`;this.defines.USE_POINT_BACK_HIDDEN!==t&&(this.defines.USE_POINT_BACK_HIDDEN=t,this.needsUpdate=!0),this.defines.USE_POINT_BACK_DARK!==n&&(this.defines.USE_POINT_BACK_DARK=n,this.needsUpdate=!0)}}),H(this,`modelAlpha`,{get(){return n.modelAlpha.value},set(e){n.modelAlpha.value=e}}),H(this,`colorStyle`,{get(){return t.USE_COLOR_CONSTANT?`CONSTANT`:t.USE_COLOR_ALTITUDE?`ALTITUDE`:`RGB`},set(e){let n=e===`CONSTANT`,r=e===`ALTITUDE`;t.USE_COLOR_CONSTANT!==n&&(t.USE_COLOR_CONSTANT=n,this.needsUpdate=!0),t.USE_COLOR_ALTITUDE!==r&&(t.USE_COLOR_ALTITUDE=r,this.needsUpdate=!0)}}),H(this,`constantColor`,{get(){return n.constantColor.value},set(e){n.constantColor.value=e}}),H(this,`floorIndex`,{get(){return n.floorIndex.value},set(e){n.floorIndex.value=e}}),H(this,`shownFloorIndex`,{get(){return n.shownFloorIndex.value},set(e){n.shownFloorIndex.value=e}}),H(this,`floorStyle`,{get(){return t.USE_FLOOR_STYLE_VISIBILITY?`VISIBILITY`:`OPACITY`},set(e){let n=e===`VISIBILITY`;t.USE_FLOOR_STYLE_VISIBILITY!==n&&(t.USE_FLOOR_STYLE_VISIBILITY=n,this.needsUpdate=!0)}}),H(this,`gradientTexture`,{get(){return n.gradientTexture.value},set(e){n.gradientTexture.value=e}}),H(this,`brightness`,{get(){return n.brightness.value},set(e){n.brightness.value=e}});let i=[];H(this,`clippers`,{get(){return i},set(e){i!==e&&(i=e,n.clippers.value=i.map(e=>{let t=typeof e.floorIndex==`number`?e.floorIndex:-1;return{matrixInverse:new c.Matrix4().getInverse(e.clippingBoxMatrix),floorIndex:t}}),this.needsUpdate=!0)}}),H(this,`colorSaturation`,{get(){return n.colorSaturation.value},set(e){n.colorSaturation.value=e;let r=n.colorSaturation.value!==0||n.colorBrightness.value!==0||n.outlineGain.value!==0||n.distanceGain.value!==0;t.USE_COLOR_ADJUSTMENT!==r&&(t.USE_COLOR_ADJUSTMENT=r,this.needsUpdate=!0)}}),H(this,`colorBrightness`,{get(){return n.colorBrightness.value},set(e){n.colorBrightness.value=e;let r=n.colorSaturation.value!==0||n.colorBrightness.value!==0||n.outlineGain.value!==0||n.distanceGain.value!==0;t.USE_COLOR_ADJUSTMENT!==r&&(t.USE_COLOR_ADJUSTMENT=r,this.needsUpdate=!0)}}),H(this,`outlineGain`,{get(){return n.outlineGain.value},set(e){n.outlineGain.value=e;let r=n.colorSaturation.value!==0||n.colorBrightness.value!==0||n.outlineGain.value!==0||n.distanceGain.value!==0;t.USE_COLOR_ADJUSTMENT!==r&&(t.USE_COLOR_ADJUSTMENT=r,this.needsUpdate=!0)}}),H(this,`distanceGain`,{get(){return n.distanceGain.value},set(e){n.distanceGain.value=e;let r=n.colorSaturation.value!==0||n.colorBrightness.value!==0||n.outlineGain.value!==0||n.distanceGain.value!==0;t.USE_COLOR_ADJUSTMENT!==r&&(t.USE_COLOR_ADJUSTMENT=r,this.needsUpdate=!0)}}),H(this,`useHQWeight`,{get(){return t.USE_HQ_WEIGHT},set(e){e!==t.USE_HQ_WEIGHT&&(t.USE_HQ_WEIGHT=e,this.needsUpdate=!0)}}),H(this,`useHQDepth`,{get(){return t.USE_HQ_DEPTH},set(e){e!==t.USE_HQ_DEPTH&&(t.USE_HQ_DEPTH=e,this.needsUpdate=!0)}}),H(this,`modelBoundingMin`,{get(){return n.modelBoundingMin.value},set(e){n.modelBoundingMin.value=e}}),H(this,`modelBoundingMax`,{get(){return n.modelBoundingMax.value},set(e){n.modelBoundingMax.value=e}}),typeof e==`object`&&this.setValues(e),Rt(this)}copy(e){return super.copy(e),this.pointScale=e.pointScale,this.pointMinPixel=e.pointMinPixel,this.pointMaxPixel=e.pointMaxPixel,this.customShaders=e.customShaders,this.modelAlpha=e.modelAlpha,this.colorStyle=e.colorStyle,this.constantColor.copy(e.constantColor),this.floorIndex=e.floorIndex,this.shownFloorIndex=e.shownFloorIndex,this.floorStyle=e.floorStyle,this.gradientTexture=e.gradientTexture,this.brightness=e.brightness,this.clippers=e.clippers,this.colorSaturation=e.colorSaturation,this.colorBrightness=e.colorBrightness,this.outlineGain=e.outlineGain,this.distanceGain=e.distanceGain,this.useHQWeight=e.useHQWeight,this.useHQDepth=e.useHQDepth,this.modelBoundingMin.copy(e.modelBoundingMin),this.modelBoundingMax.copy(e.modelBoundingMax),this}clone(){let e=this.constructor;return new e().copy(this)}refreshUniforms(){}},kn=class extends c.Points{constructor(e,t){super(e,t),this.onBeforeRender=(e,t,n,r,i,a)=>{i instanceof On&&i.onBeforeRender&&i.onBeforeRender(e,t,n,r,this,a)}}},An=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAABCAYAAACouxZ2AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAACAKADAAQAAAABAAAAAQAAAAB7UD0+AAACA0lEQVRIDXWUW3YjIQxEwdnV/GT/q8kO3FO3pAJst3PSAaR6Cbszf//9XeMxxpjXmI+pVXudp2s6PC4dqHff9e6D7/PZLy46xQvG+sZvrfK8xgXUeq85yINe9bdmtOK1+kun5vjgq58a+eZPna9jvmjiserqG/+Whathvo3L3WhV89L9sXI/m18z2uene9ap/ftsuT9WZxoHXzW56/fpj8l7+tTw7P011NdpqnY19sRsfuHMA9u8oZWfDz4+fra/dfG1V60ydZ7qba1g7UNAeK0JP7ydD7/OqH6wO2f7HTq+B/lbL9qsB3/N1/UzR81XfPzw4tp5OPvRneacteq8Xo0xR3vuv/kPz0KtX0Nhg0eHuaNXdWI3X/ld427h++vzyp99V6VPrzWFhbv4ayay4oFecm198MmUXN/mL+x7npq/uJXBGb/MTw4+t+SvbLoTZnUW5uHhz7nWcTxT73OwXV7cxT9wbBf/0LnDBgcnHmtPLYba32Hp808sMy1u88yhr58n70/v4xX92GSN19l/2UsqGmiH94Hpxjcs+DO/ccpIVNVp62PUWXu//ur1GQy1Cf+GZ13rtNYN1po3/NI79fGXibHkq4z25xvV2pW3szpneXsW8SsreTe/NIPrtXMnH7wPf+LEN6tqhUVHj3XKD/72p9eafCeYB3zuonnbv7yqP8d/o4K6gRb1wbYAAAAASUVORK5CYII=`;function jn(e){return Object.keys(e)}function G(e,t){return e==t}function Mn(e,t){if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}return e===t}function Nn(e,t){return e instanceof c.Vector3&&t instanceof c.Vector3?e.equals(t):e===t}function Pn(e,t){return e instanceof c.Box3&&t instanceof c.Box3?e.equals(t):e===t}var Fn={customShaders:Mn,castShadow:G,receiveShadow:G,vertexMarks:G,pano0:G,pano1:G,pano0Depth:G,pano1Depth:G,panoFilter:G,refinedScreen:G,modelAlpha:G,progress:G,transition:G,opacity:G,floorStyle:G,colorStyle:G,constantColor:Nn,shownFloorIndex:G,clippers:Mn,brightness:G,useHQWeight:G,useHQDepth:G,pointShape:G,pointSize:G,pointBack:G,pointScale:G,pointMinPixel:G,pointMaxPixel:G,pointAppearAnimation:G,colorSaturation:G,colorBrightness:G,useAddBlend:G,outlineGain:G,distanceGain:G,gradientTexture:G,boundingBox:Pn,gsSHDegree:G,minLevelOfDetail:G,maxLevelOfDetail:G,minGeometricError:G,maxGeometricError:G,panoramaMinGeometricError:G,skipLevelOfDetail:G,mostDetail:G,loadSiblings:G,cameraCulling:G,maxMemoryUsage:G,maxRequests:G,requestOrder:G,maxScreenSpaceError:G,memoryAdjustedScreenSpaceError:G,cacheCameras:Mn},In=(()=>{let e;return e=typeof document<`u`?new c.TextureLoader().load(An):new c.Texture,e.minFilter=c.NearestFilter,e.magFilter=c.NearestFilter,e.wrapS=c.RepeatWrapping,e.wrapT=c.RepeatWrapping,e})(),Ln=Object.freeze(new c.Vector3(.6,.6,.6)),Rn=Object.freeze([]),zn=Object.freeze(new c.Box3),Bn=Object.freeze([]),Vn=Object.freeze([]);function Hn(){return{customShaders:void 0,castShadow:void 0,receiveShadow:void 0,vertexMarks:void 0,pano0:void 0,pano1:void 0,pano0Depth:void 0,pano1Depth:void 0,panoFilter:void 0,refinedScreen:void 0,floorStyle:void 0,colorStyle:void 0,constantColor:void 0,shownFloorIndex:void 0,modelAlpha:void 0,opacity:void 0,progress:void 0,transition:void 0,clippers:void 0,brightness:void 0,useHQWeight:void 0,useHQDepth:void 0,pointSize:void 0,pointBack:void 0,pointShape:void 0,pointScale:void 0,pointMaxPixel:void 0,pointMinPixel:void 0,pointAppearAnimation:void 0,gradientTexture:void 0,colorSaturation:void 0,colorBrightness:void 0,outlineGain:void 0,distanceGain:void 0,useAddBlend:void 0,boundingBox:void 0,gsSHDegree:void 0,minLevelOfDetail:void 0,maxLevelOfDetail:void 0,minGeometricError:void 0,maxGeometricError:void 0,panoramaMinGeometricError:void 0,skipLevelOfDetail:void 0,mostDetail:void 0,loadSiblings:void 0,cameraCulling:void 0,maxMemoryUsage:void 0,maxRequests:void 0,requestOrder:void 0,maxScreenSpaceError:void 0,memoryAdjustedScreenSpaceError:void 0,cacheCameras:void 0}}function Un(){return{customShaders:Bn,castShadow:!1,receiveShadow:!1,vertexMarks:!0,pano0:null,pano1:null,pano0Depth:null,pano1Depth:null,panoFilter:null,refinedScreen:null,floorStyle:`OPACITY`,colorStyle:`RGB`,constantColor:Ln,shownFloorIndex:-1,modelAlpha:1,opacity:1,progress:0,transition:`FADE`,clippers:Rn,brightness:1,useHQWeight:!1,useHQDepth:!1,pointSize:`ATTENUATION`,pointBack:`DARK`,pointShape:`CIRCLE`,pointScale:.02,pointMaxPixel:40,pointMinPixel:0,pointAppearAnimation:!0,gradientTexture:In,colorSaturation:0,colorBrightness:0,outlineGain:0,distanceGain:0,useAddBlend:!1,boundingBox:zn,gsSHDegree:0,minLevelOfDetail:0,maxLevelOfDetail:20,minGeometricError:0,maxGeometricError:1e4,panoramaMinGeometricError:.04,skipLevelOfDetail:!1,mostDetail:!1,loadSiblings:!1,cameraCulling:!0,maxMemoryUsage:64,maxRequests:6,requestOrder:`SCREEN_SPACE_ERROR`,maxScreenSpaceError:4,memoryAdjustedScreenSpaceError:!1,cacheCameras:Vn}}var Wn=jn(Hn());function Gn(e,t,n){let r=Fn[t];if(!r)return!1;Array.isArray(n)&&(n=n.slice());let i=e[t];return r(i,n)?!1:(e[t]=n,!0)}var K=class e{static createDefault(){return Un()}static resolveValue(...t){let n=Object.assign(this.createDefault(),{versions:[],version:``});for(let r of t){let t=r instanceof e?r.version:nn();n.versions.push(t);for(let e of Wn)r[e]!==void 0&&Gn(n,e,r[e])}return n.version=n.versions.toString(),n}constructor(e){this.id=nn(),this.versionNumber=0,this.unbind=new Map,this.value=Hn(),e&&this.copy(e);for(let e of Wn)Object.defineProperty(this,e,{get(){return this.value[e]}});Rt(this)}get version(){return`${this.id}:${this.versionNumber}`}resolveValue(...t){return e.resolveValue(...t,this)}assignValue(e,t){let n=this.unbind.get(e);n&&(this.unbind.delete(e),n());let r=Gn(this.value,e,t),i=this.value[e];if(i instanceof ln){let t=i.on(`update`,()=>this.versionNumber++);this.unbind.set(e,t)}return r}set(e,t){let n=!1;if(typeof e==`string`)t!==void 0&&this.assignValue(e,t)&&(n=!0);else{let t=e;for(let e of Wn)t[e]!==void 0&&this.assignValue(e,t[e])&&(n=!0)}return n&&this.versionNumber++,this}reset(...e){let t=!1;for(let n of e)this.assignValue(n,void 0)&&(t=!0);return t&&this.versionNumber++,this}resetAll(){return this.reset(...Wn)}copy(e){let t=!0;for(let n of Wn)this.assignValue(n,e[n])&&(t=!0);return t&&this.versionNumber++,this}},Kn=class extends c.Group{constructor(){super(...arguments),this.parameter=new K,this.needsRender=!0}get materialParameters(){return this.parameter.resolveValue()}get pbmMaterialParametersVersion(){return this.parameter.resolveValue().version}setMaterial(e){this.parameter.set(e),this.update(),this.needsRender=!0}getMaterial(){return this.parameter.resolveValue()}update(){let e=this.parameter.resolveValue();this.traverse(t=>{t instanceof yn||t instanceof bn?qn(t,e):t instanceof kn&&Jn(t,e)})}};function qn(e,t){let n=e.material;e.castShadow=t.castShadow,e.receiveShadow=t.receiveShadow;for(let e of n)e.customShaders=t.customShaders,e.pano0=t.pano0,e.pano1=t.pano1,e.pano0Depth=t.pano0Depth,e.pano1Depth=t.pano1Depth,e.refinedScreen=t.refinedScreen,e.modelAlpha=t.modelAlpha,e.progress=t.progress,e.transition=t.transition,e.opacity=t.opacity,e.floorStyle=t.floorStyle,e.constantColor=t.constantColor,e.shownFloorIndex=t.shownFloorIndex,e.clippers=t.clippers,e.brightness=t.brightness,e.useHQWeight=t.useHQWeight,e.useHQDepth=t.useHQDepth,e.colorSaturation=t.colorSaturation,e.colorBrightness=t.colorBrightness,e.gradientTexture=t.gradientTexture,e.shaderType===`none`?(e.transparent=!0,e.blending=c.NormalBlending,e.blendDst=c.OneMinusSrcAlphaFactor,e.blendEquation=c.AddEquation,e.blendSrcAlpha=null,e.blendDstAlpha=null,e.blendEquationAlpha=null,e.depthWrite=!1,e.depthTest=!0):(e.transparent=e.alphaMode===`BLEND`,e.blending=c.NormalBlending,e.blendDst=c.OneMinusSrcAlphaFactor,e.blendEquation=c.AddEquation,e.blendSrcAlpha=null,e.blendDstAlpha=null,e.blendEquationAlpha=null,e.depthWrite=!0,e.depthTest=!0,t.useAddBlend&&(e.depthWrite=!1,e.depthTest=!1,e.blending=c.AdditiveBlending),e.shownFloorIndex>-1&&e.shownFloorIndex!==e.floorIndex&&(e.transparent=!0),e.opacity<1&&(e.transparent=!0),e.alphaMap&&(e.transparent=!0),e.brightness<1&&(e.transparent=!0),t.useAddBlend&&(e.depthWrite=!1,e.depthTest=!1,e.blending=c.AdditiveBlending))}function Jn(e,t){let n=[e.material];e.castShadow=t.castShadow,e.receiveShadow=t.receiveShadow;for(let e of n)e.customShaders=t.customShaders,e.pointScale=t.pointScale,e.pointMinPixel=t.pointMinPixel,e.pointMaxPixel=t.pointMaxPixel,e.pointSize=t.pointSize,e.pointShape=t.pointShape,e.pointBack=t.pointBack,e.modelAlpha=t.modelAlpha,e.opacity=t.opacity,e.floorStyle=t.floorStyle,e.constantColor=t.constantColor,e.shownFloorIndex=t.shownFloorIndex,e.clippers=t.clippers,e.brightness=t.brightness,e.useHQWeight=t.useHQWeight,e.useHQDepth=t.useHQDepth,e.colorSaturation=t.colorSaturation,e.colorBrightness=t.colorBrightness,e.outlineGain=t.outlineGain,e.distanceGain=t.distanceGain,e.gradientTexture=t.gradientTexture,e.transparent=!1,e.blending=c.NormalBlending,e.blendDst=c.OneMinusSrcAlphaFactor,e.blendEquation=c.AddEquation,e.blendSrcAlpha=null,e.blendDstAlpha=null,e.blendEquationAlpha=null,e.depthWrite=!0,e.depthTest=!0,e.shownFloorIndex>-1&&(e.transparent=e.shownFloorIndex!==e.floorIndex),e.modelAlpha<1&&(e.transparent=!0),e.opacity<1&&(e.transparent=!0),e.brightness<1&&(e.transparent=!0),t.useAddBlend&&(e.depthWrite=!1,e.depthTest=!1,e.blending=c.AdditiveBlending),e.useHQWeight&&(e.depthWrite=!1,e.blending=c.CustomBlending,e.blendSrc=c.SrcAlphaFactor,e.blendSrcAlpha=c.SrcAlphaFactor,e.blendDst=c.OneFactor,e.blendDstAlpha=c.OneFactor)}var Yn=class e extends c.Points{get positions(){let e=this.geometry.getAttribute(`position`);return e?e.array:new Float32Array}get rotations(){let e=this.geometry.getAttribute(`rotation`);return e?e.array:new Float32Array}get scales(){let e=this.geometry.getAttribute(`scale`);return e?e.array:new Float32Array}get colors(){let e=this.geometry.getAttribute(`color`);return e?e.array:new Uint8Array}get selection(){let e=this.geometry.getAttribute(`selection`);return e?e.array:new Uint8Array}get sh1(){let e=this.geometry.getAttribute(`sh1`);return e?e.array:void 0}get sh2(){let e=this.geometry.getAttribute(`sh2`);return e?e.array:void 0}get sh3(){let e=this.geometry.getAttribute(`sh3`);return e?e.array:void 0}constructor(e){var t;let n=new c.BufferGeometry;super(n),this.transformChanged=!1,this.selectedChanged=!1,this.transferDetached=!1,this.maxSHDegree=0,this.usedSHDegree=0,this._selected=!1,this.material.visible=!1,this.numPoints=e?e.numPoints:0,this.maxSHDegree=(t=e==null?void 0:e.shDegree)==null?0:t,this.usedSHDegree=0,e&&e.positions?n.setAttribute(`position`,new c.BufferAttribute(e.positions,3)):n.setAttribute(`position`,new c.BufferAttribute(new Float32Array,3)),e&&e.rotations?n.setAttribute(`rotation`,new c.BufferAttribute(e.rotations,4)):n.setAttribute(`rotation`,new c.BufferAttribute(new Float32Array,4)),e&&e.scales?n.setAttribute(`scale`,new c.BufferAttribute(e.scales,3)):n.setAttribute(`scale`,new c.BufferAttribute(new Float32Array,3)),e&&e.colors?n.setAttribute(`color`,new c.BufferAttribute(e.colors,4,!0)):n.setAttribute(`color`,new c.BufferAttribute(new Uint8Array,4,!0));let r=new Uint8Array(this.numPoints);if(n.setAttribute(`selection`,new c.BufferAttribute(r,1)),e!=null&&e.sh1&&n.setAttribute(`sh1`,new c.BufferAttribute(e.sh1,9)),e!=null&&e.sh2&&n.setAttribute(`sh2`,new c.BufferAttribute(e.sh2,15)),e!=null&&e.sh3&&n.setAttribute(`sh3`,new c.BufferAttribute(e.sh3,21)),this._boundingBox=new c.Box3(new c.Vector3(1/0,1/0,1/0),new c.Vector3(-1/0,-1/0,-1/0)),e&&e.positions)for(let t=0;t<this.numPoints;t++)this._boundingBox.expandByPoint(new c.Vector3(e.positions[3*t],e.positions[3*t+1],e.positions[3*t+2]));this.matrixAutoUpdate=!1,this.lastMatrixWorld=null}serialize(){let t=new Uint8Array(this.numPoints*e.RowLength),n=new Float32Array(t.buffer),r=new Uint8Array(t.buffer),i=this.positions,a=this.colors,o=this.scales,s=this.rotations;for(let e=0;e<this.numPoints;e++)n[8*e+0]=i[3*e+0],n[8*e+1]=i[3*e+1],n[8*e+2]=i[3*e+2],r[32*e+24+0]=a[4*e+0],r[32*e+24+1]=a[4*e+1],r[32*e+24+2]=a[4*e+2],r[32*e+24+3]=a[4*e+3],n[8*e+3+0]=o[3*e+0],n[8*e+3+1]=o[3*e+1],n[8*e+3+2]=o[3*e+2],r[32*e+28+0]=s[4*e+0]*128+128&255,r[32*e+28+1]=s[4*e+1]*128+128&255,r[32*e+28+2]=s[4*e+2]*128+128&255,r[32*e+28+3]=s[4*e+3]*128+128&255;return t}reattach(e,t,n,r,i){let a=new Float32Array(e),o=new Float32Array(t),s=new Float32Array(n),l=new Uint8Array(r),u=new Uint8Array(i);this.geometry.setAttribute(`position`,new c.BufferAttribute(a,3)),this.geometry.setAttribute(`rotation`,new c.BufferAttribute(o,4)),this.geometry.setAttribute(`scale`,new c.BufferAttribute(s,3)),this.geometry.setAttribute(`color`,new c.BufferAttribute(l,4,!0)),this.geometry.setAttribute(`selection`,new c.BufferAttribute(u,1)),this.transferDetached=!1}get selected(){return this._selected}set selected(e){this._selected!==e&&(this._selected=e,this.selectedChanged=!0)}get boundingBox(){let e=new c.Vector3;this._boundingBox.getCenter(e),e.add(this.position);let t=new c.Vector3;this._boundingBox.getSize(t),t.multiply(this.scale);let n=new c.Vector3;return n.copy(t).multiplyScalar(.5),new c.Box3(e.clone().sub(n),e.clone().add(n))}dispose(){}raycast(e,t){var n,r;let i=this.matrixWorld,a=(r=(n=e.params.Points)==null?void 0:n.threshold)==null?0:r;if(this._boundingBox.isEmpty())return;let o=new c.Vector3;this._boundingBox.getCenter(o);let s=new c.Vector3;this._boundingBox.getSize(s);let l=Math.max(s.x,s.y,s.z)*.5,u=new c.Sphere(o,l);if(u.applyMatrix4(i),u.radius+=a,e.ray.intersectsSphere(u)===!1)return;let d=new c.Matrix4;d.getInverse(i);let f=new c.Ray;f.copy(e.ray).applyMatrix4(d);let p=a/((this.scale.x+this.scale.y+this.scale.z)/3),m=p*p,h=this.geometry.getAttribute(`position`);if(!h)return;let g=h.array,_=this.numPoints;for(let n=0;n<_;n++){let r=new c.Vector3(g[n*3],g[n*3+1],g[n*3+2]),a=f.distanceSqToPoint(r);if(a<m){let o=new c.Vector3;f.closestPointToPoint(r,o),o.applyMatrix4(i);let s=e.ray.origin.distanceTo(o);if(s<e.near||s>e.far)continue;t.push({distance:s,distanceToRay:Math.sqrt(a),point:o,index:n,face:null,object:this})}}}};Yn.RowLength=32;var Xn=new c.Matrix4().fromArray([1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1]),Zn=new c.Matrix4().getInverse(Xn);function q(...e){}var Qn=[/\.([0-9a-z]+)\.jsonp([\?\#].*)?$/i,/jsonp_([0-9a-z]+)([\?\#].*)?$/i],$n=typeof location<`u`?location.href:``,er=/^https\:/.test($n),tr=class extends Error{constructor(e,t,n){super(`[NETWORK]: request proxy error(type: ${t}, reason: ${n}): ${e}`)}},nr=class extends Error{constructor(e,t,n){super(`[NETWORK]: response error(type: ${t}, status: ${n}): ${e}`),this.httpStatus=n}},rr=class extends Error{constructor(e,t,n){super(`[NETWORK]: request timeout(type: ${t}, timeout: ${n}ms): ${e}`)}};function ir(e){if(!e)return{};let t={},n=e.trim().split(`
317
319
  `);for(let e=0;e<n.length;e++){let r=n[e],i=r.indexOf(`:`),a=r.slice(0,i).trim().toLowerCase(),o=r.slice(i+1).trim();o&&(t[a]?t[a]+=`, `+o:t[a]=o)}return t}function ar(e){for(let t of Qn){let n=e.match(t);if(n)return`jsonp_`+n[1]}return null}function or(e){return ar(e)!==null}var sr=class extends cn{};function cr(e,t={},n=q,r=q,i=q){let a=U(),o=e;return Promise.resolve().then(()=>t.requestProxy?t.requestProxy(e):e).then(e=>er&&/^http\:/.test(e)?(console.warn(`The page at '${$n}' was loaded over HTTPS, but requested an insecure element '${e}'. This request was automatically upgraded to HTTPS`),e.replace(/^http\:/,`https:`)):e).catch(n=>{var r;ar(e);let i=new tr(o,`XMLHttpRequest`,n&&n.message?String(n.message):String(n));return(r=t.networkSubscribe)==null||r.emit(`network`,e,`XMLHttpRequest`,`forbidden`,i.message),Promise.reject(i)}).then(e=>new Promise((s,c)=>{let l=ar(e);if(l){let i=window,u=null,d=!1,f=document.createElement(`script`);i[l]=p=>{var m,h;let g=U(),_=g-a;if(delete i[l],f.parentNode&&f.parentNode.removeChild(f),u!==null&&(window.clearTimeout(u),u=null),d===!0)return;if(p.indexOf(`data:`)!==0){let n=new nr(e,`XMLHttpRequest`,500);r(n),c(n),(m=t.networkSubscribe)==null||m.emit(`network`,e,`XMLHttpRequest`,`error`,n.message);return}let v=p.split(`,`),y=(v[0].match(/:(.*?);/)||[])[1],b=v[1];if(t.responseType===`arraybuffer`||t.responseType===`blob`){let e=atob(v[1]),n=e.length,r=new Uint8Array(n);for(let t=0;t<n;t++)r[t]=e.charCodeAt(t);b=t.responseType===`arraybuffer`?r.buffer:new Blob([r],{type:y})}let x={body:b,meta:{origin:o,source:e,requestTime:a,responseTime:g,costs:_,headers:{}}};n(x),s(x),(h=t.networkSubscribe)==null||h.emit(`network`,e,`XMLHttpRequest`,`ok`,JSON.stringify(x.meta)),d=!0},f.src=e,document.body.appendChild(f),typeof t.timeout==`number`&&(u=window.setTimeout(()=>{var n;if(u=null,d!==!0){d=!0;let i=new rr(e,`XMLHttpRequest`,t.timeout||NaN);r(i),c(i),(n=t.networkSubscribe)==null||n.emit(`network`,e,`XMLHttpRequest`,`timeout`,i.message)}},t.timeout))}else{let l=!1,u=new XMLHttpRequest,d=()=>{u&&(u.removeEventListener(`timeout`,f,!1),u.removeEventListener(`progress`,p,!1),u.removeEventListener(`load`,m,!1),u.removeEventListener(`error`,h,!1)),u=null,d=q},f=function(){var n;if(l===!0)return;l=!0,d();let i=new rr(e,`XMLHttpRequest`,t.timeout||NaN);r(i),c(i),(n=t.networkSubscribe)==null||n.emit(`network`,e,`XMLHttpRequest`,`timeout`,i.message)},p=function(e){l!==!0&&e.lengthComputable&&(e.total<=0||i(e.loaded/e.total,e.loaded,e.total))},m=function(r){var i;if(l===!0)return;let c=this.status;if(c===0||c>=200&&c<400){l=!0,d();let c=U(),u=c-a,f=ir(this.getAllResponseHeaders()),p=r.total,m={body:this.response,meta:{origin:o,source:e,requestTime:a,responseTime:c,costs:u,headers:f,size:p}};n(m),s(m),(i=t.networkSubscribe)==null||i.emit(`network`,e,`XMLHttpRequest`,`ok`,JSON.stringify(m.meta))}else h.call(this)},h=function(){var n;if(l===!0)return;l=!0,d();let i=new nr(e,`XMLHttpRequest`,this.status);r(i),c(i),(n=t.networkSubscribe)==null||n.emit(`network`,e,`XMLHttpRequest`,`error`,i.message)};u.addEventListener(`timeout`,f,!1),u.addEventListener(`progress`,p,!1),u.addEventListener(`load`,m,!1),u.addEventListener(`error`,h,!1),t.responseType&&(u.responseType=t.responseType),typeof t.timeout==`number`&&(u.timeout=t.timeout),u.open(`GET`,e,!0),u.send(null)}}))}var lr={};function ur(e,t={}){let n=U(),r=e;return Promise.resolve().then(()=>t.requestProxy?t.requestProxy(e):e).then(e=>er&&/^http\:/.test(e)?(console.warn(`The page at '${$n}' was loaded over HTTPS, but requested an insecure element '${e}'. This request was automatically upgraded to HTTPS`),e.replace(/^http\:/,`https:`)):e).catch(n=>{var i;let a=new tr(r,`Link`,n&&n.message?String(n.message):String(n));return(i=t.networkSubscribe)==null||i.emit(`network`,e,`Link`,`forbidden`,a.message),Promise.reject(a)}).then(e=>e in lr?lr[e]:lr[e]=new Promise((i,a)=>{let o=document.head||document.getElementsByTagName(`head`)[0],s=document.createElement(`link`),c=!1,l=null;s.onload=a=>{var o;if(l!==null&&(clearTimeout(l),l=null),c===!0)return;c=!0,i(),s.onerror=q,s.onload=q;let u=U(),d={origin:r,source:e,requestTime:n,responseTime:u,costs:u-n,headers:{}};(o=t.networkSubscribe)==null||o.emit(`network`,e,`Link`,`preload`,JSON.stringify(d))},s.onerror=n=>{var r;if(l!==null&&(clearTimeout(l),l=null),c===!0)return;c=!0,delete lr[e],o&&s.parentNode===o&&o.removeChild(s);let i=new nr(e,`Link`,0);a(i),s.onerror=q,s.onload=q,(r=t.networkSubscribe)==null||r.emit(`network`,e,`Link`,`error`,i.message)},typeof t.timeout==`number`&&(l=window.setTimeout(()=>{var a;if(l=null,c===!0)return;c=!0,i(),s.onerror=q,s.onload=q;let o=U(),u={origin:r,source:e,requestTime:n,responseTime:o,costs:o-n,headers:{}};(a=t.networkSubscribe)==null||a.emit(`network`,e,`Link`,`timeout`,JSON.stringify(u))},t.timeout)),s.rel=s.relList&&s.relList.supports(`prefetch`)?`prefetch`:`preload`,s.as=`fetch`,s.crossOrigin=``,s.fetchPriority=`high`,s.href=e,o&&o.appendChild(s)}))}function dr(e,t={},n=q,r=q,i=q,a){let o=U(),s=e;return Promise.resolve().then(()=>t.requestProxy?t.requestProxy(e):e).then(e=>er&&/^http\:/.test(e)?(console.warn(`The page at '${$n}' was loaded over HTTPS, but requested an insecure element '${e}'. This request was automatically upgraded to HTTPS`),e.replace(/^http\:/,`https:`)):e).catch(n=>{var r;let i=new tr(s,`Image`,n&&n.message?String(n.message):String(n));return(r=t.networkSubscribe)==null||r.emit(`network`,e,`Image`,`forbidden`,i.message),Promise.reject(i)}).then(e=>or(e)?cr(e,{responseType:`blob`,networkSubscribe:t.networkSubscribe}).then(e=>URL.createObjectURL(e.body)):e).then(e=>new Promise((c,l)=>{let u=a==null?new Image:a,d=!1,f=null;typeof t.timeout==`number`&&(f=window.setTimeout(()=>{var n;if(u.onload=q,u.onerror=q,f=null,d===!0)return;d=!0;let i=new rr(e,`Image`,t.timeout);r(i),l(i),(n=t.networkSubscribe)==null||n.emit(`network`,e,`Image`,`timeout`,i.message)},t.timeout)),u.onload=()=>{var r;if(u.onload=q,u.onerror=q,f!==null&&(clearTimeout(f),f=null),d===!0)return;let a=U(),l={headers:{},origin:s,source:e,requestTime:o,responseTime:a,costs:a-o};d=!0;let p={body:u,meta:l};i(1),n(p),c(p),(r=t.networkSubscribe)==null||r.emit(`network`,e,`Image`,`ok`,JSON.stringify(p.meta))},u.onerror=()=>{var n;if(u.onload=q,u.onerror=q,f!==null&&(clearTimeout(f),f=null),d===!0)return;d=!0;let i=new nr(e,`Image`,0);r(i),l(i),(n=t.networkSubscribe)==null||n.emit(`network`,e,`Image`,`ok`,i.message)},i(0),u.src=e}))}var fr=class{constructor(e={}){this.options=e}ajax(e,t={},n=q,r=q,i=q){var a;let o=this.options;return cr(e,{responseType:t.responseType,timeout:(a=t.timeout)==null?o.timeout:a,get requestProxy(){var e;return(e=t.requestProxy)==null?o.requestProxy:e},get networkSubscribe(){var e;return(e=t.networkSubscribe)==null?o.networkSubscribe:e}},n,r,i)}loadImage(e,t={},n=q,r=q,i=q,a){var o;let s=this.options;return dr(e,{timeout:(o=t.timeout)==null?s.timeout:o,get requestProxy(){var e;return(e=t.requestProxy)==null?s.requestProxy:e},get networkSubscribe(){var e;return(e=t.networkSubscribe)==null?s.networkSubscribe:e}},n,r,i,a)}preload(e,t={}){var n;let r=this.options;return ur(e,{timeout:(n=t.timeout)==null?r.timeout:n,get requestProxy(){var e;return(e=t.requestProxy)==null?r.requestProxy:e},get networkSubscribe(){var e;return(e=t.networkSubscribe)==null?r.networkSubscribe:e}})}},pr=new fr;function mr(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function hr(e,t){let n={},r=new Set(t);for(let t of Object.keys(e))r.has(t)||(n[t]=e[t]);return n}function gr(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=r)}return t}var _r=typeof document<`u`?document.createElement(`a`):{href:``};function vr(e){return e.indexOf(`/`)===0||/^[0-9a-z]+\:/i.test(e)}function yr(e){if(typeof URL<`u`&&typeof location<`u`)return new URL(e,location.href).href;{_r.href=e;let t=_r.href;return _r.href=``,t}}function br(...e){let t=[];e=e.map(e=>(e==null?``:e).trim()).filter(e=>e.length>0&&!/^\/+$/.test(e));for(let n=0;n<e.length;n++){let r=n===0,i=n===e.length-1,a=e[n];r||(a=a.replace(/^\.\//,``).replace(/^\/+/,``)),i||(a=a.replace(/\/+$/,``)),t.push(a)}return t.join(`/`)}function xr(e,t=``){if((t[0]===`?`||t[0]===`&`)&&(t=t.slice(1)),!t)return e;let n=e.indexOf(`#`),r=``;return n>=0&&(r=e.slice(n),e=e.slice(0,n)),(e[e.length-1]===`?`||e[e.length-1]===`&`)&&(e=e.slice(0,-1)),e.indexOf(`?`)>=0?`${e}&${t}${r}`:`${e}?${t}${r}`}function Sr(e){var t;let n=/^(http\:|https\:|file\:)?\/\/[^/]/.exec(e);if(!n)return e;let r=n[1]||``,i=e.slice(r.length+2),a=i.indexOf(`#`);a>=0&&(e.slice(a),i=e.slice(0,a));let o=i.indexOf(`?`);o>=0&&(e.slice(o),i=e.slice(0,o));let s=i.split(`/`),c=s.shift(),l=(t=s.pop())==null?``:t,u=[];for(let e of s)if(!(e===``||e===`.`)){if(e===`..`){u.pop();continue}u.push(e)}return r+`//`+c+`/`+u.join(`/`)+`/`+l}function Cr(e){let t=/([0-9a-z\.\_\-]+)([\?\#].*)?$/i.exec(e);if(t){let e=String(t[1]).trim().split(`.`).slice(1).reverse()[0];if(e)return`.`+e}return``}var wr=`data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoCAAIAAUAmJaQAA3AA/vz0AAA=`,Tr=`data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAAGhbWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAsaWxvYwAAAABEAAACAAEAAAABAAAB3gAAABkAAgAAAAEAAAHJAAAAFQAAAEJpaW5mAAAAAAACAAAAGmluZmUCAAAAAAEAAGF2MDFDb2xvcgAAAAAaaW5mZQIAAAAAAgAAYXYwMUFscGhhAAAAABppcmVmAAAAAAAAAA5hdXhsAAIAAQABAAAA12lwcnAAAACxaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIAAoAAAAAUaXNwZQAAAAAAAAACAAAAAgAAAA5waXhpAAAAAAEIAAAADGF2MUOBABwAAAAAOGF1eEMAAAAAdXJuOm1wZWc6bXBlZ0I6Y2ljcDpzeXN0ZW1zOmF1eGlsaWFyeTphbHBoYQAAAAAeaXBtYQAAAAAAAAACAAEEAQKDBAACBAUGhwgAAAA2bWRhdBIACgQYADLVMgsWQBhhIAQqrNj/+BIACgUYADLEoDIOFkADDDDCQAACDaqCCb4=`,Er=`data:image/heif;base64,AAAAGGZ0eXBoZWljAAAAAG1pZjFoZWljAAABL21ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABodmMxAAAAAK9pcHJwAAAAkmlwY28AAAB2aHZjQwEBYAAAAAAAAAAAAADwAPz9+PgAACcDoAABAB5AAQwG//8BYAAAAwAAAwAAAwAAAwAAAwAAreTLgSChAAEAI0IBBwFgAAADAAADAAADAAADAAADAAChInJJlreTLySZNdggogABAAdEAcA98DMkAAAAFGlzcGUAAAAAAAAAAgAAAAIAAAAVaXBtYQAAAAAAAAABAAECgQIAAAAiaWxvYwAAAABEQAABAAEAAAAAAU8AAQAAAAAAAAAOAAAAFm1kYXQAAAAKJgGvLvkQwuWM4A==`;function Dr(e){return new Promise(t=>{if(typeof Image>`u`){t(!1);return}let n=new Image,r=setTimeout(()=>{n.onload=n.onerror=()=>{},clearTimeout(r),t(!1)},100);n.onload=n.onerror=()=>{n.onload=n.onerror=()=>{},clearTimeout(r),t(n.height===2)},n.src=e})}var Or=null;function kr(){return Or||(Or=Promise.all([Dr(wr),Dr(Tr),Dr(Er)]).then(e=>({webp:e[0],avif:e[1],heif:e[2]})))}var Ar,jr=!1,Mr=!1,Nr=!1;kr().then(e=>{jr=e.avif,Mr=e.webp,Nr=e.heif});var Pr=[`jpg`,`jpeg`,`png`,`heif`,`heic`,`webp`,`avif`];function Fr(e){return Pr.indexOf(e)>=0}var Ir={"vrlab-public.ljcdn.com":{type:`tencentCloud`,pano:[`vrlab-image1.ljcdn.com`,`vrlab-image2.ljcdn.com`],texture:[`vrlab-image3.ljcdn.com`],tile:[`vr-tile-1.realsee-cdn.cn`,`vr-tile-2.realsee-cdn.cn`],model:[`vr-model-1.realsee-cdn.cn`,`vr-model-2.realsee-cdn.cn`],default:[`vrlab-image4.ljcdn.com`]},"vr-public.realsee-cdn.cn":{type:`tencentCloud`,pano:[`vr-image-1.realsee-cdn.cn`,`vr-image-2.realsee-cdn.cn`],texture:[`vr-image-3.realsee-cdn.cn`],tile:[`vr-tile-1.realsee-cdn.cn`,`vr-tile-2.realsee-cdn.cn`],model:[`vr-model-1.realsee-cdn.cn`,`vr-model-2.realsee-cdn.cn`],default:[`vr-image-4.realsee-cdn.cn`]},"vr-public.rscdn.cn":{type:`tencentCloud`,pano:[`vr-image-1.rscdn.cn`,`vr-image-2.rscdn.cn`],texture:[`vr-image-3.rscdn.cn`],tile:[`vr-tile-1.rscdn.cn`,`vr-tile-2.rscdn.cn`],model:[`vr-model-1.rscdn.cn`,`vr-model-2.rscdn.cn`],default:[`vr-image-4.rscdn.cn`]},"mars-public.realsee-cdn.cn":{type:`aliyun`,pano:[`mars-image-1.realsee-cdn.cn`,`mars-image-2.realsee-cdn.cn`],texture:[`mars-image-3.realsee-cdn.cn`],tile:[`mars-tile-1.realsee-cdn.cn`,`mars-tile-2.realsee-cdn.cn`],model:[`mars-model-1.realsee-cdn.cn`,`mars-model-2.realsee-cdn.cn`],default:[`mars-image-4.realsee-cdn.cn`]},"global-public.realsee-cdn.com":{type:`tencentCloud`,pano:[`global-image-1.realsee-cdn.com`,`global-image-2.realsee-cdn.com`],texture:[`global-image-3.realsee-cdn.com`],tile:[`global-tile-1.realsee-cdn.com`,`global-tile-2.realsee-cdn.com`],model:[`global-model-1.realsee-cdn.com`,`global-model-2.realsee-cdn.com`],default:[`global-image-4.realsee-cdn.com`]},"earth-ga-public.realsee-cdn.cn":{type:`tencentCloud`,pano:[`earth-ga-image-1.realsee-cdn.cn`,`earth-ga-image-2.realsee-cdn.cn`],texture:[`earth-ga-image-3.realsee-cdn.cn`],tile:[`earth-ga-tile-1.realsee-cdn.cn`,`earth-ga-tile-2.realsee-cdn.cn`],model:[`earth-ga-model-1.realsee-cdn.cn`,`earth-ga-model-2.realsee-cdn.cn`],default:[`earth-ga-image-4.realsee-cdn.cn`]},"test-vr-public.realsee-cdn.com":{type:`tencentCloud`,pano:[`test-vr-image.realsee-cdn.com`,`test-vr-image.realsee-cdn.com`],texture:[`test-vr-image.realsee-cdn.com`],tile:[`test-vr-image.realsee-cdn.com`,`test-vr-image.realsee-cdn.com`],model:[`test-vr-image.realsee-cdn.com`,`test-vr-image.realsee-cdn.com`],default:[`test-vr-image.realsee-cdn.com`]},"test-vr-public.realsee-cdn.cn":{type:`tencentCloud`,pano:[`test-vr-image.realsee-cdn.cn`,`test-vr-image.realsee-cdn.cn`],texture:[`test-vr-image.realsee-cdn.cn`],tile:[`test-vr-image.realsee-cdn.cn`,`test-vr-image.realsee-cdn.cn`],model:[`test-vr-image.realsee-cdn.cn`,`test-vr-image.realsee-cdn.cn`],default:[`test-vr-image.realsee-cdn.cn`]}},Lr=/^https?\:\/\/?([^\/]+)/;function Rr(e){let t=e.match(Lr);return t===null?null:t[1]}function zr(e,t,n){var r,i;let a=(i=(r=t[n])==null?t[t.length-1]:r)==null?e:i;return e.replace(Lr,(e,t)=>e.slice(0,e.length-t.length)+a)}function Br(e,t,n){let[r,...i]=t.split(`.`);if(r===`texture`)return zr(e,n.texture,0);if(r===`pano`){let[t,r]=i;switch(r){case`front`:case`left`:case`up`:return zr(e,n.pano,0);case`down`:case`right`:case`back`:return zr(e,n.pano,1);default:break}}else if(r===`pano_tile`){let[t,r,a,o,s]=i,c=Math.pow(2,Number(a))*Number(o)+Number(s);if(!isNaN(c))return zr(e,n.tile,c%2)}else if(r===`model`){let[t]=i,r=Number(t);if(!isNaN(r))return zr(e,n.model,r%2)}return zr(e,n.default,0)}var Vr=(e,t)=>{let n=e.split(`?`)[0],r=n.split(`.`).pop();if(r===`jpeg`&&(r=`jpg`),r===`heif`&&(r=`heic`),r&&!Fr(r))return e;let i=[],{format:a,cut:o,quality:s,size:c,sharpen:l,forceUseExifOrientation:u}=t;if(a===`jpeg`&&(a=`jpg`),a===`heif`&&(a=`heic`),(!jr&&(a==null?r:a)===`avif`||!Mr&&(a==null?r:a)===`webp`||!Nr&&(a==null?r:a)===`heic`)&&(a=`jpg`),a!==void 0&&a!==r&&i.push(`format/${a}`),o!==void 0&&i.push(`cut/${o[2]}x${o[3]}x${o[0]}x${o[1]}`),s!==void 0){let e=a==null?r:a;e&&[`jpg`,`webp`,`heic`,`avif`].indexOf(e)>=0&&i.push(`quality/${s}`)}if(c!==void 0){let t=e.match(/\/cube_(\d+)\//);(t?Number(t[1]):NaN)!==Number(c)&&i.push(`thumbnail/${c}x`)}l!==void 0&&i.push(`sharpen/${l}`),u===!0&&i.push(`auto-orient`);let d=``;return i.length&&(d=`?imageMogr2/`+i.join(`/`)),n+d},Hr=(e,t)=>{let n=e.split(`?`)[0],r=n.split(`.`).pop();if(r===`jpeg`&&(r=`jpg`),r===`heif`&&(r=`heic`),r&&!Fr(r))return e;let i=[],{format:a,cut:o,quality:s,size:c,sharpen:l}=t;if(a===`jpeg`&&(a=`jpg`),a===`heif`&&(a=`heic`),(!jr&&(a==null?r:a)===`avif`||!Mr&&(a==null?r:a)===`webp`||!Nr&&(a==null?r:a)===`heic`)&&(a=`jpg`),a!==void 0&&a!==r&&i.push(`format,${a}`),o!==void 0){let[e,t,n,r]=o;i.push(`crop,x_${e},y_${t},w_${n},h_${r},g_nw`)}if(s!==void 0&&s!==100){let e=a==null?r:a;e&&[`jpg`,`webp`,`heic`,`avif`].indexOf(e)>=0&&i.push(`quality,Q_${s}`)}c&&c!==2048&&i.push(`resize,w_${c}`),l!==void 0&&i.push(`sharpen,${l}`);let u=``;return i.length&&(u=`?x-oss-process=image/`+i.join(`/`)),n+u},Ur=9007199254740991;function Wr(e){let t=Math.round(e);return Math.abs(t-e)<.001?t:Math.floor(e)}function Gr(e){return e=Object.assign({},e),e.size!==void 0&&(e.size=Wr(W(e.size,0,Ur))),e.quality!==void 0&&(e.quality=Wr(W(e.quality,0,100))),e.cut!==void 0&&(e.cut=[Wr(W(e.cut[0],0,Ur)),Wr(W(e.cut[1],0,Ur)),Wr(W(e.cut[2],0,Ur)),Wr(W(e.cut[3],0,Ur))]),e.sharpen!==void 0&&(e.sharpen=Wr(W(e.sharpen,0,Ur))),e}function Kr(e,t){let n=Object.assign(Object.assign({},Ir),t.mappings),r=Rr(e);if(r===null)return e;t=Gr(t);let i=n[r];return i?(e=Br(e,t.key,i),/\.basis(\?|$)/.test(e)&&(e=e.replace(/\.basis(\?|$)/,`.jpg$1`)),i.type===`tencentCloud`?Vr(e,t):i.type===`aliyun`?Hr(e,t):e):e}function qr(e,t=Kr,n){let r=t(e,n);if(r===e&&n.cut)throw Error(`ImageURL: cut option not applied.`);return r}var Jr=/\/cube_(\d+)\//;function Yr(e){let t=e.match(Jr);return t?Number(t[1]):null}function Xr(e,t){return e.replace(Jr,`/cube_${t}/`)}var Zr=(Ar=Math.log2)==null?(e=>Math.log(e)*Math.LOG2E):Ar;function Qr(e){return Math.floor(Math.max(Zr(e/512),0))}var $r=(()=>{let e=U();return{requestAnimationFrame(t){let n=U(),r=W(16+(n-e),16,33),i=setTimeout(function(){t(Kt(n+r))},r);return e=n+r,i},cancelAnimationFrame:e=>clearTimeout(e)}})(),ei=typeof requestAnimationFrame==`function`&&typeof cancelAnimationFrame==`function`?{requestAnimationFrame:e=>requestAnimationFrame(e),cancelAnimationFrame:e=>cancelAnimationFrame(e)}:$r,ti=5,ni=16,ri=class e{static get shared(){return this.sharedInstance||(this.sharedInstance=new e),this.sharedInstance}static getFrameTime(){return ni}constructor(){this.loopType=`raf`,this.frames=[],this.isAnimating=!1,this.context=null;let e=U();this.loop=(...t)=>{if(this.isAnimating===!1)return;let n=U(),r=Math.max(n-e,0);e=n,ni=r;let i=this.frames.slice();for(let e=0;e<i.length;e++){let a=i[e];if(a.delay>0){--a.delay;continue}try{a.callback(n,r,...t)}catch(e){console.error(e)}a.calls++}for(let e=this.frames.length-1;e>=0;e--){let t=this.frames[e];t.once&&t.calls>0&&this.frames.splice(e,1)}this.requestId=this.requestAnimationFrame(this.loop)},this.start()}start(){this.isAnimating!==!0&&(this.isAnimating=!0,this.requestId=this.requestAnimationFrame(this.loop))}stop(){this.isAnimating=!1,this.cancelAnimationFrame(this.requestId)}setContext(e){e!==this.context&&(this.stop(),this.context=e,this.start())}getContext(){return this.context}setLoopType(e){e!==this.loopType&&(this.stop(),this.loopType=e,this.start())}getLoopType(){return this.loopType}requestAnimationFrame(e){let t;if(this.context?t=this.context:this.loopType===`raf`?t=ei:this.loopType===`sto`&&(t=$r),t)return t.requestAnimationFrame(e)}cancelAnimationFrame(e){let t;this.context?t=this.context:this.loopType===`raf`?t=ei:this.loopType===`sto`&&(t=$r),t&&t.cancelAnimationFrame(e)}remove(e){let t=this.frames.indexOf(e);t>=0&&this.frames.splice(t,1)}add(e,t=!1,n=0,r=ti){let i={callback:e,once:t,delay:n,order:r,calls:0},a=this.frames.length;for(;--a>=0;)if(this.frames[a].order<=r){this.frames.splice(a+1,0,i);break}return a<0&&this.frames.unshift(i),()=>this.remove(i)}clear(){this.frames.length=0}},ii=typeof createImageBitmap<`u`&&typeof ImageBitmap<`u`,ai=!1;function oi(e){ai=e}function si(){return ai===!1?!1:ii}function ci(e={}){let t=e.onClose;return Object.assign(document.createElementNS(`http://www.w3.org/1999/xhtml`,`img`),{crossOrigin:``,close(){t&&t.call(this),this.onerror=this.onload=this.close=q,this.removeAttribute(`src`),t=void 0}})}function li(e){if(si())return createImageBitmap(e);{let t=URL.createObjectURL(e),n=function(){this.src===t&&URL.revokeObjectURL(t)};return new Promise((e,r)=>{let i=ci({onClose:n});i.onload=()=>{i.src===t&&URL.revokeObjectURL(t),i.onload=i.onerror=q,ri.shared.add(()=>{e(i)},!0)},i.onerror=()=>{let e=i.src;i.onload=i.onerror=q,i.close(),r(Error(`image load error: ${e}`))},i.decoding=`async`,i.src=t})}}var ui=[];function di(e,t){let n=ui.pop();if(n)return n.width=e,n.height=t,n;let r=Object.assign(document.createElementNS(`http://www.w3.org/1999/xhtml`,`canvas`),{close:()=>{r.close=q,ui.push(r)}});return r}function fi(e,t){if(t&&(e.width>t.width||e.height>t.height)){let n=di(Math.min(e.width,t.width),Math.min(e.height,t.height)),r=n.getContext(`2d`);r.clearRect(0,0,n.width,n.height),r.drawImage(e,0,0,n.width,n.height),e.close();let i=new c.Texture(n);i.needsUpdate=!0,i.flipY=!0;let a=i.dispose;return i.dispose=function(){n.close(),a.call(i),i.dispose=a},i}else{let t=new c.Texture(e);t.needsUpdate=!0,typeof ImageBitmap<`u`&&e instanceof ImageBitmap?t.flipY=!1:t.flipY=!0,t.flipY===!1&&(t.repeat.y*=-1,t.offset.y+=1,t.updateMatrix());let n=t.dispose;return t.dispose=function(){this.image&&this.image.close(),n.call(t),t.dispose=n},t}}function pi(e){let t=new c.CubeTexture(e);t.needsUpdate=!0,t.flipY=!1;let n=t.dispose;return t.dispose=function(){if(Array.isArray(this.images))for(let e of this.images)e.close();n.call(t),t.dispose=n},t}var mi=[`right`,`left`,`up`,`down`,`front`,`back`],hi=class{loadTexture(e,t,n=q,r=q,i=q,a){var o,s,l,u,d,f,p;let m={};if(t.flipY!==void 0&&(m.flipY=t.flipY),t.format!==void 0)m.format=t.format;else{let t=Cr(e);(t===`.jpg`||t===`.jpeg`)&&(m.format=c.RGBFormat)}t.encoding!==void 0&&(m.encoding=t.encoding),m.generateMipmaps=(o=t.generateMipmaps)==null?!1:o,m.minFilter=(s=t.minFilter)==null?c.LinearFilter:s,m.magFilter=(l=t.magFilter)==null?c.LinearFilter:l;let h=(d=(u=t.imageURL)==null?void 0:u.options)==null?{key:`unknown`}:d;if(e=qr(e,(f=t.imageURL)==null?void 0:f.transform,h),(p=t.viaAjax)==null?si:p)return t.fetcher.ajax(e,{timeout:t.timeout,responseType:`blob`},void 0,void 0,i).then(e=>li(e.body)).then(e=>fi(e,t.maxSize)).then(e=>(Object.assign(e,m),e)).then(e=>{let t={meta:null,body:e};return n(t),t}).catch(e=>(r(e),Promise.reject(e)));{let a=null,o;return Promise.resolve().then(()=>ci()).then(n=>(o=n,t.fetcher.loadImage(e,{timeout:t.timeout},void 0,void 0,i,n))).then(e=>(a=e.meta,fi(e.body,t.maxSize))).then(e=>(Object.assign(e,m),e)).then(e=>{let t={meta:a,body:e};return n(t),t}).catch(e=>(o&&o.close(),r(e),Promise.reject(e)))}}loadCubeTexture(e,t,n=q,r=q,i=q,a){var o,s,l,u,d,f,p;let m={};if(t.format!==void 0)m.format=t.format;else{let t=!0;for(let n of mi){let r=Cr(e[n]);if(r!==`.jpg`&&r!==`.jpeg`){t=!1;break}}t&&(m.format=c.RGBFormat)}m.generateMipmaps=(o=t.generateMipmaps)==null?!1:o,m.minFilter=(s=t.minFilter)==null?c.LinearFilter:s,m.magFilter=(l=t.magFilter)==null?c.LinearFilter:l;let h=[e[mi[0]],e[mi[1]],e[mi[2]],e[mi[3]],e[mi[4]],e[mi[5]]],g=[],_=[0,0,0,0,0,0],v=[];for(let e=0;e<6;e++){let n=(d=(u=t.imageURL)==null?void 0:u.options)==null?{key:`unknown`}:d,r=qr(h[e],(f=t.imageURL)==null?void 0:f.transform,Object.assign(Object.assign({},n),{key:n.key+`.`+mi[e]})),a=t=>{_[e]=t,i(_.reduce((e,t)=>e+t,0)/6)};if((p=t.viaAjax)!=null&&p){let n=t.fetcher.ajax(r,{timeout:t.timeout,responseType:`blob`},void 0,void 0,a).then(t=>(v[e]=t.meta,li(t.body)));g.push(n)}else{let n,i=Promise.resolve().then(()=>ci()).then(e=>(n=e,t.fetcher.loadImage(r,{timeout:t.timeout},void 0,void 0,a,e))).then(t=>(v[e]=t.meta,t.body)).catch(e=>(n&&n.close(),Promise.reject(e)));g.push(i)}}return Promise.all(g).then(e=>pi(e)).then(e=>(Object.assign(e,Object.assign({encoding:c.sRGBEncoding},m)),e)).then(e=>{let t={body:e,meta:v};return n(t),t}).catch(e=>{for(let e of g)e.then(e=>e.close()).catch(q);return r(e),Promise.reject(e)})}},gi=l.Reader,_i=l.util,vi=l.roots[`@REALSEE/FIVE:five/model/loaders/protobuf/pbm.proto`]||(l.roots[`@REALSEE/FIVE:five/model/loaders/protobuf/pbm.proto`]={}),yi=vi.Model=(()=>{function e(e){if(this.chunks=[],e)for(let t=Object.keys(e),n=0;n<t.length;++n)e[t[n]]!=null&&(this[t[n]]=e[t[n]])}return e.prototype.chunks=_i.emptyArray,e.prototype.createAt=_i.Long?_i.Long.fromBits(0,0,!0):0,e.prototype.description=``,e.decode=function(e,t,n){e instanceof gi||(e=gi.create(e));let r=t===void 0?e.len:e.pos+t,i=new vi.Model;for(;e.pos<r;){let t=e.uint32();if(t===n)break;switch(t>>>3){case 1:i.chunks&&i.chunks.length||(i.chunks=[]),i.chunks.push(vi.Chunk.decode(e,e.uint32()));break;case 2:i.createAt=e.uint64();break;case 3:i.description=e.string();break;default:e.skipType(t&7);break}}return i},e.getTypeUrl=function(e){return e===void 0&&(e=`type.googleapis.com`),e+`/Model`},e})();vi.Chunk=(()=>{function e(e){if(e)for(let t=Object.keys(e),n=0;n<t.length;++n)e[t[n]]!=null&&(this[t[n]]=e[t[n]])}return e.prototype.vertices=null,e.prototype.faces=null,e.prototype.name=``,e.prototype.texture=``,e.decode=function(e,t,n){e instanceof gi||(e=gi.create(e));let r=t===void 0?e.len:e.pos+t,i=new vi.Chunk;for(;e.pos<r;){let t=e.uint32();if(t===n)break;switch(t>>>3){case 1:i.vertices=vi.Vertices.decode(e,e.uint32());break;case 2:i.faces=vi.Faces.decode(e,e.uint32());break;case 3:i.name=e.string();break;case 4:i.texture=e.string();break;default:e.skipType(t&7);break}}if(!i.hasOwnProperty(`vertices`))throw _i.ProtocolError(`missing required 'vertices'`,{instance:i});if(!i.hasOwnProperty(`faces`))throw _i.ProtocolError(`missing required 'faces'`,{instance:i});if(!i.hasOwnProperty(`name`))throw _i.ProtocolError(`missing required 'name'`,{instance:i});return i},e.getTypeUrl=function(e){return e===void 0&&(e=`type.googleapis.com`),e+`/Chunk`},e})(),vi.Vertices=(()=>{function e(e){if(this.xyz=[],this.uvs=[],this.marks=[],e)for(let t=Object.keys(e),n=0;n<t.length;++n)e[t[n]]!=null&&(this[t[n]]=e[t[n]])}return e.prototype.xyz=_i.emptyArray,e.prototype.uvs=_i.emptyArray,e.prototype.marks=_i.emptyArray,e.decode=function(e,t,n){e instanceof gi||(e=gi.create(e));let r=t===void 0?e.len:e.pos+t,i=new vi.Vertices;for(;e.pos<r;){let t=e.uint32();if(t===n)break;switch(t>>>3){case 1:if(i.xyz&&i.xyz.length||(i.xyz=[]),(t&7)==2){let t=e.uint32()+e.pos;for(;e.pos<t;)i.xyz.push(e.float())}else i.xyz.push(e.float());break;case 2:if(i.uvs&&i.uvs.length||(i.uvs=[]),(t&7)==2){let t=e.uint32()+e.pos;for(;e.pos<t;)i.uvs.push(e.float())}else i.uvs.push(e.float());break;case 3:if(i.marks&&i.marks.length||(i.marks=[]),(t&7)==2){let t=e.uint32()+e.pos;for(;e.pos<t;)i.marks.push(e.int32())}else i.marks.push(e.int32());break;default:e.skipType(t&7);break}}return i},e.getTypeUrl=function(e){return e===void 0&&(e=`type.googleapis.com`),e+`/Vertices`},e})(),vi.Faces=(()=>{function e(e){if(this.indices=[],this.normals=[],e)for(let t=Object.keys(e),n=0;n<t.length;++n)e[t[n]]!=null&&(this[t[n]]=e[t[n]])}return e.prototype.indices=_i.emptyArray,e.prototype.normals=_i.emptyArray,e.decode=function(e,t,n){e instanceof gi||(e=gi.create(e));let r=t===void 0?e.len:e.pos+t,i=new vi.Faces;for(;e.pos<r;){let t=e.uint32();if(t===n)break;switch(t>>>3){case 1:if(i.indices&&i.indices.length||(i.indices=[]),(t&7)==2){let t=e.uint32()+e.pos;for(;e.pos<t;)i.indices.push(e.uint32())}else i.indices.push(e.uint32());break;case 2:if(i.normals&&i.normals.length||(i.normals=[]),(t&7)==2){let t=e.uint32()+e.pos;for(;e.pos<t;)i.normals.push(e.float())}else i.normals.push(e.float());break;default:e.skipType(t&7);break}}return i},e.getTypeUrl=function(e){return e===void 0&&(e=`type.googleapis.com`),e+`/Faces`},e})(),vi.VertexMark=(()=>{let e={},t=Object.create(e);return t[e[0]=`VERTEX_MARK_UNSPECIFIED`]=0,t[e[1]=`VERTEX_MARK_ROOF`]=1,t})();function bi(e){return isNaN(e)||!isFinite(e)?0:e}function xi(e){let t=0;if(e instanceof c.BufferGeometry){for(let n in e.attributes){let r=e.getAttribute(n),i=4;`BYTES_PER_ELEMENT`in r.array&&typeof r.array.BYTES_PER_ELEMENT==`number`&&(i=r.array.BYTES_PER_ELEMENT),t+=bi(r.count*r.itemSize*i)}let n=e.getIndex();if(n){let e=4;`BYTES_PER_ELEMENT`in n.array&&typeof n.array.BYTES_PER_ELEMENT==`number`&&(e=n.array.BYTES_PER_ELEMENT),t+=bi(n.count*n.itemSize*e)}}else e instanceof c.Geometry&&(t+=bi(e.faces.length*3*3*4),t+=bi(e.faceVertexUvs.length*3*2*4));return t}function Si(e){let t=[e.positions,e.rotations,e.scales,e.colors,e.sh1,e.sh2,e.sh3],n=0;for(let e of t){if(!e)continue;let t=4;`BYTES_PER_ELEMENT`in e&&typeof e.BYTES_PER_ELEMENT==`number`&&(t=e.BYTES_PER_ELEMENT);let r=e.length*t;isNaN(r)||!isFinite(r)||(n+=r)}return n}function J(e,t,n){return function(r,i,a){return((r+e-1)/e|0)*((i+t-1)/t|0)*n*a}}function Ci(e,t,n){return function(r,i,a){return(Math.max(r,e)*Math.max(i,t)/n|0)*a}}var wi=new Map([[c.RGB_S3TC_DXT1_Format,J(4,4,8)],[c.RGBA_S3TC_DXT1_Format,J(4,4,8)],[c.RGBA_S3TC_DXT3_Format,J(4,4,16)],[c.RGBA_S3TC_DXT5_Format,J(4,4,16)],[c.RGB_ETC1_Format,J(4,4,8)],[c.RGB_PVRTC_4BPPV1_Format,Ci(8,8,2)],[c.RGBA_PVRTC_4BPPV1_Format,Ci(8,8,2)],[c.RGB_PVRTC_2BPPV1_Format,Ci(16,8,4)],[c.RGBA_PVRTC_2BPPV1_Format,Ci(16,8,4)],[c.RGB_ETC2_Format,J(4,4,8)],[c.RGBA_ETC2_EAC_Format,J(4,4,16)],[c.RGBA_ASTC_4x4_Format,J(4,4,16)],[c.SRGB8_ALPHA8_ASTC_4x4_Format,J(4,4,16)],[c.RGBA_ASTC_5x4_Format,J(5,4,16)],[c.SRGB8_ALPHA8_ASTC_5x4_Format,J(5,4,16)],[c.RGBA_ASTC_5x5_Format,J(5,5,16)],[c.SRGB8_ALPHA8_ASTC_5x5_Format,J(5,5,16)],[c.RGBA_ASTC_6x5_Format,J(6,5,16)],[c.SRGB8_ALPHA8_ASTC_6x5_Format,J(6,5,16)],[c.RGBA_ASTC_6x6_Format,J(6,6,16)],[c.SRGB8_ALPHA8_ASTC_6x6_Format,J(6,6,16)],[c.RGBA_ASTC_8x5_Format,J(8,5,16)],[c.SRGB8_ALPHA8_ASTC_8x5_Format,J(8,5,16)],[c.RGBA_ASTC_8x6_Format,J(8,6,16)],[c.SRGB8_ALPHA8_ASTC_8x6_Format,J(8,6,16)],[c.RGBA_ASTC_8x8_Format,J(8,8,16)],[c.SRGB8_ALPHA8_ASTC_8x8_Format,J(8,8,16)],[c.RGBA_ASTC_10x5_Format,J(10,5,16)],[c.SRGB8_ALPHA8_ASTC_10x5_Format,J(10,5,16)],[c.RGBA_ASTC_10x6_Format,J(10,6,16)],[c.SRGB8_ALPHA8_ASTC_10x6_Format,J(10,6,16)],[c.RGBA_ASTC_10x8_Format,J(10,8,16)],[c.SRGB8_ALPHA8_ASTC_10x8_Format,J(10,8,16)],[c.RGBA_ASTC_10x10_Format,J(10,10,16)],[c.SRGB8_ALPHA8_ASTC_10x10_Format,J(10,10,16)],[c.RGBA_ASTC_12x10_Format,J(12,10,16)],[c.SRGB8_ALPHA8_ASTC_12x10_Format,J(12,10,16)],[c.RGBA_ASTC_12x12_Format,J(12,12,16)],[c.SRGB8_ALPHA8_ASTC_12x12_Format,J(12,12,16)],[c.RGBA_BPTC_Format,J(4,4,16)]]);function Ti(e){let t=0,n=1;(e.generateMipmaps===!0||e.mipmaps&&e.mipmaps.length>1)&&(n=1.33);let r=e instanceof c.CompressedTexture?wi.get(e.format):void 0,i=[].concat(e.image);for(let e of i)if(e)if(e instanceof c.Texture)t+=Ti(e);else{let{width:i=1,height:a=1,depth:o=1}=e;r?t+=bi(r(i,a,o)*n):t+=bi(i*a*o*4*n)}return t}var Ei=new Set,Di=`map.alphaMap.bumpMap.normalMap.displacementMap.emissiveMap.specularMap.envMap.flipEnvMap.lightMap.aoMap.gradientMap.metalnessMap.roughnessMap.sheenColorMap.sheenRoughnessMap.clearcoatMap.clearcoatRoughnessMap.clearcoatNormalMap.iridescenceMap.iridescenceThicknessMap.transmissionMap.thicknessMap.anisotropyMap.specularColorMap.specularIntensityMap`.split(`.`);function Oi(e){let t=0;if(Ei.clear(),e instanceof c.ShaderMaterial)for(let n in e.uniforms){let r=e.uniforms[n],i=r&&r.value&&r.value instanceof c.Texture?r.value:void 0;i instanceof c.Texture&&(Ei.has(i)||(t=Ti(i),Ei.add(i)))}else for(let n of Di){let r=e[n];r instanceof c.Texture&&(Ei.has(r)||(t=Ti(r),Ei.add(r)))}return Ei.clear(),t}var ki=new Set;function Ai(e){let t=0;return ki.clear(),e.traverse(e=>{if(e instanceof Yn&&(t+=Si(e)),e instanceof c.Mesh||e instanceof c.Line||e instanceof c.Points){let n=e.geometry;(n instanceof c.BufferGeometry||n instanceof c.Geometry)&&(ki.has(n)||(t+=xi(n),ki.add(n)));let r=[].concat(e.material);for(let e of r)e instanceof c.Material&&(ki.has(e)||(t+=Oi(e),ki.add(e)))}}),ki.clear(),t}function ji(e){let t=e.lastIndexOf(`/`);return t>=0?e.slice(0,t+1).replace(/\/(model)(\/|$)/,(e,t,n)=>`/materials`+n):``}function Mi(e,t={}){var n,r,i,a,o,s,l;let u=(n=t.upAxis)==null?`Z`:n,d=(r=t.light)==null?!1:r,f=(i=t.fetcher)==null?pr:i,p=(a=t.onDownloadProgress)==null?q:a,m=(o=t.textureBaseUri)==null?ji(e):o,h=t.textureBaseUri===void 0?[]:((s=t.textureArray)==null?[]:s).slice(),g=Bi((l=t.textureOptions)==null?{}:l,h.length),_=new Map;for(let e of h){let t=vr(e)?e:br(m,e);_.set(t,Ri(t,g,f))}let v={byteLength:0};return Promise.resolve().then(()=>f.ajax(e,{responseType:`arraybuffer`},void 0,void 0,p)).then(e=>{v.byteLength=e.body.byteLength;let t=new Uint8Array(e.body);return yi.decode(t)}).then(e=>zi(e,d,m,h,g,_,f)).then(t=>{_.clear();let n=new c.Group;n.name=e;for(let e of t.objects)n.add(e);return u===`Y`&&n.applyMatrix4(Zn),{type:`pbm`,modelUpAxis:`Z`,upAxis:u,uri:e,byteLength:v.byteLength,memoryUsage:Ai(n),scene:n,textures:t.textures,animations:[],dispose:()=>t.dispose()}})}function Ni(e){let t=e.match(/(group|floor)-?(\d+)/);return t?parseInt(t[2],10):0}function Pi(e){let t=e.match(/(chunk)-?(\d+)/);return t?parseInt(t[2],10):0}function Fi(e){let t=e.match(/(sub)-?(\d+)/);return t?parseInt(t[2],10):0}function Ii(e){let t=Ni(e.name),n=Pi(e.name),r=Fi(e.name);return t*1e6+n*1e3+r}function Li(e){var t,n,r;let i=typeof e.createAt==`number`?e.createAt:0,a=(t=e.description)==null?``:t,o=[],s=!0,c=!0;for(let t of e.chunks)if(!t.vertices.marks||t.vertices.marks.length===0){c=!1;break}for(let t of e.chunks)if(!t.faces.normals||t.faces.normals.length===0){s=!1;break}let l=e.chunks.sort((e,t)=>Ii(e)-Ii(t)),u=[];for(let e of l){let t=Ni(e.name);u[t]||(u[t]=[]),u[t].push(e)}for(let e=0;e<u.length;e++){let t=u[e];if(t)if(s){let r=0;for(let e=0;e<t.length;e++){let n=t[e];r+=n.faces.indices.length}let s=new Float32Array(r*3),l=new Float32Array(r*2),u=new Float32Array(r*3),d=c?new Float32Array(r):void 0,f=[],p=[1/0,1/0,1/0,-1/0,-1/0,-1/0],m=0;for(let e=0;e<t.length;e++){let r=[1/0,1/0,1/0,-1/0,-1/0,-1/0],i=t[e],a=i.vertices.xyz,o=i.vertices.uvs,c=i.faces.indices,h=i.faces.normals,g=i.vertices.marks,_=c.length;for(let e=0;e<_;e++){let t=c[e],n=s[m*3+e*3]=a[t*3],i=s[m*3+e*3+1]=a[t*3+1],f=s[m*3+e*3+2]=a[t*3+2];d&&(d[m+e]=g[t]),l[m*2+e*2]=o[t*2],l[m*2+e*2+1]=o[t*2+1];let p=Math.floor(e/3)*3;u[m*3+e*3]=h[p],u[m*3+e*3+1]=h[p+1],u[m*3+e*3+2]=h[p+2],n<r[0]&&(r[0]=n),i<r[1]&&(r[1]=i),f<r[2]&&(r[2]=f),n>r[3]&&(r[3]=n),i>r[4]&&(r[4]=i),f>r[5]&&(r[5]=f)}r[0]<p[0]&&(p[0]=r[0]),r[1]<p[1]&&(p[1]=r[1]),r[2]<p[2]&&(p[2]=r[2]),r[3]>p[3]&&(p[3]=r[3]),r[4]>p[4]&&(p[4]=r[4]),r[5]>p[5]&&(p[5]=r[5]),f.push({materialIndex:e,name:i.name,chunkName:Pi(i.name),start:m,count:i.faces.indices.length,texture:(n=i.texture)==null?void 0:n}),m+=_}let h={createAt:i,description:a,vertices:s,uvs:l,normals:u,masks:d,indices:null,floorIndex:e,groups:f,extents:p};o.push(h)}else{let n=0,s=0;for(let e=0;e<t.length;e++){let r=t[e];s+=r.vertices.xyz.length/3,n+=r.faces.indices.length}let l=new Float32Array(s*3),u=new Float32Array(s*2),d=new Float32Array(s),f=new Uint32Array(n),p=c?new Float32Array(n):void 0,m=[],h=[1/0,1/0,1/0,-1/0,-1/0,-1/0],g=0,_=0;for(let n=0;n<t.length;n++){let i=[1/0,1/0,1/0,-1/0,-1/0,-1/0],a=t[n],o=a.vertices.xyz,s=a.vertices.marks,c=a.vertices.uvs,v=a.faces.indices,y=o.length/3,b=v.length;for(let t=0;t<y;t++){let n=l[_*3+t*3]=o[t*3],r=l[_*3+t*3+1]=o[t*3+1],a=l[_*3+t*3+2]=o[t*3+2];p&&(p[_+t]=s[t]),u[_*2+t*2]=c[t*2],u[_*2+t*2+1]=c[t*2+1],d[_+t]=e,n<i[0]&&(i[0]=n),r<i[1]&&(i[1]=r),a<i[2]&&(i[2]=a),n>i[3]&&(i[3]=n),r>i[4]&&(i[4]=r),a>i[5]&&(i[5]=a)}i[0]<h[0]&&(h[0]=i[0]),i[1]<h[1]&&(h[1]=i[1]),i[2]<h[2]&&(h[2]=i[2]),i[3]>h[3]&&(h[3]=i[3]),i[4]>h[4]&&(h[4]=i[4]),i[5]>h[5]&&(h[5]=i[5]);for(let e=0;e<b;e++)f[g+e]=_+v[e];m.push({materialIndex:n,name:a.name,chunkName:Pi(a.name),start:g,count:a.faces.indices.length,texture:(r=a.texture)==null?void 0:r}),_+=y,g+=b}let v={createAt:i,description:a,vertices:l,uvs:u,normals:void 0,masks:p,indices:f,floorIndex:e,groups:m,extents:h};o.push(v)}}return o}function Ri(e,t,n){let r=Object.assign({key:`texture.pbm`},mr(t,[`format`,`quality`,`size`,`sharpen`,`forceUseExifOrientation`,`mappings`]));return new hi().loadTexture(e,{imageURL:{transform:t.transform,options:r},encoding:c.sRGBEncoding,wrapS:c.ClampToEdgeWrapping,wrapT:c.ClampToEdgeWrapping,minFilter:c.LinearFilter,maxSize:typeof r.size==`number`?new c.Vector2(r.size,r.size):void 0,fetcher:n}).then(e=>{let t=e.body;return t.needsUpdate=!0,t})}function zi(e,t,n,r,i,a,o){let s=Li(e),l=0,u=``,d=[],f={},p=new Set,m=0;for(let{createAt:e,description:i,vertices:a,masks:o,uvs:h,normals:g,indices:_,floorIndex:v,groups:y,extents:b}of s){let s=new c.Box3;s.min.x=b[0],s.min.y=b[1],s.min.z=b[2],s.max.x=b[3],s.max.y=b[4],s.max.z=b[5];let x=new c.BufferGeometry;x.setAttribute(`position`,new c.BufferAttribute(a,3)),x.setAttribute(`uv`,new c.BufferAttribute(h,2)),g&&x.setAttribute(`normal`,new c.BufferAttribute(g,3)),o&&x.setAttribute(`_feature_id_rsmask`,new c.BufferAttribute(o,1)),_&&x.setIndex(new c.BufferAttribute(_,1)),x.boundingBox=s,x.boundingSphere=s.getBoundingSphere(new c.Sphere);for(let e of y)x.addGroup(e.start,e.count,e.materialIndex);p.add(x);let S=[];for(let e of y){let i;if(e.texture){if(i=e.texture,r.length>0&&r.indexOf(e.texture)===-1){for(let t of r)if((vr(t)?t:br(n,t)).slice(e.texture.length*-1)===e.texture){i=t;break}console.warn(`At3d/Pbm texture not matched. Use ends-guessing mode. ${e.texture} -> ${i}`)}vr(i)||(i=br(n,i))}let a=new vn(t?`phong`:`basic`);a.floorIndex=v,x.attributes.normal===void 0&&(a.flatShading=!0),x.attributes._feature_id_rsmask&&(a.defines.USE_VERTEX_MARK=!0),S.push(a),i?(m++,f[i]?f[i].push(a):f[i]=[a]):a.color=new c.Color(16777215),p.add(a)}let C=new yn(x,S);C.name=`model_floor_`+v,C.userData.createAt=e,C.userData.description=i,C.matrix.compose(C.position,C.quaternion,C.scale),C.matrixAutoUpdate=!1,C.frustumCulled=!1,l=e,u=i,d.push(C)}i=Bi(i,m);let h=[];for(let e of Object.keys(f)){let t;a&&(t=a.get(e)),t||(t=Ri(e,i,o),a&&a.set(e,t)),h.push(t.then(t=>{for(let n of f[e])n.map&&(p.delete(n.map),n.map.dispose()),n.map=t,p.add(t);return t}).catch(()=>{for(let t of f[e])t.map&&(p.delete(t.map),t.map.dispose()),t.map=null,t.color=new c.Color(16777215);return null}))}return Promise.all(h).then(e=>{let t=e.filter(e=>e instanceof c.Texture);return{createAt:l,description:u,objects:d,textures:t,dispose:()=>{p.forEach(e=>{e.dispose()}),p.clear()}}})}function Bi(e,t){return e=Object.assign({},e),e.autoResize!==!1&&(t>96?e.size=Math.min(e.size||1/0,100):t>48?e.size=Math.min(e.size||1/0,200):t>24?e.size=Math.min(e.size||1/0,400):t>22?e.size=Math.min(e.size||1/0,800):t>5&&(e.size=Math.min(e.size||1/0,1024))),e}function Vi(){var e={};return e.OutWindow=function(){this._windowSize=0},e.OutWindow.prototype.create=function(e){(!this._buffer||this._windowSize!==e)&&(this._buffer=[]),this._windowSize=e,this._pos=0,this._streamPos=0},e.OutWindow.prototype.flush=function(){var e=this._pos-this._streamPos;if(e!==0){for(;e--;)this._stream.writeByte(this._buffer[this._streamPos++]);this._pos>=this._windowSize&&(this._pos=0),this._streamPos=this._pos}},e.OutWindow.prototype.releaseStream=function(){this.flush(),this._stream=null},e.OutWindow.prototype.setStream=function(e){this.releaseStream(),this._stream=e},e.OutWindow.prototype.init=function(e){e||(this._streamPos=0,this._pos=0)},e.OutWindow.prototype.copyBlock=function(e,t){var n=this._pos-e-1;for(n<0&&(n+=this._windowSize);t--;)n>=this._windowSize&&(n=0),this._buffer[this._pos++]=this._buffer[n++],this._pos>=this._windowSize&&this.flush()},e.OutWindow.prototype.putByte=function(e){this._buffer[this._pos++]=e,this._pos>=this._windowSize&&this.flush()},e.OutWindow.prototype.getByte=function(e){var t=this._pos-e-1;return t<0&&(t+=this._windowSize),this._buffer[t]},e.RangeDecoder=function(){},e.RangeDecoder.prototype.setStream=function(e){this._stream=e},e.RangeDecoder.prototype.releaseStream=function(){this._stream=null},e.RangeDecoder.prototype.init=function(){var e=5;for(this._code=0,this._range=-1;e--;)this._code=this._code<<8|this._stream.readByte()},e.RangeDecoder.prototype.decodeDirectBits=function(e){for(var t=0,n=e,r;n--;)this._range>>>=1,r=this._code-this._range>>>31,this._code-=this._range&r-1,t=t<<1|1-r,this._range&4278190080||(this._code=this._code<<8|this._stream.readByte(),this._range<<=8);return t},e.RangeDecoder.prototype.decodeBit=function(e,t){var n=e[t],r=(this._range>>>11)*n;return(this._code^2147483648)<(r^2147483648)?(this._range=r,e[t]+=2048-n>>>5,this._range&4278190080||(this._code=this._code<<8|this._stream.readByte(),this._range<<=8),0):(this._range-=r,this._code-=r,e[t]-=n>>>5,this._range&4278190080||(this._code=this._code<<8|this._stream.readByte(),this._range<<=8),1)},e.initBitModels=function(e,t){for(;t--;)e[t]=1024},e.BitTreeDecoder=function(e){this._models=[],this._numBitLevels=e},e.BitTreeDecoder.prototype.init=function(){e.initBitModels(this._models,1<<this._numBitLevels)},e.BitTreeDecoder.prototype.decode=function(e){for(var t=1,n=this._numBitLevels;n--;)t=t<<1|e.decodeBit(this._models,t);return t-(1<<this._numBitLevels)},e.BitTreeDecoder.prototype.reverseDecode=function(e){for(var t=1,n=0,r=0,i;r<this._numBitLevels;++r)i=e.decodeBit(this._models,t),t=t<<1|i,n|=i<<r;return n},e.reverseDecode2=function(e,t,n,r){for(var i=1,a=0,o=0,s;o<r;++o)s=n.decodeBit(e,t+i),i=i<<1|s,a|=s<<o;return a},e.LenDecoder=function(){this._choice=[],this._lowCoder=[],this._midCoder=[],this._highCoder=new e.BitTreeDecoder(8),this._numPosStates=0},e.LenDecoder.prototype.create=function(t){for(;this._numPosStates<t;++this._numPosStates)this._lowCoder[this._numPosStates]=new e.BitTreeDecoder(3),this._midCoder[this._numPosStates]=new e.BitTreeDecoder(3)},e.LenDecoder.prototype.init=function(){var t=this._numPosStates;for(e.initBitModels(this._choice,2);t--;)this._lowCoder[t].init(),this._midCoder[t].init();this._highCoder.init()},e.LenDecoder.prototype.decode=function(e,t){return e.decodeBit(this._choice,0)===0?this._lowCoder[t].decode(e):e.decodeBit(this._choice,1)===0?8+this._midCoder[t].decode(e):16+this._highCoder.decode(e)},e.Decoder2=function(){this._decoders=[]},e.Decoder2.prototype.init=function(){e.initBitModels(this._decoders,768)},e.Decoder2.prototype.decodeNormal=function(e){var t=1;do t=t<<1|e.decodeBit(this._decoders,t);while(t<256);return t&255},e.Decoder2.prototype.decodeWithMatchByte=function(e,t){var n=1,r,i;do if(r=t>>7&1,t<<=1,i=e.decodeBit(this._decoders,(1+r<<8)+n),n=n<<1|i,r!==i){for(;n<256;)n=n<<1|e.decodeBit(this._decoders,n);break}while(n<256);return n&255},e.LiteralDecoder=function(){},e.LiteralDecoder.prototype.create=function(t,n){var r;if(!(this._coders&&this._numPrevBits===n&&this._numPosBits===t))for(this._numPosBits=t,this._posMask=(1<<t)-1,this._numPrevBits=n,this._coders=[],r=1<<this._numPrevBits+this._numPosBits;r--;)this._coders[r]=new e.Decoder2},e.LiteralDecoder.prototype.init=function(){for(var e=1<<this._numPrevBits+this._numPosBits;e--;)this._coders[e].init()},e.LiteralDecoder.prototype.getDecoder=function(e,t){return this._coders[((e&this._posMask)<<this._numPrevBits)+((t&255)>>>8-this._numPrevBits)]},e.Decoder=function(){this._outWindow=new e.OutWindow,this._rangeDecoder=new e.RangeDecoder,this._isMatchDecoders=[],this._isRepDecoders=[],this._isRepG0Decoders=[],this._isRepG1Decoders=[],this._isRepG2Decoders=[],this._isRep0LongDecoders=[],this._posSlotDecoder=[],this._posDecoders=[],this._posAlignDecoder=new e.BitTreeDecoder(4),this._lenDecoder=new e.LenDecoder,this._repLenDecoder=new e.LenDecoder,this._literalDecoder=new e.LiteralDecoder,this._dictionarySize=-1,this._dictionarySizeCheck=-1,this._posSlotDecoder[0]=new e.BitTreeDecoder(6),this._posSlotDecoder[1]=new e.BitTreeDecoder(6),this._posSlotDecoder[2]=new e.BitTreeDecoder(6),this._posSlotDecoder[3]=new e.BitTreeDecoder(6)},e.Decoder.prototype.setDictionarySize=function(e){return e<0?!1:(this._dictionarySize!==e&&(this._dictionarySize=e,this._dictionarySizeCheck=Math.max(this._dictionarySize,1),this._outWindow.create(Math.max(this._dictionarySizeCheck,4096))),!0)},e.Decoder.prototype.setLcLpPb=function(e,t,n){var r=1<<n;return e>8||t>4||n>4?!1:(this._literalDecoder.create(t,e),this._lenDecoder.create(r),this._repLenDecoder.create(r),this._posStateMask=r-1,!0)},e.Decoder.prototype.init=function(){var t=4;for(this._outWindow.init(!1),e.initBitModels(this._isMatchDecoders,192),e.initBitModels(this._isRep0LongDecoders,192),e.initBitModels(this._isRepDecoders,12),e.initBitModels(this._isRepG0Decoders,12),e.initBitModels(this._isRepG1Decoders,12),e.initBitModels(this._isRepG2Decoders,12),e.initBitModels(this._posDecoders,114),this._literalDecoder.init();t--;)this._posSlotDecoder[t].init();this._lenDecoder.init(),this._repLenDecoder.init(),this._posAlignDecoder.init(),this._rangeDecoder.init()},e.Decoder.prototype.decode=function(t,n,r){var i=0,a=0,o=0,s=0,c=0,l=0,u=0,d,f,p,m,h,g;for(this._rangeDecoder.setStream(t),this._outWindow.setStream(n),this.init();r<0||l<r;)if(d=l&this._posStateMask,this._rangeDecoder.decodeBit(this._isMatchDecoders,(i<<4)+d)===0)f=this._literalDecoder.getDecoder(l++,u),u=i>=7?f.decodeWithMatchByte(this._rangeDecoder,this._outWindow.getByte(a)):f.decodeNormal(this._rangeDecoder),this._outWindow.putByte(u),i=i<4?0:i-(i<10?3:6);else{if(this._rangeDecoder.decodeBit(this._isRepDecoders,i)===1)p=0,this._rangeDecoder.decodeBit(this._isRepG0Decoders,i)===0?this._rangeDecoder.decodeBit(this._isRep0LongDecoders,(i<<4)+d)===0&&(i=i<7?9:11,p=1):(this._rangeDecoder.decodeBit(this._isRepG1Decoders,i)===0?m=o:(this._rangeDecoder.decodeBit(this._isRepG2Decoders,i)===0?m=s:(m=c,c=s),s=o),o=a,a=m),p===0&&(p=2+this._repLenDecoder.decode(this._rangeDecoder,d),i=i<7?8:11);else if(c=s,s=o,o=a,p=2+this._lenDecoder.decode(this._rangeDecoder,d),i=i<7?7:10,h=this._posSlotDecoder[p<=5?p-2:3].decode(this._rangeDecoder),h>=4){if(g=(h>>1)-1,a=(2|h&1)<<g,h<14)a+=e.reverseDecode2(this._posDecoders,a-h-1,this._rangeDecoder,g);else if(a+=this._rangeDecoder.decodeDirectBits(g-4)<<4,a+=this._posAlignDecoder.reverseDecode(this._rangeDecoder),a<0){if(a===-1)break;return!1}}else a=h;if(a>=l||a>=this._dictionarySizeCheck)return!1;this._outWindow.copyBlock(a,p),l+=p,u=this._outWindow.getByte(0)}return this._outWindow.flush(),this._outWindow.releaseStream(),this._rangeDecoder.releaseStream(),!0},e.Decoder.prototype.setDecoderProperties=function(e){var t,n,r,i,a;return e.size<5||(t=e.readByte(),n=t%9,t=~~(t/9),r=t%5,i=~~(t/5),!this.setLcLpPb(n,r,i))?!1:(a=e.readByte(),a|=e.readByte()<<8,a|=e.readByte()<<16,a+=e.readByte()*16777216,this.setDictionarySize(a))},e.decompress=function(t,n,r,i){var a=new e.Decoder;if(!a.setDecoderProperties(t))throw`Incorrect stream properties`;if(!a.decode(n,r,i))throw`Error in data stream`;return!0},e.decompressFile=function(t,n){var r=new e.Decoder,i;if(!r.setDecoderProperties(t))throw`Incorrect stream properties`;if(i=t.readByte(),i|=t.readByte()<<8,i|=t.readByte()<<16,i+=t.readByte()*16777216,t.readByte(),t.readByte(),t.readByte(),t.readByte(),!r.decode(t,n,i))throw`Error in data stream`;return!0},e}var Hi=Vi();function Ui(){function e(e){let t=new Uint8Array(256);for(let e=0;e<64;e++)t[`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`.charCodeAt(e)]=e;let n=e.length*.75,r=e.length,i,a=0,o,s,c,l;e[e.length-1]===`=`&&(n--,e[e.length-2]===`=`&&n--);let u=new ArrayBuffer(n),d=new Uint8Array(u);for(i=0;i<r;i+=4)o=t[e.charCodeAt(i)],s=t[e.charCodeAt(i+1)],c=t[e.charCodeAt(i+2)],l=t[e.charCodeAt(i+3)],d[a++]=o<<2|s>>4,d[a++]=(s&15)<<4|c>>2,d[a++]=(c&3)<<6|l&63;return u}return e(`AGFzbQEAAAABSg1gAABgAX8Bf2ACf38Bf2AEf39/fwBgA39/fwBgAX8AYAJ/fwBgA39/fwF/YAR/f39/AX9gAn9/AGABfwF/YAABf2AEf39/fwF/AhsCA2VudgVhYm9ydAADA2VudgZtZW1vcnkCAAEDJiUBAQkKAgoKCwsLCwsAAgoBAgQKAQYFCAoFBQQEBwgCBwwCAQAABAQBcAABBhoFfwFBAAt/AUEAC38BQQALfwFBAAt/AUEACwc9BgZtZW1vcnkCAAV0YWJsZQEABXJlc2V0AA0KbmV3VThBcnJheQAQCnVucGFja1NpemUAFAZkZWNvZGUAIwgBJAkHAQBBAAsBJQqAViVoAQN/IABBgICAgARLBEAACyMBIgEgAEEBIABBAUsbakEHakF4cSICPwAiA0EQdEsEQCADIAIgAWtB//8DakGAgHxxQRB2IgAgAyAAShtAAEEASARAIABAAEEASARAAAsLCyACJAEgAQsbAQF/QQFBICAAQQdqZ2t0EAEiASAANgIAIAELkQMBAX8gAUUEQA8LIABBADoAACAAIAFqQQFrQQA6AAAgAUECTQRADwsgAEEBakEAOgAAIABBAmpBADoAACAAIAFqIgJBAmtBADoAACACQQNrQQA6AAAgAUEGTQRADwsgAEEDakEAOgAAIAAgAWpBBGtBADoAACABQQhNBEAPC0EAIABrQQNxIgIgAGoiAEEANgIAIAEgAmtBfHEiASAAakEEa0EANgIAIAFBCE0EQA8LIABBBGpBADYCACAAQQhqQQA2AgAgACABaiICQQxrQQA2AgAgAkEIa0EANgIAIAFBGE0EQA8LIABBDGpBADYCACAAQRBqQQA2AgAgAEEUakEANgIAIABBGGpBADYCACAAIAFqIgJBHGtBADYCACACQRhrQQA2AgAgAkEUa0EANgIAIAJBEGtBADYCACAAQQRxQRhqIgIgAGohACABIAJrIQEDQCABQSBPBEAgAEIANwMAIABBCGpCADcDACAAQRBqQgA3AwAgAEEYakIANwMAIAFBIGshASAAQSBqIQAMAQsLC1EBA38gAEH+////AEsEQEEAQSBBLUEnEAAACyAAQQJ0IgMQAiECQQgQASIBQQA2AgAgAUEANgIEIAEgAjYCACABIAA2AgQgAkEIaiADEAMgAQtmAQF/IAFB/P///wFLBEBBAEHAAEEXQSIQAAALIAFBAXQiARACIgJBCGogARADIABFBEBBDBABIQALIABBADYCACAAQQA2AgQgAEEANgIIIAAgAjYCACAAQQA2AgQgACABNgIIIAALCgBBDBABIAAQBQsuAQF/QQgQASIBQQA2AgAgAUEANgIEIAEgADYCBCABQQEgASgCBHQQBjYCACABC6EBAQR/QRAQASIBQQA2AgAgAUEANgIEIAFBADYCCCABQQA2AgxBEBAEIQIDQCAAQRBIBEBBAxAHIQMgAigCACAAQQJ0aiADNgIIIABBAWohAAwBCwsgASACNgIEQRAQBCECQQAhAANAIABBEEgEQEEDEAchAyACKAIAIABBAnRqIAM2AgggAEEBaiEADAELCyABIAI2AgggAUEIEAc2AgwgAQs0AQF/QRQQASIAQQA2AgAgAEEAOgAEIABBADYCCCAAQQA2AgwgAEEANgIQIABBDTYCCCAAC0IBAX9BGRABIgBBADYCACAAQQA2AgQgAEEANgIIIABBADYCDCAAQQA2AhAgAEEANgIUIABBADoAGCAAQQA2AhAgAAu1AgEEf0HQABABIgBBADoAACAAQQA2AgQgAEEANgIIIABBADYCDCAAQQA2AhAgAEEAOgAUIABBADYCGCAAQQA2AhwgAEEANgIgIABBADYCJCAAQQA2AiggAEEANgIsIABBADYCMCAAQQA2AjQgAEEANgI4IABBADYCPCAAQQA2AkAgAEEANgJEIABBADYCSCAAQQA2AkxBBBAEIQIDQCABQQRIBEBBBhAHIQMgAigCACABQQJ0aiADNgIIIAFBAWohAQwBCwsgACACNgIkIABBBBAHNgIoIABB8wAQBjYCLCAAQcABEAY2AjAgAEEMEAY2AjQgAEEMEAY2AjggAEEMEAY2AjwgAEEMEAY2AkAgAEHAARAGNgJEIAAQCDYCSCAAEAg2AkwgABAJNgIEIAAQCjYCCCAACx8BAX9BCBABIgBBADYCACAAQQA2AgQgABALNgIAIAALCgAjACQBEAwkAwthAQF/IAFB+P///wNLBEBBAEHAAEEXQSIQAAALIAEQAiICQQhqIAEQAyAARQRAQQwQASEACyAAQQA2AgAgAEEANgIEIABBADYCCCAAIAI2AgAgAEEANgIEIAAgATYCCCAACwoAQQwQASAAEA4LBgAgABAPCyoAIAEgACgCCE8EQEEAQcAAQSdBPxAAAAsgACgCBCABIAAoAgBqai0ACAssACABIAAoAghPBEBBAEHAAEEyQT8QAAALIAAoAgQgASAAKAIAamogAjoACAtkAQJ/QQ0QDyECA0AgAUENSARAIAIgASAAIAEQEUH/AXEQEiABQQFqIQEMAQsLQQAhAEEAIQEDQCABQQhIBEAgAiABQQVqEBFB/wFxIAFBA3R0IAByIQAgAUEBaiEBDAELCyAACwYAIAAQEwsnACAAIAEQDzYCCCAAQQA2AgwgACABNgIUIABBADoAGCAAQQA2AgALJAAgACgCCCAAKAIYEBUgAEGABiAAKAIMIAAtABRqdBAGNgIgC5UBAQR/IAEhBSAAIgYoAgAhASAAKAIEIQcgACgCCEEBdiEEIAJBAEgEfyACIARqIgBBACAAQQBKGwUgAiIAIAQgACAESBsLIQIgA0EASAR/IAMgBGoiAEEAIABBAEobBSADIgAgBCAAIARIGwshAwNAIAIgA05FBEAgAkEBdCABaiAHaiAFOwEIIAJBAWohAgwBCwsgBgssAQF/AkACQAJAIwRBAWsOAwEBAgALAAtB/////wchAQsgAEGACEEAIAEQFwvBAQECfyAAQQIQBjYCACAAKAIAIgEoAgAgASgCBGpBgAg7AQggACgCACICKAIAIQEgAigCBCABQQJqakGACDsBCCAAKAIMKAIAQQEkBBAYGkEAIQIDQCACQRBIBEAgAiAAKAIEKAIAIgEoAgBBAnZJBH8gAkECdCABaigCCAUACygCAEEBJAQQGBogAiAAKAIIKAIAIgEoAgBBAnZJBH8gAkECdCABaigCCAUACygCAEEBJAQQGBogAkEBaiECDAELCwuHAgEFfyAAIQJBgAYgACgCDCAALQAUanQhAQNAIAMgAUgEQCACKAIgIgQoAgAhBSAEKAIEIANBAXQgBWpqQYAIOwEIIANBAWohAwwBCwsgAiEBQQAhAgNAIAJBBEkEQCACIAEoAiQoAgAiAygCAEECdkkEfyACQQJ0IANqKAIIBQALKAIAQQEkBBAYGiACQQFqIQIMAQsLIAEoAigoAgBBASQEEBgaIAEoAixBASQEEBgaIAAoAjBBASQEEBgaIAAoAjRBASQEEBgaIAAoAjhBASQEEBgaIAAoAjxBASQEEBgaIAAoAkBBASQEEBgaIAAoAkRBASQEEBgaIAAoAkgQGSAAKAJMEBkLyAwBA38DQCABQQNxIAIgAhsEQCAAIgRBAWohACABIgNBAWohASAEIAMtAAA6AAAgAkEBayECDAELCyAAQQNxRQRAA0AgAkEQTwRAIAAgASgCADYCACAAQQRqIAFBBGooAgA2AgAgAEEIaiABQQhqKAIANgIAIABBDGogAUEMaigCADYCACABQRBqIQEgAEEQaiEAIAJBEGshAgwBCwsgAkEIcQRAIAAgASgCADYCACAAQQRqIAFBBGooAgA2AgAgAUEIaiEBIABBCGohAAsgAkEEcQRAIAAgASgCADYCACABQQRqIQEgAEEEaiEACyACQQJxBEAgACABLwEAOwEAIAFBAmohASAAQQJqIQALIAJBAXEEQCAAIAEtAAA6AAALDwsgAkEgTwRAAkACQAJAIABBA3EiA0EBRwRAIANBAkYNASADQQNGDQIMAwsgASgCACEFIAAgASIDLQAAOgAAIABBAWoiASABIANBAWoiAS0AADoAAEEBaiIEQQFqIQAgAUEBaiIDQQFqIQEgBCADLQAAOgAAIAJBA2shAgNAIAJBEU8EQCAAIAFBAWooAgAiA0EIdCAFQRh2cjYCACAAQQRqIAFBBWooAgAiBUEIdCADQRh2cjYCACAAQQhqIAFBCWooAgAiA0EIdCAFQRh2cjYCACAAQQxqIAFBDWooAgAiBUEIdCADQRh2cjYCACABQRBqIQEgAEEQaiEAIAJBEGshAgwBCwsMAgsgASgCACEFIAAgAS0AADoAACAAQQFqIgRBAWohACABQQFqIgNBAWohASAEIAMtAAA6AAAgAkECayECA0AgAkESTwRAIAAgAUECaigCACIDQRB0IAVBEHZyNgIAIABBBGogAUEGaigCACIFQRB0IANBEHZyNgIAIABBCGogAUEKaigCACIDQRB0IAVBEHZyNgIAIABBDGogAUEOaigCACIFQRB0IANBEHZyNgIAIAFBEGohASAAQRBqIQAgAkEQayECDAELCwwBCyABKAIAIQUgACIEQQFqIQAgASIDQQFqIQEgBCADLQAAOgAAIAJBAWshAgNAIAJBE08EQCAAIAFBA2ooAgAiA0EYdCAFQQh2cjYCACAAQQRqIAFBB2ooAgAiBUEYdCADQQh2cjYCACAAQQhqIAFBC2ooAgAiA0EY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`)}function Wi(e,t,n){try{let r={data:t,offset:0,readByte(){return this.data[this.offset++]}},i=r.data.length,a={data:[],offset:0,writeByte(e){let t=Math.floor(this.offset/i);this.data[t]||(this.data[t]=new Uint8Array(i)),this.data[t][this.offset%i]=e,this.offset++}};e.decompressFile(r,a);let o=new Uint8Array(a.offset);for(let e=0;e<a.offset;e++)o[e]=a.data[Math.floor(e/i)][e%i];n(null,o)}catch(e){n(e)}}function Gi(e,t,n){try{let r=new WebAssembly.Memory({initial:16}),i=new WebAssembly.Module(e),a=new WebAssembly.Instance(i,{env:{memory:r,abort(){n(Error(`webAssembly abort`))}}}).exports,o=a.newU8Array(t.length);new Uint8Array(r.buffer,o+24,t.length).set(t);let s=a.decode(o),c=new Uint32Array(r.buffer,s,4),l=c[0],u=c[2],d=c[3];l?n(null,new Uint8Array(r.buffer,d+24,u).slice(0,u)):n(Error(`lzma deocder error`))}catch(e){n(e)}}var Ki=`
318
320
  var decodeLZMA = (function() {
@@ -1494,7 +1496,7 @@ void main() {
1494
1496
  }
1495
1497
  `,uniforms:{cubemap:{value:null},scaleY:{value:1}},defines:{},transparent:!0,depthTest:!1,depthWrite:!1}));function Ih(e,t,n){Fh.material.setUniform(`cubemap`,t),Fh.material.setUniform(`scaleY`,n?-1:1),Fh.render(e),Fh.material.setUniform(`cubemap`,null)}var Lh=new c.Color,Rh=[],zh=0,Bh=1;function Vh(e,t,n,r){let i=new c.WebGLRenderTarget(r.width,r.height,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:c.LinearFilter,minFilter:c.LinearFilter}),a=e.getRenderTarget();Lh.copy(e.getClearColor());let o=e.getClearAlpha(),s=e.autoClear,l=e.autoClearColor,u=e.autoClearDepth,d=e.autoClearStencil,f=e.clippingPlanes;return e.autoClear=!0,e.autoClearColor=!0,e.autoClearDepth=!0,e.autoClearStencil=!0,e.clippingPlanes=Rh,e.setRenderTarget(i),e.setClearColor(zh,Bh),Ih(e,t,n),e.setRenderTarget(a),e.setClearColor(Lh,o),e.autoClear=s,e.autoClearColor=l,e.autoClearDepth=u,e.autoClearStencil=d,e.clippingPlanes=f,e.readRenderTargetPixels(i,0,0,r.width,r.height,r.data),i.dispose(),r}var Hh=(function(e,t,n,r){"use strict";var i=[``,`webkit`,`Moz`,`MS`,`ms`,`o`],a=t.createElement?t.createElement(`div`):r,o=`function`,s=Math.round,c=Math.abs,l=Date.now;function u(e,t,n){return setTimeout(v(e,n),t)}function d(e,t,n){return Array.isArray(e)?(f(e,n[t],n),!0):!1}function f(e,t,n){var i;if(e)if(e.forEach)e.forEach(t,n);else if(e.length!==r)for(i=0;i<e.length;)t.call(n,e[i],i,e),i++;else for(i in e)e.hasOwnProperty(i)&&t.call(n,e[i],i,e)}function p(t,n,r){var i=`DEPRECATED METHOD: `+n+`
1496
1498
  `+r+` AT
1497
- `;return function(){var n=Error(`get-stack-trace`),r=n&&n.stack?n.stack.replace(/^[^\(]+?[\n$]/gm,``).replace(/^\s+at\s+/gm,``).replace(/^Object.<anonymous>\s*\(/gm,`{anonymous}()@`):`Unknown Stack Trace`,a=e.console&&(e.console.warn||e.console.log);return a&&a.call(e.console,i,r),t.apply(this,arguments)}}var m=typeof Object.assign==`function`?Object.assign:function(e){if(e===r||e===null)throw TypeError(`Cannot convert undefined or null to object`);for(var t=Object(e),n=1;n<arguments.length;n++){var i=arguments[n];if(i!==r&&i!==null)for(var a in i)i.hasOwnProperty(a)&&(t[a]=i[a])}return t},h=p(function(e,t,n){for(var i=Object.keys(t),a=0;a<i.length;)(!n||n&&e[i[a]]===r)&&(e[i[a]]=t[i[a]]),a++;return e},`extend`,"Use `assign`."),g=p(function(e,t){return h(e,t,!0)},`merge`,"Use `assign`.");function _(e,t,n){var r=t.prototype,i=e.prototype=Object.create(r);i.constructor=e,i._super=r,n&&m(i,n)}function v(e,t){return function(){return e.apply(t,arguments)}}function y(e,t){return typeof e==o?e.apply(t&&t[0]||r,t):e}function b(e,t){return e===r?t:e}function x(e,t,n){f(T(t),function(t){e.addEventListener(t,n,!1)})}function S(e,t,n){f(T(t),function(t){e.removeEventListener(t,n,!1)})}function C(e,t){for(;e;){if(e==t)return!0;e=e.parentNode}return!1}function w(e,t){return e.indexOf(t)>-1}function T(e){return e.trim().split(/\s+/g)}function E(e,t,n){if(e.indexOf&&!n)return e.indexOf(t);for(var r=0;r<e.length;){if(n&&e[r][n]==t||!n&&e[r]===t)return r;r++}return-1}function D(e){return Array.prototype.slice.call(e,0)}function O(e,t,n){for(var r=[],i=[],a=0;a<e.length;){var o=t?e[a][t]:e[a];E(i,o)<0&&r.push(e[a]),i[a]=o,a++}return n&&(r=t?r.sort(function(e,n){return e[t]>n[t]}):r.sort()),r}function k(e,t){for(var n,a,o=t[0].toUpperCase()+t.slice(1),s=0;s<i.length;){if(n=i[s],a=n?n+o:t,a in e)return a;s++}return r}var A=1;function j(){return A++}function M(t){var n=t.ownerDocument||t;return n.defaultView||n.parentWindow||e}var N=/mobile|tablet|ip(ad|hone|od)|android/i,ee=`ontouchstart`in e,P=k(e,`PointerEvent`)!==r,te=ee&&N.test(navigator.userAgent),ne=`touch`,re=`pen`,ie=`mouse`,ae=`kinect`,oe=25,F=1,se=2,I=4,ce=8,le=1,ue=2,de=4,fe=8,pe=16,me=ue|de,he=fe|pe,ge=me|he,_e=[`x`,`y`],ve=[`clientX`,`clientY`];function ye(e,t){var n=this;this.manager=e,this.callback=t,this.element=e.element,this.target=e.options.inputTarget,this.domHandler=function(t){y(e.options.enable,[e])&&n.handler(t)},this.init()}ye.prototype={handler:function(){},init:function(){this.evEl&&x(this.element,this.evEl,this.domHandler),this.evTarget&&x(this.target,this.evTarget,this.domHandler),this.evWin&&x(M(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&S(this.element,this.evEl,this.domHandler),this.evTarget&&S(this.target,this.evTarget,this.domHandler),this.evWin&&S(M(this.element),this.evWin,this.domHandler)}};function be(e){var t;return t=e.options.inputClass||(P?ze:te?qe:ee?Ze:Fe),new t(e,xe)}function xe(e,t,n){var r=n.pointers.length,i=n.changedPointers.length,a=t&F&&r-i===0,o=t&(I|ce)&&r-i===0;n.isFirst=!!a,n.isFinal=!!o,a&&(e.session={}),n.eventType=t,Se(e,n),e.emit(`hammer.input`,n),e.recognize(n),e.session.prevInput=n}function Se(e,t){var n=e.session,r=t.pointers,i=r.length;n.firstInput||(n.firstInput=Te(t)),i>1&&!n.firstMultiple?n.firstMultiple=Te(t):i===1&&(n.firstMultiple=!1);var a=n.firstInput,o=n.firstMultiple,s=o?o.center:a.center,u=t.center=Ee(r);t.timeStamp=l(),t.deltaTime=t.timeStamp-a.timeStamp,t.angle=ke(s,u),t.distance=Oe(s,u),Ce(n,t),t.offsetDirection=De(t.deltaX,t.deltaY);var d=L(t.deltaTime,t.deltaX,t.deltaY);t.overallVelocityX=d.x,t.overallVelocityY=d.y,t.overallVelocity=c(d.x)>c(d.y)?d.x:d.y,t.scale=o?je(o.pointers,r):1,t.rotation=o?Ae(o.pointers,r):0,t.maxPointers=n.prevInput?t.pointers.length>n.prevInput.maxPointers?t.pointers.length:n.prevInput.maxPointers:t.pointers.length,we(n,t);var f=e.element;C(t.srcEvent.target,f)&&(f=t.srcEvent.target),t.target=f}function Ce(e,t){var n=t.center,r=e.offsetDelta||{},i=e.prevDelta||{},a=e.prevInput||{};(t.eventType===F||a.eventType===I)&&(i=e.prevDelta={x:a.deltaX||0,y:a.deltaY||0},r=e.offsetDelta={x:n.x,y:n.y}),t.deltaX=i.x+(n.x-r.x),t.deltaY=i.y+(n.y-r.y)}function we(e,t){var n=e.lastInterval||t,i=t.timeStamp-n.timeStamp,a,o,s,l;if(t.eventType!=ce&&(i>oe||n.velocity===r)){var u=t.deltaX-n.deltaX,d=t.deltaY-n.deltaY,f=L(i,u,d);o=f.x,s=f.y,a=c(f.x)>c(f.y)?f.x:f.y,l=De(u,d),e.lastInterval=t}else a=n.velocity,o=n.velocityX,s=n.velocityY,l=n.direction;t.velocity=a,t.velocityX=o,t.velocityY=s,t.direction=l}function Te(e){for(var t=[],n=0;n<e.pointers.length;)t[n]={clientX:s(e.pointers[n].clientX),clientY:s(e.pointers[n].clientY)},n++;return{timeStamp:l(),pointers:t,center:Ee(t),deltaX:e.deltaX,deltaY:e.deltaY}}function Ee(e){var t=e.length;if(t===1)return{x:s(e[0].clientX),y:s(e[0].clientY)};for(var n=0,r=0,i=0;i<t;)n+=e[i].clientX,r+=e[i].clientY,i++;return{x:s(n/t),y:s(r/t)}}function L(e,t,n){return{x:t/e||0,y:n/e||0}}function De(e,t){return e===t?le:c(e)>=c(t)?e<0?ue:de:t<0?fe:pe}function Oe(e,t,n){n||(n=_e);var r=t[n[0]]-e[n[0]],i=t[n[1]]-e[n[1]];return Math.sqrt(r*r+i*i)}function ke(e,t,n){n||(n=_e);var r=t[n[0]]-e[n[0]],i=t[n[1]]-e[n[1]];return Math.atan2(i,r)*180/Math.PI}function Ae(e,t){return ke(t[1],t[0],ve)+ke(e[1],e[0],ve)}function je(e,t){return Oe(t[0],t[1],ve)/Oe(e[0],e[1],ve)}var Me={mousedown:F,mousemove:se,mouseup:I},Ne=`mousedown`,Pe=`mousemove mouseup`;function Fe(){this.evEl=Ne,this.evWin=Pe,this.pressed=!1,ye.apply(this,arguments)}_(Fe,ye,{handler:function(e){var t=Me[e.type];t&F&&(e.button===0||e.button===2)&&(this.pressed=!0),t&se&&e.which!==1&&(t=I),this.pressed&&(t&I&&(this.pressed=!1),this.callback(this.manager,t,{pointers:[e],changedPointers:[e],pointerType:ie,srcEvent:e}))}});var Ie={pointerdown:F,pointermove:se,pointerup:I,pointercancel:ce,pointerout:ce},R={2:ne,3:re,4:ie,5:ae},Le=`pointerdown`,Re=`pointermove pointerup pointercancel`;e.MSPointerEvent&&!e.PointerEvent&&(Le=`MSPointerDown`,Re=`MSPointerMove MSPointerUp MSPointerCancel`);function ze(){this.evEl=Le,this.evWin=Re,ye.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}_(ze,ye,{handler:function(e){var t=this.store,n=!1,r=!1,i=Ie[e.type.toLowerCase().replace(`ms`,``)],a=R[e.pointerType]||e.pointerType,o=a==ne,s=E(t,e.pointerId,`pointerId`);i&F&&(e.button===0||e.button===2||o)?s<0&&(t.push(e),s=t.length-1):i&(I|ce)?n=!0:!o&&e.buttons===0&&(n=!0,r=!0,i=Ie.pointerup),!(s<0)&&(r||(t[s]=e),this.callback(this.manager,i,{pointers:t,changedPointers:[e],pointerType:a,srcEvent:t[s]}),n&&t.splice(s,1))}});var Be={touchstart:F,touchmove:se,touchend:I,touchcancel:ce},Ve=`touchstart`,He=`touchstart touchmove touchend touchcancel`;function Ue(){this.evTarget=Ve,this.evWin=He,this.started=!1,ye.apply(this,arguments)}_(Ue,ye,{handler:function(e){var t=Be[e.type];if(t===F&&(this.started=!0),this.started){var n=We.call(this,e,t);t&(I|ce)&&n[0].length-n[1].length===0&&(this.started=!1),this.callback(this.manager,t,{pointers:n[0],changedPointers:n[1],pointerType:ne,srcEvent:e})}}});function We(e,t){var n=D(e.touches),r=D(e.changedTouches);return t&(I|ce)&&(n=O(n.concat(r),`identifier`,!0)),[n,r]}var Ge={touchstart:F,touchmove:se,touchend:I,touchcancel:ce},Ke=`touchstart touchmove touchend touchcancel`;function qe(){this.evTarget=Ke,this.targetIds={},ye.apply(this,arguments)}_(qe,ye,{handler:function(e){var t=Ge[e.type],n=Je.call(this,e,t);n&&this.callback(this.manager,t,{pointers:n[0],changedPointers:n[1],pointerType:ne,srcEvent:e})}});function Je(e,t){var n=D(e.touches),r=this.targetIds;if(t&(F|se)&&n.length===1)return r[n[0].identifier]=!0,[n,n];var i,a,o=D(e.changedTouches),s=[],c=this.target;if(a=n.filter(function(e){return C(e.target,c)}),t===F)for(i=0;i<a.length;)r[a[i].identifier]=!0,i++;for(i=0;i<o.length;)r[o[i].identifier]&&s.push(o[i]),t&(I|ce)&&delete r[o[i].identifier],i++;if(s.length)return[O(a.concat(s),`identifier`,!0),s]}var Ye=2500,Xe=25;function Ze(){ye.apply(this,arguments);var e=v(this.handler,this);this.touch=new qe(this.manager,e),this.mouse=new Fe(this.manager,e),this.primaryTouch=null,this.lastTouches=[]}_(Ze,ye,{handler:function(e,t,n){var r=n.pointerType==ne,i=n.pointerType==ie;if(!(i&&n.sourceCapabilities&&n.sourceCapabilities.firesTouchEvents)){if(r)Qe.call(this,t,n);else if(i&&et.call(this,n))return;this.callback(e,t,n)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});function Qe(e,t){e&F?(this.primaryTouch=t.changedPointers[0].identifier,$e.call(this,t)):e&(I|ce)&&$e.call(this,t)}function $e(e){var t=e.changedPointers[0];if(t.identifier===this.primaryTouch){var n={x:t.clientX,y:t.clientY};this.lastTouches.push(n);var r=this.lastTouches;setTimeout(function(){var e=r.indexOf(n);e>-1&&r.splice(e,1)},Ye)}}function et(e){for(var t=e.srcEvent.clientX,n=e.srcEvent.clientY,r=0;r<this.lastTouches.length;r++){var i=this.lastTouches[r],a=Math.abs(t-i.x),o=Math.abs(n-i.y);if(a<=Xe&&o<=Xe)return!0}return!1}var tt=a?k(a.style,`touchAction`):r,nt=tt!==r,rt=`compute`,it=`auto`,at=`manipulation`,ot=`none`,st=`pan-x`,ct=`pan-y`,lt=ft();function ut(e,t){this.manager=e,this.set(t)}ut.prototype={set:function(e){e==rt&&(e=this.compute()),nt&&this.manager.element.style&&lt[e]&&(this.manager.element.style[tt]=e),this.actions=e.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var e=[];return f(this.manager.recognizers,function(t){y(t.options.enable,[t])&&(e=e.concat(t.getTouchAction()))}),dt(e.join(` `))},preventDefaults:function(e){var t=e.srcEvent,n=e.offsetDirection;if(this.manager.session.prevented){t.preventDefault();return}var r=this.actions,i=w(r,ot)&&!lt[ot],a=w(r,ct)&&!lt[ct],o=w(r,st)&&!lt[st];if(i){var s=e.pointers.length===1,c=e.distance<2,l=e.deltaTime<250;if(s&&c&&l)return}if(!(o&&a)&&(i||a&&n&me||o&&n&he))return this.preventSrc(t)},preventSrc:function(e){this.manager.session.prevented=!0,e.preventDefault()}};function dt(e){if(w(e,ot))return ot;var t=w(e,st),n=w(e,ct);return t&&n?ot:t||n?t?st:ct:w(e,at)?at:it}function ft(){if(!nt)return!1;var t={},n=e.CSS&&e.CSS.supports;return[`auto`,`manipulation`,`pan-y`,`pan-x`,`pan-x pan-y`,`none`].forEach(function(r){t[r]=n?e.CSS.supports(`touch-action`,r):!0}),t}var pt=1,mt=2,z=4,ht=8,B=ht,gt=16,_t=32;function vt(e){this.options=m({},this.defaults,e||{}),this.id=j(),this.manager=null,this.options.enable=b(this.options.enable,!0),this.state=pt,this.simultaneous={},this.requireFail=[]}vt.prototype={defaults:{},set:function(e){return m(this.options,e),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(e){if(d(e,`recognizeWith`,this))return this;var t=this.simultaneous;return e=xt(e,this),t[e.id]||(t[e.id]=e,e.recognizeWith(this)),this},dropRecognizeWith:function(e){return d(e,`dropRecognizeWith`,this)?this:(e=xt(e,this),delete this.simultaneous[e.id],this)},requireFailure:function(e){if(d(e,`requireFailure`,this))return this;var t=this.requireFail;return e=xt(e,this),E(t,e)===-1&&(t.push(e),e.requireFailure(this)),this},dropRequireFailure:function(e){if(d(e,`dropRequireFailure`,this))return this;e=xt(e,this);var t=E(this.requireFail,e);return t>-1&&this.requireFail.splice(t,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(e){return!!this.simultaneous[e.id]},emit:function(e){var t=this,n=this.state;function r(n){t.manager.emit(n,e)}n<ht&&r(t.options.event+yt(n)),r(t.options.event),e.additionalEvent&&r(e.additionalEvent),n>=ht&&r(t.options.event+yt(n))},tryEmit:function(e){if(this.canEmit())return this.emit(e);this.state=_t},canEmit:function(){for(var e=0;e<this.requireFail.length;){if(!(this.requireFail[e].state&(_t|pt)))return!1;e++}return!0},recognize:function(e){var t=m({},e);if(!y(this.options.enable,[this,t])){this.reset(),this.state=_t;return}this.state&(B|gt|_t)&&(this.state=pt),this.state=this.process(t),this.state&(mt|z|ht|gt)&&this.tryEmit(t)},process:function(e){},getTouchAction:function(){},reset:function(){}};function yt(e){return e&gt?`cancel`:e&ht?`end`:e&z?`move`:e&mt?`start`:``}function bt(e){return e==pe?`down`:e==fe?`up`:e==ue?`left`:e==de?`right`:``}function xt(e,t){var n=t.manager;return n?n.get(e):e}function St(){vt.apply(this,arguments)}_(St,vt,{defaults:{pointers:1},attrTest:function(e){var t=this.options.pointers;return t===0||e.pointers.length===t},process:function(e){var t=this.state,n=e.eventType,r=t&(mt|z),i=this.attrTest(e);return r&&(n&ce||!i)?t|gt:r||i?n&I?t|ht:t&mt?t|z:mt:_t}});function Ct(){St.apply(this,arguments),this.pX=null,this.pY=null}_(Ct,St,{defaults:{event:`pan`,threshold:10,pointers:1,direction:ge},getTouchAction:function(){var e=this.options.direction,t=[];return e&me&&t.push(ct),e&he&&t.push(st),t},directionTest:function(e){var t=this.options,n=!0,r=e.distance,i=e.direction,a=e.deltaX,o=e.deltaY;return i&t.direction||(t.direction&me?(i=a===0?le:a<0?ue:de,n=a!=this.pX,r=Math.abs(e.deltaX)):(i=o===0?le:o<0?fe:pe,n=o!=this.pY,r=Math.abs(e.deltaY))),e.direction=i,n&&r>t.threshold&&i&t.direction},attrTest:function(e){return St.prototype.attrTest.call(this,e)&&(this.state&mt||!(this.state&mt)&&this.directionTest(e))},emit:function(e){this.pX=e.deltaX,this.pY=e.deltaY;var t=bt(e.direction);t&&(e.additionalEvent=this.options.event+t),this._super.emit.call(this,e)}});function wt(){St.apply(this,arguments)}_(wt,St,{defaults:{event:`pinch`,threshold:0,pointers:2},getTouchAction:function(){return[ot]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.scale-1)>this.options.threshold||this.state&mt)},emit:function(e){if(e.scale!==1){var t=e.scale<1?`in`:`out`;e.additionalEvent=this.options.event+t}this._super.emit.call(this,e)}});function Tt(){vt.apply(this,arguments),this._timer=null,this._input=null}_(Tt,vt,{defaults:{event:`press`,pointers:1,time:251,threshold:9},getTouchAction:function(){return[it]},process:function(e){var t=this.options,n=e.pointers.length===t.pointers,r=e.distance<t.threshold,i=e.deltaTime>t.time;if(this._input=e,!r||!n||e.eventType&(I|ce)&&!i)this.reset();else if(e.eventType&F)this.reset(),this._timer=u(function(){this.state=B,this.tryEmit()},t.time,this);else if(e.eventType&I)return B;return _t},reset:function(){clearTimeout(this._timer)},emit:function(e){this.state===B&&(e&&e.eventType&I?this.manager.emit(this.options.event+`up`,e):(this._input.timeStamp=l(),this.manager.emit(this.options.event,this._input)))}});function Et(){St.apply(this,arguments)}_(Et,St,{defaults:{event:`rotate`,threshold:0,pointers:2},getTouchAction:function(){return[ot]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.rotation)>this.options.threshold||this.state&mt)}});function Dt(){St.apply(this,arguments)}_(Dt,St,{defaults:{event:`swipe`,threshold:10,velocity:.3,direction:me|he,pointers:1},getTouchAction:function(){return Ct.prototype.getTouchAction.call(this)},attrTest:function(e){var t=this.options.direction,n;return t&(me|he)?n=e.overallVelocity:t&me?n=e.overallVelocityX:t&he&&(n=e.overallVelocityY),this._super.attrTest.call(this,e)&&t&e.offsetDirection&&e.distance>this.options.threshold&&e.maxPointers==this.options.pointers&&c(n)>this.options.velocity&&e.eventType&I},emit:function(e){var t=bt(e.offsetDirection);t&&this.manager.emit(this.options.event+t,e),this.manager.emit(this.options.event,e)}});function Ot(){vt.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}_(Ot,vt,{defaults:{event:`tap`,pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[at]},process:function(e){var t=this.options,n=e.pointers.length===t.pointers,r=e.distance<t.threshold,i=e.deltaTime<t.time;if(this.reset(),e.eventType&F&&this.count===0)return this.failTimeout();if(r&&i&&n){if(e.eventType!=I)return this.failTimeout();var a=this.pTime?e.timeStamp-this.pTime<t.interval:!0,o=!this.pCenter||Oe(this.pCenter,e.center)<t.posThreshold;if(this.pTime=e.timeStamp,this.pCenter=e.center,!o||!a?this.count=1:this.count+=1,this._input=e,this.count%t.taps===0)return this.hasRequireFailures()?(this._timer=u(function(){this.state=B,this.tryEmit()},t.interval,this),mt):B}return _t},failTimeout:function(){return this._timer=u(function(){this.state=_t},this.options.interval,this),_t},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==B&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}});function kt(e,t){return t=t||{},t.recognizers=b(t.recognizers,kt.defaults.preset),new V(e,t)}kt.VERSION=`2.0.7`,kt.defaults={domEvents:!1,touchAction:rt,enable:!0,inputTarget:null,inputClass:null,preset:[[Et,{enable:!1}],[wt,{enable:!1},[`rotate`]],[Dt,{direction:me}],[Ct,{direction:me},[`swipe`]],[Ot],[Ot,{event:`doubletap`,taps:2},[`tap`]],[Tt]],cssProps:{userSelect:`none`,touchSelect:`none`,touchCallout:`none`,contentZooming:`none`,userDrag:`none`,tapHighlightColor:`rgba(0,0,0,0)`}};var At=1,jt=2;function V(e,t){this.options=m({},kt.defaults,t||{}),this.options.inputTarget=this.options.inputTarget||e,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=e,this.input=be(this),this.touchAction=new ut(this,this.options.touchAction),Mt(this,!0),f(this.options.recognizers,function(e){var t=this.add(new e[0](e[1]));e[2]&&t.recognizeWith(e[2]),e[3]&&t.requireFailure(e[3])},this)}V.prototype={set:function(e){return m(this.options,e),e.touchAction&&this.touchAction.update(),e.inputTarget&&(this.input.destroy(),this.input.target=e.inputTarget,this.input.init()),this},stop:function(e){this.session.stopped=e?jt:At},recognize:function(e){var t=this.session;if(!t.stopped){this.touchAction.preventDefaults(e);var n,r=this.recognizers,i=t.curRecognizer;(!i||i&&i.state&B)&&(i=t.curRecognizer=null);for(var a=0;a<r.length;)n=r[a],t.stopped!==jt&&(!i||n==i||n.canRecognizeWith(i))?n.recognize(e):n.reset(),!i&&n.state&(mt|z|ht)&&(i=t.curRecognizer=n),a++}},get:function(e){if(e instanceof vt)return e;for(var t=this.recognizers,n=0;n<t.length;n++)if(t[n].options.event==e)return t[n];return null},add:function(e){if(d(e,`add`,this))return this;var t=this.get(e.options.event);return t&&this.remove(t),this.recognizers.push(e),e.manager=this,this.touchAction.update(),e},remove:function(e){if(d(e,`remove`,this))return this;if(e=this.get(e),e){var t=this.recognizers,n=E(t,e);n!==-1&&(t.splice(n,1),this.touchAction.update())}return this},on:function(e,t){if(e!==r&&t!==r){var n=this.handlers;return f(T(e),function(e){n[e]=n[e]||[],n[e].push(t)}),this}},off:function(e,t){if(e!==r){var n=this.handlers;return f(T(e),function(e){t?n[e]&&n[e].splice(E(n[e],t),1):delete n[e]}),this}},emit:function(e,t){this.options.domEvents&&Nt(e,t);var n=this.handlers[e]&&this.handlers[e].slice();if(!(!n||!n.length)){t.type=e,t.preventDefault=function(){t.srcEvent.preventDefault()};for(var r=0;r<n.length;)n[r](t),r++}},destroy:function(){this.element&&Mt(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}};function Mt(e,t){var n=e.element;if(n.style){var r;f(e.options.cssProps,function(i,a){r=k(n.style,a),t?(e.oldCssProps[r]=n.style[r],n.style[r]=i):n.style[r]=e.oldCssProps[r]||``}),t||(e.oldCssProps={})}}function Nt(e,n){var r=t.createEvent(`Event`);r.initEvent(e,!0,!0),r.gesture=n,n.target.dispatchEvent(r)}return m(kt,{INPUT_START:F,INPUT_MOVE:se,INPUT_END:I,INPUT_CANCEL:ce,STATE_POSSIBLE:pt,STATE_BEGAN:mt,STATE_CHANGED:z,STATE_ENDED:ht,STATE_RECOGNIZED:B,STATE_CANCELLED:gt,STATE_FAILED:_t,DIRECTION_NONE:le,DIRECTION_LEFT:ue,DIRECTION_RIGHT:de,DIRECTION_UP:fe,DIRECTION_DOWN:pe,DIRECTION_HORIZONTAL:me,DIRECTION_VERTICAL:he,DIRECTION_ALL:ge,Manager:V,Input:ye,TouchAction:ut,TouchInput:qe,MouseInput:Fe,PointerEventInput:ze,TouchMouseInput:Ze,SingleTouchInput:Ue,Recognizer:vt,AttrRecognizer:St,Tap:Ot,Pan:Ct,Swipe:Dt,Pinch:wt,Rotate:Et,Press:Tt,on:x,off:S,each:f,merge:g,extend:h,assign:m,inherit:_,bindFn:v,prefixed:k}),kt})(typeof window<`u`?window:{},typeof document<`u`?document:{},`Hammer`),Uh=class e extends cn{static parseArgs(t){return t instanceof e?t:Object.assign({},t)}static initAnimationEndState(e){var t,n,r,i,a,o,s,c;let l=this.parseArgs(e),{state:u,currentState:d}=l.initial,f=typeof u.panoIndex==`number`?{workCode:(r=(t=u.workCode)==null?(n=l.works[0])==null?void 0:n.workCode:t)==null?``:r,panoIndex:u.panoIndex}:{workCode:d.workCode,panoIndex:d.panoIndex};return Object.assign(Object.assign({},f),{mode:``,longitude:(i=u.longitude)==null?d.longitude:i,latitude:(a=u.latitude)==null?d.latitude:a,fov:(o=u.fov)==null?d.fov:o,offset:(s=u.offset)==null?d.offset:s,distance:(c=u.distance)==null?d.distance:c})}constructor(t){var n,r,i;super();let a=e.parseArgs(t);this.mode=``,this.pending=new Set,this.userAction=a.initial.userAction,this.destroyed=!1,this.fiveId=a.fiveId,this.scene=a.scene,this.modelScene=a.modelScene,this.xrCustomObjectsScene=a.xrCustomObjectsScene,this.helper=a.helper,this.camera=a.camera,this.renderer=a.renderer,this.viewport=a.viewport,this.element=a.element,this.enableWheel=a.enableWheel,this.works=a.works,this.imageOptions=a.imageOptions,this.videoTexture=a.videoTexture,this.extraElements=a.extraElements,this.initial=a.initial,this.currentPano=typeof this.initial.state.panoIndex==`number`?{workCode:(i=(n=this.initial.state.workCode)==null?(r=a.works[0])==null?void 0:r.workCode:n)==null?``:i,panoIndex:this.initial.state.panoIndex}:{workCode:this.initial.currentState.workCode,panoIndex:this.initial.currentState.panoIndex},this.needsRender=!0,this.cameraMotion=new Z({longitude:{value:this.camera.pose.longitude,circle:[0,Math.PI*2]},latitude:this.camera.pose.latitude,fov:this.camera.pose.fov}),this.inMomentumMovement=null,this.eventUnbinds=[a.element].concat(a.extraElements||[]).map(e=>this.bindEvents(e)),this.initAnimationIsReady=!1,this.pending.add(`init-animation`),this.initAnimationReady=new Promise(e=>{ri.shared.add(()=>{this.initAnimation().then(()=>{this.initAnimationIsReady=!0,this.pending.delete(`init-animation`),e()})},!0,0)})}updateConfiguration(e){return!0}destroy(){var e;this.stopMomentumMovement(),this.destroyed=!0,this.off(),this.cameraMotion.dispose();for(let e of this.eventUnbinds)e();this.panState=void 0,(e=this.pressState)==null||e.stop(),this.pressState=void 0}isReady(){return this.inMomentumMovement===null&&this.pending.size===0&&this.cameraMotion.ended===!0}bindExtraElement(e){for(let t of this.eventUnbinds)if(t.element===e)return;this.eventUnbinds.push(this.bindEvents(e))}unbindExtraElement(e){let t=[];for(let n of this.eventUnbinds)n.element===e?n():t.push(n);this.eventUnbinds=t}updateModel(e){this.needsRender=!0}updateWork(e,t,n,r){return this.works=e,this.userAction=r,!1}updateTime(e,t,...n){if(this.destroyed)return;let r={};this.cameraMotion.ended&&(this.cameraMotion.update(e),r.longitude=this.cameraMotion.value.longitude,r.latitude=this.cameraMotion.value.latitude,r.fov=this.cameraMotion.value.fov),Ph(r)&&this.setCamera(r)}render(){return!1}updateCamera(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r={};return e.longitude!==void 0&&(r.longitude=e.longitude),e.latitude!==void 0&&(r.latitude=e.latitude),e.fov!==void 0&&(r.fov=e.fov),this.cameraMotion.set(r,t).catch(q)})}updateCameraWithKeyframes(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r=[];for(let t of e)r.push({key:t.key,progress:t.progress,value:{longitude:t.value.longitude,latitude:t.value.latitude,fov:t.value.fov}});return this.cameraMotion.setKeyframes(r,t)})}getTargetState(){let e=this.cameraMotion.getKeyFrameSegment(U())[1];return Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:e.value.longitude,latitude:e.value.latitude,fov:e.value.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance})}initAnimation(){let{state:t,currentState:n,duration:r,userAction:i}=this.initial,a=e.initAnimationEndState(this);return this.userAction=i,this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:a,userAction:this.userAction})),this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:a,userAction:this.userAction})),Promise.resolve()}setCamera(e={}){var t,n,r,i,a;let o=(t=e.longitude)==null?this.camera.pose.longitude:t,s=(n=e.latitude)==null?this.camera.pose.latitude:n,c=(r=e.fov)==null?this.camera.pose.fov:r,l=(i=e.distance)==null?this.camera.pose.distance:i,u=(a=e.offset)==null?this.camera.pose.offset:a,d=yh(o,this.camera.pose.longitude,Math.PI*2)||yh(s,this.camera.pose.latitude),f=yh(c,this.camera.pose.fov),p=yh(l,this.camera.pose.distance),m=xh(u,this.camera.pose.offset);(f||d||m||p)&&(this.camera.setFromPose({longitude:o,latitude:s,fov:c,distance:l,offset:u}),this.emit(`camera.update`,$(`camera.update`,{userAction:this.userAction,state:Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:o,latitude:s,fov:c,offset:u,distance:l})})),this.needsRender=!0)}stopMomentumMovement(){if(this.inMomentumMovement&&this.inMomentumMovement.event&&!this.inMomentumMovement.event.defaultPrevented&&!this.inMomentumMovement.event.isFinal){let e=$(`gesture.momentum`,Object.assign(Object.assign({},this.inMomentumMovement.event),{isFirst:!1,isFinal:!0}));this.emit(`gesture.momentum`,e)}this.inMomentumMovement=null}onPanGesture(e){this.stopMomentumMovement(),this.emit(`gesture.pan`,e)}onTapGesture(e){this.stopMomentumMovement(),this.emit(`gesture.tap`,e)}onDblTapGesture(e){this.stopMomentumMovement(),this.emit(`gesture.dbltap`,e),!e.defaultPrevented&&(e.type=`gesture.tap`,this.onTapGesture(e))}onPressGesture(e){this.stopMomentumMovement(),this.emit(`gesture.press`,e)}onPinchGesture(e){this.stopMomentumMovement(),this.emit(`gesture.pinch`,e)}onMouseWheel(e){this.stopMomentumMovement(),this.emit(`gesture.mousewheel`,e)}onMouseMove(e){this.stopMomentumMovement(),this.emit(`gesture.mousemove`,e)}relativeClientPosition(e){let{top:t,left:n,width:r,height:i}=this.element.getBoundingClientRect();return n+=r*this.viewport.left,t+=i*(1-this.viewport.bottom-this.viewport.height),r*=this.viewport.width,i*=this.viewport.height,new c.Vector2((e.x-n)/r*2-1,-(e.y-t)/i*2+1)}createRaycasterFromCamera(e,t){let n=new c.Raycaster;return n.params.Points={threshold:.1},n.firstHitOnly=!0,n.near=t.near,n.far=t.far,n.setFromCamera(e,this.camera),n}bindEvents(e){let t=e=>{let t=this.relativeClientPosition(e);return!(Math.abs(t.x)>1||Math.abs(t.y)>1)},n=e=>({button:`button`in e?e.button:0,buttons:`buttons`in e?e.buttons:0,shiftKey:`shiftKey`in e?e.shiftKey:!1,ctrlKey:`ctrlKey`in e?e.ctrlKey:!1,altKey:`altKey`in e?e.altKey:!1,metaKey:`metaKey`in e?e.metaKey:!1}),r=new Hh.Manager(e),i=e=>e.session.firstInput||null,a=new Hh.Pan({threshold:10,pointers:0}),o=new Hh.Tap({interval:410}),s=new Hh.Pinch({threshold:0,pointers:2});r.add([a,o,s]),r.on(`panstart pan`,e=>{let a=n(e.srcEvent),o=i(r);if(o&&!t(o.center))return;let s=$(`gesture.pan`,{target:e.target,pointerType:e.pointerType,srcEvent:e.srcEvent,pointers:e.pointers.map(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})}),isFirst:e.isFirst,isFinal:e.isFinal,scale:e.scale,center:(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})})(e.center),velocityX:e.velocityX,velocityY:e.velocityY,overallVelocityX:e.overallVelocityX,overallVelocityY:e.overallVelocityY,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,s),this.onPanGesture(s),v()}),r.on(`tap`,e=>{let a=n(e.srcEvent);if(e.pointerType===`mouse`&&a.button!==0)return;let o=i(r);if(o&&!t(o.center))return;let s=$(`gesture.tap`,{target:e.target,pointerType:e.pointerType,srcEvent:e.srcEvent,pointers:e.pointers.map(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})}),isFirst:!0,isFinal:!0,scale:e.scale,center:(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})})(e.center),velocityX:e.velocityX,velocityY:e.velocityY,overallVelocityX:e.overallVelocityX,overallVelocityY:e.overallVelocityY,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,s),this.onTapGesture(s),v()}),r.on(`pinchstart pinch pinchend`,e=>{let a=n(e.srcEvent),o=i(r);if(o&&!t(o.center))return;let s=$(`gesture.pinch`,{target:e.target,pointerType:e.pointerType,srcEvent:e.srcEvent,pointers:e.pointers.map(e=>{var t;let n=this.relativeClientPosition(e),r=new c.Raycaster;return r.params.Points={threshold:.1},r.setFromCamera(n,this.camera),Object.assign(Object.assign({x:e.x,y:e.y,delta:(t=e.delta)==null?0:t},a),{coords:n,raycaster:r})}),isFirst:e.type===`pinchstart`,isFinal:e.type===`pinchend`,scale:e.scale,center:(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})})(e.center),velocityX:e.velocityX,velocityY:e.velocityY,overallVelocityX:e.overallVelocityX,overallVelocityY:e.overallVelocityY,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,s),this.onPinchGesture(s),v()}),r.on(`dbltap`,e=>{let a=n(e.srcEvent);if(e.pointerType===`mouse`&&a.button!==0)return;let o=i(r);if(o&&!t(o.center))return;let s=$(`gesture.dbltap`,{target:e.target,pointerType:e.pointerType,srcEvent:e.srcEvent,pointers:e.pointers.map(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})}),isFirst:!0,isFinal:!0,scale:e.scale,center:(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})})(e.center),velocityX:e.velocityX,velocityY:e.velocityY,overallVelocityX:e.overallVelocityX,overallVelocityY:e.overallVelocityY,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,s),this.onDblTapGesture(s),v()});let l=null,u=null,d=(e,t,r)=>{let i={x:r.clientX,y:r.clientY},a=this.relativeClientPosition(i),o=this.createRaycasterFromCamera(a,this.camera),s=Object.assign(Object.assign(Object.assign(Object.assign({},i),{coords:a,raycaster:o}),n(r)),{delta:0}),c=e===`pinchend`?t:t-r.deltaY/280;return $(`gesture.pinch`,{target:r.target,pointerType:`mouse`,srcEvent:r,pointers:[Object.assign({},s)],isFirst:e===`pinchstart`,isFinal:e===`pinchend`,scale:W(c,.1,10),center:Object.assign({},s),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))})},f=e=>{var r;if(t({x:e.clientX,y:e.clientY})){if(e.preventDefault(),e.ctrlKey){let t=(r=l==null?void 0:l.prevEvent.scale)==null?1:r,n=d(l?`pinch`:`pinchstart`,t,e);this.emit(`gesture.create`,n),l===null?l={firstEvent:n,prevEvent:n}:l.prevEvent=n,this.emit(`gesture.create`,n),this.onPinchGesture(n),u!==null&&window.clearTimeout(u),u=window.setTimeout(()=>{var t;u=null;let n=d(`pinchend`,(t=l==null?void 0:l.prevEvent.scale)==null?1:t,e);this.emit(`gesture.create`,n),l=null,this.onPinchGesture(n)},200)}else{let t=(Math.abs(e.deltaY)>Math.abs(e.deltaX)?e.deltaY:e.deltaX)/-60,r=this.mouseWheelState!==void 0,i={x:e.clientX,y:e.clientY},a=this.relativeClientPosition(i),o=this.createRaycasterFromCamera(a,this.camera),s=Object.assign(Object.assign(Object.assign(Object.assign({},i),{coords:a,raycaster:o}),n(e)),{delta:t}),c=$(`gesture.mousewheel`,{target:e.target,pointerType:`mouse`,srcEvent:e,pointers:[Object.assign({},s)],isFirst:r,isFinal:!1,scale:0,center:Object.assign({},s),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,c),this.onMouseWheel(c),this.mouseWheelState&&clearTimeout(this.mouseWheelState.timer),this.mouseWheelState={timer:setTimeout(()=>{this.mouseWheelState=void 0;let t=$(`gesture.mousewheel`,{target:e.target,pointerType:`mouse`,srcEvent:e,pointers:[Object.assign(Object.assign({},s),{delta:0})],isFirst:!1,isFinal:!0,scale:0,center:Object.assign(Object.assign({},s),{delta:0}),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,t),this.onMouseWheel(t)},100)}}v()}},p=e=>{if(Th)return;if(!t({x:e.clientX,y:e.clientY})){m();return}let r=!1;this.mouseMoveState||(r=!0);let i={x:e.clientX,y:e.clientY},a=this.relativeClientPosition(i),o=this.createRaycasterFromCamera(a,this.camera),s=Object.assign(Object.assign(Object.assign(Object.assign({},i),{coords:a,raycaster:o}),n(e)),{delta:0}),c=$(`gesture.mousemove`,{target:e.target,pointerType:`mouse`,srcEvent:e,pointers:[Object.assign({},s)],isFirst:r,isFinal:!1,scale:0,center:Object.assign({},s),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,c),this.mouseMoveState={timeStamp:U(),event:c},this.onMouseMove(c),this.pressState&&Math.abs(e.clientX-this.pressState.event.center.y)>10&&Math.abs(e.clientY-this.pressState.event.center.y)>10&&v()},m=()=>{if(this.mouseMoveState){let e=$(this.mouseMoveState.event.type,Object.assign(Object.assign({},this.mouseMoveState.event),{isFinal:!0}));this.emit(`gesture.create`,e),this.mouseMoveState=void 0,this.onMouseMove(e)}v()},h=e=>{if(!t(e.center)){v();return}let n=!1;this.pressState||(n=!0,this.pressState={event:e,timeStamp:U(),stop:q});let r=U()-this.pressState.timeStamp,i=$(this.pressState.event.type,Object.assign(Object.assign({},this.pressState.event),{isFirst:n,isFinal:!1,center:Object.assign(Object.assign({},this.pressState.event.center),{delta:r}),pointers:this.pressState.event.pointers.map(e=>Object.assign(Object.assign({},e),{delta:r}))}));this.emit(`gesture.create`,i),this.onPressGesture(i),this.pressState&&(this.pressState.stop=ri.shared.add(t=>{h(e)},!0,1))},g=e=>{if(v(),e.touches.length>1||e.changedTouches.length<=0)return;let t={x:e.changedTouches[0].clientX,y:e.changedTouches[0].clientY},r=this.relativeClientPosition(t),i=this.createRaycasterFromCamera(r,this.camera),a=Object.assign(Object.assign(Object.assign(Object.assign({},t),{coords:r,raycaster:i}),n(e)),{delta:0}),o=$(`gesture.press`,{target:e.target,pointerType:`touch`,srcEvent:e,pointers:[Object.assign({},a)],isFirst:!1,isFinal:!1,scale:0,center:a,velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,o),h(o)},_=e=>{v();let t={x:e.clientX,y:e.clientY},r=this.relativeClientPosition(t),i=this.createRaycasterFromCamera(r,this.camera),a=Object.assign(Object.assign(Object.assign(Object.assign({},t),{coords:r,raycaster:i}),n(e)),{delta:0}),o=$(`gesture.press`,{target:e.target,pointerType:`mouse`,srcEvent:e,pointers:[Object.assign({},a)],isFirst:!1,isFinal:!1,scale:0,center:a,velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,o),h(o)},v=()=>{var e;if(this.pressState){let t=U()-this.pressState.timeStamp,n=$(this.pressState.event.type,Object.assign(Object.assign({},this.pressState.event),{center:Object.assign(Object.assign({},this.pressState.event.center),{delta:t}),isFirst:!1,isFinal:!0,pointers:this.pressState.event.pointers.map(e=>Object.assign(Object.assign({},e),{delta:t}))}));this.emit(`gesture.create`,n),this.onPressGesture(n),(e=this.pressState)==null||e.stop(),this.pressState=void 0}},y=null,b=e=>{var t,r,i;let a=!1,o=!1;switch(e.type){case`gesturestart`:a=!0;break;case`gestureend`:o=!0;break;default:break}let s={x:(t=e.clientX)==null?0:t,y:(r=e.clientY)==null?0:r},c=this.relativeClientPosition(s),l=this.createRaycasterFromCamera(c,this.camera),u=Object.assign(Object.assign(Object.assign(Object.assign({},s),{coords:c,raycaster:l}),n(e)),{delta:0});return $(`gesture.pinch`,{target:e.target,pointerType:`mouse`,srcEvent:e,pointers:[Object.assign({},u)],isFirst:a,isFinal:o,scale:(i=e.scale)==null?1:i,center:Object.assign({},u),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))})},x=e=>{if(e.preventDefault(),Th)return;let n=b(e);this.emit(`gesture.create`,n),y={firstEvent:n};let r=y.firstEvent;r&&!t(r.center)||this.onPinchGesture(n)},S=e=>{if(e.preventDefault(),Th||!y)return;let n=y.firstEvent;if(n&&!t(n.center))return;let r=b(e);this.emit(`gesture.create`,r),this.onPinchGesture(r)},C=e=>{if(e.preventDefault(),Th||!y)return;let n=y.firstEvent;if(y=null,n&&!t(n.center))return;let r=b(e);this.emit(`gesture.create`,r),this.onPinchGesture(r)},w=t=>{if(t&&typeof t.preventDefault==`function`&&t.currentTarget===e&&t.preventDefault(),typeof getSelection==`function`){let e=getSelection();e&&e.focusNode&&(e.removeAllRanges&&e.removeAllRanges(),e.empty&&e.empty())}};return this.enableWheel&&e.addEventListener(`wheel`,f,{passive:!1}),e.addEventListener(`mousemove`,p,!1),e.addEventListener(`mouseout`,m,!1),e.addEventListener(`touchstart`,g,{passive:!0}),e.addEventListener(`touchend`,v,!1),e.addEventListener(`touchcancel`,v,!1),e.addEventListener(`mousedown`,_,!1),e.addEventListener(`mouseup`,v,!1),e.addEventListener(`gesturestart`,x,{passive:!1}),e.addEventListener(`gesturechange`,S,{passive:!1}),e.addEventListener(`gestureend`,C,{passive:!1}),e.addEventListener(`touchstart`,w,{passive:!1}),e.addEventListener(`contextmenu`,w,!1),Object.assign(()=>{r.destroy(),e.removeEventListener(`wheel`,f,!1),e.removeEventListener(`mousemove`,p,!1),e.removeEventListener(`mouseout`,m,!1),e.removeEventListener(`touchstart`,g,!1),e.removeEventListener(`touchend`,v,!1),e.removeEventListener(`touchcancel`,v,!1),e.removeEventListener(`mousedown`,_,!1),e.removeEventListener(`mouseup`,v,!1),e.removeEventListener(`gesturestart`,x,!1),e.removeEventListener(`gesturechange`,S,!1),e.removeEventListener(`gestureend`,C,!1),e.removeEventListener(`touchstart`,w,!1),e.removeEventListener(`contextmenu`,w,!1)},{element:e})}},Wh=new c.CircleBufferGeometry(.1,16),Gh=new c.ShaderMaterial({vertexShader:`
1499
+ `;return function(){var n=Error(`get-stack-trace`),r=n&&n.stack?n.stack.replace(/^[^\(]+?[\n$]/gm,``).replace(/^\s+at\s+/gm,``).replace(/^Object.<anonymous>\s*\(/gm,`{anonymous}()@`):`Unknown Stack Trace`,a=e.console&&(e.console.warn||e.console.log);return a&&a.call(e.console,i,r),t.apply(this,arguments)}}var m=typeof Object.assign==`function`?Object.assign:function(e){if(e===r||e===null)throw TypeError(`Cannot convert undefined or null to object`);for(var t=Object(e),n=1;n<arguments.length;n++){var i=arguments[n];if(i!==r&&i!==null)for(var a in i)i.hasOwnProperty(a)&&(t[a]=i[a])}return t},h=p(function(e,t,n){for(var i=Object.keys(t),a=0;a<i.length;)(!n||n&&e[i[a]]===r)&&(e[i[a]]=t[i[a]]),a++;return e},`extend`,"Use `assign`."),g=p(function(e,t){return h(e,t,!0)},`merge`,"Use `assign`.");function _(e,t,n){var r=t.prototype,i=e.prototype=Object.create(r);i.constructor=e,i._super=r,n&&m(i,n)}function v(e,t){return function(){return e.apply(t,arguments)}}function y(e,t){return typeof e==o?e.apply(t&&t[0]||r,t):e}function b(e,t){return e===r?t:e}function x(e,t,n){f(T(t),function(t){e.addEventListener(t,n,!1)})}function S(e,t,n){f(T(t),function(t){e.removeEventListener(t,n,!1)})}function C(e,t){for(;e;){if(e==t)return!0;e=e.parentNode}return!1}function w(e,t){return e.indexOf(t)>-1}function T(e){return e.trim().split(/\s+/g)}function E(e,t,n){if(e.indexOf&&!n)return e.indexOf(t);for(var r=0;r<e.length;){if(n&&e[r][n]==t||!n&&e[r]===t)return r;r++}return-1}function D(e){return Array.prototype.slice.call(e,0)}function O(e,t,n){for(var r=[],i=[],a=0;a<e.length;){var o=t?e[a][t]:e[a];E(i,o)<0&&r.push(e[a]),i[a]=o,a++}return n&&(r=t?r.sort(function(e,n){return e[t]>n[t]}):r.sort()),r}function k(e,t){for(var n,a,o=t[0].toUpperCase()+t.slice(1),s=0;s<i.length;){if(n=i[s],a=n?n+o:t,a in e)return a;s++}return r}var A=1;function j(){return A++}function M(t){var n=t.ownerDocument||t;return n.defaultView||n.parentWindow||e}var N=/mobile|tablet|ip(ad|hone|od)|android/i,ee=`ontouchstart`in e,P=k(e,`PointerEvent`)!==r,te=ee&&N.test(navigator.userAgent),ne=`touch`,re=`pen`,ie=`mouse`,ae=`kinect`,oe=25,F=1,se=2,I=4,ce=8,le=1,ue=2,de=4,fe=8,pe=16,me=ue|de,he=fe|pe,ge=me|he,_e=[`x`,`y`],ve=[`clientX`,`clientY`];function ye(e,t){var n=this;this.manager=e,this.callback=t,this.element=e.element,this.target=e.options.inputTarget,this.domHandler=function(t){y(e.options.enable,[e])&&n.handler(t)},this.init()}ye.prototype={handler:function(){},init:function(){this.evEl&&x(this.element,this.evEl,this.domHandler),this.evTarget&&x(this.target,this.evTarget,this.domHandler),this.evWin&&x(M(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&S(this.element,this.evEl,this.domHandler),this.evTarget&&S(this.target,this.evTarget,this.domHandler),this.evWin&&S(M(this.element),this.evWin,this.domHandler)}};function be(e){var t;return t=e.options.inputClass||(P?ze:te?qe:ee?Ze:Fe),new t(e,xe)}function xe(e,t,n){var r=n.pointers.length,i=n.changedPointers.length,a=t&F&&r-i===0,o=t&(I|ce)&&r-i===0;n.isFirst=!!a,n.isFinal=!!o,a&&(e.session={}),n.eventType=t,Se(e,n),e.emit(`hammer.input`,n),e.recognize(n),e.session.prevInput=n}function Se(e,t){var n=e.session,r=t.pointers,i=r.length;n.firstInput||(n.firstInput=Te(t)),i>1&&!n.firstMultiple?n.firstMultiple=Te(t):i===1&&(n.firstMultiple=!1);var a=n.firstInput,o=n.firstMultiple,s=o?o.center:a.center,u=t.center=Ee(r);t.timeStamp=l(),t.deltaTime=t.timeStamp-a.timeStamp,t.angle=ke(s,u),t.distance=Oe(s,u),Ce(n,t),t.offsetDirection=De(t.deltaX,t.deltaY);var d=L(t.deltaTime,t.deltaX,t.deltaY);t.overallVelocityX=d.x,t.overallVelocityY=d.y,t.overallVelocity=c(d.x)>c(d.y)?d.x:d.y,t.scale=o?je(o.pointers,r):1,t.rotation=o?Ae(o.pointers,r):0,t.maxPointers=n.prevInput?t.pointers.length>n.prevInput.maxPointers?t.pointers.length:n.prevInput.maxPointers:t.pointers.length,we(n,t);var f=e.element;C(t.srcEvent.target,f)&&(f=t.srcEvent.target),t.target=f}function Ce(e,t){var n=t.center,r=e.offsetDelta||{},i=e.prevDelta||{},a=e.prevInput||{};(t.eventType===F||a.eventType===I)&&(i=e.prevDelta={x:a.deltaX||0,y:a.deltaY||0},r=e.offsetDelta={x:n.x,y:n.y}),t.deltaX=i.x+(n.x-r.x),t.deltaY=i.y+(n.y-r.y)}function we(e,t){var n=e.lastInterval||t,i=t.timeStamp-n.timeStamp,a,o,s,l;if(t.eventType!=ce&&(i>oe||n.velocity===r)){var u=t.deltaX-n.deltaX,d=t.deltaY-n.deltaY,f=L(i,u,d);o=f.x,s=f.y,a=c(f.x)>c(f.y)?f.x:f.y,l=De(u,d),e.lastInterval=t}else a=n.velocity,o=n.velocityX,s=n.velocityY,l=n.direction;t.velocity=a,t.velocityX=o,t.velocityY=s,t.direction=l}function Te(e){for(var t=[],n=0;n<e.pointers.length;)t[n]={clientX:s(e.pointers[n].clientX),clientY:s(e.pointers[n].clientY)},n++;return{timeStamp:l(),pointers:t,center:Ee(t),deltaX:e.deltaX,deltaY:e.deltaY}}function Ee(e){var t=e.length;if(t===1)return{x:s(e[0].clientX),y:s(e[0].clientY)};for(var n=0,r=0,i=0;i<t;)n+=e[i].clientX,r+=e[i].clientY,i++;return{x:s(n/t),y:s(r/t)}}function L(e,t,n){return{x:t/e||0,y:n/e||0}}function De(e,t){return e===t?le:c(e)>=c(t)?e<0?ue:de:t<0?fe:pe}function Oe(e,t,n){n||(n=_e);var r=t[n[0]]-e[n[0]],i=t[n[1]]-e[n[1]];return Math.sqrt(r*r+i*i)}function ke(e,t,n){n||(n=_e);var r=t[n[0]]-e[n[0]],i=t[n[1]]-e[n[1]];return Math.atan2(i,r)*180/Math.PI}function Ae(e,t){return ke(t[1],t[0],ve)+ke(e[1],e[0],ve)}function je(e,t){return Oe(t[0],t[1],ve)/Oe(e[0],e[1],ve)}var Me={mousedown:F,mousemove:se,mouseup:I},Ne=`mousedown`,Pe=`mousemove mouseup`;function Fe(){this.evEl=Ne,this.evWin=Pe,this.pressed=!1,ye.apply(this,arguments)}_(Fe,ye,{handler:function(e){var t=Me[e.type];t&F&&(e.button===0||e.button===2)&&(this.pressed=!0),t&se&&e.which!==1&&(t=I),this.pressed&&(t&I&&(this.pressed=!1),this.callback(this.manager,t,{pointers:[e],changedPointers:[e],pointerType:ie,srcEvent:e}))}});var Ie={pointerdown:F,pointermove:se,pointerup:I,pointercancel:ce,pointerout:ce},R={2:ne,3:re,4:ie,5:ae},Le=`pointerdown`,Re=`pointermove pointerup pointercancel`;e.MSPointerEvent&&!e.PointerEvent&&(Le=`MSPointerDown`,Re=`MSPointerMove MSPointerUp MSPointerCancel`);function ze(){this.evEl=Le,this.evWin=Re,ye.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}_(ze,ye,{handler:function(e){var t=this.store,n=!1,r=!1,i=Ie[e.type.toLowerCase().replace(`ms`,``)],a=R[e.pointerType]||e.pointerType,o=a==ne,s=E(t,e.pointerId,`pointerId`);i&F&&(e.button===0||e.button===2||o)?s<0&&(t.push(e),s=t.length-1):i&(I|ce)?n=!0:!o&&e.buttons===0&&(n=!0,r=!0,i=Ie.pointerup),!(s<0)&&(r||(t[s]=e),this.callback(this.manager,i,{pointers:t,changedPointers:[e],pointerType:a,srcEvent:t[s]}),n&&t.splice(s,1))}});var Be={touchstart:F,touchmove:se,touchend:I,touchcancel:ce},Ve=`touchstart`,He=`touchstart touchmove touchend touchcancel`;function Ue(){this.evTarget=Ve,this.evWin=He,this.started=!1,ye.apply(this,arguments)}_(Ue,ye,{handler:function(e){var t=Be[e.type];if(t===F&&(this.started=!0),this.started){var n=We.call(this,e,t);t&(I|ce)&&n[0].length-n[1].length===0&&(this.started=!1),this.callback(this.manager,t,{pointers:n[0],changedPointers:n[1],pointerType:ne,srcEvent:e})}}});function We(e,t){var n=D(e.touches),r=D(e.changedTouches);return t&(I|ce)&&(n=O(n.concat(r),`identifier`,!0)),[n,r]}var Ge={touchstart:F,touchmove:se,touchend:I,touchcancel:ce},Ke=`touchstart touchmove touchend touchcancel`;function qe(){this.evTarget=Ke,this.targetIds={},ye.apply(this,arguments)}_(qe,ye,{handler:function(e){var t=Ge[e.type],n=Je.call(this,e,t);n&&this.callback(this.manager,t,{pointers:n[0],changedPointers:n[1],pointerType:ne,srcEvent:e})}});function Je(e,t){var n=D(e.touches),r=this.targetIds;if(t&(F|se)&&n.length===1)return r[n[0].identifier]=!0,[n,n];var i,a,o=D(e.changedTouches),s=[],c=this.target;if(a=n.filter(function(e){return C(e.target,c)}),t===F)for(i=0;i<a.length;)r[a[i].identifier]=!0,i++;for(i=0;i<o.length;)r[o[i].identifier]&&s.push(o[i]),t&(I|ce)&&delete r[o[i].identifier],i++;if(s.length)return[O(a.concat(s),`identifier`,!0),s]}var Ye=2500,Xe=25;function Ze(){ye.apply(this,arguments);var e=v(this.handler,this);this.touch=new qe(this.manager,e),this.mouse=new Fe(this.manager,e),this.primaryTouch=null,this.lastTouches=[]}_(Ze,ye,{handler:function(e,t,n){var r=n.pointerType==ne,i=n.pointerType==ie;if(!(i&&n.sourceCapabilities&&n.sourceCapabilities.firesTouchEvents)){if(r)Qe.call(this,t,n);else if(i&&et.call(this,n))return;this.callback(e,t,n)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});function Qe(e,t){e&F?(this.primaryTouch=t.changedPointers[0].identifier,$e.call(this,t)):e&(I|ce)&&$e.call(this,t)}function $e(e){var t=e.changedPointers[0];if(t.identifier===this.primaryTouch){var n={x:t.clientX,y:t.clientY};this.lastTouches.push(n);var r=this.lastTouches;setTimeout(function(){var e=r.indexOf(n);e>-1&&r.splice(e,1)},Ye)}}function et(e){for(var t=e.srcEvent.clientX,n=e.srcEvent.clientY,r=0;r<this.lastTouches.length;r++){var i=this.lastTouches[r],a=Math.abs(t-i.x),o=Math.abs(n-i.y);if(a<=Xe&&o<=Xe)return!0}return!1}var tt=a?k(a.style,`touchAction`):r,nt=tt!==r,rt=`compute`,it=`auto`,at=`manipulation`,ot=`none`,st=`pan-x`,ct=`pan-y`,lt=ft();function ut(e,t){this.manager=e,this.set(t)}ut.prototype={set:function(e){e==rt&&(e=this.compute()),nt&&this.manager.element.style&&lt[e]&&(this.manager.element.style[tt]=e),this.actions=e.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var e=[];return f(this.manager.recognizers,function(t){y(t.options.enable,[t])&&(e=e.concat(t.getTouchAction()))}),dt(e.join(` `))},preventDefaults:function(e){var t=e.srcEvent,n=e.offsetDirection;if(this.manager.session.prevented){t.preventDefault();return}var r=this.actions,i=w(r,ot)&&!lt[ot],a=w(r,ct)&&!lt[ct],o=w(r,st)&&!lt[st];if(i){var s=e.pointers.length===1,c=e.distance<2,l=e.deltaTime<250;if(s&&c&&l)return}if(!(o&&a)&&(i||a&&n&me||o&&n&he))return this.preventSrc(t)},preventSrc:function(e){this.manager.session.prevented=!0,e.preventDefault()}};function dt(e){if(w(e,ot))return ot;var t=w(e,st),n=w(e,ct);return t&&n?ot:t||n?t?st:ct:w(e,at)?at:it}function ft(){if(!nt)return!1;var t={},n=e.CSS&&e.CSS.supports;return[`auto`,`manipulation`,`pan-y`,`pan-x`,`pan-x pan-y`,`none`].forEach(function(r){t[r]=n?e.CSS.supports(`touch-action`,r):!0}),t}var pt=1,mt=2,z=4,ht=8,B=ht,gt=16,_t=32;function vt(e){this.options=m({},this.defaults,e||{}),this.id=j(),this.manager=null,this.options.enable=b(this.options.enable,!0),this.state=pt,this.simultaneous={},this.requireFail=[]}vt.prototype={defaults:{},set:function(e){return m(this.options,e),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(e){if(d(e,`recognizeWith`,this))return this;var t=this.simultaneous;return e=xt(e,this),t[e.id]||(t[e.id]=e,e.recognizeWith(this)),this},dropRecognizeWith:function(e){return d(e,`dropRecognizeWith`,this)?this:(e=xt(e,this),delete this.simultaneous[e.id],this)},requireFailure:function(e){if(d(e,`requireFailure`,this))return this;var t=this.requireFail;return e=xt(e,this),E(t,e)===-1&&(t.push(e),e.requireFailure(this)),this},dropRequireFailure:function(e){if(d(e,`dropRequireFailure`,this))return this;e=xt(e,this);var t=E(this.requireFail,e);return t>-1&&this.requireFail.splice(t,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(e){return!!this.simultaneous[e.id]},emit:function(e){var t=this,n=this.state;function r(n){t.manager.emit(n,e)}n<ht&&r(t.options.event+yt(n)),r(t.options.event),e.additionalEvent&&r(e.additionalEvent),n>=ht&&r(t.options.event+yt(n))},tryEmit:function(e){if(this.canEmit())return this.emit(e);this.state=_t},canEmit:function(){for(var e=0;e<this.requireFail.length;){if(!(this.requireFail[e].state&(_t|pt)))return!1;e++}return!0},recognize:function(e){var t=m({},e);if(!y(this.options.enable,[this,t])){this.reset(),this.state=_t;return}this.state&(B|gt|_t)&&(this.state=pt),this.state=this.process(t),this.state&(mt|z|ht|gt)&&this.tryEmit(t)},process:function(e){},getTouchAction:function(){},reset:function(){}};function yt(e){return e&gt?`cancel`:e&ht?`end`:e&z?`move`:e&mt?`start`:``}function bt(e){return e==pe?`down`:e==fe?`up`:e==ue?`left`:e==de?`right`:``}function xt(e,t){var n=t.manager;return n?n.get(e):e}function St(){vt.apply(this,arguments)}_(St,vt,{defaults:{pointers:1},attrTest:function(e){var t=this.options.pointers;return t===0||e.pointers.length===t},process:function(e){var t=this.state,n=e.eventType,r=t&(mt|z),i=this.attrTest(e);return r&&(n&ce||!i)?t|gt:r||i?n&I?t|ht:t&mt?t|z:mt:_t}});function Ct(){St.apply(this,arguments),this.pX=null,this.pY=null}_(Ct,St,{defaults:{event:`pan`,threshold:10,pointers:1,direction:ge},getTouchAction:function(){var e=this.options.direction,t=[];return e&me&&t.push(ct),e&he&&t.push(st),t},directionTest:function(e){var t=this.options,n=!0,r=e.distance,i=e.direction,a=e.deltaX,o=e.deltaY;return i&t.direction||(t.direction&me?(i=a===0?le:a<0?ue:de,n=a!=this.pX,r=Math.abs(e.deltaX)):(i=o===0?le:o<0?fe:pe,n=o!=this.pY,r=Math.abs(e.deltaY))),e.direction=i,n&&r>t.threshold&&i&t.direction},attrTest:function(e){return St.prototype.attrTest.call(this,e)&&(this.state&mt||!(this.state&mt)&&this.directionTest(e))},emit:function(e){this.pX=e.deltaX,this.pY=e.deltaY;var t=bt(e.direction);t&&(e.additionalEvent=this.options.event+t),this._super.emit.call(this,e)}});function wt(){St.apply(this,arguments)}_(wt,St,{defaults:{event:`pinch`,threshold:0,pointers:2},getTouchAction:function(){return[ot]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.scale-1)>this.options.threshold||this.state&mt)},emit:function(e){if(e.scale!==1){var t=e.scale<1?`in`:`out`;e.additionalEvent=this.options.event+t}this._super.emit.call(this,e)}});function Tt(){vt.apply(this,arguments),this._timer=null,this._input=null}_(Tt,vt,{defaults:{event:`press`,pointers:1,time:251,threshold:9},getTouchAction:function(){return[it]},process:function(e){var t=this.options,n=e.pointers.length===t.pointers,r=e.distance<t.threshold,i=e.deltaTime>t.time;if(this._input=e,!r||!n||e.eventType&(I|ce)&&!i)this.reset();else if(e.eventType&F)this.reset(),this._timer=u(function(){this.state=B,this.tryEmit()},t.time,this);else if(e.eventType&I)return B;return _t},reset:function(){clearTimeout(this._timer)},emit:function(e){this.state===B&&(e&&e.eventType&I?this.manager.emit(this.options.event+`up`,e):(this._input.timeStamp=l(),this.manager.emit(this.options.event,this._input)))}});function Et(){St.apply(this,arguments)}_(Et,St,{defaults:{event:`rotate`,threshold:0,pointers:2},getTouchAction:function(){return[ot]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.rotation)>this.options.threshold||this.state&mt)}});function Dt(){St.apply(this,arguments)}_(Dt,St,{defaults:{event:`swipe`,threshold:10,velocity:.3,direction:me|he,pointers:1},getTouchAction:function(){return Ct.prototype.getTouchAction.call(this)},attrTest:function(e){var t=this.options.direction,n;return t&(me|he)?n=e.overallVelocity:t&me?n=e.overallVelocityX:t&he&&(n=e.overallVelocityY),this._super.attrTest.call(this,e)&&t&e.offsetDirection&&e.distance>this.options.threshold&&e.maxPointers==this.options.pointers&&c(n)>this.options.velocity&&e.eventType&I},emit:function(e){var t=bt(e.offsetDirection);t&&this.manager.emit(this.options.event+t,e),this.manager.emit(this.options.event,e)}});function Ot(){vt.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}_(Ot,vt,{defaults:{event:`tap`,pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[at]},process:function(e){var t=this.options,n=e.pointers.length===t.pointers,r=e.distance<t.threshold,i=e.deltaTime<t.time;if(this.reset(),e.eventType&F&&this.count===0)return this.failTimeout();if(r&&i&&n){if(e.eventType!=I)return this.failTimeout();var a=this.pTime?e.timeStamp-this.pTime<t.interval:!0,o=!this.pCenter||Oe(this.pCenter,e.center)<t.posThreshold;if(this.pTime=e.timeStamp,this.pCenter=e.center,!o||!a?this.count=1:this.count+=1,this._input=e,this.count%t.taps===0)return this.hasRequireFailures()?(this._timer=u(function(){this.state=B,this.tryEmit()},t.interval,this),mt):B}return _t},failTimeout:function(){return this._timer=u(function(){this.state=_t},this.options.interval,this),_t},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==B&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}});function kt(e,t){return t=t||{},t.recognizers=b(t.recognizers,kt.defaults.preset),new V(e,t)}kt.VERSION=`2.0.7`,kt.defaults={domEvents:!1,touchAction:rt,enable:!0,inputTarget:null,inputClass:null,preset:[[Et,{enable:!1}],[wt,{enable:!1},[`rotate`]],[Dt,{direction:me}],[Ct,{direction:me},[`swipe`]],[Ot],[Ot,{event:`doubletap`,taps:2},[`tap`]],[Tt]],cssProps:{userSelect:`none`,touchSelect:`none`,touchCallout:`none`,contentZooming:`none`,userDrag:`none`,tapHighlightColor:`rgba(0,0,0,0)`}};var At=1,jt=2;function V(e,t){this.options=m({},kt.defaults,t||{}),this.options.inputTarget=this.options.inputTarget||e,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=e,this.input=be(this),this.touchAction=new ut(this,this.options.touchAction),Mt(this,!0),f(this.options.recognizers,function(e){var t=this.add(new e[0](e[1]));e[2]&&t.recognizeWith(e[2]),e[3]&&t.requireFailure(e[3])},this)}V.prototype={set:function(e){return m(this.options,e),e.touchAction&&this.touchAction.update(),e.inputTarget&&(this.input.destroy(),this.input.target=e.inputTarget,this.input.init()),this},stop:function(e){this.session.stopped=e?jt:At},recognize:function(e){var t=this.session;if(!t.stopped){this.touchAction.preventDefaults(e);var n,r=this.recognizers,i=t.curRecognizer;(!i||i&&i.state&B)&&(i=t.curRecognizer=null);for(var a=0;a<r.length;)n=r[a],t.stopped!==jt&&(!i||n==i||n.canRecognizeWith(i))?n.recognize(e):n.reset(),!i&&n.state&(mt|z|ht)&&(i=t.curRecognizer=n),a++}},get:function(e){if(e instanceof vt)return e;for(var t=this.recognizers,n=0;n<t.length;n++)if(t[n].options.event==e)return t[n];return null},add:function(e){if(d(e,`add`,this))return this;var t=this.get(e.options.event);return t&&this.remove(t),this.recognizers.push(e),e.manager=this,this.touchAction.update(),e},remove:function(e){if(d(e,`remove`,this))return this;if(e=this.get(e),e){var t=this.recognizers,n=E(t,e);n!==-1&&(t.splice(n,1),this.touchAction.update())}return this},on:function(e,t){if(e!==r&&t!==r){var n=this.handlers;return f(T(e),function(e){n[e]=n[e]||[],n[e].push(t)}),this}},off:function(e,t){if(e!==r){var n=this.handlers;return f(T(e),function(e){t?n[e]&&n[e].splice(E(n[e],t),1):delete n[e]}),this}},emit:function(e,t){this.options.domEvents&&Nt(e,t);var n=this.handlers[e]&&this.handlers[e].slice();if(!(!n||!n.length)){t.type=e,t.preventDefault=function(){t.srcEvent.preventDefault()};for(var r=0;r<n.length;)n[r](t),r++}},destroy:function(){this.element&&Mt(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}};function Mt(e,t){var n=e.element;if(n.style){var r;f(e.options.cssProps,function(i,a){r=k(n.style,a),t?(e.oldCssProps[r]=n.style[r],n.style[r]=i):n.style[r]=e.oldCssProps[r]||``}),t||(e.oldCssProps={})}}function Nt(e,n){var r=t.createEvent(`Event`);r.initEvent(e,!0,!0),r.gesture=n,n.target.dispatchEvent(r)}return m(kt,{INPUT_START:F,INPUT_MOVE:se,INPUT_END:I,INPUT_CANCEL:ce,STATE_POSSIBLE:pt,STATE_BEGAN:mt,STATE_CHANGED:z,STATE_ENDED:ht,STATE_RECOGNIZED:B,STATE_CANCELLED:gt,STATE_FAILED:_t,DIRECTION_NONE:le,DIRECTION_LEFT:ue,DIRECTION_RIGHT:de,DIRECTION_UP:fe,DIRECTION_DOWN:pe,DIRECTION_HORIZONTAL:me,DIRECTION_VERTICAL:he,DIRECTION_ALL:ge,Manager:V,Input:ye,TouchAction:ut,TouchInput:qe,MouseInput:Fe,PointerEventInput:ze,TouchMouseInput:Ze,SingleTouchInput:Ue,Recognizer:vt,AttrRecognizer:St,Tap:Ot,Pan:Ct,Swipe:Dt,Pinch:wt,Rotate:Et,Press:Tt,on:x,off:S,each:f,merge:g,extend:h,assign:m,inherit:_,bindFn:v,prefixed:k}),kt})(typeof window<`u`?window:{},typeof document<`u`?document:{},`Hammer`),Uh=class e extends cn{static parseArgs(t){return t instanceof e?t:Object.assign({},t)}static initAnimationEndState(e){var t,n,r,i,a,o,s,c;let l=this.parseArgs(e),{state:u,currentState:d}=l.initial,f=typeof u.panoIndex==`number`?{workCode:(r=(t=u.workCode)==null?(n=l.works[0])==null?void 0:n.workCode:t)==null?``:r,panoIndex:u.panoIndex}:{workCode:d.workCode,panoIndex:d.panoIndex};return Object.assign(Object.assign({},f),{mode:``,longitude:(i=u.longitude)==null?d.longitude:i,latitude:(a=u.latitude)==null?d.latitude:a,fov:(o=u.fov)==null?d.fov:o,offset:(s=u.offset)==null?d.offset:s,distance:(c=u.distance)==null?d.distance:c})}constructor(t){var n,r,i;super();let a=e.parseArgs(t);this.mode=``,this.pending=new Set,this.userAction=a.initial.userAction,this.destroyed=!1,this.fiveId=a.fiveId,this.scene=a.scene,this.modelScene=a.modelScene,this.xrCustomObjectsScene=a.xrCustomObjectsScene,this.helper=a.helper,this.camera=a.camera,this.renderer=a.renderer,this.viewport=a.viewport,this.element=a.element,this.enableWheel=a.enableWheel,this.works=a.works,this.imageOptions=a.imageOptions,this.videoTexture=a.videoTexture,this.extraElements=a.extraElements,this.initial=a.initial,this.currentPano=typeof this.initial.state.panoIndex==`number`?{workCode:(i=(n=this.initial.state.workCode)==null?(r=a.works[0])==null?void 0:r.workCode:n)==null?``:i,panoIndex:this.initial.state.panoIndex}:{workCode:this.initial.currentState.workCode,panoIndex:this.initial.currentState.panoIndex},this.needsRender=!0,this.cameraMotion=new Z({longitude:{value:this.camera.pose.longitude,circle:[0,Math.PI*2]},latitude:this.camera.pose.latitude,fov:this.camera.pose.fov}),this.inMomentumMovement=null,this.eventUnbinds=[a.element].concat(a.extraElements||[]).map(e=>this.bindEvents(e)),this.initAnimationIsReady=!1,this.pending.add(`init-animation`),this.initAnimationReady=new Promise(e=>{ri.shared.add(()=>{this.initAnimation().then(()=>{this.initAnimationIsReady=!0,this.pending.delete(`init-animation`),e()})},!0,0)})}updateConfiguration(e){return!0}destroy(){var e;this.stopMomentumMovement(),this.destroyed=!0,this.off(),this.cameraMotion.dispose();for(let e of this.eventUnbinds)e();this.panState=void 0,(e=this.pressState)==null||e.stop(),this.pressState=void 0}isReady(){return this.inMomentumMovement===null&&this.pending.size===0&&this.cameraMotion.ended===!0}bindExtraElement(e){for(let t of this.eventUnbinds)if(t.element===e)return;this.eventUnbinds.push(this.bindEvents(e))}unbindExtraElement(e){let t=[];for(let n of this.eventUnbinds)n.element===e?n():t.push(n);this.eventUnbinds=t}updateModel(e){this.needsRender=!0}updateWork(e,t,n,r){return this.works=e,this.userAction=r,!1}updateTime(e,t,...n){if(this.destroyed)return;let r={};this.cameraMotion.ended&&(this.cameraMotion.update(e),r.longitude=this.cameraMotion.value.longitude,r.latitude=this.cameraMotion.value.latitude,r.fov=this.cameraMotion.value.fov),Ph(r)&&this.setCamera(r)}render(){return!1}updateCamera(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r={};return e.longitude!==void 0&&(r.longitude=e.longitude),e.latitude!==void 0&&(r.latitude=e.latitude),e.fov!==void 0&&(r.fov=e.fov),this.cameraMotion.set(r,t).catch(q)})}updateCameraWithKeyframes(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r=[];for(let t of e)r.push({key:t.key,progress:t.progress,value:{longitude:t.value.longitude,latitude:t.value.latitude,fov:t.value.fov}});return this.cameraMotion.setKeyframes(r,t)})}getTargetState(){let e=this.cameraMotion.getKeyFrameSegment(U())[1];return Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:e.value.longitude,latitude:e.value.latitude,fov:e.value.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance})}initAnimation(){let{state:t,currentState:n,duration:r,userAction:i}=this.initial,a=e.initAnimationEndState(this);return this.userAction=i,this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:a,userAction:this.userAction})),this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:a,userAction:this.userAction})),Promise.resolve()}setCamera(e={}){var t,n,r,i,a;let o=(t=e.longitude)==null?this.camera.pose.longitude:t,s=(n=e.latitude)==null?this.camera.pose.latitude:n,c=(r=e.fov)==null?this.camera.pose.fov:r,l=(i=e.distance)==null?this.camera.pose.distance:i,u=(a=e.offset)==null?this.camera.pose.offset:a,d=yh(o,this.camera.pose.longitude,Math.PI*2)||yh(s,this.camera.pose.latitude),f=yh(c,this.camera.pose.fov),p=yh(l,this.camera.pose.distance),m=xh(u,this.camera.pose.offset);(f||d||m||p)&&(this.camera.setFromPose({longitude:o,latitude:s,fov:c,distance:l,offset:u}),this.emit(`camera.update`,$(`camera.update`,{userAction:this.userAction,state:Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:o,latitude:s,fov:c,offset:u,distance:l})})),this.needsRender=!0)}stopMomentumMovement(){if(this.inMomentumMovement&&this.inMomentumMovement.event&&!this.inMomentumMovement.event.defaultPrevented&&!this.inMomentumMovement.event.isFinal){let e=$(`gesture.momentum`,Object.assign(Object.assign({},this.inMomentumMovement.event),{isFirst:!1,isFinal:!0}));this.emit(`gesture.create`,e),this.emit(`gesture.momentum`,e)}this.inMomentumMovement=null}onPanGesture(e){this.stopMomentumMovement(),this.emit(`gesture.pan`,e)}onTapGesture(e){this.stopMomentumMovement(),this.emit(`gesture.tap`,e)}onDblTapGesture(e){this.stopMomentumMovement(),this.emit(`gesture.dbltap`,e),!e.defaultPrevented&&(e.type=`gesture.tap`,this.onTapGesture(e))}onPressGesture(e){this.stopMomentumMovement(),this.emit(`gesture.press`,e)}onPinchGesture(e){this.stopMomentumMovement(),this.emit(`gesture.pinch`,e)}onMouseWheel(e){this.stopMomentumMovement(),this.emit(`gesture.mousewheel`,e)}onMouseMove(e){this.stopMomentumMovement(),this.emit(`gesture.mousemove`,e)}relativeClientPosition(e){let{top:t,left:n,width:r,height:i}=this.element.getBoundingClientRect();return n+=r*this.viewport.left,t+=i*(1-this.viewport.bottom-this.viewport.height),r*=this.viewport.width,i*=this.viewport.height,new c.Vector2((e.x-n)/r*2-1,-(e.y-t)/i*2+1)}createRaycasterFromCamera(e,t){let n=new c.Raycaster;return n.params.Points={threshold:.1},n.firstHitOnly=!0,n.near=t.near,n.far=t.far,n.setFromCamera(e,this.camera),n}bindEvents(e){let t=e=>{let t=this.relativeClientPosition(e);return!(Math.abs(t.x)>1||Math.abs(t.y)>1)},n=e=>({button:`button`in e?e.button:0,buttons:`buttons`in e?e.buttons:0,shiftKey:`shiftKey`in e?e.shiftKey:!1,ctrlKey:`ctrlKey`in e?e.ctrlKey:!1,altKey:`altKey`in e?e.altKey:!1,metaKey:`metaKey`in e?e.metaKey:!1}),r=new Hh.Manager(e),i=e=>e.session.firstInput||null,a=new Hh.Pan({threshold:10,pointers:0}),o=new Hh.Tap({interval:410}),s=new Hh.Pinch({threshold:0,pointers:2});r.add([a,o,s]),r.on(`panstart pan`,e=>{let a=n(e.srcEvent),o=i(r);if(o&&!t(o.center))return;let s=$(`gesture.pan`,{target:e.target,pointerType:e.pointerType,srcEvent:e.srcEvent,pointers:e.pointers.map(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})}),isFirst:e.isFirst||e.type==`panstart`,isFinal:e.isFinal,scale:e.scale,center:(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})})(e.center),velocityX:e.velocityX,velocityY:e.velocityY,overallVelocityX:e.overallVelocityX,overallVelocityY:e.overallVelocityY,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,s),this.onPanGesture(s),v()}),r.on(`tap`,e=>{let a=n(e.srcEvent);if(e.pointerType===`mouse`&&a.button!==0)return;let o=i(r);if(o&&!t(o.center))return;let s=$(`gesture.tap`,{target:e.target,pointerType:e.pointerType,srcEvent:e.srcEvent,pointers:e.pointers.map(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})}),isFirst:!0,isFinal:!0,scale:e.scale,center:(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})})(e.center),velocityX:e.velocityX,velocityY:e.velocityY,overallVelocityX:e.overallVelocityX,overallVelocityY:e.overallVelocityY,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,s),this.onTapGesture(s),v()}),r.on(`pinchstart pinch pinchend`,e=>{let a=n(e.srcEvent),o=i(r);if(o&&!t(o.center))return;let s=$(`gesture.pinch`,{target:e.target,pointerType:e.pointerType,srcEvent:e.srcEvent,pointers:e.pointers.map(e=>{var t;let n=this.relativeClientPosition(e),r=new c.Raycaster;return r.params.Points={threshold:.1},r.setFromCamera(n,this.camera),Object.assign(Object.assign({x:e.x,y:e.y,delta:(t=e.delta)==null?0:t},a),{coords:n,raycaster:r})}),isFirst:e.type===`pinchstart`,isFinal:e.type===`pinchend`,scale:e.scale,center:(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})})(e.center),velocityX:e.velocityX,velocityY:e.velocityY,overallVelocityX:e.overallVelocityX,overallVelocityY:e.overallVelocityY,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,s),this.onPinchGesture(s),v()}),r.on(`dbltap`,e=>{let a=n(e.srcEvent);if(e.pointerType===`mouse`&&a.button!==0)return;let o=i(r);if(o&&!t(o.center))return;let s=$(`gesture.dbltap`,{target:e.target,pointerType:e.pointerType,srcEvent:e.srcEvent,pointers:e.pointers.map(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})}),isFirst:!0,isFinal:!0,scale:e.scale,center:(e=>{let t=this.relativeClientPosition(e),n=this.createRaycasterFromCamera(t,this.camera);return Object.assign(Object.assign({x:e.x,y:e.y,delta:0},a),{coords:t,raycaster:n})})(e.center),velocityX:e.velocityX,velocityY:e.velocityY,overallVelocityX:e.overallVelocityX,overallVelocityY:e.overallVelocityY,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,s),this.onDblTapGesture(s),v()});let l=null,u=null,d=(e,t,r)=>{let i={x:r.clientX,y:r.clientY},a=this.relativeClientPosition(i),o=this.createRaycasterFromCamera(a,this.camera),s=Object.assign(Object.assign(Object.assign(Object.assign({},i),{coords:a,raycaster:o}),n(r)),{delta:0}),c=e===`pinchend`?t:t-r.deltaY/280;return $(`gesture.pinch`,{target:r.target,pointerType:`mouse`,srcEvent:r,pointers:[Object.assign({},s)],isFirst:e===`pinchstart`,isFinal:e===`pinchend`,scale:W(c,.1,10),center:Object.assign({},s),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))})},f=e=>{var r;if(t({x:e.clientX,y:e.clientY})){if(e.preventDefault(),e.ctrlKey){let t=(r=l==null?void 0:l.prevEvent.scale)==null?1:r,n=d(l?`pinch`:`pinchstart`,t,e);this.emit(`gesture.create`,n),l===null?l={firstEvent:n,prevEvent:n}:l.prevEvent=n,this.emit(`gesture.create`,n),this.onPinchGesture(n),u!==null&&window.clearTimeout(u),u=window.setTimeout(()=>{var t;u=null;let n=d(`pinchend`,(t=l==null?void 0:l.prevEvent.scale)==null?1:t,e);this.emit(`gesture.create`,n),l=null,this.onPinchGesture(n)},200)}else{let t=(Math.abs(e.deltaY)>Math.abs(e.deltaX)?e.deltaY:e.deltaX)/-60,r=this.mouseWheelState!==void 0,i={x:e.clientX,y:e.clientY},a=this.relativeClientPosition(i),o=this.createRaycasterFromCamera(a,this.camera),s=Object.assign(Object.assign(Object.assign(Object.assign({},i),{coords:a,raycaster:o}),n(e)),{delta:t}),c=$(`gesture.mousewheel`,{target:e.target,pointerType:`mouse`,srcEvent:e,pointers:[Object.assign({},s)],isFirst:r,isFinal:!1,scale:0,center:Object.assign({},s),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,c),this.onMouseWheel(c),this.mouseWheelState&&clearTimeout(this.mouseWheelState.timer),this.mouseWheelState={timer:setTimeout(()=>{this.mouseWheelState=void 0;let t=$(`gesture.mousewheel`,{target:e.target,pointerType:`mouse`,srcEvent:e,pointers:[Object.assign(Object.assign({},s),{delta:0})],isFirst:!1,isFinal:!0,scale:0,center:Object.assign(Object.assign({},s),{delta:0}),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,t),this.onMouseWheel(t)},100)}}v()}},p=e=>{if(Th)return;if(!t({x:e.clientX,y:e.clientY})){m();return}let r=!1;this.mouseMoveState||(r=!0);let i={x:e.clientX,y:e.clientY},a=this.relativeClientPosition(i),o=this.createRaycasterFromCamera(a,this.camera),s=Object.assign(Object.assign(Object.assign(Object.assign({},i),{coords:a,raycaster:o}),n(e)),{delta:0}),c=$(`gesture.mousemove`,{target:e.target,pointerType:`mouse`,srcEvent:e,pointers:[Object.assign({},s)],isFirst:r,isFinal:!1,scale:0,center:Object.assign({},s),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,c),this.mouseMoveState={timeStamp:U(),event:c},this.onMouseMove(c),this.pressState&&Math.abs(e.clientX-this.pressState.event.center.y)>10&&Math.abs(e.clientY-this.pressState.event.center.y)>10&&v()},m=()=>{if(this.mouseMoveState){let e=$(this.mouseMoveState.event.type,Object.assign(Object.assign({},this.mouseMoveState.event),{isFinal:!0}));this.emit(`gesture.create`,e),this.mouseMoveState=void 0,this.onMouseMove(e)}v()},h=e=>{if(!t(e.center)){v();return}let n=!1;this.pressState||(n=!0,this.pressState={event:e,timeStamp:U(),stop:q});let r=U()-this.pressState.timeStamp,i=$(this.pressState.event.type,Object.assign(Object.assign({},this.pressState.event),{isFirst:n,isFinal:!1,center:Object.assign(Object.assign({},this.pressState.event.center),{delta:r}),pointers:this.pressState.event.pointers.map(e=>Object.assign(Object.assign({},e),{delta:r}))}));this.emit(`gesture.create`,i),this.onPressGesture(i),this.pressState&&(this.pressState.stop=ri.shared.add(t=>{h(e)},!0,1))},g=e=>{if(v(),e.touches.length>1||e.changedTouches.length<=0)return;let t={x:e.changedTouches[0].clientX,y:e.changedTouches[0].clientY},r=this.relativeClientPosition(t),i=this.createRaycasterFromCamera(r,this.camera),a=Object.assign(Object.assign(Object.assign(Object.assign({},t),{coords:r,raycaster:i}),n(e)),{delta:0}),o=$(`gesture.press`,{target:e.target,pointerType:`touch`,srcEvent:e,pointers:[Object.assign({},a)],isFirst:!1,isFinal:!1,scale:0,center:a,velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,o),h(o)},_=e=>{v();let t={x:e.clientX,y:e.clientY},r=this.relativeClientPosition(t),i=this.createRaycasterFromCamera(r,this.camera),a=Object.assign(Object.assign(Object.assign(Object.assign({},t),{coords:r,raycaster:i}),n(e)),{delta:0}),o=$(`gesture.press`,{target:e.target,pointerType:`mouse`,srcEvent:e,pointers:[Object.assign({},a)],isFirst:!1,isFinal:!1,scale:0,center:a,velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))});this.emit(`gesture.create`,o),h(o)},v=()=>{var e;if(this.pressState){let t=U()-this.pressState.timeStamp,n=$(this.pressState.event.type,Object.assign(Object.assign({},this.pressState.event),{center:Object.assign(Object.assign({},this.pressState.event.center),{delta:t}),isFirst:!1,isFinal:!0,pointers:this.pressState.event.pointers.map(e=>Object.assign(Object.assign({},e),{delta:t}))}));this.emit(`gesture.create`,n),this.onPressGesture(n),(e=this.pressState)==null||e.stop(),this.pressState=void 0}},y=null,b=e=>{var t,r,i;let a=!1,o=!1;switch(e.type){case`gesturestart`:a=!0;break;case`gestureend`:o=!0;break;default:break}let s={x:(t=e.clientX)==null?0:t,y:(r=e.clientY)==null?0:r},c=this.relativeClientPosition(s),l=this.createRaycasterFromCamera(c,this.camera),u=Object.assign(Object.assign(Object.assign(Object.assign({},s),{coords:c,raycaster:l}),n(e)),{delta:0});return $(`gesture.pinch`,{target:e.target,pointerType:`mouse`,srcEvent:e,pointers:[Object.assign({},u)],isFirst:a,isFinal:o,scale:(i=e.scale)==null?1:i,center:Object.assign({},u),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:Object.assign(Object.assign({mode:this.mode},this.currentPano),jh(this.camera.pose))})},x=e=>{if(e.preventDefault(),Th)return;let n=b(e);this.emit(`gesture.create`,n),y={firstEvent:n};let r=y.firstEvent;r&&!t(r.center)||this.onPinchGesture(n)},S=e=>{if(e.preventDefault(),Th||!y)return;let n=y.firstEvent;if(n&&!t(n.center))return;let r=b(e);this.emit(`gesture.create`,r),this.onPinchGesture(r)},C=e=>{if(e.preventDefault(),Th||!y)return;let n=y.firstEvent;if(y=null,n&&!t(n.center))return;let r=b(e);this.emit(`gesture.create`,r),this.onPinchGesture(r)},w=t=>{if(t&&typeof t.preventDefault==`function`&&t.currentTarget===e&&t.preventDefault(),typeof getSelection==`function`){let e=getSelection();e&&e.focusNode&&(e.removeAllRanges&&e.removeAllRanges(),e.empty&&e.empty())}};return this.enableWheel&&e.addEventListener(`wheel`,f,{passive:!1}),e.addEventListener(`mousemove`,p,!1),e.addEventListener(`mouseout`,m,!1),e.addEventListener(`touchstart`,g,{passive:!0}),e.addEventListener(`touchend`,v,!1),e.addEventListener(`touchcancel`,v,!1),e.addEventListener(`mousedown`,_,!1),e.addEventListener(`mouseup`,v,!1),e.addEventListener(`gesturestart`,x,{passive:!1}),e.addEventListener(`gesturechange`,S,{passive:!1}),e.addEventListener(`gestureend`,C,{passive:!1}),e.addEventListener(`touchstart`,w,{passive:!1}),e.addEventListener(`contextmenu`,w,!1),Object.assign(()=>{r.destroy(),e.removeEventListener(`wheel`,f,!1),e.removeEventListener(`mousemove`,p,!1),e.removeEventListener(`mouseout`,m,!1),e.removeEventListener(`touchstart`,g,!1),e.removeEventListener(`touchend`,v,!1),e.removeEventListener(`touchcancel`,v,!1),e.removeEventListener(`mousedown`,_,!1),e.removeEventListener(`mouseup`,v,!1),e.removeEventListener(`gesturestart`,x,!1),e.removeEventListener(`gesturechange`,S,!1),e.removeEventListener(`gestureend`,C,!1),e.removeEventListener(`touchstart`,w,!1),e.removeEventListener(`contextmenu`,w,!1)},{element:e})}},Wh=new c.CircleBufferGeometry(.1,16),Gh=new c.ShaderMaterial({vertexShader:`
1498
1500
  varying vec2 vUv;
1499
1501
  #include <common>
1500
1502
  #include <logdepthbuf_pars_vertex>
@@ -1527,7 +1529,7 @@ void main() {
1527
1529
 
1528
1530
  gl_FragColor = vec4(gl_FragColor.rgb, gl_FragColor.a * outside * inside);
1529
1531
  }
1530
- `,side:c.DoubleSide,blending:c.CustomBlending,blendSrc:c.SrcAlphaFactor,blendDst:c.OneMinusSrcAlphaFactor,blendSrcAlpha:c.OneFactor,blendDstAlpha:c.OneMinusSrcAlphaFactor,depthWrite:!1,transparent:!0}),Kh=class extends c.Object3D{constructor(){super(),this.ringMesh=new c.Mesh(Wh,Gh),this.ringMesh.position.z=.01,this.ringMesh.renderOrder=9999999999,this.add(this.ringMesh)}dispose(){this.remove(this.ringMesh)}},qh=new c.Box3,Jh=new c.Vector3,Yh={defaultLongitude:Math.PI/4,defaultLatitude:Math.PI/4,defaultFov:80,maxFov:120,minFov:20,maxLatitude:Math.PI/2,minLatitude:-Math.PI/2,intersectMeshCreator:()=>new Kh},Xh=class e extends Uh{static distanceFromModel(e,t,n){let r=e.boundingBox,i=r.isEmpty()?10:Math.pow(Math.pow(r.max.x-r.min.x+1,2)+Math.pow(r.max.y-r.min.y+1,2)+Math.pow(r.max.z-r.min.z+1,2),1/2);i=isNaN(i)||!isFinite(i)?1:i;let a=i/2/Math.tan(Math.PI*t/360);return n<1&&(a/=n),isNaN(a)||!isFinite(a)?i:a}static parseArgs(t){var n,r,i,a,o,s,c,l;if(t instanceof e)return t;let u=super.parseArgs(t);return Object.assign(Object.assign({},u),{defaultLongitude:(n=t.defaultLongitude)==null?Yh.defaultLongitude:n,defaultLatitude:(r=t.defaultLatitude)==null?Yh.defaultLatitude:r,defaultFov:(i=t.defaultFov)==null?Yh.defaultFov:i,maxFov:(a=t.maxFov)==null?Yh.maxFov:a,minFov:(o=t.minFov)==null?Yh.minFov:o,maxLatitude:(s=t.maxLatitude)==null?Yh.maxLatitude:s,minLatitude:(c=t.minLatitude)==null?Yh.minLatitude:c,intersectMeshCreator:(l=t.intersectMeshCreator)==null?Yh.intersectMeshCreator:l})}static initAnimationEndState(t){var n,r,i,a,o,s,l;let u=this.parseArgs(t),{state:d,currentState:f}=t.initial,p=typeof d.panoIndex==`number`?{workCode:(i=(n=d.workCode)==null?(r=u.works[0])==null?void 0:r.workCode:n)==null?``:i,panoIndex:d.panoIndex}:{workCode:f.workCode,panoIndex:f.panoIndex},m=(a=d.fov)==null?u.defaultFov:a,h=(o=d.longitude)==null?Mh(f.mode)?f.longitude:u.defaultLongitude:o,g=W(typeof u.minLatitude==`function`?u.minLatitude(m):u.minLatitude,-Math.PI/2,Math.PI/2),_=W(typeof u.maxLatitude==`function`?u.maxLatitude(m):u.maxLatitude,-Math.PI/2,Math.PI/2),v=W((s=d.latitude)==null?f.mode===`Floorplan`?f.latitude:u.defaultLatitude:s,g,_),y=d.offset?d.offset.clone():t.modelScene.boundingBox.getCenter(new c.Vector3),b=(l=d.distance)==null?e.distanceFromModel(u.modelScene,u.defaultFov,u.camera.aspect):l;return Object.assign(Object.assign({},p),{mode:`Floorplan`,longitude:h,latitude:v,fov:m,offset:y,distance:b})}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`Floorplan`,this.defaultLongitude=n.defaultLongitude,this.defaultLatitude=n.defaultLatitude,this.defaultFov=n.defaultFov,this.maxFov=n.maxFov,this.minFov=n.minFov,this.maxLatitude=n.maxLatitude,this.minLatitude=n.minLatitude,this.locationMotion=new Z({x:this.camera.pose.offset.x,y:this.camera.pose.offset.y,z:this.camera.pose.offset.z,distance:this.camera.pose.distance}),this.modelAlphaMotion=new Z({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new Z({perspToOrtho:this.camera.perspToOrtho.x}),this.pendingTextureId=null,this.textureLoader=new hi,this.intersectMeshCreator=n.intersectMeshCreator,this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=`intersect`,this.intersectMesh.visible=!1,this.helper.add(this.intersectMesh)}updateConfiguration(e){if(super.updateConfiguration(e)===!1)return!1;if(e.defaultLongitude!==void 0&&this.defaultLongitude!==e.defaultLongitude&&(this.defaultLongitude=e.defaultLongitude),e.defaultLatitude!==void 0&&this.defaultLatitude!==e.defaultLatitude&&(this.defaultLatitude=e.defaultLatitude),e.defaultFov!==void 0&&this.defaultFov!==e.defaultFov&&(this.defaultFov=e.defaultFov),e.maxFov!==void 0&&this.maxFov!==e.maxFov&&(this.maxFov=e.maxFov),e.minFov!==void 0&&this.minFov!==e.minFov&&(this.minFov=e.minFov),e.maxLatitude!==void 0&&this.maxLatitude!==e.maxLatitude&&(this.maxLatitude=e.maxLatitude),e.minLatitude!==void 0&&this.minLatitude!==e.minLatitude&&(this.minLatitude=e.minLatitude),e.intersectMeshCreator!==void 0&&this.intersectMeshCreator!==e.intersectMeshCreator){this.intersectMeshCreator=e.intersectMeshCreator;let t=this.intersectMesh;this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=t.name,this.intersectMesh.visible=t.visible;let n=this.intersectMesh.parent;n&&n.add(this.intersectMesh),t.dispose()}return!0}destroy(){super.destroy(),this.pendingTextureId=null,this.locationMotion.dispose(),this.panState=void 0,this.intersectMesh.dispose(),this.helper.remove(this.intersectMesh)}isReady(){return this.locationMotion.ended===!1?!1:super.isReady()}updateWork(e,t,n,r){var i;return this.works=e,this.updateCamera(t,(i=n.duration)==null?0:i,r),!0}updateModel(t){super.updateModel(t);let n=t.boundingBox.getCenter(new c.Vector3),r=e.distanceFromModel(t,this.defaultFov,this.camera.aspect);this.updateCamera({offset:n,distance:r},0,!0)}updateCamera(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r={},i={};return e.distance!==void 0&&(r.distance=e.distance),e.offset!==void 0&&(r.x=e.offset.x,r.y=e.offset.y,r.z=e.offset.z),e.longitude!==void 0&&(i.longitude=e.longitude),e.latitude!==void 0&&(i.latitude=e.latitude),e.fov!==void 0&&(i.fov=e.fov),this.locationMotion.set(r,t).catch(q),this.cameraMotion.set(i,t).catch(q)})}updateCameraWithKeyframes(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r=[],i=[];for(let t of e)r.push({key:t.key,progress:t.progress,value:{distance:t.value.distance,x:t.value.offset.x,y:t.value.offset.x,z:t.value.offset.x}}),i.push({key:t.key,progress:t.progress,value:{longitude:t.value.longitude,latitude:t.value.latitude,fov:t.value.fov}});return this.locationMotion.setKeyframes(r,t).catch(q),this.cameraMotion.setKeyframes(e,t)})}updateTime(e,t,...n){if(this.destroyed)return;let r={},i={};if(this.modelAlphaMotion.ended||(this.modelAlphaMotion.update(e),r.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.modelScene.parameter.modelAlpha===0&&this.modelScene.parameter.progress!==1){let{pano0:e,pano1:t}=this.modelScene.parameter;e&&e.map!==(t==null?void 0:t.map)&&e.map.dispose(),r.progress=1,r.pano0=r.pano1=t}if(this.perspToOrthoMotion.ended||(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(W(this.perspToOrthoMotion.value.perspToOrtho,0,1))),this.locationMotion.ended||(this.locationMotion.update(e),i.distance=this.locationMotion.value.distance,i.offset=new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z)),this.cameraMotion.ended||(this.cameraMotion.update(e),i.longitude=this.cameraMotion.value.longitude,i.latitude=this.cameraMotion.value.latitude,i.fov=this.cameraMotion.value.fov),Ph(r)||this.modelScene.parameter.set(r),Ph(i)||this.setCamera(i),this.intersectMesh&&this.intersectMesh.parent){let e=W(this.camera.position.distanceTo(this.intersectMesh.position)*(2*Math.tan(.5*this.camera.fov/180*Math.PI))/5,.5);this.intersectMesh.scale.setScalar(e)}else this.intersectMesh.scale.setScalar(1)}getTargetState(){let e=this.cameraMotion.getKeyFrameSegment(U())[1],t=this.locationMotion.getKeyFrameSegment(U())[1];return Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:e.value.longitude,latitude:e.value.latitude,fov:e.value.fov,offset:new c.Vector3(t.value.x,t.value.y,t.value.z),distance:t.value.distance})}initAnimation(){return this.destroyed?Promise.resolve():new Promise(t=>{let{state:n,currentState:r,duration:i,userAction:a}=this.initial;this.userAction=a;let o=e.initAnimationEndState(this),s=mr(o,[`longitude`,`latitude`,`fov`]),c={x:o.offset.x,y:o.offset.y,z:o.offset.z,distance:o.distance};this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:o,userAction:this.userAction})),this.modelAlphaMotion.set({modelAlpha:1},i/3).catch(q),this.perspToOrthoMotion.set({perspToOrtho:0},i).catch(q),this.cameraMotion.set(s,i).catch(q),this.locationMotion.set(c,i).then(()=>{this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:o,userAction:this.userAction}))},e=>{let t=Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),jh(this.camera.pose));this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:t,userAction:this.userAction}))}).then(()=>{t()})})}updateRenderSize(e){this.needsRender=!0}getForwardObserverOrNot(e){let[t]=this.modelScene.intersectRaycaster(e);if(!t)return null;let n=[];for(let t of this.works){let r=this.modelScene.models.find(e=>e.work===t);if(!(!r||r.visible===!1)&&!(t.observers.length<=0)&&(qh.copy(t.observerBox).expandByScalar(10).applyMatrix4(t.transform),qh.containsPoint(e.ray.origin)||e.ray.intersectsBox(qh)))for(let e of t.observers)n.push(e)}let[r,i]=Nl(n,e=>Jh.copy(e.standingPosition).applyMatrix4(e.work.transform).distanceTo(t.point),!0);return r&&i<Math.max(r.standingPosition.distanceTo(this.camera.position)/5,10)?r:null}coordinatesForOffset(e){let t=this.renderer.getSize(new c.Vector2);return{longitude:-2*e.x/(t.x*this.viewport.width),latitude:2*e.y/(t.y*this.viewport.height)}}requestMomentumMovement(e,t,n,r){if(this.inMomentumMovement===null)return;r=Math.max(r,1);let i=Object.assign({},n),a={longitude:0,latitude:0};for(let e=0;e<r;e++)i.longitude*=.996,i.latitude*=.996*.998,a.longitude+=i.longitude,a.latitude+=i.latitude;let o=Bt(this.cameraMotion.value.longitude+a.longitude),s=this.cameraMotion.value.fov,c=W(typeof this.minLatitude==`function`?this.minLatitude(s):this.minLatitude,-Math.PI/2,Math.PI/2),l=W(typeof this.maxLatitude==`function`?this.maxLatitude(s):this.maxLatitude,-Math.PI/2,Math.PI/2),u=W(this.cameraMotion.value.latitude+a.latitude,c,l),d=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:o,latitude:u,fov:this.cameraMotion.value.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance}),f=!(i.longitude>1e-4||i.longitude<-1e-4||i.latitude>1e-4||i.latitude<-1e-4),p=$(`gesture.momentum`,Object.assign(Object.assign({},e),{isFirst:t,isFinal:f,state:d}));if(this.inMomentumMovement.event=p,this.emit(`gesture.momentum`,p),e.defaultPrevented){this.inMomentumMovement=null;return}this.inMomentumMovement&&(this.cameraMotion.set({longitude:o,latitude:u},0).catch(q),f?this.inMomentumMovement=null:ri.shared.add((t,n)=>{this.requestMomentumMovement(e,!1,i,n)},!0))}onPanGesture(e){this.userAction=e.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let t=this.panState,n=e.pointers.length;if(e.isFinal?this.panState=void 0:this.panState={pointerLength:n,x:e.center.x,y:e.center.y},t===void 0||t.pointerLength!==n)return;let r={x:e.center.x-t.x,y:e.center.y-t.y},i=this.relativeClientPosition(e.center),a=1,o=this.camera.pose.latitude;Math.abs(o)>Math.PI/6&&(a=o<0?i.y<0?-1:1:i.y>0?-1:1),r.x*=a;let s=this.coordinatesForOffset(r),c=Bt(this.cameraMotion.value.longitude+s.longitude),l=this.camera.pose.fov,u=W(typeof this.minLatitude==`function`?this.minLatitude(l):this.minLatitude,-Math.PI/2,Math.PI/2),d=W(typeof this.maxLatitude==`function`?this.maxLatitude(l):this.maxLatitude,-Math.PI/2,Math.PI/2),f=W(this.cameraMotion.value.latitude+s.latitude,u,d);this.camera.aspect<1&&Math.abs(e.overallVelocityX)>.2&&Math.atan2(Math.abs(e.overallVelocityY),Math.abs(e.overallVelocityX))<Math.PI/6.923&&(f=this.cameraMotion.value.latitude);let p=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:c,latitude:f,fov:l,offset:this.camera.pose.offset,distance:this.camera.pose.distance});if(e.state=p,this.emit(`gesture.pan`,e),!e.defaultPrevented&&(this.cameraMotion.set({longitude:p.longitude,latitude:p.latitude},0).catch(q),e.isFinal)){let t=e.velocityX*a,n=e.velocityY;this.inMomentumMovement={uuid:nn()},this.requestMomentumMovement(e,!0,this.coordinatesForOffset({x:t,y:n}),0)}}onPinchGesture(e){var t;if(!this.initAnimationIsReady)return;this.userAction=e.userAction,this.stopMomentumMovement();let n=(t=this.pinchState)==null?void 0:t.fov;if(e.isFirst){this.pinchState={x:e.center.x,y:e.center.y,fov:this.cameraMotion.value.fov};return}if(e.isFinal&&(this.panState=void 0,this.pinchState=void 0),n===void 0)return;let r=W(n/e.scale,this.minFov,this.maxFov),i=W(typeof this.minLatitude==`function`?this.minLatitude(r):this.minLatitude,-Math.PI/2,Math.PI/2),a=W(typeof this.maxLatitude==`function`?this.maxLatitude(r):this.maxLatitude,-Math.PI/2,Math.PI/2),o=W(this.cameraMotion.value.latitude,i,a);e.state.fov=r,e.state.latitude=o,this.emit(`gesture.pinch`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:r,latitude:o},0).catch(q),this.onPanGesture(e))}onMouseMove(e){var t,n;if(!this.intersectMesh.parent||this.panState)return;if(this.emit(`gesture.mousemove`,e),e.defaultPrevented){this.hideIntersectMesh();return}let r=e.center.raycaster;if(e.isFinal&&this.intersectMesh.parent&&this.intersectMesh.visible===!0){this.hideIntersectMesh();return}let[i]=this.modelScene.intersectRaycaster(r),a=$(`intersect.update`,{raycaster:r,intersection:i==null?null:i,object:this.intersectMesh});if(this.emit(`intersect.update`,a),a.defaultPrevented){this.hideIntersectMesh();return}if(i){let e=(n=(t=i.face)==null?void 0:t.normal)==null?new c.Vector3().copy(r.ray.direction).multiplyScalar(-1):n,a=e.clone(),o=i.point.clone();this.intersectMesh.position.copy(o);let s=o.clone().add(a);if(this.intersectMesh.lookAt(s),Math.abs(e.y)>.99){let e=this.camera.position.clone().sub(o);this.intersectMesh.rotation.z=-Math.atan2(e.z,e.x)}this.intersectMesh.visible=!0,this.needsRender=!0}else this.hideIntersectMesh()}onMouseWheel(e){if(!this.initAnimationIsReady)return;this.userAction=e.userAction,this.stopMomentumMovement();let{minFov:t,maxFov:n}=this,r=W(this.camera.fov-e.center.delta,t,n),i=W(typeof this.minLatitude==`function`?this.minLatitude(r):this.minLatitude,-Math.PI/2,Math.PI/2),a=W(typeof this.maxLatitude==`function`?this.maxLatitude(r):this.maxLatitude,-Math.PI/2,Math.PI/2),o=W(this.cameraMotion.value.latitude,i,a);e.state.fov=r,e.state.latitude=o,this.emit(`gesture.mousewheel`,e),!e.defaultPrevented&&this.cameraMotion.set({fov:r,latitude:o},0).catch(q)}onTapGesture(e){var t;this.userAction=e.userAction,this.stopMomentumMovement();let n=e.center.raycaster,r=this.getForwardObserverOrNot(n);if(!r)this.emit(`gesture.tap`,e);else{let n={longitude:this.camera.pose.longitude,latitude:0},i=Object.assign(Object.assign({},e.state),{mode:`Panorama`,workCode:r.work.workCode,panoIndex:r.panoIndex,longitude:n.longitude,latitude:n.latitude,offset:r?r.position.clone():new c.Vector3,distance:0});if(e.state=i,this.emit(`gesture.tap`,e),!e.defaultPrevented&&(this.emit(`pano.select`,$(`pano.select`,{prevPano:this.currentPano,state:i,userAction:e.userAction,options:n,progress:0,error:null})),r&&r.active)){let e=this.pendingTextureId=nn(),a=Q({panoIndex:r.panoIndex,workCode:r.work.workCode}),o={right:r.images.work.getURL(r.images.right),left:r.images.work.getURL(r.images.left),up:r.images.work.getURL(r.images.up),down:r.images.work.getURL(r.images.down),front:r.images.work.getURL(r.images.front),back:r.images.work.getURL(r.images.back)},s=this.imageOptions.transform,l=Object.assign({key:`pano.${a}`},mr(this.imageOptions,[`format`,`size`,`quality`,`sharpen`,`forceUseExifOrientation`,`mappings`])),u=`pano:`+pp([o,l,s]),d=this.modelScene.parameter,f;d.pano0&&d.pano0.map.name===u?f=d.pano0:d.pano1&&d.pano1.map.name===u&&(f=d.pano1),f?(d.pano0&&d.pano0.map!==f.map&&d.pano0.map.dispose(),d.pano1&&d.pano1.map!==f.map&&d.pano1.map!==((t=d.pano0)==null?void 0:t.map)&&d.pano1.map.dispose(),d.set({pano0:f,pano1:f}),this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,progress:0,state:i,options:n,error:null}))):this.textureLoader.loadCubeTexture(o,{imageURL:{transform:s,options:l},format:c.RGBFormat,viaAjax:!0,fetcher:_f(this.fiveId,r.work)},void 0,void 0,void 0,this.renderer).then(t=>{var o,s;let{body:l}=t;if(this.destroyed||this.pendingTextureId!==e){l.dispose();return}this.pendingTextureId=null,l.name=u;let f=Array.isArray(l.image)?l.image[0]:l.image,p=(o=f==null?void 0:f.width)==null?2048:o,m=new _m().formPixels(Vh(this.renderer,l,!0,pm).data),h={panoId:a,map:l,mapSize:p,mapHistogram:new c.Vector4().fromArray(m.toArray()),matrix:r.matrix.clone().premultiply(r.work.transform),zoom:1};d.pano0&&d.pano0.map.dispose(),d.pano1&&d.pano1.map!==((s=d.pano0)==null?void 0:s.map)&&d.pano1.map.dispose(),d.set({pano0:h,pano1:h}),this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,progress:0,state:i,options:n,error:null}))}).catch(t=>{this.destroyed||this.pendingTextureId!==e||(this.pendingTextureId=null)})}}}onDblTapGesture(e){this.userAction=e.userAction,this.stopMomentumMovement();let t=this.cameraMotion.value.fov,n=this.minFov-t<t-this.defaultFov?this.minFov:this.defaultFov;e.state.fov=n,this.emit(`gesture.dbltap`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:n},360).catch(q),this.hideIntersectMesh())}hideIntersectMesh(){this.intersectMesh.visible=!1,this.needsRender=!0}},Zh=Object.assign(Object.assign({},hr(Yh,[`defaultLongitude`,`defaultLatitude`,`maxLatitude`,`minLatitude`])),{defaultLongitude:0,defaultLatitude:Math.PI/2}),Qh=class e extends Xh{static parseArgs(t){var n,r;if(t instanceof e)return t;let i=Object.assign(Object.assign({},t),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2,defaultLongitude:(n=t.defaultLongitude)==null?Zh.defaultLongitude:n,defaultLatitude:(r=t.defaultLatitude)==null?Zh.defaultLatitude:r});return super.parseArgs(i)}static initAnimationEndState(e){var t,n;let r=this.parseArgs(e),i=super.initAnimationEndState(Object.assign(Object.assign({},r),{initial:Object.assign(Object.assign({},r.initial),{state:Object.assign(Object.assign({},r.initial.state),{longitude:(t=r.initial.state.longitude)==null?r.defaultLongitude:t,latitude:(n=r.initial.state.latitude)==null?r.defaultLatitude:n})})}));return Object.assign(Object.assign({},i),{mode:`Topview`})}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`Topview`}updateConfiguration(e){return super.updateConfiguration(Object.assign({},e))}updateModel(e){this.needsRender=!0;let t=this.modelScene.boundingBox.getCenter(new c.Vector3);this.locationMotion.set({x:t.x,y:t.y,z:t.z,distance:Xh.distanceFromModel(this.modelScene,this.defaultFov,this.camera.aspect)},0).catch(q),this.hideIntersectMesh()}updateCamera(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r={},i={};return e.distance!==void 0&&(r.distance=e.distance),e.offset!==void 0&&(r.x=e.offset.x,r.y=e.offset.y,r.z=e.offset.z),e.longitude!==void 0&&(i.longitude=e.longitude),e.latitude!==void 0&&(i.latitude=e.latitude),e.fov!==void 0&&(i.fov=e.fov),this.locationMotion.set(r,t).catch(q),this.cameraMotion.set(i,t).catch(q)})}updateCameraWithKeyframes(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r=[],i=[];for(let t of e)r.push({key:t.key,progress:t.progress,value:{distance:t.value.distance,x:t.value.offset.x,y:t.value.offset.y,z:t.value.offset.z}}),i.push({key:t.key,progress:t.progress,value:{longitude:t.value.longitude,latitude:t.value.latitude,fov:t.value.fov}});return this.locationMotion.setKeyframes(r,t).catch(q),this.cameraMotion.setKeyframes(e,t)})}initAnimation(){return this.destroyed?Promise.resolve():new Promise(t=>{let{state:n,currentState:r,duration:i,userAction:a}=this.initial;this.userAction=a;let o=e.initAnimationEndState(this),s={longitude:o.longitude,latitude:o.latitude,fov:o.fov},c={x:o.offset.x,y:o.offset.y,z:o.offset.z,distance:o.distance};this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:o,userAction:this.userAction})),this.modelAlphaMotion.set({modelAlpha:1},i/3).catch(q),this.perspToOrthoMotion.set({perspToOrtho:1},i).catch(q),this.cameraMotion.set(s,i).catch(q),this.locationMotion.set(c,i).then(()=>{this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:o,userAction:this.userAction}))},e=>{let t=Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),jh(this.camera.pose));this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:t,userAction:this.userAction}))}).then(()=>{t()})})}requestMomentumMovement(){this.inMomentumMovement=null}onPanGesture(e){this.userAction=e.userAction,this.stopMomentumMovement();let t=this.panState,n=e.pointers.length;if(e.isFinal?this.panState=void 0:this.panState={pointerLength:n,x:e.center.x,y:e.center.y},t===void 0||t.pointerLength!==n)return;let r={x:e.center.x-t.x,y:e.center.y-t.y},i=new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),a=this.locationMotion.value.distance;a*=Math.tan(this.cameraMotion.value.fov/2*Math.PI/180);let o=this.renderer.getSize(new c.Vector2),s=2*r.x*a/o.y,l=2*r.y*a/o.y,u=new c.Vector3;u.setFromMatrixColumn(this.camera.matrix,0),u.multiplyScalar(-s),i.add(u),u.setFromMatrixColumn(this.camera.matrix,1),u.multiplyScalar(l),i.add(u);let d=this.modelScene.boundingBox.getCenter(new c.Vector3),f=this.modelScene.boundingBox.getSize(new c.Vector3),p=Math.max(f.x,f.y,f.z)/2;i.clamp(d.clone().sub(new c.Vector3().setScalar(p)),d.clone().add(new c.Vector3().setScalar(p))),e.state=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:0,latitude:Math.PI/2,fov:this.cameraMotion.value.fov,offset:i,distance:this.locationMotion.value.distance}),this.emit(`gesture.pan`,e),!e.defaultPrevented&&this.locationMotion.set({x:i.x,y:i.y,z:i.z},0).catch(q)}onPinchGesture(e){var t;if(!this.initAnimationIsReady)return;this.userAction=e.userAction,this.stopMomentumMovement();let n=(t=this.pinchState)==null?void 0:t.fov;if(e.isFirst){this.pinchState={x:e.center.x,y:e.center.y,fov:this.cameraMotion.value.fov};return}if(e.isFinal&&(this.pinchState=void 0),n===void 0)return;let r=W(n/e.scale,this.minFov,this.maxFov);e.state.fov=r,this.emit(`gesture.pinch`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:r},0).catch(q),e.type=`gesture.pan`,this.onPanGesture(e))}onMouseWheel(e){if(!this.initAnimationIsReady)return;this.userAction=e.userAction,this.stopMomentumMovement();let t=W(this.cameraMotion.value.fov-e.center.delta,this.minFov,this.maxFov);e.state.fov=t,this.emit(`gesture.mousewheel`,e),!e.defaultPrevented&&this.cameraMotion.set({fov:t},0).catch(q)}},$h={defaultLatitude:0,defaultFov:90,maxFov:120,minFov:20,maxLatitude:e=>Math.PI/2-e/2/180*Math.PI,minLatitude:e=>-Math.PI/2+e/2/180*Math.PI,moveSpeed:3.6,intersectMeshCreator:()=>new Kh,aerialObserverMinHeight:5},eg=class e extends Uh{static parseArgs(t){var n,r,i,a,o,s,c,l,u;if(t instanceof e)return t;let d=super.parseArgs(t);return Object.assign(Object.assign({},d),{defaultLatitude:(n=t.defaultLatitude)==null?$h.defaultLatitude:n,defaultFov:(r=t.defaultFov)==null?$h.defaultFov:r,maxFov:(i=t.maxFov)==null?$h.maxFov:i,minFov:(a=t.minFov)==null?$h.minFov:a,maxLatitude:(o=t.maxLatitude)==null?$h.maxLatitude:o,minLatitude:(s=t.minLatitude)==null?$h.minLatitude:s,moveSpeed:(c=t.moveSpeed)==null?$h.moveSpeed:c,intersectMeshCreator:(l=t.intersectMeshCreator)==null?$h.intersectMeshCreator:l,aerialObserverMinHeight:(u=t.aerialObserverMinHeight)==null?$h.aerialObserverMinHeight:u})}static initAnimationEndState(e){var t,n,r,i,a,o;let s=this.parseArgs(e),l=s.works,{state:u,currentState:d}=e.initial,f=typeof u.panoIndex==`number`?{workCode:(r=(t=u.workCode)==null?(n=s.works[0])==null?void 0:n.workCode:t)==null?``:r,panoIndex:u.panoIndex}:{workCode:d.workCode,panoIndex:d.panoIndex},p=l.getObserver(f),m=W((i=u.fov)==null?Nh(d.mode)?d.fov:s.defaultFov:i,s.minFov,s.maxFov),h=(a=u.longitude)==null?d.longitude:a,g=W(typeof s.minLatitude==`function`?s.minLatitude(m):s.minLatitude,-Math.PI/2,Math.PI/2),_=W(typeof s.maxLatitude==`function`?s.maxLatitude(m):s.maxLatitude,-Math.PI/2,Math.PI/2),v=W((o=u.latitude)==null?Nh(d.mode)?d.latitude:s.defaultLatitude:o,g,_),y=new c.Vector3;return p&&y.copy(p.position).applyMatrix4(p.work.transform),{workCode:f.workCode,panoIndex:f.panoIndex,mode:`PanoramaLike`,longitude:h,latitude:v,fov:m,offset:y,distance:0}}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`PanoramaLike`,this.defaultLatitude=n.defaultLatitude,this.defaultFov=n.defaultFov,this.maxFov=n.maxFov,this.minFov=n.minFov,this.maxLatitude=n.maxLatitude,this.minLatitude=n.minLatitude,this.moveSpeed=n.moveSpeed,this.intersectMeshCreator=n.intersectMeshCreator,this.aerialObserverMinHeight=n.aerialObserverMinHeight,this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=`intersect`,this.intersectMesh.visible=!1,this.helper.add(this.intersectMesh)}updateConfiguration(e){if(super.updateConfiguration(e)===!1)return!1;if(e.defaultLatitude!==void 0&&this.defaultLatitude!==e.defaultLatitude&&(this.defaultLatitude=e.defaultLatitude),e.maxLatitude!==void 0&&this.maxLatitude!==e.maxLatitude&&(this.maxLatitude=e.maxLatitude),e.minLatitude!==void 0&&this.minLatitude!==e.minLatitude&&(this.minLatitude=e.minLatitude),e.defaultFov!==void 0&&this.defaultFov!==e.defaultFov&&(this.defaultFov=e.defaultFov),e.maxFov!==void 0&&this.maxFov!==e.maxFov&&(this.maxFov=e.maxFov),e.minFov!==void 0&&this.minFov!==e.minFov&&(this.minFov=e.minFov),e.moveSpeed!==void 0&&this.moveSpeed!==e.moveSpeed&&(this.moveSpeed=e.moveSpeed),e.intersectMeshCreator!==void 0&&this.intersectMeshCreator!==e.intersectMeshCreator){this.intersectMeshCreator=e.intersectMeshCreator;let t=this.intersectMesh;this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=t.name,this.intersectMesh.visible=t.visible;let n=this.intersectMesh.parent;n&&n.add(this.intersectMesh),t.dispose()}return e.aerialObserverMinHeight!==void 0&&this.aerialObserverMinHeight!==e.aerialObserverMinHeight&&(this.aerialObserverMinHeight=e.aerialObserverMinHeight),!0}destroy(){super.destroy(),this.intersectMesh&&(this.helper.remove(this.intersectMesh),this.intersectMesh.dispose()),this.panState=void 0}isReady(){return this.panState||this.pinchState?!1:super.isReady()}calculateMovingDuration(e,t){switch(typeof e){case`function`:return e(t,this.moveSpeed);case`number`:return e;case`string`:return Number(e);default:return W(t,2,5)/this.moveSpeed*1e3}}hideIntersectMesh(){this.intersectMesh.visible=!1,this.needsRender=!0}coordinatesForOffset(e){let t=this.cameraMotion.value.fov,n=this.camera.aspect,r=this.renderer.getSize(new c.Vector2);return{longitude:2*e.x/(r.x*this.viewport.width)*t/95*n,latitude:-2*e.y/(r.y*this.viewport.height)*t/95}}cameraBounce(){let{longitude:e,latitude:t,fov:n}=this.cameraMotion.value,r=[{progress:0,value:{longitude:e,latitude:t,fov:n}},{progress:.5,value:{longitude:e,latitude:t,fov:n*.98}},{progress:1,value:{longitude:e,latitude:t,fov:n}}];this.cameraMotion.setKeyframes(r,500).catch(q)}requestMomentumMovement(e,t,n,r){if(this.inMomentumMovement===null)return;r=Math.max(r,1);let i=Object.assign({},n),a={longitude:0,latitude:0};for(let e=0;e<r;e++)i.longitude*=.996,i.latitude*=.996*.99,a.longitude+=i.longitude,a.latitude+=i.latitude;let o=this.cameraMotion.value.fov,s=Bt(this.cameraMotion.value.longitude+a.longitude),c=W(typeof this.minLatitude==`function`?this.minLatitude(o):this.minLatitude,-Math.PI/2,Math.PI/2),l=W(typeof this.maxLatitude==`function`?this.maxLatitude(o):this.maxLatitude,-Math.PI/2,Math.PI/2),u=W(this.cameraMotion.value.latitude+a.latitude,c,l),d=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:s,latitude:u,fov:o,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance}),f=!(i.longitude>1e-4||i.longitude<-1e-4||i.latitude>1e-4||i.latitude<-1e-4),p=$(`gesture.momentum`,Object.assign(Object.assign({},e),{isFirst:t,isFinal:f,state:d}));if(this.inMomentumMovement.event=p,this.emit(`gesture.momentum`,p),e.defaultPrevented){this.inMomentumMovement=null;return}this.inMomentumMovement&&(this.cameraMotion.set({longitude:s,latitude:u},0).catch(q),f?this.inMomentumMovement=null:ri.shared.add((t,n)=>{this.requestMomentumMovement(e,!1,i,n)},!0))}onPanGesture(e){this.userAction=e.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let t=this.panState,n=e.pointers.length;if(e.isFinal?this.panState=void 0:this.panState={pointerLength:n,x:e.center.x,y:e.center.y},t===void 0||t.pointerLength!==n)return;let r={x:e.center.x-t.x,y:e.center.y-t.y},i=this.coordinatesForOffset(r),a=Bt(this.cameraMotion.value.longitude+i.longitude),o=this.cameraMotion.value.fov,s=W(typeof this.minLatitude==`function`?this.minLatitude(o):this.minLatitude,-Math.PI/2,Math.PI/2),c=W(typeof this.maxLatitude==`function`?this.maxLatitude(o):this.maxLatitude,-Math.PI/2,Math.PI/2),l=W(this.cameraMotion.value.latitude+i.latitude,s,c);this.camera.aspect<1&&Math.abs(e.overallVelocityX)>.2&&Math.atan2(Math.abs(e.overallVelocityY),Math.abs(e.overallVelocityX))<Math.PI/6.923&&(l=this.cameraMotion.value.latitude);let u=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:a,latitude:l,fov:o,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance});if(e.state=u,this.emit(`gesture.pan`,e),e.defaultPrevented)return;let d={longitude:u.longitude,latitude:u.latitude,fov:u.fov};if(this.cameraMotion.set(d,0).catch(q),e.isFinal){let t=e.velocityX,n=e.velocityY*.6;Math.abs(n)>.5&&Math.abs(t)<.5&&(t=0),this.inMomentumMovement={uuid:nn()},this.requestMomentumMovement(e,!0,this.coordinatesForOffset({x:t,y:n}),0)}}onPinchGesture(e){var t;this.userAction=e.userAction,this.stopMomentumMovement();let n=(t=this.pinchState)==null?void 0:t.fov,r=e.scale;if(e.isFirst){this.pinchState={x:e.center.x,y:e.center.y,fov:this.cameraMotion.value.fov};return}if(e.isFinal&&(this.pinchState=void 0),n===void 0)return;let i=W(n/r,this.minFov,this.maxFov),a=W(typeof this.minLatitude==`function`?this.minLatitude(i):this.minLatitude,-Math.PI/2,Math.PI/2),o=W(typeof this.maxLatitude==`function`?this.maxLatitude(i):this.maxLatitude,-Math.PI/2,Math.PI/2),s=W(this.cameraMotion.value.latitude,a,o);e.state.fov=i,e.state.latitude=s,this.emit(`gesture.pinch`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:i,latitude:s},0).catch(q),e.type=`gesture.pan`,this.onPanGesture(e))}onMouseWheel(e){this.userAction=e.userAction,this.stopMomentumMovement();let t=W(this.cameraMotion.value.fov-e.center.delta,this.minFov,this.maxFov),n=W(typeof this.minLatitude==`function`?this.minLatitude(t):this.minLatitude,-Math.PI/2,Math.PI/2),r=W(typeof this.maxLatitude==`function`?this.maxLatitude(t):this.maxLatitude,-Math.PI/2,Math.PI/2),i=W(this.cameraMotion.value.latitude,n,r);e.state.fov=t,e.state.latitude=i,this.emit(`gesture.mousewheel`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:t,latitude:i},0).catch(q),this.onMouseMove(e))}onMouseMove(e){var t,n;if(!this.intersectMesh.parent||this.panState||(this.emit(`gesture.mousemove`,e),e.defaultPrevented))return;let r=e.center.raycaster;if(e.isFinal&&this.intersectMesh.parent){this.hideIntersectMesh();return}r.floorIndex=-1;let[i]=this.modelScene.intersectRaycaster(r),a=$(`intersect.update`,{raycaster:r,intersection:i==null?null:i,object:this.intersectMesh});if(this.emit(`intersect.update`,a),a.defaultPrevented){this.hideIntersectMesh();return}if(i){let e=(n=(t=i.face)==null?void 0:t.normal)==null?new c.Vector3().copy(r.ray.direction).multiplyScalar(-1):n,a=e.clone(),o=i.point.clone();this.intersectMesh.position.copy(o);let s=o.clone().add(a);if(this.intersectMesh.lookAt(s),Math.abs(e.y)>.99){let e=this.camera.position.clone().sub(o);this.intersectMesh.rotation.z=-Math.atan2(e.z,e.x)}this.intersectMesh.visible=!0,this.needsRender=!0}else this.hideIntersectMesh()}onDblTapGesture(e){this.userAction=e.userAction,this.stopMomentumMovement();let t=this.cameraMotion.value.fov,n=2,r=this.works.getObserver(this.currentPano);if(r){let e=r.images.tiles;e&&e.length&&(n=Math.max(...e.map(e=>e.level)))}let i=Math.max(40-n*5,this.minFov,5),a=i-t<t-this.defaultFov?i:this.defaultFov;e.state.fov=a,this.emit(`gesture.dbltap`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:a},360).catch(q),this.hideIntersectMesh())}},tg=`data:video/mp4;base64,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`,ng;function rg(){return ng||(ng=new Promise(e=>{let t,n=document.createElement(`video`);n.muted=!0,n.src=tg,n.addEventListener(`timeupdate`,function r(){n.removeEventListener(`timeupdate`,r,!1),clearTimeout(t);let i=document.createElement(`canvas`);i.width=i.height=1;let a=i.getContext(`2d`);if(!a){e(!1);return}a.drawImage(n,0,0,1,1);let{data:o}=a.getImageData(0,0,1,1);o[3]>10?e(!0):e(!1)},!1),n.addEventListener(`canplay`,function e(){n.removeEventListener(`canplay`,e,!1),n.play()},!1),t=window.setTimeout(()=>e(!1),1e3)}))}var ig=[`right`,`left`,`up`,`down`,`front`,`back`];function ag(e,t,n,r){let i=new c.Box3;switch(e){case`up`:i.min.y=.5,i.max.y=.5,i.min.x=t-.5,i.max.x=t-.5+r,i.min.z=-n+.5-r,i.max.z=-n+.5;break;case`down`:i.min.y=-.5,i.max.y=-.5,i.min.x=t-.5,i.max.x=t-.5+r,i.min.z=n-.5,i.max.z=n-.5+r;break;case`left`:i.min.x=-.5,i.max.x=-.5,i.min.z=-t+.5-r,i.max.z=-t+.5,i.min.y=-n+.5-r,i.max.y=-n+.5;break;case`right`:i.min.x=.5,i.max.x=.5,i.min.z=t-.5,i.max.z=t-.5+r,i.min.y=-n+.5-r,i.max.y=-n+.5;break;case`front`:i.min.z=-.5,i.max.z=-.5,i.min.x=t-.5,i.max.x=t-.5+r,i.min.y=-n+.5-r,i.max.y=-n+.5;break;case`back`:i.min.z=.5,i.max.z=.5,i.min.x=-t+.5-r,i.max.x=-t+.5,i.min.y=-n+.5-r,i.max.y=-n+.5;break;default:break}return i.applyMatrix4(new c.Matrix4().makeRotationY(Math.PI))}var og=(e,t)=>{if(e.level>=t)return;let n=e.level+1,r=e.size/2,i=[new c.Vector2(e.position.x,e.position.y),new c.Vector2(e.position.x+r,e.position.y),new c.Vector2(e.position.x,e.position.y+r),new c.Vector2(e.position.x+r,e.position.y+r)];for(let a of i){let i={face:e.face,level:n,size:r,position:a,box:ag(e.face,a.x,a.y,r),parent:e,children:[]};e.children.push(i),og(i,t)}};function sg(e,t){let n={level:0,face:e,position:new c.Vector2(0,0),size:1,box:ag(e,0,0,1),parent:null,children:[]};return og(n,t),n}function cg(e){return{children:ig.map(t=>sg(t,e)),maxLevel:e}}function lg(e,t){for(let n of e.children)t(n)!==!1&&lg(n,t)}var ug,dg=new c.Vector3,fg=new c.Quaternion,pg=new c.Matrix4,mg=new c.Matrix4,hg=new c.Matrix4,gg=new c.Matrix4,_g=new c.Matrix4,vg=new c.Quaternion,yg=new c.Matrix4,bg=new c.Color(0,0,0),xg=0,Sg=new c.Color,Cg=[],wg=(ug=Math.SQRT1_2)==null?Math.sqrt(2):ug,Tg={up:new c.Quaternion(wg,0,0,wg),down:new c.Quaternion(-wg,0,0,wg),left:new c.Quaternion(0,wg,0,wg),right:new c.Quaternion(0,-wg,0,wg),front:new c.Quaternion(0,0,0,1),back:new c.Quaternion(0,1,0,0)},Eg=(()=>{let e=new Float32Array([-.5,-.5,0,.5,-.5,0,-.5,.5,0,.5,.5,0]),t=new Float32Array([0,0,1,0,0,1,1,1]),n=new Uint32Array([0,1,2,1,3,2]),r=new c.BufferGeometry;return r.setAttribute(`position`,new c.BufferAttribute(e,3)),r.setAttribute(`uv`,new c.BufferAttribute(t,2)),r.setIndex(new c.BufferAttribute(n,1)),r.computeBoundingBox(),r})(),Dg=`
1532
+ `,side:c.DoubleSide,blending:c.CustomBlending,blendSrc:c.SrcAlphaFactor,blendDst:c.OneMinusSrcAlphaFactor,blendSrcAlpha:c.OneFactor,blendDstAlpha:c.OneMinusSrcAlphaFactor,depthWrite:!1,transparent:!0}),Kh=class extends c.Object3D{constructor(){super(),this.ringMesh=new c.Mesh(Wh,Gh),this.ringMesh.position.z=.01,this.ringMesh.renderOrder=9999999999,this.add(this.ringMesh)}dispose(){this.remove(this.ringMesh)}},qh=new c.Box3,Jh=new c.Vector3,Yh={defaultLongitude:Math.PI/4,defaultLatitude:Math.PI/4,defaultFov:80,maxFov:120,minFov:20,maxLatitude:Math.PI/2,minLatitude:-Math.PI/2,intersectMeshCreator:()=>new Kh},Xh=class e extends Uh{static distanceFromModel(e,t,n){let r=e.boundingBox,i=r.isEmpty()?10:Math.pow(Math.pow(r.max.x-r.min.x+1,2)+Math.pow(r.max.y-r.min.y+1,2)+Math.pow(r.max.z-r.min.z+1,2),1/2);i=isNaN(i)||!isFinite(i)?1:i;let a=i/2/Math.tan(Math.PI*t/360);return n<1&&(a/=n),isNaN(a)||!isFinite(a)?i:a}static parseArgs(t){var n,r,i,a,o,s,c,l;if(t instanceof e)return t;let u=super.parseArgs(t);return Object.assign(Object.assign({},u),{defaultLongitude:(n=t.defaultLongitude)==null?Yh.defaultLongitude:n,defaultLatitude:(r=t.defaultLatitude)==null?Yh.defaultLatitude:r,defaultFov:(i=t.defaultFov)==null?Yh.defaultFov:i,maxFov:(a=t.maxFov)==null?Yh.maxFov:a,minFov:(o=t.minFov)==null?Yh.minFov:o,maxLatitude:(s=t.maxLatitude)==null?Yh.maxLatitude:s,minLatitude:(c=t.minLatitude)==null?Yh.minLatitude:c,intersectMeshCreator:(l=t.intersectMeshCreator)==null?Yh.intersectMeshCreator:l})}static initAnimationEndState(t){var n,r,i,a,o,s,l;let u=this.parseArgs(t),{state:d,currentState:f}=t.initial,p=typeof d.panoIndex==`number`?{workCode:(i=(n=d.workCode)==null?(r=u.works[0])==null?void 0:r.workCode:n)==null?``:i,panoIndex:d.panoIndex}:{workCode:f.workCode,panoIndex:f.panoIndex},m=(a=d.fov)==null?u.defaultFov:a,h=(o=d.longitude)==null?Mh(f.mode)?f.longitude:u.defaultLongitude:o,g=W(typeof u.minLatitude==`function`?u.minLatitude(m):u.minLatitude,-Math.PI/2,Math.PI/2),_=W(typeof u.maxLatitude==`function`?u.maxLatitude(m):u.maxLatitude,-Math.PI/2,Math.PI/2),v=W((s=d.latitude)==null?f.mode===`Floorplan`?f.latitude:u.defaultLatitude:s,g,_),y=d.offset?d.offset.clone():t.modelScene.boundingBox.getCenter(new c.Vector3),b=(l=d.distance)==null?e.distanceFromModel(u.modelScene,u.defaultFov,u.camera.aspect):l;return Object.assign(Object.assign({},p),{mode:`Floorplan`,longitude:h,latitude:v,fov:m,offset:y,distance:b})}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`Floorplan`,this.defaultLongitude=n.defaultLongitude,this.defaultLatitude=n.defaultLatitude,this.defaultFov=n.defaultFov,this.maxFov=n.maxFov,this.minFov=n.minFov,this.maxLatitude=n.maxLatitude,this.minLatitude=n.minLatitude,this.locationMotion=new Z({x:this.camera.pose.offset.x,y:this.camera.pose.offset.y,z:this.camera.pose.offset.z,distance:this.camera.pose.distance}),this.modelAlphaMotion=new Z({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new Z({perspToOrtho:this.camera.perspToOrtho.x}),this.pendingTextureId=null,this.textureLoader=new hi,this.intersectMeshCreator=n.intersectMeshCreator,this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=`intersect`,this.intersectMesh.visible=!1,this.helper.add(this.intersectMesh)}updateConfiguration(e){if(super.updateConfiguration(e)===!1)return!1;if(e.defaultLongitude!==void 0&&this.defaultLongitude!==e.defaultLongitude&&(this.defaultLongitude=e.defaultLongitude),e.defaultLatitude!==void 0&&this.defaultLatitude!==e.defaultLatitude&&(this.defaultLatitude=e.defaultLatitude),e.defaultFov!==void 0&&this.defaultFov!==e.defaultFov&&(this.defaultFov=e.defaultFov),e.maxFov!==void 0&&this.maxFov!==e.maxFov&&(this.maxFov=e.maxFov),e.minFov!==void 0&&this.minFov!==e.minFov&&(this.minFov=e.minFov),e.maxLatitude!==void 0&&this.maxLatitude!==e.maxLatitude&&(this.maxLatitude=e.maxLatitude),e.minLatitude!==void 0&&this.minLatitude!==e.minLatitude&&(this.minLatitude=e.minLatitude),e.intersectMeshCreator!==void 0&&this.intersectMeshCreator!==e.intersectMeshCreator){this.intersectMeshCreator=e.intersectMeshCreator;let t=this.intersectMesh;this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=t.name,this.intersectMesh.visible=t.visible;let n=this.intersectMesh.parent;n&&n.add(this.intersectMesh),t.dispose()}return!0}destroy(){super.destroy(),this.pendingTextureId=null,this.locationMotion.dispose(),this.panState=void 0,this.intersectMesh.dispose(),this.helper.remove(this.intersectMesh)}isReady(){return this.locationMotion.ended===!1?!1:super.isReady()}updateWork(e,t,n,r){var i;return this.works=e,this.updateCamera(t,(i=n.duration)==null?0:i,r),!0}updateModel(t){super.updateModel(t);let n=t.boundingBox.getCenter(new c.Vector3),r=e.distanceFromModel(t,this.defaultFov,this.camera.aspect);this.updateCamera({offset:n,distance:r},0,!0)}updateCamera(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r={},i={};return e.distance!==void 0&&(r.distance=e.distance),e.offset!==void 0&&(r.x=e.offset.x,r.y=e.offset.y,r.z=e.offset.z),e.longitude!==void 0&&(i.longitude=e.longitude),e.latitude!==void 0&&(i.latitude=e.latitude),e.fov!==void 0&&(i.fov=e.fov),this.locationMotion.set(r,t).catch(q),this.cameraMotion.set(i,t).catch(q)})}updateCameraWithKeyframes(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r=[],i=[];for(let t of e)r.push({key:t.key,progress:t.progress,value:{distance:t.value.distance,x:t.value.offset.x,y:t.value.offset.x,z:t.value.offset.x}}),i.push({key:t.key,progress:t.progress,value:{longitude:t.value.longitude,latitude:t.value.latitude,fov:t.value.fov}});return this.locationMotion.setKeyframes(r,t).catch(q),this.cameraMotion.setKeyframes(e,t)})}updateTime(e,t,...n){if(this.destroyed)return;let r={},i={};if(this.modelAlphaMotion.ended||(this.modelAlphaMotion.update(e),r.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.modelScene.parameter.modelAlpha===0&&this.modelScene.parameter.progress!==1){let{pano0:e,pano1:t}=this.modelScene.parameter;e&&e.map!==(t==null?void 0:t.map)&&e.map.dispose(),r.progress=1,r.pano0=r.pano1=t}if(this.perspToOrthoMotion.ended||(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(W(this.perspToOrthoMotion.value.perspToOrtho,0,1))),this.locationMotion.ended||(this.locationMotion.update(e),i.distance=this.locationMotion.value.distance,i.offset=new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z)),this.cameraMotion.ended||(this.cameraMotion.update(e),i.longitude=this.cameraMotion.value.longitude,i.latitude=this.cameraMotion.value.latitude,i.fov=this.cameraMotion.value.fov),Ph(r)||this.modelScene.parameter.set(r),Ph(i)||this.setCamera(i),this.intersectMesh&&this.intersectMesh.parent){let e=W(this.camera.position.distanceTo(this.intersectMesh.position)*(2*Math.tan(.5*this.camera.fov/180*Math.PI))/5,.5);this.intersectMesh.scale.setScalar(e)}else this.intersectMesh.scale.setScalar(1)}getTargetState(){let e=this.cameraMotion.getKeyFrameSegment(U())[1],t=this.locationMotion.getKeyFrameSegment(U())[1];return Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:e.value.longitude,latitude:e.value.latitude,fov:e.value.fov,offset:new c.Vector3(t.value.x,t.value.y,t.value.z),distance:t.value.distance})}initAnimation(){return this.destroyed?Promise.resolve():new Promise(t=>{let{state:n,currentState:r,duration:i,userAction:a}=this.initial;this.userAction=a;let o=e.initAnimationEndState(this),s=mr(o,[`longitude`,`latitude`,`fov`]),c={x:o.offset.x,y:o.offset.y,z:o.offset.z,distance:o.distance};this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:o,userAction:this.userAction})),this.modelAlphaMotion.set({modelAlpha:1},i/3).catch(q),this.perspToOrthoMotion.set({perspToOrtho:0},i).catch(q),this.cameraMotion.set(s,i).catch(q),this.locationMotion.set(c,i).then(()=>{this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:o,userAction:this.userAction}))},e=>{let t=Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),jh(this.camera.pose));this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:t,userAction:this.userAction}))}).then(()=>{t()})})}updateRenderSize(e){this.needsRender=!0}getForwardObserverOrNot(e){let[t]=this.modelScene.intersectRaycaster(e);if(!t)return null;let n=[];for(let t of this.works){let r=this.modelScene.models.find(e=>e.work===t);if(!(!r||r.visible===!1)&&!(t.observers.length<=0)&&(qh.copy(t.observerBox).expandByScalar(10).applyMatrix4(t.transform),qh.containsPoint(e.ray.origin)||e.ray.intersectsBox(qh)))for(let e of t.observers)n.push(e)}let[r,i]=Nl(n,e=>Jh.copy(e.standingPosition).applyMatrix4(e.work.transform).distanceTo(t.point),!0);return r&&i<Math.max(r.standingPosition.distanceTo(this.camera.position)/5,10)?r:null}coordinatesForOffset(e){let t=this.renderer.getSize(new c.Vector2);return{longitude:-2*e.x/(t.x*this.viewport.width),latitude:2*e.y/(t.y*this.viewport.height)}}requestMomentumMovement(e,t,n,r){if(this.inMomentumMovement===null)return;r=Math.max(r,1);let i=Object.assign({},n),a={longitude:0,latitude:0};for(let e=0;e<r;e++)i.longitude*=.996,i.latitude*=.996*.998,a.longitude+=i.longitude,a.latitude+=i.latitude;let o=Bt(this.cameraMotion.value.longitude+a.longitude),s=this.cameraMotion.value.fov,c=W(typeof this.minLatitude==`function`?this.minLatitude(s):this.minLatitude,-Math.PI/2,Math.PI/2),l=W(typeof this.maxLatitude==`function`?this.maxLatitude(s):this.maxLatitude,-Math.PI/2,Math.PI/2),u=W(this.cameraMotion.value.latitude+a.latitude,c,l),d=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:o,latitude:u,fov:this.cameraMotion.value.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance}),f=!(i.longitude>1e-4||i.longitude<-1e-4||i.latitude>1e-4||i.latitude<-1e-4),p=$(`gesture.momentum`,Object.assign(Object.assign({},e),{isFirst:t,isFinal:f,state:d}));if(this.emit(`gesture.create`,p),this.inMomentumMovement.event=p,this.emit(`gesture.momentum`,p),e.defaultPrevented){this.inMomentumMovement=null;return}this.inMomentumMovement&&(this.cameraMotion.set({longitude:o,latitude:u},0).catch(q),f?this.inMomentumMovement=null:ri.shared.add((t,n)=>{this.requestMomentumMovement(e,!1,i,n)},!0))}onPanGesture(e){this.userAction=e.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let t=this.panState,n=e.pointers.length;if(e.isFinal?this.panState=void 0:this.panState={pointerLength:n,defaultPrevented:e.defaultPrevented,x:e.center.x,y:e.center.y},t===void 0||t.pointerLength!==n){this.emit(`gesture.pan`,e);return}let r={x:e.center.x-t.x,y:e.center.y-t.y},i=this.relativeClientPosition(e.center),a=1,o=this.camera.pose.latitude;Math.abs(o)>Math.PI/6&&(a=o<0?i.y<0?-1:1:i.y>0?-1:1),r.x*=a;let s=this.coordinatesForOffset(r),c=Bt(this.cameraMotion.value.longitude+s.longitude),l=this.camera.pose.fov,u=W(typeof this.minLatitude==`function`?this.minLatitude(l):this.minLatitude,-Math.PI/2,Math.PI/2),d=W(typeof this.maxLatitude==`function`?this.maxLatitude(l):this.maxLatitude,-Math.PI/2,Math.PI/2),f=W(this.cameraMotion.value.latitude+s.latitude,u,d);this.camera.aspect<1&&Math.abs(e.overallVelocityX)>.2&&Math.atan2(Math.abs(e.overallVelocityY),Math.abs(e.overallVelocityX))<Math.PI/6.923&&(f=this.cameraMotion.value.latitude);let p=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:c,latitude:f,fov:l,offset:this.camera.pose.offset,distance:this.camera.pose.distance});if(e.state=p,this.emit(`gesture.pan`,e),e.defaultPrevented){this.panState&&(this.panState.defaultPrevented=e.defaultPrevented);return}if(!(e.isFinal&&t.defaultPrevented)&&(this.cameraMotion.set({longitude:p.longitude,latitude:p.latitude},0).catch(q),e.isFinal)){let t=e.velocityX*a,n=e.velocityY;this.inMomentumMovement={uuid:nn()},this.requestMomentumMovement(e,!0,this.coordinatesForOffset({x:t,y:n}),0)}}onPinchGesture(e){var t;if(!this.initAnimationIsReady)return;this.userAction=e.userAction,this.stopMomentumMovement();let n=(t=this.pinchState)==null?void 0:t.fov;if(e.isFirst){this.pinchState={x:e.center.x,y:e.center.y,fov:this.cameraMotion.value.fov};return}if(e.isFinal&&(this.panState=void 0,this.pinchState=void 0),n===void 0)return;let r=W(n/e.scale,this.minFov,this.maxFov),i=W(typeof this.minLatitude==`function`?this.minLatitude(r):this.minLatitude,-Math.PI/2,Math.PI/2),a=W(typeof this.maxLatitude==`function`?this.maxLatitude(r):this.maxLatitude,-Math.PI/2,Math.PI/2),o=W(this.cameraMotion.value.latitude,i,a);e.state.fov=r,e.state.latitude=o,this.emit(`gesture.pinch`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:r,latitude:o},0).catch(q),this.onPanGesture(e))}onMouseMove(e){var t,n;if(!this.intersectMesh.parent||this.panState)return;if(this.emit(`gesture.mousemove`,e),e.defaultPrevented){this.hideIntersectMesh();return}let r=e.center.raycaster;if(e.isFinal&&this.intersectMesh.parent&&this.intersectMesh.visible===!0){this.hideIntersectMesh();return}let[i]=this.modelScene.intersectRaycaster(r),a=$(`intersect.update`,{raycaster:r,intersection:i==null?null:i,object:this.intersectMesh});if(this.emit(`intersect.update`,a),a.defaultPrevented){this.hideIntersectMesh();return}if(i){let e=(n=(t=i.face)==null?void 0:t.normal)==null?new c.Vector3().copy(r.ray.direction).multiplyScalar(-1):n,a=e.clone(),o=i.point.clone();this.intersectMesh.position.copy(o);let s=o.clone().add(a);if(this.intersectMesh.lookAt(s),Math.abs(e.y)>.99){let e=this.camera.position.clone().sub(o);this.intersectMesh.rotation.z=-Math.atan2(e.z,e.x)}this.intersectMesh.visible=!0,this.needsRender=!0}else this.hideIntersectMesh()}onMouseWheel(e){if(!this.initAnimationIsReady)return;this.userAction=e.userAction,this.stopMomentumMovement();let{minFov:t,maxFov:n}=this,r=W(this.camera.fov-e.center.delta,t,n),i=W(typeof this.minLatitude==`function`?this.minLatitude(r):this.minLatitude,-Math.PI/2,Math.PI/2),a=W(typeof this.maxLatitude==`function`?this.maxLatitude(r):this.maxLatitude,-Math.PI/2,Math.PI/2),o=W(this.cameraMotion.value.latitude,i,a);e.state.fov=r,e.state.latitude=o,this.emit(`gesture.mousewheel`,e),!e.defaultPrevented&&this.cameraMotion.set({fov:r,latitude:o},0).catch(q)}onTapGesture(e){var t;this.userAction=e.userAction,this.stopMomentumMovement();let n=e.center.raycaster,r=this.getForwardObserverOrNot(n);if(!r)this.emit(`gesture.tap`,e);else{let n={longitude:this.camera.pose.longitude,latitude:0},i=Object.assign(Object.assign({},e.state),{mode:`Panorama`,workCode:r.work.workCode,panoIndex:r.panoIndex,longitude:n.longitude,latitude:n.latitude,offset:r?r.position.clone():new c.Vector3,distance:0});if(e.state=i,this.emit(`gesture.tap`,e),!e.defaultPrevented&&(this.emit(`pano.select`,$(`pano.select`,{prevPano:this.currentPano,state:i,userAction:e.userAction,options:n,progress:0,error:null})),r&&r.active)){let e=this.pendingTextureId=nn(),a=Q({panoIndex:r.panoIndex,workCode:r.work.workCode}),o={right:r.images.work.getURL(r.images.right),left:r.images.work.getURL(r.images.left),up:r.images.work.getURL(r.images.up),down:r.images.work.getURL(r.images.down),front:r.images.work.getURL(r.images.front),back:r.images.work.getURL(r.images.back)},s=this.imageOptions.transform,l=Object.assign({key:`pano.${a}`},mr(this.imageOptions,[`format`,`size`,`quality`,`sharpen`,`forceUseExifOrientation`,`mappings`])),u=`pano:`+pp([o,l,s]),d=this.modelScene.parameter,f;d.pano0&&d.pano0.map.name===u?f=d.pano0:d.pano1&&d.pano1.map.name===u&&(f=d.pano1),f?(d.pano0&&d.pano0.map!==f.map&&d.pano0.map.dispose(),d.pano1&&d.pano1.map!==f.map&&d.pano1.map!==((t=d.pano0)==null?void 0:t.map)&&d.pano1.map.dispose(),d.set({pano0:f,pano1:f}),this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,progress:0,state:i,options:n,error:null}))):this.textureLoader.loadCubeTexture(o,{imageURL:{transform:s,options:l},format:c.RGBFormat,viaAjax:!0,fetcher:_f(this.fiveId,r.work)},void 0,void 0,void 0,this.renderer).then(t=>{var o,s;let{body:l}=t;if(this.destroyed||this.pendingTextureId!==e){l.dispose();return}this.pendingTextureId=null,l.name=u;let f=Array.isArray(l.image)?l.image[0]:l.image,p=(o=f==null?void 0:f.width)==null?2048:o,m=new _m().formPixels(Vh(this.renderer,l,!0,pm).data),h={panoId:a,map:l,mapSize:p,mapHistogram:new c.Vector4().fromArray(m.toArray()),matrix:r.matrix.clone().premultiply(r.work.transform),zoom:1};d.pano0&&d.pano0.map.dispose(),d.pano1&&d.pano1.map!==((s=d.pano0)==null?void 0:s.map)&&d.pano1.map.dispose(),d.set({pano0:h,pano1:h}),this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,progress:0,state:i,options:n,error:null}))}).catch(t=>{this.destroyed||this.pendingTextureId!==e||(this.pendingTextureId=null)})}}}onDblTapGesture(e){this.userAction=e.userAction,this.stopMomentumMovement();let t=this.cameraMotion.value.fov,n=this.minFov-t<t-this.defaultFov?this.minFov:this.defaultFov;e.state.fov=n,this.emit(`gesture.dbltap`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:n},360).catch(q),this.hideIntersectMesh())}hideIntersectMesh(){this.intersectMesh.visible=!1,this.needsRender=!0}},Zh=Object.assign(Object.assign({},hr(Yh,[`defaultLongitude`,`defaultLatitude`,`maxLatitude`,`minLatitude`])),{defaultLongitude:0,defaultLatitude:Math.PI/2}),Qh=class e extends Xh{static parseArgs(t){var n,r;if(t instanceof e)return t;let i=Object.assign(Object.assign({},t),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2,defaultLongitude:(n=t.defaultLongitude)==null?Zh.defaultLongitude:n,defaultLatitude:(r=t.defaultLatitude)==null?Zh.defaultLatitude:r});return super.parseArgs(i)}static initAnimationEndState(e){var t,n;let r=this.parseArgs(e),i=super.initAnimationEndState(Object.assign(Object.assign({},r),{initial:Object.assign(Object.assign({},r.initial),{state:Object.assign(Object.assign({},r.initial.state),{longitude:(t=r.initial.state.longitude)==null?r.defaultLongitude:t,latitude:(n=r.initial.state.latitude)==null?r.defaultLatitude:n})})}));return Object.assign(Object.assign({},i),{mode:`Topview`})}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`Topview`}updateConfiguration(e){return super.updateConfiguration(Object.assign({},e))}updateModel(e){this.needsRender=!0;let t=this.modelScene.boundingBox.getCenter(new c.Vector3);this.locationMotion.set({x:t.x,y:t.y,z:t.z,distance:Xh.distanceFromModel(this.modelScene,this.defaultFov,this.camera.aspect)},0).catch(q),this.hideIntersectMesh()}updateCamera(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r={},i={};return e.distance!==void 0&&(r.distance=e.distance),e.offset!==void 0&&(r.x=e.offset.x,r.y=e.offset.y,r.z=e.offset.z),e.longitude!==void 0&&(i.longitude=e.longitude),e.latitude!==void 0&&(i.latitude=e.latitude),e.fov!==void 0&&(i.fov=e.fov),this.locationMotion.set(r,t).catch(q),this.cameraMotion.set(i,t).catch(q)})}updateCameraWithKeyframes(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r=[],i=[];for(let t of e)r.push({key:t.key,progress:t.progress,value:{distance:t.value.distance,x:t.value.offset.x,y:t.value.offset.y,z:t.value.offset.z}}),i.push({key:t.key,progress:t.progress,value:{longitude:t.value.longitude,latitude:t.value.latitude,fov:t.value.fov}});return this.locationMotion.setKeyframes(r,t).catch(q),this.cameraMotion.setKeyframes(e,t)})}initAnimation(){return this.destroyed?Promise.resolve():new Promise(t=>{let{state:n,currentState:r,duration:i,userAction:a}=this.initial;this.userAction=a;let o=e.initAnimationEndState(this),s={longitude:o.longitude,latitude:o.latitude,fov:o.fov},c={x:o.offset.x,y:o.offset.y,z:o.offset.z,distance:o.distance};this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:o,userAction:this.userAction})),this.modelAlphaMotion.set({modelAlpha:1},i/3).catch(q),this.perspToOrthoMotion.set({perspToOrtho:1},i).catch(q),this.cameraMotion.set(s,i).catch(q),this.locationMotion.set(c,i).then(()=>{this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:o,userAction:this.userAction}))},e=>{let t=Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),jh(this.camera.pose));this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:t,userAction:this.userAction}))}).then(()=>{t()})})}requestMomentumMovement(){this.inMomentumMovement=null}onPanGesture(e){this.userAction=e.userAction,this.stopMomentumMovement();let t=this.panState,n=e.pointers.length;if(e.isFinal?this.panState=void 0:this.panState={pointerLength:n,defaultPrevented:e.defaultPrevented,x:e.center.x,y:e.center.y},t===void 0||t.pointerLength!==n){this.emit(`gesture.pan`,e);return}let r={x:e.center.x-t.x,y:e.center.y-t.y},i=new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),a=this.locationMotion.value.distance;a*=Math.tan(this.cameraMotion.value.fov/2*Math.PI/180);let o=this.renderer.getSize(new c.Vector2),s=2*r.x*a/o.y,l=2*r.y*a/o.y,u=new c.Vector3;u.setFromMatrixColumn(this.camera.matrix,0),u.multiplyScalar(-s),i.add(u),u.setFromMatrixColumn(this.camera.matrix,1),u.multiplyScalar(l),i.add(u);let d=this.modelScene.boundingBox.getCenter(new c.Vector3),f=this.modelScene.boundingBox.getSize(new c.Vector3),p=Math.max(f.x,f.y,f.z)/2;if(i.clamp(d.clone().sub(new c.Vector3().setScalar(p)),d.clone().add(new c.Vector3().setScalar(p))),e.state=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:0,latitude:Math.PI/2,fov:this.cameraMotion.value.fov,offset:i,distance:this.locationMotion.value.distance}),this.emit(`gesture.pan`,e),e.defaultPrevented){this.panState&&(this.panState.defaultPrevented=e.defaultPrevented);return}e.isFinal&&t.defaultPrevented||this.locationMotion.set({x:i.x,y:i.y,z:i.z},0).catch(q)}onPinchGesture(e){var t;if(!this.initAnimationIsReady)return;this.userAction=e.userAction,this.stopMomentumMovement();let n=(t=this.pinchState)==null?void 0:t.fov;if(e.isFirst){this.pinchState={x:e.center.x,y:e.center.y,fov:this.cameraMotion.value.fov};return}if(e.isFinal&&(this.pinchState=void 0),n===void 0)return;let r=W(n/e.scale,this.minFov,this.maxFov);e.state.fov=r,this.emit(`gesture.pinch`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:r},0).catch(q),e.type=`gesture.pan`,this.onPanGesture(e))}onMouseWheel(e){if(!this.initAnimationIsReady)return;this.userAction=e.userAction,this.stopMomentumMovement();let t=W(this.cameraMotion.value.fov-e.center.delta,this.minFov,this.maxFov);e.state.fov=t,this.emit(`gesture.mousewheel`,e),!e.defaultPrevented&&this.cameraMotion.set({fov:t},0).catch(q)}},$h={defaultLatitude:0,defaultFov:90,maxFov:120,minFov:20,maxLatitude:e=>Math.PI/2-e/2/180*Math.PI,minLatitude:e=>-Math.PI/2+e/2/180*Math.PI,moveSpeed:3.6,intersectMeshCreator:()=>new Kh,aerialObserverMinHeight:5},eg=class e extends Uh{static parseArgs(t){var n,r,i,a,o,s,c,l,u;if(t instanceof e)return t;let d=super.parseArgs(t);return Object.assign(Object.assign({},d),{defaultLatitude:(n=t.defaultLatitude)==null?$h.defaultLatitude:n,defaultFov:(r=t.defaultFov)==null?$h.defaultFov:r,maxFov:(i=t.maxFov)==null?$h.maxFov:i,minFov:(a=t.minFov)==null?$h.minFov:a,maxLatitude:(o=t.maxLatitude)==null?$h.maxLatitude:o,minLatitude:(s=t.minLatitude)==null?$h.minLatitude:s,moveSpeed:(c=t.moveSpeed)==null?$h.moveSpeed:c,intersectMeshCreator:(l=t.intersectMeshCreator)==null?$h.intersectMeshCreator:l,aerialObserverMinHeight:(u=t.aerialObserverMinHeight)==null?$h.aerialObserverMinHeight:u})}static initAnimationEndState(e){var t,n,r,i,a,o;let s=this.parseArgs(e),l=s.works,{state:u,currentState:d}=e.initial,f=typeof u.panoIndex==`number`?{workCode:(r=(t=u.workCode)==null?(n=s.works[0])==null?void 0:n.workCode:t)==null?``:r,panoIndex:u.panoIndex}:{workCode:d.workCode,panoIndex:d.panoIndex},p=l.getObserver(f),m=W((i=u.fov)==null?Nh(d.mode)?d.fov:s.defaultFov:i,s.minFov,s.maxFov),h=(a=u.longitude)==null?d.longitude:a,g=W(typeof s.minLatitude==`function`?s.minLatitude(m):s.minLatitude,-Math.PI/2,Math.PI/2),_=W(typeof s.maxLatitude==`function`?s.maxLatitude(m):s.maxLatitude,-Math.PI/2,Math.PI/2),v=W((o=u.latitude)==null?Nh(d.mode)?d.latitude:s.defaultLatitude:o,g,_),y=new c.Vector3;return p&&y.copy(p.position).applyMatrix4(p.work.transform),{workCode:f.workCode,panoIndex:f.panoIndex,mode:`PanoramaLike`,longitude:h,latitude:v,fov:m,offset:y,distance:0}}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`PanoramaLike`,this.defaultLatitude=n.defaultLatitude,this.defaultFov=n.defaultFov,this.maxFov=n.maxFov,this.minFov=n.minFov,this.maxLatitude=n.maxLatitude,this.minLatitude=n.minLatitude,this.moveSpeed=n.moveSpeed,this.intersectMeshCreator=n.intersectMeshCreator,this.aerialObserverMinHeight=n.aerialObserverMinHeight,this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=`intersect`,this.intersectMesh.visible=!1,this.helper.add(this.intersectMesh)}updateConfiguration(e){if(super.updateConfiguration(e)===!1)return!1;if(e.defaultLatitude!==void 0&&this.defaultLatitude!==e.defaultLatitude&&(this.defaultLatitude=e.defaultLatitude),e.maxLatitude!==void 0&&this.maxLatitude!==e.maxLatitude&&(this.maxLatitude=e.maxLatitude),e.minLatitude!==void 0&&this.minLatitude!==e.minLatitude&&(this.minLatitude=e.minLatitude),e.defaultFov!==void 0&&this.defaultFov!==e.defaultFov&&(this.defaultFov=e.defaultFov),e.maxFov!==void 0&&this.maxFov!==e.maxFov&&(this.maxFov=e.maxFov),e.minFov!==void 0&&this.minFov!==e.minFov&&(this.minFov=e.minFov),e.moveSpeed!==void 0&&this.moveSpeed!==e.moveSpeed&&(this.moveSpeed=e.moveSpeed),e.intersectMeshCreator!==void 0&&this.intersectMeshCreator!==e.intersectMeshCreator){this.intersectMeshCreator=e.intersectMeshCreator;let t=this.intersectMesh;this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=t.name,this.intersectMesh.visible=t.visible;let n=this.intersectMesh.parent;n&&n.add(this.intersectMesh),t.dispose()}return e.aerialObserverMinHeight!==void 0&&this.aerialObserverMinHeight!==e.aerialObserverMinHeight&&(this.aerialObserverMinHeight=e.aerialObserverMinHeight),!0}destroy(){super.destroy(),this.intersectMesh&&(this.helper.remove(this.intersectMesh),this.intersectMesh.dispose()),this.panState=void 0}isReady(){return this.panState||this.pinchState?!1:super.isReady()}calculateMovingDuration(e,t){switch(typeof e){case`function`:return e(t,this.moveSpeed);case`number`:return e;case`string`:return Number(e);default:return W(t,2,5)/this.moveSpeed*1e3}}hideIntersectMesh(){this.intersectMesh.visible=!1,this.needsRender=!0}coordinatesForOffset(e){let t=this.cameraMotion.value.fov,n=this.camera.aspect,r=this.renderer.getSize(new c.Vector2);return{longitude:2*e.x/(r.x*this.viewport.width)*t/95*n,latitude:-2*e.y/(r.y*this.viewport.height)*t/95}}cameraBounce(){let{longitude:e,latitude:t,fov:n}=this.cameraMotion.value,r=[{progress:0,value:{longitude:e,latitude:t,fov:n}},{progress:.5,value:{longitude:e,latitude:t,fov:n*.98}},{progress:1,value:{longitude:e,latitude:t,fov:n}}];this.cameraMotion.setKeyframes(r,500).catch(q)}requestMomentumMovement(e,t,n,r){if(this.inMomentumMovement===null)return;r=Math.max(r,1);let i=Object.assign({},n),a={longitude:0,latitude:0};for(let e=0;e<r;e++)i.longitude*=.996,i.latitude*=.996*.99,a.longitude+=i.longitude,a.latitude+=i.latitude;let o=this.cameraMotion.value.fov,s=Bt(this.cameraMotion.value.longitude+a.longitude),c=W(typeof this.minLatitude==`function`?this.minLatitude(o):this.minLatitude,-Math.PI/2,Math.PI/2),l=W(typeof this.maxLatitude==`function`?this.maxLatitude(o):this.maxLatitude,-Math.PI/2,Math.PI/2),u=W(this.cameraMotion.value.latitude+a.latitude,c,l),d=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:s,latitude:u,fov:o,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance}),f=!(i.longitude>1e-4||i.longitude<-1e-4||i.latitude>1e-4||i.latitude<-1e-4),p=$(`gesture.momentum`,Object.assign(Object.assign({},e),{isFirst:t,isFinal:f,state:d}));if(this.emit(`gesture.create`,p),this.inMomentumMovement.event=p,this.emit(`gesture.momentum`,p),e.defaultPrevented){this.inMomentumMovement=null;return}this.inMomentumMovement&&(this.cameraMotion.set({longitude:s,latitude:u},0).catch(q),f?this.inMomentumMovement=null:ri.shared.add((t,n)=>{this.requestMomentumMovement(e,!1,i,n)},!0))}onPanGesture(e){this.userAction=e.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let t=this.panState,n=e.pointers.length;if(e.isFinal?this.panState=void 0:this.panState={pointerLength:n,defaultPrevented:e.defaultPrevented,x:e.center.x,y:e.center.y},t===void 0||t.pointerLength!==n){this.emit(`gesture.pan`,e);return}let r={x:e.center.x-t.x,y:e.center.y-t.y},i=this.coordinatesForOffset(r),a=Bt(this.cameraMotion.value.longitude+i.longitude),o=this.cameraMotion.value.fov,s=W(typeof this.minLatitude==`function`?this.minLatitude(o):this.minLatitude,-Math.PI/2,Math.PI/2),c=W(typeof this.maxLatitude==`function`?this.maxLatitude(o):this.maxLatitude,-Math.PI/2,Math.PI/2),l=W(this.cameraMotion.value.latitude+i.latitude,s,c);this.camera.aspect<1&&Math.abs(e.overallVelocityX)>.2&&Math.atan2(Math.abs(e.overallVelocityY),Math.abs(e.overallVelocityX))<Math.PI/6.923&&(l=this.cameraMotion.value.latitude);let u=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:a,latitude:l,fov:o,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance});if(e.state=u,this.emit(`gesture.pan`,e),e.defaultPrevented){this.panState&&(this.panState.defaultPrevented=e.defaultPrevented);return}if(e.isFinal&&t.defaultPrevented)return;let d={longitude:u.longitude,latitude:u.latitude,fov:u.fov};if(this.cameraMotion.set(d,0).catch(q),e.isFinal){let t=e.velocityX,n=e.velocityY*.6;Math.abs(n)>.5&&Math.abs(t)<.5&&(t=0),this.inMomentumMovement={uuid:nn()},this.requestMomentumMovement(e,!0,this.coordinatesForOffset({x:t,y:n}),0)}}onPinchGesture(e){var t;this.userAction=e.userAction,this.stopMomentumMovement();let n=(t=this.pinchState)==null?void 0:t.fov,r=e.scale;if(e.isFirst){this.pinchState={x:e.center.x,y:e.center.y,fov:this.cameraMotion.value.fov};return}if(e.isFinal&&(this.pinchState=void 0),n===void 0)return;let i=W(n/r,this.minFov,this.maxFov),a=W(typeof this.minLatitude==`function`?this.minLatitude(i):this.minLatitude,-Math.PI/2,Math.PI/2),o=W(typeof this.maxLatitude==`function`?this.maxLatitude(i):this.maxLatitude,-Math.PI/2,Math.PI/2),s=W(this.cameraMotion.value.latitude,a,o);e.state.fov=i,e.state.latitude=s,this.emit(`gesture.pinch`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:i,latitude:s},0).catch(q),e.type=`gesture.pan`,this.onPanGesture(e))}onMouseWheel(e){this.userAction=e.userAction,this.stopMomentumMovement();let t=W(this.cameraMotion.value.fov-e.center.delta,this.minFov,this.maxFov),n=W(typeof this.minLatitude==`function`?this.minLatitude(t):this.minLatitude,-Math.PI/2,Math.PI/2),r=W(typeof this.maxLatitude==`function`?this.maxLatitude(t):this.maxLatitude,-Math.PI/2,Math.PI/2),i=W(this.cameraMotion.value.latitude,n,r);e.state.fov=t,e.state.latitude=i,this.emit(`gesture.mousewheel`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:t,latitude:i},0).catch(q),this.onMouseMove(e))}onMouseMove(e){var t,n;if(!this.intersectMesh.parent||this.panState||(this.emit(`gesture.mousemove`,e),e.defaultPrevented))return;let r=e.center.raycaster;if(e.isFinal&&this.intersectMesh.parent){this.hideIntersectMesh();return}r.floorIndex=-1;let[i]=this.modelScene.intersectRaycaster(r),a=$(`intersect.update`,{raycaster:r,intersection:i==null?null:i,object:this.intersectMesh});if(this.emit(`intersect.update`,a),a.defaultPrevented){this.hideIntersectMesh();return}if(i){let e=(n=(t=i.face)==null?void 0:t.normal)==null?new c.Vector3().copy(r.ray.direction).multiplyScalar(-1):n,a=e.clone(),o=i.point.clone();this.intersectMesh.position.copy(o);let s=o.clone().add(a);if(this.intersectMesh.lookAt(s),Math.abs(e.y)>.99){let e=this.camera.position.clone().sub(o);this.intersectMesh.rotation.z=-Math.atan2(e.z,e.x)}this.intersectMesh.visible=!0,this.needsRender=!0}else this.hideIntersectMesh()}onDblTapGesture(e){this.userAction=e.userAction,this.stopMomentumMovement();let t=this.cameraMotion.value.fov,n=2,r=this.works.getObserver(this.currentPano);if(r){let e=r.images.tiles;e&&e.length&&(n=Math.max(...e.map(e=>e.level)))}let i=Math.max(40-n*5,this.minFov,5),a=i-t<t-this.defaultFov?i:this.defaultFov;e.state.fov=a,this.emit(`gesture.dbltap`,e),!e.defaultPrevented&&(this.cameraMotion.set({fov:a},360).catch(q),this.hideIntersectMesh())}},tg=`data:video/mp4;base64,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`,ng;function rg(){return ng||(ng=new Promise(e=>{let t,n=document.createElement(`video`);n.muted=!0,n.src=tg,n.addEventListener(`timeupdate`,function r(){n.removeEventListener(`timeupdate`,r,!1),clearTimeout(t);let i=document.createElement(`canvas`);i.width=i.height=1;let a=i.getContext(`2d`);if(!a){e(!1);return}a.drawImage(n,0,0,1,1);let{data:o}=a.getImageData(0,0,1,1);o[3]>10?e(!0):e(!1)},!1),n.addEventListener(`canplay`,function e(){n.removeEventListener(`canplay`,e,!1),n.play()},!1),t=window.setTimeout(()=>e(!1),1e3)}))}var ig=[`right`,`left`,`up`,`down`,`front`,`back`];function ag(e,t,n,r){let i=new c.Box3;switch(e){case`up`:i.min.y=.5,i.max.y=.5,i.min.x=t-.5,i.max.x=t-.5+r,i.min.z=-n+.5-r,i.max.z=-n+.5;break;case`down`:i.min.y=-.5,i.max.y=-.5,i.min.x=t-.5,i.max.x=t-.5+r,i.min.z=n-.5,i.max.z=n-.5+r;break;case`left`:i.min.x=-.5,i.max.x=-.5,i.min.z=-t+.5-r,i.max.z=-t+.5,i.min.y=-n+.5-r,i.max.y=-n+.5;break;case`right`:i.min.x=.5,i.max.x=.5,i.min.z=t-.5,i.max.z=t-.5+r,i.min.y=-n+.5-r,i.max.y=-n+.5;break;case`front`:i.min.z=-.5,i.max.z=-.5,i.min.x=t-.5,i.max.x=t-.5+r,i.min.y=-n+.5-r,i.max.y=-n+.5;break;case`back`:i.min.z=.5,i.max.z=.5,i.min.x=-t+.5-r,i.max.x=-t+.5,i.min.y=-n+.5-r,i.max.y=-n+.5;break;default:break}return i.applyMatrix4(new c.Matrix4().makeRotationY(Math.PI))}var og=(e,t)=>{if(e.level>=t)return;let n=e.level+1,r=e.size/2,i=[new c.Vector2(e.position.x,e.position.y),new c.Vector2(e.position.x+r,e.position.y),new c.Vector2(e.position.x,e.position.y+r),new c.Vector2(e.position.x+r,e.position.y+r)];for(let a of i){let i={face:e.face,level:n,size:r,position:a,box:ag(e.face,a.x,a.y,r),parent:e,children:[]};e.children.push(i),og(i,t)}};function sg(e,t){let n={level:0,face:e,position:new c.Vector2(0,0),size:1,box:ag(e,0,0,1),parent:null,children:[]};return og(n,t),n}function cg(e){return{children:ig.map(t=>sg(t,e)),maxLevel:e}}function lg(e,t){for(let n of e.children)t(n)!==!1&&lg(n,t)}var ug,dg=new c.Vector3,fg=new c.Quaternion,pg=new c.Matrix4,mg=new c.Matrix4,hg=new c.Matrix4,gg=new c.Matrix4,_g=new c.Matrix4,vg=new c.Quaternion,yg=new c.Matrix4,bg=new c.Color(0,0,0),xg=0,Sg=new c.Color,Cg=[],wg=(ug=Math.SQRT1_2)==null?Math.sqrt(2):ug,Tg={up:new c.Quaternion(wg,0,0,wg),down:new c.Quaternion(-wg,0,0,wg),left:new c.Quaternion(0,wg,0,wg),right:new c.Quaternion(0,-wg,0,wg),front:new c.Quaternion(0,0,0,1),back:new c.Quaternion(0,1,0,0)},Eg=(()=>{let e=new Float32Array([-.5,-.5,0,.5,-.5,0,-.5,.5,0,.5,.5,0]),t=new Float32Array([0,0,1,0,0,1,1,1]),n=new Uint32Array([0,1,2,1,3,2]),r=new c.BufferGeometry;return r.setAttribute(`position`,new c.BufferAttribute(e,3)),r.setAttribute(`uv`,new c.BufferAttribute(t,2)),r.setIndex(new c.BufferAttribute(n,1)),r.computeBoundingBox(),r})(),Dg=`
1531
1533
  varying vec2 vUV;
1532
1534
  void main() {
1533
1535
  vUV = uv;
@@ -2035,7 +2037,7 @@ void main() {
2035
2037
 
2036
2038
  gl_FragColor = vec4(gl_FragColor.rgb, gl_FragColor.a * opacity * outside * inside);
2037
2039
  }
2038
- `,z_=class extends c.Object3D{constructor(){super(),this.progress=0,this.opacity=0,this.loading=!1,this.current=!1,this.disabled=!1,this.currentMotion=new Z({ringScale:1.1,ringOpacity:0,circleFade:0,circleOpacity:.85,circleScale:1}),this.opacityMotion=new Z({opacity:0}),this.loadingMotion=new Z({opacity:0}),this.disableMotion=new Z({opacity:0});let e={blending:c.CustomBlending,blendSrc:c.SrcAlphaFactor,blendDst:c.OneMinusSrcAlphaFactor,blendSrcAlpha:c.OneFactor,blendDstAlpha:c.OneMinusSrcAlphaFactor,depthWrite:!1,transparent:!0};this.hitTestMesh=new c.Mesh(P_,new c.MeshBasicMaterial(Object.assign(Object.assign({},e),{color:0,opacity:0}))),this.hitTestMesh.scale.set(1.5,1.5,1.5),this.ringMesh=new c.Mesh(P_,new c.ShaderMaterial(Object.assign(Object.assign({},e),{vertexShader:L_,fragmentShader:R_,uniforms:{opacity:{value:0}}}))),this.panoMesh=new c.Mesh(P_,new c.ShaderMaterial(Object.assign(Object.assign({},e),{vertexShader:F_,fragmentShader:I_,uniforms:{circleScale:{value:1.1},circleFade:{value:0},circleOpacity:{value:.5},loadingAngle:{value:0},loadingOpacity:{value:0},opacity:{value:0},disable:{value:0}}}))),this.add(this.hitTestMesh),this.add(this.ringMesh),this.add(this.panoMesh),this.renderOrder=1e4,this.needsRender=!0}setProgress(e){this.progress=e,this.setLoading(e>0)}setOpacity(e){this.opacity!==e&&(this.opacity=e=W(e,0,1),this.opacityMotion.set({opacity:e},30).catch(q))}setCurrent(e){if(this.current!==e){if(e)this.currentMotion.setKeyframes([{progress:0,value:{ringScale:2,ringOpacity:0,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.05,value:{ringScale:1,ringOpacity:1,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.15,value:{ringScale:1.2,ringOpacity:1,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.25,value:{ringScale:1.1,ringOpacity:1,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.8,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.85,circleScale:1}},{progress:.9,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.65,circleScale:.8}},{progress:.92,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.65,circleScale:.8}},{progress:1,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.85,circleScale:1.1}}],1500).catch(q);else{let e=[{progress:0,value:Object.assign({},this.currentMotion.value)},{progress:1,value:{ringScale:1.1,ringOpacity:0,circleFade:0,circleOpacity:.85,circleScale:1}}];this.currentMotion.setKeyframes(e,200).catch(q)}this.current=e}}setLoading(e){this.loading!==e&&(e?this.loadingMotion.setKeyframes([{progress:0,value:{opacity:0}},{progress:.3,value:{opacity:0}},{progress:1,value:{opacity:.8}}],500).catch(q):this.loadingMotion.set({opacity:0},0).catch(q),this.loading=e,this.disabled===!0&&this.setDisabled(!1),this.needsRender=!0)}setDisabled(e){this.disabled!==e&&(this.disabled=e,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({opacity:e?1:0},300).catch(q),this.needsRender=!0)}tap(){return Promise.resolve()}updateTime(e,t){this.opacityMotion.update(e),this.currentMotion.update(e),this.loadingMotion.update(e);let n=this.opacityMotion.value.opacity;this.visible=n!==0;let{ringScale:r,ringOpacity:i,circleFade:a,circleOpacity:o,circleScale:s}=this.currentMotion.value;this.ringMesh.scale.set(r,1,r),this.ringMesh.material.uniforms.opacity.value=i*n,this.panoMesh.material.uniforms.opacity.value=n,this.panoMesh.material.uniforms.circleOpacity.value=o,this.panoMesh.material.uniforms.circleScale.value=s,this.panoMesh.material.uniforms.circleFade.value=a,this.panoMesh.material.uniforms.loadingOpacity.value=this.loadingMotion.value.opacity,this.panoMesh.material.uniforms.disable.value=this.disableMotion.value.opacity,this.panoMesh.material.uniforms.loadingAngle.value=e/120%(Math.PI*2),this.needsRender=!0}dispose(){this.hitTestMesh.material.dispose(),this.ringMesh.material.dispose(),this.panoMesh.material.dispose()}},B_=1500,V_=Object.assign({},hr(Xg,[`maxLatitude`,`minLatitude`])),H_=class e extends Zg{static parseArgs(t){if(t instanceof e)return t;let n=Object.assign(Object.assign({},t),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2});return super.parseArgs(n)}static initAnimationEndState(e){let t=this.parseArgs(e),n=super.initAnimationEndState(t);return Object.assign(Object.assign({},n),{mode:`VRPanorama`})}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`VRPanorama`,this.cardboard=new T_(this.renderer);let r=N_();this.helperElement=r;let i=new Hh(r);this.element.parentNode&&(this.element.parentNode.insertBefore(r,this.element),this.updateHelperElementSize(),i.on(`tap`,()=>this.emit(`vr.requestExit`,$(`vr.requestExit`,{})))),this.destroyHelper=()=>{i.destroy(),r.parentNode&&r.parentNode.removeChild(r),this.helperElement=void 0}}updateConfiguration(e){return super.updateConfiguration(Object.assign(Object.assign({},e),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2}))}destroy(){super.destroy(),this.cardboard.dispose(),this.destroyHelper()}isReady(){return!1}updateRenderSize(){this.needsRender=!0}updateCamera(e,t,n){return Promise.resolve()}updateCameraWithKeyframes(e,t,n){return Promise.resolve()}updateTime(e,t,...n){var r,i,a,o,s,l;if(this.destroyed)return;this.updateHelperElementSize(),this.userAction=!0,this.needsRender=!0;let u={},d={},f=this.locationMotion.keyframes[0],p=this.locationMotion.keyframes[this.locationMotion.keyframes.length-1],[m,h]=this.locationMotion.getKeyFrameSegment(e),g=this.panoResourceFromLocationMotionKeyframe(m),_=this.panoResourceFromLocationMotionKeyframe(h),v=this.panoResourceFromLocationMotionKeyframe(f),y=this.panoResourceFromLocationMotionKeyframe(p),b=!1;if(this.modelAlphaMotion.ended===!1&&(this.modelAlphaMotion.update(e),u.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.perspToOrthoMotion.ended===!1&&(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(W(this.perspToOrthoMotion.value.perspToOrtho,0,1))),this.locationMotion.ended===!1){this.locationMotion.update(e);let t=this.locationMotion.value.count-h.value.count+1,n=new c.Vector3().copy(g.position),a=new c.Vector3().copy(_.position);if(u.progress=t,t>=.01&&t<=.99&&(u.progress=W(_.effectEasing(t),.01,.99)),_.panoPicture&&(t<1?g.panoPicture&&(u.pano0=g.panoPicture):u.pano0=_.panoPicture,u.pano1=_.panoPicture),_.effect===`montage`?u.transition=`BLACK`:_.effect===`spread`?u.transition=`SPREAD`:u.transition=`FADE`,_.effect===`zoomin`||_.effect===`zoomout`?u.progress=Math.pow(t,3):_.effect===`model`&&this.camera.pose.distance<.01&&(u.modelAlpha=1-Math.pow(W(Math.abs(t-.5)*2,0,1),4)),t<1&&_.effect!==`fly`){if(u.pano0&&g.panoPicture){let e={panoId:u.pano0.panoId,map:u.pano0.map,mapHistogram:u.pano0.mapHistogram,mapSize:u.pano0.mapSize,zoom:u.pano0.zoom,matrix:g.panoPicture.matrix.clone().setPosition(_.position)},t=this.panoPictureObserverMap.get(u.pano0);t&&this.panoPictureObserverMap.set(e,t),u.pano0=e}n.copy(a),b=!0}d.distance=this.locationMotion.value.distance,d.offset=new c.Vector3(n.x+(a.x-n.x)*t,n.y+(a.y-n.y)*t,n.z+(a.z-n.z)*t);let o=[],s=[];for(let e of this.locationMotion.keyframes){let{key:t,progress:n}=e;t!==void 0&&(o.push(t),n>this.locationMotion.progress&&s.push(t))}for(let e of Object.keys(this.panoResources)){if(s.indexOf(e)>=0)continue;let t=this.panoResources[e];if(t.panoPicture){let e=t.panoPicture.map;if(e){if(e===((r=u.pano0)==null?void 0:r.map)||e===((i=u.pano1)==null?void 0:i.map))continue;e.dispose(),t.panoPicture=null}}o.indexOf(e)>=0||delete this.panoResources[e]}this.currentPano=hp(_.panoId),this.emit(`pano.moving`,$(`pano.moving`,{userAction:this.userAction,prevPano:hp(v.panoId),state:Object.assign(Object.assign(Object.assign(Object.assign({},hp(y.panoId)),{mode:this.mode}),jh(this.camera.pose)),d),options:{},progress:this.locationMotion.progress,error:null}))}Ph(u)===!1&&this.modelScene.parameter.set(u),d.offset&&this.camera.position.copy(d.offset);let x=this.camera.pose.longitude,S=this.camera.pose.latitude;this.camera.quaternion.fromArray(this.cardboard.sensor.getOrientation()),this.camera.computePose(),(x!==this.camera.pose.longitude||S!==this.camera.pose.latitude)&&(this.cameraMotion.set(mr(this.camera.pose,[`longitude`,`latitude`]),0).catch(q),this.emit(`camera.update`,$(`camera.update`,{userAction:!0,state:Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),jh(this.camera.pose))}))),this.works.getObserver(this.currentPano);let C=this.works.getObserver(g.panoId),w=this.works.getObserver(_.panoId),T=new Map;if(C)for(let e of C.accessibleNodes){let t=C.work.observers[e];if(t){let e=Q({panoIndex:t.panoIndex,workCode:t.work.workCode});T.set(e,t)}}if(w)for(let e of w.accessibleNodes){let t=w.work.observers[e];if(t){let e=Q({panoIndex:t.panoIndex,workCode:t.work.workCode});T.set(e,t)}}if(this.panoMeshes.forEach((e,t)=>{let n=T.get(t);n?(e.position.copy(n.position).applyMatrix4(n.work.transform),T.delete(t)):(this.helper.remove(e),e.dispose(),this.panoMeshes.delete(t))}),T.forEach((e,t)=>{let n=new z_;n.position.copy(e.position).applyMatrix4(e.work.transform),e.position.distanceTo(e.standingPosition)>this.aerialObserverMinHeight?n.scale.setScalar(15):n.scale.setScalar(1),this.panoMeshes.set(t,n),this.helper.add(n),T.delete(t)}),this.camera.pose.distance>.1||b?this.panoMeshes.forEach((n,r)=>{n.setOpacity(0),n.updateTime&&n.updateTime(e,t),n.visible=!1}):this.panoMeshes.forEach((e,t)=>{let n=hp(t),r=this.works.getObserver(n);if(!r)return;if(!r.loadable&&!r.active){e.setOpacity(0);return}let i=e.position.clone().setY(this.camera.position.y).distanceTo(this.camera.position);i<.05?e.setOpacity(0):e.setOpacity(W(1.5/i,0,1)),gp(this.currentPano,n)&&e.setOpacity(0),e.lookAt(this.camera.position)}),this.locationMotion.ended){let n=this.intersect(e);this.panoMeshes.forEach((r,i)=>{r.setCurrent(r===n),r.updateTime&&r.updateTime(e,t)})}{let e=(a=this.modelScene.parameter.progress)==null?1:a,t=Math.round(e),n=this.modelScene.parameter.pano0,r=this.modelScene.parameter.pano1,i=t===0?n:r,s;if(i&&(s=this.works.getObserver(i.panoId),s||(s=this.panoPictureObserverMap.get(i))),this.tiling.appearDuration=this.tileAppearDuration,this.tiling.maxRequest=e<(si()?.6:.99)?0:this.tileMaxRequest,this.tiling.imageOptions=this.imageOptions,!s||!i||this.tileLevelForFov===!1||this.camera.perspToOrtho.x>0){this.tiling.setObserver(null);let e={renderer:this.renderer,resolution:this.camera.resolution,pixelRatio:this.camera.pixelRatio,time:this.camera.time,cameraMatrix:this.camera.matrixWorld,cameraProjectionMatrix:this.camera.projectionMatrix,panoMap:null,panoMatrix:new c.Matrix4,panoZoom:1,minLevel:0,level:0};this.tiling.update(e),this.modelScene.parameter.set(`refinedScreen`,null)}else{let e=Qr(i.mapSize),a=e+1,l=new c.Vector2().copy(this.camera.resolution).multiplyScalar(this.camera.pixelRatio),u=Math.floor(this.tileLevelForFov(this.camera.fov,l)),d=u>e?u:0;this.tiling.setObserver(s);let f={renderer:this.renderer,resolution:this.camera.resolution,pixelRatio:this.camera.pixelRatio,time:this.camera.time,cameraMatrix:this.camera.matrixWorld,cameraProjectionMatrix:this.camera.projectionMatrix,panoMap:i.map,panoMatrix:i.matrix,panoZoom:i.zoom,minLevel:a,level:d},p=this.tiling.update(f),m={map:this.tiling.renderTarget.texture,matrixInverse:this.tiling.camera.matrixWorldInverse,projectionMatrix:this.tiling.camera.projectionMatrix,pano:t,opacity:(n==null?void 0:n.panoId)===(r==null?void 0:r.panoId)?1:Vu(Math.abs(((o=this.modelScene.parameter.progress)==null?0:o)-.5)*2)},h=this.modelScene.parameter.refinedScreen;(p||m.pano!==(h==null?void 0:h.pano)||m.opacity!==(h==null?void 0:h.opacity))&&this.modelScene.parameter.set(`refinedScreen`,m)}}this.panoVideo.object.position.copy(this.camera.position),this.panoVideo.updateTime(e);{let e=_.effect,{pano0:t,pano1:n}=this.modelScene.parameter;if(t&&n&&t!==n&&(e===`fly`||e===`model`)&&this.flyEffectUseDepthBuffer){if(((s=this.modelScene.parameter.pano0Depth)==null?void 0:s.panoId)!==t.panoId||((l=this.modelScene.parameter.pano1Depth)==null?void 0:l.panoId)!==n.panoId){this.pano0DepthCubeRenderTarget?this.pano0DepthCubeRenderTarget.width!==512&&this.pano0DepthCubeRenderTarget.setSize(512,512):this.pano0DepthCubeRenderTarget=new c.WebGLCubeRenderTarget(512,{minFilter:c.NearestFilter,magFilter:c.NearestFilter,generateMipmaps:!1}),this.pano1DepthCubeRenderTarget?this.pano1DepthCubeRenderTarget.width!==512&&this.pano1DepthCubeRenderTarget.setSize(512,512):this.pano1DepthCubeRenderTarget=new c.WebGLCubeRenderTarget(512,{minFilter:c.NearestFilter,magFilter:c.NearestFilter,generateMipmaps:!1});let e=new c.CubeCamera(this.camera.near,this.camera.far,this.pano0DepthCubeRenderTarget);e.matrix.copy(t.matrix),e.matrixWorld.copy(e.matrix),e.matrixAutoUpdate=!1,Gg(this.renderer,this.modelScene,e,500);let r=new c.CubeCamera(this.camera.near,this.camera.far,this.pano1DepthCubeRenderTarget);r.matrix.copy(n.matrix),r.matrixWorld.copy(r.matrix),r.matrixAutoUpdate=!1,Gg(this.renderer,this.modelScene,r,500),this.modelScene.parameter.set({pano0Depth:{panoId:t.panoId,map:this.pano0DepthCubeRenderTarget.texture,mapSize:this.pano0DepthCubeRenderTarget.width,maxDepth:500},pano1Depth:{panoId:n.panoId,map:this.pano1DepthCubeRenderTarget.texture,mapSize:this.pano1DepthCubeRenderTarget.width,maxDepth:500}})}}else this.modelScene.parameter.set({pano0Depth:null,pano1Depth:null}),this.flyEffectUseDepthBuffer||(this.pano0DepthCubeRenderTarget&&(this.pano0DepthCubeRenderTarget.dispose(),this.pano0DepthCubeRenderTarget=void 0),this.pano1DepthCubeRenderTarget&&(this.pano1DepthCubeRenderTarget.dispose(),this.pano1DepthCubeRenderTarget=void 0))}}render(){return this.renderer.setRenderTarget(null),this.renderer.setScissorTest(!1),this.cardboard.render(this.scene,this.camera),!0}setCamera(e={}){}destroyHelper(){}updateHelperElementSize(){if(!this.helperElement)return;let e=new c.Vector2(this.element.offsetWidth,this.element.offsetHeight),t=e.x*this.viewport.left,n=e.y*(1-this.viewport.bottom-this.viewport.height),r=e.x*this.viewport.width,i=e.y*this.viewport.height;this.helperElement.style.marginLeft!==t+`px`&&(this.helperElement.style.marginLeft=t+`px`),this.helperElement.style.marginTop!==n+`px`&&(this.helperElement.style.marginTop=n+`px`),this.helperElement.style.width!==r+`px`&&(this.helperElement.style.width=r+`px`),this.helperElement.style.height!==i+`px`&&(this.helperElement.style.height=i+`px`)}intersect(e){var t,n;if(this.locationMotion.ended===!1){this.intersectMesh.visible=!1,this.activePanoMesh=void 0,this.activeTime=void 0;return}if(this.activePanoMesh&&this.activeTime&&e-this.activeTime>B_){let e=this.activePanoMesh,t=null;return this.panoMeshes.forEach((n,r)=>{n===e&&(t=r)}),t!==null&&this.moveToPano(hp(t),{},!0),this.activePanoMesh=void 0,this.activeTime=void 0,e}let r=this.camera.getDirection(new c.Vector3),i=new c.Raycaster(this.camera.position,r);i.params.Points={threshold:.1},i.firstHitOnly=!0,i.floorIndex=-1;let a,o=[],s=this.works.getObserver(this.currentPano),l=s?s.accessibleNodes.map(e=>Q({panoIndex:e,workCode:s.work.workCode})):[];for(let e of l){let r=this.panoMeshes.get(e);if(r){let[e]=i.intersectObject((t=r.hitTestMesh)==null?r:t,!0);if(e){let t=(n=s==null?void 0:s.floorIndex)==null?0:n;o.push({panoMesh:r,intersection:Object.assign({floorIndex:t,floor:t},e)})}}}let[u]=o.sort((e,t)=>e.intersection.distance-t.intersection.distance);u?(a=u.intersection,this.activePanoMesh!==u.panoMesh&&(this.activePanoMesh=u.panoMesh,this.activeTime=e),this.intersectMesh.position.copy(u.panoMesh.position),this.intersectMesh.lookAt(this.camera.position)):(this.activePanoMesh=void 0,this.activeTime=void 0),a||(a=this.modelScene.intersectRaycaster(i)[0]);let d=$(`intersect.update`,{raycaster:i,intersection:a==null?null:a,object:this.intersectMesh});if(this.emit(`intersect.update`,d),d.defaultPrevented){this.hideIntersectMesh();return}if(a&&a.face){let e=a.face.normal,t=new c.Quaternion;t.setFromUnitVectors(new c.Vector3(0,0,1),e),this.intersectMesh.quaternion.copy(t);let n=a.point.clone();this.intersectMesh.position.copy(n),u?this.intersectMesh.visible=!1:this.intersectMesh.visible=!0}else this.intersectMesh.visible=!1;return u==null?void 0:u.panoMesh}onPanGesture(){}onTapGesture(){}onPinchGesture(){}onMouseMove(){}onMouseOut(){}},U_=new c.Vector3(0,1.6,0),W_=new c.Box3,G_=new c.Vector3,K_=Object.assign({},$h),q_=class e extends eg{static parseArgs(t){return t instanceof e?t:super.parseArgs(t)}static initAnimationEndState(e){var t,n,r,i,a,o;let s=this.parseArgs(e),l=s.works,{state:u,currentState:d}=e.initial,f=typeof u.panoIndex==`number`?{workCode:(r=(t=u.workCode)==null?(n=s.works[0])==null?void 0:n.workCode:t)==null?``:r,panoIndex:u.panoIndex}:{workCode:d.workCode,panoIndex:d.panoIndex},p=l.getObserver(f),m=W((i=u.fov)==null?!p||Nh(d.mode)?d.fov:s.defaultFov:i,s.minFov,s.maxFov),h=(a=u.longitude)==null?d.longitude:a,g=W(typeof s.minLatitude==`function`?s.minLatitude(m):s.minLatitude,-Math.PI/2,Math.PI/2),_=W(typeof s.maxLatitude==`function`?s.maxLatitude(m):s.maxLatitude,-Math.PI/2,Math.PI/2),v=W((o=u.latitude)==null?!p||Nh(d.mode)?d.latitude:s.defaultLatitude:o,g,_),y=new c.Vector3;if(s.initial.state.offset)y.copy(s.initial.state.offset);else if(p)y.copy(p.position).applyMatrix4(p.work.transform);else{let e=Vt(d).setLength(d.distance);y.copy(s.initial.currentState.offset).sub(e)}return{workCode:f.workCode,panoIndex:f.panoIndex,mode:`Model`,longitude:h,latitude:v,fov:m,offset:y,distance:0}}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`Model`,this.locationMotion=new Z({x:this.camera.pose.offset.x,y:this.camera.pose.offset.y,z:this.camera.pose.offset.z,distance:this.camera.pose.distance}),this.modelAlphaMotion=new Z({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new Z({perspToOrtho:this.camera.perspToOrtho.x})}updateConfiguration(e){return super.updateConfiguration(e)}destroy(){super.destroy(),this.locationMotion.dispose()}isReady(){return this.locationMotion.ended===!1?!1:super.isReady()}updateWork(t,n,r,i){this.works=t;let a=e.initAnimationEndState(Object.assign(Object.assign({},this),{initial:{currentState:Object.assign(Object.assign({},this.currentPano),this.camera.pose),duration:r.duration,effect:r.effect,state:n,userAction:i}}));return(a.workCode!==this.currentPano.workCode||a.panoIndex!==this.currentPano.panoIndex||a.longitude!==this.cameraMotion.value.longitude||a.latitude!==this.cameraMotion.value.latitude||a.fov!==this.cameraMotion.value.fov)&&this.moveToPosition(a.offset,{duration:0,longitude:a.longitude,latitude:a.latitude,fov:a.fov},i),!0}updateCamera(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r={},i={};return r.distance=0,e.offset!==void 0&&(r.x=e.offset.x,r.y=e.offset.y,r.z=e.offset.z),e.longitude!==void 0&&(i.longitude=e.longitude),e.latitude!==void 0&&(i.latitude=e.latitude),e.fov!==void 0&&(i.fov=e.fov),this.locationMotion.set(r,t).catch(q),this.cameraMotion.set(i,t).catch(q)})}updateCameraWithKeyframes(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r=[],i=[];for(let t of e)r.push({key:t.key,progress:t.progress,value:{distance:0,x:t.value.offset.x,y:t.value.offset.x,z:t.value.offset.x}}),i.push({key:t.key,progress:t.progress,value:{longitude:t.value.longitude,latitude:t.value.latitude,fov:t.value.fov}});return this.locationMotion.setKeyframes(r,t).catch(q),this.cameraMotion.setKeyframes(e,t)})}updateTime(e,t,...n){if(this.destroyed)return;let r={},i={};if(this.modelAlphaMotion.ended||(this.modelAlphaMotion.update(e),r.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.modelScene.parameter.modelAlpha===0&&this.modelScene.parameter.progress!==1){let{pano0:e,pano1:t}=this.modelScene.parameter;e&&e.map!==(t==null?void 0:t.map)&&e.map.dispose(),r.progress=1,r.pano0=r.pano1=t}if(this.perspToOrthoMotion.ended||(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(W(this.perspToOrthoMotion.value.perspToOrtho,0,1))),!this.locationMotion.ended){this.locationMotion.update(e),i.distance=this.locationMotion.value.distance,i.offset=new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z);let t=new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),n=[];for(let e of this.works){let r=this.modelScene.models.find(t=>t.work===e);if(!(!r||r.visible===!1)&&!(e.observers.length<=0)&&(W_.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),W_.containsPoint(t)))for(let t of e.observers)n.push(t)}let r=Nl(n,e=>G_.copy(e.position).applyMatrix4(e.work.transform).distanceTo(t));this.currentPano=r?{workCode:r.work.workCode,panoIndex:r.panoIndex}:{workCode:``,panoIndex:0}}this.cameraMotion.ended||(this.cameraMotion.update(e),i.longitude=this.cameraMotion.value.longitude,i.latitude=this.cameraMotion.value.latitude,i.fov=this.cameraMotion.value.fov),Ph(r)||this.modelScene.parameter.set(r),Ph(i)||this.setCamera(i);let a=this.works.getObserver(this.currentPano);if(this.intersectMesh&&this.intersectMesh.parent&&a&&a.position.y-a.standingPosition.y>10){let e=W(this.camera.position.distanceTo(this.intersectMesh.position)*(2*Math.tan(.5*this.camera.fov/180*Math.PI))/5,.5);this.intersectMesh.scale.setScalar(e)}else this.intersectMesh.scale.setScalar(1)}initAnimation(){return this.destroyed?Promise.resolve():new Promise(t=>{let{state:n,currentState:r,duration:i,userAction:a}=this.initial;this.userAction=a;let o=e.initAnimationEndState(this),s={modelAlpha:1},c={perspToOrtho:0},l={longitude:o.longitude,latitude:o.latitude,fov:o.fov,duration:i,moveStartCallback:e=>{this.perspToOrthoMotion.set(c,i).catch(q),this.modelAlphaMotion.set(s,i).catch(q),this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:e,userAction:this.userAction}))},moveEndCallback:e=>{this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:e,userAction:this.userAction})),t()},moveCancelCallback:()=>{let e=this.currentPano,n=Object.assign(Object.assign({},e),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance});this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:n,userAction:this.userAction})),t()}};this.moveToPosition(o.offset,l,a)})}getTargetState(){let e=this.cameraMotion.getKeyFrameSegment(U())[1],t=this.locationMotion.getKeyFrameSegment(U())[1];return Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:e.value.longitude,latitude:e.value.latitude,fov:e.value.fov,offset:new c.Vector3(t.value.x,t.value.y,t.value.z),distance:t.value.distance})}moveToPano(e,t={},n){let r=this.works.getObserver(e);if(r){let e=new c.Vector3().copy(r.position).applyMatrix4(r.work.transform);this.moveToPosition(e,t,n)}}moveToPosition(e,t={},n){var r,i,a;this.userAction=n,this.stopMomentumMovement();let o=U(),s=new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),l=s.distanceTo(e),u=this.locationMotion.getProgressVelocity(o),d=0;for(let e=1;e<this.locationMotion.keyframes.length;e++){let{x:t,y:n,z:r}=this.locationMotion.keyframes[e-1].value,{x:i,y:a,z:o}=this.locationMotion.keyframes[e].value;d+=Math.sqrt(Math.pow(i-t,2)+Math.pow(a-n,2)+Math.pow(o-r,2))}let f=l===0?0:u*d/l,p=this.calculateMovingDuration(t.duration,l),m={x:e.x,y:e.y,z:e.z,distance:0},h={longitude:t.longitude,latitude:t.latitude,fov:t.fov},g=[];for(let e of this.works){let t=this.modelScene.models.find(t=>t.work===e);if(!(!t||t.visible===!1)&&!(e.observers.length<=0)&&(W_.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),W_.containsPoint(s)))for(let t of e.observers)g.push(t)}let _=Nl(g,e=>G_.copy(e.position).applyMatrix4(e.work.transform).distanceTo(s)),v=_?{workCode:_.work.workCode,panoIndex:_.panoIndex}:{workCode:``,panoIndex:0},y=Object.assign(Object.assign({},v),{mode:this.mode,longitude:(r=h.longitude)==null?this.camera.pose.longitude:r,latitude:(i=h.latitude)==null?this.camera.pose.latitude:i,fov:(a=h.fov)==null?this.camera.pose.fov:a,offset:e.clone(),distance:0}),b=this.currentPano;this.emit(`pano.moveTo`,$(`pano.moveTo`,{options:t,prevPano:b,progress:0,state:y,userAction:this.userAction,error:null})),t.moveStartCallback&&t.moveStartCallback(y),this.cameraMotion.set(h,p).catch(q),this.locationMotion.set(m,p,f).then(()=>{for(let e of this.modelScene.children)e instanceof If&&e.show();let e=Object.assign(Object.assign(Object.assign({},v),{mode:this.mode}),jh(this.camera.pose));this.emit(`pano.arrived`,$(`pano.arrived`,{options:t,prevPano:b,progress:0,state:e,userAction:this.userAction,error:null})),t.moveEndCallback&&t.moveEndCallback(e)},()=>{t.moveCancelCallback&&t.moveCancelCallback(),this.emit(`pano.cancel`,$(`pano.cancel`,{options:t,prevPano:b,progress:0,state:y,userAction:this.userAction,error:null}))})}onTapGesture(e){let t=e.center.raycaster;this.stopMomentumMovement();let[n]=this.modelScene.intersectRaycaster(t);if(n&&n.face){let e=n.face.normal,t=n.point;if(new c.Vector3(0,1,0).angleTo(e)>Math.PI/3){let r=new c.Raycaster;r.firstHitOnly=!0;let i=e.clone().setLength(.3).add(t);r.set(i,new c.Vector3(0,-1,0)),n=this.modelScene.intersectRaycaster(r)[0]}}if(n){let t=new c.Vector3().copy(n.point).add(U_),r=[];for(let e of this.works){let n=this.modelScene.models.find(t=>t.work===e);if(!(!n||n.visible===!1)&&!(e.observers.length<=0)&&(W_.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),W_.containsPoint(t)))for(let t of e.observers)r.push(t)}let[i,a]=Nl(r,e=>G_.copy(e.position).applyMatrix4(e.work.transform).distanceTo(t),!0);i&&a<5&&(t.y=G_.copy(i.position).applyMatrix4(i.work.transform).y),e.state.offset.copy(t),e.state.distance=0,this.emit(`gesture.tap`,e),e.defaultPrevented||this.moveToPosition(t,{},!0)}else this.emit(`gesture.tap`,e),e.defaultPrevented||this.cameraBounce()}},J_=new c.Box3,Y_=new c.Vector3,X_=.5,Z_=Math.PI/7,Q_={defaultLongitude:Math.PI/4,defaultLatitude:Math.PI/4,defaultDistance:150,maxLatitude:Math.PI/2,minLatitude:0,cameraType:`auto`,cameraFence:null,intersectMeshCreator:()=>new Kh},$_=class e extends Uh{static parseArgs(t){var n,r,i,a,o,s,c,l;if(t instanceof e)return t;let u=super.parseArgs(t);return Object.assign(Object.assign({},u),{defaultLongitude:(n=t.defaultLongitude)==null?Q_.defaultLongitude:n,defaultLatitude:(r=t.defaultLatitude)==null?Q_.defaultLatitude:r,defaultDistance:(i=t.defaultDistance)==null?Q_.defaultDistance:i,maxLatitude:(a=t.maxLatitude)==null?Q_.maxLatitude:a,minLatitude:(o=t.minLatitude)==null?Q_.minLatitude:o,cameraType:(s=t.cameraType)==null?Q_.cameraType:s,cameraFence:(c=t.cameraFence)==null?Q_.cameraFence:c,intersectMeshCreator:(l=t.intersectMeshCreator)==null?Q_.intersectMeshCreator:l})}static distanceFromModel(e,t,n){let r=e.boundingBox,i=r.isEmpty()?10:Math.pow(Math.pow(r.max.x-r.min.x+1,2)+Math.pow(r.max.y-r.min.y+1,2)+Math.pow(r.max.z-r.min.z+1,2),1/2);i=isNaN(i)||!isFinite(i)?1:i;let a=i/2/Math.tan(Math.PI*t/360);return n<1&&(a/=n),isNaN(a)||!isFinite(a)?i:a}static initAnimationEndState(t){var n,r,i,a,o,s,l;let u=this.parseArgs(t),d=u.works,f=u.modelScene,{state:p,currentState:m}=t.initial,h=typeof p.panoIndex==`number`?{workCode:(i=(n=p.workCode)==null?(r=u.works[0])==null?void 0:r.workCode:n)==null?``:i,panoIndex:p.panoIndex}:{workCode:m.workCode,panoIndex:m.panoIndex},g=(a=p.fov)==null?60:a,_=W(typeof u.minLatitude==`function`?u.minLatitude(g):u.minLatitude,-Math.PI/2,Math.PI/2),v=W(typeof u.maxLatitude==`function`?u.maxLatitude(g):u.maxLatitude,-Math.PI/2,Math.PI/2),y=W((o=p.latitude)==null?Mh(m.mode)?m.latitude:u.defaultLatitude:o,_,v),b=e.distanceFromModel(u.modelScene,g,u.camera.aspect),x=new c.Vector3,S=(s=p.distance)==null?Math.min(u.defaultDistance,b):s,C=(l=p.longitude)==null?Mh(m.mode)?m.longitude:u.defaultLongitude:l;if(p.offset)x.copy(p.offset);else{let e=d.getObserver(h);u.defaultDistance<b&&e?(x.copy(e.position).applyMatrix4(e.work.transform),p.longitude===void 0&&(C=m.longitude)):(f.boundingBox.getCenter(x),S=b)}return Object.assign(Object.assign({},h),{mode:`Mapview`,longitude:C,latitude:y,fov:g,offset:x,distance:S})}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`Mapview`,this.defaultLongitude=n.defaultLongitude,this.defaultLatitude=n.defaultLatitude,this.defaultDistance=n.defaultDistance,this.maxLatitude=n.maxLatitude,this.minLatitude=n.minLatitude,this.cameraType=n.cameraType,this.cameraFence=n.cameraFence,this.locationMotion=new Z({x:this.camera.pose.offset.x,y:this.camera.pose.offset.y,z:this.camera.pose.offset.z,distance:this.camera.pose.distance}),this.modelAlphaMotion=new Z({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new Z({perspToOrtho:this.camera.perspToOrtho.x}),this.pendingTextureId=null,this.textureLoader=new hi,this.intersectMeshCreator=n.intersectMeshCreator,this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=`intersect`,this.intersectMesh.visible=!1,this.helper.add(this.intersectMesh)}updateConfiguration(e){if(super.updateConfiguration(e)===!1)return!1;if(e.defaultLongitude!==void 0&&this.defaultLongitude!==e.defaultLongitude&&(this.defaultLongitude=e.defaultLongitude),e.defaultLatitude!==void 0&&this.defaultLatitude!==e.defaultLatitude&&(this.defaultLatitude=e.defaultLatitude),e.defaultDistance!==void 0&&this.defaultDistance!==e.defaultDistance&&(this.defaultDistance=e.defaultDistance),e.maxLatitude!==void 0&&this.maxLatitude!==e.maxLatitude&&(this.maxLatitude=e.maxLatitude),e.minLatitude!==void 0&&this.minLatitude!==e.minLatitude&&(this.minLatitude=e.minLatitude),e.cameraType!==void 0&&this.cameraType!==e.cameraType&&(this.cameraType=e.cameraType),this.cameraFence instanceof c.Box3&&e.cameraFence instanceof c.Box3||this.cameraFence instanceof c.Sphere&&e.cameraFence instanceof c.Sphere?this.cameraFence.equals(e.cameraFence)||(this.cameraFence=e.cameraFence):e.cameraFence!==void 0&&(this.cameraFence=e.cameraFence),e.intersectMeshCreator!==void 0&&this.intersectMeshCreator!==e.intersectMeshCreator){this.intersectMeshCreator=e.intersectMeshCreator;let t=this.intersectMesh;this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=t.name,this.intersectMesh.visible=t.visible;let n=this.intersectMesh.parent;n&&n.add(this.intersectMesh),t.dispose()}return!0}destroy(){super.destroy(),this.pendingTextureId=null,this.locationMotion.dispose(),this.panState=void 0,this.intersectMesh.dispose(),this.helper.remove(this.intersectMesh)}isReady(){return this.locationMotion.ended===!1?!1:super.isReady()}updateWork(t,n,r,i){this.userAction=i,this.works=t;let a=e.initAnimationEndState(Object.assign(Object.assign({},this),{initial:{currentState:Object.assign(Object.assign({},this.currentPano),this.camera.pose),duration:r.duration,effect:r.effect,state:n,userAction:i}}));this.currentPano={workCode:a.workCode,panoIndex:a.panoIndex};let o={longitude:a.longitude,latitude:a.latitude,fov:a.fov},s={x:a.offset.x,y:a.offset.y,z:a.offset.z,distance:a.distance};return(o.longitude!==this.cameraMotion.value.longitude||o.latitude!==this.cameraMotion.value.latitude||o.fov!==this.cameraMotion.value.fov)&&this.cameraMotion.set(o,r.duration).catch(q),(s.x!==this.locationMotion.value.x||s.y!==this.locationMotion.value.y||s.z!==this.locationMotion.value.z||s.distance!==this.locationMotion.value.distance)&&this.locationMotion.set(s,r.duration).catch(q),!0}updateModel(e){super.updateModel(e),this.hideIntersectMesh()}updateCamera(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r={},i={};return e.distance!==void 0&&(r.distance=e.distance),e.offset!==void 0&&(r.x=e.offset.x,r.y=e.offset.y,r.z=e.offset.z),e.longitude!==void 0&&(i.longitude=e.longitude),e.latitude!==void 0&&(i.latitude=e.latitude),e.fov!==void 0&&(i.fov=e.fov),this.locationMotion.set(r,t).catch(q),this.cameraMotion.set(i,t).catch(q)})}updateCameraWithKeyframes(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r=[],i=[];for(let t of e)r.push({key:t.key,progress:t.progress,value:{distance:t.value.distance,x:t.value.offset.x,y:t.value.offset.x,z:t.value.offset.x}}),i.push({key:t.key,progress:t.progress,value:{longitude:t.value.longitude,latitude:t.value.latitude,fov:t.value.fov}});return this.locationMotion.setKeyframes(r,t).catch(q),this.cameraMotion.setKeyframes(e,t)})}updateTime(e,t){if(this.destroyed)return;let n={},r={};if(this.locationMotion.ended||(this.locationMotion.update(e),r.distance=this.locationMotion.value.distance,r.offset=new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z)),this.cameraMotion.ended||(this.cameraMotion.update(e),r.longitude=this.cameraMotion.value.longitude,r.latitude=this.cameraMotion.value.latitude,r.fov=this.cameraMotion.value.fov),this.modelAlphaMotion.ended||(this.modelAlphaMotion.update(e),n.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.modelScene.parameter.modelAlpha===0&&this.modelScene.parameter.progress!==1){let{pano0:e,pano1:t}=this.modelScene.parameter;e&&e.map!==(t==null?void 0:t.map)&&e.map.dispose(),n.progress=1,n.pano0=n.pano1=t}let i=0;if(this.cameraType===`auto`?i=Math.abs(Math.PI/2-this.cameraMotion.value.latitude)<.02||Math.abs(-Math.PI/2-this.cameraMotion.value.latitude)<.02?1:0:this.cameraType===`perspective`?i=0:this.cameraType===`orthographic`&&(i=1),this.perspToOrthoMotion.getTargetKeyframe().value.perspToOrtho!==i&&this.perspToOrthoMotion.set({perspToOrtho:i},500).catch(q),this.perspToOrthoMotion.ended||(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(W(this.perspToOrthoMotion.value.perspToOrtho,0,1))),Ph(n)||this.modelScene.parameter.set(n),Ph(r)||this.setCamera(r),this.cameraFence&&!this.panState&&!this.pinchState&&!this.mouseWheelState&&!this.inMomentumMovement&&this.locationMotion.ended&&this.perspToOrthoMotion.ended&&this.cameraMotion.ended){let e=Vt(this.camera.pose,new c.Vector3),t=new c.Vector3().copy(this.camera.pose.offset).sub(e.clone().multiplyScalar(this.camera.pose.distance));if(this.cameraFence.distanceToPoint(t)>.01){let e=this.cameraFence.clampPoint(t,new c.Vector3),n=this.camera.pose.offset.clone().add(e).sub(t),r=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:n,distance:this.camera.pose.distance});this.fixFinalState(r),this.locationMotion.set({x:r.offset.x,y:r.offset.y,z:r.offset.z,distance:r.distance},300).catch(q)}}if(this.intersectMesh&&this.intersectMesh.parent){let e=W(this.camera.position.distanceTo(this.intersectMesh.position)*(2*Math.tan(.5*this.camera.fov/180*Math.PI))/5,.5);this.intersectMesh.scale.setScalar(e)}else this.intersectMesh.scale.setScalar(1)}getTargetState(){let e=this.cameraMotion.getKeyFrameSegment(U())[1],t=this.locationMotion.getKeyFrameSegment(U())[1];return Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:e.value.longitude,latitude:e.value.latitude,fov:e.value.fov,distance:t.value.distance,offset:new c.Vector3(t.value.x,t.value.y,t.value.z)})}initAnimation(){return this.destroyed?Promise.resolve():new Promise(t=>{let{state:n,currentState:r,duration:i,userAction:a}=this.initial;this.userAction=a;let o=e.initAnimationEndState(this),s={longitude:o.longitude,latitude:o.latitude,fov:o.fov},c={x:o.offset.x,y:o.offset.y,z:o.offset.z,distance:o.distance};this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:o,userAction:this.userAction})),this.perspToOrthoMotion.set({perspToOrtho:0},i).catch(q),this.modelAlphaMotion.set({modelAlpha:1},i/3).catch(q),this.cameraMotion.set(s,i).catch(q),this.locationMotion.set(c,i).then(()=>{this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:o,userAction:this.userAction}))},e=>{let t=Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),jh(this.camera.pose));this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:t,userAction:this.userAction}))}).then(()=>{t()})})}getForwardObserverOrNot(e){let[t]=this.modelScene.intersectRaycaster(e);if(!t)return null;let n=[];for(let t of this.works){let r=this.modelScene.models.find(e=>e.work===t);if(!(!r||r.visible===!1)&&!(t.observers.length<=0)&&(J_.copy(t.observerBox).expandByScalar(10).applyMatrix4(t.transform),J_.containsPoint(e.ray.origin)||e.ray.intersectsBox(J_)))for(let e of t.observers)n.push(e)}let[r,i]=Nl(n,e=>Y_.copy(e.standingPosition).applyMatrix4(e.work.transform).distanceTo(t.point),!0);return r&&i<Math.max(r.standingPosition.distanceTo(this.camera.position)/5,10)?r:null}coordinatesForOffset(e){let t=this.renderer.getSize(new c.Vector2);return{longitude:-2*e.x/(t.x*this.viewport.width),latitude:2*e.y/(t.y*this.viewport.height)}}requestMomentumMovement(e,t,n,r){if(this.inMomentumMovement===null)return;r=Math.max(r,1);let i=Object.assign({},n),a={longitude:0,latitude:0,x:0,y:0,z:0};for(let e=0;e<r;e++)i.longitude*=.996,i.latitude*=.996*.998,i.x*=.99,i.y*=.99,i.z*=.99,a.longitude+=i.longitude,a.latitude+=i.latitude,a.x+=i.x,a.y+=i.y,a.z+=i.z;let o=this.cameraMotion.value.fov,s=Bt(this.cameraMotion.value.longitude+a.longitude),l=W(typeof this.minLatitude==`function`?this.minLatitude(o):this.minLatitude,-Math.PI/2,Math.PI/2),u=W(typeof this.maxLatitude==`function`?this.maxLatitude(o):this.maxLatitude,-Math.PI/2,Math.PI/2),d=W(this.cameraMotion.value.latitude+a.latitude,l,u),f=new c.Vector3(this.locationMotion.value.x+a.x,this.locationMotion.value.y+a.y,this.locationMotion.value.z+a.z),p=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:s,latitude:d,offset:f,fov:o,distance:this.locationMotion.value.distance}),m=e.state.offset.clone().sub(Vt(e.state).setLength(p.distance)),h=!(Math.abs(i.longitude)>1e-4||Math.abs(i.latitude)>1e-4||Math.abs(i.x)>1e-4||Math.abs(i.y)>1e-4||Math.abs(i.z)>1e-4);(this.cameraFence?this.cameraFence.containsPoint(m):!0)===!1&&(h=!0);let g=$(`gesture.momentum`,Object.assign(Object.assign({},e),{isFirst:t,isFinal:h,state:p}));if(this.inMomentumMovement.event=g,this.emit(`gesture.momentum`,g),e.defaultPrevented){this.inMomentumMovement=null;return}this.inMomentumMovement&&(this.cameraMotion.set({longitude:s,latitude:d},0).catch(q),this.locationMotion.set({x:p.offset.x,y:p.offset.y,z:p.offset.z,distance:p.distance},0).catch(q),h?this.inMomentumMovement=null:ri.shared.add((t,n)=>{this.requestMomentumMovement(e,!1,i,n)},!0))}fixFinalState(e){if(this.perspToOrthoMotion.getTargetKeyframe().value.perspToOrtho===1)return;let t=Vt(e,new c.Vector3),n=new c.Vector3().copy(e.offset).sub(t.clone().setLength(e.distance)),r=new c.Raycaster(n,t);r.params.Points={threshold:.1},r.firstHitOnly=!0,r.hitFilter=e=>e.distance>X_+r.near,r.near=this.camera.near,r.far=this.camera.far;let i;if(i=this.modelScene.intersectRaycaster(r)[0],i&&i.distance<this.camera.near&&(i=void 0),!i){let e=new c.Plane(new c.Vector3(0,1,0),-this.modelScene.boundingBox.min.y),t=r.ray.intersectPlane(e,new c.Vector3);if(t){let e=t.distanceTo(r.ray.origin);e<1e3&&e>=r.near&&(i={distance:e,floorIndex:0,floor:0,point:t,object:this.scene,face:null})}}if(!i){let r=Math.max(e.distance,3);i={distance:r,floorIndex:0,floor:0,point:n.clone().add(t.clone().setLength(r)),object:this.scene,face:null}}i.distance>=this.camera.near&&yh(e.distance,i.distance)&&(e.distance=i.distance,e.offset=i.point)}onPanGesture(e){this.userAction=e.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let t=e.pointers.length,n=this.panState,r=0,i=!1;e.pointerType===`mouse`&&(r=e.center.buttons,i=e.center.shiftKey),n&&r===0&&n.buttons!==0&&(r=n.buttons);let a=n==null?void 0:n.target;if(!a){let t=this.relativeClientPosition(e.center),n=this.createRaycasterFromCamera(t,this.camera);a=new c.Vector3().copy(n.ray.direction).multiplyScalar(3).add(n.ray.origin);let[r]=this.modelScene.intersectRaycaster(n);if(!r&&n.ray.direction.y<-.3){let e=new c.Plane(new c.Vector3(0,1,0),0),t=n.ray.intersectPlane(e,new c.Vector3);if(t){let e=t.distanceTo(n.ray.origin);e<1e4&&e>=n.near&&(r={distance:e,floorIndex:0,floor:0,point:t,object:this.scene})}}if(r)a.copy(r.point);else{let e=new c.Vector3().copy(this.camera.pose.offset).sub(this.camera.position).normalize(),t=new c.Plane().setFromNormalAndCoplanarPoint(e,this.camera.pose.offset);n.ray.intersectPlane(t,a)}}if(e.isFinal?this.panState=void 0:this.panState={target:a,buttons:r,pointerLength:t,x:e.center.x,y:e.center.y},!(n===void 0||n.pointerLength!==t))if(t>1||r===2||i){let t={x:e.center.x-n.x,y:e.center.y-n.y},r=new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),i=Vt(this.cameraMotion.value).setLength(this.locationMotion.value.distance).add(r),a=new c.Vector3().copy(i).sub(n.target).length();a*=Math.tan(this.camera.pose.fov/2*Math.PI/180);let o=this.renderer.getSize(new c.Vector2),s=2*t.x*a/o.y,l=2*t.y*a/o.y,u=new c.Vector3;u.setFromMatrixColumn(this.camera.matrix,0),u.multiplyScalar(-s),r.add(u),this.camera.pose.latitude<Z_?u.setFromMatrixColumn(this.camera.matrix,1):(u.setFromMatrixColumn(this.camera.matrix,0),u.crossVectors(this.camera.up,u)),u.multiplyScalar(l),r.add(u);let d=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:r,distance:this.camera.pose.distance});if(e.state=d,this.emit(`gesture.pan`,e),e.defaultPrevented)return;if(this.locationMotion.set({x:d.offset.x,y:d.offset.y,z:d.offset.z},0).catch(q),e.isFinal&&(this.fixFinalState(d),Object.assign(e,{__fixFinalState:!0}),this.locationMotion.set({distance:d.distance,x:d.offset.x,y:d.offset.y,z:d.offset.z},0).catch(q)),e.isFinal){let t=this.renderer.getSize(new c.Vector2),n=2*e.velocityX*a/t.y,r=2*e.velocityY*a/t.y,i=new c.Vector3,o=new c.Vector3;i.setFromMatrixColumn(this.camera.matrix,0),i.multiplyScalar(-n),o.add(i),this.camera.pose.latitude<Z_?i.setFromMatrixColumn(this.camera.matrix,1):(i.setFromMatrixColumn(this.camera.matrix,0),i.crossVectors(this.camera.up,i)),i.multiplyScalar(r),o.add(i),this.inMomentumMovement={uuid:nn()},this.requestMomentumMovement(e,!0,{longitude:0,latitude:0,x:o.x,y:o.y,z:o.z},0)}}else{let t={x:e.center.x-n.x,y:e.center.y-n.y},r=this.coordinatesForOffset(t),i=Bt(this.cameraMotion.value.longitude+r.longitude),a=this.camera.pose.fov,o=W(typeof this.minLatitude==`function`?this.minLatitude(a):this.minLatitude,-Math.PI/2,Math.PI/2),s=W(typeof this.maxLatitude==`function`?this.maxLatitude(a):this.maxLatitude,-Math.PI/2,Math.PI/2),c=W(this.cameraMotion.value.latitude+r.latitude,o,s);this.camera.aspect<1&&Math.abs(e.overallVelocityX)>.2&&Math.atan2(Math.abs(e.overallVelocityY),Math.abs(e.overallVelocityX))<Math.PI/6.923&&(c=this.cameraMotion.value.latitude);let l=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:i,latitude:c,fov:a,offset:this.camera.pose.offset,distance:this.camera.pose.distance});if(e.isFinal&&Object.assign(e,{__fixFinalState:!0}),e.state=l,this.emit(`gesture.pan`,e),e.defaultPrevented)return;if(e.isFinal?this.locationMotion.set({distance:l.distance,x:l.offset.x,y:l.offset.y,z:l.offset.z},0).catch(q):this.cameraMotion.set({longitude:l.longitude,latitude:l.latitude},0).catch(q),e.isFinal){let t=e.velocityX,n=e.velocityY;this.inMomentumMovement={uuid:nn()},this.requestMomentumMovement(e,!0,Object.assign(Object.assign({},this.coordinatesForOffset({x:t,y:n})),{x:0,y:0,z:0}),0)}}}onPinchGesture(t){var n;if(!this.initAnimationIsReady)return;this.userAction=t.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let r=(n=this.pinchState)==null?void 0:n.distance;if(t.isFirst){this.pinchState={x:t.center.x,y:t.center.y,scale:1,distance:this.locationMotion.value.distance};return}if(r===void 0)return;let i=this.modelScene.boundingBox.getCenter(new c.Vector3),a=e.distanceFromModel(this.modelScene,this.cameraMotion.value.fov,this.camera.aspect),o=W(r/t.scale,X_,1/0),s=t.state.offset.clone().sub(Vt(t.state).setLength(o)),l=this.modelScene.boundingBox.containsPoint(s),u;if(!l&&this.pinchState&&this.pinchState.scale>t.scale&&i.distanceTo(s)>a?u=t.state.distance:(u=o,this.pinchState&&(this.pinchState.scale=t.scale)),t.state.distance=u,this.emit(`gesture.pinch`,t),!t.defaultPrevented&&(this.locationMotion.set({distance:t.state.distance},0).catch(q),t.pointerType!==`mouse`&&(t.type=`gesture.pan`,this.onPanGesture(t)),t.isFinal)){if(!(`__fixFinalState`in t)){let e=t.state;this.fixFinalState(t.state);let n={x:e.offset.x,y:e.offset.y,z:e.offset.z,distance:e.distance};this.locationMotion.set(n,0).catch(q)}this.panState=void 0,this.pinchState=void 0}}onMouseMove(e){var t,n;if(!this.intersectMesh.parent||this.panState||this.pinchState||this.mouseWheelState||(this.emit(`gesture.mousemove`,e),e.defaultPrevented))return;let r=e.center.raycaster;if(e.isFinal&&this.intersectMesh.parent&&this.intersectMesh.visible===!0){this.hideIntersectMesh();return}let[i]=this.modelScene.intersectRaycaster(r),a=$(`intersect.update`,{raycaster:r,intersection:i==null?null:i,object:this.intersectMesh});if(this.emit(`intersect.update`,a),a.defaultPrevented){this.hideIntersectMesh();return}if(i){let e=(n=(t=i.face)==null?void 0:t.normal)==null?new c.Vector3().copy(r.ray.direction).multiplyScalar(-1):n,a=e.clone(),o=i.point.clone();this.intersectMesh.position.copy(o);let s=o.clone().add(a);if(this.intersectMesh.lookAt(s),Math.abs(e.y)>.99){let e=this.camera.position.clone().sub(o);this.intersectMesh.rotation.z=-Math.atan2(e.z,e.x)}this.intersectMesh.visible=!0,this.needsRender=!0}else this.hideIntersectMesh()}onMouseWheel(t){if(this.initAnimationIsReady)if(this.userAction=t.userAction,this.stopMomentumMovement(),this.hideIntersectMesh(),t.isFinal){let e=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:this.cameraMotion.value.longitude,latitude:this.cameraMotion.value.latitude,fov:this.cameraMotion.value.fov,offset:new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),distance:this.locationMotion.value.distance});if(this.fixFinalState(e),this.emit(`gesture.mousewheel`,t),t.defaultPrevented)return;let n={x:e.offset.x,y:e.offset.y,z:e.offset.z,distance:e.distance};this.locationMotion.set(n,0).catch(q)}else{let n=e.distanceFromModel(this.modelScene,this.cameraMotion.value.fov,this.camera.aspect),r=new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),i=Vt(this.cameraMotion.value,new c.Vector3).negate(),a=new c.Ray(r,i).intersectBox(this.modelScene.boundingBox,new c.Vector3);a&&(n+=a.distanceTo(r));let o=Math.max(this.locationMotion.value.distance-this.camera.near,0),s=t.center.delta/10*Math.max(o/5,.1);if(o<=n||s>0)if(this.locationMotion.value.distance-s>=X_){let e=this.locationMotion.value.distance-s;t.state.distance=e}else{let e=Vt(this.cameraMotion.value);e.setLength(s),t.state.offset.add(e)}if(this.emit(`gesture.mousewheel`,t),t.defaultPrevented)return;this.locationMotion.set({distance:t.state.distance,x:t.state.offset.x,y:t.state.offset.y,z:t.state.offset.z},0).catch(q)}}onTapGesture(e){var t;this.userAction=e.userAction,this.stopMomentumMovement();let n=e.center.raycaster,r=this.getForwardObserverOrNot(n);if(!r)this.emit(`gesture.tap`,e);else{let n={longitude:this.camera.pose.longitude,latitude:0},i=Object.assign(Object.assign({},e.state),{mode:`Panorama`,workCode:r.work.workCode,panoIndex:r.panoIndex,longitude:n.longitude,latitude:n.latitude,offset:r?r.position.clone():new c.Vector3,distance:0});if(e.state=i,this.emit(`gesture.tap`,e),!e.defaultPrevented&&(this.emit(`pano.select`,$(`pano.select`,{prevPano:this.currentPano,state:i,userAction:e.userAction,options:n,progress:0,error:null})),r&&r.active)){let e=this.pendingTextureId=nn(),a=Q({panoIndex:r.panoIndex,workCode:r.work.workCode}),o={right:r.images.work.getURL(r.images.right),left:r.images.work.getURL(r.images.left),up:r.images.work.getURL(r.images.up),down:r.images.work.getURL(r.images.down),front:r.images.work.getURL(r.images.front),back:r.images.work.getURL(r.images.back)},s=this.imageOptions.transform,l=Object.assign({key:`pano.${a}`},mr(this.imageOptions,[`format`,`size`,`quality`,`sharpen`,`forceUseExifOrientation`,`mappings`])),u=`pano:`+pp([o,l,s]),d=this.modelScene.parameter,f;d.pano0&&d.pano0.map.name===u?f=d.pano0:d.pano1&&d.pano1.map.name===u&&(f=d.pano1),f?(d.pano0&&d.pano0.map!==f.map&&d.pano0.map.dispose(),d.pano1&&d.pano1.map!==f.map&&d.pano1.map!==((t=d.pano0)==null?void 0:t.map)&&d.pano1.map.dispose(),d.set({pano0:f,pano1:f}),this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,progress:0,state:i,options:n,error:null}))):this.textureLoader.loadCubeTexture(o,{imageURL:{transform:s,options:l},format:c.RGBFormat,viaAjax:!0,fetcher:_f(this.fiveId,r.work)},void 0,void 0,void 0,this.renderer).then(t=>{var o,s;let{body:l}=t;if(this.destroyed||this.pendingTextureId!==e){l.dispose();return}this.pendingTextureId=null,l.name=u;let f=Array.isArray(l.image)?l.image[0]:l.image,p=(o=f==null?void 0:f.width)==null?2048:o,m=new _m().formPixels(Vh(this.renderer,l,!0,pm).data),h={panoId:a,map:l,mapSize:p,mapHistogram:new c.Vector4().fromArray(m.toArray()),matrix:r.matrix.clone().premultiply(r.work.transform),zoom:1};d.pano0&&d.pano0.map.dispose(),d.pano1&&d.pano1.map!==((s=d.pano0)==null?void 0:s.map)&&d.pano1.map.dispose(),d.set({pano0:h,pano1:h}),this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,progress:0,state:i,options:n,error:null}))}).catch(t=>{this.destroyed||this.pendingTextureId!==e||(this.pendingTextureId=null)})}}}onDblTapGesture(e){if(!this.initAnimationIsReady)return;this.userAction=e.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let t=e.state,n=e.center.raycaster,r=n.ray.origin.clone().add(n.ray.direction.clone().setLength(3)),i=1,[a]=this.modelScene.intersectRaycaster(n);if(a&&(r=a.point.clone(),i=a.distance>4/2?1:3),e.state.distance=i,e.state.offset=r,this.emit(`gesture.dbltap`,e),e.defaultPrevented)return;let o={x:t.offset.x,y:t.offset.y,z:t.offset.z,distance:t.distance};this.locationMotion.set(o,360).catch(q),this.hideIntersectMesh()}hideIntersectMesh(){this.intersectMesh.visible===!0&&(this.intersectMesh.visible=!1,this.needsRender=!0)}};function ev(e){return e==null}var tv={type:`move`},nv=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null,this._axes=[0,0]}getHandSpace(){return this._hand===null&&(this._hand=new c.Group,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new c.Group,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new c.Vector3,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new c.Vector3),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new c.Group,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new c.Vector3,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new c.Vector3),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}disconnect(e){return this.dispatchEvent({type:`disconnected`,data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}getAxes(){return this._axes}update(e,t,n){let r=null,i=null,a=null,o=this._targetRay,s=this._grip,l=this._hand;if(e&&e.gamepad&&e.gamepad.axes&&(this._axes=[e.gamepad.axes[2],e.gamepad.axes[3]]),e&&t.session.visibilityState!==`visible-blurred`)if(o!==null&&(r=t.getPose(e.targetRaySpace,n),r!==null&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(tv))),l&&e.hand){a=!0;for(let r of e.hand.values()){let e=t.getJointPose(r,n);if(l.joints[r.jointName]===void 0){let e=new c.Group;e.matrixAutoUpdate=!1,e.visible=!1,l.joints[r.jointName]=e,l.add(e)}let i=l.joints[r.jointName];e!==null&&(i.matrix.fromArray(e.transform.matrix),i.matrix.decompose(i.position,i.rotation,i.scale),i.jointRadius=e.radius),i.visible=e!==null}let r=l.joints[`index-finger-tip`],i=l.joints[`thumb-tip`],o=r.position.distanceTo(i.position),s=.02,u=.005;l.inputState.pinching&&o>s+u?(l.inputState.pinching=!1,this.dispatchEvent({type:`pinchend`,handedness:e.handedness,target:this})):!l.inputState.pinching&&o<=s-u&&(l.inputState.pinching=!0,this.dispatchEvent({type:`pinchstart`,handedness:e.handedness,target:this}))}else s!==null&&e.gripSpace&&(i=t.getPose(e.gripSpace,n),i!==null&&(s.matrix.fromArray(i.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale),i.linearVelocity?(s.hasLinearVelocity=!0,s.linearVelocity.copy(i.linearVelocity)):s.hasLinearVelocity=!1,i.angularVelocity?(s.hasAngularVelocity=!0,s.angularVelocity.copy(i.angularVelocity)):s.hasAngularVelocity=!1));return o!==null&&(o.visible=r!==null),s!==null&&(s.visible=i!==null),l!==null&&(l.visible=a!==null),this}},rv=1,iv=()=>{try{let e=/Macintosh/i.test(navigator.userAgent),t=navigator.maxTouchPoints===5;return e&&t}catch(e){return console.error(`Error determining if the device is an Apple Vision Pro: `,e),!1}},av=()=>{try{return/Oculus/i.test(navigator.userAgent)}catch(e){return console.error(`Error determining if the device is an Oculus: `,e),!1}},ov=class{constructor(e,t,n){var r,i,a,o,s;this.isPanorama=(r=n==null?void 0:n.isPanorama)==null?!0:r,navigator.userAgent.toLowerCase();let l;l=iv()?`VP`:av()?`Oculus`:`Pico`,this.machineType=(i=n==null?void 0:n.machineType)==null?l:i,this.renderer=e,this.gl=t,this.enabled=!1,this.session=null,this.referenceSpaceType=(a=n==null?void 0:n.referenceSpaceType)==null?`local-floor`:a,this.referenceSpace=null,this.onSessionStartCallback=(o=n==null?void 0:n.onSessionStart)==null?q:o,this.onSessionEndCallback=(s=n==null?void 0:n.onSessionEnd)==null?q:s,this.controllers=[new nv,new nv],this.inputSourcesMap=new Map,this.cameraVR=new c.ArrayCamera,this.cameraL=new c.PerspectiveCamera,this.cameraR=new c.PerspectiveCamera,this.cameraVR.cameras.push(this.cameraL,this.cameraR),this.cameraL.viewport=new c.Vector4,this.cameraR.viewport=new c.Vector4,this.cameraL.layers.enable(1),this.cameraR.layers.enable(2),this.cameraVR.layers.enable(1),this.cameraVR.layers.enable(2),this.isPresenting=!1,this.currentDepthNear=null,this.currentDepthFar=null,this.cameraLPos=new c.Vector3,this.cameraRPos=new c.Vector3}getController(e){let t=this.controllers[e];return t||console.warn(`no controller find`),t.getTargetRaySpace()}getRightController(){if(!this.session||!this.session.inputSources)return null;let e;if(this.session.inputSources.forEach((t,n)=>{t.handedness===`right`&&(e=n)}),e===void 0)return console.warn(`no inputSource for right hand`),null;let t=this.controllers[e];return t?t.getTargetRaySpace():(console.warn(`right controller not find`),null)}getLeftController(){if(!this.session||!this.session.inputSources)return null;let e;if(this.session.inputSources.forEach((t,n)=>{t.handedness===`left`&&(e=n)}),e===void 0)return console.warn(`no inputSource for left hand`),null;let t=this.controllers[e];return t?t.getTargetRaySpace():(console.warn(`left controller not find`),null)}getControllerGrip(e){let t=this.controllers[e];return t||console.warn(`no controller find`),t.getGripSpace()}getCameras(){return{cameraL:this.cameraL,cameraR:this.cameraR,cameraVR:this.cameraVR}}updateCamera(e,t){t===null?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.getInverse(e.matrixWorld)}setProjectionFromUnion(e,t,n){this.cameraLPos.setFromMatrixPosition(t.matrixWorld),this.cameraRPos.setFromMatrixPosition(n.matrixWorld);var r=this.cameraLPos.distanceTo(this.cameraRPos),i=t.projectionMatrix.elements,a=n.projectionMatrix.elements,o=i[14]/(i[10]-1),s=i[14]/(i[10]+1),c=(i[9]+1)/i[5],l=(i[9]-1)/i[5],u=(i[8]-1)/i[0],d=(a[8]+1)/a[0],f=o*u,p=o*d,m=r/(-u+d),h=m*-u;t.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(h),e.translateZ(m),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.getInverse(e.matrixWorld);var g=o+m,_=s+m,v=f-h,y=p+(r-h),b=c*s/_*g,x=l*s/_*g;e.projectionMatrix.makePerspective(v,y,b,x,g,_)}getCamera(e){this.cameraVR.near=this.cameraR.near=this.cameraL.near=e.near,this.cameraVR.far=this.cameraR.far=this.cameraL.far=e.far,this.session&&(this.currentDepthNear!==this.cameraVR.near||this.currentDepthFar!==this.cameraVR.far)&&(this.session.updateRenderState({depthNear:this.cameraVR.near,depthFar:this.cameraVR.far}),this.currentDepthNear=this.cameraVR.near,this.currentDepthFar=this.cameraVR.far);let t=e.parent,n=this.cameraVR.cameras;this.updateCamera(this.cameraVR,t);for(let e=0;e<n.length;e++)this.updateCamera(n[e],t);e.matrixWorld.copy(this.cameraVR.matrixWorld);let r=e.children;for(let e=0,t=r.length;e<t;e++)r[e].updateMatrixWorld(!0);return n.length===2?this.setProjectionFromUnion(this.cameraVR,this.cameraL,this.cameraR):this.cameraVR.projectionMatrix.copy(this.cameraL.projectionMatrix),this.cameraVR}updateInputSources(e){if(!this.session){console.warn(`session is lose!`);return}let t=this.session.inputSources;for(let e=0;e<this.controllers.length;e++)this.inputSourcesMap.set(t[e],this.controllers[e]);for(let t=0;t<e.removed.length;t++){let n=e.removed[t],r=this.inputSourcesMap.get(n);r&&(r.dispatchEvent({type:`disconnected`,data:n}),this.inputSourcesMap.delete(n))}for(let t=0;t<e.added.length;t++){let n=e.added[t],r=this.inputSourcesMap.get(n);r&&r.dispatchEvent({type:`connected`,data:n})}}onSessionEvent(e){let t=this.inputSourcesMap.get(e.inputSource);t&&t.dispatchEvent({type:e.type})}onSessionEnd(){this.inputSourcesMap.forEach(function(e,t){e.disconnect(t)}),this.inputSourcesMap.clear(),this.isPresenting=!1,this.session=null,ri.shared.setContext(null),this.onSessionEndCallback()}onRequestReferenceSpace(e){this.referenceSpace=e,this.isPresenting=!0,this.session&&this.onSessionStartCallback(this.session)}setSession(e){if(this.session=e,this.session){this.session.addEventListener(`select`,e=>{this.onSessionEvent(e)}),this.session.addEventListener(`selectstart`,e=>{this.onSessionEvent(e)}),this.session.addEventListener(`selectend`,e=>{this.onSessionEvent(e)}),this.session.addEventListener(`squeeze`,e=>{this.onSessionEvent(e)}),this.session.addEventListener(`squeezestart`,e=>{this.onSessionEvent(e)}),this.session.addEventListener(`squeezeend`,e=>{this.onSessionEvent(e)}),this.session.addEventListener(`end`,e=>{this.onSessionEnd()});let e=this.gl.getContextAttributes();this.gl.makeXRCompatible().then(()=>{let t={antialias:e==null?void 0:e.antialias,alpha:e==null?void 0:e.alpha,depth:e==null?void 0:e.depth,stencil:e==null?void 0:e.stencil,framebufferScaleFactor:rv};if(!this.session){console.error(`session is lose while set session!`);return}switch(this.machineType){case`Pico`:case`VP`:this.session.updateRenderState({baseLayer:new XRWebGLLayer(this.session,this.gl,t)});break;case`Oculus`:this.session.updateRenderState({baseLayer:new XRWebGLLayer(this.session,this.gl,t)});break;default:this.machineType;break}this.session.requestReferenceSpace(this.referenceSpaceType).then(e=>{this.onRequestReferenceSpace(e)}),this.session.addEventListener(`inputsourceschange`,e=>{this.updateInputSources(e)})})}}},sv=class extends c.InstancedBufferGeometry{constructor(){super(),this.type=`LineSegmentsGeometry`,this.setIndex([0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5]),this.setAttribute(`position`,new c.Float32BufferAttribute([-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],3)),this.setAttribute(`uv`,new c.Float32BufferAttribute([-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],2))}applyMatrix4(e){let t=this.attributes.instanceStart,n=this.attributes.instanceEnd;return t!==void 0&&(t.applyMatrix4(e),n.applyMatrix4(e),t.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}setPositions(e){let t;t=e instanceof Float32Array?e:Array.isArray(e)?new Float32Array(e):new Float32Array;let n=new c.InstancedInterleavedBuffer(t,6,1);return this.setAttribute(`instanceStart`,new c.InterleavedBufferAttribute(n,3,0)),this.setAttribute(`instanceEnd`,new c.InterleavedBufferAttribute(n,3,3)),this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(e){let t;t=e instanceof Float32Array?e:Array.isArray(e)?new Float32Array(e):new Float32Array;let n=new c.InstancedInterleavedBuffer(t,6,1);return this.setAttribute(`instanceColorStart`,new c.InterleavedBufferAttribute(n,3,0)),this.setAttribute(`instanceColorEnd`,new c.InterleavedBufferAttribute(n,3,3)),this}fromWireframeGeometry(e){return this.setPositions(e.attributes.position.array),this}fromEdgesGeometry(e){return this.setPositions(e.attributes.position.array),this}fromMesh(e){return this.fromWireframeGeometry(new c.WireframeGeometry(e.geometry)),this}fromLineSegments(e){var t=e.geometry;if(t instanceof c.Geometry){let e=new c.BufferGeometry().fromGeometry(t);this.setPositions(e.attributes.position.array)}else t instanceof c.BufferGeometry&&this.setPositions(t.attributes.position.array);return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new c.Box3);let e=this.attributes.instanceStart,t=this.attributes.instanceEnd;if(e!==void 0&&t!==void 0){let n=new c.Box3;this.boundingBox.setFromBufferAttribute(e),n.setFromBufferAttribute(t),this.boundingBox.union(n)}}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new c.Sphere),this.boundingBox===null&&this.computeBoundingBox();let e=this.attributes.instanceStart,t=this.attributes.instanceEnd;if(e!==void 0&&t!==void 0){let n=this.boundingSphere.center;this.boundingBox.getCenter(n);let r=0,i=new c.Vector3;for(let a=0,o=e.count;a<o;a++)i.fromBufferAttribute(e,a),r=Math.max(r,n.distanceToSquared(i)),i.fromBufferAttribute(t,a),r=Math.max(r,n.distanceToSquared(i));this.boundingSphere.radius=Math.sqrt(r),isNaN(this.boundingSphere.radius)&&console.error(`THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.`,this)}}toJSON(){}};Object.assign(sv.prototype,{isLineSegmentsGeometry:!0});var cv={uniforms:c.UniformsUtils.merge([c.UniformsLib.common,c.UniformsLib.fog,{linewidth:{value:1},resolution:{value:new c.Vector2(1,1)},dashScale:{value:1},dashSize:{value:1},gapSize:{value:1},opacity:{value:1}}]),vertexShader:`
2040
+ `,z_=class extends c.Object3D{constructor(){super(),this.progress=0,this.opacity=0,this.loading=!1,this.current=!1,this.disabled=!1,this.currentMotion=new Z({ringScale:1.1,ringOpacity:0,circleFade:0,circleOpacity:.85,circleScale:1}),this.opacityMotion=new Z({opacity:0}),this.loadingMotion=new Z({opacity:0}),this.disableMotion=new Z({opacity:0});let e={blending:c.CustomBlending,blendSrc:c.SrcAlphaFactor,blendDst:c.OneMinusSrcAlphaFactor,blendSrcAlpha:c.OneFactor,blendDstAlpha:c.OneMinusSrcAlphaFactor,depthWrite:!1,transparent:!0};this.hitTestMesh=new c.Mesh(P_,new c.MeshBasicMaterial(Object.assign(Object.assign({},e),{color:0,opacity:0}))),this.hitTestMesh.scale.set(1.5,1.5,1.5),this.ringMesh=new c.Mesh(P_,new c.ShaderMaterial(Object.assign(Object.assign({},e),{vertexShader:L_,fragmentShader:R_,uniforms:{opacity:{value:0}}}))),this.panoMesh=new c.Mesh(P_,new c.ShaderMaterial(Object.assign(Object.assign({},e),{vertexShader:F_,fragmentShader:I_,uniforms:{circleScale:{value:1.1},circleFade:{value:0},circleOpacity:{value:.5},loadingAngle:{value:0},loadingOpacity:{value:0},opacity:{value:0},disable:{value:0}}}))),this.add(this.hitTestMesh),this.add(this.ringMesh),this.add(this.panoMesh),this.renderOrder=1e4,this.needsRender=!0}setProgress(e){this.progress=e,this.setLoading(e>0)}setOpacity(e){this.opacity!==e&&(this.opacity=e=W(e,0,1),this.opacityMotion.set({opacity:e},30).catch(q))}setCurrent(e){if(this.current!==e){if(e)this.currentMotion.setKeyframes([{progress:0,value:{ringScale:2,ringOpacity:0,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.05,value:{ringScale:1,ringOpacity:1,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.15,value:{ringScale:1.2,ringOpacity:1,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.25,value:{ringScale:1.1,ringOpacity:1,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.8,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.85,circleScale:1}},{progress:.9,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.65,circleScale:.8}},{progress:.92,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.65,circleScale:.8}},{progress:1,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.85,circleScale:1.1}}],1500).catch(q);else{let e=[{progress:0,value:Object.assign({},this.currentMotion.value)},{progress:1,value:{ringScale:1.1,ringOpacity:0,circleFade:0,circleOpacity:.85,circleScale:1}}];this.currentMotion.setKeyframes(e,200).catch(q)}this.current=e}}setLoading(e){this.loading!==e&&(e?this.loadingMotion.setKeyframes([{progress:0,value:{opacity:0}},{progress:.3,value:{opacity:0}},{progress:1,value:{opacity:.8}}],500).catch(q):this.loadingMotion.set({opacity:0},0).catch(q),this.loading=e,this.disabled===!0&&this.setDisabled(!1),this.needsRender=!0)}setDisabled(e){this.disabled!==e&&(this.disabled=e,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({opacity:e?1:0},300).catch(q),this.needsRender=!0)}tap(){return Promise.resolve()}updateTime(e,t){this.opacityMotion.update(e),this.currentMotion.update(e),this.loadingMotion.update(e);let n=this.opacityMotion.value.opacity;this.visible=n!==0;let{ringScale:r,ringOpacity:i,circleFade:a,circleOpacity:o,circleScale:s}=this.currentMotion.value;this.ringMesh.scale.set(r,1,r),this.ringMesh.material.uniforms.opacity.value=i*n,this.panoMesh.material.uniforms.opacity.value=n,this.panoMesh.material.uniforms.circleOpacity.value=o,this.panoMesh.material.uniforms.circleScale.value=s,this.panoMesh.material.uniforms.circleFade.value=a,this.panoMesh.material.uniforms.loadingOpacity.value=this.loadingMotion.value.opacity,this.panoMesh.material.uniforms.disable.value=this.disableMotion.value.opacity,this.panoMesh.material.uniforms.loadingAngle.value=e/120%(Math.PI*2),this.needsRender=!0}dispose(){this.hitTestMesh.material.dispose(),this.ringMesh.material.dispose(),this.panoMesh.material.dispose()}},B_=1500,V_=Object.assign({},hr(Xg,[`maxLatitude`,`minLatitude`])),H_=class e extends Zg{static parseArgs(t){if(t instanceof e)return t;let n=Object.assign(Object.assign({},t),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2});return super.parseArgs(n)}static initAnimationEndState(e){let t=this.parseArgs(e),n=super.initAnimationEndState(t);return Object.assign(Object.assign({},n),{mode:`VRPanorama`})}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`VRPanorama`,this.cardboard=new T_(this.renderer);let r=N_();this.helperElement=r;let i=new Hh(r);this.element.parentNode&&(this.element.parentNode.insertBefore(r,this.element),this.updateHelperElementSize(),i.on(`tap`,()=>this.emit(`vr.requestExit`,$(`vr.requestExit`,{})))),this.destroyHelper=()=>{i.destroy(),r.parentNode&&r.parentNode.removeChild(r),this.helperElement=void 0}}updateConfiguration(e){return super.updateConfiguration(Object.assign(Object.assign({},e),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2}))}destroy(){super.destroy(),this.cardboard.dispose(),this.destroyHelper()}isReady(){return!1}updateRenderSize(){this.needsRender=!0}updateCamera(e,t,n){return Promise.resolve()}updateCameraWithKeyframes(e,t,n){return Promise.resolve()}updateTime(e,t,...n){var r,i,a,o,s,l;if(this.destroyed)return;this.updateHelperElementSize(),this.userAction=!0,this.needsRender=!0;let u={},d={},f=this.locationMotion.keyframes[0],p=this.locationMotion.keyframes[this.locationMotion.keyframes.length-1],[m,h]=this.locationMotion.getKeyFrameSegment(e),g=this.panoResourceFromLocationMotionKeyframe(m),_=this.panoResourceFromLocationMotionKeyframe(h),v=this.panoResourceFromLocationMotionKeyframe(f),y=this.panoResourceFromLocationMotionKeyframe(p),b=!1;if(this.modelAlphaMotion.ended===!1&&(this.modelAlphaMotion.update(e),u.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.perspToOrthoMotion.ended===!1&&(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(W(this.perspToOrthoMotion.value.perspToOrtho,0,1))),this.locationMotion.ended===!1){this.locationMotion.update(e);let t=this.locationMotion.value.count-h.value.count+1,n=new c.Vector3().copy(g.position),a=new c.Vector3().copy(_.position);if(u.progress=t,t>=.01&&t<=.99&&(u.progress=W(_.effectEasing(t),.01,.99)),_.panoPicture&&(t<1?g.panoPicture&&(u.pano0=g.panoPicture):u.pano0=_.panoPicture,u.pano1=_.panoPicture),_.effect===`montage`?u.transition=`BLACK`:_.effect===`spread`?u.transition=`SPREAD`:u.transition=`FADE`,_.effect===`zoomin`||_.effect===`zoomout`?u.progress=Math.pow(t,3):_.effect===`model`&&this.camera.pose.distance<.01&&(u.modelAlpha=1-Math.pow(W(Math.abs(t-.5)*2,0,1),4)),t<1&&_.effect!==`fly`){if(u.pano0&&g.panoPicture){let e={panoId:u.pano0.panoId,map:u.pano0.map,mapHistogram:u.pano0.mapHistogram,mapSize:u.pano0.mapSize,zoom:u.pano0.zoom,matrix:g.panoPicture.matrix.clone().setPosition(_.position)},t=this.panoPictureObserverMap.get(u.pano0);t&&this.panoPictureObserverMap.set(e,t),u.pano0=e}n.copy(a),b=!0}d.distance=this.locationMotion.value.distance,d.offset=new c.Vector3(n.x+(a.x-n.x)*t,n.y+(a.y-n.y)*t,n.z+(a.z-n.z)*t);let o=[],s=[];for(let e of this.locationMotion.keyframes){let{key:t,progress:n}=e;t!==void 0&&(o.push(t),n>this.locationMotion.progress&&s.push(t))}for(let e of Object.keys(this.panoResources)){if(s.indexOf(e)>=0)continue;let t=this.panoResources[e];if(t.panoPicture){let e=t.panoPicture.map;if(e){if(e===((r=u.pano0)==null?void 0:r.map)||e===((i=u.pano1)==null?void 0:i.map))continue;e.dispose(),t.panoPicture=null}}o.indexOf(e)>=0||delete this.panoResources[e]}this.currentPano=hp(_.panoId),this.emit(`pano.moving`,$(`pano.moving`,{userAction:this.userAction,prevPano:hp(v.panoId),state:Object.assign(Object.assign(Object.assign(Object.assign({},hp(y.panoId)),{mode:this.mode}),jh(this.camera.pose)),d),options:{},progress:this.locationMotion.progress,error:null}))}Ph(u)===!1&&this.modelScene.parameter.set(u),d.offset&&this.camera.position.copy(d.offset);let x=this.camera.pose.longitude,S=this.camera.pose.latitude;this.camera.quaternion.fromArray(this.cardboard.sensor.getOrientation()),this.camera.computePose(),(x!==this.camera.pose.longitude||S!==this.camera.pose.latitude)&&(this.cameraMotion.set(mr(this.camera.pose,[`longitude`,`latitude`]),0).catch(q),this.emit(`camera.update`,$(`camera.update`,{userAction:!0,state:Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),jh(this.camera.pose))}))),this.works.getObserver(this.currentPano);let C=this.works.getObserver(g.panoId),w=this.works.getObserver(_.panoId),T=new Map;if(C)for(let e of C.accessibleNodes){let t=C.work.observers[e];if(t){let e=Q({panoIndex:t.panoIndex,workCode:t.work.workCode});T.set(e,t)}}if(w)for(let e of w.accessibleNodes){let t=w.work.observers[e];if(t){let e=Q({panoIndex:t.panoIndex,workCode:t.work.workCode});T.set(e,t)}}if(this.panoMeshes.forEach((e,t)=>{let n=T.get(t);n?(e.position.copy(n.position).applyMatrix4(n.work.transform),T.delete(t)):(this.helper.remove(e),e.dispose(),this.panoMeshes.delete(t))}),T.forEach((e,t)=>{let n=new z_;n.position.copy(e.position).applyMatrix4(e.work.transform),e.position.distanceTo(e.standingPosition)>this.aerialObserverMinHeight?n.scale.setScalar(15):n.scale.setScalar(1),this.panoMeshes.set(t,n),this.helper.add(n),T.delete(t)}),this.camera.pose.distance>.1||b?this.panoMeshes.forEach((n,r)=>{n.setOpacity(0),n.updateTime&&n.updateTime(e,t),n.visible=!1}):this.panoMeshes.forEach((e,t)=>{let n=hp(t),r=this.works.getObserver(n);if(!r)return;if(!r.loadable&&!r.active){e.setOpacity(0);return}let i=e.position.clone().setY(this.camera.position.y).distanceTo(this.camera.position);i<.05?e.setOpacity(0):e.setOpacity(W(1.5/i,0,1)),gp(this.currentPano,n)&&e.setOpacity(0),e.lookAt(this.camera.position)}),this.locationMotion.ended){let n=this.intersect(e);this.panoMeshes.forEach((r,i)=>{r.setCurrent(r===n),r.updateTime&&r.updateTime(e,t)})}{let e=(a=this.modelScene.parameter.progress)==null?1:a,t=Math.round(e),n=this.modelScene.parameter.pano0,r=this.modelScene.parameter.pano1,i=t===0?n:r,s;if(i&&(s=this.works.getObserver(i.panoId),s||(s=this.panoPictureObserverMap.get(i))),this.tiling.appearDuration=this.tileAppearDuration,this.tiling.maxRequest=e<(si()?.6:.99)?0:this.tileMaxRequest,this.tiling.imageOptions=this.imageOptions,!s||!i||this.tileLevelForFov===!1||this.camera.perspToOrtho.x>0){this.tiling.setObserver(null);let e={renderer:this.renderer,resolution:this.camera.resolution,pixelRatio:this.camera.pixelRatio,time:this.camera.time,cameraMatrix:this.camera.matrixWorld,cameraProjectionMatrix:this.camera.projectionMatrix,panoMap:null,panoMatrix:new c.Matrix4,panoZoom:1,minLevel:0,level:0};this.tiling.update(e),this.modelScene.parameter.set(`refinedScreen`,null)}else{let e=Qr(i.mapSize),a=e+1,l=new c.Vector2().copy(this.camera.resolution).multiplyScalar(this.camera.pixelRatio),u=Math.floor(this.tileLevelForFov(this.camera.fov,l)),d=u>e?u:0;this.tiling.setObserver(s);let f={renderer:this.renderer,resolution:this.camera.resolution,pixelRatio:this.camera.pixelRatio,time:this.camera.time,cameraMatrix:this.camera.matrixWorld,cameraProjectionMatrix:this.camera.projectionMatrix,panoMap:i.map,panoMatrix:i.matrix,panoZoom:i.zoom,minLevel:a,level:d},p=this.tiling.update(f),m={map:this.tiling.renderTarget.texture,matrixInverse:this.tiling.camera.matrixWorldInverse,projectionMatrix:this.tiling.camera.projectionMatrix,pano:t,opacity:(n==null?void 0:n.panoId)===(r==null?void 0:r.panoId)?1:Vu(Math.abs(((o=this.modelScene.parameter.progress)==null?0:o)-.5)*2)},h=this.modelScene.parameter.refinedScreen;(p||m.pano!==(h==null?void 0:h.pano)||m.opacity!==(h==null?void 0:h.opacity))&&this.modelScene.parameter.set(`refinedScreen`,m)}}this.panoVideo.object.position.copy(this.camera.position),this.panoVideo.updateTime(e);{let e=_.effect,{pano0:t,pano1:n}=this.modelScene.parameter;if(t&&n&&t!==n&&(e===`fly`||e===`model`)&&this.flyEffectUseDepthBuffer){if(((s=this.modelScene.parameter.pano0Depth)==null?void 0:s.panoId)!==t.panoId||((l=this.modelScene.parameter.pano1Depth)==null?void 0:l.panoId)!==n.panoId){this.pano0DepthCubeRenderTarget?this.pano0DepthCubeRenderTarget.width!==512&&this.pano0DepthCubeRenderTarget.setSize(512,512):this.pano0DepthCubeRenderTarget=new c.WebGLCubeRenderTarget(512,{minFilter:c.NearestFilter,magFilter:c.NearestFilter,generateMipmaps:!1}),this.pano1DepthCubeRenderTarget?this.pano1DepthCubeRenderTarget.width!==512&&this.pano1DepthCubeRenderTarget.setSize(512,512):this.pano1DepthCubeRenderTarget=new c.WebGLCubeRenderTarget(512,{minFilter:c.NearestFilter,magFilter:c.NearestFilter,generateMipmaps:!1});let e=new c.CubeCamera(this.camera.near,this.camera.far,this.pano0DepthCubeRenderTarget);e.matrix.copy(t.matrix),e.matrixWorld.copy(e.matrix),e.matrixAutoUpdate=!1,Gg(this.renderer,this.modelScene,e,500);let r=new c.CubeCamera(this.camera.near,this.camera.far,this.pano1DepthCubeRenderTarget);r.matrix.copy(n.matrix),r.matrixWorld.copy(r.matrix),r.matrixAutoUpdate=!1,Gg(this.renderer,this.modelScene,r,500),this.modelScene.parameter.set({pano0Depth:{panoId:t.panoId,map:this.pano0DepthCubeRenderTarget.texture,mapSize:this.pano0DepthCubeRenderTarget.width,maxDepth:500},pano1Depth:{panoId:n.panoId,map:this.pano1DepthCubeRenderTarget.texture,mapSize:this.pano1DepthCubeRenderTarget.width,maxDepth:500}})}}else this.modelScene.parameter.set({pano0Depth:null,pano1Depth:null}),this.flyEffectUseDepthBuffer||(this.pano0DepthCubeRenderTarget&&(this.pano0DepthCubeRenderTarget.dispose(),this.pano0DepthCubeRenderTarget=void 0),this.pano1DepthCubeRenderTarget&&(this.pano1DepthCubeRenderTarget.dispose(),this.pano1DepthCubeRenderTarget=void 0))}}render(){return this.renderer.setRenderTarget(null),this.renderer.setScissorTest(!1),this.cardboard.render(this.scene,this.camera),!0}setCamera(e={}){}destroyHelper(){}updateHelperElementSize(){if(!this.helperElement)return;let e=new c.Vector2(this.element.offsetWidth,this.element.offsetHeight),t=e.x*this.viewport.left,n=e.y*(1-this.viewport.bottom-this.viewport.height),r=e.x*this.viewport.width,i=e.y*this.viewport.height;this.helperElement.style.marginLeft!==t+`px`&&(this.helperElement.style.marginLeft=t+`px`),this.helperElement.style.marginTop!==n+`px`&&(this.helperElement.style.marginTop=n+`px`),this.helperElement.style.width!==r+`px`&&(this.helperElement.style.width=r+`px`),this.helperElement.style.height!==i+`px`&&(this.helperElement.style.height=i+`px`)}intersect(e){var t,n;if(this.locationMotion.ended===!1){this.intersectMesh.visible=!1,this.activePanoMesh=void 0,this.activeTime=void 0;return}if(this.activePanoMesh&&this.activeTime&&e-this.activeTime>B_){let e=this.activePanoMesh,t=null;return this.panoMeshes.forEach((n,r)=>{n===e&&(t=r)}),t!==null&&this.moveToPano(hp(t),{},!0),this.activePanoMesh=void 0,this.activeTime=void 0,e}let r=this.camera.getDirection(new c.Vector3),i=new c.Raycaster(this.camera.position,r);i.params.Points={threshold:.1},i.firstHitOnly=!0,i.floorIndex=-1;let a,o=[],s=this.works.getObserver(this.currentPano),l=s?s.accessibleNodes.map(e=>Q({panoIndex:e,workCode:s.work.workCode})):[];for(let e of l){let r=this.panoMeshes.get(e);if(r){let[e]=i.intersectObject((t=r.hitTestMesh)==null?r:t,!0);if(e){let t=(n=s==null?void 0:s.floorIndex)==null?0:n;o.push({panoMesh:r,intersection:Object.assign({floorIndex:t,floor:t},e)})}}}let[u]=o.sort((e,t)=>e.intersection.distance-t.intersection.distance);u?(a=u.intersection,this.activePanoMesh!==u.panoMesh&&(this.activePanoMesh=u.panoMesh,this.activeTime=e),this.intersectMesh.position.copy(u.panoMesh.position),this.intersectMesh.lookAt(this.camera.position)):(this.activePanoMesh=void 0,this.activeTime=void 0),a||(a=this.modelScene.intersectRaycaster(i)[0]);let d=$(`intersect.update`,{raycaster:i,intersection:a==null?null:a,object:this.intersectMesh});if(this.emit(`intersect.update`,d),d.defaultPrevented){this.hideIntersectMesh();return}if(a&&a.face){let e=a.face.normal,t=new c.Quaternion;t.setFromUnitVectors(new c.Vector3(0,0,1),e),this.intersectMesh.quaternion.copy(t);let n=a.point.clone();this.intersectMesh.position.copy(n),u?this.intersectMesh.visible=!1:this.intersectMesh.visible=!0}else this.intersectMesh.visible=!1;return u==null?void 0:u.panoMesh}onPanGesture(){}onTapGesture(){}onPinchGesture(){}onMouseMove(){}onMouseOut(){}},U_=new c.Vector3(0,1.6,0),W_=new c.Box3,G_=new c.Vector3,K_=Object.assign({},$h),q_=class e extends eg{static parseArgs(t){return t instanceof e?t:super.parseArgs(t)}static initAnimationEndState(e){var t,n,r,i,a,o;let s=this.parseArgs(e),l=s.works,{state:u,currentState:d}=e.initial,f=typeof u.panoIndex==`number`?{workCode:(r=(t=u.workCode)==null?(n=s.works[0])==null?void 0:n.workCode:t)==null?``:r,panoIndex:u.panoIndex}:{workCode:d.workCode,panoIndex:d.panoIndex},p=l.getObserver(f),m=W((i=u.fov)==null?!p||Nh(d.mode)?d.fov:s.defaultFov:i,s.minFov,s.maxFov),h=(a=u.longitude)==null?d.longitude:a,g=W(typeof s.minLatitude==`function`?s.minLatitude(m):s.minLatitude,-Math.PI/2,Math.PI/2),_=W(typeof s.maxLatitude==`function`?s.maxLatitude(m):s.maxLatitude,-Math.PI/2,Math.PI/2),v=W((o=u.latitude)==null?!p||Nh(d.mode)?d.latitude:s.defaultLatitude:o,g,_),y=new c.Vector3;if(s.initial.state.offset)y.copy(s.initial.state.offset);else if(p)y.copy(p.position).applyMatrix4(p.work.transform);else{let e=Vt(d).setLength(d.distance);y.copy(s.initial.currentState.offset).sub(e)}return{workCode:f.workCode,panoIndex:f.panoIndex,mode:`Model`,longitude:h,latitude:v,fov:m,offset:y,distance:0}}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`Model`,this.locationMotion=new Z({x:this.camera.pose.offset.x,y:this.camera.pose.offset.y,z:this.camera.pose.offset.z,distance:this.camera.pose.distance}),this.modelAlphaMotion=new Z({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new Z({perspToOrtho:this.camera.perspToOrtho.x})}updateConfiguration(e){return super.updateConfiguration(e)}destroy(){super.destroy(),this.locationMotion.dispose()}isReady(){return this.locationMotion.ended===!1?!1:super.isReady()}updateWork(t,n,r,i){this.works=t;let a=e.initAnimationEndState(Object.assign(Object.assign({},this),{initial:{currentState:Object.assign(Object.assign({},this.currentPano),this.camera.pose),duration:r.duration,effect:r.effect,state:n,userAction:i}}));return(a.workCode!==this.currentPano.workCode||a.panoIndex!==this.currentPano.panoIndex||a.longitude!==this.cameraMotion.value.longitude||a.latitude!==this.cameraMotion.value.latitude||a.fov!==this.cameraMotion.value.fov)&&this.moveToPosition(a.offset,{duration:0,longitude:a.longitude,latitude:a.latitude,fov:a.fov},i),!0}updateCamera(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r={},i={};return r.distance=0,e.offset!==void 0&&(r.x=e.offset.x,r.y=e.offset.y,r.z=e.offset.z),e.longitude!==void 0&&(i.longitude=e.longitude),e.latitude!==void 0&&(i.latitude=e.latitude),e.fov!==void 0&&(i.fov=e.fov),this.locationMotion.set(r,t).catch(q),this.cameraMotion.set(i,t).catch(q)})}updateCameraWithKeyframes(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r=[],i=[];for(let t of e)r.push({key:t.key,progress:t.progress,value:{distance:0,x:t.value.offset.x,y:t.value.offset.x,z:t.value.offset.x}}),i.push({key:t.key,progress:t.progress,value:{longitude:t.value.longitude,latitude:t.value.latitude,fov:t.value.fov}});return this.locationMotion.setKeyframes(r,t).catch(q),this.cameraMotion.setKeyframes(e,t)})}updateTime(e,t,...n){if(this.destroyed)return;let r={},i={};if(this.modelAlphaMotion.ended||(this.modelAlphaMotion.update(e),r.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.modelScene.parameter.modelAlpha===0&&this.modelScene.parameter.progress!==1){let{pano0:e,pano1:t}=this.modelScene.parameter;e&&e.map!==(t==null?void 0:t.map)&&e.map.dispose(),r.progress=1,r.pano0=r.pano1=t}if(this.perspToOrthoMotion.ended||(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(W(this.perspToOrthoMotion.value.perspToOrtho,0,1))),!this.locationMotion.ended){this.locationMotion.update(e),i.distance=this.locationMotion.value.distance,i.offset=new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z);let t=new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),n=[];for(let e of this.works){let r=this.modelScene.models.find(t=>t.work===e);if(!(!r||r.visible===!1)&&!(e.observers.length<=0)&&(W_.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),W_.containsPoint(t)))for(let t of e.observers)n.push(t)}let r=Nl(n,e=>G_.copy(e.position).applyMatrix4(e.work.transform).distanceTo(t));this.currentPano=r?{workCode:r.work.workCode,panoIndex:r.panoIndex}:{workCode:``,panoIndex:0}}this.cameraMotion.ended||(this.cameraMotion.update(e),i.longitude=this.cameraMotion.value.longitude,i.latitude=this.cameraMotion.value.latitude,i.fov=this.cameraMotion.value.fov),Ph(r)||this.modelScene.parameter.set(r),Ph(i)||this.setCamera(i);let a=this.works.getObserver(this.currentPano);if(this.intersectMesh&&this.intersectMesh.parent&&a&&a.position.y-a.standingPosition.y>10){let e=W(this.camera.position.distanceTo(this.intersectMesh.position)*(2*Math.tan(.5*this.camera.fov/180*Math.PI))/5,.5);this.intersectMesh.scale.setScalar(e)}else this.intersectMesh.scale.setScalar(1)}initAnimation(){return this.destroyed?Promise.resolve():new Promise(t=>{let{state:n,currentState:r,duration:i,userAction:a}=this.initial;this.userAction=a;let o=e.initAnimationEndState(this),s={modelAlpha:1},c={perspToOrtho:0},l={longitude:o.longitude,latitude:o.latitude,fov:o.fov,duration:i,moveStartCallback:e=>{this.perspToOrthoMotion.set(c,i).catch(q),this.modelAlphaMotion.set(s,i).catch(q),this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:e,userAction:this.userAction}))},moveEndCallback:e=>{this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:e,userAction:this.userAction})),t()},moveCancelCallback:()=>{let e=this.currentPano,n=Object.assign(Object.assign({},e),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance});this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:n,userAction:this.userAction})),t()}};this.moveToPosition(o.offset,l,a)})}getTargetState(){let e=this.cameraMotion.getKeyFrameSegment(U())[1],t=this.locationMotion.getKeyFrameSegment(U())[1];return Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:e.value.longitude,latitude:e.value.latitude,fov:e.value.fov,offset:new c.Vector3(t.value.x,t.value.y,t.value.z),distance:t.value.distance})}moveToPano(e,t={},n){let r=this.works.getObserver(e);if(r){let e=new c.Vector3().copy(r.position).applyMatrix4(r.work.transform);this.moveToPosition(e,t,n)}}moveToPosition(e,t={},n){var r,i,a;this.userAction=n,this.stopMomentumMovement();let o=U(),s=new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),l=s.distanceTo(e),u=this.locationMotion.getProgressVelocity(o),d=0;for(let e=1;e<this.locationMotion.keyframes.length;e++){let{x:t,y:n,z:r}=this.locationMotion.keyframes[e-1].value,{x:i,y:a,z:o}=this.locationMotion.keyframes[e].value;d+=Math.sqrt(Math.pow(i-t,2)+Math.pow(a-n,2)+Math.pow(o-r,2))}let f=l===0?0:u*d/l,p=this.calculateMovingDuration(t.duration,l),m={x:e.x,y:e.y,z:e.z,distance:0},h={longitude:t.longitude,latitude:t.latitude,fov:t.fov},g=[];for(let e of this.works){let t=this.modelScene.models.find(t=>t.work===e);if(!(!t||t.visible===!1)&&!(e.observers.length<=0)&&(W_.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),W_.containsPoint(s)))for(let t of e.observers)g.push(t)}let _=Nl(g,e=>G_.copy(e.position).applyMatrix4(e.work.transform).distanceTo(s)),v=_?{workCode:_.work.workCode,panoIndex:_.panoIndex}:{workCode:``,panoIndex:0},y=Object.assign(Object.assign({},v),{mode:this.mode,longitude:(r=h.longitude)==null?this.camera.pose.longitude:r,latitude:(i=h.latitude)==null?this.camera.pose.latitude:i,fov:(a=h.fov)==null?this.camera.pose.fov:a,offset:e.clone(),distance:0}),b=this.currentPano;this.emit(`pano.moveTo`,$(`pano.moveTo`,{options:t,prevPano:b,progress:0,state:y,userAction:this.userAction,error:null})),t.moveStartCallback&&t.moveStartCallback(y),this.cameraMotion.set(h,p).catch(q),this.locationMotion.set(m,p,f).then(()=>{for(let e of this.modelScene.children)e instanceof If&&e.show();let e=Object.assign(Object.assign(Object.assign({},v),{mode:this.mode}),jh(this.camera.pose));this.emit(`pano.arrived`,$(`pano.arrived`,{options:t,prevPano:b,progress:0,state:e,userAction:this.userAction,error:null})),t.moveEndCallback&&t.moveEndCallback(e)},()=>{t.moveCancelCallback&&t.moveCancelCallback(),this.emit(`pano.cancel`,$(`pano.cancel`,{options:t,prevPano:b,progress:0,state:y,userAction:this.userAction,error:null}))})}onTapGesture(e){let t=e.center.raycaster;this.stopMomentumMovement();let[n]=this.modelScene.intersectRaycaster(t);if(n&&n.face){let e=n.face.normal,t=n.point;if(new c.Vector3(0,1,0).angleTo(e)>Math.PI/3){let r=new c.Raycaster;r.firstHitOnly=!0;let i=e.clone().setLength(.3).add(t);r.set(i,new c.Vector3(0,-1,0)),n=this.modelScene.intersectRaycaster(r)[0]}}if(n){let t=new c.Vector3().copy(n.point).add(U_),r=[];for(let e of this.works){let n=this.modelScene.models.find(t=>t.work===e);if(!(!n||n.visible===!1)&&!(e.observers.length<=0)&&(W_.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform),W_.containsPoint(t)))for(let t of e.observers)r.push(t)}let[i,a]=Nl(r,e=>G_.copy(e.position).applyMatrix4(e.work.transform).distanceTo(t),!0);i&&a<5&&(t.y=G_.copy(i.position).applyMatrix4(i.work.transform).y),e.state.offset.copy(t),e.state.distance=0,this.emit(`gesture.tap`,e),e.defaultPrevented||this.moveToPosition(t,{},!0)}else this.emit(`gesture.tap`,e),e.defaultPrevented||this.cameraBounce()}},J_=new c.Box3,Y_=new c.Vector3,X_=.5,Z_=Math.PI/7,Q_={defaultLongitude:Math.PI/4,defaultLatitude:Math.PI/4,defaultDistance:150,maxLatitude:Math.PI/2,minLatitude:0,cameraType:`auto`,cameraFence:null,intersectMeshCreator:()=>new Kh},$_=class e extends Uh{static parseArgs(t){var n,r,i,a,o,s,c,l;if(t instanceof e)return t;let u=super.parseArgs(t);return Object.assign(Object.assign({},u),{defaultLongitude:(n=t.defaultLongitude)==null?Q_.defaultLongitude:n,defaultLatitude:(r=t.defaultLatitude)==null?Q_.defaultLatitude:r,defaultDistance:(i=t.defaultDistance)==null?Q_.defaultDistance:i,maxLatitude:(a=t.maxLatitude)==null?Q_.maxLatitude:a,minLatitude:(o=t.minLatitude)==null?Q_.minLatitude:o,cameraType:(s=t.cameraType)==null?Q_.cameraType:s,cameraFence:(c=t.cameraFence)==null?Q_.cameraFence:c,intersectMeshCreator:(l=t.intersectMeshCreator)==null?Q_.intersectMeshCreator:l})}static distanceFromModel(e,t,n){let r=e.boundingBox,i=r.isEmpty()?10:Math.pow(Math.pow(r.max.x-r.min.x+1,2)+Math.pow(r.max.y-r.min.y+1,2)+Math.pow(r.max.z-r.min.z+1,2),1/2);i=isNaN(i)||!isFinite(i)?1:i;let a=i/2/Math.tan(Math.PI*t/360);return n<1&&(a/=n),isNaN(a)||!isFinite(a)?i:a}static initAnimationEndState(t){var n,r,i,a,o,s,l;let u=this.parseArgs(t),d=u.works,f=u.modelScene,{state:p,currentState:m}=t.initial,h=typeof p.panoIndex==`number`?{workCode:(i=(n=p.workCode)==null?(r=u.works[0])==null?void 0:r.workCode:n)==null?``:i,panoIndex:p.panoIndex}:{workCode:m.workCode,panoIndex:m.panoIndex},g=(a=p.fov)==null?60:a,_=W(typeof u.minLatitude==`function`?u.minLatitude(g):u.minLatitude,-Math.PI/2,Math.PI/2),v=W(typeof u.maxLatitude==`function`?u.maxLatitude(g):u.maxLatitude,-Math.PI/2,Math.PI/2),y=W((o=p.latitude)==null?Mh(m.mode)?m.latitude:u.defaultLatitude:o,_,v),b=e.distanceFromModel(u.modelScene,g,u.camera.aspect),x=new c.Vector3,S=(s=p.distance)==null?Math.min(u.defaultDistance,b):s,C=(l=p.longitude)==null?Mh(m.mode)?m.longitude:u.defaultLongitude:l;if(p.offset)x.copy(p.offset);else{let e=d.getObserver(h);u.defaultDistance<b&&e?(x.copy(e.position).applyMatrix4(e.work.transform),p.longitude===void 0&&(C=m.longitude)):(f.boundingBox.getCenter(x),S=b)}return Object.assign(Object.assign({},h),{mode:`Mapview`,longitude:C,latitude:y,fov:g,offset:x,distance:S})}constructor(t){let n=e.parseArgs(t);super(n),this.mode=`Mapview`,this.defaultLongitude=n.defaultLongitude,this.defaultLatitude=n.defaultLatitude,this.defaultDistance=n.defaultDistance,this.maxLatitude=n.maxLatitude,this.minLatitude=n.minLatitude,this.cameraType=n.cameraType,this.cameraFence=n.cameraFence,this.locationMotion=new Z({x:this.camera.pose.offset.x,y:this.camera.pose.offset.y,z:this.camera.pose.offset.z,distance:this.camera.pose.distance}),this.modelAlphaMotion=new Z({modelAlpha:this.modelScene.parameter.resolveValue().modelAlpha}),this.perspToOrthoMotion=new Z({perspToOrtho:this.camera.perspToOrtho.x}),this.pendingTextureId=null,this.textureLoader=new hi,this.intersectMeshCreator=n.intersectMeshCreator,this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=`intersect`,this.intersectMesh.visible=!1,this.helper.add(this.intersectMesh)}updateConfiguration(e){if(super.updateConfiguration(e)===!1)return!1;if(e.defaultLongitude!==void 0&&this.defaultLongitude!==e.defaultLongitude&&(this.defaultLongitude=e.defaultLongitude),e.defaultLatitude!==void 0&&this.defaultLatitude!==e.defaultLatitude&&(this.defaultLatitude=e.defaultLatitude),e.defaultDistance!==void 0&&this.defaultDistance!==e.defaultDistance&&(this.defaultDistance=e.defaultDistance),e.maxLatitude!==void 0&&this.maxLatitude!==e.maxLatitude&&(this.maxLatitude=e.maxLatitude),e.minLatitude!==void 0&&this.minLatitude!==e.minLatitude&&(this.minLatitude=e.minLatitude),e.cameraType!==void 0&&this.cameraType!==e.cameraType&&(this.cameraType=e.cameraType),this.cameraFence instanceof c.Box3&&e.cameraFence instanceof c.Box3||this.cameraFence instanceof c.Sphere&&e.cameraFence instanceof c.Sphere?this.cameraFence.equals(e.cameraFence)||(this.cameraFence=e.cameraFence):e.cameraFence!==void 0&&(this.cameraFence=e.cameraFence),e.intersectMeshCreator!==void 0&&this.intersectMeshCreator!==e.intersectMeshCreator){this.intersectMeshCreator=e.intersectMeshCreator;let t=this.intersectMesh;this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=t.name,this.intersectMesh.visible=t.visible;let n=this.intersectMesh.parent;n&&n.add(this.intersectMesh),t.dispose()}return!0}destroy(){super.destroy(),this.pendingTextureId=null,this.locationMotion.dispose(),this.panState=void 0,this.intersectMesh.dispose(),this.helper.remove(this.intersectMesh)}isReady(){return this.locationMotion.ended===!1?!1:super.isReady()}updateWork(t,n,r,i){this.userAction=i,this.works=t;let a=e.initAnimationEndState(Object.assign(Object.assign({},this),{initial:{currentState:Object.assign(Object.assign({},this.currentPano),this.camera.pose),duration:r.duration,effect:r.effect,state:n,userAction:i}}));this.currentPano={workCode:a.workCode,panoIndex:a.panoIndex};let o={longitude:a.longitude,latitude:a.latitude,fov:a.fov},s={x:a.offset.x,y:a.offset.y,z:a.offset.z,distance:a.distance};return(o.longitude!==this.cameraMotion.value.longitude||o.latitude!==this.cameraMotion.value.latitude||o.fov!==this.cameraMotion.value.fov)&&this.cameraMotion.set(o,r.duration).catch(q),(s.x!==this.locationMotion.value.x||s.y!==this.locationMotion.value.y||s.z!==this.locationMotion.value.z||s.distance!==this.locationMotion.value.distance)&&this.locationMotion.set(s,r.duration).catch(q),!0}updateModel(e){super.updateModel(e),this.hideIntersectMesh()}updateCamera(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r={},i={};return e.distance!==void 0&&(r.distance=e.distance),e.offset!==void 0&&(r.x=e.offset.x,r.y=e.offset.y,r.z=e.offset.z),e.longitude!==void 0&&(i.longitude=e.longitude),e.latitude!==void 0&&(i.latitude=e.latitude),e.fov!==void 0&&(i.fov=e.fov),this.locationMotion.set(r,t).catch(q),this.cameraMotion.set(i,t).catch(q)})}updateCameraWithKeyframes(e,t,n){return this.initAnimationReady.then(()=>{this.userAction=n,this.stopMomentumMovement();let r=[],i=[];for(let t of e)r.push({key:t.key,progress:t.progress,value:{distance:t.value.distance,x:t.value.offset.x,y:t.value.offset.x,z:t.value.offset.x}}),i.push({key:t.key,progress:t.progress,value:{longitude:t.value.longitude,latitude:t.value.latitude,fov:t.value.fov}});return this.locationMotion.setKeyframes(r,t).catch(q),this.cameraMotion.setKeyframes(e,t)})}updateTime(e,t){if(this.destroyed)return;let n={},r={};if(this.locationMotion.ended||(this.locationMotion.update(e),r.distance=this.locationMotion.value.distance,r.offset=new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z)),this.cameraMotion.ended||(this.cameraMotion.update(e),r.longitude=this.cameraMotion.value.longitude,r.latitude=this.cameraMotion.value.latitude,r.fov=this.cameraMotion.value.fov),this.modelAlphaMotion.ended||(this.modelAlphaMotion.update(e),n.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.modelScene.parameter.modelAlpha===0&&this.modelScene.parameter.progress!==1){let{pano0:e,pano1:t}=this.modelScene.parameter;e&&e.map!==(t==null?void 0:t.map)&&e.map.dispose(),n.progress=1,n.pano0=n.pano1=t}let i=0;if(this.cameraType===`auto`?i=Math.abs(Math.PI/2-this.cameraMotion.value.latitude)<.02||Math.abs(-Math.PI/2-this.cameraMotion.value.latitude)<.02?1:0:this.cameraType===`perspective`?i=0:this.cameraType===`orthographic`&&(i=1),this.perspToOrthoMotion.getTargetKeyframe().value.perspToOrtho!==i&&this.perspToOrthoMotion.set({perspToOrtho:i},500).catch(q),this.perspToOrthoMotion.ended||(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(W(this.perspToOrthoMotion.value.perspToOrtho,0,1))),Ph(n)||this.modelScene.parameter.set(n),Ph(r)||this.setCamera(r),this.cameraFence&&!this.panState&&!this.pinchState&&!this.mouseWheelState&&!this.inMomentumMovement&&this.locationMotion.ended&&this.perspToOrthoMotion.ended&&this.cameraMotion.ended){let e=Vt(this.camera.pose,new c.Vector3),t=new c.Vector3().copy(this.camera.pose.offset).sub(e.clone().multiplyScalar(this.camera.pose.distance));if(this.cameraFence.distanceToPoint(t)>.01){let e=this.cameraFence.clampPoint(t,new c.Vector3),n=this.camera.pose.offset.clone().add(e).sub(t),r=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:n,distance:this.camera.pose.distance});this.fixFinalState(r),this.locationMotion.set({x:r.offset.x,y:r.offset.y,z:r.offset.z,distance:r.distance},300).catch(q)}}if(this.intersectMesh&&this.intersectMesh.parent){let e=W(this.camera.position.distanceTo(this.intersectMesh.position)*(2*Math.tan(.5*this.camera.fov/180*Math.PI))/5,.5);this.intersectMesh.scale.setScalar(e)}else this.intersectMesh.scale.setScalar(1)}getTargetState(){let e=this.cameraMotion.getKeyFrameSegment(U())[1],t=this.locationMotion.getKeyFrameSegment(U())[1];return Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:e.value.longitude,latitude:e.value.latitude,fov:e.value.fov,distance:t.value.distance,offset:new c.Vector3(t.value.x,t.value.y,t.value.z)})}initAnimation(){return this.destroyed?Promise.resolve():new Promise(t=>{let{state:n,currentState:r,duration:i,userAction:a}=this.initial;this.userAction=a;let o=e.initAnimationEndState(this),s={longitude:o.longitude,latitude:o.latitude,fov:o.fov},c={x:o.offset.x,y:o.offset.y,z:o.offset.z,distance:o.distance};this.emit(`initAnimation.start`,$(`initAnimation.start`,{state:o,userAction:this.userAction})),this.perspToOrthoMotion.set({perspToOrtho:0},i).catch(q),this.modelAlphaMotion.set({modelAlpha:1},i/3).catch(q),this.cameraMotion.set(s,i).catch(q),this.locationMotion.set(c,i).then(()=>{this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:o,userAction:this.userAction}))},e=>{let t=Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),jh(this.camera.pose));this.emit(`initAnimation.end`,$(`initAnimation.end`,{state:t,userAction:this.userAction}))}).then(()=>{t()})})}getForwardObserverOrNot(e){let[t]=this.modelScene.intersectRaycaster(e);if(!t)return null;let n=[];for(let t of this.works){let r=this.modelScene.models.find(e=>e.work===t);if(!(!r||r.visible===!1)&&!(t.observers.length<=0)&&(J_.copy(t.observerBox).expandByScalar(10).applyMatrix4(t.transform),J_.containsPoint(e.ray.origin)||e.ray.intersectsBox(J_)))for(let e of t.observers)n.push(e)}let[r,i]=Nl(n,e=>Y_.copy(e.standingPosition).applyMatrix4(e.work.transform).distanceTo(t.point),!0);return r&&i<Math.max(r.standingPosition.distanceTo(this.camera.position)/5,10)?r:null}coordinatesForOffset(e){let t=this.renderer.getSize(new c.Vector2);return{longitude:-2*e.x/(t.x*this.viewport.width),latitude:2*e.y/(t.y*this.viewport.height)}}requestMomentumMovement(e,t,n,r){if(this.inMomentumMovement===null)return;r=Math.max(r,1);let i=Object.assign({},n),a={longitude:0,latitude:0,x:0,y:0,z:0};for(let e=0;e<r;e++)i.longitude*=.996,i.latitude*=.996*.998,i.x*=.99,i.y*=.99,i.z*=.99,a.longitude+=i.longitude,a.latitude+=i.latitude,a.x+=i.x,a.y+=i.y,a.z+=i.z;let o=this.cameraMotion.value.fov,s=Bt(this.cameraMotion.value.longitude+a.longitude),l=W(typeof this.minLatitude==`function`?this.minLatitude(o):this.minLatitude,-Math.PI/2,Math.PI/2),u=W(typeof this.maxLatitude==`function`?this.maxLatitude(o):this.maxLatitude,-Math.PI/2,Math.PI/2),d=W(this.cameraMotion.value.latitude+a.latitude,l,u),f=new c.Vector3(this.locationMotion.value.x+a.x,this.locationMotion.value.y+a.y,this.locationMotion.value.z+a.z),p=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:s,latitude:d,offset:f,fov:o,distance:this.locationMotion.value.distance}),m=e.state.offset.clone().sub(Vt(e.state).setLength(p.distance)),h=!(Math.abs(i.longitude)>1e-4||Math.abs(i.latitude)>1e-4||Math.abs(i.x)>1e-4||Math.abs(i.y)>1e-4||Math.abs(i.z)>1e-4);(this.cameraFence?this.cameraFence.containsPoint(m):!0)===!1&&(h=!0);let g=$(`gesture.momentum`,Object.assign(Object.assign({},e),{isFirst:t,isFinal:h,state:p}));if(this.emit(`gesture.create`,g),this.inMomentumMovement.event=g,this.emit(`gesture.momentum`,g),e.defaultPrevented){this.inMomentumMovement=null;return}this.inMomentumMovement&&(this.cameraMotion.set({longitude:s,latitude:d},0).catch(q),this.locationMotion.set({x:p.offset.x,y:p.offset.y,z:p.offset.z,distance:p.distance},0).catch(q),h?this.inMomentumMovement=null:ri.shared.add((t,n)=>{this.requestMomentumMovement(e,!1,i,n)},!0))}fixFinalState(e){if(this.perspToOrthoMotion.getTargetKeyframe().value.perspToOrtho===1)return;let t=Vt(e,new c.Vector3),n=new c.Vector3().copy(e.offset).sub(t.clone().setLength(e.distance)),r=new c.Raycaster(n,t);r.params.Points={threshold:.1},r.firstHitOnly=!0,r.hitFilter=e=>e.distance>X_+r.near,r.near=this.camera.near,r.far=this.camera.far;let i;if(i=this.modelScene.intersectRaycaster(r)[0],i&&i.distance<this.camera.near&&(i=void 0),!i){let e=new c.Plane(new c.Vector3(0,1,0),-this.modelScene.boundingBox.min.y),t=r.ray.intersectPlane(e,new c.Vector3);if(t){let e=t.distanceTo(r.ray.origin);e<1e3&&e>=r.near&&(i={distance:e,floorIndex:0,floor:0,point:t,object:this.scene,face:null})}}if(!i){let r=Math.max(e.distance,3);i={distance:r,floorIndex:0,floor:0,point:n.clone().add(t.clone().setLength(r)),object:this.scene,face:null}}i.distance>=this.camera.near&&yh(e.distance,i.distance)&&(e.distance=i.distance,e.offset=i.point)}onPanGesture(e){this.userAction=e.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let t=e.pointers.length,n=this.panState,r=0,i=!1;e.pointerType===`mouse`&&(r=e.center.buttons,i=e.center.shiftKey),n&&r===0&&n.buttons!==0&&(r=n.buttons);let a=n==null?void 0:n.target;if(!a){let t=this.relativeClientPosition(e.center),n=this.createRaycasterFromCamera(t,this.camera);a=new c.Vector3().copy(n.ray.direction).multiplyScalar(3).add(n.ray.origin);let[r]=this.modelScene.intersectRaycaster(n);if(!r&&n.ray.direction.y<-.3){let e=new c.Plane(new c.Vector3(0,1,0),0),t=n.ray.intersectPlane(e,new c.Vector3);if(t){let e=t.distanceTo(n.ray.origin);e<1e4&&e>=n.near&&(r={distance:e,floorIndex:0,floor:0,point:t,object:this.scene})}}if(r)a.copy(r.point);else{let e=new c.Vector3().copy(this.camera.pose.offset).sub(this.camera.position).normalize(),t=new c.Plane().setFromNormalAndCoplanarPoint(e,this.camera.pose.offset);n.ray.intersectPlane(t,a)}}if(e.isFinal?this.panState=void 0:this.panState={target:a,buttons:r,pointerLength:t,defaultPrevented:e.defaultPrevented,x:e.center.x,y:e.center.y},n===void 0||n.pointerLength!==t){this.emit(`gesture.pan`,e);return}if(t>1||r===2||i){let t={x:e.center.x-n.x,y:e.center.y-n.y},r=new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),i=Vt(this.cameraMotion.value).setLength(this.locationMotion.value.distance).add(r),a=new c.Vector3().copy(i).sub(n.target).length();a*=Math.tan(this.camera.pose.fov/2*Math.PI/180);let o=this.renderer.getSize(new c.Vector2),s=2*t.x*a/o.y,l=2*t.y*a/o.y,u=new c.Vector3;u.setFromMatrixColumn(this.camera.matrix,0),u.multiplyScalar(-s),r.add(u),this.camera.pose.latitude<Z_?u.setFromMatrixColumn(this.camera.matrix,1):(u.setFromMatrixColumn(this.camera.matrix,0),u.crossVectors(this.camera.up,u)),u.multiplyScalar(l),r.add(u);let d=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:r,distance:this.camera.pose.distance});if(e.state=d,this.emit(`gesture.pan`,e),e.defaultPrevented){this.panState&&(this.panState.defaultPrevented=e.defaultPrevented);return}if(e.isFinal&&n.defaultPrevented)return;if(this.locationMotion.set({x:d.offset.x,y:d.offset.y,z:d.offset.z},0).catch(q),e.isFinal&&(this.fixFinalState(d),Object.assign(e,{__fixFinalState:!0}),this.locationMotion.set({distance:d.distance,x:d.offset.x,y:d.offset.y,z:d.offset.z},0).catch(q)),e.isFinal){let t=this.renderer.getSize(new c.Vector2),n=2*e.velocityX*a/t.y,r=2*e.velocityY*a/t.y,i=new c.Vector3,o=new c.Vector3;i.setFromMatrixColumn(this.camera.matrix,0),i.multiplyScalar(-n),o.add(i),this.camera.pose.latitude<Z_?i.setFromMatrixColumn(this.camera.matrix,1):(i.setFromMatrixColumn(this.camera.matrix,0),i.crossVectors(this.camera.up,i)),i.multiplyScalar(r),o.add(i),this.inMomentumMovement={uuid:nn()},this.requestMomentumMovement(e,!0,{longitude:0,latitude:0,x:o.x,y:o.y,z:o.z},0)}}else{let t={x:e.center.x-n.x,y:e.center.y-n.y},r=this.coordinatesForOffset(t),i=Bt(this.cameraMotion.value.longitude+r.longitude),a=this.camera.pose.fov,o=W(typeof this.minLatitude==`function`?this.minLatitude(a):this.minLatitude,-Math.PI/2,Math.PI/2),s=W(typeof this.maxLatitude==`function`?this.maxLatitude(a):this.maxLatitude,-Math.PI/2,Math.PI/2),c=W(this.cameraMotion.value.latitude+r.latitude,o,s);this.camera.aspect<1&&Math.abs(e.overallVelocityX)>.2&&Math.atan2(Math.abs(e.overallVelocityY),Math.abs(e.overallVelocityX))<Math.PI/6.923&&(c=this.cameraMotion.value.latitude);let l=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:i,latitude:c,fov:a,offset:this.camera.pose.offset,distance:this.camera.pose.distance});if(e.isFinal&&Object.assign(e,{__fixFinalState:!0}),e.state=l,this.emit(`gesture.pan`,e),e.defaultPrevented||e.isFinal&&n.defaultPrevented)return;if(e.isFinal?this.locationMotion.set({distance:l.distance,x:l.offset.x,y:l.offset.y,z:l.offset.z},0).catch(q):this.cameraMotion.set({longitude:l.longitude,latitude:l.latitude},0).catch(q),e.isFinal){let t=e.velocityX,n=e.velocityY;this.inMomentumMovement={uuid:nn()},this.requestMomentumMovement(e,!0,Object.assign(Object.assign({},this.coordinatesForOffset({x:t,y:n})),{x:0,y:0,z:0}),0)}}}onPinchGesture(t){var n;if(!this.initAnimationIsReady)return;this.userAction=t.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let r=(n=this.pinchState)==null?void 0:n.distance;if(t.isFirst){this.pinchState={x:t.center.x,y:t.center.y,scale:1,distance:this.locationMotion.value.distance};return}if(r===void 0)return;let i=this.modelScene.boundingBox.getCenter(new c.Vector3),a=e.distanceFromModel(this.modelScene,this.cameraMotion.value.fov,this.camera.aspect),o=W(r/t.scale,X_,1/0),s=t.state.offset.clone().sub(Vt(t.state).setLength(o)),l=this.modelScene.boundingBox.containsPoint(s),u;if(!l&&this.pinchState&&this.pinchState.scale>t.scale&&i.distanceTo(s)>a?u=t.state.distance:(u=o,this.pinchState&&(this.pinchState.scale=t.scale)),t.state.distance=u,this.emit(`gesture.pinch`,t),!t.defaultPrevented&&(this.locationMotion.set({distance:t.state.distance},0).catch(q),t.pointerType!==`mouse`&&(t.type=`gesture.pan`,this.onPanGesture(t)),t.isFinal)){if(!(`__fixFinalState`in t)){let e=t.state;this.fixFinalState(t.state);let n={x:e.offset.x,y:e.offset.y,z:e.offset.z,distance:e.distance};this.locationMotion.set(n,0).catch(q)}this.panState=void 0,this.pinchState=void 0}}onMouseMove(e){var t,n;if(!this.intersectMesh.parent||this.panState||this.pinchState||this.mouseWheelState||(this.emit(`gesture.mousemove`,e),e.defaultPrevented))return;let r=e.center.raycaster;if(e.isFinal&&this.intersectMesh.parent&&this.intersectMesh.visible===!0){this.hideIntersectMesh();return}let[i]=this.modelScene.intersectRaycaster(r),a=$(`intersect.update`,{raycaster:r,intersection:i==null?null:i,object:this.intersectMesh});if(this.emit(`intersect.update`,a),a.defaultPrevented){this.hideIntersectMesh();return}if(i){let e=(n=(t=i.face)==null?void 0:t.normal)==null?new c.Vector3().copy(r.ray.direction).multiplyScalar(-1):n,a=e.clone(),o=i.point.clone();this.intersectMesh.position.copy(o);let s=o.clone().add(a);if(this.intersectMesh.lookAt(s),Math.abs(e.y)>.99){let e=this.camera.position.clone().sub(o);this.intersectMesh.rotation.z=-Math.atan2(e.z,e.x)}this.intersectMesh.visible=!0,this.needsRender=!0}else this.hideIntersectMesh()}onMouseWheel(t){if(this.initAnimationIsReady)if(this.userAction=t.userAction,this.stopMomentumMovement(),this.hideIntersectMesh(),t.isFinal){let e=Object.assign(Object.assign({},this.currentPano),{mode:this.mode,longitude:this.cameraMotion.value.longitude,latitude:this.cameraMotion.value.latitude,fov:this.cameraMotion.value.fov,offset:new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),distance:this.locationMotion.value.distance});if(this.fixFinalState(e),this.emit(`gesture.mousewheel`,t),t.defaultPrevented)return;let n={x:e.offset.x,y:e.offset.y,z:e.offset.z,distance:e.distance};this.locationMotion.set(n,0).catch(q)}else{let n=e.distanceFromModel(this.modelScene,this.cameraMotion.value.fov,this.camera.aspect),r=new c.Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),i=Vt(this.cameraMotion.value,new c.Vector3).negate(),a=new c.Ray(r,i).intersectBox(this.modelScene.boundingBox,new c.Vector3);a&&(n+=a.distanceTo(r));let o=Math.max(this.locationMotion.value.distance-this.camera.near,0),s=t.center.delta/10*Math.max(o/5,.1);if(o<=n||s>0)if(this.locationMotion.value.distance-s>=X_){let e=this.locationMotion.value.distance-s;t.state.distance=e}else{let e=Vt(this.cameraMotion.value);e.setLength(s),t.state.offset.add(e)}if(this.emit(`gesture.mousewheel`,t),t.defaultPrevented)return;this.locationMotion.set({distance:t.state.distance,x:t.state.offset.x,y:t.state.offset.y,z:t.state.offset.z},0).catch(q)}}onTapGesture(e){var t;this.userAction=e.userAction,this.stopMomentumMovement();let n=e.center.raycaster,r=this.getForwardObserverOrNot(n);if(!r)this.emit(`gesture.tap`,e);else{let n={longitude:this.camera.pose.longitude,latitude:0},i=Object.assign(Object.assign({},e.state),{mode:`Panorama`,workCode:r.work.workCode,panoIndex:r.panoIndex,longitude:n.longitude,latitude:n.latitude,offset:r?r.position.clone():new c.Vector3,distance:0});if(e.state=i,this.emit(`gesture.tap`,e),!e.defaultPrevented&&(this.emit(`pano.select`,$(`pano.select`,{prevPano:this.currentPano,state:i,userAction:e.userAction,options:n,progress:0,error:null})),r&&r.active)){let e=this.pendingTextureId=nn(),a=Q({panoIndex:r.panoIndex,workCode:r.work.workCode}),o={right:r.images.work.getURL(r.images.right),left:r.images.work.getURL(r.images.left),up:r.images.work.getURL(r.images.up),down:r.images.work.getURL(r.images.down),front:r.images.work.getURL(r.images.front),back:r.images.work.getURL(r.images.back)},s=this.imageOptions.transform,l=Object.assign({key:`pano.${a}`},mr(this.imageOptions,[`format`,`size`,`quality`,`sharpen`,`forceUseExifOrientation`,`mappings`])),u=`pano:`+pp([o,l,s]),d=this.modelScene.parameter,f;d.pano0&&d.pano0.map.name===u?f=d.pano0:d.pano1&&d.pano1.map.name===u&&(f=d.pano1),f?(d.pano0&&d.pano0.map!==f.map&&d.pano0.map.dispose(),d.pano1&&d.pano1.map!==f.map&&d.pano1.map!==((t=d.pano0)==null?void 0:t.map)&&d.pano1.map.dispose(),d.set({pano0:f,pano1:f}),this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,progress:0,state:i,options:n,error:null}))):this.textureLoader.loadCubeTexture(o,{imageURL:{transform:s,options:l},format:c.RGBFormat,viaAjax:!0,fetcher:_f(this.fiveId,r.work)},void 0,void 0,void 0,this.renderer).then(t=>{var o,s;let{body:l}=t;if(this.destroyed||this.pendingTextureId!==e){l.dispose();return}this.pendingTextureId=null,l.name=u;let f=Array.isArray(l.image)?l.image[0]:l.image,p=(o=f==null?void 0:f.width)==null?2048:o,m=new _m().formPixels(Vh(this.renderer,l,!0,pm).data),h={panoId:a,map:l,mapSize:p,mapHistogram:new c.Vector4().fromArray(m.toArray()),matrix:r.matrix.clone().premultiply(r.work.transform),zoom:1};d.pano0&&d.pano0.map.dispose(),d.pano1&&d.pano1.map!==((s=d.pano0)==null?void 0:s.map)&&d.pano1.map.dispose(),d.set({pano0:h,pano1:h}),this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,progress:0,state:i,options:n,error:null}))}).catch(t=>{this.destroyed||this.pendingTextureId!==e||(this.pendingTextureId=null)})}}}onDblTapGesture(e){if(!this.initAnimationIsReady)return;this.userAction=e.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();let t=e.state,n=e.center.raycaster,r=n.ray.origin.clone().add(n.ray.direction.clone().setLength(3)),i=1,[a]=this.modelScene.intersectRaycaster(n);if(a&&(r=a.point.clone(),i=a.distance>4/2?1:3),e.state.distance=i,e.state.offset=r,this.emit(`gesture.dbltap`,e),e.defaultPrevented)return;let o={x:t.offset.x,y:t.offset.y,z:t.offset.z,distance:t.distance};this.locationMotion.set(o,360).catch(q),this.hideIntersectMesh()}hideIntersectMesh(){this.intersectMesh.visible===!0&&(this.intersectMesh.visible=!1,this.needsRender=!0)}};function ev(e){return e==null}var tv={type:`move`},nv=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null,this._axes=[0,0]}getHandSpace(){return this._hand===null&&(this._hand=new c.Group,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new c.Group,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new c.Vector3,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new c.Vector3),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new c.Group,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new c.Vector3,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new c.Vector3),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}disconnect(e){return this.dispatchEvent({type:`disconnected`,data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}getAxes(){return this._axes}update(e,t,n){let r=null,i=null,a=null,o=this._targetRay,s=this._grip,l=this._hand;if(e&&e.gamepad&&e.gamepad.axes&&(this._axes=[e.gamepad.axes[2],e.gamepad.axes[3]]),e&&t.session.visibilityState!==`visible-blurred`)if(o!==null&&(r=t.getPose(e.targetRaySpace,n),r!==null&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(tv))),l&&e.hand){a=!0;for(let r of e.hand.values()){let e=t.getJointPose(r,n);if(l.joints[r.jointName]===void 0){let e=new c.Group;e.matrixAutoUpdate=!1,e.visible=!1,l.joints[r.jointName]=e,l.add(e)}let i=l.joints[r.jointName];e!==null&&(i.matrix.fromArray(e.transform.matrix),i.matrix.decompose(i.position,i.rotation,i.scale),i.jointRadius=e.radius),i.visible=e!==null}let r=l.joints[`index-finger-tip`],i=l.joints[`thumb-tip`],o=r.position.distanceTo(i.position),s=.02,u=.005;l.inputState.pinching&&o>s+u?(l.inputState.pinching=!1,this.dispatchEvent({type:`pinchend`,handedness:e.handedness,target:this})):!l.inputState.pinching&&o<=s-u&&(l.inputState.pinching=!0,this.dispatchEvent({type:`pinchstart`,handedness:e.handedness,target:this}))}else s!==null&&e.gripSpace&&(i=t.getPose(e.gripSpace,n),i!==null&&(s.matrix.fromArray(i.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale),i.linearVelocity?(s.hasLinearVelocity=!0,s.linearVelocity.copy(i.linearVelocity)):s.hasLinearVelocity=!1,i.angularVelocity?(s.hasAngularVelocity=!0,s.angularVelocity.copy(i.angularVelocity)):s.hasAngularVelocity=!1));return o!==null&&(o.visible=r!==null),s!==null&&(s.visible=i!==null),l!==null&&(l.visible=a!==null),this}},rv=1,iv=()=>{try{let e=/Macintosh/i.test(navigator.userAgent),t=navigator.maxTouchPoints===5;return e&&t}catch(e){return console.error(`Error determining if the device is an Apple Vision Pro: `,e),!1}},av=()=>{try{return/Oculus/i.test(navigator.userAgent)}catch(e){return console.error(`Error determining if the device is an Oculus: `,e),!1}},ov=class{constructor(e,t,n){var r,i,a,o,s;this.isPanorama=(r=n==null?void 0:n.isPanorama)==null?!0:r,navigator.userAgent.toLowerCase();let l;l=iv()?`VP`:av()?`Oculus`:`Pico`,this.machineType=(i=n==null?void 0:n.machineType)==null?l:i,this.renderer=e,this.gl=t,this.enabled=!1,this.session=null,this.referenceSpaceType=(a=n==null?void 0:n.referenceSpaceType)==null?`local-floor`:a,this.referenceSpace=null,this.onSessionStartCallback=(o=n==null?void 0:n.onSessionStart)==null?q:o,this.onSessionEndCallback=(s=n==null?void 0:n.onSessionEnd)==null?q:s,this.controllers=[new nv,new nv],this.inputSourcesMap=new Map,this.cameraVR=new c.ArrayCamera,this.cameraL=new c.PerspectiveCamera,this.cameraR=new c.PerspectiveCamera,this.cameraVR.cameras.push(this.cameraL,this.cameraR),this.cameraL.viewport=new c.Vector4,this.cameraR.viewport=new c.Vector4,this.cameraL.layers.enable(1),this.cameraR.layers.enable(2),this.cameraVR.layers.enable(1),this.cameraVR.layers.enable(2),this.isPresenting=!1,this.currentDepthNear=null,this.currentDepthFar=null,this.cameraLPos=new c.Vector3,this.cameraRPos=new c.Vector3}getController(e){let t=this.controllers[e];return t||console.warn(`no controller find`),t.getTargetRaySpace()}getRightController(){if(!this.session||!this.session.inputSources)return null;let e;if(this.session.inputSources.forEach((t,n)=>{t.handedness===`right`&&(e=n)}),e===void 0)return console.warn(`no inputSource for right hand`),null;let t=this.controllers[e];return t?t.getTargetRaySpace():(console.warn(`right controller not find`),null)}getLeftController(){if(!this.session||!this.session.inputSources)return null;let e;if(this.session.inputSources.forEach((t,n)=>{t.handedness===`left`&&(e=n)}),e===void 0)return console.warn(`no inputSource for left hand`),null;let t=this.controllers[e];return t?t.getTargetRaySpace():(console.warn(`left controller not find`),null)}getControllerGrip(e){let t=this.controllers[e];return t||console.warn(`no controller find`),t.getGripSpace()}getCameras(){return{cameraL:this.cameraL,cameraR:this.cameraR,cameraVR:this.cameraVR}}updateCamera(e,t){t===null?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.getInverse(e.matrixWorld)}setProjectionFromUnion(e,t,n){this.cameraLPos.setFromMatrixPosition(t.matrixWorld),this.cameraRPos.setFromMatrixPosition(n.matrixWorld);var r=this.cameraLPos.distanceTo(this.cameraRPos),i=t.projectionMatrix.elements,a=n.projectionMatrix.elements,o=i[14]/(i[10]-1),s=i[14]/(i[10]+1),c=(i[9]+1)/i[5],l=(i[9]-1)/i[5],u=(i[8]-1)/i[0],d=(a[8]+1)/a[0],f=o*u,p=o*d,m=r/(-u+d),h=m*-u;t.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(h),e.translateZ(m),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.getInverse(e.matrixWorld);var g=o+m,_=s+m,v=f-h,y=p+(r-h),b=c*s/_*g,x=l*s/_*g;e.projectionMatrix.makePerspective(v,y,b,x,g,_)}getCamera(e){this.cameraVR.near=this.cameraR.near=this.cameraL.near=e.near,this.cameraVR.far=this.cameraR.far=this.cameraL.far=e.far,this.session&&(this.currentDepthNear!==this.cameraVR.near||this.currentDepthFar!==this.cameraVR.far)&&(this.session.updateRenderState({depthNear:this.cameraVR.near,depthFar:this.cameraVR.far}),this.currentDepthNear=this.cameraVR.near,this.currentDepthFar=this.cameraVR.far);let t=e.parent,n=this.cameraVR.cameras;this.updateCamera(this.cameraVR,t);for(let e=0;e<n.length;e++)this.updateCamera(n[e],t);e.matrixWorld.copy(this.cameraVR.matrixWorld);let r=e.children;for(let e=0,t=r.length;e<t;e++)r[e].updateMatrixWorld(!0);return n.length===2?this.setProjectionFromUnion(this.cameraVR,this.cameraL,this.cameraR):this.cameraVR.projectionMatrix.copy(this.cameraL.projectionMatrix),this.cameraVR}updateInputSources(e){if(!this.session){console.warn(`session is lose!`);return}let t=this.session.inputSources;for(let e=0;e<this.controllers.length;e++)this.inputSourcesMap.set(t[e],this.controllers[e]);for(let t=0;t<e.removed.length;t++){let n=e.removed[t],r=this.inputSourcesMap.get(n);r&&(r.dispatchEvent({type:`disconnected`,data:n}),this.inputSourcesMap.delete(n))}for(let t=0;t<e.added.length;t++){let n=e.added[t],r=this.inputSourcesMap.get(n);r&&r.dispatchEvent({type:`connected`,data:n})}}onSessionEvent(e){let t=this.inputSourcesMap.get(e.inputSource);t&&t.dispatchEvent({type:e.type})}onSessionEnd(){this.inputSourcesMap.forEach(function(e,t){e.disconnect(t)}),this.inputSourcesMap.clear(),this.isPresenting=!1,this.session=null,ri.shared.setContext(null),this.onSessionEndCallback()}onRequestReferenceSpace(e){this.referenceSpace=e,this.isPresenting=!0,this.session&&this.onSessionStartCallback(this.session)}setSession(e){if(this.session=e,this.session){this.session.addEventListener(`select`,e=>{this.onSessionEvent(e)}),this.session.addEventListener(`selectstart`,e=>{this.onSessionEvent(e)}),this.session.addEventListener(`selectend`,e=>{this.onSessionEvent(e)}),this.session.addEventListener(`squeeze`,e=>{this.onSessionEvent(e)}),this.session.addEventListener(`squeezestart`,e=>{this.onSessionEvent(e)}),this.session.addEventListener(`squeezeend`,e=>{this.onSessionEvent(e)}),this.session.addEventListener(`end`,e=>{this.onSessionEnd()});let e=this.gl.getContextAttributes();this.gl.makeXRCompatible().then(()=>{let t={antialias:e==null?void 0:e.antialias,alpha:e==null?void 0:e.alpha,depth:e==null?void 0:e.depth,stencil:e==null?void 0:e.stencil,framebufferScaleFactor:rv};if(!this.session){console.error(`session is lose while set session!`);return}switch(this.machineType){case`Pico`:case`VP`:this.session.updateRenderState({baseLayer:new XRWebGLLayer(this.session,this.gl,t)});break;case`Oculus`:this.session.updateRenderState({baseLayer:new XRWebGLLayer(this.session,this.gl,t)});break;default:this.machineType;break}this.session.requestReferenceSpace(this.referenceSpaceType).then(e=>{this.onRequestReferenceSpace(e)}),this.session.addEventListener(`inputsourceschange`,e=>{this.updateInputSources(e)})})}}},sv=class extends c.InstancedBufferGeometry{constructor(){super(),this.type=`LineSegmentsGeometry`,this.setIndex([0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5]),this.setAttribute(`position`,new c.Float32BufferAttribute([-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],3)),this.setAttribute(`uv`,new c.Float32BufferAttribute([-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],2))}applyMatrix4(e){let t=this.attributes.instanceStart,n=this.attributes.instanceEnd;return t!==void 0&&(t.applyMatrix4(e),n.applyMatrix4(e),t.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}setPositions(e){let t;t=e instanceof Float32Array?e:Array.isArray(e)?new Float32Array(e):new Float32Array;let n=new c.InstancedInterleavedBuffer(t,6,1);return this.setAttribute(`instanceStart`,new c.InterleavedBufferAttribute(n,3,0)),this.setAttribute(`instanceEnd`,new c.InterleavedBufferAttribute(n,3,3)),this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(e){let t;t=e instanceof Float32Array?e:Array.isArray(e)?new Float32Array(e):new Float32Array;let n=new c.InstancedInterleavedBuffer(t,6,1);return this.setAttribute(`instanceColorStart`,new c.InterleavedBufferAttribute(n,3,0)),this.setAttribute(`instanceColorEnd`,new c.InterleavedBufferAttribute(n,3,3)),this}fromWireframeGeometry(e){return this.setPositions(e.attributes.position.array),this}fromEdgesGeometry(e){return this.setPositions(e.attributes.position.array),this}fromMesh(e){return this.fromWireframeGeometry(new c.WireframeGeometry(e.geometry)),this}fromLineSegments(e){var t=e.geometry;if(t instanceof c.Geometry){let e=new c.BufferGeometry().fromGeometry(t);this.setPositions(e.attributes.position.array)}else t instanceof c.BufferGeometry&&this.setPositions(t.attributes.position.array);return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new c.Box3);let e=this.attributes.instanceStart,t=this.attributes.instanceEnd;if(e!==void 0&&t!==void 0){let n=new c.Box3;this.boundingBox.setFromBufferAttribute(e),n.setFromBufferAttribute(t),this.boundingBox.union(n)}}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new c.Sphere),this.boundingBox===null&&this.computeBoundingBox();let e=this.attributes.instanceStart,t=this.attributes.instanceEnd;if(e!==void 0&&t!==void 0){let n=this.boundingSphere.center;this.boundingBox.getCenter(n);let r=0,i=new c.Vector3;for(let a=0,o=e.count;a<o;a++)i.fromBufferAttribute(e,a),r=Math.max(r,n.distanceToSquared(i)),i.fromBufferAttribute(t,a),r=Math.max(r,n.distanceToSquared(i));this.boundingSphere.radius=Math.sqrt(r),isNaN(this.boundingSphere.radius)&&console.error(`THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.`,this)}}toJSON(){}};Object.assign(sv.prototype,{isLineSegmentsGeometry:!0});var cv={uniforms:c.UniformsUtils.merge([c.UniformsLib.common,c.UniformsLib.fog,{linewidth:{value:1},resolution:{value:new c.Vector2(1,1)},dashScale:{value:1},dashSize:{value:1},gapSize:{value:1},opacity:{value:1}}]),vertexShader:`
2039
2041
  #include <common>
2040
2042
  #include <color_pars_vertex>
2041
2043
  #include <fog_pars_vertex>
@@ -2234,7 +2236,7 @@ void main() {
2234
2236
  #include <premultiplied_alpha_fragment>
2235
2237
 
2236
2238
  }
2237
- `},lv=class extends c.ShaderMaterial{constructor(e){super({uniforms:c.UniformsUtils.clone(cv.uniforms),vertexShader:cv.vertexShader,fragmentShader:cv.fragmentShader,clipping:!0}),this.type=`LineMaterial`,this.dashed=!1,Object.defineProperties(this,{color:{enumerable:!0,get(){return this.uniforms.diffuse.value},set(e){this.uniforms.diffuse.value=e}},linewidth:{enumerable:!0,get(){return this.uniforms.linewidth.value},set(e){this.uniforms.linewidth.value=e}},dashScale:{enumerable:!0,get(){return this.uniforms.dashScale.value},set(e){this.uniforms.dashScale.value=e}},dashSize:{enumerable:!0,get(){return this.uniforms.dashSize.value},set(e){this.uniforms.dashSize.value=e}},gapSize:{enumerable:!0,get(){return this.uniforms.gapSize.value},set(e){this.uniforms.gapSize.value=e}},opacity:{enumerable:!0,get(){return this.uniforms.opacity.value},set(e){this.uniforms.opacity.value=e}},resolution:{enumerable:!0,get(){return this.uniforms.resolution.value},set(e){this.uniforms.resolution.value.copy(e)}}}),this.setValues(e)}};Object.assign(lv.prototype,{isLineMaterial:!0});var uv=class extends c.Mesh{constructor(e,t){super(),this.type=`LineSegments2`,this.geometry=e===void 0?new sv:e,this.material=t===void 0?new lv({color:Math.random()*16777215}):t}computeLineDistances(){let e=this.geometry,t=e.attributes.instanceStart,n=e.attributes.instanceEnd,r=new Float32Array(2*t.count),i=new c.Vector3,a=new c.Vector3;for(var o=0,s=0,l=t.count;o<l;o++,s+=2)i.fromBufferAttribute(t,o),a.fromBufferAttribute(n,o),r[s]=s===0?0:r[s-1],r[s+1]=r[s]+i.distanceTo(a);let u=new c.InstancedInterleavedBuffer(r,2,1);return e.setAttribute(`instanceDistanceStart`,new c.InterleavedBufferAttribute(u,1,0)),e.setAttribute(`instanceDistanceEnd`,new c.InterleavedBufferAttribute(u,1,1)),this}raycast(e,t){e.camera===null&&console.error(`LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2.`);let n=e.ray,r=e.camera,i=r.projectionMatrix,a=this.geometry,o=this.material,s=o.resolution,l=o.linewidth,u=a.attributes.instanceStart,d=a.attributes.instanceEnd,f=new c.Vector4,p=new c.Vector4,m=new c.Vector4,h=new c.Vector3,g=new c.Matrix4,_=new c.Line3,v=new c.Vector3;n.at(1,m),m.w=1,m.applyMatrix4(r.matrixWorldInverse),m.applyMatrix4(i),m.multiplyScalar(1/m.w),m.x*=s.x/2,m.y*=s.y/2,m.z=0,h.copy(m);let y=this.matrixWorld;g.multiplyMatrices(r.matrixWorldInverse,y);for(var b=0,x=u.count;b<x;b++){f.fromBufferAttribute(u,b),p.fromBufferAttribute(d,b),f.w=1,p.w=1,f.applyMatrix4(g),p.applyMatrix4(g),f.applyMatrix4(i),p.applyMatrix4(i),f.multiplyScalar(1/f.w),p.multiplyScalar(1/p.w);var S=f.z<-1&&p.z<-1,C=f.z>1&&p.z>1;if(S||C)continue;f.x*=s.x/2,f.y*=s.y/2,p.x*=s.x/2,p.y*=s.y/2,_.start.copy(f),_.start.z=0,_.end.copy(p),_.end.z=0;let e=_.closestPointToPointParameter(h,!0);_.at(e,v);let r=c.MathUtils.lerp(f.z,p.z,e),a=r>=-1&&r<=1;var w=h.distanceTo(v)<l*.5;if(a&&w){_.start.fromBufferAttribute(u,b),_.end.fromBufferAttribute(d,b),_.start.applyMatrix4(y),_.end.applyMatrix4(y);var T=new c.Vector3,E=new c.Vector3;n.distanceSqToSegment(_.start,_.end,E,T),t.push({point:E,pointOnLine:T,distance:n.origin.distanceTo(E),object:this,faceIndex:b})}}}};Object.assign(uv.prototype,{isLineSegments2:!0});var dv=class extends uv{constructor(e,t){super(e,t),this.type=`Line2`}};Object.assign(dv.prototype,{isLine2:!0});var fv=class extends sv{constructor(){super(),this.type=`LineGeometry`}setPositions(e){let t=e.length-3,n=new Float32Array(2*t);for(let r=0;r<t;r+=3)n[2*r]=e[r],n[2*r+1]=e[r+1],n[2*r+2]=e[r+2],n[2*r+3]=e[r+3],n[2*r+4]=e[r+4],n[2*r+5]=e[r+5];return super.setPositions(n),this}setColors(e){let t=e.length-3,n=new Float32Array(2*t);for(let r=0;r<t;r+=3)n[2*r]=e[r],n[2*r+1]=e[r+1],n[2*r+2]=e[r+2],n[2*r+3]=e[r+3],n[2*r+4]=e[r+4],n[2*r+5]=e[r+5];return super.setColors(n),this}fromLine(e){let t=e.geometry;if(t instanceof c.Geometry){let e=new c.BufferGeometry().fromGeometry(t);this.setPositions(e.attributes.position.array)}else t instanceof c.BufferGeometry&&this.setPositions(t.attributes.position.array);return this}copy(){return this}};Object.assign(fv.prototype,{isLineGeometry:!0});var pv=14467195,mv=8,hv=2,gv=20,_v=null,vv=class extends c.Object3D{static get version(){return`6.8.0-alpha.19`}constructor(e=new c.Vector3,t=new c.Vector3){super(),this.type=`FiveLine`,this.needsRender=!0,this.line=new dv(new fv,new lv({color:pv,linewidth:hv,dashScale:gv,dashed:!1}));let n=new c.BufferGeometry,r=new c.PointsMaterial({color:pv,size:mv,map:_v||(_v=new c.TextureLoader().load(`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sHDgwCEMBJZu0AAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd2l0aCBHSU1QZC5lBwAABM5JREFUWMO1V0tPG2cUPZ4Hxh6DazIOrjFNqJs0FIMqWFgWQkatsmvVbtggKlSVRVf5AWz4AWz4AUSKEChll19QJYSXkECuhFxsHjEhxCYm+DWGMZ5HF72DJq4bAzFXurI0M/I5997v3u9cC65vTJVn2lX/xHINQOYSBLTLEuIuCWw4Z3IGAEvf6ASmVHjNzHCXBG4A0AjACsAOwEbO0nsFQBnAGYASAIl+ZRMR7SolMEdsByD09fV5R0ZGgg8ePPjW5/N1iqLYpuu6RZblciKR2I9Go69evnwZnZ+fjwI4IS8AKBIRzeQfJWCANwKwh0KhtrGxsYehUOin1tbW+zzP23ietzY2NnIAoGmaLsuyUiqVyvl8XtrY2NiamZn589mzZxsAUgCOAeQAnFI2tI+VxIjaAeDzoaGh7xYWFuZOTk6OZVk+12uYqqq6JEnn0Wg0OT4+/geAXwGEAdwDIFJQXC1wO4DWR48e/RCPxxclSSroVzRFUbSDg4P848ePFwH8DuAhkWih83TRQWxFOXgAwvDwcOfo6OhvXV1d39tsNtuVBwTDWBwOh1UUxVsMw1hXVlbSdCgNV43uYSvrHg6H24aHh38eHBz85TrgF9FYLHA4HLzH43FvbW2d7u/vG+dANp8FpqIlbd3d3V8Fg8EfBUFw4BONZVmL3+9vHhkZCQL4AoAHgJPK8G+yzC0XDofdoVAo5PP5vkadTBAEtr+/39ff3x8gAp/RPOEqx2qjx+NpvXv3bk9DQ0NDvQgwDIOWlhZrMBj8kgi0UJdxRgYMArzL5XJ7vd57qLPZ7Xamp6fnNgBXtQxcjFuHw+Hyer3t9SYgCAITCAScAJoBNNEY/08GOFVVrfVMv7kMNDntFD1vjIAPrlRN0xjckOm6biFQ3jwNPwDMZrOnqVTqfb3Bi8Wivru7W/VCYkwPlKOjo0IikXh7EwQikYgE4Nw0CfXKDCipVCoTj8df3QABbW1tLUc6oUgkFPMkVACUNjc337148eKvw8PDbJ2jP1taWkoCyNDVXDSECmNSK4qiKNLq6urW8+fPI/UicHx8rD59+jSVy+WOAKSJhKENwFItLtoxk8mwsixzHR0dHe3t7c5PAU+n09rs7OzJkydPYqVSaQfANoDXALIk31S2smU1TWMPDg7K5XKZ7+3t9TudTut1U7+wsFCcmJiIpdPpbQBxADsAknQWymYCOukBHYCuKApisdhpMpnURFEU79y503TVyKenpzOTk5M7e3t7MQKPV0Zv1gNm+awB0MvlshqLxfLb29uyJElWURSbXC4XXyvqxcXFs6mpqeTc3Nzu3t7e3wQcA7BPZ8Cov1pNlJplmQtAG8MwHV6v95tAINA5MDBwPxAIuLu6upr8fr/VAN3c3JQjkcjZ+vp6fnl5+d2bN29SuVzuNYAEpf01CdRChUL+X1VskHACuA3Ay3Fcu9vt7nA6nZ7m5uYWQRCaNE3jVVW15PP580KhIGUymWw2m00DOAJwSP4WwPtq4LX2Ao6USxNlQyS/RcQcdLGwlNIz6vEMAaZpNzCk2Pll94LK/cDYimxERiBwG10sxjgvEZBE0UpE6vxj+0Ct5bTaXthgEhRmja8QWNkkPGsuIpfdjpkK+cZUWTC0KredVmtD/gdlSl6EG4AMvQAAAABJRU5ErkJggg==`)),sizeAttenuation:!1,transparent:!0});this.points=new c.Points(n,r),this.points.renderOrder=11,this.points.frustumCulled=!1,this.setPoints(e,t),this.add(this.line,this.points)}setPoints(e,t){let n=[].concat(e.toArray(),t.toArray());this.points.geometry.setAttribute(`position`,new c.BufferAttribute(new Float32Array(n),3)),this.line.geometry.setPositions(n),this.line.computeLineDistances(),this.needsRender=!0}getPoints(){let e=this.points.geometry.attributes.position.array;return[new c.Vector3(e[0],e[1],e[2]),new c.Vector3(e[3],e[4],e[5])]}setMaterial(e){let t=this.line.material;for(let n in e){if(!e.hasOwnProperty(n))continue;let r=e[n];n===`dashed`?(t.dashed=r,r?t.defines.USE_DASH=``:delete t.defines.USE_DASH,t.needsUpdate=!0):t[n]=e[n]}this.needsRender=!0}setResolution(e,t){let n=this.line.material.resolution;(n.x!==e||n.y!==t)&&(n.set(e,t),this.needsRender=!0)}};Object.assign(vv.prototype,{isFiveLine:!0});var yv={Handedness:Object.freeze({NONE:`none`,LEFT:`left`,RIGHT:`right`}),ComponentState:Object.freeze({DEFAULT:`default`,TOUCHED:`touched`,PRESSED:`pressed`}),ComponentProperty:Object.freeze({BUTTON:`button`,X_AXIS:`xAxis`,Y_AXIS:`yAxis`,STATE:`state`}),ComponentType:Object.freeze({TRIGGER:`trigger`,SQUEEZE:`squeeze`,TOUCHPAD:`touchpad`,THUMBSTICK:`thumbstick`,BUTTON:`button`}),ButtonTouchThreshold:.05,AxisTouchThreshold:.1,VisualResponseProperty:Object.freeze({TRANSFORM:`transform`,VISIBILITY:`visibility`})};function bv(e){return Vo(this,void 0,void 0,function*(){let t=yield fetch(e);if(t.ok)return t.json();throw Error(t.statusText)})}function xv(e){return Vo(this,void 0,void 0,function*(){if(!e)throw Error(`No basePath supplied`);return yield bv(`${e}/profilesList.json`)})}function Sv(e,t){return Vo(this,arguments,void 0,function*(e,t,n=null,r=!0){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No basePath supplied`);let i=yield xv(t),a;if(e.profiles.some(e=>{let n=i[e];return n&&(a={profileId:e,profilePath:`${t}/${n.path}`,deprecated:!!n.deprecated}),!!a}),!a){if(!n)throw Error(`No matching profile name found`);let e=i[n];if(!e)throw Error(`No matching profile name found and default profile "${n}" missing.`);a={profileId:n,profilePath:`${t}/${e.path}`,deprecated:!!e.deprecated}}let o=yield bv(a.profilePath),s;if(r){let t;if(t=o.layouts[e.handedness],!t)throw Error(`No matching handedness, ${e.handedness}, in profile ${a.profileId}`);t.assetPath&&(s=a.profilePath.replace(`profile.json`,t.assetPath))}return{profile:o,assetPath:s}})}var Cv={xAxis:0,yAxis:0,button:0,state:yv.ComponentState.DEFAULT};function wv(e=0,t=0){let n=e,r=t;if(Math.sqrt(e*e+t*t)>1){let i=Math.atan2(t,e);n=Math.cos(i),r=Math.sin(i)}return{normalizedXAxis:n*.5+.5,normalizedYAxis:r*.5+.5}}var Tv=class{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===yv.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(Cv)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:r}){let{normalizedXAxis:i,normalizedYAxis:a}=wv(e,t);switch(this.componentProperty){case yv.ComponentProperty.X_AXIS:this.value=this.states.includes(r)?i:.5;break;case yv.ComponentProperty.Y_AXIS:this.value=this.states.includes(r)?a:.5;break;case yv.ComponentProperty.BUTTON:this.value=this.states.includes(r)?n:0;break;case yv.ComponentProperty.STATE:this.valueNodeProperty===yv.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(r):this.value=this.states.includes(r)?1:0;break;default:throw Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}},Ev=class{constructor(e,t){if(!e||!t||!t.visualResponses||!t.gamepadIndices||Object.keys(t.gamepadIndices).length===0)throw Error(`Invalid arguments supplied`);this.id=e,this.type=t.type,this.rootNodeName=t.rootNodeName,this.touchPointNodeName=t.touchPointNodeName,this.visualResponses={},Object.keys(t.visualResponses).forEach(e=>{let n=new Tv(t.visualResponses[e]);this.visualResponses[e]=n}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:yv.ComponentState.DEFAULT,button:this.gamepadIndices.button===void 0?void 0:0,xAxis:this.gamepadIndices.xAxis===void 0?void 0:0,yAxis:this.gamepadIndices.yAxis===void 0?void 0:0}}get data(){return Object.assign({id:this.id},this.values)}updateFromGamepad(e){if(this.values.state=yv.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&e.buttons.length>this.gamepadIndices.button){let t=e.buttons[this.gamepadIndices.button];this.values.button=t.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,t.pressed||this.values.button===1?this.values.state=yv.ComponentState.PRESSED:(t.touched||this.values.button>yv.ButtonTouchThreshold)&&(this.values.state=yv.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&e.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=e.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===yv.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>yv.AxisTouchThreshold&&(this.values.state=yv.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&e.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=e.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===yv.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>yv.AxisTouchThreshold&&(this.values.state=yv.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(e=>{e.updateFromComponent(this.values)})}},Dv=class{constructor(e,t,n){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No profile supplied`);this.xrInputSource=e,this.assetUrl=n,this.id=t.profileId,this.layoutDescription=t.layouts[e.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(e=>{let t=this.layoutDescription.components[e];this.components[e]=new Ev(e,t)}),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){let e=[];return Object.values(this.components).forEach(t=>{e.push(t.data)}),e}updateFromGamepad(){Object.values(this.components).forEach(e=>{e.updateFromGamepad(this.xrInputSource.gamepad)})}},Ov=`https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles`,kv=`generic-trigger`,Av=class extends c.Object3D{constructor(){super(),this.motionController=null,this.envMap=null}setEnvironmentMap(e){return this.envMap==e?this:(this.envMap=e,this.traverse(e=>{e instanceof c.Mesh&&e.isMesh&&(e.material.envMap=this.envMap,e.material.needsUpdate=!0)}),this)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.motionController&&(this.motionController.updateFromGamepad(),Object.values(this.motionController.components).forEach(e=>{Object.values(e.visualResponses).forEach(e=>{let{valueNode:t,minNode:n,maxNode:r,value:i,valueNodeProperty:a}=e;t&&(a===yv.VisualResponseProperty.VISIBILITY?t.visible=i:a===yv.VisualResponseProperty.TRANSFORM&&(t.quaternion.copy(n.quaternion).slerp(r.quaternion,i),t.position.lerpVectors(n.position,r.position,i)))})}))}};function jv(e,t){Object.values(e.components).forEach(e=>{let{type:n,touchPointNodeName:r,visualResponses:i}=e;if(n===yv.ComponentType.TOUCHPAD)if(e.touchPointNode=t.getObjectByName(r),e.touchPointNode){let t=new c.Mesh(new c.SphereGeometry(.001),new c.MeshBasicMaterial({color:255}));e.touchPointNode.add(t)}else console.warn(`Could not find touch dot, ${e.touchPointNodeName}, in touchpad component ${e.id}`);Object.values(i).forEach(e=>{let{valueNodeName:n,minNodeName:r,maxNodeName:i,valueNodeProperty:a}=e;if(a===yv.VisualResponseProperty.TRANSFORM){if(e.minNode=t.getObjectByName(r),e.maxNode=t.getObjectByName(i),!e.minNode){console.warn(`Could not find ${r} in the model`);return}if(!e.maxNode){console.warn(`Could not find ${i} in the model`);return}}e.valueNode=t.getObjectByName(n),e.valueNode||console.warn(`Could not find ${n} in the model`)})})}function Mv(e,t){jv(e.motionController,t),e.envMap&&t.traverse(t=>{t instanceof c.Mesh&&t.isMesh&&(t.material.envMap=e.envMap,t.material.needsUpdate=!0)}),e.add(t)}var Nv=class{constructor(e=null){this.gltfLoader=e,this.path=Ov,this._assetCache={}}createControllerModel(e){let t=new Av,n=null;return e.addEventListener(`connected`,e=>{let r=e.data;r.targetRayMode!==`tracked-pointer`||!r.gamepad||Sv(r,this.path,kv).then(({profile:e,assetPath:i})=>{t.motionController=new Dv(r,e,i);let a=this._assetCache[t.motionController.assetUrl];if(a)n=a.scene.clone(),Mv(t,n);else{if(!this.gltfLoader)throw Error(`GLTFLoader not set.`);this.gltfLoader.load(t.motionController.assetUrl,e=>{this._assetCache[t.motionController.assetUrl]=e,n=e.scene.clone(),Mv(t,n)})}}).catch(e=>{console.warn(e)})}),e.addEventListener(`disconnected`,()=>{t.motionController=null,t.remove(n),n=null}),t}},Pv=Object.assign({},hr(Xg,[`maxLatitude`,`minLatitude`]));function Fv(e,t){if(!t)return e;let n=e.match(/\d+_[a-z].png/);return e.substring(0,n.index)+t+`/`+e.substring(n.index)}var Iv=300,Lv=new c.Raycaster,Rv=new c.Vector3,zv={Floorplan:Xh,Topview:Qh,Panorama:Zg,VRPanorama:H_,Model:q_,Mapview:$_,XRPanorama:class e extends Zg{static parseArgs(t){if(t instanceof e)return t;let n=Object.assign(Object.assign({},t),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2});return super.parseArgs(n)}static initAnimationEndState(e){let t=this.parseArgs(e),n=super.initAnimationEndState(t);return Object.assign(Object.assign({},n),{mode:`XRPanorama`})}constructor(e){super(e),this.xrManager=new ov(this.renderer,this.renderer.getContext(),{onSessionStart:e=>{this.emit(`xr.session.start`,$(`xr.session.start`,{session:e,machineType:this.xrManager.machineType}))},onSessionEnd:()=>{this.emit(`xr.session.end`,$(`xr.session.end`,{session:null,machineType:this.xrManager.machineType}))}}),this.xrControllerRay={left:new c.Raycaster,right:new c.Raycaster},this.xrControllerRay.left.params.Points={threshold:.1},this.xrControllerRay.left.firstHitOnly=!0,this.xrControllerRay.left.floorIndex=-1,this.xrControllerRay.right.params.Points={threshold:.1},this.xrControllerRay.right.firstHitOnly=!0,this.xrControllerRay.right.floorIndex=-1,this.gazeRay=null,this.pointerLines={left:new vv,right:new vv},this.pointerLines.left.visible=!1,this.pointerLines.right.visible=!0,this.pointerLines.left.setMaterial({color:new c.Vector3(1,1,1)}),this.pointerLines.left.points.material.depthTest=!1,this.pointerLines.right.setMaterial({color:new c.Vector3(1,1,1)}),this.pointerLines.right.points.material.depthTest=!1,this.controllerWrappers=[new c.Group,new c.Group];let t=this.xrManager.getController(0);this.controllerWrappers[0].add(t);let n=this.xrManager.getController(1);this.controllerWrappers[1].add(n);let r=new Nv;r.gltfLoader={load(e,t){pr.ajax(e,{responseType:`arraybuffer`}).then(t=>{var n;return ns(t.body,{resourcePath:e.slice(0,e.lastIndexOf(`/`)+1),search:(n=e.split(`?`)[1])==null?``:n,fetcher:pr})}).then(e=>t(e))}},(this.xrManager.machineType===`Oculus`||this.xrManager.machineType===`Pico`)&&this.scene.add(this.pointerLines.left,this.pointerLines.right,this.controllerWrappers[0],this.controllerWrappers[1]),this.panoResources={},this.panoResources[this.locationMotion.keyframes[0].key=this.locationMotion.keyframes[1].key=nn()]={panoId:Q(this.currentPano),leftPanoPicture:null,position:this.camera.pose.offset.clone(),effect:`fade`,effectEasing:Kg,fixCameraTransform:new c.Matrix4},this.parallaxCameraMatrixs=[];let i=ri.shared.getContext();if(!i){console.error(`获取session失败,请退出重试`);return}this.on(`xr.session.end`,()=>{this.scene.remove(this.pointerLines.left,this.pointerLines.right)}),this.xrManager.setSession(i),this.on(`xr.session.start`,()=>{let e=this.xrManager.getControllerGrip(0);e.add(r.createControllerModel(e)),this.controllerWrappers[0].add(e);let t=this.xrManager.getControllerGrip(1);t.add(r.createControllerModel(t)),this.controllerWrappers[1].add(t)}),this.xrHandleState={LeftAxesUp:{touchStartTime:0,touchStart:!1},LeftAxesDown:{touchStartTime:0,touchStart:!1},LeftAxesLeft:{touchStartTime:0,touchStart:!1},LeftAxesRight:{touchStartTime:0,touchStart:!1},LeftTrigger:{touchStartTime:0,touchStart:!1},LeftPinch:{touchStartTime:0,touchStart:!1},RightAxesUp:{touchStartTime:0,touchStart:!1},RightAxesDown:{touchStartTime:0,touchStart:!1},RightAxesLeft:{touchStartTime:0,touchStart:!1},RightAxesRight:{touchStartTime:0,touchStart:!1},RightTrigger:{touchStartTime:0,touchStart:!1},RightPinch:{touchStartTime:0,touchStart:!1},Y:{touchStartTime:0,touchStart:!1},X:{touchStartTime:0,touchStart:!1},A:{touchStartTime:0,touchStart:!1},B:{touchStartTime:0,touchStart:!1}},this.xrManager.machineType===`VP`&&this.initHandEvent()}updateConfiguration(e){return super.updateConfiguration(Object.assign(Object.assign({},e),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2}))}moveToPano(e,t,n){var r,i,a;let o=(r=t.effect)==null?`fade`:r;this.userAction=n,this.stopMomentumMovement();let s=Q(e),l=this.works.getObserver(e);if(!l)throw Error(`Invalid PanoIndex`);let u=Yr(l.images.up),d=this.imageOptions.size;d===void 0&&l&&u&&(d=Number(u)),d===void 0&&(d=2048);let f=this.imageOptions.transform,p=(e,t)=>Fv(qr(e,f,t)),m=Object.assign({key:`pano.${s}`},mr(this.imageOptions,[`format`,`size`,`quality`])),h={right:l.images.work.getURL(l.images.right),left:l.images.work.getURL(l.images.left),up:l.images.work.getURL(l.images.up),down:l.images.work.getURL(l.images.down),front:l.images.work.getURL(l.images.front),back:l.images.work.getURL(l.images.back)},g=`pano:`+pp([h,m,f]);if(this.pendingTextureTask){if(this.pendingTextureTask.hash===g)return;{let t=this.pendingTextureTask.panoId;(i=this.panoMeshes.get(t))==null||i.setProgress(0),this.emit(`pano.texture.abort`,$(`pano.texture.abort`,{error:null,progress:0,meta:null,pano:e}))}}let{pano0:_,pano1:v}=this.modelScene.parameter.resolveValue(),y;if((_==null?void 0:_.map.name)===g?y=_:(v==null?void 0:v.map.name)===g&&(y=v),y){let n={panoId:s,effect:o,effectEasing:(a=t.effectEasing)==null?Kg:a,leftPanoPicture:{panoId:y.panoId,map:y.map,mapHistogram:y.mapHistogram,mapSize:y.mapSize,matrix:l.matrix.clone().premultiply(l.work.transform),zoom:1},position:l.position.clone().applyMatrix4(l.work.transform),fixCameraTransform:new c.Matrix4};this.doMoveToPano(e,n,t);return}let b=`move-to-pano-`+s;this.pending.add(b),this.pendingTextureTask={panoId:s,hash:g,onLoad:n=>{var r,i;let a=n.body;if(this.destroyed)a.dispose();else{a.name=g;let n=Array.isArray(a.image)?a.image[0]:a.image,u=(r=n==null?void 0:n.width)==null?2048:r,d=new _m().formPixels(Vh(this.renderer,a,!0,pm).data),f={panoId:s,effect:o,effectEasing:(i=t.effectEasing)==null?Kg:i,leftPanoPicture:{panoId:s,map:a,mapSize:u,mapHistogram:new c.Vector4().fromArray(d.toArray()),matrix:l.matrix.clone(),zoom:1},position:l.position.clone(),fixCameraTransform:new c.Matrix4};this.doMoveToPano(e,f,t)}},onError:n=>{let r=Object.assign(Object.assign(Object.assign({},e),{mode:this.mode}),jh(this.camera.pose));this.emit(`pano.error`,$(`pano.error`,{error:n,userAction:this.userAction,options:t,prevPano:this.currentPano,progress:0,state:r})),this.emit(`pano.cancel`,$(`pano.cancel`,{error:null,userAction:this.userAction,options:t,prevPano:this.currentPano,progress:0,state:r})),t.moveCancelCallback&&t.moveCancelCallback()}};let x=this.panoMeshes.get(s);x&&x.tap&&x.tap(),this.textureLoader.loadCubeTexture(h,{imageURL:{transform:p,options:m},format:c.RGBFormat,fetcher:_f(this.fiveId,l.work)},void 0,void 0,t=>{var n,r;((n=this.pendingTextureTask)==null?void 0:n.hash)===g&&((r=this.panoMeshes.get(s))==null||r.setProgress(t)),this.emit(`pano.texture.progress`,$(`pano.texture.progress`,{error:null,progress:t,meta:null,pano:e}))},this.renderer).then(t=>{var n,r;this.pending.delete(b),((n=this.pendingTextureTask)==null?void 0:n.hash)===g?(this.pendingTextureTask.onLoad(t),this.pendingTextureTask=void 0,(r=this.panoMeshes.get(s))==null||r.setProgress(0)):t.body.dispose(),this.emit(`pano.texture.success`,$(`pano.texture.success`,{error:null,progress:1,meta:t.meta,pano:e}))}).then(()=>new Promise(e=>{ri.shared.add(()=>e(),!0)})).catch(t=>{var n,r;this.pending.delete(b),((n=this.pendingTextureTask)==null?void 0:n.hash)===g&&(this.pendingTextureTask.onError(t),this.pendingTextureTask=void 0,(r=this.panoMeshes.get(s))==null||r.setProgress(0)),this.emit(`pano.texture.error`,$(`pano.texture.error`,{error:t,progress:0,meta:null,pano:e})),this.emit(`error`,t)}),this.emit(`pano.texture.load`,$(`pano.texture.load`,{error:null,progress:0,meta:null,pano:e}))}doMoveToPano(e,t,n={}){var r,i,a,o,s,l,u,d,f,p;let m=U(),h=nn();this.panoResources[h]=t;let g,_,v;if(this.locationMotion.ended){let[e,n]=this.locationMotion.getKeyFrameSegment(m),r=this.locationMotion.value,i=this.panoResourceFromLocationMotionKeyframe(n).position,a=t.position;g=Math.max(i.distanceTo(a),1),_=[{key:n.key,progress:0,value:Object.assign(Object.assign({},r),{count:0})},{key:h,progress:1,value:{distance:0,count:1}}],v=0}else{let[e,n]=this.locationMotion.getKeyFrameSegment(m),r=this.locationMotion.value,i=this.panoResourceFromLocationMotionKeyframe(e).position,a=this.panoResourceFromLocationMotionKeyframe(n).position,o=t.position,s=n.value.count-r.count,c=Math.max(i.distanceTo(a),1)*s;g=c+Math.max(a.distanceTo(o),1),_=[{key:e.key,progress:0,value:Object.assign({},r)},{key:n.key,progress:c/g,value:n.value},{key:h,progress:1,value:{count:n.value.count+1,distance:0}}];let l=this.locationMotionKeyframesLength(this.locationMotion.keyframes),u=this.locationMotionKeyframesLength(_);v=this.locationMotion.getProgressVelocity(m)*l/u}let y=t.effect===`instant`?0:this.calculateMovingDuration(n.duration,t.effect===`fly`||t.effect===`model`?g:0),b={longitude:n.longitude,latitude:n.latitude,fov:n.fov},x=Object.assign(Object.assign({},e),{mode:this.mode,longitude:(r=b.longitude)==null?this.camera.pose.longitude:r,latitude:(i=b.latitude)==null?this.camera.pose.latitude:i,fov:(a=b.fov)==null?this.camera.pose.fov:a,offset:t.position.clone(),distance:0}),S=this.currentPano;if(this.emit(`pano.moveTo`,$(`pano.moveTo`,{options:n,prevPano:S,progress:0,state:x,userAction:this.userAction,error:null})),n.moveStartCallback&&n.moveStartCallback(x),this.videoTexture&&this.videoTexture.image instanceof HTMLVideoElement&&this.videoTexture.image.getAttribute(`src`)&&(this.videoTexture.image.pause(),this.videoTexture.image.removeAttribute(`uuid`),this.videoTexture.image.removeAttribute(`src`),this.videoTexture.image.oncanplay=q,this.videoTexture.needsUpdate=!0),this.panoVideo.setMaterial(null),t.effect===`fly`||t.effect===`model`)this.cameraMotion.set(b,y).catch(q);else{let e=Vt({longitude:this.cameraMotion.value.longitude,latitude:this.cameraMotion.value.latitude}),n=Vt({longitude:(o=b.longitude)==null?this.cameraMotion.value.longitude:o,latitude:(s=b.latitude)==null?this.cameraMotion.value.latitude:s}),r=new c.Object3D;r.lookAt(e);let i=new c.Matrix4().makeRotationFromQuaternion(r.quaternion);r.lookAt(n);let a=new c.Matrix4().makeRotationFromQuaternion(r.quaternion),m=new c.Matrix4().getInverse(i).premultiply(a),h=this.cameraMotion.value.fov,g=(l=b.fov)==null?this.cameraMotion.value.fov:l,v=1;t.effect===`zoomin`?v=1.5:t.effect===`zoomout`&&(v=.4);let x=g*v;for(let e=0;e<_.length-1;e++){let t=_[e].key;if(t){let e=this.panoResources[t];e&&(e.fixCameraTransform.copy(m),e.leftPanoPicture&&(e.leftPanoPicture.zoom=Math.tan(x/2/180*Math.PI)/Math.tan(h/2/180*Math.PI)))}}this.cameraMotion.setKeyframes([{progress:0,value:{longitude:this.cameraMotion.value.longitude,latitude:this.cameraMotion.value.latitude,fov:this.cameraMotion.value.fov}},{progress:0,value:{longitude:(u=b.longitude)==null?this.cameraMotion.value.longitude:u,latitude:(d=b.latitude)==null?this.cameraMotion.value.latitude:d,fov:x}},{progress:1,value:{longitude:(f=b.longitude)==null?this.cameraMotion.value.longitude:f,latitude:(p=b.latitude)==null?this.cameraMotion.value.latitude:p,fov:g}}],y).catch(q)}this.locationMotion.setKeyframes(_,y,v).then(()=>{for(let e of this.modelScene.children)e instanceof If&&e.show();let t=Object.assign(Object.assign({},e),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:0});this.emit(`pano.arrived`,$(`pano.arrived`,{options:n,prevPano:S,progress:1,state:t,userAction:this.userAction,error:null})),n.moveEndCallback&&n.moveEndCallback(t);let r=this.works.getObserver(this.currentPano);if(r&&r.images.video&&this.videoTexture&&this.videoTexture.image instanceof HTMLVideoElement){let e={map:this.videoTexture,size:r.images.video.size.clone(),matrix:r.images.video.matrix.clone(),panoMatrix:r.matrix.clone().premultiply(r.work.transform),alpha:1},t=nn(),n=this.videoTexture.image;n.setAttribute(`uuid`,t),rg().then(i=>{i&&r.images.video&&n.getAttribute(`uuid`)===t&&(n.oncanplay=()=>{n.oncanplay=q,n.play()},n.ontimeupdate=()=>{n.currentTime>.5&&(n.ontimeupdate=q,this.panoVideo.setMaterial(e))},n.src=r.images.video.source)}).catch((()=>{n.removeAttribute(`uuid`)}))}},()=>{this.emit(`pano.cancel`,$(`pano.cancel`,{options:n,prevPano:S,progress:0,state:x,userAction:this.userAction,error:null})),n.moveCancelCallback&&n.moveCancelCallback()})}checkSelectedPano(e){var t;this.stopMomentumMovement(),this.camera.getDirection(new c.Vector3).setY(0);let n=null,r=this.works.getObserver(this.currentPano);if(!r)return null;let i=r.work.observers,a=r.accessibleNodes.filter(e=>{if(e===this.currentPano.panoIndex&&r.work.workCode===this.currentPano.workCode)return!1;let t=i[e];return!t||Rv.copy(t.position).applyMatrix4(t.work.transform).distanceTo(this.camera.position)>this.maxAccessibleDistance?!1:t.loadable||t.active}),[o]=this.modelScene.intersectRaycaster(e);if(o){let[e,r]=Nl(a,e=>{let t=i[e];return t?Rv.copy(t.standingPosition).applyMatrix4(t.work.transform).distanceTo(o.point):1/0},!0);typeof e==`number`&&r<this.panoTapTriggerRadius&&(n=(t=i[e])==null?null:t)}if(ev(n)){let t=this.getForwardObserverOrNot(this.xrManager.cameraVR,e);t&&(n=t)}for(let e of this.locationMotion.keyframes){let t=this.panoResourceFromLocationMotionKeyframe(e);if(!(e.progress<this.locationMotion.progress)&&n){let e=Q({panoIndex:n.panoIndex,workCode:n.work.workCode});if(t.panoId===e){n=null;break}}}if(ev(n))return this.locationMotion.ended===!0&&this.cameraBounce(),null;if(!n.active){let e=Q({panoIndex:n.panoIndex,workCode:n.work.workCode}),t=this.panoMeshes.get(e);t&&(t.setDisabled(!1),t.setLoading(!0))}let s={workCode:n.work.workCode,panoIndex:n.panoIndex,mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,distance:0,offset:n?n.position.clone():new c.Vector3};return this.emit(`pano.select`,$(`pano.select`,{prevPano:this.currentPano,state:s,userAction:!0,options:{},progress:0,error:null})),n&&n.active?(this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,progress:0,state:s,options:{},error:null})),{workCode:n.work.workCode,panoIndex:n.panoIndex}):null}destroy(){super.destroy()}isReady(){return!1}updateCamera(e,t,n){return Promise.resolve()}updateCameraWithKeyframes(e,t,n){return Promise.resolve()}updateTime(e,t,...n){var r,i,a,o,s,l,u,d,f;this.userAction=!0;let p={},m={},h=this.camera.getDirection(new c.Vector3),g=this.locationMotion.keyframes[0],_=this.locationMotion.keyframes[this.locationMotion.keyframes.length-1],[v,y]=this.locationMotion.getKeyFrameSegment(e),b=this.panoResourceFromLocationMotionKeyframe(v),x=this.panoResourceFromLocationMotionKeyframe(y),S=this.panoResourceFromLocationMotionKeyframe(g),C=this.panoResourceFromLocationMotionKeyframe(_),w=!1;if(this.cameraMotion.ended===!1&&(this.cameraMotion.update(e),m.fov=this.cameraMotion.value.fov),this.modelAlphaMotion.ended===!1&&(this.modelAlphaMotion.update(e),p.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.perspToOrthoMotion.ended===!1&&(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(W(this.perspToOrthoMotion.value.perspToOrtho,0,1))),this.locationMotion.ended===!1){this.locationMotion.update(e);let t=this.locationMotion.value.count-y.value.count+1,n=new c.Vector3().copy(b.position),a=new c.Vector3().copy(x.position);if(p.progress=t,t>=.01&&t<=.99&&(p.progress=W(x.effectEasing(t),.01,.99)),x.leftPanoPicture&&(t<1?b.leftPanoPicture&&(p.pano0=b.leftPanoPicture):p.pano0=x.leftPanoPicture,p.pano1=x.leftPanoPicture),x.effect===`montage`?p.transition=`BLACK`:x.effect===`spread`?p.transition=`SPREAD`:p.transition=`FADE`,x.effect===`zoomin`||x.effect===`zoomout`?p.progress=Math.pow(t,3):x.effect===`model`&&this.camera.pose.distance<.01&&(p.modelAlpha=1-Math.pow(W(Math.abs(t-.5)*2,0,1),4)),t<1&&x.effect!==`fly`){if(p.pano0&&b.leftPanoPicture){let e={panoId:p.pano0.panoId,map:p.pano0.map,mapHistogram:p.pano0.mapHistogram,mapSize:p.pano0.mapSize,zoom:p.pano0.zoom,matrix:b.leftPanoPicture.matrix.clone().setPosition(x.position)},t=this.panoPictureObserverMap.get(p.pano0);t&&this.panoPictureObserverMap.set(e,t),p.pano0=e}n.copy(a),w=!0}m.distance=this.locationMotion.value.distance,m.offset=new c.Vector3(n.x+(a.x-n.x)*t,n.y+(a.y-n.y)*t,n.z+(a.z-n.z)*t);let o=[],s=[];for(let e of this.locationMotion.keyframes){let{key:t,progress:n}=e;t!==void 0&&(o.push(t),n>this.locationMotion.progress&&s.push(t))}for(let e of Object.keys(this.panoResources)){if(s.indexOf(e)>=0)continue;let t=this.panoResources[e];if(t.leftPanoPicture){let e=t.leftPanoPicture.map;if(e){if(e===((r=p.pano0)==null?void 0:r.map)||e===((i=p.pano1)==null?void 0:i.map))continue;e.dispose(),t.leftPanoPicture=null}}o.indexOf(e)>=0||delete this.panoResources[e]}let l=hp(x.panoId);l!==this.currentPano&&(this.currentPano=l,this.accessibleObserverFloorCheckCount=0),this.emit(`pano.moving`,$(`pano.moving`,{userAction:this.userAction,prevPano:hp(S.panoId),state:Object.assign(Object.assign(Object.assign(Object.assign({},hp(C.panoId)),{mode:this.mode}),jh(this.camera.pose)),m),options:{},progress:this.locationMotion.progress,error:null}))}this.camera.setFromPose(m),this.xrManager.cameraVR.projectionMatrix.copy(this.camera.projectionMatrix),this.xrManager.cameraVR.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),this.xrManager.cameraVR.matrix.copy(this.camera.matrix),this.xrManager.cameraVR.position.copy(this.camera.position),this.xrManager.cameraVR.quaternion.copy(this.camera.quaternion),this.xrManager.cameraVR.scale.copy(this.camera.scale),this.xrManager.cameraVR.matrixAutoUpdate=!1,this.xrManager.cameraVR.matrixWorld.copy(this.camera.matrixWorld);let[T,E]=n,D=new c.Vector3(0,0,0),O=new c.Vector2().copy(this.camera.resolution);if(E&&this.xrManager.session&&this.xrManager.referenceSpace&&this.xrManager.session.renderState.baseLayer){let n=this.xrManager.cameraVR,r=this.xrManager.referenceSpace,i=this.xrManager.session.renderState.baseLayer,l=E.getViewerPose(r),u=(a=l==null?void 0:l.views)==null?[]:a;for(let e=0;e<u.length;e++){let t=u[e],r=n.cameras[e],a=i.getViewport(t);a&&(r.projectionMatrix.fromArray(t.projectionMatrix),r.projectionMatrixInverse.getInverse(r.projectionMatrix),r.matrix.fromArray(t.transform.matrix),r.matrix.setPosition(this.camera.position),r.matrix.decompose(r.position,r.quaternion,r.scale),r.matrixWorld.copy(r.matrix),r.matrixWorldInverse.getInverse(r.matrixWorld),r.matrixAutoUpdate=!1,D.copy(r.position),r.viewport.set(a.x,a.y,a.width,a.height),O.set(a.width,a.height))}if(this.xrManager.setProjectionFromUnion(this.xrManager.cameraVR,this.xrManager.cameraL,this.xrManager.cameraR),this.camera.quaternion.copy(this.xrManager.cameraVR.quaternion),this.camera.scale.copy(this.xrManager.cameraVR.scale),this.camera.matrix.compose(this.camera.position,this.camera.quaternion,this.camera.scale),this.camera.computePose((o=m.distance)==null?this.camera.pose.distance:o),this.xrManager.session.inputSources){for(let e=0;e<this.xrManager.session.inputSources.length;e++)if(this.xrManager.session.inputSources[e]&&this.xrManager.session.inputSources[e].targetRayMode===`transient-pointer`){let t=E.getPose(this.xrManager.session.inputSources[e].targetRaySpace,r);if(t){let e=t.transform.orientation,n=new c.Quaternion(e.x,e.y,e.z,e.w),r=new c.Vector3(0,0,-1).applyQuaternion(n);this.gazeRay=new c.Raycaster(this.camera.position,r)}}}if(this.xrManager.machineType===`Oculus`||this.xrManager.machineType===`Pico`){let n=this.xrManager.session.inputSources;for(let e=0;e<n.length;e++){let t=this.xrManager.controllers[e],i=n[e];if(!i)continue;t&&t.update(i,E,r);let a=this.xrManager.getController(e),o=new c.Vector3(0,1.2,0),l=a.position.clone().add(D).sub(o);i.handedness===`left`?this.xrControllerRay.left.set(l,new c.Vector3(0,0,-1).applyEuler(a.rotation)):i.handedness===`right`&&this.xrControllerRay.right.set(l,new c.Vector3(0,0,-1).applyEuler(a.rotation)),this.controllerWrappers[e].position.copy(new c.Vector3(0,0,0).add(D).sub(o));let u=this.modelScene.intersectRaycaster(this.xrControllerRay.right);if(u.length===0){let e=this.works.getResolvedObserver(this.currentPano);u=this.xrControllerRay.right.intersectObject(this.modelScene.boundingMesh,!0).map(t=>{var n;let r=(n=e==null?void 0:e.floorIndex)==null?0:n;return Object.assign({floorIndex:r,floor:r},t)})}if(u.length>=1&&u[0].face)if(i.handedness===`right`){let e=this.xrControllerRay.right.intersectObject(this.xrCustomObjectsScene,!0),t=u[0].face.normal,n=t.clone(),r=u[0].point.clone();this.intersectMesh.position.copy(r);let i=r.clone().add(n);if(this.intersectMesh.lookAt(i),Math.abs(t.y)>.99){let e=this.camera.position.clone().sub(r);this.intersectMesh.rotation.z=-Math.atan2(e.z,e.x)}this.intersectMesh.visible=!0,this.needsRender=!0,e.length>0?(this.pointerLines.right.setPoints(l,e[0].point),this.pointerLines.right.points.visible=!0,this.intersectMesh.visible=!1):(this.pointerLines.right.points.visible=!1,this.pointerLines.right.setPoints(l,u[0].point));let a=u[0],o=$(`intersect.update`,{raycaster:(s=this.xrControllerRay.right)==null?null:s,intersection:a==null?null:a,object:this.intersectMesh});if(this.emit(`intersect.update`,o),o.defaultPrevented){this.hideIntersectMesh();return}}else this.pointerLines.left.setPoints(l,u[0].point)}this.updateControllerHelper(n,e,t)}}else E||console.error(`xrFrame丢失,请重试`),this.xrManager.session||console.error(`session丢失,请重试`),this.xrManager.session&&!this.xrManager.session.renderState.baseLayer&&console.error(`no layer found`);Ph(p)===!1&&this.modelScene.parameter.set(p),this.emit(`camera.update`,$(`camera.update`,{userAction:this.userAction,state:Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),jh(this.camera.pose))}));let k=this.works.getResolvedObserver(this.currentPano),A=this.locationMotion.ended?this.getForwardObserverOrNot(this.xrManager.cameraVR):null,j=this.works.getObserver(b.panoId),M=this.works.getObserver(x.panoId);if(this.adjustPanoCircleMeshPositionBasedOnModel&&this.helper.visible&&k){let e=[],t=k.work.observers;for(let n of k.accessibleNodes){let r=t[n];r&&e.push(r)}let n=new Map;if(e.sort((e,t)=>{let r=n.get(e);r===void 0&&(r=e.standingPosition.distanceTo(k.standingPosition),n.set(e,r));let i=n.get(e);return i===void 0&&(i=t.standingPosition.distanceTo(k.standingPosition),n.set(t,i)),r-i}),e.length){this.accessibleObserverFloorCheckCount%=e.length;let t=e[this.accessibleObserverFloorCheckCount],n=this.modelScene.models.find(e=>e.work===(t==null?void 0:t.work));if(t&&n&&n.visible){let e=.3,r=.005,i=t.standingPosition.clone().applyMatrix4(t.work.transform),a=Q({panoIndex:t.panoIndex,workCode:t.work.workCode}),o=Yg.map(t=>{Lv.ray.origin.copy(i),Lv.ray.origin.add(Rv.copy(t).setY(e)),Lv.ray.direction.set(0,-1,0),Lv.firstHitOnly=!0,Lv.floorIndex=-1;let[a]=n.intersectRaycaster(Lv);return a&&a.distance-r<=e?new c.Vector3().copy(i).setY(a.point.y+r):i});o.sort((e,t)=>t.y-e.y);let s=o[Math.floor(o.length/2)],[l]=o.filter(e=>e.distanceTo(s)<=.05);if(l){let e=new c.Vector4(i.x,i.y,i.z,l.y-i.y),t=this.adjustPanoCircleMeshPositionFix.get(a);t&&!e.equals(t)&&(this.needsRender=!0),this.adjustPanoCircleMeshPositionFix.set(a,e)}}this.accessibleObserverFloorCheckCount++}}let N=new Map;if(j)for(let e of j.accessibleNodes){let t=j.work.observers[e];if(t){let e=Q({panoIndex:t.panoIndex,workCode:t.work.workCode});N.set(e,t)}}if(M)for(let e of M.accessibleNodes){let t=M.work.observers[e];if(t){let e=Q({panoIndex:t.panoIndex,workCode:t.work.workCode});N.set(e,t)}}if(this.panoMeshes.forEach((e,t)=>{N.get(t)?N.delete(t):(this.helper.remove(e),e.dispose(),this.panoMeshes.delete(t))}),N.forEach((e,t)=>{let n=this.panoCircleMeshCreator(e,{aerialObserverMinHeight:this.aerialObserverMinHeight});this.panoMeshes.set(t,n),this.helper.add(n),N.delete(t)}),this.panoMeshes.forEach((e,t)=>{let n=this.works.getObserver(t);if(n){let r=n.position.distanceTo(n.standingPosition)>this.aerialObserverMinHeight;if(r)e.position.copy(n.position).applyMatrix4(n.work.transform),e.scale.setScalar(18);else{e.position.copy(n.standingPosition).applyMatrix4(n.work.transform);let t=this.adjustPanoCircleMeshPositionFix.get(n.panoId);t&&(Rv.set(t.x,t.y,t.z),Rv.equals(e.position)&&(e.position.y+=t.w)),e.scale.setScalar(1.2)}let i=this.camera.position.clone().setY(e.position.y),a=new c.Vector3().copy(e.position).sub(i).normalize();if(t===Q(this.currentPano)){let t=W((.5-i.distanceTo(e.position))/.5,0,1);a.multiplyScalar(1-t).add(h.clone().multiplyScalar(t))}if(a.length()>0){let t=r?-Math.PI/2:0,n=Math.atan2(a.x,a.z);e.quaternion.setFromEuler(new c.Euler(t,n,0,`YXZ`))}}else e.visible=!1}),this.camera.pose.distance>.1||w)this.panoMeshes.forEach(n=>{n.setOpacity(0),n.setCurrent(!1),n.updateTime&&n.updateTime(e,t),n.visible=!1});else if(k){let n=k.work.observers,[,r]=Nl(k.accessibleNodes,e=>{let t=n[e];return!t||!t.active?1/0:k.standingPosition.distanceTo(t.standingPosition)},!0);r=W(r,2.5,1/0);let i=k.accessibleNodes.concat(k.panoIndex).map(e=>Q({panoIndex:e,workCode:k.work.workCode}));this.panoMeshes.forEach((n,a)=>{let o=this.works.getObserver(a),s=!1,c=1;if(i.indexOf(a)===-1)s=!1,c=0;else if(!o)s=!1,c=0;else if(!o.loadable&&!o.active)s=!1,c=0;else{let e=n.position.clone().project(this.camera);s=Math.abs(e.x)<1&&Math.abs(e.y)<1&&Math.abs(e.z)<1&&!n.loading&&n.progress===0&&A!==null&&Q({panoIndex:A.panoIndex,workCode:A.work.workCode})===a;let t=n.position.clone().setY(this.camera.position.y).distanceTo(this.camera.position);c=t<.01?0:W(r/t,.1,.85)}o&&o===M&&o.position.distanceTo(o.standingPosition)>this.aerialObserverMinHeight&&n.position.distanceTo(this.camera.position)<35&&(c=0),this.modelScene.parameter.resolveValue().modelAlpha>0&&(c=0),n.setCurrent(s),n.setOpacity(c),n.updateTime&&n.updateTime(e,t)})}{let e=(l=this.modelScene.parameter.progress)==null?1:l,t=Math.round(e),n=this.modelScene.parameter.pano0,r=this.modelScene.parameter.pano1,i=t===0?n:r,a;if(i&&(a=this.works.getObserver(i.panoId),a||(a=this.panoPictureObserverMap.get(i))),this.tiling.appearDuration=this.tileAppearDuration,this.tiling.maxRequest=e<(si()?.6:.99)?0:this.tileMaxRequest,this.tiling.imageOptions=this.imageOptions,!a||!i||this.tileLevelForFov===!1||this.camera.perspToOrtho.x>0){this.tiling.setObserver(null);let e={renderer:this.renderer,resolution:O,pixelRatio:1,time:this.camera.time,cameraMatrix:this.xrManager.cameraVR.matrixWorld,cameraProjectionMatrix:this.xrManager.cameraVR.projectionMatrix,panoMap:null,panoMatrix:new c.Matrix4,panoZoom:1,minLevel:0,level:0};this.tiling.update(e),this.modelScene.parameter.set(`refinedScreen`,null)}else{let e=Qr(i.mapSize)+1;this.tiling.setObserver(a);let o={renderer:this.renderer,resolution:O,pixelRatio:1,time:this.camera.time,cameraMatrix:this.xrManager.cameraVR.matrixWorld,cameraProjectionMatrix:this.xrManager.cameraVR.projectionMatrix,panoMap:i.map,panoMatrix:i.matrix,panoZoom:i.zoom,minLevel:e,level:4},s=this.tiling.update(o),c={map:this.tiling.renderTarget.texture,matrixInverse:this.tiling.camera.matrixWorldInverse,projectionMatrix:this.tiling.camera.projectionMatrix,pano:t,opacity:(n==null?void 0:n.panoId)===(r==null?void 0:r.panoId)?1:Vu(Math.abs(((u=this.modelScene.parameter.progress)==null?0:u)-.5)*2)},l=this.modelScene.parameter.refinedScreen;(s||c.pano!==(l==null?void 0:l.pano)||c.opacity!==(l==null?void 0:l.opacity))&&this.modelScene.parameter.set(`refinedScreen`,c)}}if(this.panoVideo.object.position.copy(this.camera.position),this.panoVideo.updateTime(e),this.intersectMesh&&this.intersectMesh.parent&&k&&k.position.y-k.standingPosition.y>10){let e=W(this.camera.position.distanceTo(this.intersectMesh.position)*(2*Math.tan(.5*this.camera.fov/180*Math.PI))/5,.5);this.intersectMesh.scale.setScalar(e)}else this.intersectMesh.scale.setScalar(1);{let e=x.effect,{pano0:t,pano1:n}=this.modelScene.parameter;if(t&&n&&t!==n&&(e===`fly`||e===`model`)&&this.flyEffectUseDepthBuffer){if(((d=this.modelScene.parameter.pano0Depth)==null?void 0:d.panoId)!==t.panoId||((f=this.modelScene.parameter.pano1Depth)==null?void 0:f.panoId)!==n.panoId){this.pano0DepthCubeRenderTarget?this.pano0DepthCubeRenderTarget.width!==512&&this.pano0DepthCubeRenderTarget.setSize(512,512):this.pano0DepthCubeRenderTarget=new c.WebGLCubeRenderTarget(512,{minFilter:c.NearestFilter,magFilter:c.NearestFilter,generateMipmaps:!1}),this.pano1DepthCubeRenderTarget?this.pano1DepthCubeRenderTarget.width!==512&&this.pano1DepthCubeRenderTarget.setSize(512,512):this.pano1DepthCubeRenderTarget=new c.WebGLCubeRenderTarget(512,{minFilter:c.NearestFilter,magFilter:c.NearestFilter,generateMipmaps:!1});let e=new c.CubeCamera(this.camera.near,this.camera.far,this.pano0DepthCubeRenderTarget);e.matrix.copy(t.matrix),e.matrixWorld.copy(e.matrix),e.matrixAutoUpdate=!1,Gg(this.renderer,this.modelScene,e,500);let r=new c.CubeCamera(this.camera.near,this.camera.far,this.pano1DepthCubeRenderTarget);r.matrix.copy(n.matrix),r.matrixWorld.copy(r.matrix),r.matrixAutoUpdate=!1,Gg(this.renderer,this.modelScene,r,500),this.modelScene.parameter.set({pano0Depth:{panoId:t.panoId,map:this.pano0DepthCubeRenderTarget.texture,mapSize:this.pano0DepthCubeRenderTarget.width,maxDepth:500},pano1Depth:{panoId:n.panoId,map:this.pano1DepthCubeRenderTarget.texture,mapSize:this.pano1DepthCubeRenderTarget.width,maxDepth:500}})}}else this.modelScene.parameter.set({pano0Depth:null,pano1Depth:null}),this.flyEffectUseDepthBuffer||(this.pano0DepthCubeRenderTarget&&(this.pano0DepthCubeRenderTarget.dispose(),this.pano0DepthCubeRenderTarget=void 0),this.pano1DepthCubeRenderTarget&&(this.pano1DepthCubeRenderTarget.dispose(),this.pano1DepthCubeRenderTarget=void 0))}}render(){if(this.xrManager.session&&this.xrManager.session.renderState.baseLayer){let e=this.xrManager.session.renderState.baseLayer;return this.renderer.setRenderTarget(null),this.renderer.setScissorTest(!1),this.renderer.setFramebuffer(e.framebuffer),this.renderer.render(this.scene,this.xrManager.cameraVR),this.renderer.setFramebuffer(null),!0}return!1}onPanGesture(){}onTapGesture(){}onPinchGesture(){}onMouseMove(){}onMouseOut(){}panoResourceFromLocationMotionKeyframe(e){return this.panoResources[e.key]}updateControllerHelper(e,t,n){let r=this.xrControllerRay.left,i=this.xrControllerRay.right;if(!e||e.length===0)return;let a={buttons:{X:!1,Y:!1,LeftTrigger:!1,LeftPinch:!1,A:!1,B:!1,RightTrigger:!1,RightPinch:!1}};for(let o=0;o<e.length;o++){let s=e[o].handedness,c=e[o].gamepad;switch(s){case`left`:c.axes&&(this.emitHandleEvent(c.axes[2]===-1,`LeftAxesLeft`,t),this.emitHandleEvent(c.axes[2]===1,`LeftAxesRight`,t),this.emitHandleEvent(c.axes[3]===-1,`LeftAxesUp`,t),this.emitHandleEvent(c.axes[3]===1,`LeftAxesDown`,t)),c!=null&&c.buttons&&(c.buttons[4]&&this.emitHandleEvent(c.buttons[4].pressed,`X`,t),c.buttons[5]&&this.emitHandleEvent(c.buttons[5].pressed,`Y`,t),c.buttons[0]&&this.emitHandleEvent(c.buttons[0].pressed,`LeftTrigger`,t),c.buttons[1]&&this.emitHandleEvent(c.buttons[1].pressed,`LeftPinch`,t));let e={raycaster:r,axes:{up:c.axes&&c.axes[3]<0?Math.abs(c.axes[3]):0,down:c.axes&&c.axes[3]<0?0:Math.abs(c.axes[3]),left:c.axes&&c.axes[2]<0?Math.abs(c.axes[2]):0,right:c.axes&&c.axes[2]<0?0:Math.abs(c.axes[2])},deltaTime:n};a.buttons.X=c.buttons&&c.buttons[4]?c.buttons[4].pressed:!1,a.buttons.Y=c.buttons&&c.buttons[5]?c==null?void 0:c.buttons[5].pressed:!1,a.buttons.LeftTrigger=c.buttons&&c.buttons[0]?c==null?void 0:c.buttons[0].pressed:!1,a.buttons.LeftPinch=c.buttons&&c.buttons[1]?c==null?void 0:c.buttons[1].pressed:!1,a.left=e;break;case`right`:c.axes&&(this.emitHandleEvent(c.axes[2]===-1,`RightAxesLeft`,t),this.emitHandleEvent(c.axes[2]===1,`RightAxesRight`,t),this.emitHandleEvent(c.axes[3]===-1,`RightAxesUp`,t),this.emitHandleEvent(c.axes[3]===1,`RightAxesDown`,t)),c.buttons&&(c.buttons[4]&&this.emitHandleEvent(c.buttons[4].pressed,`A`,t),c.buttons[5]&&this.emitHandleEvent(c.buttons[5].pressed,`B`,t),c.buttons[0]&&this.emitHandleEvent(c.buttons[0].pressed,`RightTrigger`,t),c.buttons[1]&&this.emitHandleEvent(c.buttons[1].pressed,`RightPinch`,t)),a.right={raycaster:i,axes:{up:c.axes&&c.axes[3]<0?Math.abs(c.axes[3]):0,down:c.axes&&c.axes[3]<0?0:Math.abs(c.axes[3]),left:c.axes&&c.axes[2]<0?Math.abs(c.axes[2]):0,right:c.axes&&c.axes[2]<0?0:Math.abs(c.axes[2])},deltaTime:n},a.buttons.A=c.buttons&&c.buttons[4]?c==null?void 0:c.buttons[4].pressed:!1,a.buttons.B=c.buttons&&c.buttons[5]?c==null?void 0:c.buttons[5].pressed:!1,a.buttons.RightTrigger=c.buttons&&c.buttons[0]?c==null?void 0:c.buttons[0].pressed:!1,a.buttons.RightPinch=c.buttons&&c.buttons[1]?c==null?void 0:c.buttons[1].pressed:!1;break;default:break}}this.emit(`xr.controller.update`,$(`xr.controller.update`,a))}emitHandleEvent(e,t,n){let r=this.xrControllerRay.left,i=this.xrControllerRay.right;if(e)this.xrHandleState[t].touchStart===!1?(this.xrHandleState[t].touchStartTime=n,this.xrHandleState[t].touchStart=!0,this.emit(`xr.gesture.buttonDown`,$(`xr.gesture.buttonDown`,{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:t,isFinal:!1,isFirst:!0,controllers:{raycaster:{leftRay:r,rightRay:i}}}))):n-this.xrHandleState[t].touchStartTime>Iv&&this.emit(`xr.gesture.press`,$(`xr.gesture.tap`,{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:t,isFinal:!0,isFirst:!0,controllers:{raycaster:{leftRay:r,rightRay:i}}}));else if(this.xrHandleState[t].touchStart===!0){if(this.emit(`xr.gesture.buttonUp`,$(`xr.gesture.buttonUp`,{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:t,isFinal:!0,isFirst:!1,controllers:{raycaster:{leftRay:r,rightRay:i}}})),n-this.xrHandleState[t].touchStartTime<=Iv){let e=$(`xr.gesture.tap`,{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:t,isFinal:!0,isFirst:!1,controllers:{raycaster:{leftRay:r,rightRay:i}}});!this.emit(`xr.gesture.tap`,e)&&!e.defaultPrevented&&t===`RightTrigger`&&this.checkSelectedPano(this.xrControllerRay.right)}this.xrHandleState[t].touchStart=!1,this.xrHandleState[t].touchStartTime=0}}initHandEvent(){if(!this.xrManager.session)throw Error(`初始化失败`);this.xrManager.session.addEventListener(`select`,e=>{this.gazeRay&&this.checkSelectedPano(this.gazeRay)})}}},Bv={Floorplan:Yh,Topview:Zh,Panorama:Xg,VRPanorama:V_,Model:K_,Mapview:Q_,XRPanorama:Pv},Vv=`gesture.pan,gesture.tap,gesture.dbltap,gesture.press,gesture.pinch,gesture.mousewheel,gesture.mousemove,gesture.momentum,gesture.create,initAnimation.start,initAnimation.end,camera.update,intersect.update,pano.select,pano.moveTo,pano.moving,pano.arrived,pano.cancel,pano.error,pano.texture.load,pano.texture.progress,pano.texture.success,pano.texture.error,pano.texture.abort,xr.session.start,xr.session.end,xr.gesture.tap,xr.gesture.press,xr.gesture.buttonUp,xr.gesture.buttonDown,xr.controller.update`.split(`,`);function Hv(e){e.on(`initAnimation.start`,t=>{e.emit(`initAnimationWillStart`,t.state.panoIndex,t.state,t.userAction)}),e.on(`initAnimation.end`,t=>{e.emit(`initAnimationEnded`,t.state.panoIndex,t.state,t.userAction)}),e.on(`gesture.pan`,t=>{let n=!1;n=e.emit(`wantsGesture`,`pan`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPanGesture`,t.state,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`pan`,t.pointers,t.isFinal),e.emit(`panGesture`,t.state,t.isFinal))}),e.on(`gesture.tap`,t=>{let n=!1;n=e.emit(`wantsGesture`,`tap`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsTapGesture`,t.center.raycaster,t.center.coords,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`tap`,t.pointers,t.isFinal),e.emit(`tapGesture`,t.center.raycaster,t.center.coords,t.isFinal))}),e.on(`gesture.dbltap`,t=>{let n=!1;n=e.emit(`wantsGesture`,`dbltap`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsDblTapGesture`,t.center.raycaster,t.center.coords,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`dbltap`,t.pointers,t.isFinal),e.emit(`dblTapGesture`,t.center.raycaster,t.center.coords,t.isFinal))}),e.on(`gesture.press`,t=>{let n=!1;n=e.emit(`wantsGesture`,`press`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPressGesture`,t.center.raycaster,t.center.coords,t.center.delta,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`press`,t.pointers,t.isFinal),e.emit(`pressGesture`,t.center.raycaster,t.center.coords,t.center.delta,t.isFinal))}),e.on(`gesture.pinch`,t=>{let n=!1;n=e.emit(`wantsGesture`,`pinch`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPinchGesture`,t.scale,t.state.fov,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`pinch`,t.pointers,t.isFinal),e.emit(`pinchGesture`,t.scale,t.state.fov,t.isFinal))}),e.on(`gesture.mousewheel`,t=>{let n=!1;n=e.emit(`wantsGesture`,`mouseWheel`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsMouseWheel`,t.center.delta,t.state.fov,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`mouseWheel`,t.pointers,t.isFinal),e.emit(`mouseWheel`,t.center.delta,t.state.fov,t.isFinal))}),e.on(`gesture.mousemove`,t=>{let n=!1;n=e.emit(`wantsGesture`,`mouseMove`,t.pointers,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`mouseMove`,t.pointers,t.isFinal),n=e.emit(`wantsChangeCameraFov`,t.state.fov),n&&t.preventDefault())}),e.on(`gesture.momentum`,t=>{let n=!1;n=e.emit(`wantsInteriaPan`,t.state),n&&t.preventDefault(),t.defaultPrevented||e.emit(`interiaPan`,t.state,t.isFinal)}),e.on(`camera.update`,t=>{e.emit(`cameraFovUpdate`,t.state.fov,t.userAction),e.emit(`cameraDirectionUpdate`,t.state,t.userAction);let n=Vt(t.state);n.setLength(t.state.distance);let r=t.state.offset.clone().sub(n);e.emit(`cameraPositionUpdate`,r,t.userAction),e.emit(`cameraUpdate`,t.state,t.userAction)}),e.on(`intersect.update`,t=>{if(t.intersection){let n=!1;n=e.emit(`wantsShowIntersectionOnModel`,t.raycaster),n&&t.preventDefault(),t.defaultPrevented||e.emit(`intersectionOnModelUpdate`,t.intersection,t.object)}else e.emit(`intersectionHidden`)}),e.on(`pano.request`,t=>{let n=e.emit(`wantsMoveToPano`,t.state.panoIndex,t.options,t.userAction);n||(n=e.emit(`wantsToMoveToPano`,t.state.panoIndex,t.options,t.userAction)),n&&t.preventDefault(),t.defaultPrevented||e.emit(`panoWillLoad`,t.state.panoIndex)}),e.on(`pano.select`,t=>{e.emit(`panoSelected`,t.state.panoIndex)}),e.on(`pano.moveTo`,t=>{e.emit(`panoLoaded`,t.state.panoIndex),e.emit(`moveToPano`,t.state.panoIndex,t.userAction),e.emit(`panoWillArrive`,t.state.panoIndex,t.state,t.userAction)}),e.on(`pano.moving`,t=>{e.emit(`movingToPano`,t.state.panoIndex,t.prevPano.panoIndex,t.progress)}),e.on(`pano.arrived`,t=>{e.emit(`panoArrived`,t.state.panoIndex,t.state,t.userAction)}),e.on(`pano.cancel`,t=>{e.emit(`moveToPanoCanceled`,t.state.panoIndex)}),e.on(`pano.error`,t=>{e.emit(`panoLoadError`,t.error,t.state.panoIndex)}),e.on(`pano.texture.load`,t=>{e.emit(`textureStartLoad`,t.pano.panoIndex)}),e.on(`pano.texture.success`,t=>{e.emit(`textureLoaded`,t.pano.panoIndex,t.meta)}),e.on(`pano.texture.error`,t=>{e.emit(`textureError`,t.error,t.pano.panoIndex)}),e.on(`pano.texture.abort`,t=>{e.emit(`textureAbort`,t.pano.panoIndex)}),e.on(`pano.texture.progress`,t=>{e.emit(`textureLoading`,t.progress,t.pano.panoIndex)}),e.on(`xr.session.start`,t=>{e.emit(`webXRSessionStart`)}),e.on(`xr.session.end`,t=>{e.emit(`webXRSessionEnd`)}),e.on(`xr.gesture.tap`,t=>{e.emit(`webXRControllerEvent`,`tap`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.press`,t=>{e.emit(`webXRControllerEvent`,`press`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.buttonUp`,t=>{e.emit(`webXRControllerEvent`,`buttonUp`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.buttonDown`,t=>{e.emit(`webXRControllerEvent`,`buttonDown`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.controller.update`,t=>{e.emit(`webXRControllerRayUpdate`,{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0}),t.left&&e.emit(`webXRAxesUpdate`,`left`,{raycaster:{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0},axesState:{up:t.left.axes.up,down:t.left.axes.down,left:t.left.axes.left,right:t.left.axes.right},deltaTime:t.left.deltaTime}),t.right&&e.emit(`webXRAxesUpdate`,`right`,{raycaster:{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0},axesState:{up:t.right.axes.up,down:t.right.axes.down,left:t.right.axes.left,right:t.right.axes.right},deltaTime:t.right.deltaTime})}),e.on(`works.request`,t=>{e.emit(`willLoad`,t.input,t.works[0],e.getCurrentState())}),e.on(`works.load`,t=>{e.emit(`load`,t.input,t.works[0],e.getCurrentState())}),e.on(`works.ready`,t=>{e.emit(`loaded`,t.input,t.works[0])}),e.on(`state.change`,t=>{e.emit(`stateChange`,t.state,t.userAction)}),e.on(`currentState.change`,t=>{e.emit(`currentStateChange`,t.state,t.userAction)}),e.on(`state.set`,t=>{e.emit(`setState`,t.state)}),e.on(`state.synced`,t=>{e.emit(`stateSynced`,t.state)}),e.on(`model.request`,t=>{e.emit(`modelWillLoad`,t.work.model)}),e.on(`model.error`,t=>{e.emit(`modelLoadError`,t.error,t.model)}),e.on(`model.load`,t=>{e.emit(`modelLoaded`,t.model)}),e.on(`model.changeShownFloor`,t=>{e.emit(`modelShownFloorChange`,t.model.shownFloor,t.model.floorLength)}),e.on(`render`,t=>{e.emit(`renderFrame`,t.needsRender)}),e.on(`mode.change.request`,t=>{e.emit(`wantsChangeMode`,t.mode,t.prevMode)}),e.on(`mode.change`,t=>{e.emit(`modeChange`,t.mode,t.prevMode,t.state.panoIndex,t.state,t.userAction)}),e.on(`helpers.visible`,t=>{e.emit(`helpersVisibleChange`,t.object.visible)}),e.on(`network.resource`,t=>{e.emit(`network`,t.source,t.requestType,t.requestState,t.detail)})}function Uv(){if(typeof window<`u`){let e=document.createElement(`video`);e.loop=!0,e.autoplay=!0,e.playsInline=!0,e.muted=!0,e.crossOrigin=``;let t=()=>{document.removeEventListener(`touchstart`,t,!1),document.removeEventListener(`mousedown`,t,!1),e.muted=!1};return document.addEventListener(`touchstart`,t,!1),document.addEventListener(`mousedown`,t,!1),e}else return{}}function Wv(){let e=new c.Group;e.name=`internalLights`;{let t=new c.DirectionalLight(16777215,.1);t.name=`direction0`,t.position.copy(new c.Vector3(0,1,0)),e.add(t)}{let t=new c.DirectionalLight(16777215,.1);t.name=`direction1`,t.position.copy(new c.Vector3(-1,-1,-1)),e.add(t)}{let t=new c.DirectionalLight(16777215,.3);t.name=`direction2`,t.position.copy(new c.Vector3(1,1,1)),e.add(t)}{let t=new c.AmbientLight(16777215,.6);t.name=`ambient0`,e.add(t)}return e}function Gv(e){var t,n;let r={},i=e.split(/(\;|\,)/);for(let e of i){let i=e.split(`=`),a=(t=i[0])==null?void 0:t.trim(),o=(n=i[1])==null?void 0:n.trim();a&&o&&(r[a]=o)}return r}function Kv(){var e;if(typeof document<`u`){let t=document.getElementsByTagName(`meta`);for(let n=0;n<t.length;n++){let r=t[n];if(r.getAttribute(`name`)===`viewport`){let t=Gv((e=r.getAttribute(`content`))==null?``:e),n=Number(t[`initial-scale`]);if(!isNaN(n))return n}}}return 1}var qv=`data:image/png;base64,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`,Jv=[351,63],Yv=[20,20],Xv=new Float32Array([-.5,-.5,0,.5,-.5,0,-.5,.5,0,.5,.5,0]),Zv=new Float32Array([0,0,1,0,0,1,1,1]),Qv=new Uint8Array([0,1,2,1,3,2]),$v=new c.BufferGeometry;$v.setAttribute(`position`,new c.BufferAttribute(Xv,3)),$v.setAttribute(`uv`,new c.BufferAttribute(Zv,2)),$v.setIndex(new c.BufferAttribute(Qv,1));var ey=new c.MeshBasicMaterial({transparent:!0,depthTest:!1,depthWrite:!1,stencilWrite:!1,fog:!1}),ty=new c.Mesh($v,ey);ty.matrixAutoUpdate=!1;var ny=new c.Scene;ny.add(ty),ny.matrixAutoUpdate=!1;var ry=new c.OrthographicCamera(-.5,.5,.5,-.5,.1,1);ry.position.set(0,0,.5),ry.lookAt(0,0,0),ry.updateMatrixWorld(!0),ry.matrixAutoUpdate=!1;var iy=new c.Vector4,ay=new c.Vector4;function oy(e){if(ey.map){let t=e.getViewport(iy),n=e.getScissor(ay),r=e.getScissorTest(),i=e.autoClear,a=n.x+Yv[0]/3,o=n.y+Yv[1]/3,s=Jv[0]/3,c=Jv[1]/3;e.setViewport(a,o,s,c),e.setScissor(a,o,s,c),e.setScissorTest(!0),e.autoClear=!1,e.render(ny,ry),e.setViewport(t),e.setScissor(n),e.setScissorTest(r),e.autoClear=i}else{let e=new c.Texture,t=new Image;t.onload=()=>{e.image=t,e.wrapS=c.ClampToEdgeWrapping,e.wrapT=c.ClampToEdgeWrapping,e.minFilter=c.LinearFilter,e.needsUpdate=!0,e.generateMipmaps=!1,ey.needsUpdate=!0,t.onload=q},t.src=qv,ey.map=e}}var sy=`(function(){function e(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}async function t(e={}){var t,n=e,r=!1,i=!0,a=self.location.href;if(r||i)try{new URL(\`.\`,a).href}catch{}console.log.bind(console),console.error.bind(console);var o=!1;function s(e){for(var t=0,n=e.length,r=new Uint8Array(n),i;t<n;++t)i=e.charCodeAt(t),r[t]=~i>>8&i;return r}var c,l,u=!1;function d(){var e=M.buffer;new Int8Array(e),new Int16Array(e),n.HEAPU8=l=new Uint8Array(e),new Uint16Array(e),new Int32Array(e),n.HEAPU32=new Uint32Array(e),n.HEAPF32=new Float32Array(e),new Float64Array(e),new BigInt64Array(e),new BigUint64Array(e)}function f(){if(n.preRun)for(typeof n.preRun==\`function\`&&(n.preRun=[n.preRun]);n.preRun.length;)T(n.preRun.shift());x(w)}function p(){u=!0,I.c()}function m(){if(n.postRun)for(typeof n.postRun==\`function\`&&(n.postRun=[n.postRun]);n.postRun.length;)C(n.postRun.shift());x(S)}var h;function g(){return s(\`\\0asm\\0\\0\\0&\\\`\\\`}}\\\`}\\\`\\0\\\`\\v\\0\\\`\\0\\0\\x07aa\\0\\0\\b\\x07\\0\\0\\x07‚€€\\bA€Œ\\v\\x07b\\0c\\0\\x07d\\0e\\0f\\0\\f
2239
+ `},lv=class extends c.ShaderMaterial{constructor(e){super({uniforms:c.UniformsUtils.clone(cv.uniforms),vertexShader:cv.vertexShader,fragmentShader:cv.fragmentShader,clipping:!0}),this.type=`LineMaterial`,this.dashed=!1,Object.defineProperties(this,{color:{enumerable:!0,get(){return this.uniforms.diffuse.value},set(e){this.uniforms.diffuse.value=e}},linewidth:{enumerable:!0,get(){return this.uniforms.linewidth.value},set(e){this.uniforms.linewidth.value=e}},dashScale:{enumerable:!0,get(){return this.uniforms.dashScale.value},set(e){this.uniforms.dashScale.value=e}},dashSize:{enumerable:!0,get(){return this.uniforms.dashSize.value},set(e){this.uniforms.dashSize.value=e}},gapSize:{enumerable:!0,get(){return this.uniforms.gapSize.value},set(e){this.uniforms.gapSize.value=e}},opacity:{enumerable:!0,get(){return this.uniforms.opacity.value},set(e){this.uniforms.opacity.value=e}},resolution:{enumerable:!0,get(){return this.uniforms.resolution.value},set(e){this.uniforms.resolution.value.copy(e)}}}),this.setValues(e)}};Object.assign(lv.prototype,{isLineMaterial:!0});var uv=class extends c.Mesh{constructor(e,t){super(),this.type=`LineSegments2`,this.geometry=e===void 0?new sv:e,this.material=t===void 0?new lv({color:Math.random()*16777215}):t}computeLineDistances(){let e=this.geometry,t=e.attributes.instanceStart,n=e.attributes.instanceEnd,r=new Float32Array(2*t.count),i=new c.Vector3,a=new c.Vector3;for(var o=0,s=0,l=t.count;o<l;o++,s+=2)i.fromBufferAttribute(t,o),a.fromBufferAttribute(n,o),r[s]=s===0?0:r[s-1],r[s+1]=r[s]+i.distanceTo(a);let u=new c.InstancedInterleavedBuffer(r,2,1);return e.setAttribute(`instanceDistanceStart`,new c.InterleavedBufferAttribute(u,1,0)),e.setAttribute(`instanceDistanceEnd`,new c.InterleavedBufferAttribute(u,1,1)),this}raycast(e,t){e.camera===null&&console.error(`LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2.`);let n=e.ray,r=e.camera,i=r.projectionMatrix,a=this.geometry,o=this.material,s=o.resolution,l=o.linewidth,u=a.attributes.instanceStart,d=a.attributes.instanceEnd,f=new c.Vector4,p=new c.Vector4,m=new c.Vector4,h=new c.Vector3,g=new c.Matrix4,_=new c.Line3,v=new c.Vector3;n.at(1,m),m.w=1,m.applyMatrix4(r.matrixWorldInverse),m.applyMatrix4(i),m.multiplyScalar(1/m.w),m.x*=s.x/2,m.y*=s.y/2,m.z=0,h.copy(m);let y=this.matrixWorld;g.multiplyMatrices(r.matrixWorldInverse,y);for(var b=0,x=u.count;b<x;b++){f.fromBufferAttribute(u,b),p.fromBufferAttribute(d,b),f.w=1,p.w=1,f.applyMatrix4(g),p.applyMatrix4(g),f.applyMatrix4(i),p.applyMatrix4(i),f.multiplyScalar(1/f.w),p.multiplyScalar(1/p.w);var S=f.z<-1&&p.z<-1,C=f.z>1&&p.z>1;if(S||C)continue;f.x*=s.x/2,f.y*=s.y/2,p.x*=s.x/2,p.y*=s.y/2,_.start.copy(f),_.start.z=0,_.end.copy(p),_.end.z=0;let e=_.closestPointToPointParameter(h,!0);_.at(e,v);let r=c.MathUtils.lerp(f.z,p.z,e),a=r>=-1&&r<=1;var w=h.distanceTo(v)<l*.5;if(a&&w){_.start.fromBufferAttribute(u,b),_.end.fromBufferAttribute(d,b),_.start.applyMatrix4(y),_.end.applyMatrix4(y);var T=new c.Vector3,E=new c.Vector3;n.distanceSqToSegment(_.start,_.end,E,T),t.push({point:E,pointOnLine:T,distance:n.origin.distanceTo(E),object:this,faceIndex:b})}}}};Object.assign(uv.prototype,{isLineSegments2:!0});var dv=class extends uv{constructor(e,t){super(e,t),this.type=`Line2`}};Object.assign(dv.prototype,{isLine2:!0});var fv=class extends sv{constructor(){super(),this.type=`LineGeometry`}setPositions(e){let t=e.length-3,n=new Float32Array(2*t);for(let r=0;r<t;r+=3)n[2*r]=e[r],n[2*r+1]=e[r+1],n[2*r+2]=e[r+2],n[2*r+3]=e[r+3],n[2*r+4]=e[r+4],n[2*r+5]=e[r+5];return super.setPositions(n),this}setColors(e){let t=e.length-3,n=new Float32Array(2*t);for(let r=0;r<t;r+=3)n[2*r]=e[r],n[2*r+1]=e[r+1],n[2*r+2]=e[r+2],n[2*r+3]=e[r+3],n[2*r+4]=e[r+4],n[2*r+5]=e[r+5];return super.setColors(n),this}fromLine(e){let t=e.geometry;if(t instanceof c.Geometry){let e=new c.BufferGeometry().fromGeometry(t);this.setPositions(e.attributes.position.array)}else t instanceof c.BufferGeometry&&this.setPositions(t.attributes.position.array);return this}copy(){return this}};Object.assign(fv.prototype,{isLineGeometry:!0});var pv=14467195,mv=8,hv=2,gv=20,_v=null,vv=class extends c.Object3D{static get version(){return`6.8.0-alpha.20`}constructor(e=new c.Vector3,t=new c.Vector3){super(),this.type=`FiveLine`,this.needsRender=!0,this.line=new dv(new fv,new lv({color:pv,linewidth:hv,dashScale:gv,dashed:!1}));let n=new c.BufferGeometry,r=new c.PointsMaterial({color:pv,size:mv,map:_v||(_v=new c.TextureLoader().load(`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sHDgwCEMBJZu0AAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd2l0aCBHSU1QZC5lBwAABM5JREFUWMO1V0tPG2cUPZ4Hxh6DazIOrjFNqJs0FIMqWFgWQkatsmvVbtggKlSVRVf5AWz4AWz4AUSKEChll19QJYSXkECuhFxsHjEhxCYm+DWGMZ5HF72DJq4bAzFXurI0M/I5997v3u9cC65vTJVn2lX/xHINQOYSBLTLEuIuCWw4Z3IGAEvf6ASmVHjNzHCXBG4A0AjACsAOwEbO0nsFQBnAGYASAIl+ZRMR7SolMEdsByD09fV5R0ZGgg8ePPjW5/N1iqLYpuu6RZblciKR2I9Go69evnwZnZ+fjwI4IS8AKBIRzeQfJWCANwKwh0KhtrGxsYehUOin1tbW+zzP23ietzY2NnIAoGmaLsuyUiqVyvl8XtrY2NiamZn589mzZxsAUgCOAeQAnFI2tI+VxIjaAeDzoaGh7xYWFuZOTk6OZVk+12uYqqq6JEnn0Wg0OT4+/geAXwGEAdwDIFJQXC1wO4DWR48e/RCPxxclSSroVzRFUbSDg4P848ePFwH8DuAhkWih83TRQWxFOXgAwvDwcOfo6OhvXV1d39tsNtuVBwTDWBwOh1UUxVsMw1hXVlbSdCgNV43uYSvrHg6H24aHh38eHBz85TrgF9FYLHA4HLzH43FvbW2d7u/vG+dANp8FpqIlbd3d3V8Fg8EfBUFw4BONZVmL3+9vHhkZCQL4AoAHgJPK8G+yzC0XDofdoVAo5PP5vkadTBAEtr+/39ff3x8gAp/RPOEqx2qjx+NpvXv3bk9DQ0NDvQgwDIOWlhZrMBj8kgi0UJdxRgYMArzL5XJ7vd57qLPZ7Xamp6fnNgBXtQxcjFuHw+Hyer3t9SYgCAITCAScAJoBNNEY/08GOFVVrfVMv7kMNDntFD1vjIAPrlRN0xjckOm6biFQ3jwNPwDMZrOnqVTqfb3Bi8Wivru7W/VCYkwPlKOjo0IikXh7EwQikYgE4Nw0CfXKDCipVCoTj8df3QABbW1tLUc6oUgkFPMkVACUNjc337148eKvw8PDbJ2jP1taWkoCyNDVXDSECmNSK4qiKNLq6urW8+fPI/UicHx8rD59+jSVy+WOAKSJhKENwFItLtoxk8mwsixzHR0dHe3t7c5PAU+n09rs7OzJkydPYqVSaQfANoDXALIk31S2smU1TWMPDg7K5XKZ7+3t9TudTut1U7+wsFCcmJiIpdPpbQBxADsAknQWymYCOukBHYCuKApisdhpMpnURFEU79y503TVyKenpzOTk5M7e3t7MQKPV0Zv1gNm+awB0MvlshqLxfLb29uyJElWURSbXC4XXyvqxcXFs6mpqeTc3Nzu3t7e3wQcA7BPZ8Cov1pNlJplmQtAG8MwHV6v95tAINA5MDBwPxAIuLu6upr8fr/VAN3c3JQjkcjZ+vp6fnl5+d2bN29SuVzuNYAEpf01CdRChUL+X1VskHACuA3Ay3Fcu9vt7nA6nZ7m5uYWQRCaNE3jVVW15PP580KhIGUymWw2m00DOAJwSP4WwPtq4LX2Ao6USxNlQyS/RcQcdLGwlNIz6vEMAaZpNzCk2Pll94LK/cDYimxERiBwG10sxjgvEZBE0UpE6vxj+0Ct5bTaXthgEhRmja8QWNkkPGsuIpfdjpkK+cZUWTC0KredVmtD/gdlSl6EG4AMvQAAAABJRU5ErkJggg==`)),sizeAttenuation:!1,transparent:!0});this.points=new c.Points(n,r),this.points.renderOrder=11,this.points.frustumCulled=!1,this.setPoints(e,t),this.add(this.line,this.points)}setPoints(e,t){let n=[].concat(e.toArray(),t.toArray());this.points.geometry.setAttribute(`position`,new c.BufferAttribute(new Float32Array(n),3)),this.line.geometry.setPositions(n),this.line.computeLineDistances(),this.needsRender=!0}getPoints(){let e=this.points.geometry.attributes.position.array;return[new c.Vector3(e[0],e[1],e[2]),new c.Vector3(e[3],e[4],e[5])]}setMaterial(e){let t=this.line.material;for(let n in e){if(!e.hasOwnProperty(n))continue;let r=e[n];n===`dashed`?(t.dashed=r,r?t.defines.USE_DASH=``:delete t.defines.USE_DASH,t.needsUpdate=!0):t[n]=e[n]}this.needsRender=!0}setResolution(e,t){let n=this.line.material.resolution;(n.x!==e||n.y!==t)&&(n.set(e,t),this.needsRender=!0)}};Object.assign(vv.prototype,{isFiveLine:!0});var yv={Handedness:Object.freeze({NONE:`none`,LEFT:`left`,RIGHT:`right`}),ComponentState:Object.freeze({DEFAULT:`default`,TOUCHED:`touched`,PRESSED:`pressed`}),ComponentProperty:Object.freeze({BUTTON:`button`,X_AXIS:`xAxis`,Y_AXIS:`yAxis`,STATE:`state`}),ComponentType:Object.freeze({TRIGGER:`trigger`,SQUEEZE:`squeeze`,TOUCHPAD:`touchpad`,THUMBSTICK:`thumbstick`,BUTTON:`button`}),ButtonTouchThreshold:.05,AxisTouchThreshold:.1,VisualResponseProperty:Object.freeze({TRANSFORM:`transform`,VISIBILITY:`visibility`})};function bv(e){return Vo(this,void 0,void 0,function*(){let t=yield fetch(e);if(t.ok)return t.json();throw Error(t.statusText)})}function xv(e){return Vo(this,void 0,void 0,function*(){if(!e)throw Error(`No basePath supplied`);return yield bv(`${e}/profilesList.json`)})}function Sv(e,t){return Vo(this,arguments,void 0,function*(e,t,n=null,r=!0){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No basePath supplied`);let i=yield xv(t),a;if(e.profiles.some(e=>{let n=i[e];return n&&(a={profileId:e,profilePath:`${t}/${n.path}`,deprecated:!!n.deprecated}),!!a}),!a){if(!n)throw Error(`No matching profile name found`);let e=i[n];if(!e)throw Error(`No matching profile name found and default profile "${n}" missing.`);a={profileId:n,profilePath:`${t}/${e.path}`,deprecated:!!e.deprecated}}let o=yield bv(a.profilePath),s;if(r){let t;if(t=o.layouts[e.handedness],!t)throw Error(`No matching handedness, ${e.handedness}, in profile ${a.profileId}`);t.assetPath&&(s=a.profilePath.replace(`profile.json`,t.assetPath))}return{profile:o,assetPath:s}})}var Cv={xAxis:0,yAxis:0,button:0,state:yv.ComponentState.DEFAULT};function wv(e=0,t=0){let n=e,r=t;if(Math.sqrt(e*e+t*t)>1){let i=Math.atan2(t,e);n=Math.cos(i),r=Math.sin(i)}return{normalizedXAxis:n*.5+.5,normalizedYAxis:r*.5+.5}}var Tv=class{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===yv.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(Cv)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:r}){let{normalizedXAxis:i,normalizedYAxis:a}=wv(e,t);switch(this.componentProperty){case yv.ComponentProperty.X_AXIS:this.value=this.states.includes(r)?i:.5;break;case yv.ComponentProperty.Y_AXIS:this.value=this.states.includes(r)?a:.5;break;case yv.ComponentProperty.BUTTON:this.value=this.states.includes(r)?n:0;break;case yv.ComponentProperty.STATE:this.valueNodeProperty===yv.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(r):this.value=this.states.includes(r)?1:0;break;default:throw Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}},Ev=class{constructor(e,t){if(!e||!t||!t.visualResponses||!t.gamepadIndices||Object.keys(t.gamepadIndices).length===0)throw Error(`Invalid arguments supplied`);this.id=e,this.type=t.type,this.rootNodeName=t.rootNodeName,this.touchPointNodeName=t.touchPointNodeName,this.visualResponses={},Object.keys(t.visualResponses).forEach(e=>{let n=new Tv(t.visualResponses[e]);this.visualResponses[e]=n}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:yv.ComponentState.DEFAULT,button:this.gamepadIndices.button===void 0?void 0:0,xAxis:this.gamepadIndices.xAxis===void 0?void 0:0,yAxis:this.gamepadIndices.yAxis===void 0?void 0:0}}get data(){return Object.assign({id:this.id},this.values)}updateFromGamepad(e){if(this.values.state=yv.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&e.buttons.length>this.gamepadIndices.button){let t=e.buttons[this.gamepadIndices.button];this.values.button=t.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,t.pressed||this.values.button===1?this.values.state=yv.ComponentState.PRESSED:(t.touched||this.values.button>yv.ButtonTouchThreshold)&&(this.values.state=yv.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&e.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=e.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===yv.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>yv.AxisTouchThreshold&&(this.values.state=yv.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&e.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=e.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===yv.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>yv.AxisTouchThreshold&&(this.values.state=yv.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(e=>{e.updateFromComponent(this.values)})}},Dv=class{constructor(e,t,n){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No profile supplied`);this.xrInputSource=e,this.assetUrl=n,this.id=t.profileId,this.layoutDescription=t.layouts[e.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(e=>{let t=this.layoutDescription.components[e];this.components[e]=new Ev(e,t)}),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){let e=[];return Object.values(this.components).forEach(t=>{e.push(t.data)}),e}updateFromGamepad(){Object.values(this.components).forEach(e=>{e.updateFromGamepad(this.xrInputSource.gamepad)})}},Ov=`https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles`,kv=`generic-trigger`,Av=class extends c.Object3D{constructor(){super(),this.motionController=null,this.envMap=null}setEnvironmentMap(e){return this.envMap==e?this:(this.envMap=e,this.traverse(e=>{e instanceof c.Mesh&&e.isMesh&&(e.material.envMap=this.envMap,e.material.needsUpdate=!0)}),this)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.motionController&&(this.motionController.updateFromGamepad(),Object.values(this.motionController.components).forEach(e=>{Object.values(e.visualResponses).forEach(e=>{let{valueNode:t,minNode:n,maxNode:r,value:i,valueNodeProperty:a}=e;t&&(a===yv.VisualResponseProperty.VISIBILITY?t.visible=i:a===yv.VisualResponseProperty.TRANSFORM&&(t.quaternion.copy(n.quaternion).slerp(r.quaternion,i),t.position.lerpVectors(n.position,r.position,i)))})}))}};function jv(e,t){Object.values(e.components).forEach(e=>{let{type:n,touchPointNodeName:r,visualResponses:i}=e;if(n===yv.ComponentType.TOUCHPAD)if(e.touchPointNode=t.getObjectByName(r),e.touchPointNode){let t=new c.Mesh(new c.SphereGeometry(.001),new c.MeshBasicMaterial({color:255}));e.touchPointNode.add(t)}else console.warn(`Could not find touch dot, ${e.touchPointNodeName}, in touchpad component ${e.id}`);Object.values(i).forEach(e=>{let{valueNodeName:n,minNodeName:r,maxNodeName:i,valueNodeProperty:a}=e;if(a===yv.VisualResponseProperty.TRANSFORM){if(e.minNode=t.getObjectByName(r),e.maxNode=t.getObjectByName(i),!e.minNode){console.warn(`Could not find ${r} in the model`);return}if(!e.maxNode){console.warn(`Could not find ${i} in the model`);return}}e.valueNode=t.getObjectByName(n),e.valueNode||console.warn(`Could not find ${n} in the model`)})})}function Mv(e,t){jv(e.motionController,t),e.envMap&&t.traverse(t=>{t instanceof c.Mesh&&t.isMesh&&(t.material.envMap=e.envMap,t.material.needsUpdate=!0)}),e.add(t)}var Nv=class{constructor(e=null){this.gltfLoader=e,this.path=Ov,this._assetCache={}}createControllerModel(e){let t=new Av,n=null;return e.addEventListener(`connected`,e=>{let r=e.data;r.targetRayMode!==`tracked-pointer`||!r.gamepad||Sv(r,this.path,kv).then(({profile:e,assetPath:i})=>{t.motionController=new Dv(r,e,i);let a=this._assetCache[t.motionController.assetUrl];if(a)n=a.scene.clone(),Mv(t,n);else{if(!this.gltfLoader)throw Error(`GLTFLoader not set.`);this.gltfLoader.load(t.motionController.assetUrl,e=>{this._assetCache[t.motionController.assetUrl]=e,n=e.scene.clone(),Mv(t,n)})}}).catch(e=>{console.warn(e)})}),e.addEventListener(`disconnected`,()=>{t.motionController=null,t.remove(n),n=null}),t}},Pv=Object.assign({},hr(Xg,[`maxLatitude`,`minLatitude`]));function Fv(e,t){if(!t)return e;let n=e.match(/\d+_[a-z].png/);return e.substring(0,n.index)+t+`/`+e.substring(n.index)}var Iv=300,Lv=new c.Raycaster,Rv=new c.Vector3,zv={Floorplan:Xh,Topview:Qh,Panorama:Zg,VRPanorama:H_,Model:q_,Mapview:$_,XRPanorama:class e extends Zg{static parseArgs(t){if(t instanceof e)return t;let n=Object.assign(Object.assign({},t),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2});return super.parseArgs(n)}static initAnimationEndState(e){let t=this.parseArgs(e),n=super.initAnimationEndState(t);return Object.assign(Object.assign({},n),{mode:`XRPanorama`})}constructor(e){super(e),this.xrManager=new ov(this.renderer,this.renderer.getContext(),{onSessionStart:e=>{this.emit(`xr.session.start`,$(`xr.session.start`,{session:e,machineType:this.xrManager.machineType}))},onSessionEnd:()=>{this.emit(`xr.session.end`,$(`xr.session.end`,{session:null,machineType:this.xrManager.machineType}))}}),this.xrControllerRay={left:new c.Raycaster,right:new c.Raycaster},this.xrControllerRay.left.params.Points={threshold:.1},this.xrControllerRay.left.firstHitOnly=!0,this.xrControllerRay.left.floorIndex=-1,this.xrControllerRay.right.params.Points={threshold:.1},this.xrControllerRay.right.firstHitOnly=!0,this.xrControllerRay.right.floorIndex=-1,this.gazeRay=null,this.pointerLines={left:new vv,right:new vv},this.pointerLines.left.visible=!1,this.pointerLines.right.visible=!0,this.pointerLines.left.setMaterial({color:new c.Vector3(1,1,1)}),this.pointerLines.left.points.material.depthTest=!1,this.pointerLines.right.setMaterial({color:new c.Vector3(1,1,1)}),this.pointerLines.right.points.material.depthTest=!1,this.controllerWrappers=[new c.Group,new c.Group];let t=this.xrManager.getController(0);this.controllerWrappers[0].add(t);let n=this.xrManager.getController(1);this.controllerWrappers[1].add(n);let r=new Nv;r.gltfLoader={load(e,t){pr.ajax(e,{responseType:`arraybuffer`}).then(t=>{var n;return ns(t.body,{resourcePath:e.slice(0,e.lastIndexOf(`/`)+1),search:(n=e.split(`?`)[1])==null?``:n,fetcher:pr})}).then(e=>t(e))}},(this.xrManager.machineType===`Oculus`||this.xrManager.machineType===`Pico`)&&this.scene.add(this.pointerLines.left,this.pointerLines.right,this.controllerWrappers[0],this.controllerWrappers[1]),this.panoResources={},this.panoResources[this.locationMotion.keyframes[0].key=this.locationMotion.keyframes[1].key=nn()]={panoId:Q(this.currentPano),leftPanoPicture:null,position:this.camera.pose.offset.clone(),effect:`fade`,effectEasing:Kg,fixCameraTransform:new c.Matrix4},this.parallaxCameraMatrixs=[];let i=ri.shared.getContext();if(!i){console.error(`获取session失败,请退出重试`);return}this.on(`xr.session.end`,()=>{this.scene.remove(this.pointerLines.left,this.pointerLines.right)}),this.xrManager.setSession(i),this.on(`xr.session.start`,()=>{let e=this.xrManager.getControllerGrip(0);e.add(r.createControllerModel(e)),this.controllerWrappers[0].add(e);let t=this.xrManager.getControllerGrip(1);t.add(r.createControllerModel(t)),this.controllerWrappers[1].add(t)}),this.xrHandleState={LeftAxesUp:{touchStartTime:0,touchStart:!1},LeftAxesDown:{touchStartTime:0,touchStart:!1},LeftAxesLeft:{touchStartTime:0,touchStart:!1},LeftAxesRight:{touchStartTime:0,touchStart:!1},LeftTrigger:{touchStartTime:0,touchStart:!1},LeftPinch:{touchStartTime:0,touchStart:!1},RightAxesUp:{touchStartTime:0,touchStart:!1},RightAxesDown:{touchStartTime:0,touchStart:!1},RightAxesLeft:{touchStartTime:0,touchStart:!1},RightAxesRight:{touchStartTime:0,touchStart:!1},RightTrigger:{touchStartTime:0,touchStart:!1},RightPinch:{touchStartTime:0,touchStart:!1},Y:{touchStartTime:0,touchStart:!1},X:{touchStartTime:0,touchStart:!1},A:{touchStartTime:0,touchStart:!1},B:{touchStartTime:0,touchStart:!1}},this.xrManager.machineType===`VP`&&this.initHandEvent()}updateConfiguration(e){return super.updateConfiguration(Object.assign(Object.assign({},e),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2}))}moveToPano(e,t,n){var r,i,a;let o=(r=t.effect)==null?`fade`:r;this.userAction=n,this.stopMomentumMovement();let s=Q(e),l=this.works.getObserver(e);if(!l)throw Error(`Invalid PanoIndex`);let u=Yr(l.images.up),d=this.imageOptions.size;d===void 0&&l&&u&&(d=Number(u)),d===void 0&&(d=2048);let f=this.imageOptions.transform,p=(e,t)=>Fv(qr(e,f,t)),m=Object.assign({key:`pano.${s}`},mr(this.imageOptions,[`format`,`size`,`quality`])),h={right:l.images.work.getURL(l.images.right),left:l.images.work.getURL(l.images.left),up:l.images.work.getURL(l.images.up),down:l.images.work.getURL(l.images.down),front:l.images.work.getURL(l.images.front),back:l.images.work.getURL(l.images.back)},g=`pano:`+pp([h,m,f]);if(this.pendingTextureTask){if(this.pendingTextureTask.hash===g)return;{let t=this.pendingTextureTask.panoId;(i=this.panoMeshes.get(t))==null||i.setProgress(0),this.emit(`pano.texture.abort`,$(`pano.texture.abort`,{error:null,progress:0,meta:null,pano:e}))}}let{pano0:_,pano1:v}=this.modelScene.parameter.resolveValue(),y;if((_==null?void 0:_.map.name)===g?y=_:(v==null?void 0:v.map.name)===g&&(y=v),y){let n={panoId:s,effect:o,effectEasing:(a=t.effectEasing)==null?Kg:a,leftPanoPicture:{panoId:y.panoId,map:y.map,mapHistogram:y.mapHistogram,mapSize:y.mapSize,matrix:l.matrix.clone().premultiply(l.work.transform),zoom:1},position:l.position.clone().applyMatrix4(l.work.transform),fixCameraTransform:new c.Matrix4};this.doMoveToPano(e,n,t);return}let b=`move-to-pano-`+s;this.pending.add(b),this.pendingTextureTask={panoId:s,hash:g,onLoad:n=>{var r,i;let a=n.body;if(this.destroyed)a.dispose();else{a.name=g;let n=Array.isArray(a.image)?a.image[0]:a.image,u=(r=n==null?void 0:n.width)==null?2048:r,d=new _m().formPixels(Vh(this.renderer,a,!0,pm).data),f={panoId:s,effect:o,effectEasing:(i=t.effectEasing)==null?Kg:i,leftPanoPicture:{panoId:s,map:a,mapSize:u,mapHistogram:new c.Vector4().fromArray(d.toArray()),matrix:l.matrix.clone(),zoom:1},position:l.position.clone(),fixCameraTransform:new c.Matrix4};this.doMoveToPano(e,f,t)}},onError:n=>{let r=Object.assign(Object.assign(Object.assign({},e),{mode:this.mode}),jh(this.camera.pose));this.emit(`pano.error`,$(`pano.error`,{error:n,userAction:this.userAction,options:t,prevPano:this.currentPano,progress:0,state:r})),this.emit(`pano.cancel`,$(`pano.cancel`,{error:null,userAction:this.userAction,options:t,prevPano:this.currentPano,progress:0,state:r})),t.moveCancelCallback&&t.moveCancelCallback()}};let x=this.panoMeshes.get(s);x&&x.tap&&x.tap(),this.textureLoader.loadCubeTexture(h,{imageURL:{transform:p,options:m},format:c.RGBFormat,fetcher:_f(this.fiveId,l.work)},void 0,void 0,t=>{var n,r;((n=this.pendingTextureTask)==null?void 0:n.hash)===g&&((r=this.panoMeshes.get(s))==null||r.setProgress(t)),this.emit(`pano.texture.progress`,$(`pano.texture.progress`,{error:null,progress:t,meta:null,pano:e}))},this.renderer).then(t=>{var n,r;this.pending.delete(b),((n=this.pendingTextureTask)==null?void 0:n.hash)===g?(this.pendingTextureTask.onLoad(t),this.pendingTextureTask=void 0,(r=this.panoMeshes.get(s))==null||r.setProgress(0)):t.body.dispose(),this.emit(`pano.texture.success`,$(`pano.texture.success`,{error:null,progress:1,meta:t.meta,pano:e}))}).then(()=>new Promise(e=>{ri.shared.add(()=>e(),!0)})).catch(t=>{var n,r;this.pending.delete(b),((n=this.pendingTextureTask)==null?void 0:n.hash)===g&&(this.pendingTextureTask.onError(t),this.pendingTextureTask=void 0,(r=this.panoMeshes.get(s))==null||r.setProgress(0)),this.emit(`pano.texture.error`,$(`pano.texture.error`,{error:t,progress:0,meta:null,pano:e})),this.emit(`error`,t)}),this.emit(`pano.texture.load`,$(`pano.texture.load`,{error:null,progress:0,meta:null,pano:e}))}doMoveToPano(e,t,n={}){var r,i,a,o,s,l,u,d,f,p;let m=U(),h=nn();this.panoResources[h]=t;let g,_,v;if(this.locationMotion.ended){let[e,n]=this.locationMotion.getKeyFrameSegment(m),r=this.locationMotion.value,i=this.panoResourceFromLocationMotionKeyframe(n).position,a=t.position;g=Math.max(i.distanceTo(a),1),_=[{key:n.key,progress:0,value:Object.assign(Object.assign({},r),{count:0})},{key:h,progress:1,value:{distance:0,count:1}}],v=0}else{let[e,n]=this.locationMotion.getKeyFrameSegment(m),r=this.locationMotion.value,i=this.panoResourceFromLocationMotionKeyframe(e).position,a=this.panoResourceFromLocationMotionKeyframe(n).position,o=t.position,s=n.value.count-r.count,c=Math.max(i.distanceTo(a),1)*s;g=c+Math.max(a.distanceTo(o),1),_=[{key:e.key,progress:0,value:Object.assign({},r)},{key:n.key,progress:c/g,value:n.value},{key:h,progress:1,value:{count:n.value.count+1,distance:0}}];let l=this.locationMotionKeyframesLength(this.locationMotion.keyframes),u=this.locationMotionKeyframesLength(_);v=this.locationMotion.getProgressVelocity(m)*l/u}let y=t.effect===`instant`?0:this.calculateMovingDuration(n.duration,t.effect===`fly`||t.effect===`model`?g:0),b={longitude:n.longitude,latitude:n.latitude,fov:n.fov},x=Object.assign(Object.assign({},e),{mode:this.mode,longitude:(r=b.longitude)==null?this.camera.pose.longitude:r,latitude:(i=b.latitude)==null?this.camera.pose.latitude:i,fov:(a=b.fov)==null?this.camera.pose.fov:a,offset:t.position.clone(),distance:0}),S=this.currentPano;if(this.emit(`pano.moveTo`,$(`pano.moveTo`,{options:n,prevPano:S,progress:0,state:x,userAction:this.userAction,error:null})),n.moveStartCallback&&n.moveStartCallback(x),this.videoTexture&&this.videoTexture.image instanceof HTMLVideoElement&&this.videoTexture.image.getAttribute(`src`)&&(this.videoTexture.image.pause(),this.videoTexture.image.removeAttribute(`uuid`),this.videoTexture.image.removeAttribute(`src`),this.videoTexture.image.oncanplay=q,this.videoTexture.needsUpdate=!0),this.panoVideo.setMaterial(null),t.effect===`fly`||t.effect===`model`)this.cameraMotion.set(b,y).catch(q);else{let e=Vt({longitude:this.cameraMotion.value.longitude,latitude:this.cameraMotion.value.latitude}),n=Vt({longitude:(o=b.longitude)==null?this.cameraMotion.value.longitude:o,latitude:(s=b.latitude)==null?this.cameraMotion.value.latitude:s}),r=new c.Object3D;r.lookAt(e);let i=new c.Matrix4().makeRotationFromQuaternion(r.quaternion);r.lookAt(n);let a=new c.Matrix4().makeRotationFromQuaternion(r.quaternion),m=new c.Matrix4().getInverse(i).premultiply(a),h=this.cameraMotion.value.fov,g=(l=b.fov)==null?this.cameraMotion.value.fov:l,v=1;t.effect===`zoomin`?v=1.5:t.effect===`zoomout`&&(v=.4);let x=g*v;for(let e=0;e<_.length-1;e++){let t=_[e].key;if(t){let e=this.panoResources[t];e&&(e.fixCameraTransform.copy(m),e.leftPanoPicture&&(e.leftPanoPicture.zoom=Math.tan(x/2/180*Math.PI)/Math.tan(h/2/180*Math.PI)))}}this.cameraMotion.setKeyframes([{progress:0,value:{longitude:this.cameraMotion.value.longitude,latitude:this.cameraMotion.value.latitude,fov:this.cameraMotion.value.fov}},{progress:0,value:{longitude:(u=b.longitude)==null?this.cameraMotion.value.longitude:u,latitude:(d=b.latitude)==null?this.cameraMotion.value.latitude:d,fov:x}},{progress:1,value:{longitude:(f=b.longitude)==null?this.cameraMotion.value.longitude:f,latitude:(p=b.latitude)==null?this.cameraMotion.value.latitude:p,fov:g}}],y).catch(q)}this.locationMotion.setKeyframes(_,y,v).then(()=>{for(let e of this.modelScene.children)e instanceof If&&e.show();let t=Object.assign(Object.assign({},e),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:0});this.emit(`pano.arrived`,$(`pano.arrived`,{options:n,prevPano:S,progress:1,state:t,userAction:this.userAction,error:null})),n.moveEndCallback&&n.moveEndCallback(t);let r=this.works.getObserver(this.currentPano);if(r&&r.images.video&&this.videoTexture&&this.videoTexture.image instanceof HTMLVideoElement){let e={map:this.videoTexture,size:r.images.video.size.clone(),matrix:r.images.video.matrix.clone(),panoMatrix:r.matrix.clone().premultiply(r.work.transform),alpha:1},t=nn(),n=this.videoTexture.image;n.setAttribute(`uuid`,t),rg().then(i=>{i&&r.images.video&&n.getAttribute(`uuid`)===t&&(n.oncanplay=()=>{n.oncanplay=q,n.play()},n.ontimeupdate=()=>{n.currentTime>.5&&(n.ontimeupdate=q,this.panoVideo.setMaterial(e))},n.src=r.images.video.source)}).catch((()=>{n.removeAttribute(`uuid`)}))}},()=>{this.emit(`pano.cancel`,$(`pano.cancel`,{options:n,prevPano:S,progress:0,state:x,userAction:this.userAction,error:null})),n.moveCancelCallback&&n.moveCancelCallback()})}checkSelectedPano(e){var t;this.stopMomentumMovement(),this.camera.getDirection(new c.Vector3).setY(0);let n=null,r=this.works.getObserver(this.currentPano);if(!r)return null;let i=r.work.observers,a=r.accessibleNodes.filter(e=>{if(e===this.currentPano.panoIndex&&r.work.workCode===this.currentPano.workCode)return!1;let t=i[e];return!t||Rv.copy(t.position).applyMatrix4(t.work.transform).distanceTo(this.camera.position)>this.maxAccessibleDistance?!1:t.loadable||t.active}),[o]=this.modelScene.intersectRaycaster(e);if(o){let[e,r]=Nl(a,e=>{let t=i[e];return t?Rv.copy(t.standingPosition).applyMatrix4(t.work.transform).distanceTo(o.point):1/0},!0);typeof e==`number`&&r<this.panoTapTriggerRadius&&(n=(t=i[e])==null?null:t)}if(ev(n)){let t=this.getForwardObserverOrNot(this.xrManager.cameraVR,e);t&&(n=t)}for(let e of this.locationMotion.keyframes){let t=this.panoResourceFromLocationMotionKeyframe(e);if(!(e.progress<this.locationMotion.progress)&&n){let e=Q({panoIndex:n.panoIndex,workCode:n.work.workCode});if(t.panoId===e){n=null;break}}}if(ev(n))return this.locationMotion.ended===!0&&this.cameraBounce(),null;if(!n.active){let e=Q({panoIndex:n.panoIndex,workCode:n.work.workCode}),t=this.panoMeshes.get(e);t&&(t.setDisabled(!1),t.setLoading(!0))}let s={workCode:n.work.workCode,panoIndex:n.panoIndex,mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,distance:0,offset:n?n.position.clone():new c.Vector3};return this.emit(`pano.select`,$(`pano.select`,{prevPano:this.currentPano,state:s,userAction:!0,options:{},progress:0,error:null})),n&&n.active?(this.emit(`pano.request`,$(`pano.request`,{userAction:!0,prevPano:this.currentPano,progress:0,state:s,options:{},error:null})),{workCode:n.work.workCode,panoIndex:n.panoIndex}):null}destroy(){super.destroy()}isReady(){return!1}updateCamera(e,t,n){return Promise.resolve()}updateCameraWithKeyframes(e,t,n){return Promise.resolve()}updateTime(e,t,...n){var r,i,a,o,s,l,u,d,f;this.userAction=!0;let p={},m={},h=this.camera.getDirection(new c.Vector3),g=this.locationMotion.keyframes[0],_=this.locationMotion.keyframes[this.locationMotion.keyframes.length-1],[v,y]=this.locationMotion.getKeyFrameSegment(e),b=this.panoResourceFromLocationMotionKeyframe(v),x=this.panoResourceFromLocationMotionKeyframe(y),S=this.panoResourceFromLocationMotionKeyframe(g),C=this.panoResourceFromLocationMotionKeyframe(_),w=!1;if(this.cameraMotion.ended===!1&&(this.cameraMotion.update(e),m.fov=this.cameraMotion.value.fov),this.modelAlphaMotion.ended===!1&&(this.modelAlphaMotion.update(e),p.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.perspToOrthoMotion.ended===!1&&(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(W(this.perspToOrthoMotion.value.perspToOrtho,0,1))),this.locationMotion.ended===!1){this.locationMotion.update(e);let t=this.locationMotion.value.count-y.value.count+1,n=new c.Vector3().copy(b.position),a=new c.Vector3().copy(x.position);if(p.progress=t,t>=.01&&t<=.99&&(p.progress=W(x.effectEasing(t),.01,.99)),x.leftPanoPicture&&(t<1?b.leftPanoPicture&&(p.pano0=b.leftPanoPicture):p.pano0=x.leftPanoPicture,p.pano1=x.leftPanoPicture),x.effect===`montage`?p.transition=`BLACK`:x.effect===`spread`?p.transition=`SPREAD`:p.transition=`FADE`,x.effect===`zoomin`||x.effect===`zoomout`?p.progress=Math.pow(t,3):x.effect===`model`&&this.camera.pose.distance<.01&&(p.modelAlpha=1-Math.pow(W(Math.abs(t-.5)*2,0,1),4)),t<1&&x.effect!==`fly`){if(p.pano0&&b.leftPanoPicture){let e={panoId:p.pano0.panoId,map:p.pano0.map,mapHistogram:p.pano0.mapHistogram,mapSize:p.pano0.mapSize,zoom:p.pano0.zoom,matrix:b.leftPanoPicture.matrix.clone().setPosition(x.position)},t=this.panoPictureObserverMap.get(p.pano0);t&&this.panoPictureObserverMap.set(e,t),p.pano0=e}n.copy(a),w=!0}m.distance=this.locationMotion.value.distance,m.offset=new c.Vector3(n.x+(a.x-n.x)*t,n.y+(a.y-n.y)*t,n.z+(a.z-n.z)*t);let o=[],s=[];for(let e of this.locationMotion.keyframes){let{key:t,progress:n}=e;t!==void 0&&(o.push(t),n>this.locationMotion.progress&&s.push(t))}for(let e of Object.keys(this.panoResources)){if(s.indexOf(e)>=0)continue;let t=this.panoResources[e];if(t.leftPanoPicture){let e=t.leftPanoPicture.map;if(e){if(e===((r=p.pano0)==null?void 0:r.map)||e===((i=p.pano1)==null?void 0:i.map))continue;e.dispose(),t.leftPanoPicture=null}}o.indexOf(e)>=0||delete this.panoResources[e]}let l=hp(x.panoId);l!==this.currentPano&&(this.currentPano=l,this.accessibleObserverFloorCheckCount=0),this.emit(`pano.moving`,$(`pano.moving`,{userAction:this.userAction,prevPano:hp(S.panoId),state:Object.assign(Object.assign(Object.assign(Object.assign({},hp(C.panoId)),{mode:this.mode}),jh(this.camera.pose)),m),options:{},progress:this.locationMotion.progress,error:null}))}this.camera.setFromPose(m),this.xrManager.cameraVR.projectionMatrix.copy(this.camera.projectionMatrix),this.xrManager.cameraVR.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),this.xrManager.cameraVR.matrix.copy(this.camera.matrix),this.xrManager.cameraVR.position.copy(this.camera.position),this.xrManager.cameraVR.quaternion.copy(this.camera.quaternion),this.xrManager.cameraVR.scale.copy(this.camera.scale),this.xrManager.cameraVR.matrixAutoUpdate=!1,this.xrManager.cameraVR.matrixWorld.copy(this.camera.matrixWorld);let[T,E]=n,D=new c.Vector3(0,0,0),O=new c.Vector2().copy(this.camera.resolution);if(E&&this.xrManager.session&&this.xrManager.referenceSpace&&this.xrManager.session.renderState.baseLayer){let n=this.xrManager.cameraVR,r=this.xrManager.referenceSpace,i=this.xrManager.session.renderState.baseLayer,l=E.getViewerPose(r),u=(a=l==null?void 0:l.views)==null?[]:a;for(let e=0;e<u.length;e++){let t=u[e],r=n.cameras[e],a=i.getViewport(t);a&&(r.projectionMatrix.fromArray(t.projectionMatrix),r.projectionMatrixInverse.getInverse(r.projectionMatrix),r.matrix.fromArray(t.transform.matrix),r.matrix.setPosition(this.camera.position),r.matrix.decompose(r.position,r.quaternion,r.scale),r.matrixWorld.copy(r.matrix),r.matrixWorldInverse.getInverse(r.matrixWorld),r.matrixAutoUpdate=!1,D.copy(r.position),r.viewport.set(a.x,a.y,a.width,a.height),O.set(a.width,a.height))}if(this.xrManager.setProjectionFromUnion(this.xrManager.cameraVR,this.xrManager.cameraL,this.xrManager.cameraR),this.camera.quaternion.copy(this.xrManager.cameraVR.quaternion),this.camera.scale.copy(this.xrManager.cameraVR.scale),this.camera.matrix.compose(this.camera.position,this.camera.quaternion,this.camera.scale),this.camera.computePose((o=m.distance)==null?this.camera.pose.distance:o),this.xrManager.session.inputSources){for(let e=0;e<this.xrManager.session.inputSources.length;e++)if(this.xrManager.session.inputSources[e]&&this.xrManager.session.inputSources[e].targetRayMode===`transient-pointer`){let t=E.getPose(this.xrManager.session.inputSources[e].targetRaySpace,r);if(t){let e=t.transform.orientation,n=new c.Quaternion(e.x,e.y,e.z,e.w),r=new c.Vector3(0,0,-1).applyQuaternion(n);this.gazeRay=new c.Raycaster(this.camera.position,r)}}}if(this.xrManager.machineType===`Oculus`||this.xrManager.machineType===`Pico`){let n=this.xrManager.session.inputSources;for(let e=0;e<n.length;e++){let t=this.xrManager.controllers[e],i=n[e];if(!i)continue;t&&t.update(i,E,r);let a=this.xrManager.getController(e),o=new c.Vector3(0,1.2,0),l=a.position.clone().add(D).sub(o);i.handedness===`left`?this.xrControllerRay.left.set(l,new c.Vector3(0,0,-1).applyEuler(a.rotation)):i.handedness===`right`&&this.xrControllerRay.right.set(l,new c.Vector3(0,0,-1).applyEuler(a.rotation)),this.controllerWrappers[e].position.copy(new c.Vector3(0,0,0).add(D).sub(o));let u=this.modelScene.intersectRaycaster(this.xrControllerRay.right);if(u.length===0){let e=this.works.getResolvedObserver(this.currentPano);u=this.xrControllerRay.right.intersectObject(this.modelScene.boundingMesh,!0).map(t=>{var n;let r=(n=e==null?void 0:e.floorIndex)==null?0:n;return Object.assign({floorIndex:r,floor:r},t)})}if(u.length>=1&&u[0].face)if(i.handedness===`right`){let e=this.xrControllerRay.right.intersectObject(this.xrCustomObjectsScene,!0),t=u[0].face.normal,n=t.clone(),r=u[0].point.clone();this.intersectMesh.position.copy(r);let i=r.clone().add(n);if(this.intersectMesh.lookAt(i),Math.abs(t.y)>.99){let e=this.camera.position.clone().sub(r);this.intersectMesh.rotation.z=-Math.atan2(e.z,e.x)}this.intersectMesh.visible=!0,this.needsRender=!0,e.length>0?(this.pointerLines.right.setPoints(l,e[0].point),this.pointerLines.right.points.visible=!0,this.intersectMesh.visible=!1):(this.pointerLines.right.points.visible=!1,this.pointerLines.right.setPoints(l,u[0].point));let a=u[0],o=$(`intersect.update`,{raycaster:(s=this.xrControllerRay.right)==null?null:s,intersection:a==null?null:a,object:this.intersectMesh});if(this.emit(`intersect.update`,o),o.defaultPrevented){this.hideIntersectMesh();return}}else this.pointerLines.left.setPoints(l,u[0].point)}this.updateControllerHelper(n,e,t)}}else E||console.error(`xrFrame丢失,请重试`),this.xrManager.session||console.error(`session丢失,请重试`),this.xrManager.session&&!this.xrManager.session.renderState.baseLayer&&console.error(`no layer found`);Ph(p)===!1&&this.modelScene.parameter.set(p),this.emit(`camera.update`,$(`camera.update`,{userAction:this.userAction,state:Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),jh(this.camera.pose))}));let k=this.works.getResolvedObserver(this.currentPano),A=this.locationMotion.ended?this.getForwardObserverOrNot(this.xrManager.cameraVR):null,j=this.works.getObserver(b.panoId),M=this.works.getObserver(x.panoId);if(this.adjustPanoCircleMeshPositionBasedOnModel&&this.helper.visible&&k){let e=[],t=k.work.observers;for(let n of k.accessibleNodes){let r=t[n];r&&e.push(r)}let n=new Map;if(e.sort((e,t)=>{let r=n.get(e);r===void 0&&(r=e.standingPosition.distanceTo(k.standingPosition),n.set(e,r));let i=n.get(e);return i===void 0&&(i=t.standingPosition.distanceTo(k.standingPosition),n.set(t,i)),r-i}),e.length){this.accessibleObserverFloorCheckCount%=e.length;let t=e[this.accessibleObserverFloorCheckCount],n=this.modelScene.models.find(e=>e.work===(t==null?void 0:t.work));if(t&&n&&n.visible){let e=.3,r=.005,i=t.standingPosition.clone().applyMatrix4(t.work.transform),a=Q({panoIndex:t.panoIndex,workCode:t.work.workCode}),o=Yg.map(t=>{Lv.ray.origin.copy(i),Lv.ray.origin.add(Rv.copy(t).setY(e)),Lv.ray.direction.set(0,-1,0),Lv.firstHitOnly=!0,Lv.floorIndex=-1;let[a]=n.intersectRaycaster(Lv);return a&&a.distance-r<=e?new c.Vector3().copy(i).setY(a.point.y+r):i});o.sort((e,t)=>t.y-e.y);let s=o[Math.floor(o.length/2)],[l]=o.filter(e=>e.distanceTo(s)<=.05);if(l){let e=new c.Vector4(i.x,i.y,i.z,l.y-i.y),t=this.adjustPanoCircleMeshPositionFix.get(a);t&&!e.equals(t)&&(this.needsRender=!0),this.adjustPanoCircleMeshPositionFix.set(a,e)}}this.accessibleObserverFloorCheckCount++}}let N=new Map;if(j)for(let e of j.accessibleNodes){let t=j.work.observers[e];if(t){let e=Q({panoIndex:t.panoIndex,workCode:t.work.workCode});N.set(e,t)}}if(M)for(let e of M.accessibleNodes){let t=M.work.observers[e];if(t){let e=Q({panoIndex:t.panoIndex,workCode:t.work.workCode});N.set(e,t)}}if(this.panoMeshes.forEach((e,t)=>{N.get(t)?N.delete(t):(this.helper.remove(e),e.dispose(),this.panoMeshes.delete(t))}),N.forEach((e,t)=>{let n=this.panoCircleMeshCreator(e,{aerialObserverMinHeight:this.aerialObserverMinHeight});this.panoMeshes.set(t,n),this.helper.add(n),N.delete(t)}),this.panoMeshes.forEach((e,t)=>{let n=this.works.getObserver(t);if(n){let r=n.position.distanceTo(n.standingPosition)>this.aerialObserverMinHeight;if(r)e.position.copy(n.position).applyMatrix4(n.work.transform),e.scale.setScalar(18);else{e.position.copy(n.standingPosition).applyMatrix4(n.work.transform);let t=this.adjustPanoCircleMeshPositionFix.get(n.panoId);t&&(Rv.set(t.x,t.y,t.z),Rv.equals(e.position)&&(e.position.y+=t.w)),e.scale.setScalar(1.2)}let i=this.camera.position.clone().setY(e.position.y),a=new c.Vector3().copy(e.position).sub(i).normalize();if(t===Q(this.currentPano)){let t=W((.5-i.distanceTo(e.position))/.5,0,1);a.multiplyScalar(1-t).add(h.clone().multiplyScalar(t))}if(a.length()>0){let t=r?-Math.PI/2:0,n=Math.atan2(a.x,a.z);e.quaternion.setFromEuler(new c.Euler(t,n,0,`YXZ`))}}else e.visible=!1}),this.camera.pose.distance>.1||w)this.panoMeshes.forEach(n=>{n.setOpacity(0),n.setCurrent(!1),n.updateTime&&n.updateTime(e,t),n.visible=!1});else if(k){let n=k.work.observers,[,r]=Nl(k.accessibleNodes,e=>{let t=n[e];return!t||!t.active?1/0:k.standingPosition.distanceTo(t.standingPosition)},!0);r=W(r,2.5,1/0);let i=k.accessibleNodes.concat(k.panoIndex).map(e=>Q({panoIndex:e,workCode:k.work.workCode}));this.panoMeshes.forEach((n,a)=>{let o=this.works.getObserver(a),s=!1,c=1;if(i.indexOf(a)===-1)s=!1,c=0;else if(!o)s=!1,c=0;else if(!o.loadable&&!o.active)s=!1,c=0;else{let e=n.position.clone().project(this.camera);s=Math.abs(e.x)<1&&Math.abs(e.y)<1&&Math.abs(e.z)<1&&!n.loading&&n.progress===0&&A!==null&&Q({panoIndex:A.panoIndex,workCode:A.work.workCode})===a;let t=n.position.clone().setY(this.camera.position.y).distanceTo(this.camera.position);c=t<.01?0:W(r/t,.1,.85)}o&&o===M&&o.position.distanceTo(o.standingPosition)>this.aerialObserverMinHeight&&n.position.distanceTo(this.camera.position)<35&&(c=0),this.modelScene.parameter.resolveValue().modelAlpha>0&&(c=0),n.setCurrent(s),n.setOpacity(c),n.updateTime&&n.updateTime(e,t)})}{let e=(l=this.modelScene.parameter.progress)==null?1:l,t=Math.round(e),n=this.modelScene.parameter.pano0,r=this.modelScene.parameter.pano1,i=t===0?n:r,a;if(i&&(a=this.works.getObserver(i.panoId),a||(a=this.panoPictureObserverMap.get(i))),this.tiling.appearDuration=this.tileAppearDuration,this.tiling.maxRequest=e<(si()?.6:.99)?0:this.tileMaxRequest,this.tiling.imageOptions=this.imageOptions,!a||!i||this.tileLevelForFov===!1||this.camera.perspToOrtho.x>0){this.tiling.setObserver(null);let e={renderer:this.renderer,resolution:O,pixelRatio:1,time:this.camera.time,cameraMatrix:this.xrManager.cameraVR.matrixWorld,cameraProjectionMatrix:this.xrManager.cameraVR.projectionMatrix,panoMap:null,panoMatrix:new c.Matrix4,panoZoom:1,minLevel:0,level:0};this.tiling.update(e),this.modelScene.parameter.set(`refinedScreen`,null)}else{let e=Qr(i.mapSize)+1;this.tiling.setObserver(a);let o={renderer:this.renderer,resolution:O,pixelRatio:1,time:this.camera.time,cameraMatrix:this.xrManager.cameraVR.matrixWorld,cameraProjectionMatrix:this.xrManager.cameraVR.projectionMatrix,panoMap:i.map,panoMatrix:i.matrix,panoZoom:i.zoom,minLevel:e,level:4},s=this.tiling.update(o),c={map:this.tiling.renderTarget.texture,matrixInverse:this.tiling.camera.matrixWorldInverse,projectionMatrix:this.tiling.camera.projectionMatrix,pano:t,opacity:(n==null?void 0:n.panoId)===(r==null?void 0:r.panoId)?1:Vu(Math.abs(((u=this.modelScene.parameter.progress)==null?0:u)-.5)*2)},l=this.modelScene.parameter.refinedScreen;(s||c.pano!==(l==null?void 0:l.pano)||c.opacity!==(l==null?void 0:l.opacity))&&this.modelScene.parameter.set(`refinedScreen`,c)}}if(this.panoVideo.object.position.copy(this.camera.position),this.panoVideo.updateTime(e),this.intersectMesh&&this.intersectMesh.parent&&k&&k.position.y-k.standingPosition.y>10){let e=W(this.camera.position.distanceTo(this.intersectMesh.position)*(2*Math.tan(.5*this.camera.fov/180*Math.PI))/5,.5);this.intersectMesh.scale.setScalar(e)}else this.intersectMesh.scale.setScalar(1);{let e=x.effect,{pano0:t,pano1:n}=this.modelScene.parameter;if(t&&n&&t!==n&&(e===`fly`||e===`model`)&&this.flyEffectUseDepthBuffer){if(((d=this.modelScene.parameter.pano0Depth)==null?void 0:d.panoId)!==t.panoId||((f=this.modelScene.parameter.pano1Depth)==null?void 0:f.panoId)!==n.panoId){this.pano0DepthCubeRenderTarget?this.pano0DepthCubeRenderTarget.width!==512&&this.pano0DepthCubeRenderTarget.setSize(512,512):this.pano0DepthCubeRenderTarget=new c.WebGLCubeRenderTarget(512,{minFilter:c.NearestFilter,magFilter:c.NearestFilter,generateMipmaps:!1}),this.pano1DepthCubeRenderTarget?this.pano1DepthCubeRenderTarget.width!==512&&this.pano1DepthCubeRenderTarget.setSize(512,512):this.pano1DepthCubeRenderTarget=new c.WebGLCubeRenderTarget(512,{minFilter:c.NearestFilter,magFilter:c.NearestFilter,generateMipmaps:!1});let e=new c.CubeCamera(this.camera.near,this.camera.far,this.pano0DepthCubeRenderTarget);e.matrix.copy(t.matrix),e.matrixWorld.copy(e.matrix),e.matrixAutoUpdate=!1,Gg(this.renderer,this.modelScene,e,500);let r=new c.CubeCamera(this.camera.near,this.camera.far,this.pano1DepthCubeRenderTarget);r.matrix.copy(n.matrix),r.matrixWorld.copy(r.matrix),r.matrixAutoUpdate=!1,Gg(this.renderer,this.modelScene,r,500),this.modelScene.parameter.set({pano0Depth:{panoId:t.panoId,map:this.pano0DepthCubeRenderTarget.texture,mapSize:this.pano0DepthCubeRenderTarget.width,maxDepth:500},pano1Depth:{panoId:n.panoId,map:this.pano1DepthCubeRenderTarget.texture,mapSize:this.pano1DepthCubeRenderTarget.width,maxDepth:500}})}}else this.modelScene.parameter.set({pano0Depth:null,pano1Depth:null}),this.flyEffectUseDepthBuffer||(this.pano0DepthCubeRenderTarget&&(this.pano0DepthCubeRenderTarget.dispose(),this.pano0DepthCubeRenderTarget=void 0),this.pano1DepthCubeRenderTarget&&(this.pano1DepthCubeRenderTarget.dispose(),this.pano1DepthCubeRenderTarget=void 0))}}render(){if(this.xrManager.session&&this.xrManager.session.renderState.baseLayer){let e=this.xrManager.session.renderState.baseLayer;return this.renderer.setRenderTarget(null),this.renderer.setScissorTest(!1),this.renderer.setFramebuffer(e.framebuffer),this.renderer.render(this.scene,this.xrManager.cameraVR),this.renderer.setFramebuffer(null),!0}return!1}onPanGesture(){}onTapGesture(){}onPinchGesture(){}onMouseMove(){}onMouseOut(){}panoResourceFromLocationMotionKeyframe(e){return this.panoResources[e.key]}updateControllerHelper(e,t,n){let r=this.xrControllerRay.left,i=this.xrControllerRay.right;if(!e||e.length===0)return;let a={buttons:{X:!1,Y:!1,LeftTrigger:!1,LeftPinch:!1,A:!1,B:!1,RightTrigger:!1,RightPinch:!1}};for(let o=0;o<e.length;o++){let s=e[o].handedness,c=e[o].gamepad;switch(s){case`left`:c.axes&&(this.emitHandleEvent(c.axes[2]===-1,`LeftAxesLeft`,t),this.emitHandleEvent(c.axes[2]===1,`LeftAxesRight`,t),this.emitHandleEvent(c.axes[3]===-1,`LeftAxesUp`,t),this.emitHandleEvent(c.axes[3]===1,`LeftAxesDown`,t)),c!=null&&c.buttons&&(c.buttons[4]&&this.emitHandleEvent(c.buttons[4].pressed,`X`,t),c.buttons[5]&&this.emitHandleEvent(c.buttons[5].pressed,`Y`,t),c.buttons[0]&&this.emitHandleEvent(c.buttons[0].pressed,`LeftTrigger`,t),c.buttons[1]&&this.emitHandleEvent(c.buttons[1].pressed,`LeftPinch`,t));let e={raycaster:r,axes:{up:c.axes&&c.axes[3]<0?Math.abs(c.axes[3]):0,down:c.axes&&c.axes[3]<0?0:Math.abs(c.axes[3]),left:c.axes&&c.axes[2]<0?Math.abs(c.axes[2]):0,right:c.axes&&c.axes[2]<0?0:Math.abs(c.axes[2])},deltaTime:n};a.buttons.X=c.buttons&&c.buttons[4]?c.buttons[4].pressed:!1,a.buttons.Y=c.buttons&&c.buttons[5]?c==null?void 0:c.buttons[5].pressed:!1,a.buttons.LeftTrigger=c.buttons&&c.buttons[0]?c==null?void 0:c.buttons[0].pressed:!1,a.buttons.LeftPinch=c.buttons&&c.buttons[1]?c==null?void 0:c.buttons[1].pressed:!1,a.left=e;break;case`right`:c.axes&&(this.emitHandleEvent(c.axes[2]===-1,`RightAxesLeft`,t),this.emitHandleEvent(c.axes[2]===1,`RightAxesRight`,t),this.emitHandleEvent(c.axes[3]===-1,`RightAxesUp`,t),this.emitHandleEvent(c.axes[3]===1,`RightAxesDown`,t)),c.buttons&&(c.buttons[4]&&this.emitHandleEvent(c.buttons[4].pressed,`A`,t),c.buttons[5]&&this.emitHandleEvent(c.buttons[5].pressed,`B`,t),c.buttons[0]&&this.emitHandleEvent(c.buttons[0].pressed,`RightTrigger`,t),c.buttons[1]&&this.emitHandleEvent(c.buttons[1].pressed,`RightPinch`,t)),a.right={raycaster:i,axes:{up:c.axes&&c.axes[3]<0?Math.abs(c.axes[3]):0,down:c.axes&&c.axes[3]<0?0:Math.abs(c.axes[3]),left:c.axes&&c.axes[2]<0?Math.abs(c.axes[2]):0,right:c.axes&&c.axes[2]<0?0:Math.abs(c.axes[2])},deltaTime:n},a.buttons.A=c.buttons&&c.buttons[4]?c==null?void 0:c.buttons[4].pressed:!1,a.buttons.B=c.buttons&&c.buttons[5]?c==null?void 0:c.buttons[5].pressed:!1,a.buttons.RightTrigger=c.buttons&&c.buttons[0]?c==null?void 0:c.buttons[0].pressed:!1,a.buttons.RightPinch=c.buttons&&c.buttons[1]?c==null?void 0:c.buttons[1].pressed:!1;break;default:break}}this.emit(`xr.controller.update`,$(`xr.controller.update`,a))}emitHandleEvent(e,t,n){let r=this.xrControllerRay.left,i=this.xrControllerRay.right;if(e)this.xrHandleState[t].touchStart===!1?(this.xrHandleState[t].touchStartTime=n,this.xrHandleState[t].touchStart=!0,this.emit(`xr.gesture.buttonDown`,$(`xr.gesture.buttonDown`,{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:t,isFinal:!1,isFirst:!0,controllers:{raycaster:{leftRay:r,rightRay:i}}}))):n-this.xrHandleState[t].touchStartTime>Iv&&this.emit(`xr.gesture.press`,$(`xr.gesture.tap`,{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:t,isFinal:!0,isFirst:!0,controllers:{raycaster:{leftRay:r,rightRay:i}}}));else if(this.xrHandleState[t].touchStart===!0){if(this.emit(`xr.gesture.buttonUp`,$(`xr.gesture.buttonUp`,{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:t,isFinal:!0,isFirst:!1,controllers:{raycaster:{leftRay:r,rightRay:i}}})),n-this.xrHandleState[t].touchStartTime<=Iv){let e=$(`xr.gesture.tap`,{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:t,isFinal:!0,isFirst:!1,controllers:{raycaster:{leftRay:r,rightRay:i}}});!this.emit(`xr.gesture.tap`,e)&&!e.defaultPrevented&&t===`RightTrigger`&&this.checkSelectedPano(this.xrControllerRay.right)}this.xrHandleState[t].touchStart=!1,this.xrHandleState[t].touchStartTime=0}}initHandEvent(){if(!this.xrManager.session)throw Error(`初始化失败`);this.xrManager.session.addEventListener(`select`,e=>{this.gazeRay&&this.checkSelectedPano(this.gazeRay)})}}},Bv={Floorplan:Yh,Topview:Zh,Panorama:Xg,VRPanorama:V_,Model:K_,Mapview:Q_,XRPanorama:Pv},Vv=`gesture.pan,gesture.tap,gesture.dbltap,gesture.press,gesture.pinch,gesture.mousewheel,gesture.mousemove,gesture.momentum,gesture.create,initAnimation.start,initAnimation.end,camera.update,intersect.update,pano.select,pano.moveTo,pano.moving,pano.arrived,pano.cancel,pano.error,pano.texture.load,pano.texture.progress,pano.texture.success,pano.texture.error,pano.texture.abort,xr.session.start,xr.session.end,xr.gesture.tap,xr.gesture.press,xr.gesture.buttonUp,xr.gesture.buttonDown,xr.controller.update`.split(`,`);function Hv(e){e.on(`initAnimation.start`,t=>{e.emit(`initAnimationWillStart`,t.state.panoIndex,t.state,t.userAction)}),e.on(`initAnimation.end`,t=>{e.emit(`initAnimationEnded`,t.state.panoIndex,t.state,t.userAction)}),e.on(`gesture.pan`,t=>{let n=!1;n=e.emit(`wantsGesture`,`pan`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPanGesture`,t.state,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`pan`,t.pointers,t.isFinal),e.emit(`panGesture`,t.state,t.isFinal))}),e.on(`gesture.tap`,t=>{let n=!1;n=e.emit(`wantsGesture`,`tap`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsTapGesture`,t.center.raycaster,t.center.coords,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`tap`,t.pointers,t.isFinal),e.emit(`tapGesture`,t.center.raycaster,t.center.coords,t.isFinal))}),e.on(`gesture.dbltap`,t=>{let n=!1;n=e.emit(`wantsGesture`,`dbltap`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsDblTapGesture`,t.center.raycaster,t.center.coords,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`dbltap`,t.pointers,t.isFinal),e.emit(`dblTapGesture`,t.center.raycaster,t.center.coords,t.isFinal))}),e.on(`gesture.press`,t=>{let n=!1;n=e.emit(`wantsGesture`,`press`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPressGesture`,t.center.raycaster,t.center.coords,t.center.delta,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`press`,t.pointers,t.isFinal),e.emit(`pressGesture`,t.center.raycaster,t.center.coords,t.center.delta,t.isFinal))}),e.on(`gesture.pinch`,t=>{let n=!1;n=e.emit(`wantsGesture`,`pinch`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPinchGesture`,t.scale,t.state.fov,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`pinch`,t.pointers,t.isFinal),e.emit(`pinchGesture`,t.scale,t.state.fov,t.isFinal))}),e.on(`gesture.mousewheel`,t=>{let n=!1;n=e.emit(`wantsGesture`,`mouseWheel`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsMouseWheel`,t.center.delta,t.state.fov,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`mouseWheel`,t.pointers,t.isFinal),e.emit(`mouseWheel`,t.center.delta,t.state.fov,t.isFinal))}),e.on(`gesture.mousemove`,t=>{let n=!1;n=e.emit(`wantsGesture`,`mouseMove`,t.pointers,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`mouseMove`,t.pointers,t.isFinal),n=e.emit(`wantsChangeCameraFov`,t.state.fov),n&&t.preventDefault())}),e.on(`gesture.momentum`,t=>{let n=!1;n=e.emit(`wantsInteriaPan`,t.state),n&&t.preventDefault(),t.defaultPrevented||e.emit(`interiaPan`,t.state,t.isFinal)}),e.on(`camera.update`,t=>{e.emit(`cameraFovUpdate`,t.state.fov,t.userAction),e.emit(`cameraDirectionUpdate`,t.state,t.userAction);let n=Vt(t.state);n.setLength(t.state.distance);let r=t.state.offset.clone().sub(n);e.emit(`cameraPositionUpdate`,r,t.userAction),e.emit(`cameraUpdate`,t.state,t.userAction)}),e.on(`intersect.update`,t=>{if(t.intersection){let n=!1;n=e.emit(`wantsShowIntersectionOnModel`,t.raycaster),n&&t.preventDefault(),t.defaultPrevented||e.emit(`intersectionOnModelUpdate`,t.intersection,t.object)}else e.emit(`intersectionHidden`)}),e.on(`pano.request`,t=>{let n=e.emit(`wantsMoveToPano`,t.state.panoIndex,t.options,t.userAction);n||(n=e.emit(`wantsToMoveToPano`,t.state.panoIndex,t.options,t.userAction)),n&&t.preventDefault(),t.defaultPrevented||e.emit(`panoWillLoad`,t.state.panoIndex)}),e.on(`pano.select`,t=>{e.emit(`panoSelected`,t.state.panoIndex)}),e.on(`pano.moveTo`,t=>{e.emit(`panoLoaded`,t.state.panoIndex),e.emit(`moveToPano`,t.state.panoIndex,t.userAction),e.emit(`panoWillArrive`,t.state.panoIndex,t.state,t.userAction)}),e.on(`pano.moving`,t=>{e.emit(`movingToPano`,t.state.panoIndex,t.prevPano.panoIndex,t.progress)}),e.on(`pano.arrived`,t=>{e.emit(`panoArrived`,t.state.panoIndex,t.state,t.userAction)}),e.on(`pano.cancel`,t=>{e.emit(`moveToPanoCanceled`,t.state.panoIndex)}),e.on(`pano.error`,t=>{e.emit(`panoLoadError`,t.error,t.state.panoIndex)}),e.on(`pano.texture.load`,t=>{e.emit(`textureStartLoad`,t.pano.panoIndex)}),e.on(`pano.texture.success`,t=>{e.emit(`textureLoaded`,t.pano.panoIndex,t.meta)}),e.on(`pano.texture.error`,t=>{e.emit(`textureError`,t.error,t.pano.panoIndex)}),e.on(`pano.texture.abort`,t=>{e.emit(`textureAbort`,t.pano.panoIndex)}),e.on(`pano.texture.progress`,t=>{e.emit(`textureLoading`,t.progress,t.pano.panoIndex)}),e.on(`xr.session.start`,t=>{e.emit(`webXRSessionStart`)}),e.on(`xr.session.end`,t=>{e.emit(`webXRSessionEnd`)}),e.on(`xr.gesture.tap`,t=>{e.emit(`webXRControllerEvent`,`tap`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.press`,t=>{e.emit(`webXRControllerEvent`,`press`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.buttonUp`,t=>{e.emit(`webXRControllerEvent`,`buttonUp`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.buttonDown`,t=>{e.emit(`webXRControllerEvent`,`buttonDown`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.controller.update`,t=>{e.emit(`webXRControllerRayUpdate`,{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0}),t.left&&e.emit(`webXRAxesUpdate`,`left`,{raycaster:{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0},axesState:{up:t.left.axes.up,down:t.left.axes.down,left:t.left.axes.left,right:t.left.axes.right},deltaTime:t.left.deltaTime}),t.right&&e.emit(`webXRAxesUpdate`,`right`,{raycaster:{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0},axesState:{up:t.right.axes.up,down:t.right.axes.down,left:t.right.axes.left,right:t.right.axes.right},deltaTime:t.right.deltaTime})}),e.on(`works.request`,t=>{e.emit(`willLoad`,t.input,t.works[0],e.getCurrentState())}),e.on(`works.load`,t=>{e.emit(`load`,t.input,t.works[0],e.getCurrentState())}),e.on(`works.ready`,t=>{e.emit(`loaded`,t.input,t.works[0])}),e.on(`state.change`,t=>{e.emit(`stateChange`,t.state,t.userAction)}),e.on(`currentState.change`,t=>{e.emit(`currentStateChange`,t.state,t.userAction)}),e.on(`state.set`,t=>{e.emit(`setState`,t.state)}),e.on(`state.synced`,t=>{e.emit(`stateSynced`,t.state)}),e.on(`model.request`,t=>{e.emit(`modelWillLoad`,t.work.model)}),e.on(`model.error`,t=>{e.emit(`modelLoadError`,t.error,t.model)}),e.on(`model.load`,t=>{e.emit(`modelLoaded`,t.model)}),e.on(`model.changeShownFloor`,t=>{e.emit(`modelShownFloorChange`,t.model.shownFloor,t.model.floorLength)}),e.on(`render`,t=>{e.emit(`renderFrame`,t.needsRender)}),e.on(`mode.change.request`,t=>{e.emit(`wantsChangeMode`,t.mode,t.prevMode)}),e.on(`mode.change`,t=>{e.emit(`modeChange`,t.mode,t.prevMode,t.state.panoIndex,t.state,t.userAction)}),e.on(`helpers.visible`,t=>{e.emit(`helpersVisibleChange`,t.object.visible)}),e.on(`network.resource`,t=>{e.emit(`network`,t.source,t.requestType,t.requestState,t.detail)})}function Uv(){if(typeof window<`u`){let e=document.createElement(`video`);e.loop=!0,e.autoplay=!0,e.playsInline=!0,e.muted=!0,e.crossOrigin=``;let t=()=>{document.removeEventListener(`touchstart`,t,!1),document.removeEventListener(`mousedown`,t,!1),e.muted=!1};return document.addEventListener(`touchstart`,t,!1),document.addEventListener(`mousedown`,t,!1),e}else return{}}function Wv(){let e=new c.Group;e.name=`internalLights`;{let t=new c.DirectionalLight(16777215,.1);t.name=`direction0`,t.position.copy(new c.Vector3(0,1,0)),e.add(t)}{let t=new c.DirectionalLight(16777215,.1);t.name=`direction1`,t.position.copy(new c.Vector3(-1,-1,-1)),e.add(t)}{let t=new c.DirectionalLight(16777215,.3);t.name=`direction2`,t.position.copy(new c.Vector3(1,1,1)),e.add(t)}{let t=new c.AmbientLight(16777215,.6);t.name=`ambient0`,e.add(t)}return e}function Gv(e){var t,n;let r={},i=e.split(/(\;|\,)/);for(let e of i){let i=e.split(`=`),a=(t=i[0])==null?void 0:t.trim(),o=(n=i[1])==null?void 0:n.trim();a&&o&&(r[a]=o)}return r}function Kv(){var e;if(typeof document<`u`){let t=document.getElementsByTagName(`meta`);for(let n=0;n<t.length;n++){let r=t[n];if(r.getAttribute(`name`)===`viewport`){let t=Gv((e=r.getAttribute(`content`))==null?``:e),n=Number(t[`initial-scale`]);if(!isNaN(n))return n}}}return 1}var qv=`data:image/png;base64,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`,Jv=[351,63],Yv=[20,20],Xv=new Float32Array([-.5,-.5,0,.5,-.5,0,-.5,.5,0,.5,.5,0]),Zv=new Float32Array([0,0,1,0,0,1,1,1]),Qv=new Uint8Array([0,1,2,1,3,2]),$v=new c.BufferGeometry;$v.setAttribute(`position`,new c.BufferAttribute(Xv,3)),$v.setAttribute(`uv`,new c.BufferAttribute(Zv,2)),$v.setIndex(new c.BufferAttribute(Qv,1));var ey=new c.MeshBasicMaterial({transparent:!0,depthTest:!1,depthWrite:!1,stencilWrite:!1,fog:!1}),ty=new c.Mesh($v,ey);ty.matrixAutoUpdate=!1;var ny=new c.Scene;ny.add(ty),ny.matrixAutoUpdate=!1;var ry=new c.OrthographicCamera(-.5,.5,.5,-.5,.1,1);ry.position.set(0,0,.5),ry.lookAt(0,0,0),ry.updateMatrixWorld(!0),ry.matrixAutoUpdate=!1;var iy=new c.Vector4,ay=new c.Vector4;function oy(e){if(ey.map){let t=e.getViewport(iy),n=e.getScissor(ay),r=e.getScissorTest(),i=e.autoClear,a=n.x+Yv[0]/3,o=n.y+Yv[1]/3,s=Jv[0]/3,c=Jv[1]/3;e.setViewport(a,o,s,c),e.setScissor(a,o,s,c),e.setScissorTest(!0),e.autoClear=!1,e.render(ny,ry),e.setViewport(t),e.setScissor(n),e.setScissorTest(r),e.autoClear=i}else{let e=new c.Texture,t=new Image;t.onload=()=>{e.image=t,e.wrapS=c.ClampToEdgeWrapping,e.wrapT=c.ClampToEdgeWrapping,e.minFilter=c.LinearFilter,e.needsUpdate=!0,e.generateMipmaps=!1,ey.needsUpdate=!0,t.onload=q},t.src=qv,ey.map=e}}var sy=`(function(){function e(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}async function t(e={}){var t,n=e,r=!1,i=!0,a=self.location.href;if(r||i)try{new URL(\`.\`,a).href}catch{}console.log.bind(console),console.error.bind(console);var o=!1;function s(e){for(var t=0,n=e.length,r=new Uint8Array(n),i;t<n;++t)i=e.charCodeAt(t),r[t]=~i>>8&i;return r}var c,l,u=!1;function d(){var e=M.buffer;new Int8Array(e),new Int16Array(e),n.HEAPU8=l=new Uint8Array(e),new Uint16Array(e),new Int32Array(e),n.HEAPU32=new Uint32Array(e),n.HEAPF32=new Float32Array(e),new Float64Array(e),new BigInt64Array(e),new BigUint64Array(e)}function f(){if(n.preRun)for(typeof n.preRun==\`function\`&&(n.preRun=[n.preRun]);n.preRun.length;)T(n.preRun.shift());x(w)}function p(){u=!0,I.c()}function m(){if(n.postRun)for(typeof n.postRun==\`function\`&&(n.postRun=[n.postRun]);n.postRun.length;)C(n.postRun.shift());x(S)}var h;function g(){return s(\`\\0asm\\0\\0\\0&\\\`\\\`}}\\\`}\\\`\\0\\\`\\v\\0\\\`\\0\\0\\x07aa\\0\\0\\b\\x07\\0\\0\\x07‚€€\\bA€Œ\\v\\x07b\\0c\\0\\x07d\\0e\\0f\\0\\f
2238
2240
  ™@\\x07T~@A€\\b(\\0"­ \\0­B\\x07|Bøÿÿÿƒ|"BÿÿÿÿX@ §"\\0?\\0AtM\\r \\0\\0\\r\\vA„\\bA06\\0A\\vA€\\b \\x006\\0 \\v\\0 \\0 Atr\\vr \\0¼"Aÿÿÿq!@ AvAÿq"E\\r\\0 Að\\0M@ A€€€rAñ\\0 kv!\\f\\v AK@A€ø!A\\0!\\f\\v A
2239
2241
  tA€€\\x07k!\\v  AvA€€qr A\\rvr\\vß\\v\\b@ \\0E\\r\\0 \\0A\\bk" \\0Ak(\\0"Axq"\\0j!@ Aq\\r\\0 AqE\\r  (\\0"k"A˜\\b(\\0I\\r \\0 j!\\0@@@Aœ\\b(\\0 G@ (\\f! AÿM@  (\\b"G\\rAˆ\\bAˆ\\b(\\0A~ Avwq6\\0\\f\\v (!\\x07  G@ (\\b" 6\\f  6\\b\\f\\v (" Aj ("E\\r Aj\\v!@ ! "Aj! ("\\r\\0 Aj! ("\\r\\0\\v A\\x006\\0\\f\\v ("AqAG\\rA\\b \\x006\\0  A~q6  \\0Ar6  \\x006\\0\\v  6\\f  6\\b\\f\\vA\\0!\\v \\x07E\\r\\0@ ("At"(¸
2240
2242
  F@ A¸
@@ -2320,4 +2322,4 @@ A\\0H@@@ \\0 F\\r\\0 \\x07  \\0Atj(\\0Atj" (\\0"Aj6\\0  Atj \\x
2320
2322
  At"j \\b Aj"j(\\0  \\x07j(\\0j6\\0
2321
2323
  Ak!
2322
2324
  \\f\\v\\v\\v\\0\\v\\v \\0A\\b\\v\`)}function _(e){return e}function v(e,t){var n,r=_(e);return n=new WebAssembly.Module(r),[new WebAssembly.Instance(n,t),n]}function y(){return{a:P}}function b(){function e(e,t){return I=e.exports,N(I),d(),I}var t=y();return n.instantiateWasm?new Promise((r,i)=>{n.instantiateWasm(t,(t,n)=>{r(e(t,n))})}):(h??=g(),e(v(h,t)[0]))}for(var x=e=>{for(;e.length>0;)e.shift()(n)},S=[],C=e=>S.push(e),w=[],T=e=>w.push(e),E=()=>2147483648,D=(e,t)=>Math.ceil(e/t)*t,O=e=>{var t=(e-M.buffer.byteLength+65535)/65536|0;try{return M.grow(t),d(),1}catch{}},k=e=>{var t=l.length;e>>>=0;var n=E();if(e>n)return!1;for(var r=1;r<=4;r*=2){var i=t*(1+.2/r);if(i=Math.min(i,e+100663296),O(Math.min(n,D(Math.max(e,i),65536))))return!0}return!1},A=new Uint8Array(123),j=25;j>=0;--j)A[48+j]=52+j,A[65+j]=j,A[97+j]=26+j;if(A[43]=62,A[47]=63,n.noExitRuntime&&n.noExitRuntime,n.print&&n.print,n.printErr&&n.printErr,n.wasmBinary&&n.wasmBinary,n.arguments&&n.arguments,n.thisProgram&&n.thisProgram,n.preInit)for(typeof n.preInit==\`function\`&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.shift()();var M;function N(e){n._sort=e.d,n._malloc=e.e,n._free=e.f,M=e.b,e.__indirect_function_table}var P={a:k};function F(){f();function e(){n.calledRun=!0,!o&&(p(),c?.(n),n.onRuntimeInitialized?.(),m())}n.setStatus?(n.setStatus(\`Running...\`),setTimeout(()=>{setTimeout(()=>n.setStatus(\`\`),1),e()},1)):e()}var I=b();return F(),t=u?n:new Promise((e,t)=>{c=e}),t}let n;function r(){return e(this,void 0,void 0,function*(){n=yield t()})}let i,a,o,s,c,l,u,d,f,p=0,m=0,h=[],g=!0,_=!1,v=!1,y=!1,b=()=>e(void 0,void 0,void 0,function*(){if(_){v=!0;return}_=!0,v=!1,n||(yield r());let e=2**Math.ceil(Math.log2(i.vertexCount));p<e&&(p>0&&(n._free(a),n._free(s),n._free(c),n._free(l),n._free(u),n._free(d),n._free(f)),p=e,a=n._malloc(64),s=n._malloc(p*4),c=n._malloc(3*p*4),l=n._malloc(p*4),u=n._malloc(p*4),d=n._malloc(p*4),f=n._malloc(p*4)),m<i.transforms.length&&(m>0&&n._free(o),m=i.transforms.length,o=n._malloc(m*4)),_=!1,v&&(v=!1,yield b())}),x=()=>{if(_||v||!n)return;_=!0,n.HEAPF32.set(i.positions,c/4),n.HEAPF32.set(i.transforms,o/4),n.HEAPU32.set(i.transformIndices,s/4),n.HEAPF32.set(new Float32Array(h),a/4),n._sort(a,o,s,i.vertexCount,c,l,u,d,f);let e=new Uint32Array(n.HEAPU32.buffer,u,i.vertexCount),t=new Uint32Array(e.slice().buffer);self.postMessage({depthIndex:t},[t.buffer]),_=!1,g=!1},S=()=>{y||(y=!0,g&&x(),setTimeout(()=>{y=!1,S()}))};self.onmessage=e=>new Promise((t,n)=>{e.data.sortData&&(i={positions:new Float32Array(e.data.sortData.positions),transforms:new Float32Array(e.data.sortData.transforms),transformIndices:new Uint32Array(e.data.sortData.transformIndices),vertexCount:e.data.sortData.vertexCount},g=!0,b()),e.data.viewProj&&(e.data.viewProj.every(e=>h.includes(e))===!1&&(h=e.data.viewProj,g=!0),S(),t(!0))})})();`,gy=typeof self<`u`&&self.Blob&&new Blob([`(self.URL || self.webkitURL).revokeObjectURL(self.location.href);`,hy],{type:`text/javascript;charset=utf-8`});function _y(e){let t;try{if(t=gy&&(self.URL||self.webkitURL).createObjectURL(gy),!t)throw``;let n=new Worker(t,{name:e==null?void 0:e.name});return n.addEventListener(`error`,()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch(t){return new Worker(`data:text/javascript;charset=utf-8,`+encodeURIComponent(hy),{name:e==null?void 0:e.name})}}var vy=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("}rpvv|{-uvtu}-sy|nH}rpvv|{-uvtu}-v{Hnvor-v{-}ynV{qr\x07H{vs|z-uvtu}-nz}yr?Q-lr\x07rH{vs|z-uvtu}-nz}yr?Q-ln{s|zH{vs|z-uvtu}-nz}yr?Q-ln{s|zV{qvprH{vs|z-uvtu}-nz}yr?Q-luar\x07rH{vs|z-rp?-luar\x07r`v rH{vs|z-v{-lzn\x07`uQrtrrH{vs|z-rp?-r|yv|{Hn\bv{t-rpA-P|y|Hn\bv{t-rp?-]|vv|{Hn\bv{t-rp?-bH<<参考Tnvn{`}yn@qp|{-sy|n-\0E-J-\05E;=6H<<原版的固定xr{ry`v r,不要轻易调整这个数p|{-sy|n-xr{ry?Q`v r-J-=;@Hp|{-sy|n-zn\x07`prr{`}npr`}yn`v r-J-?=AE;=H<<固定的u相关系数p|{-sy|n-`UlP>-J-=;AEEC=?B>>F=?F>FFHp|{-sy|n-`UlP?l=-J->;=F?BAEAHp|{-sy|n-`UlP?l>-J-:>;=F?BAEAHp|{-sy|n-`UlP?l?-J-=;@>B@F>CHp|{-sy|n-`UlP?l@-J-:>;=F?BAEAHp|{-sy|n-`UlP?lA-J-=;BAC?DA?Hrp?-tr`UQnnbc5v{-}ynVq\x079-v{-p|z}|{r{\\ssr9-rp?-r\x07r`v r6-\n----v{-uP|z}|{r{P|{-J-=H----vs-5lzn\x07`uQrtrr-KJ->6-uP|z}|{r{P|{-8J-FH----vs-5lzn\x07`uQrtrr-KJ-?6-uP|z}|{r{P|{-8J->BH----vs-5lzn\x07`uQrtrr-KJ-@6-uP|z}|{r{P|{-8J-?>H--------v{-}nqqrqP|z}|{r{P|{-J-uP|z}|{r{P|{H----vs-5}nqqrqP|z}|{r{P|{-2-A-.J-=6-\n--------}nqqrqP|z}|{r{P|{-J-55}nqqrqP|z}|{r{P|{-<-A6-8->6-7-AH----\f--------sy|n-yv{rnP|z}|{r{V{qr\x07-J-sy|n5}ynVq\x07-7-}nqqrqP|z}|{r{P|{-8-p|z}|{r{\\ssr6H----sy|n-r\x07ryV{qr\x07-J-yv{rnP|z}|{r{V{qr\x07-<-A;=H------sy|n-q-J-r\x07ryV{qr\x07-<-r\x07r`v r;\x07H----sy|n-\b-J-sy||5q6-<-r\x07r`v r;\bH----sy|n-\x07-J-snp5q6H----r{-rp?5\x079-\b6H\f|vq-znv{-56-\n----rpA-pr{-J-r\x07rySrpu5lr\x07r9-vrp?55v{5}ynV{qr\x076-3-=\x07@ss6-II->9-v{5}ynV{qr\x076-KK->=69-=6H--------v{-n{s|zV{qr\x07-J-r\x07rySrpu5ln{s|zV{qvpr9-vrp?5v{5}ynV{qr\x076-3-=\x07@ss9-v{5}ynV{qr\x076-KK->=69-=6;\x07H----znA-n{s|z-J-znA5--------r\x07rySrpu5ln{s|z9-vrp?5=9-n{s|zV{qr\x0769-=69--------r\x07rySrpu5ln{s|z9-vrp?5>9-n{s|zV{qr\x0769-=69--------r\x07rySrpu5ln{s|z9-vrp?5?9-n{s|zV{qr\x0769-=69--------r\x07rySrpu5ln{s|z9-vrp?5@9-n{s|zV{qr\x0769-=6----6H----znA-n{s|zZ|qrycvrZnv\x07-J-vrZnv\x07-7-n{s|zH----rp@-}ynPr{r-J-v{Ova|Sy|n5pr{;\x07\b 6H----rpA-vrPr{r-J-n{s|zZ|qrycvrZnv\x07-7-rpA5}ynPr{r9->;=6H----rpA-pyv}Pr{r-J-}|wrpv|{Znv\x07-7-vrPr{rH----<<剔除超出视锥体的}yn----sy|n-pyv}-J->;?-7-pyv}Pr{r;H----vs-5pyv}Pr{r; -I-:pyv}Pr{r;-\v\v-pyv}Pr{r; -K-pyv}Pr{r;-\v\v---------pyv}Pr{r;\x07-I-:pyv}-\v\v-pyv}Pr{r;\x07-K-pyv}-\v\v---------pyv}Pr{r;\b-I-:pyv}-\v\v-pyv}Pr{r;\b-K-pyv}6-\n--------tyl]|vv|{-J-rpA5=;=9-=;=9-?;=9->;=6H--------r{H----\f----rp@-{qpPr{r-J-pyv}Pr{r;\x07\b -<-pyv}Pr{r;H----rp?-s|pny-J-rp?5--------}|wrpv|{Znv\x07h=jh=j-7-r|yv|{;\x07-7-=;B9--------}|wrpv|{Znv\x07h>jh>j-7-r|yv|{;\b-7-=;B----6H--------]|vv|{-J-}|vv|{;\x07\bH----<<-读取协方差数据(使用-unys?\x07>C-打包)----rpA-p|-J-r\x07rySrpu5lr\x07r9-vrp?555v{5}ynV{qr\x076-3-=\x07@ss6-II->6-\v->9-v{5}ynV{qr\x076-KK->=69-=6H----rp?->-J-{}npxUnys?\x07>C5p|;\x076H-----rp?-?-J-{}npxUnys?\x07>C5p|;\b6H------rp?-@-J-{}npxUnys?\x07>C5p|; 6H----------sy|n-Z>>-J->;\x07-<-A;=H----sy|n-Z>?-J->;\b-<-A;=H----sy|n-Z>@-J-?;\x07-<-A;=H----sy|n-Z??-J-?;\b-<-A;=H----sy|n-Z?@-J-@;\x07-<-A;=H----sy|n-Z@@-J-@;\b-<-A;=H--------zn@-cx-J-zn@5--------Z>>9-Z>?9-Z>@9--------Z>?9-Z??9-Z?@9----------Z>@9-Z?@9-Z@@-------6H----<<-判断是否是正交模式:透视时-}|wrpv|{Znv\x07h@jh@j-J-=,正交时-J->----o||y-v\\u|tn}uvp-J-}|wrpv|{Znv\x07h@jh@j-K-=;DH----sy|n-n{vznv|{]|tr-J--}|wrpv|{Znv\x07h@jh@jH----zn@-WH----vs-5v\\u|tn}uvp6-\n--------<<-正交模式的雅可比矩阵--------W-J-n{}|r5zn@5------------s|pny;\x079-=;=9-=;=9------------=;=9-s|pny;\b9-=;=9------------=;=9-=;=9-=;=--------66H----\f-ryr-\n--------<<-透视模式的雅可比矩阵--------sy|n--J->;=-<-5vrPr{r; -7-vrPr{r; 6H--------W-J-zn@5------------s|pny;\x07-<-vrPr{r; 9-=;=9-:5s|pny;\x07-7-vrPr{r;\x076-7-9------------=;=9-s|pny;\b-<-vrPr{r; 9-:5s|pny;\b-7-vrPr{r;\b6-7-9------------=;=9-=;=9-=;=--------6H----\f----zn@-d-J-n{}|r5zn@5n{s|zZ|qrycvrZnv\x0766H----zn@-a-J-d-7-WH----<<-将-@Q-协方差矩阵变换为-?Q-协方差矩阵----zn@-p|?Qz-J-n{}|r5a6-7-cx-7-aH----p|?Qzh=jh=j-8J-xr{ry?Q`v rH----p|?Qzh>jh>j-8J-xr{ry?Q`v rH----rp@-p|?Q-J-rp@5p|?Qzh=jh=j9-p|?Qzh=jh>j9-p|?Qzh>jh>j6H----sy|n-n-J-p|?Q;\x07H----sy|n-q-J-p|?Q; H----sy|n-o-J-p|?Q;\bH----sy|n-Q-J-n-7-q-:-o-7-oH----sy|n-npr-J-n-8-qH----sy|n-npr\\r?-J-=;B-7-nprH----sy|n-rz?-J-\05zn\x075=;>9-npr\\r?-7-npr\\r?-:-Q66H----sy|n-rvtr{cnyr>-J-npr\\r?-8-rz?H----sy|n-rvtr{cnyr?-J-npr\\r?-:-rz?H----vs-5rvtr{cnyr?-IJ-=;=6-\n--------r{H----\f----rp?-rvtr{crp|>-J-{|znyv r5rp?5o9-rvtr{cnyr>-:-n66H----rp?-rvtr{crp|?-J-rp?5rvtr{crp|>;\b9-:rvtr{crp|>;\x076H----rp?-onvcrp|>-J-rvtr{crp|>--7-zv{5\0E-7-\05rvtr{cnyr>69-zn\x07`prr{`}npr`}yn`v r6H----rp?-onvcrp|?-J-rvtr{crp|?--7-zv{5\0E-7-\05rvtr{cnyr?69-zn\x07`prr{`}npr`}yn`v r6H----rp?-onvcvr}|-J-rp?5>;=-<-r|yv|{;\x079->;=-<-r|yv|{;\b6H----rp?-{qp\\ssr-J-rp?5]|vv|{;\x07-7-onvcrp|>-8-]|vv|{;\b-7-onvcrp|?6-7---------------------onvcvr}|-7-?;=H----rpA-\0nq]|-J-rpA5{qpPr{r;\x07\b-8-{qp\\ssr9-{qpPr{r; 9->;=6H----tyl]|vv|{-J-\0nq]|H----<<-读取颜色----rpA-p|y|-J-rpA5--------5p|;6-3-=\x07ss9--------5p|;-KK-E6-3-=\x07ss9--------5p|;-KK->C6-3-=\x07ss9--------5p|;-KK-?A6-3-=\x07ss----6-<-?BB;=H----<<应用球谐光照,目前只兼容=>?----vs-5lzn\x07`uQrtrr-KJ->6-\n--------rp@-pnzrn]|V{\\owrp-J-rp@5v{rr5n{s|z6-7-rpA5pnzrn]|vv|{9->;=66H--------rp@-|owrpcvrQv-J-{|znyv r5}ynPr{r-:-pnzrn]|V{\\owrp6H----------------rpA-u=>?@-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x079-=9-luar\x07r`v r66H----------rpA-uABCD-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x079-A9-luar\x07r`v r66H----------rpA-uEF>=>>-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x079-E9-luar\x07r`v r66H-----------------rp@-u>-J-u=>?@;toH-----------------------------------rp@-u?-J-rp@5u=>?@;n9-uABCD;t6H---------------------rp@-u@-J-rp@5uABCD;on9-uEF>=>>;6H-----------------------------sy|n-\x07-J-|owrpcvrQv;\x07H--------sy|n-\b-J-|owrpcvrQv;\bH--------sy|n- -J-|owrpcvrQv; H--------rp@-uP|y|-J-u>-7-5:=;AEEC=?B-7-\b6-8-u?-7-5=;AEEC=?B-7- 6-8-u@-7-5:=;AEEC=?B-7-\x076H--------p|y|;to-8J-uP|y|H----------------vs-5lzn\x07`uQrtrr-KJ-?6-\n----------------------rpA-u>?>@>A>B-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x079->?9-luar\x07r`v r66H------------rpA-u>C>D>E>F-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x079->C9-luar\x07r`v r66H-------------rpA-u?=?>???@-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x079-?=9-luar\x07r`v r66H-------------------------rp@-uA-J-uEF>=>>;tonH------------------------------------rp@-uB-J-u>?>@>A>B;toH----------------------------------rp@-uC-J-rp@5u>?>@>A>B;n9-u>C>D>E>F;t6H---------------rp@-uD-J-rp@5u>C>D>E>F;on9-u?=?>???@;6H---------------rp@-uElqrt?-J-u?=?>???@;tonH-----------------------------------------sy|n-\x07\x07-J-\x07-7-\x07H------------sy|n-\b\b-J-\b-7-\bH------------sy|n- -J- -7- H------------sy|n-\x07\b-J-\x07-7-\bH------------sy|n-\b -J-\b-7- H------------sy|n-\x07 -J-\x07-7- H------------------------p|y|;to-8J----------------5`UlP?l=-7-\x07\b6-7-uA-8----------------5`UlP?l>-7-\b 6-7-uB-8----------------5`UlP?l?-7-5?;=-7- -:-\x07\x07-:-\b\b66-7-uC-8----------------5`UlP?l@-7-\x07 6-7-uD-8----------------5`UlP?lA-7-5\x07\x07-:-\b\b66-7-uElqrt?H--------\f----\f--------p|y|;to-J-pynz}5p|y|;to9-rp@5=;=69-rp@5>;=66H----P|y|-J-p|y|H----]|vv|{-7J-\0EH----b-J-}|vv|{;\x07\bH\f"),yy=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}(`}rpvv|{-uvtu}-sy|nH0v{pyqr-Ip|zz|{Kn\bv{t-rpA-P|y|Hn\bv{t-rp?-]|vv|{Hn\bv{t-rp?-bH|vq-znv{-56-
2323
- ----<<-计算从-}yn-中心到当前片段的平方距离----<<-由于-]|vv|{-已经按-\05E6-缩放,平方结果会被缩放-E-倍----<<-如果平方结果大于-E,说明在椭圆外,距离均值超过-\05E6-个标准差----sy|n-N-J-q|5]|vv|{9-]|vv|{6H----vs-5N-K-E;=6-qvpnqH--------rp@-p|y|-J-P|y|;toH--------<<-由于渲染的-}yn-按-\05E6-缩放,高斯公式中的逆协方差矩阵部分变成单位矩阵----<<-因此只剩下-5e-:-zrn{6-7-5e-:-zrn{6,而-zrn{-为零,所以是-e-7-e,即-N----sy|n-|}npv\b-J-r\x07}5:=;B-7-N6-7-P|y|;nH--------tylSntP|y|-J-rpA5p|y|;to9-|}npv\b6H\f`),by=class extends c.Mesh{constructor(){super(),this.renderData=null,this.needsRender=!1,this.sortWorker=null,this.depthIndex=new Uint32Array,this.splatIndexCapacity=0,this.dataTexture=null,this.transformsTexture=null,this.transformIndicesTexture=null,this.shTexture=null,this.usedSHDegree=0,this.onBeforeRender=(e,t,n)=>{var r,i;let a=n,o=this.collectObjects(t);if(o.length===0){this.geometry.instanceCount=0;return}let s=0;if(o.forEach(e=>{e.usedSHDegree>s&&(s=e.usedSHDegree)}),this.setMaxShDegree(s),this.isSceneNeedsRebuild(o)&&(this.renderData&&this.renderData.dispose(),this.shTexture&&(this.shTexture.dispose(),this.shTexture=null),this.renderData=new my(o),this.createTextures(),this.ensureSplatIndexCapacity(this.renderData.numPoints)),!this.renderData)return;if(o.forEach(e=>{e.transformChanged&&this.renderData.updateTransform(e)}),this.renderData.dataChanged||this.renderData.transformsChanged){let e=new Float32Array(this.renderData.positions.slice().buffer),t=new Float32Array(this.renderData.transforms.slice().buffer),n=new Uint32Array(this.renderData.transformIndices.slice().buffer);(r=this.sortWorker)==null||r.postMessage({sortData:{positions:e,transforms:t,transformIndices:n,vertexCount:this.renderData.numPoints}},[e.buffer,t.buffer,n.buffer])}this.renderData.dataChanged&&this.dataTexture&&(this.dataTexture.needsUpdate=!0,this.renderData.dataChanged=!1),this.renderData.transformsChanged&&this.transformsTexture&&this.transformIndicesTexture&&(this.transformsTexture.needsUpdate=!0,this.transformIndicesTexture.needsUpdate=!0,this.renderData.transformsChanged=!1);let l=Math.min(this.usedSHDegree,this.renderData.maxShDegree);this.material.uniforms.u_maxShDegree.value=l,l>0&&!this.shTexture?this.createSHTexture():l===0&&this.shTexture&&(this.shTexture.dispose(),this.shTexture=null,this.material.uniforms.u_shTexture.value=null);let u=new c.Matrix4().multiplyMatrices(a.perspectiveProjectionMatrix,a.matrixWorldInverse);(i=this.sortWorker)==null||i.postMessage({viewProj:u.elements}),this.material.uniforms.resolution.value.set(a.resolution.x,a.resolution.y)};let e=this.createGeometry(),t=this.createMaterial();this.geometry=e,this.material=t,this.frustumCulled=!1,this.renderOrder=-99999999999,this.gsSceneState={lastObjectsHash:``},this.sortWorker=new _y,this.sortWorker.onmessage=e=>{if(e.data.depthIndex){this.depthIndex=e.data.depthIndex;let t=this.depthIndex.length,n=this.ensureSplatIndexCapacity(t);n.array.set(this.depthIndex,0),n.count=this.depthIndex.length,n.updateRange.offset=0,n.updateRange.count=t,n.needsUpdate=!0,this.geometry.instanceCount=this.depthIndex.length,this.needsRender=!0}}}ensureSplatIndexCapacity(e){let t=this.geometry.getAttribute(`splatIndex`);if(e<=this.splatIndexCapacity)return t;let n=this.getExpandedCapacity(e),r=t.array,i=new Int32Array(n);i.set(r.subarray(0,Math.min(r.length,n)));let a=new c.InstancedBufferAttribute(i,1,!1,1);return a.setUsage(c.DynamicDrawUsage),this.geometry.setAttribute(`splatIndex`,a),this.splatIndexCapacity=n,this.geometry._maxInstanceCount=n,a}getExpandedCapacity(e){let t=Math.max(this.splatIndexCapacity,1);for(;t<e;)t*=2;return t}createGeometry(){let e=new c.InstancedBufferGeometry,t=new Float32Array([-1,-1,0,1,-1,0,1,1,0,-1,1,0]);e.setAttribute(`position`,new c.BufferAttribute(t,3));let n=new Uint16Array([0,1,2,0,2,3]);e.setIndex(new c.BufferAttribute(n,1)),this.splatIndexCapacity=1;let r=new Int32Array(this.splatIndexCapacity);for(let e=0;e<r.length;e++)r[e]=e;let i=new c.InstancedBufferAttribute(r,1,!1,1);return i.setUsage(c.DynamicDrawUsage),e.setAttribute(`splatIndex`,i),e._maxInstanceCount=this.splatIndexCapacity,e.instanceCount=0,e}createMaterial(){return new c.ShaderMaterial({vertexShader:vy,fragmentShader:yy,uniforms:{u_texture:{value:null},u_transforms:{value:null},u_transformIndices:{value:null},u_shTexture:{value:null},u_shTextureSize:{value:new c.Vector2},u_maxShDegree:{value:0},resolution:{value:new c.Vector2}},side:c.DoubleSide,transparent:!0,blending:c.NormalBlending,depthTest:!0,depthWrite:!1})}createTextures(){this.renderData&&(this.dataTexture=new c.DataTexture(this.renderData.data,this.renderData.width,this.renderData.height,c.RGBAIntegerFormat,c.UnsignedIntType),this.dataTexture.internalFormat=`RGBA32UI`,this.dataTexture.minFilter=c.NearestFilter,this.dataTexture.magFilter=c.NearestFilter,this.dataTexture.needsUpdate=!0,this.transformsTexture=new c.DataTexture(this.renderData.transforms,this.renderData.transformsWidth,this.renderData.transformsHeight,c.RGBAFormat,c.FloatType),this.transformsTexture.internalFormat=`RGBA32F`,this.transformsTexture.minFilter=c.NearestFilter,this.transformsTexture.magFilter=c.NearestFilter,this.transformsTexture.needsUpdate=!0,this.transformIndicesTexture=new c.DataTexture(this.renderData.transformIndices,this.renderData.transformIndicesWidth,this.renderData.transformIndicesHeight,c.RedIntegerFormat,c.UnsignedIntType),this.transformIndicesTexture.internalFormat=`R32UI`,this.transformIndicesTexture.minFilter=c.NearestFilter,this.transformIndicesTexture.magFilter=c.NearestFilter,this.transformIndicesTexture.needsUpdate=!0,this.material.uniforms.u_texture.value=this.dataTexture,this.material.uniforms.u_transforms.value=this.transformsTexture,this.material.uniforms.u_transformIndices.value=this.transformIndicesTexture,this.usedSHDegree>0&&this.renderData.maxShDegree>0&&this.createSHTexture())}createSHTexture(){if(!this.renderData)return;this.shTexture&&(this.shTexture.dispose(),this.shTexture=null);let e=Math.min(this.usedSHDegree,this.renderData.maxShDegree),t=0;if(e>=1&&(t+=9),e>=2&&(t+=15),e>=3&&(t+=21),t===0)return;let n=t;n%4!=0&&(n=Math.ceil(n/4)*4);let r=this.renderData.numPoints*n/4,i=2048,a=Math.ceil(r/i),o=new Float32Array(i*a*4);for(let t=0;t<this.renderData.numPoints;t++){let r=n/4*t,i=0;if(this.renderData.sh1&&e>=1)for(let e=0;e<9;e++){let n=r+Math.floor(i/4),a=i%4,s=n*4+a;o[s]=this.renderData.sh1[t*9+e],i++}if(this.renderData.sh2&&e>=2)for(let e=0;e<15;e++){let n=r+Math.floor(i/4),a=i%4,s=n*4+a;o[s]=this.renderData.sh2[t*15+e],i++}if(this.renderData.sh3&&e>=3)for(let e=0;e<21;e++){let n=r+Math.floor(i/4),a=i%4,s=n*4+a;o[s]=this.renderData.sh3[t*21+e],i++}}this.shTexture=new c.DataTexture(o,i,a,c.RGBAFormat,c.FloatType),this.shTexture.internalFormat=`RGBA32F`,this.shTexture.minFilter=c.NearestFilter,this.shTexture.magFilter=c.NearestFilter,this.shTexture.needsUpdate=!0,this.material.uniforms.u_shTexture.value=this.shTexture,this.material.uniforms.u_shTextureSize.value.set(i,a),this.material.uniforms.u_maxShDegree.value=e}setMaxShDegree(e){if(e<0||e>2){console.warn(`现在只支持012三种阶数,你输入的是${e}`);return}let t=this.usedSHDegree;this.usedSHDegree=e,t!==e&&(this.shTexture&&(this.shTexture.dispose(),this.shTexture=null),this.material.uniforms.u_maxShDegree.value=e,e===0?this.material.uniforms.u_shTexture.value=null:this.renderData&&this.renderData.maxShDegree>0&&this.createSHTexture())}collectObjects(e){let t=[];return e.traverse(e=>{e instanceof Yn&&e.visible&&t.push(e)}),t}isSceneNeedsRebuild(e){let t=e.reduce((e,t)=>e+t.uuid,``),n=t!==this.gsSceneState.lastObjectsHash;return this.gsSceneState.lastObjectsHash=t,n}dispose(){this.renderData&&this.renderData.dispose(),this.sortWorker&&this.sortWorker.terminate(),this.dataTexture&&this.dataTexture.dispose(),this.transformsTexture&&this.transformsTexture.dispose(),this.transformIndicesTexture&&this.transformIndicesTexture.dispose(),this.shTexture&&this.shTexture.dispose(),this.geometry.dispose(),this.material.dispose()}},xy=1e3,Sy=90,Cy=e=>e.replace(`//vrlab-public.ljcdn.com/`,`//vr-public.realsee-cdn.cn/`).replace(`//vrlab-image4.ljcdn.com/`,`//vr-image-4.realsee-cdn.cn/`).replace(`//vrlab-image3.ljcdn.com/`,`//vr-image-3.realsee-cdn.cn/`).replace(`//vrlab-image2.ljcdn.com/`,`//vr-image-2.realsee-cdn.cn/`).replace(`//vrlab-image1.ljcdn.com/`,`//vr-image-1.realsee-cdn.cn/`),wy=new c.Sphere,Ty=new c.Box3,Ey=new c.Vector4,Dy=new c.Vector4,Oy=new c.Color,ky=new c.Vector2,Ay=new WeakMap,jy=nm([$p(null)]),My={},Ny=class e extends cn{static get version(){return`6.8.0-alpha.19`}static get dracoPath(){return eo.decoderPath}static set dracoPath(e){eo.setDecoderPath(e)}static get ktx2Path(){return co.transcoderPath}static set ktx2Path(e){co.setTranscoderPath(e)}static get useNativeImageBitmap(){return si()}static set useNativeImageBitmap(e){oi(e)}constructor(e={}){var t,n,r,i,a,o,s,l,u,d,f;if(super(),this.pbmGSRenderMesh=null,this.fiveId=nn(),My[this.fiveId]=this,this.currentUpdateArgs={time:U(),args:[]},this.currentMode=`Panorama`,this.pano={workCode:``,panoIndex:0},this.needsRender=!1,this.onlyRenderIfNeeds=(t=e.onlyRenderIfNeeds)==null?!0:t,this.imageOptions=Object.assign({},(n=e.imageOptions)==null?{}:n),this.textureOptions=Object.assign({},(r=e.textureOptions)==null?{}:r),this.poweredByRealsee=(i=e.poweredByRealsee)==null?!0:i,this.backgroundColor=new c.Color((a=e.backgroundColor)==null?1579548:a),this.backgroundAlpha=(o=e.backgroundAlpha)==null?1:o,this.extraElements=[],this.controllerInits={Panorama:Object.assign({},e.panorama),Model:Object.assign({},e.model),Floorplan:Object.assign({},e.floorplan),Topview:Object.assign({},e.topview),Mapview:Object.assign({},e.mapview),VRPanorama:Object.assign({},e.vrPanorama),XRPanorama:Object.assign({},e.xrPanorama)},this.fps={testCount:0,testTime:U()},this.modeChangeDuration=(s=e.modeChangeDuration)==null?xy:s,this.enableWheel=(l=e.enableWheel)==null?!0:l,typeof window<`u`)if(`renderer`in e)e.renderer instanceof Ym&&this.throwError(Error(`cannot render a internal renderer`)),this.renderer=e.renderer;else try{this.renderer=new Ym({preserveDrawingBuffer:e.preserveDrawingBuffer,antialias:e.antialias,webgl2:e.webgl2,logarithmicDepthBuffer:e.logarithmicDepthBuffer,precision:e.precision,powerPreference:e.powerPreference});let t=Kv();this.renderer.setPixelRatio(t===1?window.devicePixelRatio:1),this.renderer.setSize(512,512),this.renderer.setClearColor(this.backgroundColor,this.backgroundAlpha)}catch(e){let t=e instanceof Error?e:Error(String(e));this.throwError(t)}this.getPixelsRenderTarget=new c.WebGLRenderTarget(1,1,{encoding:(d=(u=this.renderer)==null?void 0:u.outputEncoding)==null?c.sRGBEncoding:d,generateMipmaps:!1}),this.viewport=Object.assign({left:0,bottom:0,width:1,height:1},e.viewport),this.camera=new en(Sy),this.scene=new nh,this.xrCustomObjectsScene=new c.Scene,this.scene.add(this.xrCustomObjectsScene),this.scene.matrixAutoUpdate=!1,this.requestProxy=(f=e.requestProxy)==null?Cy:f,this.networkSubscribe=new sr,this.networkSubscribe.on(`network`,(e,t,n,r)=>{var i;this.emit(`network.resource`,$(`network.resource`,{source:e,requestType:t,requestState:n,detail:r})),(i=this.analysis)==null||i.network(this.works,e,t,n,r)}),this.readyCallbacks=[],this.syncingState=!1,this.helperGroup=new c.Group,this.helperGroup.name=`helper`,this.helperGroup.matrixAutoUpdate=!1,this.scene.add(this.helperGroup),Ay.set(this,jy),this.modelScene=new qf({fiveId:this.fiveId}),this.modelScene.addEventListener(`model.create`,e=>{this.bindModel(e.model)}),this.scene.add(this.modelScene);let[p]=this.modelScene.setModels(jy,{forceReplaceImmediately:!0});H(p,`loaded`,{get(){return!1},set(e){}}),this.videoTexture=new c.VideoTexture(e.videoInstance||Uv());let m=Wv();this.scene.add(m),this.state={mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance},this.stateSynced=!1,this.destroyed=!1,this.paused=!0,typeof window<`u`&&(e.play!==!1&&this.play(),this.stopAnimationLoop=ri.shared.add((e,t,...n)=>{this.updateTime(e,t,...n)},!1,0,10));let h=()=>{typeof document<`u`&&document.fullscreenElement===null&&this.currentMode===`VRPanorama`&&this.controller.emit(`vr.requestExit`,$(`vr.requestExit`,{}))},g=()=>{this.needsRender=!0};if(typeof document<`u`&&document.addEventListener(`fullscreenchange`,h,!1),this.renderer&&this.renderer.domElement.addEventListener(`webglcontextrestored`,g,!1),this.removeEventListeners=()=>{typeof document<`u`&&document.removeEventListener(`fullscreenchange`,h,!1),this.renderer&&this.renderer.domElement.removeEventListener(`webglcontextrestored`,g,!1)},this.loadWorkTask=this.prepare(),this.plugins={},e.plugins&&e.plugins.length){for(let t of e.plugins)if(typeof t==`function`)t(this);else if(Array.isArray(t)){let[e,n,r]=t;if(typeof e==`function`){let t=e(this,r);typeof n==`string`&&(this.plugins[n]?this.throwError(Error(`plugin name ${n} is exists.`)):this.plugins[n]=t)}}}Hv(this),this.fiveRenderer=new Jm,this.adaptiveLuminancePass=new Dm,this.adaptiveLuminancePass.enabled=!1,this.fiveRenderer.composer.addPass(this.adaptiveLuminancePass),this.eyeDomeLightingPass=new Am(this.camera),this.eyeDomeLightingPass.enabled=!1,this.fiveRenderer.composer.addPass(this.eyeDomeLightingPass),e.webgl2?(this.pbmGSRenderMesh=new by,this.scene.add(this.pbmGSRenderMesh)):console.warn(`未开启webgl2,3dgs功能不可用`)}get ident(){return this.fiveId}get panoIndex(){return this.pano.panoIndex}prepare(){return Promise.all([kr().catch(q)]).then(q)}dispose(){var e;if(this.destroyed===!0)return;delete My[this.fiveId],this.emit(`dispose`),this.destroyed=!0,this.pause(),this.stopAnimationLoop&&(this.stopAnimationLoop(),this.stopAnimationLoop=void 0),this.off(),this.networkSubscribe.off(),this.controller&&(this.controller.destroy(),this.controller=void 0);let t=this.getElement();t&&t.parentNode&&t.parentNode.removeChild(t);let n=this.modelScene.parameter;n.pano0&&n.pano0.map.dispose(),n.pano1&&n.pano1.map!==((e=n.pano0)==null?void 0:e.map)&&n.pano1.map.dispose(),n.reset(`pano0`,`pano1`),this.modelScene.dispose(),this.scene.dispose(),this.xrCustomObjectsScene.dispose(),Ay.set(this,jy),this.renderer&&this.renderer.render(new c.Scene,new c.Camera),this.fiveRenderer.dispose(),this.renderer instanceof Ym&&(this.renderer.forceContextLoss&&this.renderer.forceContextLoss(),this.renderer.dispose())}setViewport(e){Object.assign(this.viewport,e),this.needsRender=!0}get boundingMesh(){return this.modelScene.boundingMesh}get helperVisible(){return this.helperGroup.visible}set helperVisible(e){this.helperGroup.visible!==e&&(this.helperGroup.visible=e,this.emit(`helpers.visible`,$(`helpers.visible`,{object:this.helperGroup})),this.needsRender=!0)}updateConfiguration(e,t=!0){let n=!1,r=!1;e.panorama&&(Object.assign(this.controllerInits.Panorama,gr(e.panorama)),this.currentMode===`Panorama`&&(n=!0)),e.model&&(Object.assign(this.controllerInits.Model,gr(e.model)),this.currentMode===`Model`&&(n=!0)),e.floorplan&&(Object.assign(this.controllerInits.Floorplan,gr(e.floorplan)),this.currentMode===`Floorplan`&&(n=!0)),e.topview&&(Object.assign(this.controllerInits.Topview,gr(e.topview)),this.currentMode===`Topview`&&(n=!0)),e.mapview&&(Object.assign(this.controllerInits.Mapview,gr(e.mapview)),this.currentMode===`Mapview`&&(n=!0)),e.vrPanorama&&(Object.assign(this.controllerInits.VRPanorama,gr(e.vrPanorama)),this.currentMode===`VRPanorama`&&(n=!0)),e.imageOptions&&(Object.assign(this.imageOptions,e.imageOptions),(this.currentMode===`Panorama`||this.currentMode===`VRPanorama`)&&(r=!0,n=!0)),e.textureOptions&&Object.assign(this.textureOptions,e.textureOptions),t&&n&&this.controller&&this.currentMode&&(!this.controller.updateConfiguration(this.controllerInits[this.currentMode])||r)&&this.changeMode(this.currentMode,this.getCurrentState(),0,!1,!0)}appendTo(e,t={}){if(!this.renderer)return;if(!(this.renderer instanceof Ym)){this.throwError(Error(`cannot call appendTo method when render a external renderer`));return}let n=this.getElement();if(!n)return;e.appendChild(n),this.refresh(t);let r=window.getComputedStyle(e).position;r!==`relative`&&r!==`absolute`&&r!==`fixed`&&r!==`sticky`&&(e.style.position=`relative`)}refresh(e={},t){var n,r,i;if(!this.renderer)return;let a=this.renderer.domElement.parentNode,{width:o=(n=a==null?void 0:a.offsetWidth)==null?512:n,height:s=(r=a==null?void 0:a.offsetHeight)==null?512:r}=e;if(o=Math.max(1,o),s=Math.max(1,s),!t){let e=Kv(),n=typeof window<`u`?window.devicePixelRatio:1;if(t=(i=e===1?n:1)==null?1:i,t>1){let e=Math.max(o,s)*t,n=Math.min(this.renderer.capabilities.maxTextureSize,4096);e>n&&(t=Math.max(t/e*n,1),t=Math.floor(t*100)/100)}}this.renderer.setPixelRatio(t),this.renderer.setSize(o,s),this.needsRender=!0;let c=U(),l=c-this.currentUpdateArgs.time,u=this.currentUpdateArgs.args;this.updateTime(c,l,...u)}addExtraElement(e){return this.extraElements.indexOf(e)===-1&&(this.extraElements.push(e),this.controller&&this.controller.bindExtraElement(e)),()=>this.removeExtraElement(e)}removeExtraElement(e){let t=this.extraElements.indexOf(e);t!==-1&&(this.extraElements.splice(t,1),this.controller&&this.controller.unbindExtraElement(e))}getSize(e){if(!this.renderer)throw Error(`renderer is not initialized`);return this.renderer.getSize(e),e.x*=this.viewport.width,e.y*=this.viewport.height,e}getDrawingBufferSize(e){if(!this.renderer)throw Error(`renderer is not initialized`);return this.renderer.getDrawingBufferSize(e),e.x*=this.viewport.width,e.y*=this.viewport.height,e}updateCamera(e,t,n=!0){if(!this.controller)throw Error(`controller is not initialized.`);return this.controller.updateCamera(e,t,n)}updateCameraWithKeyframes(e,t,n=!0){if(!this.controller)throw Error(`controller is not initialized.`);return this.controller.updateCameraWithKeyframes(e,t,n)}get works(){return Ay.get(this)||jy}get work(){return this.works[0]}get observers(){return this.work.observers}get models(){return this.modelScene.models}get model(){return this.modelScene.models[0]}load(e,t,n,r=!0){if(!this.renderer)throw Error(`renderer is not initialized`);let i=this.loadWorkTask.then(()=>Sh(e)?e.then(e=>this.load_(e,t,n,r)):this.load_(e,t,n,r));return this.loadWorkTask=i.catch(e=>{this.throwError(e)}),i}load_(t,n,r,i=!0){var a,o,s,l,u,d,f,p,m,h;let g={};typeof r==`number`?g.duration=r:typeof r==`object`&&Object.assign(g,r),this.works===jy&&(g.duration===void 0&&(g.duration=0),g.effect===void 0&&(g.effect=`instant`));let _={};Object.assign(_,g.model),!_[`3d-tiles`]&&g[`3d-tiles`]&&(_[`3d-tiles`]=g[`3d-tiles`]),!_.textureOptions&&g.textureOptions&&(_.textureOptions=g.textureOptions),!_.textureOptions&&this.textureOptions&&(_.textureOptions=this.textureOptions);let v=[];if(Array.isArray(t))for(let e of t)e instanceof Qp?v.push(e):typeof e!=`string`&&`work`in e?v.push($p(e.work,e)):v.push($p(e));else t instanceof Qp?v.push(t):v.push($p(t));g.mode===`add`&&(v=[].concat(this.works,v));let y;try{y=nm(v)}catch(e){return this.throwError(e),Promise.reject(e)}for(let e of y)this.bindWorkFetcher(e);n===void 0&&(n=`inherit`),n===`inherit`&&this.works===jy&&(n=`initial`);let b=this.currentMode,x=y.initial,S=x.work.observers[0],C=S?{workCode:S.work.workCode,panoIndex:S.panoIndex}:{workCode:x.work.workCode,panoIndex:0},w=(a=x.mode)==null?S?`Panorama`:`Mapview`:a,T={};if(n===`inherit`){let e=this.getCurrentState(),[t]=y.filter(t=>t.workCode===e.workCode);if(t)C={workCode:e.workCode,panoIndex:e.panoIndex},w=e.mode,T={longitude:e.latitude,latitude:e.latitude,fov:e.fov,distance:e.distance,offset:e.offset.clone()};else{n={mode:b};let e=(s=(o=y[0])==null?void 0:o.observers)==null?void 0:s[this.panoIndex];e?(n.workCode=e.work.workCode,n.panoIndex=e.panoIndex):typeof y.initial.panoIndex==`number`?(n.workCode=y.initial.work.workCode,n.panoIndex=y.initial.panoIndex):(n.mode===`Panorama`||n.mode===`VRPanorama`||n.mode===`XRPanorama`)&&(n.mode=`Mapview`),n.mode===b&&(n.longitude=this.camera.pose.longitude,n.latitude=this.camera.pose.latitude,n.fov=this.camera.pose.fov)}}if(n===`initial`&&(typeof x.panoIndex==`number`&&(C={workCode:x.work.workCode,panoIndex:x.panoIndex}),x.mode&&(w=x.mode),T={longitude:x.longitude,latitude:x.latitude,fov:x.fov,distance:x.distance,offset:(l=x.offset)==null?void 0:l.clone()}),typeof n==`object`){if(w=(u=n.mode)==null?b:u,typeof n.panoIndex==`number`){let e=y.getObserver({workCode:(f=(d=n.workCode)==null?x.work.workCode:d)==null?``:f,panoIndex:n.panoIndex});e&&(C={workCode:e.work.workCode,panoIndex:e.panoIndex})}T={longitude:n.longitude,latitude:n.latitude,fov:n.fov,distance:n.distance,offset:n.offset?new c.Vector3().copy(n.offset):void 0}}let E=(p=g.duration)==null?this.modeChangeDuration:p;(w===`Floorplan`||w===`Topview`||w===`Mapview`)&&b===w&&(E=0);let D=`fly`;(w===`Panorama`||w===`VRPanorama`||w===`XRPanorama`)&&b===w&&(D=(m=g.effect)==null?`fade`:m),this.emit(`works.request`,$(`works.request`,{input:t,works:y,userAction:i}));let O=(e,t,r)=>{let a=this.getCurrentState(),o=Object.assign(Object.assign({mode:e},t),r);n===`inherit`&&(o=this.getCurrentState()),this.pano=t;let s=Object.assign(Object.assign({initial:{state:o,currentState:a,duration:E,effect:D,userAction:i}},this.commonParams()),this.controllerInits[e]),c=zv[o.mode].initAnimationEndState(s);if(this.controller&&b===e)this.controller.updateWork(y,c,{effect:D,duration:E},i)===!1&&(this.controller.destroy(),this.controller=this.applyController(e,s));else{if(this.controller)this.controller.destroy();else{let t=zv[e].initAnimationEndState(s);this.camera.setFromPose(t),this.emit(`camera.update`,$(`camera.update`,{state:this.getCurrentState(),userAction:i}))}this.controller=this.applyController(e,s);let t=$(`mode.change`,{prevMode:b,mode:e,state:c,userAction:i});try{this.emit(`mode.change`,t)}catch(e){console.error(e)}}this.updateTime(this.currentUpdateArgs.time,0,...this.currentUpdateArgs.args)};Ay.set(this,y);let k=Promise.resolve();if(w===e.Mode.Floorplan||w===e.Mode.Topview||w===e.Mode.Mapview||w===e.Mode.Model){this.modelScene.loaded===!1&&(this.camera.setFromPose(T),Ah(this.state,this.camera.pose));let e=this.modelScene.setModels(y,_);k=Promise.all(e.map(e=>e.loadedReady)).then(()=>{this.needsRender=!0,O(w,C,T),this.emit(`camera.update`,$(`camera.update`,{state:this.getCurrentState(),userAction:i}))})}else{O(w,C,T);let e=this.controller,t=!1;this.modelScene.autoRefine=!1;let n=()=>{this.works===y&&t===!1&&(this.needsRender=!0,this.emit(`camera.update`,$(`camera.update`,{state:this.getCurrentState(),userAction:i})),t=!0,this.modelScene.autoRefine=!0),e.off(`pano.arrived`,n),e.off(`pano.cancel`,n)},r=this.modelScene.setModels(y,_);k=Promise.all(r.map(e=>e.initReady)).then(q),e.once(`pano.arrived`,n),e.once(`pano.cancel`,n),setTimeout(n,((h=g.duration)==null?this.modeChangeDuration:h)+1e3)}return this.emit(`works.load`,$(`works.load`,{input:t,userAction:i,works:y})),k.then(()=>this.ready()).then(()=>{var e;this.emit(`works.ready`,$(`works.ready`,{input:t,userAction:i,works:y})),(e=this.analysis)==null||e.work(y)})}reset(){let e=this.loadWorkTask.then(()=>this.reset_());return this.loadWorkTask=e.catch(e=>{this.throwError(e)}),e}reset_(){return new Promise(e=>{var t;this.controller&&(this.controller.destroy(),this.controller=void 0);let n=this.modelScene.parameter;n.pano0&&n.pano0.map.dispose(),n.pano1&&n.pano1.map!==((t=n.pano0)==null?void 0:t.map)&&n.pano1.map.dispose(),n.set({pano0:null,pano1:null,modelAlpha:1}),Ay.set(this,jy),this.modelScene.setModels(jy,{forceReplaceImmediately:!0}),this.renderer&&this.modelScene.update(this.renderer,this.camera),this.needsRender=!0,this.currentMode=`Panorama`,this.pano={workCode:``,panoIndex:0},this.camera.setFromPose({distance:0,fov:Sy,longitude:0,latitude:0,offset:new c.Vector3(0,0,0)}),this.state={mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance},this.camera.needsRender=!1,this.needsRender=!1,e()})}changeMode(t,n={},r,i=!0,a=!1){return new Promise((o,s)=>{var c,l,u,d;if(!this.renderer)throw Error(`renderer is not initialized.`);n=Object.assign({},n);let f=0;this.controller&&(f=typeof r==`number`?r:(c=r==null?void 0:r.duration)==null?this.modeChangeDuration:c);let p=`fly`;this.controller&&typeof r==`object`&&r.effect&&(p=r.effect);let m=typeof n.panoIndex==`number`?{workCode:(d=(l=n.workCode)==null?(u=this.work)==null?void 0:u.workCode:l)==null?``:d,panoIndex:n.panoIndex}:this.pano;if(!e.Mode.hasOwnProperty(t)){let e=Error(`mode "${t}" is not existed`);this.throwError(e),s(e);return}if((t===e.Mode.Panorama||t===e.Mode.VRPanorama||t===e.Mode.XRPanorama)&&!this.works.getObserver(m)){let e=Error(`PanoId ${Q(m)} not existed.`);this.throwError(e),s(e);return}(t===e.Mode.Floorplan||t===e.Mode.Topview||t===e.Mode.Mapview||t===e.Mode.Model)&&this.modelScene.empty&&(f=0);let h=this.controller,g=this.currentMode,_=()=>{if(this.controller&&this.controller.stopMomentumMovement(),this.controller&&a===!1&&g===t)t===e.Mode.Panorama||t===e.Mode.Model||t===e.Mode.VRPanorama||t===e.Mode.XRPanorama?!gp(this.pano,m)&&`moveToPano`in this.controller&&typeof this.controller.moveToPano==`function`?this.controller.moveToPano(m,Object.assign({duration:f},n),i):this.controller.updateCamera(n,f,i).catch(q):(gp(this.pano,m)||(this.pano=m),this.controller.updateCamera(n,f,i).catch(q));else{let e=Object.assign(Object.assign({},n),m),r=Object.assign(Object.assign({initial:{state:e,currentState:this.getCurrentState(),duration:f,effect:p,userAction:i}},this.commonParams()),this.controllerInits[t]),a=zv[t].initAnimationEndState(r),o=$(`mode.change.request`,{prevMode:this.currentMode,mode:t,state:a,userAction:i});if(this.emit(`mode.change.request`,o),!o.defaultPrevented){h&&h.destroy(),this.controller=this.applyController(t,r);let e=$(`mode.change`,{prevMode:this.currentMode,mode:t,state:a,userAction:i});this.emit(`mode.change`,e)}}o()},v=ri.shared.getContext();v&&(typeof XRSession<`u`&&v instanceof XRSession&&v.end(),ri.shared.setContext(null)),t===e.Mode.VRPanorama?(this.requestFullscreen(),Eh().then(()=>_()).catch(e=>{let t=e instanceof Error?e:Error(String(e));this.exitFullscreen(),this.throwError(t),s(t)})):t===e.Mode.XRPanorama?Dh().then(e=>{ri.shared.setContext(e),a=!0,_()}).catch(e=>{let t=e instanceof Error?e:Error(String(e));this.throwError(t),s(t)}):_()})}getPixels(e,t,n,r,i,a,o){if(!this.renderer)throw Error(`renderer is not initialized.`);let s=U(),l=this.renderer.getPixelRatio(),u=this.renderer.getRenderTarget(),d=this.getSize(new c.Vector2),f=0,p=0,m=1,h=1,g,_,v,y,b;typeof e==`number`?(f=e,typeof t==`number`&&(p=t),typeof n==`number`&&(m=n),typeof r==`number`&&(h=r),g=i,_=a,b=o):(f=e.x,p=e.y,m=e.width,h=e.height,g=e.pixelRatio,_=e.flipY,v=e.helperVisible,y=e.skipPanorama,b=e.buffer),f=Math.floor(f),p=Math.floor(p),m=Math.floor(m),h=Math.floor(h),g=Math.floor(g==null?l:g),_=_==null?!1:_;let x=this.helperVisible,S=this.modelScene.parameter.modelAlpha;this.helperVisible=v==null?this.helperVisible:v,y&&(this.controller instanceof zv.Panorama||this.controller instanceof zv.VRPanorama||this.controller instanceof zv.XRPanorama)&&y===!0&&this.modelScene.parameter.set(`modelAlpha`,1),this.modelScene.update(this.renderer,this.camera);let C=this.getPixelsRenderTarget;C.setSize(m*g,h*g),this.renderer.setRenderTarget(C),this.camera.pixelRatio=g,this.camera.resolution.set(m,h),this.camera.setViewOffset(d.width,d.height,f,d.height-p-h,m,h),this.camera.aspect=d.width/d.height,this.camera.updateTime(s),this.scene.update(this.renderer,this.camera);let w=this.renderer.autoClear,T=this.renderer.autoClearColor,E=this.renderer.autoClearDepth,D=this.renderer.autoClearStencil,O=Oy.copy(this.renderer.getClearColor()),k=this.renderer.getClearAlpha(),A=this.renderer.getScissorTest();this.renderer.autoClear=!0,this.renderer.autoClearColor=!0,this.renderer.autoClearDepth=!0,this.renderer.autoClearStencil=!0,this.renderer.setScissorTest(!1);let j=this.scene.background;this.scene.background=this.camera.isOrthographicCamera?null:j,this.renderer.render(this.scene,this.camera),this.scene.background=j,this.renderer.autoClear=w,this.renderer.autoClearColor=T,this.renderer.autoClearDepth=E,this.renderer.autoClearStencil=D,this.renderer.setClearColor(O,k),this.renderer.setScissorTest(A),this.helperVisible=x,S===void 0?this.modelScene.parameter.reset(`modelAlpha`):this.modelScene.parameter.set(`modelAlpha`,S),this.renderer.setRenderTarget(u),this.camera.clearViewOffset(),this.camera.pixelRatio=l,this.camera.resolution.copy(d),this.camera.aspect=this.camera.resolution.width/this.camera.resolution.height,this.camera.updateTime(s),this.modelScene.update(this.renderer,this.camera),this.scene.update(this.renderer,this.camera);let M=m*g,N=h*g,ee=M*N,P=ee*4;if(b){if(b.length!==P)throw Error(`buffer length is not equals pixels ${P}`)}else b=new Uint8Array(P);if(this.renderer.readRenderTargetPixels(C,0,0,m*g,h*g,b),_){let e=ee/2;for(let t=0,n=0,r=0,i=0;n<e;n++)for(i=(N-Math.floor(n/M)-1)*M+n%M,r=0;r<4;r++)t=b[n*4+r],b[n*4+r]=b[i*4+r],b[i*4+r]=t}return b}getElement(){var e;return(e=this.renderer)==null?void 0:e.domElement}render(e){let t=this.renderer;if(!t)return;let n=t.getRenderTarget();t.setRenderTarget(null);let r=t.autoClear,i=t.autoClearColor,a=t.autoClearDepth,o=t.autoClearStencil,s=Oy.copy(t.getClearColor()),c=t.getClearAlpha(),l=t.getViewport(Ey),u=t.getScissor(Dy),d=t.getScissorTest();t.autoClear=!0,t.autoClearColor=!0,t.autoClearDepth=!0,t.autoClearStencil=!0;let f=t.getSize(ky),p=Math.floor(f.x*this.viewport.left),m=Math.floor(f.y*this.viewport.bottom),h=Math.floor(f.x*this.viewport.width),g=Math.floor(f.y*this.viewport.height);t.setClearColor(this.backgroundColor,this.backgroundAlpha),t.setViewport(p,m,h,g),t.setScissor(p,m,h,g);let _=this.viewport.bottom!==0||this.viewport.left!==0||this.viewport.width!==1||this.viewport.height!==1;t.setScissorTest(_);let v=this.scene.background;this.scene.background=this.camera.isOrthographicCamera?null:v;let y=!0;if(this.controller&&this.controller.render()&&(y=!1),y){let e=this.fiveRenderer.render(t,this.scene,this.modelScene,this.camera,this.needsRender);this.poweredByRealsee&&e&&oy(t)}this.scene.background=v,t.autoClear=r,t.autoClearColor=i,t.autoClearDepth=a,t.autoClearStencil=o,t.setClearColor(s,c),t.setViewport(l),t.setScissor(u),t.setScissorTest(d),t.setRenderTarget(n),e&&ri.shared.add(e,!0)}updateTime(e,t,...n){if(this.currentUpdateArgs={time:e,args:n},this.destroyed)return;if(this.renderer&&co.detectSupport(this.renderer),this.syncingState=this.syncState(e,t),this.controller&&this.controller.updateTime(e,t,...n),this.renderer&&(this.camera.pixelRatio=this.renderer.getPixelRatio(),this.getSize(this.camera.resolution),this.camera.aspect=this.camera.resolution.width/this.camera.resolution.height),this.camera.controllerMode=this.currentMode,this.camera.updateTime(e),this.renderer){let e=this.modelScene.loaded,t=this.modelScene.refined;this.modelScene.update(this.renderer,this.camera),e===!1&&this.modelScene.loaded===!0&&(this.controller&&this.controller.updateModel(this.modelScene),ri.shared.add(()=>{this.emit(`models.load`,$(`models.load`,{modelScene:this.modelScene}))},!0,0,10)),t===!1&&this.modelScene.refined===!0&&ri.shared.add(()=>{this.emit(`models.refined`,$(`models.refined`,{modelScene:this.modelScene}))},!0,0,10)}if(this.camera.autoNearFar){Ty.makeEmpty(),Ty.expandByObject(this.modelScene.boundingMesh);let t=Ty.getBoundingSphere(wy),n=t.radius*2;t.containsPoint(this.camera.position)||(n=this.camera.position.distanceTo(t.center)+t.radius);let r=W(n/500,.001,.1),i=W(n,800);this.camera.near!==r&&(this.camera.near=r),this.camera.far!==i&&(this.camera.far=i),this.camera.updateTime(e)}if(this.renderer){let e=this.modelScene.visible;this.modelScene.visible=!1,this.scene.update(this.renderer,this.camera),this.modelScene.visible=e}if(this.syncingState=!1,this.controller&&this.controller.needsRender===!0&&(this.controller.needsRender=!1,this.needsRender=!0),this.camera.needsRender===!0&&(this.camera.needsRender=!1,this.needsRender=!0),this.modelScene.needsRender===!0&&(this.modelScene.needsRender=!1,this.needsRender=!0),this.scene.needsRender===!0&&(this.scene.needsRender=!1,this.needsRender=!0),this.pbmGSRenderMesh&&this.pbmGSRenderMesh.needsRender===!0&&(this.pbmGSRenderMesh.needsRender=!1,this.needsRender=!0),this.onlyRenderIfNeeds!==!0&&(this.needsRender=!0),this.paused===!0)return;let r=$(`render.prepare`,{needsRender:this.needsRender});this.emit(`render.prepare`,r),r.defaultPrevented&&(this.needsRender=!1);let i=this.needsRender;this.render(),this.needsRender=!1,this.emit(`render`,$(`render`,{needsRender:i})),this.hasListener(`fps`)&&(this.fps.testTime&&e-this.fps.testTime<1e3?this.fps.testCount++:(this.emit(`fps`,this.fps.testCount),this.fps.testTime=e,this.fps.testCount=0))}pause(){this.paused=!0,this.renderer&&this.renderer instanceof Ym&&this.renderer.clear(!0,!0,!0)}play(){this.needsRender=!0,this.paused=!1}moveToPano(t,n={},r=!0){let{controller:i,renderer:a}=this;if(!i)return this.throwError(Error(`controller is not initialized.`)),Promise.resolve();if(!a)return this.throwError(Error(`renderer is not initialized.`)),Promise.resolve();typeof t==`number`&&this.pano.workCode&&(t={workCode:this.pano.workCode,panoIndex:t});let o=this.works.getObserver(t);if(!o)return this.throwError(Error(`pano ${JSON.stringify(t)} not existed.`)),Promise.resolve();let s={workCode:o.work.workCode,panoIndex:o.panoIndex};return`moveToPano`in i&&typeof i.moveToPano==`function`?i.moveToPano(s,n,r):o&&(this.pano=s,this.once(`initAnimation.start`,e=>{n.moveStartCallback&&n.moveStartCallback(e.state)}),this.once(`initAnimation.end`,e=>{n.moveEndCallback&&n.moveEndCallback(e.state)}),this.changeMode(e.Mode.Panorama,n,{effect:n.effect},r)),this.ready()}preloadPano(e,t=q){let n=this.works.getObserver(e);if(!n)return Promise.reject(Error(`Pano ${JSON.stringify(e)} never found`));let r=[`right`,`left`,`up`,`down`,`front`,`back`],i=U();return Promise.all(r.map(e=>{let t=Q({panoIndex:n.panoIndex,workCode:n.work.workCode}),r=Object.assign({key:`pano.${t}.${e}`},mr(this.imageOptions,[`size`,`format`,`quality`,`forceUseExifOrientation`,`mappings`])),i=n.work.getURL(n.images[e]),a=this.imageOptions.transform?this.imageOptions.transform(i,r):Kr(i,r);return _f(this.fiveId,n.work).preload(a)})).then(()=>{let e=U()-i;return t(e),e})}project2d(e,t=!1){if(!this.renderer)return null;if(t){let t=this.camera.position,n=e.clone().sub(t),r=new c.Raycaster(t,n.clone().normalize());r.params.Points={threshold:.1};let[i]=this.modelScene.intersectRaycaster(r);if(i&&i.distance+.01<n.length())return null}let n=e.clone().project(this.camera);if(Math.abs(n.z)>1)return null;let r=this.renderer.getSize(new c.Vector2),i=r.x*this.viewport.width,a=r.y*this.viewport.height,o=r.x*this.viewport.left+(n.x+1)/2*i,s=r.y*(1-this.viewport.bottom-this.viewport.height)+(-n.y+1)/2*a;return new c.Vector2(o,s)}getCurrentState(){return Object.assign(Object.assign({},this.camera.copyPose()),{mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex})}setState(e,t=!1,n=!0){var r,i,a,o,s,l,u,d,f,p;e=mr(e,[`mode`,`workCode`,`panoIndex`,`longitude`,`latitude`,`fov`,`offset`,`distance`]),e.offset&&!(e instanceof c.Vector3)&&(e.offset=new c.Vector3(e.offset.x,e.offset.y,e.offset.z));let m;if(typeof e.panoIndex==`number`)if(e.workCode)m={workCode:e.workCode,panoIndex:e.panoIndex};else{let t=(i=(r=this.work)==null?void 0:r.workCode)==null?``:i,n=this.state.workCode;this.works.filter(e=>e.workCode===n).length>0&&(t=n),m={workCode:t,panoIndex:e.panoIndex}}let h=(a=e.mode)==null?this.state.mode:a,g,_,v,y,b;if(this.controller&&this.controller.stopMomentumMovement(),this.state.mode!==h){if(h===`VRPanorama`){this.changeMode(`VRPanorama`,void 0,void 0,!0);return}let t={workCode:m==null?void 0:m.workCode,panoIndex:m==null?void 0:m.panoIndex};typeof e.longitude==`number`&&(t.longitude=e.longitude),typeof e.latitude==`number`&&(t.latitude=e.latitude),typeof e.fov==`number`&&(t.fov=e.fov),typeof e.distance==`number`&&(t.distance=e.distance),e.offset instanceof c.Vector3&&(t.offset=e.offset);let n=Object.assign(Object.assign({initial:{state:t,currentState:this.getCurrentState(),duration:this.modeChangeDuration,effect:`fly`,userAction:!1}},this.commonParams()),this.controllerInits[h]),r=zv[h].initAnimationEndState(n);g=r.longitude,_=r.latitude,v=r.fov,y=r.offset,b=r.distance}else g=(o=e.longitude)==null?this.state.longitude:o,_=(s=e.latitude)==null?this.state.latitude:s,v=(l=e.fov)==null?this.state.fov:l,y=(u=e.offset)==null?this.state.offset:u,b=(d=e.distance)==null?this.state.distance:d;let x={workCode:(m==null?this.pano:m).workCode,panoIndex:(m==null?this.pano:m).panoIndex,mode:h,longitude:g,latitude:_,fov:v,offset:y,distance:b};this.emit(`state.set`,$(`state.set`,{userAction:n,state:x})),kh(this.state,x)||(this.controller&&x.mode===`VRPanorama`&&x.mode!==this.state.mode?(Oh(this.state,x),this.changeMode(`VRPanorama`)):this.controller&&x.mode===`XRPanorama`&&x.mode!==this.state.mode?(Oh(this.state,x),this.changeMode(`XRPanorama`)):(Oh(this.state,x),this.controller&&n&&(this.controller.userAction=!1),t&&this.state.mode===x.mode&&(this.syncingState=this.syncState(U(),0,t),this.syncingState&&((f=this.controller)==null||f.updateTime(U(),0),this.syncingState=!1)),this.emit(`state.change`,$(`state.change`,{userAction:n,state:this.state})),(p=this.analysis)==null||p.state(this.works,this.state)))}syncState(t,n,r=!1){let i=this.stateSynced;if(this.stateSynced=!1,!this.controller)return!1;if(this.state.mode!==this.currentMode){let e={mode:this.state.mode,workCode:this.state.workCode,panoIndex:this.state.panoIndex,longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset,distance:this.state.distance};return this.changeMode(this.state.mode,e,this.modeChangeDuration,this.controller.userAction),!0}if(!this.controller.isReady())return!1;if(this.controller instanceof zv.Model){if(xh(this.camera.pose.offset,this.state.offset)){let e={longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset};return this.controller.moveToPosition(this.state.offset,Object.assign(Object.assign({},e),{duration:r?0:void 0}),!1),!0}}else{let e={workCode:this.state.workCode,panoIndex:this.state.panoIndex};if(!gp(e,this.pano)&&`moveToPano`in this.controller&&typeof this.controller.moveToPano==`function`){let t={longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset,distance:this.state.distance};return this.controller.moveToPano(e,t,!1),!0}}if(this.controller instanceof zv.Floorplan||this.controller instanceof zv.Topview||this.controller instanceof zv.Mapview){let e=.2,t=Math.PI/45,n=r?this.state.fov:bm(this.camera.pose.fov,this.state.fov,1),i=Math.abs(this.camera.pose.distance-this.state.distance),a=i>e*15?i/15:.2,o=r?this.state.distance:bm(this.camera.pose.distance,this.state.distance,a),s=this.camera.pose.offset.distanceTo(this.state.offset),l=s>e*15?s/15:e,u=r?new c.Vector3().copy(this.state.offset):xm(this.camera.pose.offset,this.state.offset,l),{longitude:d,latitude:f}=r?{longitude:this.state.longitude,latitude:this.state.latitude}:Sm({longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},{longitude:this.state.longitude,latitude:this.state.latitude},t);if(yh(n,this.camera.pose.fov)||xh(u,this.camera.pose.offset)||yh(o,this.camera.pose.distance)||yh(d,this.camera.pose.longitude,Math.PI*2)||yh(f,this.camera.pose.latitude)){let e={x:u.x,y:u.y,z:u.z},t={fov:n};return Object.assign(e,{distance:o}),Object.assign(t,{longitude:d,latitude:f}),this.controller.stopMomentumMovement(),this.controller.cameraMotion.set(t,0).catch(q),this.controller.locationMotion.set(e,0).catch(q),!0}}else{let e=Math.PI/45,t=r?this.state.fov:bm(this.camera.pose.fov,this.state.fov,1),{longitude:n,latitude:i}=r?{longitude:this.state.longitude,latitude:this.state.latitude}:Sm({longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},{longitude:this.state.longitude,latitude:this.state.latitude},e),a=this.state.distance,o=new c.Vector3().copy(this.state.offset);if(yh(a,this.camera.pose.distance)&&(this.state.distance=this.camera.pose.distance),xh(o,this.camera.pose.offset)&&(this.state.offset=this.camera.pose.offset.clone()),yh(n,this.camera.pose.longitude,Math.PI*2)||yh(i,this.camera.pose.latitude)||yh(t,this.camera.pose.fov))return this.controller.stopMomentumMovement(),this.controller.cameraMotion.set({longitude:n,latitude:i,fov:t},0).catch(q),!0}if(this.stateSynced=!0,i===!1&&this.emit(`state.synced`,$(`state.synced`,{userAction:!1,state:this.state})),this.readyCallbacks.length&&this.stateSynced){let t=this.currentMode;if(!(t===e.Mode.Floorplan||t===e.Mode.Topview||t===e.Mode.Mapview||t===e.Mode.Model)||this.modelScene.loaded){let e=this.readyCallbacks.slice();this.readyCallbacks.length=0;for(let t of e)this.controller instanceof zv.Panorama&&t.tile===!0&&!this.controller.isTileReady()?this.readyCallbacks.push(t):t()}}return!1}ready(e={}){return new Promise(t=>{var n;this.readyCallbacks.push(Object.assign(t,{tile:(n=e.tile)==null?!1:n}))}).then(()=>this.model.initReady).then(q)}requestFullscreen(){var e;if(!Th)return;let t=(e=this.getElement())==null?void 0:e.parentNode;t&&`requestFullscreen`in t&&typeof document<`u`&&document.fullscreenElement===null&&t.requestFullscreen()}exitFullscreen(){typeof document<`u`&&document.fullscreenElement&&`exitFullscreen`in document&&document.exitFullscreen()}throwError(e){this.hasListener(`error`)?this.emit(`error`,e):console.error(e)}bindModel(e){let t=()=>{ri.shared.add(()=>{this.emit(`model.load`,$(`model.load`,{work:e.work,model:e,error:null}))},!0)},n=t=>{let{error:n}=t;this.emit(`model.error`,$(`model.error`,{work:e.work,model:e,error:n})),this.throwError(n)},r=()=>{this.emit(`model.changeShownFloor`,$(`model.changeShownFloor`,{work:e.work,model:e,error:null}))},i=t=>{this.emit(`models.tileLoad`,$(`model.tileLoad`,{work:e.work,model:e,tile:t.tile}))},a=t=>{this.emit(`models.tileUnload`,$(`model.tileUnload`,{work:e.work,model:e,tile:t.tile}))},o=()=>{e.removeEventListener(`load`,t),e.removeEventListener(`error`,n),e.removeEventListener(`changeShownFloor`,r),e.removeEventListener(`tileLoad`,i),e.removeEventListener(`tileUnload`,a),e.removeEventListener(`dispose`,o)};e.addEventListener(`load`,t),e.addEventListener(`error`,n),e.addEventListener(`changeShownFloor`,r),e.addEventListener(`tileLoad`,i),e.addEventListener(`tileUnload`,a),e.addEventListener(`dispose`,o),this.emit(`model.request`,$(`model.request`,{work:e.work,model:e,error:null}))}bindWorkFetcher(e){let t=this,n=e.workCode,r=e.allowHosts,i=new fr({get networkSubscribe(){return t.networkSubscribe},requestProxy(e){return Promise.resolve(e).then(e=>t.requestProxy(e,n)).then(e=>{let t=zp(e,r);return t instanceof Error?Promise.reject(t):t})}});vf(this.fiveId,e,i)}commonParams(){return{fiveId:this.fiveId,scene:this.scene,xrCustomObjectsScene:this.xrCustomObjectsScene,helper:this.helperGroup,camera:this.camera,renderer:this.renderer,viewport:this.viewport,element:this.getElement(),works:this.works,imageOptions:this.imageOptions,enableWheel:this.enableWheel,extraElements:this.extraElements,videoTexture:this.videoTexture,modelScene:this.modelScene}}applyController(t,n){if(!this.renderer)throw Error(`renderer is not initialized.`);let r=zv[t];this.currentMode=t;let i=new r(n);for(let e of Vv)i.on(e,(...t)=>{if(this.emit(e,...t))return!1});{let e=zv[t].initAnimationEndState(n),r=n.initial.userAction;kh(this.state,e)||(Oh(this.state,e),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state}))),this.emit(`currentState.change`,$(`currentState.change`,{userAction:r,state:this.getCurrentState()}))}return i.on(`camera.update`,e=>{var t;if(this.controller){let n=this.controller.getTargetState();e.userAction&&this.syncingState===!1&&this.state.mode===n.mode&&!kh(this.state,n)&&(Oh(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:e.userAction,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}this.emit(`currentState.change`,$(`currentState.change`,{userAction:e.userAction,state:this.getCurrentState()}))}),i.on(`initAnimation.start`,e=>{var t;let{state:n,userAction:r}=e;r&&this.state.mode===n.mode&&!kh(this.state,n)&&(Oh(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`initAnimation.end`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!kh(this.state,n)&&(Oh(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.moveTo`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!kh(this.state,n)&&(Oh(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.arrived`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!kh(this.state,n)&&(Oh(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.cancel`,e=>{var t;let{state:n,userAction:r}=e;r&&this.state.mode===n.mode&&!kh(this.state,n)&&(Oh(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.moveTo`,e=>{let{userAction:t}=e;this.emit(`currentState.change`,$(`currentState.change`,{userAction:t,state:this.getCurrentState()}))}),i.on(`pano.request`,e=>{this.emit(`pano.request`,e),e.defaultPrevented||this.moveToPano(e.state,e.options,e.userAction)}),i.on(`vr.requestExit`,()=>{this.currentMode===e.Mode.VRPanorama&&(this.exitFullscreen(),this.changeMode(e.Mode.Panorama))}),i.on(`error`,e=>this.throwError(e)),i}removeEventListeners(){}get internalLightsEnabled(){let e=this.scene.children.find(e=>e.name===`internalLights`);return e?e.visible:!1}set internalLightsEnabled(e){let t=this.scene.children.find(e=>e.name===`internalLights`);t&&(t.visible=e),t=this.modelScene.children.find(e=>e.name===`internalLights`),t&&(t.visible=e)}get scissor(){return this.viewport}setScissor(e){return this.setViewport(e)}getPose(){let{longitude:e,latitude:t,fov:n,offset:r,distance:i}=this.camera.copyPose();return{longitude:e,latitude:t,fov:n,offset:r.clone(),distance:i}}getLongitudeAndLatitude(){let{longitude:e,latitude:t}=this.getPose();return{longitude:e,latitude:t}}getOffset(){return this.getPose().offset}getCameraLocal(){if(this.pano.workCode&&this.controller&&this.works){let e=this.works.getObserver(this.pano);if(e){let t=new c.Object3D;t.matrix.copy(e.matrix).premultiply(e.work.transform),t.matrix.decompose(t.position,t.quaternion,t.scale),t.matrixAutoUpdate=!1;let n=new c.Vector3(0,0,-1);n.applyQuaternion(this.camera.quaternion);let r=t.quaternion.clone().inverse();return n.applyQuaternion(r),{theta:Math.atan2(n.x,-n.z),phi:-Math.asin(n.y),lookAtVector:n}}}return null}addPass(e){this.fiveRenderer.composer.addPass(e)}removePass(e){let t=this.fiveRenderer.composer.passes.indexOf(e);t!==-1&&this.fiveRenderer.composer.passes.splice(t,1)}insertPass(e,t){this.fiveRenderer.composer.insertPass(e,t)}get renderMode(){return this.fiveRenderer.renderMode}set renderMode(e){this.fiveRenderer.renderMode=e}get enableHQ(){return this.fiveRenderer.renderMode===`point-cloud-high-quality`}set enableHQ(e){this.fiveRenderer.renderMode=e?`point-cloud-high-quality`:`default`,this.needsRender=!0}get enableEDL(){return this.eyeDomeLightingPass.enabled}set enableEDL(e){this.eyeDomeLightingPass.enabled=e,this.needsRender=!0}get enableAdaptiveLuminance(){return this.adaptiveLuminancePass.enabled}set enableAdaptiveLuminance(e){this.adaptiveLuminancePass.enabled=e,this.needsRender=!0}get enableIOSEDR(){return!1}set enableIOSEDR(e){}get enablePostProcessing(){return!0}set enablePostProcessing(e){}get modelSceneNeedsRender(){return this.modelScene.needsRender}set modelSceneNeedsRender(e){this.modelScene.needsRender=e}};if(Ny.Mode={Panorama:`Panorama`,Model:`Model`,Floorplan:`Floorplan`,Topview:`Topview`,Mapview:`Mapview`,VRPanorama:`VRPanorama`,XRPanorama:`XRPanorama`},typeof window<`u`){let e={THREE:c,constructor:Ny,instances:My};Object.assign(window,{__FIVE_DEBUG__:e})}var Py=class{static createButton(e){let t=document.createElement(`button`);function n(){t.style.display=``,t.style.cursor=`pointer`,t.style.left=`calc(50% - 50px)`,t.style.width=`100px`,t.textContent=`ENTER VR`,t.onmouseenter=function(){t.style.opacity=`1.0`},t.onmouseleave=function(){t.style.opacity=`0.5`},t.onclick=function(){e&&e()}}function r(){t.style.display=``,t.style.cursor=`auto`,t.style.left=`calc(50% - 75px)`,t.style.width=`150px`,t.onmouseenter=null,t.onmouseleave=null,t.onclick=null}function i(){r(),t.textContent=`VR NOT SUPPORTED`}function a(e){e.style.position=`absolute`,e.style.bottom=`20px`,e.style.padding=`12px 6px`,e.style.border=`1px solid #fff`,e.style.borderRadius=`4px`,e.style.background=`rgba(0,0,0,0.1)`,e.style.color=`#fff`,e.style.font=`normal 13px sans-serif`,e.style.textAlign=`center`,e.style.opacity=`0.5`,e.style.outline=`none`,e.style.zIndex=`999`}if(`xr`in navigator)return t.id=`VRButton`,t.style.display=`none`,a(t),navigator.xr.isSessionSupported(`immersive-vr`).then(function(e){e?n():i()}),t;{let e=document.createElement(`a`);return window.isSecureContext===!1?(e.href=document.location.href.replace(/^http:/,`https:`),e.innerHTML=`WEBXR NEEDS HTTPS`):(e.href=`https://immersiveweb.dev/`,e.innerHTML=`WEBXR NOT AVAILABLE`),e.style.left=`calc(50% - 90px)`,e.style.width=`180px`,e.style.textDecoration=`none`,a(e),e}}};exports.AdaptiveLuminancePass=Dm,exports.AnimationFrameLoop=ri,exports.BoundingMesh=Gf,exports.Camera=en,exports.CustomShader=un,exports.PBMCustomShader=un,exports.EffectComposer=rm,exports.EyeDomeLightingPass=Am,exports.Fetcher=fr,exports.Five=Ny,exports.FivePass=am,exports.FiveRenderer=Jm,exports.FullScreenQuad=im,exports.Histogram=_m,exports.InternalWebGLRenderer=Ym,exports.Model=If,exports.ModelScene=qf,exports.Motion=Z,exports.NetworkSubscribe=sr,exports.PBMContainer=Kn,exports.PBMGSObject=Yn,exports.PBMGroup=Ct,exports.PBMMesh=yn,exports.PBMMeshMaterial=vn,exports.PBMPanoFilter=dn,exports.PBMPointCloud=kn,exports.PBMPointCloudMaterial=On,exports.PBMSkinnedMesh=bn,exports.PBMUpdateable=ln,exports.PROXY_CONTROLLER_EVENT_NAMES=Vv,exports.PanoCircleMesh=sh,exports.PanoCircleMeshCustom=_h,exports.PanoCircleMeshSolid=fh,exports.Parameter=K,exports.Scene=nh,exports.Subscribe=cn,exports.TextureLoader=hi,exports.Tile=jl,exports.Tile3D=hf,exports.Tile3DModel=hf,exports.TileCache=rd,exports.TileNode=Ku,exports.TileRequestScheduler=ed,exports.Tileset=ld,exports.Trajectory=Xu,exports.TrajectoryNode=Zu,exports.Work=Qp,exports.WorkResolvedObserver=tm,exports.XRButton=Py,exports.controllersDefaultInitArgs=Bv,exports.coordinatesToVector=Vt,exports.createDebugBoundingMesh=El,exports.createWorks=nm,exports.defaultImageURLTransform=Kr,exports.draco=eo,exports.getViewportScale=Kv,exports.headingToLongitude=Wt,exports.imageSupport=kr,exports.isBoundingVolume=xl,exports.isPanoId=_p,exports.ktx2=co,exports.loadAt3d=ea,exports.loadB3dm=rs,exports.loadDome=ia,exports.loadDomez=da,exports.loadFbx=vc,exports.loadGltf=fs,exports.loadPbm=Mi,exports.loadPly=ms,exports.loadPnts=us,exports.loadSplat=tl,exports.loadSpz=Qo,exports.loadX3p=Qc,exports.longitudeToHeading=Ut,exports.makeBoundingVolume=Sl,exports.panoEqual=gp,exports.panoParse=hp,exports.panoStringify=Q,exports.parseWork=$p,exports.vectorToCoordinates=Ht,exports.workToJson=Qf;
2325
+ ----<<-计算从-}yn-中心到当前片段的平方距离----<<-由于-]|vv|{-已经按-\05E6-缩放,平方结果会被缩放-E-倍----<<-如果平方结果大于-E,说明在椭圆外,距离均值超过-\05E6-个标准差----sy|n-N-J-q|5]|vv|{9-]|vv|{6H----vs-5N-K-E;=6-qvpnqH--------rp@-p|y|-J-P|y|;toH--------<<-由于渲染的-}yn-按-\05E6-缩放,高斯公式中的逆协方差矩阵部分变成单位矩阵----<<-因此只剩下-5e-:-zrn{6-7-5e-:-zrn{6,而-zrn{-为零,所以是-e-7-e,即-N----sy|n-|}npv\b-J-r\x07}5:=;B-7-N6-7-P|y|;nH--------tylSntP|y|-J-rpA5p|y|;to9-|}npv\b6H\f`),by=class extends c.Mesh{constructor(){super(),this.renderData=null,this.needsRender=!1,this.sortWorker=null,this.depthIndex=new Uint32Array,this.splatIndexCapacity=0,this.dataTexture=null,this.transformsTexture=null,this.transformIndicesTexture=null,this.shTexture=null,this.usedSHDegree=0,this.onBeforeRender=(e,t,n)=>{var r,i;let a=n,o=this.collectObjects(t);if(o.length===0){this.geometry.instanceCount=0;return}let s=0;if(o.forEach(e=>{e.usedSHDegree>s&&(s=e.usedSHDegree)}),this.setMaxShDegree(s),this.isSceneNeedsRebuild(o)&&(this.renderData&&this.renderData.dispose(),this.shTexture&&(this.shTexture.dispose(),this.shTexture=null),this.renderData=new my(o),this.createTextures(),this.ensureSplatIndexCapacity(this.renderData.numPoints)),!this.renderData)return;if(o.forEach(e=>{e.transformChanged&&this.renderData.updateTransform(e)}),this.renderData.dataChanged||this.renderData.transformsChanged){let e=new Float32Array(this.renderData.positions.slice().buffer),t=new Float32Array(this.renderData.transforms.slice().buffer),n=new Uint32Array(this.renderData.transformIndices.slice().buffer);(r=this.sortWorker)==null||r.postMessage({sortData:{positions:e,transforms:t,transformIndices:n,vertexCount:this.renderData.numPoints}},[e.buffer,t.buffer,n.buffer])}this.renderData.dataChanged&&this.dataTexture&&(this.dataTexture.needsUpdate=!0,this.renderData.dataChanged=!1),this.renderData.transformsChanged&&this.transformsTexture&&this.transformIndicesTexture&&(this.transformsTexture.needsUpdate=!0,this.transformIndicesTexture.needsUpdate=!0,this.renderData.transformsChanged=!1);let l=Math.min(this.usedSHDegree,this.renderData.maxShDegree);this.material.uniforms.u_maxShDegree.value=l,l>0&&!this.shTexture?this.createSHTexture():l===0&&this.shTexture&&(this.shTexture.dispose(),this.shTexture=null,this.material.uniforms.u_shTexture.value=null);let u=new c.Matrix4().multiplyMatrices(a.perspectiveProjectionMatrix,a.matrixWorldInverse);(i=this.sortWorker)==null||i.postMessage({viewProj:u.elements}),this.material.uniforms.resolution.value.set(a.resolution.x,a.resolution.y)};let e=this.createGeometry(),t=this.createMaterial();this.geometry=e,this.material=t,this.frustumCulled=!1,this.renderOrder=-99999999999,this.gsSceneState={lastObjectsHash:``},this.sortWorker=new _y,this.sortWorker.onmessage=e=>{if(e.data.depthIndex){this.depthIndex=e.data.depthIndex;let t=this.depthIndex.length,n=this.ensureSplatIndexCapacity(t);n.array.set(this.depthIndex,0),n.count=this.depthIndex.length,n.updateRange.offset=0,n.updateRange.count=t,n.needsUpdate=!0,this.geometry.instanceCount=this.depthIndex.length,this.needsRender=!0}}}ensureSplatIndexCapacity(e){let t=this.geometry.getAttribute(`splatIndex`);if(e<=this.splatIndexCapacity)return t;let n=this.getExpandedCapacity(e),r=t.array,i=new Int32Array(n);i.set(r.subarray(0,Math.min(r.length,n)));let a=new c.InstancedBufferAttribute(i,1,!1,1);return a.setUsage(c.DynamicDrawUsage),this.geometry.setAttribute(`splatIndex`,a),this.splatIndexCapacity=n,this.geometry._maxInstanceCount=n,a}getExpandedCapacity(e){let t=Math.max(this.splatIndexCapacity,1);for(;t<e;)t*=2;return t}createGeometry(){let e=new c.InstancedBufferGeometry,t=new Float32Array([-1,-1,0,1,-1,0,1,1,0,-1,1,0]);e.setAttribute(`position`,new c.BufferAttribute(t,3));let n=new Uint16Array([0,1,2,0,2,3]);e.setIndex(new c.BufferAttribute(n,1)),this.splatIndexCapacity=1;let r=new Int32Array(this.splatIndexCapacity);for(let e=0;e<r.length;e++)r[e]=e;let i=new c.InstancedBufferAttribute(r,1,!1,1);return i.setUsage(c.DynamicDrawUsage),e.setAttribute(`splatIndex`,i),e._maxInstanceCount=this.splatIndexCapacity,e.instanceCount=0,e}createMaterial(){return new c.ShaderMaterial({vertexShader:vy,fragmentShader:yy,uniforms:{u_texture:{value:null},u_transforms:{value:null},u_transformIndices:{value:null},u_shTexture:{value:null},u_shTextureSize:{value:new c.Vector2},u_maxShDegree:{value:0},resolution:{value:new c.Vector2}},side:c.DoubleSide,transparent:!0,blending:c.NormalBlending,depthTest:!0,depthWrite:!1})}createTextures(){this.renderData&&(this.dataTexture=new c.DataTexture(this.renderData.data,this.renderData.width,this.renderData.height,c.RGBAIntegerFormat,c.UnsignedIntType),this.dataTexture.internalFormat=`RGBA32UI`,this.dataTexture.minFilter=c.NearestFilter,this.dataTexture.magFilter=c.NearestFilter,this.dataTexture.needsUpdate=!0,this.transformsTexture=new c.DataTexture(this.renderData.transforms,this.renderData.transformsWidth,this.renderData.transformsHeight,c.RGBAFormat,c.FloatType),this.transformsTexture.internalFormat=`RGBA32F`,this.transformsTexture.minFilter=c.NearestFilter,this.transformsTexture.magFilter=c.NearestFilter,this.transformsTexture.needsUpdate=!0,this.transformIndicesTexture=new c.DataTexture(this.renderData.transformIndices,this.renderData.transformIndicesWidth,this.renderData.transformIndicesHeight,c.RedIntegerFormat,c.UnsignedIntType),this.transformIndicesTexture.internalFormat=`R32UI`,this.transformIndicesTexture.minFilter=c.NearestFilter,this.transformIndicesTexture.magFilter=c.NearestFilter,this.transformIndicesTexture.needsUpdate=!0,this.material.uniforms.u_texture.value=this.dataTexture,this.material.uniforms.u_transforms.value=this.transformsTexture,this.material.uniforms.u_transformIndices.value=this.transformIndicesTexture,this.usedSHDegree>0&&this.renderData.maxShDegree>0&&this.createSHTexture())}createSHTexture(){if(!this.renderData)return;this.shTexture&&(this.shTexture.dispose(),this.shTexture=null);let e=Math.min(this.usedSHDegree,this.renderData.maxShDegree),t=0;if(e>=1&&(t+=9),e>=2&&(t+=15),e>=3&&(t+=21),t===0)return;let n=t;n%4!=0&&(n=Math.ceil(n/4)*4);let r=this.renderData.numPoints*n/4,i=2048,a=Math.ceil(r/i),o=new Float32Array(i*a*4);for(let t=0;t<this.renderData.numPoints;t++){let r=n/4*t,i=0;if(this.renderData.sh1&&e>=1)for(let e=0;e<9;e++){let n=r+Math.floor(i/4),a=i%4,s=n*4+a;o[s]=this.renderData.sh1[t*9+e],i++}if(this.renderData.sh2&&e>=2)for(let e=0;e<15;e++){let n=r+Math.floor(i/4),a=i%4,s=n*4+a;o[s]=this.renderData.sh2[t*15+e],i++}if(this.renderData.sh3&&e>=3)for(let e=0;e<21;e++){let n=r+Math.floor(i/4),a=i%4,s=n*4+a;o[s]=this.renderData.sh3[t*21+e],i++}}this.shTexture=new c.DataTexture(o,i,a,c.RGBAFormat,c.FloatType),this.shTexture.internalFormat=`RGBA32F`,this.shTexture.minFilter=c.NearestFilter,this.shTexture.magFilter=c.NearestFilter,this.shTexture.needsUpdate=!0,this.material.uniforms.u_shTexture.value=this.shTexture,this.material.uniforms.u_shTextureSize.value.set(i,a),this.material.uniforms.u_maxShDegree.value=e}setMaxShDegree(e){if(e<0||e>2){console.warn(`现在只支持012三种阶数,你输入的是${e}`);return}let t=this.usedSHDegree;this.usedSHDegree=e,t!==e&&(this.shTexture&&(this.shTexture.dispose(),this.shTexture=null),this.material.uniforms.u_maxShDegree.value=e,e===0?this.material.uniforms.u_shTexture.value=null:this.renderData&&this.renderData.maxShDegree>0&&this.createSHTexture())}collectObjects(e){let t=[];return e.traverse(e=>{e instanceof Yn&&e.visible&&t.push(e)}),t}isSceneNeedsRebuild(e){let t=e.reduce((e,t)=>e+t.uuid,``),n=t!==this.gsSceneState.lastObjectsHash;return this.gsSceneState.lastObjectsHash=t,n}dispose(){this.renderData&&this.renderData.dispose(),this.sortWorker&&this.sortWorker.terminate(),this.dataTexture&&this.dataTexture.dispose(),this.transformsTexture&&this.transformsTexture.dispose(),this.transformIndicesTexture&&this.transformIndicesTexture.dispose(),this.shTexture&&this.shTexture.dispose(),this.geometry.dispose(),this.material.dispose()}},xy=1e3,Sy=90,Cy=e=>e.replace(`//vrlab-public.ljcdn.com/`,`//vr-public.realsee-cdn.cn/`).replace(`//vrlab-image4.ljcdn.com/`,`//vr-image-4.realsee-cdn.cn/`).replace(`//vrlab-image3.ljcdn.com/`,`//vr-image-3.realsee-cdn.cn/`).replace(`//vrlab-image2.ljcdn.com/`,`//vr-image-2.realsee-cdn.cn/`).replace(`//vrlab-image1.ljcdn.com/`,`//vr-image-1.realsee-cdn.cn/`),wy=new c.Sphere,Ty=new c.Box3,Ey=new c.Vector4,Dy=new c.Vector4,Oy=new c.Color,ky=new c.Vector2,Ay=new WeakMap,jy=nm([$p(null)]),My={},Ny=class e extends cn{static get version(){return`6.8.0-alpha.20`}static get dracoPath(){return eo.decoderPath}static set dracoPath(e){eo.setDecoderPath(e)}static get ktx2Path(){return co.transcoderPath}static set ktx2Path(e){co.setTranscoderPath(e)}static get useNativeImageBitmap(){return si()}static set useNativeImageBitmap(e){oi(e)}constructor(e={}){var t,n,r,i,a,o,s,l,u,d,f;if(super(),this.pbmGSRenderMesh=null,this.fiveId=nn(),My[this.fiveId]=this,this.currentUpdateArgs={time:U(),args:[]},this.currentMode=`Panorama`,this.pano={workCode:``,panoIndex:0},this.needsRender=!1,this.onlyRenderIfNeeds=(t=e.onlyRenderIfNeeds)==null?!0:t,this.imageOptions=Object.assign({},(n=e.imageOptions)==null?{}:n),this.textureOptions=Object.assign({},(r=e.textureOptions)==null?{}:r),this.poweredByRealsee=(i=e.poweredByRealsee)==null?!0:i,this.backgroundColor=new c.Color((a=e.backgroundColor)==null?1579548:a),this.backgroundAlpha=(o=e.backgroundAlpha)==null?1:o,this.extraElements=[],this.controllerInits={Panorama:Object.assign({},e.panorama),Model:Object.assign({},e.model),Floorplan:Object.assign({},e.floorplan),Topview:Object.assign({},e.topview),Mapview:Object.assign({},e.mapview),VRPanorama:Object.assign({},e.vrPanorama),XRPanorama:Object.assign({},e.xrPanorama)},this.fps={testCount:0,testTime:U()},this.modeChangeDuration=(s=e.modeChangeDuration)==null?xy:s,this.enableWheel=(l=e.enableWheel)==null?!0:l,typeof window<`u`)if(`renderer`in e)e.renderer instanceof Ym&&this.throwError(Error(`cannot render a internal renderer`)),this.renderer=e.renderer;else try{this.renderer=new Ym({preserveDrawingBuffer:e.preserveDrawingBuffer,antialias:e.antialias,webgl2:e.webgl2,logarithmicDepthBuffer:e.logarithmicDepthBuffer,precision:e.precision,powerPreference:e.powerPreference});let t=Kv();this.renderer.setPixelRatio(t===1?window.devicePixelRatio:1),this.renderer.setSize(512,512),this.renderer.setClearColor(this.backgroundColor,this.backgroundAlpha)}catch(e){let t=e instanceof Error?e:Error(String(e));this.throwError(t)}this.getPixelsRenderTarget=new c.WebGLRenderTarget(1,1,{encoding:(d=(u=this.renderer)==null?void 0:u.outputEncoding)==null?c.sRGBEncoding:d,generateMipmaps:!1}),this.viewport=Object.assign({left:0,bottom:0,width:1,height:1},e.viewport),this.camera=new en(Sy),this.scene=new nh,this.xrCustomObjectsScene=new c.Scene,this.scene.add(this.xrCustomObjectsScene),this.scene.matrixAutoUpdate=!1,this.requestProxy=(f=e.requestProxy)==null?Cy:f,this.networkSubscribe=new sr,this.networkSubscribe.on(`network`,(e,t,n,r)=>{var i;this.emit(`network.resource`,$(`network.resource`,{source:e,requestType:t,requestState:n,detail:r})),(i=this.analysis)==null||i.network(this.works,e,t,n,r)}),this.readyCallbacks=[],this.syncingState=!1,this.helperGroup=new c.Group,this.helperGroup.name=`helper`,this.helperGroup.matrixAutoUpdate=!1,this.scene.add(this.helperGroup),Ay.set(this,jy),this.modelScene=new qf({fiveId:this.fiveId}),this.modelScene.addEventListener(`model.create`,e=>{this.bindModel(e.model)}),this.scene.add(this.modelScene);let[p]=this.modelScene.setModels(jy,{forceReplaceImmediately:!0});H(p,`loaded`,{get(){return!1},set(e){}}),this.videoTexture=new c.VideoTexture(e.videoInstance||Uv());let m=Wv();this.scene.add(m),this.state={mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance},this.stateSynced=!1,this.destroyed=!1,this.paused=!0,typeof window<`u`&&(e.play!==!1&&this.play(),this.stopAnimationLoop=ri.shared.add((e,t,...n)=>{this.updateTime(e,t,...n)},!1,0,10));let h=()=>{typeof document<`u`&&document.fullscreenElement===null&&this.currentMode===`VRPanorama`&&this.controller.emit(`vr.requestExit`,$(`vr.requestExit`,{}))},g=()=>{this.needsRender=!0};if(typeof document<`u`&&document.addEventListener(`fullscreenchange`,h,!1),this.renderer&&this.renderer.domElement.addEventListener(`webglcontextrestored`,g,!1),this.removeEventListeners=()=>{typeof document<`u`&&document.removeEventListener(`fullscreenchange`,h,!1),this.renderer&&this.renderer.domElement.removeEventListener(`webglcontextrestored`,g,!1)},this.loadWorkTask=this.prepare(),this.plugins={},e.plugins&&e.plugins.length){for(let t of e.plugins)if(typeof t==`function`)t(this);else if(Array.isArray(t)){let[e,n,r]=t;if(typeof e==`function`){let t=e(this,r);typeof n==`string`&&(this.plugins[n]?this.throwError(Error(`plugin name ${n} is exists.`)):this.plugins[n]=t)}}}Hv(this),this.fiveRenderer=new Jm,this.adaptiveLuminancePass=new Dm,this.adaptiveLuminancePass.enabled=!1,this.fiveRenderer.composer.addPass(this.adaptiveLuminancePass),this.eyeDomeLightingPass=new Am(this.camera),this.eyeDomeLightingPass.enabled=!1,this.fiveRenderer.composer.addPass(this.eyeDomeLightingPass),e.webgl2?(this.pbmGSRenderMesh=new by,this.scene.add(this.pbmGSRenderMesh)):console.warn(`未开启webgl2,3dgs功能不可用`)}get ident(){return this.fiveId}get panoIndex(){return this.pano.panoIndex}get panoId(){return Q(this.pano)}prepare(){return Promise.all([kr().catch(q)]).then(q)}dispose(){var e;if(this.destroyed===!0)return;delete My[this.fiveId],this.emit(`dispose`),this.destroyed=!0,this.pause(),this.stopAnimationLoop&&(this.stopAnimationLoop(),this.stopAnimationLoop=void 0),this.off(),this.networkSubscribe.off(),this.controller&&(this.controller.destroy(),this.controller=void 0);let t=this.getElement();t&&t.parentNode&&t.parentNode.removeChild(t);let n=this.modelScene.parameter;n.pano0&&n.pano0.map.dispose(),n.pano1&&n.pano1.map!==((e=n.pano0)==null?void 0:e.map)&&n.pano1.map.dispose(),n.reset(`pano0`,`pano1`),this.modelScene.dispose(),this.scene.dispose(),this.xrCustomObjectsScene.dispose(),Ay.set(this,jy),this.renderer&&this.renderer.render(new c.Scene,new c.Camera),this.fiveRenderer.dispose(),this.renderer instanceof Ym&&(this.renderer.forceContextLoss&&this.renderer.forceContextLoss(),this.renderer.dispose())}setViewport(e){Object.assign(this.viewport,e),this.needsRender=!0}get boundingMesh(){return this.modelScene.boundingMesh}get helperVisible(){return this.helperGroup.visible}set helperVisible(e){this.helperGroup.visible!==e&&(this.helperGroup.visible=e,this.emit(`helpers.visible`,$(`helpers.visible`,{object:this.helperGroup})),this.needsRender=!0)}updateConfiguration(e,t=!0){let n=!1,r=!1;e.panorama&&(Object.assign(this.controllerInits.Panorama,gr(e.panorama)),this.currentMode===`Panorama`&&(n=!0)),e.model&&(Object.assign(this.controllerInits.Model,gr(e.model)),this.currentMode===`Model`&&(n=!0)),e.floorplan&&(Object.assign(this.controllerInits.Floorplan,gr(e.floorplan)),this.currentMode===`Floorplan`&&(n=!0)),e.topview&&(Object.assign(this.controllerInits.Topview,gr(e.topview)),this.currentMode===`Topview`&&(n=!0)),e.mapview&&(Object.assign(this.controllerInits.Mapview,gr(e.mapview)),this.currentMode===`Mapview`&&(n=!0)),e.vrPanorama&&(Object.assign(this.controllerInits.VRPanorama,gr(e.vrPanorama)),this.currentMode===`VRPanorama`&&(n=!0)),e.imageOptions&&(Object.assign(this.imageOptions,e.imageOptions),(this.currentMode===`Panorama`||this.currentMode===`VRPanorama`)&&(r=!0,n=!0)),e.textureOptions&&Object.assign(this.textureOptions,e.textureOptions),t&&n&&this.controller&&this.currentMode&&(!this.controller.updateConfiguration(this.controllerInits[this.currentMode])||r)&&this.changeMode(this.currentMode,this.getCurrentState(),0,!1,!0)}appendTo(e,t={}){if(!this.renderer)return;if(!(this.renderer instanceof Ym)){this.throwError(Error(`cannot call appendTo method when render a external renderer`));return}let n=this.getElement();if(!n)return;e.appendChild(n),this.refresh(t);let r=window.getComputedStyle(e).position;r!==`relative`&&r!==`absolute`&&r!==`fixed`&&r!==`sticky`&&(e.style.position=`relative`)}refresh(e={},t){var n,r,i;if(!this.renderer)return;let a=this.renderer.domElement.parentNode,{width:o=(n=a==null?void 0:a.offsetWidth)==null?512:n,height:s=(r=a==null?void 0:a.offsetHeight)==null?512:r}=e;if(o=Math.max(1,o),s=Math.max(1,s),!t){let e=Kv(),n=typeof window<`u`?window.devicePixelRatio:1;if(t=(i=e===1?n:1)==null?1:i,t>1){let e=Math.max(o,s)*t,n=Math.min(this.renderer.capabilities.maxTextureSize,4096);e>n&&(t=Math.max(t/e*n,1),t=Math.floor(t*100)/100)}}this.renderer.setPixelRatio(t),this.renderer.setSize(o,s),this.needsRender=!0;let c=U(),l=c-this.currentUpdateArgs.time,u=this.currentUpdateArgs.args;this.updateTime(c,l,...u)}addExtraElement(e){return this.extraElements.indexOf(e)===-1&&(this.extraElements.push(e),this.controller&&this.controller.bindExtraElement(e)),()=>this.removeExtraElement(e)}removeExtraElement(e){let t=this.extraElements.indexOf(e);t!==-1&&(this.extraElements.splice(t,1),this.controller&&this.controller.unbindExtraElement(e))}getSize(e){if(!this.renderer)throw Error(`renderer is not initialized`);return this.renderer.getSize(e),e.x*=this.viewport.width,e.y*=this.viewport.height,e}getDrawingBufferSize(e){if(!this.renderer)throw Error(`renderer is not initialized`);return this.renderer.getDrawingBufferSize(e),e.x*=this.viewport.width,e.y*=this.viewport.height,e}updateCamera(e,t,n=!0){if(!this.controller)throw Error(`controller is not initialized.`);return this.controller.updateCamera(e,t,n)}updateCameraWithKeyframes(e,t,n=!0){if(!this.controller)throw Error(`controller is not initialized.`);return this.controller.updateCameraWithKeyframes(e,t,n)}get works(){return Ay.get(this)||jy}get work(){return this.works[0]}get observers(){return this.work.observers}get models(){return this.modelScene.models}get model(){return this.modelScene.models[0]}load(e,t,n,r=!0){if(!this.renderer)throw Error(`renderer is not initialized`);let i=this.loadWorkTask.then(()=>Sh(e)?e.then(e=>this.load_(e,t,n,r)):this.load_(e,t,n,r));return this.loadWorkTask=i.catch(e=>{this.throwError(e)}),i}load_(t,n,r,i=!0){var a,o,s,l,u,d,f,p,m,h;let g={};typeof r==`number`?g.duration=r:typeof r==`object`&&Object.assign(g,r),this.works===jy&&(g.duration===void 0&&(g.duration=0),g.effect===void 0&&(g.effect=`instant`));let _={};Object.assign(_,g.model),!_[`3d-tiles`]&&g[`3d-tiles`]&&(_[`3d-tiles`]=g[`3d-tiles`]),!_.textureOptions&&g.textureOptions&&(_.textureOptions=g.textureOptions),!_.textureOptions&&this.textureOptions&&(_.textureOptions=this.textureOptions);let v=[];if(Array.isArray(t))for(let e of t)e instanceof Qp?v.push(e):typeof e!=`string`&&`work`in e?v.push($p(e.work,e)):v.push($p(e));else t instanceof Qp?v.push(t):v.push($p(t));g.mode===`add`&&(v=[].concat(this.works,v));let y;try{y=nm(v)}catch(e){return this.throwError(e),Promise.reject(e)}for(let e of y)this.bindWorkFetcher(e);n===void 0&&(n=`inherit`),n===`inherit`&&this.works===jy&&(n=`initial`);let b=this.currentMode,x=y.initial,S=x.work.observers[0],C=S?{workCode:S.work.workCode,panoIndex:S.panoIndex}:{workCode:x.work.workCode,panoIndex:0},w=(a=x.mode)==null?S?`Panorama`:`Mapview`:a,T={};if(n===`inherit`){let e=this.getCurrentState(),[t]=y.filter(t=>t.workCode===e.workCode);if(t)C={workCode:e.workCode,panoIndex:e.panoIndex},w=e.mode,T={longitude:e.latitude,latitude:e.latitude,fov:e.fov,distance:e.distance,offset:e.offset.clone()};else{n={mode:b};let e=(s=(o=y[0])==null?void 0:o.observers)==null?void 0:s[this.panoIndex];e?(n.workCode=e.work.workCode,n.panoIndex=e.panoIndex):typeof y.initial.panoIndex==`number`?(n.workCode=y.initial.work.workCode,n.panoIndex=y.initial.panoIndex):(n.mode===`Panorama`||n.mode===`VRPanorama`||n.mode===`XRPanorama`)&&(n.mode=`Mapview`),n.mode===b&&(n.longitude=this.camera.pose.longitude,n.latitude=this.camera.pose.latitude,n.fov=this.camera.pose.fov)}}if(n===`initial`&&(typeof x.panoIndex==`number`&&(C={workCode:x.work.workCode,panoIndex:x.panoIndex}),x.mode&&(w=x.mode),T={longitude:x.longitude,latitude:x.latitude,fov:x.fov,distance:x.distance,offset:(l=x.offset)==null?void 0:l.clone()}),typeof n==`object`){if(w=(u=n.mode)==null?b:u,typeof n.panoIndex==`number`){let e=y.getObserver({workCode:(f=(d=n.workCode)==null?x.work.workCode:d)==null?``:f,panoIndex:n.panoIndex});e&&(C={workCode:e.work.workCode,panoIndex:e.panoIndex})}T={longitude:n.longitude,latitude:n.latitude,fov:n.fov,distance:n.distance,offset:n.offset?new c.Vector3().copy(n.offset):void 0}}let E=(p=g.duration)==null?this.modeChangeDuration:p;(w===`Floorplan`||w===`Topview`||w===`Mapview`)&&b===w&&(E=0);let D=`fly`;(w===`Panorama`||w===`VRPanorama`||w===`XRPanorama`)&&b===w&&(D=(m=g.effect)==null?`fade`:m),this.emit(`works.request`,$(`works.request`,{input:t,works:y,userAction:i}));let O=(e,t,r)=>{let a=this.getCurrentState(),o=Object.assign(Object.assign({mode:e},t),r);n===`inherit`&&(o=this.getCurrentState()),this.pano=t;let s=Object.assign(Object.assign({initial:{state:o,currentState:a,duration:E,effect:D,userAction:i}},this.commonParams()),this.controllerInits[e]),c=zv[o.mode].initAnimationEndState(s);if(this.controller&&b===e)this.controller.updateWork(y,c,{effect:D,duration:E},i)===!1&&(this.controller.destroy(),this.controller=this.applyController(e,s));else{if(this.controller)this.controller.destroy();else{let t=zv[e].initAnimationEndState(s);this.camera.setFromPose(t),this.emit(`camera.update`,$(`camera.update`,{state:this.getCurrentState(),userAction:i}))}this.controller=this.applyController(e,s);let t=$(`mode.change`,{prevMode:b,mode:e,state:c,userAction:i});try{this.emit(`mode.change`,t)}catch(e){console.error(e)}}this.updateTime(this.currentUpdateArgs.time,0,...this.currentUpdateArgs.args)};Ay.set(this,y);let k=Promise.resolve();if(w===e.Mode.Floorplan||w===e.Mode.Topview||w===e.Mode.Mapview||w===e.Mode.Model){this.modelScene.loaded===!1&&(this.camera.setFromPose(T),Ah(this.state,this.camera.pose));let e=this.modelScene.setModels(y,_);k=Promise.all(e.map(e=>e.loadedReady)).then(()=>{this.needsRender=!0,O(w,C,T),this.emit(`camera.update`,$(`camera.update`,{state:this.getCurrentState(),userAction:i}))})}else{O(w,C,T);let e=this.controller,t=!1;this.modelScene.autoRefine=!1;let n=()=>{this.works===y&&t===!1&&(this.needsRender=!0,this.emit(`camera.update`,$(`camera.update`,{state:this.getCurrentState(),userAction:i})),t=!0,this.modelScene.autoRefine=!0),e.off(`pano.arrived`,n),e.off(`pano.cancel`,n)},r=this.modelScene.setModels(y,_);k=Promise.all(r.map(e=>e.initReady)).then(q),e.once(`pano.arrived`,n),e.once(`pano.cancel`,n),setTimeout(n,((h=g.duration)==null?this.modeChangeDuration:h)+1e3)}return this.emit(`works.load`,$(`works.load`,{input:t,userAction:i,works:y})),k.then(()=>this.ready()).then(()=>{var e;this.emit(`works.ready`,$(`works.ready`,{input:t,userAction:i,works:y})),(e=this.analysis)==null||e.work(y)})}reset(){let e=this.loadWorkTask.then(()=>this.reset_());return this.loadWorkTask=e.catch(e=>{this.throwError(e)}),e}reset_(){return new Promise(e=>{var t;this.controller&&(this.controller.destroy(),this.controller=void 0);let n=this.modelScene.parameter;n.pano0&&n.pano0.map.dispose(),n.pano1&&n.pano1.map!==((t=n.pano0)==null?void 0:t.map)&&n.pano1.map.dispose(),n.set({pano0:null,pano1:null,modelAlpha:1}),Ay.set(this,jy),this.modelScene.setModels(jy,{forceReplaceImmediately:!0}),this.renderer&&this.modelScene.update(this.renderer,this.camera),this.needsRender=!0,this.currentMode=`Panorama`,this.pano={workCode:``,panoIndex:0},this.camera.setFromPose({distance:0,fov:Sy,longitude:0,latitude:0,offset:new c.Vector3(0,0,0)}),this.state={mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance},this.camera.needsRender=!1,this.needsRender=!1,e()})}changeMode(t,n={},r,i=!0,a=!1){return new Promise((o,s)=>{var c,l,u,d;if(!this.renderer)throw Error(`renderer is not initialized.`);n=Object.assign({},n);let f=0;this.controller&&(f=typeof r==`number`?r:(c=r==null?void 0:r.duration)==null?this.modeChangeDuration:c);let p=`fly`;this.controller&&typeof r==`object`&&r.effect&&(p=r.effect);let m=typeof n.panoIndex==`number`?{workCode:(d=(l=n.workCode)==null?(u=this.work)==null?void 0:u.workCode:l)==null?``:d,panoIndex:n.panoIndex}:this.pano;if(!e.Mode.hasOwnProperty(t)){let e=Error(`mode "${t}" is not existed`);this.throwError(e),s(e);return}if((t===e.Mode.Panorama||t===e.Mode.VRPanorama||t===e.Mode.XRPanorama)&&!this.works.getObserver(m)){let e=Error(`PanoId ${Q(m)} not existed.`);this.throwError(e),s(e);return}(t===e.Mode.Floorplan||t===e.Mode.Topview||t===e.Mode.Mapview||t===e.Mode.Model)&&this.modelScene.empty&&(f=0);let h=this.controller,g=this.currentMode,_=()=>{if(this.controller&&this.controller.stopMomentumMovement(),this.controller&&a===!1&&g===t)t===e.Mode.Panorama||t===e.Mode.Model||t===e.Mode.VRPanorama||t===e.Mode.XRPanorama?!gp(this.pano,m)&&`moveToPano`in this.controller&&typeof this.controller.moveToPano==`function`?this.controller.moveToPano(m,Object.assign({duration:f},n),i):this.controller.updateCamera(n,f,i).catch(q):(gp(this.pano,m)||(this.pano=m),this.controller.updateCamera(n,f,i).catch(q));else{let e=Object.assign(Object.assign({},n),m),r=Object.assign(Object.assign({initial:{state:e,currentState:this.getCurrentState(),duration:f,effect:p,userAction:i}},this.commonParams()),this.controllerInits[t]),a=zv[t].initAnimationEndState(r),o=$(`mode.change.request`,{prevMode:this.currentMode,mode:t,state:a,userAction:i});if(this.emit(`mode.change.request`,o),!o.defaultPrevented){h&&h.destroy(),this.controller=this.applyController(t,r);let e=$(`mode.change`,{prevMode:this.currentMode,mode:t,state:a,userAction:i});this.emit(`mode.change`,e)}}o()},v=ri.shared.getContext();v&&(typeof XRSession<`u`&&v instanceof XRSession&&v.end(),ri.shared.setContext(null)),t===e.Mode.VRPanorama?(this.requestFullscreen(),Eh().then(()=>_()).catch(e=>{let t=e instanceof Error?e:Error(String(e));this.exitFullscreen(),this.throwError(t),s(t)})):t===e.Mode.XRPanorama?Dh().then(e=>{ri.shared.setContext(e),a=!0,_()}).catch(e=>{let t=e instanceof Error?e:Error(String(e));this.throwError(t),s(t)}):_()})}getPixels(e,t,n,r,i,a,o){if(!this.renderer)throw Error(`renderer is not initialized.`);let s=U(),l=this.renderer.getPixelRatio(),u=this.renderer.getRenderTarget(),d=this.getSize(new c.Vector2),f=0,p=0,m=1,h=1,g,_,v,y,b;typeof e==`number`?(f=e,typeof t==`number`&&(p=t),typeof n==`number`&&(m=n),typeof r==`number`&&(h=r),g=i,_=a,b=o):(f=e.x,p=e.y,m=e.width,h=e.height,g=e.pixelRatio,_=e.flipY,v=e.helperVisible,y=e.skipPanorama,b=e.buffer),f=Math.floor(f),p=Math.floor(p),m=Math.floor(m),h=Math.floor(h),g=Math.floor(g==null?l:g),_=_==null?!1:_;let x=this.helperVisible,S=this.modelScene.parameter.modelAlpha;this.helperVisible=v==null?this.helperVisible:v,y&&(this.controller instanceof zv.Panorama||this.controller instanceof zv.VRPanorama||this.controller instanceof zv.XRPanorama)&&y===!0&&this.modelScene.parameter.set(`modelAlpha`,1),this.modelScene.update(this.renderer,this.camera);let C=this.getPixelsRenderTarget;C.setSize(m*g,h*g),this.renderer.setRenderTarget(C),this.camera.pixelRatio=g,this.camera.resolution.set(m,h),this.camera.setViewOffset(d.width,d.height,f,d.height-p-h,m,h),this.camera.aspect=d.width/d.height,this.camera.updateTime(s),this.scene.update(this.renderer,this.camera);let w=this.renderer.autoClear,T=this.renderer.autoClearColor,E=this.renderer.autoClearDepth,D=this.renderer.autoClearStencil,O=Oy.copy(this.renderer.getClearColor()),k=this.renderer.getClearAlpha(),A=this.renderer.getScissorTest();this.renderer.autoClear=!0,this.renderer.autoClearColor=!0,this.renderer.autoClearDepth=!0,this.renderer.autoClearStencil=!0,this.renderer.setScissorTest(!1);let j=this.scene.background;this.scene.background=this.camera.isOrthographicCamera?null:j,this.renderer.render(this.scene,this.camera),this.scene.background=j,this.renderer.autoClear=w,this.renderer.autoClearColor=T,this.renderer.autoClearDepth=E,this.renderer.autoClearStencil=D,this.renderer.setClearColor(O,k),this.renderer.setScissorTest(A),this.helperVisible=x,S===void 0?this.modelScene.parameter.reset(`modelAlpha`):this.modelScene.parameter.set(`modelAlpha`,S),this.renderer.setRenderTarget(u),this.camera.clearViewOffset(),this.camera.pixelRatio=l,this.camera.resolution.copy(d),this.camera.aspect=this.camera.resolution.width/this.camera.resolution.height,this.camera.updateTime(s),this.modelScene.update(this.renderer,this.camera),this.scene.update(this.renderer,this.camera);let M=m*g,N=h*g,ee=M*N,P=ee*4;if(b){if(b.length!==P)throw Error(`buffer length is not equals pixels ${P}`)}else b=new Uint8Array(P);if(this.renderer.readRenderTargetPixels(C,0,0,m*g,h*g,b),_){let e=ee/2;for(let t=0,n=0,r=0,i=0;n<e;n++)for(i=(N-Math.floor(n/M)-1)*M+n%M,r=0;r<4;r++)t=b[n*4+r],b[n*4+r]=b[i*4+r],b[i*4+r]=t}return b}getElement(){var e;return(e=this.renderer)==null?void 0:e.domElement}render(e){let t=this.renderer;if(!t)return;let n=t.getRenderTarget();t.setRenderTarget(null);let r=t.autoClear,i=t.autoClearColor,a=t.autoClearDepth,o=t.autoClearStencil,s=Oy.copy(t.getClearColor()),c=t.getClearAlpha(),l=t.getViewport(Ey),u=t.getScissor(Dy),d=t.getScissorTest();t.autoClear=!0,t.autoClearColor=!0,t.autoClearDepth=!0,t.autoClearStencil=!0;let f=t.getSize(ky),p=Math.floor(f.x*this.viewport.left),m=Math.floor(f.y*this.viewport.bottom),h=Math.floor(f.x*this.viewport.width),g=Math.floor(f.y*this.viewport.height);t.setClearColor(this.backgroundColor,this.backgroundAlpha),t.setViewport(p,m,h,g),t.setScissor(p,m,h,g);let _=this.viewport.bottom!==0||this.viewport.left!==0||this.viewport.width!==1||this.viewport.height!==1;t.setScissorTest(_);let v=this.scene.background;this.scene.background=this.camera.isOrthographicCamera?null:v;let y=!0;if(this.controller&&this.controller.render()&&(y=!1),y){let e=this.fiveRenderer.render(t,this.scene,this.modelScene,this.camera,this.needsRender);this.poweredByRealsee&&e&&oy(t)}this.scene.background=v,t.autoClear=r,t.autoClearColor=i,t.autoClearDepth=a,t.autoClearStencil=o,t.setClearColor(s,c),t.setViewport(l),t.setScissor(u),t.setScissorTest(d),t.setRenderTarget(n),e&&ri.shared.add(e,!0)}updateTime(e,t,...n){if(this.currentUpdateArgs={time:e,args:n},this.destroyed)return;if(this.renderer&&co.detectSupport(this.renderer),this.syncingState=this.syncState(e,t),this.controller&&this.controller.updateTime(e,t,...n),this.renderer&&(this.camera.pixelRatio=this.renderer.getPixelRatio(),this.getSize(this.camera.resolution),this.camera.aspect=this.camera.resolution.width/this.camera.resolution.height),this.camera.controllerMode=this.currentMode,this.camera.updateTime(e),this.renderer){let e=this.modelScene.loaded,t=this.modelScene.refined;this.modelScene.update(this.renderer,this.camera),e===!1&&this.modelScene.loaded===!0&&(this.controller&&this.controller.updateModel(this.modelScene),ri.shared.add(()=>{this.emit(`models.load`,$(`models.load`,{modelScene:this.modelScene}))},!0,0,10)),t===!1&&this.modelScene.refined===!0&&ri.shared.add(()=>{this.emit(`models.refined`,$(`models.refined`,{modelScene:this.modelScene}))},!0,0,10)}if(this.camera.autoNearFar){Ty.makeEmpty(),Ty.expandByObject(this.modelScene.boundingMesh);let t=Ty.getBoundingSphere(wy),n=t.radius*2;t.containsPoint(this.camera.position)||(n=this.camera.position.distanceTo(t.center)+t.radius);let r=W(n/500,.001,.1),i=W(n,800);this.camera.near!==r&&(this.camera.near=r),this.camera.far!==i&&(this.camera.far=i),this.camera.updateTime(e)}if(this.renderer){let e=this.modelScene.visible;this.modelScene.visible=!1,this.scene.update(this.renderer,this.camera),this.modelScene.visible=e}if(this.syncingState=!1,this.controller&&this.controller.needsRender===!0&&(this.controller.needsRender=!1,this.needsRender=!0),this.camera.needsRender===!0&&(this.camera.needsRender=!1,this.needsRender=!0),this.modelScene.needsRender===!0&&(this.modelScene.needsRender=!1,this.needsRender=!0),this.scene.needsRender===!0&&(this.scene.needsRender=!1,this.needsRender=!0),this.pbmGSRenderMesh&&this.pbmGSRenderMesh.needsRender===!0&&(this.pbmGSRenderMesh.needsRender=!1,this.needsRender=!0),this.onlyRenderIfNeeds!==!0&&(this.needsRender=!0),this.paused===!0)return;let r=$(`render.prepare`,{needsRender:this.needsRender});this.emit(`render.prepare`,r),r.defaultPrevented&&(this.needsRender=!1);let i=this.needsRender;this.render(),this.needsRender=!1,this.emit(`render`,$(`render`,{needsRender:i})),this.hasListener(`fps`)&&(this.fps.testTime&&e-this.fps.testTime<1e3?this.fps.testCount++:(this.emit(`fps`,this.fps.testCount),this.fps.testTime=e,this.fps.testCount=0))}pause(){this.paused=!0,this.renderer&&this.renderer instanceof Ym&&this.renderer.clear(!0,!0,!0)}play(){this.needsRender=!0,this.paused=!1}moveToPano(t,n={},r=!0){let{controller:i,renderer:a}=this;if(!i)return this.throwError(Error(`controller is not initialized.`)),Promise.resolve();if(!a)return this.throwError(Error(`renderer is not initialized.`)),Promise.resolve();typeof t==`number`&&this.pano.workCode&&(t={workCode:this.pano.workCode,panoIndex:t});let o=this.works.getObserver(t);if(!o)return this.throwError(Error(`pano ${JSON.stringify(t)} not existed.`)),Promise.resolve();let s={workCode:o.work.workCode,panoIndex:o.panoIndex};return`moveToPano`in i&&typeof i.moveToPano==`function`?i.moveToPano(s,n,r):o&&(this.pano=s,this.once(`initAnimation.start`,e=>{n.moveStartCallback&&n.moveStartCallback(e.state)}),this.once(`initAnimation.end`,e=>{n.moveEndCallback&&n.moveEndCallback(e.state)}),this.changeMode(e.Mode.Panorama,n,{effect:n.effect},r)),this.ready()}preloadPano(e,t=q){let n=this.works.getObserver(e);if(!n)return Promise.reject(Error(`Pano ${JSON.stringify(e)} never found`));let r=[`right`,`left`,`up`,`down`,`front`,`back`],i=U();return Promise.all(r.map(e=>{let t=Q({panoIndex:n.panoIndex,workCode:n.work.workCode}),r=Object.assign({key:`pano.${t}.${e}`},mr(this.imageOptions,[`size`,`format`,`quality`,`forceUseExifOrientation`,`mappings`])),i=n.work.getURL(n.images[e]),a=this.imageOptions.transform?this.imageOptions.transform(i,r):Kr(i,r);return _f(this.fiveId,n.work).preload(a)})).then(()=>{let e=U()-i;return t(e),e})}project2d(e,t=!1){if(!this.renderer)return null;if(t){let t=this.camera.position,n=e.clone().sub(t),r=new c.Raycaster(t,n.clone().normalize());r.params.Points={threshold:.1};let[i]=this.modelScene.intersectRaycaster(r);if(i&&i.distance+.01<n.length())return null}let n=e.clone().project(this.camera);if(Math.abs(n.z)>1)return null;let r=this.renderer.getSize(new c.Vector2),i=r.x*this.viewport.width,a=r.y*this.viewport.height,o=r.x*this.viewport.left+(n.x+1)/2*i,s=r.y*(1-this.viewport.bottom-this.viewport.height)+(-n.y+1)/2*a;return new c.Vector2(o,s)}getCurrentState(){return Object.assign(Object.assign({},this.camera.copyPose()),{mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex})}setState(e,t=!1,n=!0){var r,i,a,o,s,l,u,d,f,p;e=mr(e,[`mode`,`workCode`,`panoIndex`,`longitude`,`latitude`,`fov`,`offset`,`distance`]),e.offset&&!(e instanceof c.Vector3)&&(e.offset=new c.Vector3(e.offset.x,e.offset.y,e.offset.z));let m;if(typeof e.panoIndex==`number`)if(e.workCode)m={workCode:e.workCode,panoIndex:e.panoIndex};else{let t=(i=(r=this.work)==null?void 0:r.workCode)==null?``:i,n=this.state.workCode;this.works.filter(e=>e.workCode===n).length>0&&(t=n),m={workCode:t,panoIndex:e.panoIndex}}let h=(a=e.mode)==null?this.state.mode:a,g,_,v,y,b;if(this.controller&&this.controller.stopMomentumMovement(),this.state.mode!==h){if(h===`VRPanorama`){this.changeMode(`VRPanorama`,void 0,void 0,!0);return}let t={workCode:m==null?void 0:m.workCode,panoIndex:m==null?void 0:m.panoIndex};typeof e.longitude==`number`&&(t.longitude=e.longitude),typeof e.latitude==`number`&&(t.latitude=e.latitude),typeof e.fov==`number`&&(t.fov=e.fov),typeof e.distance==`number`&&(t.distance=e.distance),e.offset instanceof c.Vector3&&(t.offset=e.offset);let n=Object.assign(Object.assign({initial:{state:t,currentState:this.getCurrentState(),duration:this.modeChangeDuration,effect:`fly`,userAction:!1}},this.commonParams()),this.controllerInits[h]),r=zv[h].initAnimationEndState(n);g=r.longitude,_=r.latitude,v=r.fov,y=r.offset,b=r.distance}else g=(o=e.longitude)==null?this.state.longitude:o,_=(s=e.latitude)==null?this.state.latitude:s,v=(l=e.fov)==null?this.state.fov:l,y=(u=e.offset)==null?this.state.offset:u,b=(d=e.distance)==null?this.state.distance:d;let x={workCode:(m==null?this.pano:m).workCode,panoIndex:(m==null?this.pano:m).panoIndex,mode:h,longitude:g,latitude:_,fov:v,offset:y,distance:b};this.emit(`state.set`,$(`state.set`,{userAction:n,state:x})),kh(this.state,x)||(this.controller&&x.mode===`VRPanorama`&&x.mode!==this.state.mode?(Oh(this.state,x),this.changeMode(`VRPanorama`)):this.controller&&x.mode===`XRPanorama`&&x.mode!==this.state.mode?(Oh(this.state,x),this.changeMode(`XRPanorama`)):(Oh(this.state,x),this.controller&&n&&(this.controller.userAction=!1),t&&this.state.mode===x.mode&&(this.syncingState=this.syncState(U(),0,t),this.syncingState&&((f=this.controller)==null||f.updateTime(U(),0),this.syncingState=!1)),this.emit(`state.change`,$(`state.change`,{userAction:n,state:this.state})),(p=this.analysis)==null||p.state(this.works,this.state)))}syncState(t,n,r=!1){let i=this.stateSynced;if(this.stateSynced=!1,!this.controller)return!1;if(this.state.mode!==this.currentMode){let e={mode:this.state.mode,workCode:this.state.workCode,panoIndex:this.state.panoIndex,longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset,distance:this.state.distance};return this.changeMode(this.state.mode,e,this.modeChangeDuration,this.controller.userAction),!0}if(!this.controller.isReady())return!1;if(this.controller instanceof zv.Model){if(xh(this.camera.pose.offset,this.state.offset)){let e={longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset};return this.controller.moveToPosition(this.state.offset,Object.assign(Object.assign({},e),{duration:r?0:void 0}),!1),!0}}else{let e={workCode:this.state.workCode,panoIndex:this.state.panoIndex};if(!gp(e,this.pano)&&`moveToPano`in this.controller&&typeof this.controller.moveToPano==`function`){let t={longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset,distance:this.state.distance};return this.controller.moveToPano(e,t,!1),!0}}if(this.controller instanceof zv.Floorplan||this.controller instanceof zv.Topview||this.controller instanceof zv.Mapview){let e=.2,t=Math.PI/45,n=r?this.state.fov:bm(this.camera.pose.fov,this.state.fov,1),i=Math.abs(this.camera.pose.distance-this.state.distance),a=i>e*15?i/15:.2,o=r?this.state.distance:bm(this.camera.pose.distance,this.state.distance,a),s=this.camera.pose.offset.distanceTo(this.state.offset),l=s>e*15?s/15:e,u=r?new c.Vector3().copy(this.state.offset):xm(this.camera.pose.offset,this.state.offset,l),{longitude:d,latitude:f}=r?{longitude:this.state.longitude,latitude:this.state.latitude}:Sm({longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},{longitude:this.state.longitude,latitude:this.state.latitude},t);if(yh(n,this.camera.pose.fov)||xh(u,this.camera.pose.offset)||yh(o,this.camera.pose.distance)||yh(d,this.camera.pose.longitude,Math.PI*2)||yh(f,this.camera.pose.latitude)){let e={x:u.x,y:u.y,z:u.z},t={fov:n};return Object.assign(e,{distance:o}),Object.assign(t,{longitude:d,latitude:f}),this.controller.stopMomentumMovement(),this.controller.cameraMotion.set(t,0).catch(q),this.controller.locationMotion.set(e,0).catch(q),!0}}else{let e=Math.PI/45,t=r?this.state.fov:bm(this.camera.pose.fov,this.state.fov,1),{longitude:n,latitude:i}=r?{longitude:this.state.longitude,latitude:this.state.latitude}:Sm({longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},{longitude:this.state.longitude,latitude:this.state.latitude},e),a=this.state.distance,o=new c.Vector3().copy(this.state.offset);if(yh(a,this.camera.pose.distance)&&(this.state.distance=this.camera.pose.distance),xh(o,this.camera.pose.offset)&&(this.state.offset=this.camera.pose.offset.clone()),yh(n,this.camera.pose.longitude,Math.PI*2)||yh(i,this.camera.pose.latitude)||yh(t,this.camera.pose.fov))return this.controller.stopMomentumMovement(),this.controller.cameraMotion.set({longitude:n,latitude:i,fov:t},0).catch(q),!0}if(this.stateSynced=!0,i===!1&&this.emit(`state.synced`,$(`state.synced`,{userAction:!1,state:this.state})),this.readyCallbacks.length&&this.stateSynced){let t=this.currentMode;if(!(t===e.Mode.Floorplan||t===e.Mode.Topview||t===e.Mode.Mapview||t===e.Mode.Model)||this.modelScene.loaded){let e=this.readyCallbacks.slice();this.readyCallbacks.length=0;for(let t of e)this.controller instanceof zv.Panorama&&t.tile===!0&&!this.controller.isTileReady()?this.readyCallbacks.push(t):t()}}return!1}ready(e={}){return new Promise(t=>{var n;this.readyCallbacks.push(Object.assign(t,{tile:(n=e.tile)==null?!1:n}))}).then(()=>this.model.initReady).then(q)}requestFullscreen(){var e;if(!Th)return;let t=(e=this.getElement())==null?void 0:e.parentNode;t&&`requestFullscreen`in t&&typeof document<`u`&&document.fullscreenElement===null&&t.requestFullscreen()}exitFullscreen(){typeof document<`u`&&document.fullscreenElement&&`exitFullscreen`in document&&document.exitFullscreen()}throwError(e){this.hasListener(`error`)?this.emit(`error`,e):console.error(e)}bindModel(e){let t=()=>{ri.shared.add(()=>{this.emit(`model.load`,$(`model.load`,{work:e.work,model:e,error:null}))},!0)},n=t=>{let{error:n}=t;this.emit(`model.error`,$(`model.error`,{work:e.work,model:e,error:n})),this.throwError(n)},r=()=>{this.emit(`model.changeShownFloor`,$(`model.changeShownFloor`,{work:e.work,model:e,error:null}))},i=t=>{this.emit(`models.tileLoad`,$(`model.tileLoad`,{work:e.work,model:e,tile:t.tile}))},a=t=>{this.emit(`models.tileUnload`,$(`model.tileUnload`,{work:e.work,model:e,tile:t.tile}))},o=()=>{e.removeEventListener(`load`,t),e.removeEventListener(`error`,n),e.removeEventListener(`changeShownFloor`,r),e.removeEventListener(`tileLoad`,i),e.removeEventListener(`tileUnload`,a),e.removeEventListener(`dispose`,o)};e.addEventListener(`load`,t),e.addEventListener(`error`,n),e.addEventListener(`changeShownFloor`,r),e.addEventListener(`tileLoad`,i),e.addEventListener(`tileUnload`,a),e.addEventListener(`dispose`,o),this.emit(`model.request`,$(`model.request`,{work:e.work,model:e,error:null}))}bindWorkFetcher(e){let t=this,n=e.workCode,r=e.allowHosts,i=new fr({get networkSubscribe(){return t.networkSubscribe},requestProxy(e){return Promise.resolve(e).then(e=>t.requestProxy(e,n)).then(e=>{let t=zp(e,r);return t instanceof Error?Promise.reject(t):t})}});vf(this.fiveId,e,i)}commonParams(){return{fiveId:this.fiveId,scene:this.scene,xrCustomObjectsScene:this.xrCustomObjectsScene,helper:this.helperGroup,camera:this.camera,renderer:this.renderer,viewport:this.viewport,element:this.getElement(),works:this.works,imageOptions:this.imageOptions,enableWheel:this.enableWheel,extraElements:this.extraElements,videoTexture:this.videoTexture,modelScene:this.modelScene}}applyController(t,n){if(!this.renderer)throw Error(`renderer is not initialized.`);let r=zv[t];this.currentMode=t;let i=new r(n);for(let e of Vv)i.on(e,(...t)=>{if(this.emit(e,...t))return!1});{let e=zv[t].initAnimationEndState(n),r=n.initial.userAction;kh(this.state,e)||(Oh(this.state,e),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state}))),this.emit(`currentState.change`,$(`currentState.change`,{userAction:r,state:this.getCurrentState()}))}return i.on(`camera.update`,e=>{var t;if(this.controller){let n=this.controller.getTargetState();e.userAction&&this.syncingState===!1&&this.state.mode===n.mode&&!kh(this.state,n)&&(Oh(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:e.userAction,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}this.emit(`currentState.change`,$(`currentState.change`,{userAction:e.userAction,state:this.getCurrentState()}))}),i.on(`initAnimation.start`,e=>{var t;let{state:n,userAction:r}=e;r&&this.state.mode===n.mode&&!kh(this.state,n)&&(Oh(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`initAnimation.end`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!kh(this.state,n)&&(Oh(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.moveTo`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!kh(this.state,n)&&(Oh(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.arrived`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!kh(this.state,n)&&(Oh(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.cancel`,e=>{var t;let{state:n,userAction:r}=e;r&&this.state.mode===n.mode&&!kh(this.state,n)&&(Oh(this.state,n),this.emit(`state.change`,$(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.moveTo`,e=>{let{userAction:t}=e;this.emit(`currentState.change`,$(`currentState.change`,{userAction:t,state:this.getCurrentState()}))}),i.on(`pano.request`,e=>{this.emit(`pano.request`,e),e.defaultPrevented||this.moveToPano(e.state,e.options,e.userAction)}),i.on(`vr.requestExit`,()=>{this.currentMode===e.Mode.VRPanorama&&(this.exitFullscreen(),this.changeMode(e.Mode.Panorama))}),i.on(`error`,e=>this.throwError(e)),i}removeEventListeners(){}get internalLightsEnabled(){let e=this.scene.children.find(e=>e.name===`internalLights`);return e?e.visible:!1}set internalLightsEnabled(e){let t=this.scene.children.find(e=>e.name===`internalLights`);t&&(t.visible=e),t=this.modelScene.children.find(e=>e.name===`internalLights`),t&&(t.visible=e)}get scissor(){return this.viewport}setScissor(e){return this.setViewport(e)}getPose(){let{longitude:e,latitude:t,fov:n,offset:r,distance:i}=this.camera.copyPose();return{longitude:e,latitude:t,fov:n,offset:r.clone(),distance:i}}getLongitudeAndLatitude(){let{longitude:e,latitude:t}=this.getPose();return{longitude:e,latitude:t}}getOffset(){return this.getPose().offset}getCameraLocal(){if(this.pano.workCode&&this.controller&&this.works){let e=this.works.getObserver(this.pano);if(e){let t=new c.Object3D;t.matrix.copy(e.matrix).premultiply(e.work.transform),t.matrix.decompose(t.position,t.quaternion,t.scale),t.matrixAutoUpdate=!1;let n=new c.Vector3(0,0,-1);n.applyQuaternion(this.camera.quaternion);let r=t.quaternion.clone().inverse();return n.applyQuaternion(r),{theta:Math.atan2(n.x,-n.z),phi:-Math.asin(n.y),lookAtVector:n}}}return null}addPass(e){this.fiveRenderer.composer.addPass(e)}removePass(e){let t=this.fiveRenderer.composer.passes.indexOf(e);t!==-1&&this.fiveRenderer.composer.passes.splice(t,1)}insertPass(e,t){this.fiveRenderer.composer.insertPass(e,t)}get renderMode(){return this.fiveRenderer.renderMode}set renderMode(e){this.fiveRenderer.renderMode=e}get enableHQ(){return this.fiveRenderer.renderMode===`point-cloud-high-quality`}set enableHQ(e){this.fiveRenderer.renderMode=e?`point-cloud-high-quality`:`default`,this.needsRender=!0}get enableEDL(){return this.eyeDomeLightingPass.enabled}set enableEDL(e){this.eyeDomeLightingPass.enabled=e,this.needsRender=!0}get enableAdaptiveLuminance(){return this.adaptiveLuminancePass.enabled}set enableAdaptiveLuminance(e){this.adaptiveLuminancePass.enabled=e,this.needsRender=!0}get enableIOSEDR(){return!1}set enableIOSEDR(e){}get enablePostProcessing(){return!0}set enablePostProcessing(e){}get modelSceneNeedsRender(){return this.modelScene.needsRender}set modelSceneNeedsRender(e){this.modelScene.needsRender=e}};if(Ny.Mode={Panorama:`Panorama`,Model:`Model`,Floorplan:`Floorplan`,Topview:`Topview`,Mapview:`Mapview`,VRPanorama:`VRPanorama`,XRPanorama:`XRPanorama`},typeof window<`u`){let e={THREE:c,constructor:Ny,instances:My};Object.assign(window,{__FIVE_DEBUG__:e})}var Py=class{static createButton(e){let t=document.createElement(`button`);function n(){t.style.display=``,t.style.cursor=`pointer`,t.style.left=`calc(50% - 50px)`,t.style.width=`100px`,t.textContent=`ENTER VR`,t.onmouseenter=function(){t.style.opacity=`1.0`},t.onmouseleave=function(){t.style.opacity=`0.5`},t.onclick=function(){e&&e()}}function r(){t.style.display=``,t.style.cursor=`auto`,t.style.left=`calc(50% - 75px)`,t.style.width=`150px`,t.onmouseenter=null,t.onmouseleave=null,t.onclick=null}function i(){r(),t.textContent=`VR NOT SUPPORTED`}function a(e){e.style.position=`absolute`,e.style.bottom=`20px`,e.style.padding=`12px 6px`,e.style.border=`1px solid #fff`,e.style.borderRadius=`4px`,e.style.background=`rgba(0,0,0,0.1)`,e.style.color=`#fff`,e.style.font=`normal 13px sans-serif`,e.style.textAlign=`center`,e.style.opacity=`0.5`,e.style.outline=`none`,e.style.zIndex=`999`}if(`xr`in navigator)return t.id=`VRButton`,t.style.display=`none`,a(t),navigator.xr.isSessionSupported(`immersive-vr`).then(function(e){e?n():i()}),t;{let e=document.createElement(`a`);return window.isSecureContext===!1?(e.href=document.location.href.replace(/^http:/,`https:`),e.innerHTML=`WEBXR NEEDS HTTPS`):(e.href=`https://immersiveweb.dev/`,e.innerHTML=`WEBXR NOT AVAILABLE`),e.style.left=`calc(50% - 90px)`,e.style.width=`180px`,e.style.textDecoration=`none`,a(e),e}}};exports.AdaptiveLuminancePass=Dm,exports.AnimationFrameLoop=ri,exports.BoundingMesh=Gf,exports.Camera=en,exports.CustomShader=un,exports.PBMCustomShader=un,exports.EffectComposer=rm,exports.EyeDomeLightingPass=Am,exports.Fetcher=fr,exports.Five=Ny,exports.FivePass=am,exports.FiveRenderer=Jm,exports.FullScreenQuad=im,exports.Histogram=_m,exports.InternalWebGLRenderer=Ym,exports.Model=If,exports.ModelScene=qf,exports.Motion=Z,exports.NetworkSubscribe=sr,exports.PBMContainer=Kn,exports.PBMGSObject=Yn,exports.PBMGroup=Ct,exports.PBMMesh=yn,exports.PBMMeshMaterial=vn,exports.PBMPanoFilter=dn,exports.PBMPointCloud=kn,exports.PBMPointCloudMaterial=On,exports.PBMSkinnedMesh=bn,exports.PBMUpdateable=ln,exports.PROXY_CONTROLLER_EVENT_NAMES=Vv,exports.PanoCircleMesh=sh,exports.PanoCircleMeshCustom=_h,exports.PanoCircleMeshSolid=fh,exports.Parameter=K,exports.Scene=nh,exports.Subscribe=cn,exports.TextureLoader=hi,exports.Tile=jl,exports.Tile3D=hf,exports.Tile3DModel=hf,exports.TileCache=rd,exports.TileNode=Ku,exports.TileRequestScheduler=ed,exports.Tileset=ld,exports.Trajectory=Xu,exports.TrajectoryNode=Zu,exports.Work=Qp,exports.WorkResolvedObserver=tm,exports.XRButton=Py,exports.controllersDefaultInitArgs=Bv,exports.coordinatesToVector=Vt,exports.createDebugBoundingMesh=El,exports.createWorks=nm,exports.defaultImageURLTransform=Kr,exports.draco=eo,exports.getViewportScale=Kv,exports.headingToLongitude=Wt,exports.imageSupport=kr,exports.isBoundingVolume=xl,exports.isPanoId=_p,exports.ktx2=co,exports.loadAt3d=ea,exports.loadB3dm=rs,exports.loadDome=ia,exports.loadDomez=da,exports.loadFbx=vc,exports.loadGltf=fs,exports.loadPbm=Mi,exports.loadPly=ms,exports.loadPnts=us,exports.loadSplat=tl,exports.loadSpz=Qo,exports.loadX3p=Qc,exports.longitudeToHeading=Ut,exports.makeBoundingVolume=Sl,exports.panoEqual=gp,exports.panoParse=hp,exports.panoStringify=Q,exports.parseWork=$p,exports.vectorToCoordinates=Ht,exports.workToJson=Qf;