webvr.js 62 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103
  1. var krpanoplugin = function() {
  2. function Er(e) {
  3. return ".yes.on.true.1" [s](("." + e)[c]()) >= 0
  4. }
  5. function Sr(e) {}
  6. function xr() {
  7. ar = 0;
  8. if (Tn[at] || _n) if (Tn[_]) {
  9. var e = ("" + navigator.userAgent)[c]()[s]("ucbrowser") > 0;
  10. Tn.chrome || Tn[Ht] ? ar = 2 : e && (ar = 2)
  11. } else ar = 2;
  12. if (ar > 0) {
  13. Vn == 0 && (ar = 1);
  14. if (Tn[E] && _n) setTimeout(Nr, 10);
  15. else {
  16. window[u](ar == 1 ? f: h, Cr, t);
  17. var i = Nn[l] != "" && Nn[l] != n;
  18. setTimeout(Nr, Tn[E] ? 10 : i ? 1500 : 3e3)
  19. }
  20. } else sr == t && (sr = r, xn[J](Nn[l], Nn))
  21. }
  22. function Tr() {
  23. sr == t && (sr = r, er = r, tr = r, nr = r, rr = t, Rr(), xn[J](Nn[O], Nn))
  24. }
  25. function Nr() {
  26. window[o](f, Cr, t),
  27. window[o](h, Cr, t),
  28. Tn[E] && _n ? Tr() : sr == t && (sr = r, xn[J](Nn[l], Nn))
  29. }
  30. function Cr(e) {
  31. window[o](e.type, Cr, t),
  32. e.type == f || e.type == h && e[K] && e.rotationRate ? (sr = r, er = r, tr = r, Tn[E] && (nr = r), Rr(), xn[J](Nn[O], Nn)) : Tn[E] && _n ? Tr() : sr == t && (sr = r, xn[J](Nn[l], Nn))
  33. }
  34. function jr(e) {
  35. var i;
  36. for (i = 0; i < e[kt]; i++) if (e[i] instanceof HMDVRDevice) {
  37. kr = e[i],
  38. kr[F] ? (Dr = kr[F](mt), Pr = kr[F](Tt), Ar = Dr[pn], Or = Pr[pn], Mr = Dr[Et], _r = Pr[Et]) : kr[$] && kr[C] && (Ar = kr[$](mt), Or = kr[$](Tt), Mr = kr[C](mt), _r = kr[C](Tt));
  39. var s = 2 * Math.max(Mr.leftDegrees, Mr.rightDegrees),
  40. o = 2 * Math.max(Mr.upDegrees, Mr.downDegrees);
  41. Br = Math.max(s, o);
  42. break
  43. }
  44. for (i = 0; i < e[kt]; i++) if (e[i] instanceof PositionSensorVRDevice) if (kr == n || kr[vn] == e[i][vn]) {
  45. Lr = e[i];
  46. break
  47. }
  48. kr || Lr ? (er = r, Xn == t && Tn[_] && (rr = r), xn[J](Nn[O], Nn)) : sr == t && (sr = r, xn[J](Nn[l], Nn))
  49. }
  50. function Ir(e) {
  51. Zn = e;
  52. if (e) {
  53. Fr = {
  54. imagehfov: xn.image.hfov,
  55. continuousupdates: xn[p][g],
  56. usercontrol: xn[y][it],
  57. mousetype: xn[y][St],
  58. contextmenu_touch: xn[Rt].touch,
  59. loadwhilemoving: xn[m][A],
  60. stereo: xn[m][Ct],
  61. stereooverlap: xn[m][j],
  62. hlookat: xn[p][V],
  63. vlookat: xn[p][jt],
  64. camroll: xn[p][an],
  65. fovmin: xn[p][ft],
  66. fovmax: xn[p][ht],
  67. fisheye: xn[p][X],
  68. fov: xn[p].fov,
  69. maxpixelzoom: xn[p][d],
  70. fovtype: xn[p][G],
  71. stereographic: xn[p][x],
  72. fisheyefovlink: xn[p][b],
  73. pannini: xn[p][nt],
  74. architectural: xn[p][v],
  75. limitview: xn[p][T],
  76. area_mode: xn[Lt].mode,
  77. area_align: xn[Lt].align,
  78. area_x: xn[Lt].x,
  79. area_y: xn[Lt].y,
  80. area_width: xn[Lt][Y],
  81. area_height: xn[Lt][N],
  82. maxmem: xn.memory[en]
  83. },
  84. xn[Lt].mode = "align",
  85. xn[Lt].align = "lefttop",
  86. xn[Lt].x = "0",
  87. xn[Lt].y = "0",
  88. xn[Lt][Y] = "100%",
  89. xn[Lt][N] = "100%",
  90. xn[Rt].touch = t,
  91. xn[p][g] = r,
  92. nr && Tn[E] && !mr ? xn[y][St] = "drag2d": xn[y][it] = "off",
  93. xn[m][Ct] = r,
  94. xn[m][A] = r,
  95. xn[p][T] = "off",
  96. xn[p][nt] = 0,
  97. xn[p][v] = 0,
  98. xn[p][G] = "VFOV",
  99. xn[p][ft] = 0,
  100. xn[p][ht] = 179,
  101. xn[p][X] = 0,
  102. xn[p].fov = Br,
  103. xn[p][d] = 0,
  104. xn[p][x] = r,
  105. xn[p][b] = 0,
  106. cr = xn[p][V],
  107. ci = 0,
  108. Tn[E] || (cr -= Ci()),
  109. ui();
  110. if (tr || rr) zr(0, 0),
  111. nr && Tn[E] && !mr || (xn[yt] = r);
  112. ri(),
  113. Dn && oi(r),
  114. xn.set("events[__webvr].keep", r),
  115. xn.set("events[__webvr].onnewpano", ii),
  116. xn.set("events[__webvr].onresize", si),
  117. (tr || rr) && Ko(r),
  118. xn[J](Nn.onentervr, Nn)
  119. } else if (Fr) {
  120. xn.set("events[__webvr].name", n),
  121. xn[p][g] = Fr[g],
  122. xn[y][it] = Fr[it],
  123. xn[y][St] = Fr[St],
  124. xn[Rt].touch = Fr.contextmenu_touch,
  125. xn[m][A] = Fr[A],
  126. xn[m][Ct] = Fr[Ct],
  127. xn[m][j] = Fr[j],
  128. xn[p][an] = 0;
  129. if (Fr.imagehfov == xn.image.hfov) xn[p][ft] = Fr[ft],
  130. xn[p][ht] = Fr[ht],
  131. xn[p].fov = Fr.fov,
  132. xn[p][d] = Fr[d],
  133. xn[p][G] = Fr[G],
  134. xn[p][T] = Fr[T],
  135. xn[p][X] = Fr[X],
  136. xn[p][x] = Fr[x],
  137. xn[p][b] = Fr[b],
  138. xn[p][nt] = Fr[nt],
  139. xn[p][v] = Fr[v];
  140. else {
  141. var i = xn.xml[p];
  142. xn[p][ft] = i && !isNaN(Number(i[ft])) ? Number(i[ft]) : 1,
  143. xn[p][ht] = i && !isNaN(Number(i[ht])) ? Number(i[ht]) : 140,
  144. xn[p].fov = i && !isNaN(Number(i.fov)) ? Number(i.fov) : 90,
  145. xn[p][X] = i && !isNaN(Number(i[X])) ? Number(i[X]) : 0,
  146. xn[p][nt] = i && !isNaN(Number(i[nt])) ? Number(i[nt]) : 0,
  147. xn[p][v] = i && !isNaN(Number(i[v])) ? Number(i[v]) : 0,
  148. xn[p][d] = i && !isNaN(Number(i[d])) ? Number(i[d]) : 2,
  149. xn[p][G] = i && i[G] ? i[G] : "MFOV",
  150. xn[p][T] = i && i[T] ? i[T] : pt,
  151. xn[p][x] = r,
  152. xn[p][b] = .5
  153. }
  154. xn[Lt].mode = Fr.area_mode,
  155. xn[Lt].align = Fr.area_align,
  156. xn[Lt].x = Fr.area_x,
  157. xn[Lt].y = Fr.area_y,
  158. xn[Lt][Y] = Fr.area_width,
  159. xn[Lt][N] = Fr.area_height,
  160. xn[W] = -1,
  161. xn[D] = t,
  162. xn.memory[en] = Fr[en],
  163. Fr = n,
  164. Qn && (ji(Qn, t), Qn = n),
  165. Ko(t),
  166. oi(t),
  167. ui(),
  168. xn[J](Nn.onexitvr, Nn)
  169. }
  170. }
  171. function Rr() {
  172. if (qr) return qr;
  173. var e = "Unknown",
  174. t = 0,
  175. n = 1536,
  176. r = Math.min(screen[Y], screen[N]),
  177. i = Math.max(screen[Y], screen[N]),
  178. o = window.devicePixelRatio || 1;
  179. if (Tn.iphone) if (i == 568) {
  180. var u = xn.webGL.context,
  181. a = "" + u.getParameter(u.VERSION);
  182. a[s]("A8 GPU") > 0 ? (e = ln, t = 4.7) : (e = "iPhone 5", t = 4, n = 1024)
  183. } else i == 667 ? o == 2 ? (e = ln, t = 4.7) : (e = on, t = 5.5) : i == 736 && (e = on, t = 5.5);
  184. else {
  185. var f = navigator.userAgent[c]();
  186. f[s]("gt-n710") >= 0 ? (t = 5.5, e = "Note 2") : f[s]("sm-n900") >= 0 ? (t = 5.7, e = "Note 3") : f[s]("sm-n910") >= 0 ? (t = 5.7, e = "Note 4") : f[s]("gt-i930") >= 0 || f[s](sn) >= 0 ? (t = 4.7, e = "Galaxy S3") : f[s]("gt-i950") >= 0 || f[s](sn) >= 0 ? (t = 5, e = "Galaxy S4") : f[s]("sm-g900") >= 0 || f[s]("sc-04f") >= 0 || f[s]("scl23") >= 0 ? (t = 5.1, e = "Galaxy S5") : f[s]("sm-g920") >= 0 || f[s]("sm-g925") >= 0 ? (t = 5.1, e = "Galaxy S6") : f[s]("lg-d85") >= 0 || f[s]("vs985") >= 0 || f[s]("lgls990") >= 0 || f[s]("lgus990") >= 0 ? (t = 5.5, e = "LG G3") : f[s]("lg-h810") >= 0 || f[s]("lg-h815") >= 0 || f[s]("lgls991") >= 0 ? (t = 5.5, e = "LG G4") : f[s]("xt1068") >= 0 || f[s]("xt1069") >= 0 || f[s]("xt1063") >= 0 ? (t = 5.5, e = "Moto G 2g") : f[s]("xt1058") >= 0 ? (t = 5.2, e = "Moto X 2g") : f[s]("d6653") >= 0 || f[s]("d6603") >= 0 ? (t = 5.2, e = "Xperia Z3") : f[s]("xperia z4") >= 0 ? (t = 5.5, e = "Xperia Z4") : f[s]("htc_p4550") >= 0 || f[s]("htc6525lv") >= 0 || f[s]("htc_pn071") >= 0 ? (t = 5, e = "One M8") : f[s]("nexus 4") >= 0 ? (t = 4.7, e = "Nexus 4") : f[s]("nexus 5") >= 0 ? (t = 5, e = "Nexus 5") : f[s]("nexus 6") >= 0 ? (t = 6, e = "Nexus 6") : f[s]("lumia 930") >= 0 && (t = 5, e = "Lumia 930")
  187. }
  188. t == 0 && (xn[J](Nn[Nt], Nn), t = 5);
  189. var l = Math[Bt](t * t / (1 + r / i * (r / i))) * 25.4,
  190. h = l * r / i;
  191. return qr = {
  192. screendiagonal_inch: t,
  193. screenwidth_mm: l,
  194. screenheight_mm: h,
  195. screenwidth_px: i * o,
  196. screenheight_px: r * o,
  197. devicename: e,
  198. best_res: n
  199. },
  200. qr
  201. }
  202. function Ur() {
  203. Fn < 1 ? Fn = 1 : Fn > 179.9 && (Fn = 179.9),
  204. In < 0 ? In = 0 : In > 5 && (In = 5);
  205. var e = qn[mn]("|"),
  206. t;
  207. for (t = 0; t < 4; t++) {
  208. var n = Number(e[t]);
  209. isNaN(n) && (n = t == 0 ? 1 : 0),
  210. Rn[t] = n
  211. }
  212. Un = Rn[0] != 1 || Rn[1] != 0 || Rn[2] != 0 || Rn[3] != 0,
  213. or[a] && (tr || rr) && (zr(0, 0), Ko(r))
  214. }
  215. function zr(e, n) {
  216. var i = Rr(),
  217. s = 0,
  218. o = 0,
  219. u = xn.webGL.canvas;
  220. if (u) {
  221. var a = Number(xn[m].framebufferscale);
  222. s = u[Y],
  223. o = u[N],
  224. !isNaN(a) && a != 0 && (s /= a, o /= a)
  225. }
  226. if (e <= 0 || n <= 0) e = s,
  227. n = o;
  228. var f = Fn,
  229. l = In;
  230. f = Math.tan(f * .5 * br),
  231. l = Math.exp(l) - 1;
  232. var c = Math.atan(f) * 2 / 2,
  233. h = l * 1e3,
  234. p = 1e3,
  235. d = p * Math.sin(c),
  236. v = p * Math.cos(c),
  237. g = 2 * Math.atan(d / (h + v));
  238. f = Math.tan(g / 2);
  239. var y = l,
  240. b = Hn;
  241. b /= jn;
  242. var w = i.screenwidth_mm,
  243. E = i.screenheight_mm;
  244. if (Bn > 0) {
  245. var S = Math.min(screen[Y], screen[N]),
  246. x = Math.max(screen[Y], screen[N]);
  247. w = Math[Bt](Bn * Bn / (1 + S / x * (S / x))) * 25.4,
  248. E = w * S / x
  249. }
  250. var T = w / 2 - b,
  251. C = 2 * (T / w),
  252. k = e,
  253. L = n,
  254. A = i.screenwidth_px,
  255. O = i.screenheight_px,
  256. M = r;
  257. if (nr || Tn.tablet || n > e) M = t;
  258. k <= 0 && (k = s),
  259. L <= 0 && (L = o);
  260. var _ = E / 70.9,
  261. D = f;
  262. D *= _,
  263. hr = _ / .69,
  264. M && (D *= L / O, C = 2 * (w * (k / A) / 2 - b) / (w * (k / A)));
  265. var P = 2 * Math.atan(D) * wr;
  266. pr = P,
  267. dr = y,
  268. vr = C,
  269. Wr()
  270. }
  271. function Wr() {
  272. var e = xn[p];
  273. pr > 0 && (e[X] = dr, e.fov = pr, e[ft] = pr, e[ht] = pr, e[d] = 0, e[G] = "VFOV", e[x] = r, e[b] = 0, e[T] = "off", xn[m][j] = vr)
  274. }
  275. function Xr() {
  276. return Tn[E] && kr && kr.deviceName ? kr.deviceName: (Rr(), qr ? qr[Gt] : "")
  277. }
  278. function Vr() {
  279. return qr ? qr.screendiagonal_inch: 0
  280. }
  281. function $r(e) {
  282. if (("" + e)[c]() == pt) Bn = 0,
  283. Ur();
  284. else {
  285. var t = parseFloat(e);
  286. if (isNaN(t) || t <= 0) t = 0;
  287. Bn = t,
  288. Ur()
  289. }
  290. }
  291. function Jr() {
  292. var e = Bn;
  293. return e <= 0 ? pt: e
  294. }
  295. function Kr() {
  296. return Tn[_] ? xn[m].viewerlayer: xn.webGL.canvas
  297. }
  298. function Qr() {
  299. xn.trace(0, "update - stereo=" + xn[m][Ct]),
  300. or[a] && (tr || rr) && (zr(0, 0), Ko(r))
  301. }
  302. function Gr() {
  303. if (er && Zn == t) if (tr == t) {
  304. var e = Kr();
  305. Sn[u](Tn[w][k][Yt], li),
  306. or[a] = r,
  307. Ir(r),
  308. ur = r,
  309. rr = t,
  310. Xn == t && Tn[_] && (rr = r),
  311. rr && (ur = t),
  312. e[Tn[w][k].requestfullscreen]({
  313. vrDisplay: kr,
  314. vrDistortion: ur
  315. }),
  316. Tn[at] && ei(xn[p][V]),
  317. ur == t && zr()
  318. } else {
  319. Sn[u](Tn[w][k][Yt], li),
  320. or[a] = r,
  321. Ir(r);
  322. if (Tn[at] || Tn.tablet) ar == 1 ? window[u](f, Mi, r) : ar == 2 && window[u](h, Bs, r);
  323. nr == t && Tn[w][k].touch && xn[y][$t][u](Tn[w][k][Kt], ni, t)
  324. }
  325. }
  326. function Yr() {
  327. or[a] = t,
  328. xn.get(yt) && xn.set(yt, t),
  329. window[o](f, Mi, r),
  330. window[o](h, Bs, r),
  331. Tn[w][k].touch && xn[y][$t][o](Tn[w][k][Kt], ni, t),
  332. Ir(t),
  333. xn[p].haschanged = r
  334. }
  335. function Zr() {
  336. er && (Zn ? Yr() : Gr())
  337. }
  338. function ei(e) {
  339. e === undefined ? e = 0 : (e = Number(e), isNaN(e) && (e = 0));
  340. var t = xn[p][V];
  341. if (Lr) {
  342. try {
  343. Lr.resetSensor !== undefined && Lr.resetSensor()
  344. } catch(n) {}
  345. try {
  346. Lr.zeroSensor !== undefined && Lr.zeroSensor()
  347. } catch(n) {}
  348. t = 0,
  349. cr = 0
  350. }
  351. nr && (xn[p][V] = e),
  352. cr = cr - t + e,
  353. ci = 0
  354. }
  355. function ni(e) {
  356. var i = t;
  357. if (Mn == t) i = r;
  358. else {
  359. var s = xn[y].getMousePos(e[fn] ? e[fn][0] : e);
  360. s.x /= xn.stagescale,
  361. s.y /= xn.stagescale;
  362. if (e.type == Tn[w][k][Kt]) ti == n ? (ti = s, xn[y][$t][u](Tn[w][k][un], ni, r), xn[y][$t][u](Tn[w][k][gn], ni, r)) : i = r;
  363. else if (e.type == Tn[w][k][gn]) i = r;
  364. else if (e.type == Tn[w][k][un] && ti) {
  365. var a = ti.x,
  366. f = s.x;
  367. if (xn[m][Ct]) {
  368. var l = xn.stagewidth * .5; (a >= l || f >= l) && (a < l || f < l) && (f = a)
  369. }
  370. var c = xn[cn](a, ti.y, t),
  371. h = xn[cn](f, s.y, t),
  372. p = h.x - c.x;
  373. ti = s,
  374. cr -= p
  375. }
  376. }
  377. i && (ti = n, xn[y][$t][o](Tn[w][k][un], ni, r), xn[y][$t][o](Tn[w][k][gn], ni, r))
  378. }
  379. function ri() {
  380. if (An == t) xn[W] = -1,
  381. xn[D] = t;
  382. else if (xn.image.type == "cube" && xn.image.multires) {
  383. var e = Rr().best_res,
  384. n = 0,
  385. s = -1,
  386. o = 0,
  387. u = xn.image.level.getArray(),
  388. a = u[kt];
  389. if (a > 0) for (i = 0; i < a; i++) {
  390. var f = u[i].tiledimagewidth,
  391. l = Math.abs(f - e);
  392. if (s == -1 || l < s) n = f,
  393. s = l,
  394. o = i
  395. }
  396. if (s > 0) {
  397. xn[W] = o,
  398. xn[D] = r;
  399. if (n > 0) {
  400. var c = 4 + 8 * (n * n * 6 + 1048575 >> 20);
  401. c > xn.memory[en] && (xn.memory[en] = c)
  402. }
  403. }
  404. }
  405. }
  406. function ii() {
  407. or[a] && ri()
  408. }
  409. function si() {
  410. ii(),
  411. Ur()
  412. }
  413. function ui() {
  414. fr = 0,
  415. ki.t = 0,
  416. Li.t = 0,
  417. yo(),
  418. So = 0,
  419. go = t,
  420. Ls = n
  421. }
  422. function fi(e) {
  423. ai == 1 ? (yr.apply(document), ai = 0) : (gr.apply(Kr()), ai = 1)
  424. }
  425. function li(e) {
  426. var n = Kr(),
  427. i = !!(Sn[Jt] || Sn[Mt] || Sn[zt] || Sn[gt] || Sn[qt]);
  428. if (i && or[a]) {
  429. try {
  430. Tn[E] && mr && (gr.apply(n), nr && (ai = 1, xn[y][$t][u](nn, fi, t)))
  431. } catch(s) {}
  432. Tn[E] && n[u](rn, hi, t)
  433. } else window[o](f, Mi, r),
  434. window[o](h, Bs, r),
  435. n[o](rn, hi, t),
  436. xn[y][$t][o](nn, fi, t),
  437. or[a] = t,
  438. Ir(t)
  439. }
  440. function hi(e) {
  441. var t = Kr();
  442. if (Sn.pointerLockElement === t || Sn.mozPointerLockElement === t) {
  443. var n = e.movementX || e.mozMovementX,
  444. r = e.movementY || e.mozMovementY;
  445. if (!isNaN(n)) {
  446. ci += n * kn;
  447. while (ci < 0) ci += Math.PI * 2;
  448. while (ci >= Math.PI * 2) ci -= Math.PI * 2
  449. } else n = 0;
  450. nr && (isNaN(r) && (r = 0), xn[p][V] += n * kn * wr, xn[p][jt] = Math.max(Math.min(xn[p][jt] + r * kn * wr, 120), -120))
  451. }
  452. }
  453. function pi(e, t, n, r) {
  454. this.x = e,
  455. this.y = t,
  456. this.z = n,
  457. this.w = r
  458. }
  459. function di(e) {
  460. var t = Math[Bt](e.x * e.x + e.y * e.y + e.z * e.z + e.w * e.w);
  461. t === 0 ? (e.x = e.y = e.z = 0, e.w = 1) : (t = 1 / t, e.x *= t, e.y *= t, e.z *= t, e.w *= t)
  462. }
  463. function vi(e) {
  464. e.x *= -1,
  465. e.y *= -1,
  466. e.z *= -1,
  467. di(e)
  468. }
  469. function mi(e, t) {
  470. return e.x * t.x + e.y * t.y + e.z * t.z + e.w * t.w
  471. }
  472. function gi(e) {
  473. return Math[Bt](e.x * e.x + e.y * e.y + e.z * e.z + e.w * e.w)
  474. }
  475. function yi(e, t) {
  476. var n = e.x,
  477. r = e.y,
  478. i = e.z,
  479. s = e.w,
  480. o = t.x,
  481. u = t.y,
  482. a = t.z,
  483. f = t.w;
  484. e.x = n * f + s * o + r * a - i * u,
  485. e.y = r * f + s * u + i * o - n * a,
  486. e.z = i * f + s * a + n * u - r * o,
  487. e.w = s * f - n * o - r * u - i * a
  488. }
  489. function bi(e, t) {
  490. var n = t.x,
  491. r = t.y,
  492. i = t.z,
  493. s = t.w,
  494. o = e.x,
  495. u = e.y,
  496. a = e.z,
  497. f = e.w;
  498. e.x = n * f + s * o + r * a - i * u,
  499. e.y = r * f + s * u + i * o - n * a,
  500. e.z = i * f + s * a + n * u - r * o,
  501. e.w = s * f - n * o - r * u - i * a
  502. }
  503. function wi(e, t, n) {
  504. var r = e.x,
  505. i = e.y,
  506. s = e.z,
  507. o = e.w,
  508. u = r * t.x + i * t.y + s * t.z + o * t.w;
  509. u < 0 ? (u = -u, e.x = -t.x, e.y = -t.y, e.z = -t.z, e.w = -t.w) : (e.x = t.x, e.y = t.y, e.z = t.z, e.w = t.w);
  510. if (u >= 1) {
  511. e.w = o,
  512. e.x = r,
  513. e.y = i,
  514. e.z = s;
  515. return
  516. }
  517. var a = Math.acos(u),
  518. f = Math[Bt](1 - u * u);
  519. if (Math.abs(f) < .001) {
  520. e.w = .5 * (o + e.w),
  521. e.x = .5 * (r + e.x),
  522. e.y = .5 * (i + e.y),
  523. e.z = .5 * (s + e.z);
  524. return
  525. }
  526. var l = Math.sin((1 - n) * a) / f,
  527. c = Math.sin(n * a) / f;
  528. e.w = o * l + e.w * c,
  529. e.x = r * l + e.x * c,
  530. e.y = i * l + e.y * c,
  531. e.z = s * l + e.z * c
  532. }
  533. function Ei(e, t, n) {
  534. var r = n / 2,
  535. i = Math.sin(r);
  536. e.x = t.x * i,
  537. e.y = t.y * i,
  538. e.z = t.z * i,
  539. e.w = Math.cos(r)
  540. }
  541. function Si(e, t, n, r, i) {
  542. var s = Math.cos(t / 2),
  543. o = Math.cos(n / 2),
  544. u = Math.cos(r / 2),
  545. a = Math.sin(t / 2),
  546. f = Math.sin(n / 2),
  547. l = Math.sin(r / 2);
  548. return i === "XYZ" ? (e.x = a * o * u + s * f * l, e.y = s * f * u - a * o * l, e.z = s * o * l + a * f * u, e.w = s * o * u - a * f * l) : i === Wt ? (e.x = a * o * u + s * f * l, e.y = s * f * u - a * o * l, e.z = s * o * l - a * f * u, e.w = s * o * u + a * f * l) : i === "ZXY" ? (e.x = a * o * u - s * f * l, e.y = s * f * u + a * o * l, e.z = s * o * l + a * f * u, e.w = s * o * u - a * f * l) : i === "ZYX" ? (e.x = a * o * u - s * f * l, e.y = s * f * u + a * o * l, e.z = s * o * l - a * f * u, e.w = s * o * u + a * f * l) : i === "YZX" ? (e.x = a * o * u + s * f * l, e.y = s * f * u + a * o * l, e.z = s * o * l - a * f * u, e.w = s * o * u - a * f * l) : i === "XZY" && (e.x = a * o * u - s * f * l, e.y = s * f * u - a * o * l, e.z = s * o * l + a * f * u, e.w = s * o * u + a * f * l),
  549. e
  550. }
  551. function xi(e, t, n) {
  552. var r, i, s, o, u, a, f, l, c, h, p, d;
  553. i = t.x,
  554. s = t.y,
  555. o = t.z,
  556. u = Math[Bt](i * i + s * s + o * o),
  557. u > 0 && (i /= u, s /= u, o /= u),
  558. a = n.x,
  559. f = n.y,
  560. l = n.z,
  561. c = Math[Bt](a * a + f * f + l * l),
  562. c > 0 && (a /= c, f /= c, l /= c),
  563. r = i * a + s * f + o * l + 1,
  564. r < 1e-6 ? (r = 0, Math.abs(i) > Math.abs(o) ? (h = -s, p = i, d = 0) : (h = 0, p = -o, d = s)) : (h = s * l - o * f, p = o * a - i * l, d = i * f - s * a),
  565. e.x = h,
  566. e.y = p,
  567. e.z = d,
  568. e.w = r,
  569. di(e)
  570. }
  571. function Ti(e, t, n) {
  572. function r(e, t, n) {
  573. return e < t ? t: e > n ? n: e
  574. }
  575. if (!t || isNaN(t.x) || isNaN(t.y) || isNaN(t.z) || isNaN(t.w)) return;
  576. var i = t.x * t.x,
  577. s = t.y * t.y,
  578. o = t.z * t.z,
  579. u = t.w * t.w;
  580. if (n === "XYZ") e[0] = Math[tt](2 * (t.x * t.w - t.y * t.z), u - i - s + o),
  581. e[1] = Math.asin(r(2 * (t.x * t.z + t.y * t.w), -1, 1)),
  582. e[2] = Math[tt](2 * (t.z * t.w - t.x * t.y), u + i - s - o);
  583. else if (n === Wt) e[0] = Math.asin(r(2 * (t.x * t.w - t.y * t.z), -1, 1)),
  584. e[1] = Math[tt](2 * (t.x * t.z + t.y * t.w), u - i - s + o),
  585. e[2] = Math[tt](2 * (t.x * t.y + t.z * t.w), u - i + s - o);
  586. else if (n === "ZXY") e[0] = Math.asin(r(2 * (t.x * t.w + t.y * t.z), -1, 1)),
  587. e[1] = Math[tt](2 * (t.y * t.w - t.z * t.x), u - i - s + o),
  588. e[2] = Math[tt](2 * (t.z * t.w - t.x * t.y), u - i + s - o);
  589. else if (n === "ZYX") e[0] = Math[tt](2 * (t.x * t.w + t.z * t.y), u - i - s + o),
  590. e[1] = Math.asin(r(2 * (t.y * t.w - t.x * t.z), -1, 1)),
  591. e[2] = Math[tt](2 * (t.x * t.y + t.z * t.w), u + i - s - o);
  592. else if (n === "YZX") e[0] = Math[tt](2 * (t.x * t.w - t.z * t.y), u - i + s - o),
  593. e[1] = Math[tt](2 * (t.y * t.w - t.x * t.z), u + i - s - o),
  594. e[2] = Math.asin(r(2 * (t.x * t.y + t.z * t.w), -1, 1));
  595. else {
  596. if (n !== "XZY") return;
  597. e[0] = Math[tt](2 * (t.x * t.w + t.y * t.z), u - i + s - o),
  598. e[1] = Math[tt](2 * (t.x * t.z + t.y * t.w), u + i - s - o),
  599. e[2] = Math.asin(r(2 * (t.z * t.w - t.x * t.y), -1, 1))
  600. }
  601. }
  602. function Ni(e, t) {
  603. var r, i, s, o;
  604. e == n ? (r = Math.tan(50 * br), i = Math.tan(50 * br), s = Math.tan(45 * br), o = Math.tan(45 * br)) : (r = Math.tan(e.upDegrees * br), i = Math.tan(e.downDegrees * br), s = Math.tan(e.leftDegrees * br), o = Math.tan(e.rightDegrees * br));
  605. var u = 2 / (s + o),
  606. a = 2 / (r + i);
  607. t[0] = u,
  608. t[1] = 0,
  609. t[2] = 0,
  610. t[3] = 0,
  611. t[4] = 0,
  612. t[5] = -a,
  613. t[6] = 0,
  614. t[7] = 0,
  615. t[8] = (s - o) * u * .5,
  616. t[9] = -((r - i) * a * .5),
  617. t[10] = 65535 / 65536,
  618. t[11] = 1,
  619. t[12] = 0,
  620. t[13] = 0,
  621. t[14] = 65535 / 65536 - 1,
  622. t[15] = 1
  623. }
  624. function Ci() {
  625. var e = Number.NaN,
  626. t = screen[Y] > screen[N],
  627. n = screen[st] || screen.msOrientation || screen.mozOrientation;
  628. if (n) {
  629. n = ("" + n)[c]();
  630. var r = n[s]("portrait") >= 0,
  631. i = n[s]("landscape") >= 0,
  632. o = n[s]("primary") >= 0,
  633. u = n[s]("secondary") >= 0;
  634. r && o ? e = 0 : i && o ? e = 90 : i && u ? e = -90 : r && u && (e = 180),
  635. !isNaN(e) && !Tn[at] && (e -= 90)
  636. }
  637. return isNaN(e) && (e = xn._have_top_access ? top[st] : window[st]),
  638. isNaN(e) && (Tn[at] ? e = t ? 90 : 0 : e = t ? 0 : 90),
  639. Tn.tablet && Tn[Ht] && (e += 90),
  640. e
  641. }
  642. function Mi(e) {
  643. if (!or[a]) return;
  644. var t = xn[B],
  645. r = t - Hs;
  646. Hs = t;
  647. var i = Ci() * br,
  648. s = e.alpha * br,
  649. o = e.beta * br,
  650. u = e.gamma * br;
  651. Oi === n && (Oi = s),
  652. s = s - Oi + Math.PI;
  653. var f = Math.cos(s),
  654. l = Math.sin(s),
  655. c = Math.cos(o),
  656. h = Math.sin(o),
  657. p = Math.cos(u),
  658. d = Math.sin(u);
  659. s = Math[tt]( - l * h * p - f * d, l * d - f * h * p),
  660. o = -Math.asin(c * p),
  661. u = Math[tt](c * d, -h) - Math.PI,
  662. ki.q.x = Li.q.x,
  663. ki.q.y = Li.q.y,
  664. ki.q.z = Li.q.z,
  665. ki.q.w = Li.q.w,
  666. ki.t = Li.t;
  667. var v = Li.q;
  668. Li.t = t,
  669. fr++,
  670. Si(v, o, s + i, u - i, Wt)
  671. }
  672. function _i() {
  673. if (or[a]) {
  674. xn[p][g] = r;
  675. var e = [0, 0, 0];
  676. if (Lr) {
  677. Hr = Lr.getState();
  678. if (Hr) {
  679. rr && Wr();
  680. if (Ln) {
  681. var t = Hr.position;
  682. if (t) {
  683. ci = 0;
  684. var i = 400;
  685. xn[p].tx = t.x * i,
  686. xn[p].ty = t.y * i,
  687. xn[p].tz = t.z * i
  688. }
  689. }
  690. Ti(e, Hr[st], Wt);
  691. var s = 0;
  692. Tn[_] && (s = Ci()),
  693. s += cr,
  694. xn[p][V] = ( - e[1] + ci) * wr + s,
  695. xn[p][jt] = -e[0] * wr,
  696. xn[p][an] = -e[2] * wr
  697. }
  698. } else if (tr) {
  699. Wr();
  700. if (fr > lr) {
  701. var o = n;
  702. if ($n == 0) o = Li.q;
  703. else if (($n == 4 || $n >= 6) && ar == 2) o = Li.q,
  704. Ds(o);
  705. else if ($n <= 3 || $n == 5 || ar == 1) if (ki.t > 0 && Li.t > 0) {
  706. var u = xn[B],
  707. f = Li.t - ki.t,
  708. l = 0,
  709. c = 0,
  710. h = 1;
  711. $n == 1 || $n == 2 ? l = u - Li.t: (l = u - ki.t, h = 2),
  712. f <= 0 ? c = 1 : (c = l / f, c > h && (c = h)),
  713. Ai.x = ki.q.x,
  714. Ai.y = ki.q.y,
  715. Ai.z = ki.q.z,
  716. Ai.w = ki.q.w,
  717. wi(Ai, Li.q, c),
  718. o = Ai
  719. }
  720. if (o) {
  721. Ti(e, o, Wt);
  722. var s = Ci();
  723. xn[p][V] = cr + ( - e[1] + ci) * wr + s,
  724. xn[p][jt] = -e[0] * wr,
  725. xn[p][an] = -e[2] * wr
  726. }
  727. }
  728. }
  729. }
  730. }
  731. function Di(e, n) {
  732. tr == t && ur == r && Ni(e == 1 ? Mr: _r, n)
  733. }
  734. function Pi(e) {
  735. var t = 0;
  736. return e == 1 ? Ar && Ar.x ? t = Ar.x: t = -0.03 : e == 2 && (Or && Or.x ? t = Or.x: t = .03),
  737. t *= 320 / Cn,
  738. t
  739. }
  740. function Hi(e, i) {
  741. var s = !!(Sn[Jt] || Sn[Mt] || Sn[zt] || Sn[gt] || Sn[qt]);
  742. if (or[a] && s && tr == t && ur == r) {
  743. var o = 0,
  744. u = 0;
  745. if (Dr) o = Dr[lt][Y] + Pr[lt][Y],
  746. u = Math.max(Dr[lt][N], Pr[lt][N]);
  747. else if (S in kr) {
  748. var f = kr[S](mt),
  749. l = kr[S](Tt);
  750. o = f[Y] + l[Y],
  751. u = Math.max(f[N], l[N])
  752. } else if (H in kr) {
  753. var c = kr[H]();
  754. o = c[Y],
  755. u = c[N]
  756. } else z in kr ? (o = kr[z][Y], u = kr[z][N]) : (o = 2e3, u = 1056);
  757. if (o > 0 && u > 0) {
  758. var h = 1;
  759. return o *= h,
  760. u *= h,
  761. {
  762. w: o,
  763. h: u
  764. }
  765. }
  766. } else or[a] && (tr || ur == t) && zr(e, i);
  767. return n
  768. }
  769. function Bi(e) {
  770. var e = ("" + e)[c](),
  771. i = e[s](dn),
  772. o = e.lastIndexOf("]");
  773. if (i >= 0 && o > i) {
  774. var u = e[It](i + 8, o),
  775. a = dn + u + "]";
  776. a != Jn && (Jn = a, Qn && (ji(Qn, t), Qn = n), Qn = xn.get(Jn), Qn && ji(Qn, r))
  777. }
  778. }
  779. function ji(e, i) {
  780. if (i == r) e[Vt] = {
  781. visible: e[Ft],
  782. enabled: e[a],
  783. flying: e.flying,
  784. scaleflying: e[ot],
  785. distorted: e[xt],
  786. zorder: e.zorder,
  787. scale: e.scale,
  788. depth: e.depth,
  789. onover: e.onover,
  790. onout: e.onout
  791. },
  792. e[a] = t,
  793. e.flying = 1,
  794. e[ot] = t,
  795. e[xt] = r,
  796. e.zorder = 999999999;
  797. else {
  798. var s = e[Vt];
  799. s && (e[Ft] = s[Ft], e[a] = s[a], e.flying = s.flying, e[ot] = s[ot], e[xt] = s[xt], e.zorder = s.zorder, e.scale = s.scale, e.depth = s.depth, e.onover = s.onover, e.onout = s.onout, e[Vt] = s = n)
  800. }
  801. }
  802. function Fi() {
  803. if (Jn) {
  804. var e = Qn;
  805. e == n && (e = xn.get(Jn), e && (ji(e, r), Qn = e));
  806. if (e) {
  807. if (!or[a]) return e[Ft] = t,
  808. n;
  809. e.onover = Gn,
  810. e.onout = Yn,
  811. e[a] = Kn,
  812. e[Ft] = r
  813. }
  814. return e
  815. }
  816. return n
  817. }
  818. function Ii() {
  819. this.x = 0,
  820. this.y = 0,
  821. this.z = 0
  822. }
  823. function qi(e, t, n, r) {
  824. e.x = t,
  825. e.y = n,
  826. e.z = r
  827. }
  828. function Ri(e, t) {
  829. e.x = t.x,
  830. e.y = t.y,
  831. e.z = t.z
  832. }
  833. function Ui(e) {
  834. e.x = 0,
  835. e.y = 0,
  836. e.z = 0
  837. }
  838. function zi(e, t, n) {
  839. t == 0 ? e.x = n: t == 1 ? e.y = n: e.z = n
  840. }
  841. function Wi(e) {
  842. return Math[Bt](e.x * e.x + e.y * e.y + e.z * e.z)
  843. }
  844. function Xi(e) {
  845. var t = Wi(e);
  846. t > 0 ? Vi(e, 1 / t) : (e.x = 0, e.y = 0, e.z = 0)
  847. }
  848. function Vi(e, t) {
  849. e.x *= t,
  850. e.y *= t,
  851. e.z *= t
  852. }
  853. function $i(e, t, n) {
  854. qi(n, e.x - t.x, e.y - t.y, e.z - t.z)
  855. }
  856. function Ji(e, t, n) {
  857. qi(n, e.y * t.z - e.z * t.y, e.z * t.x - e.x * t.z, e.x * t.y - e.y * t.x)
  858. }
  859. function Ki(e, t) {
  860. return e.x * t.x + e.y * t.y + e.z * t.z
  861. }
  862. function Qi() {
  863. var e;
  864. return typeof Float64Array != "undefined" ? e = new Float64Array(9) : e = new Array(9),
  865. Yi(e),
  866. e
  867. }
  868. function Gi(e) {
  869. e[0] = e[1] = e[2] = e[3] = e[4] = e[5] = e[6] = e[7] = e[8] = 0
  870. }
  871. function Yi(e) {
  872. e[0] = e[4] = e[8] = 1,
  873. e[1] = e[2] = e[3] = e[5] = e[6] = e[7] = 0
  874. }
  875. function Zi(e, t) {
  876. e[0] = e[4] = e[8] = t
  877. }
  878. function es(e, t) {
  879. e[0] *= t,
  880. e[1] *= t,
  881. e[2] *= t,
  882. e[3] *= t,
  883. e[4] *= t,
  884. e[5] *= t,
  885. e[6] *= t,
  886. e[7] *= t,
  887. e[8] *= t
  888. }
  889. function ts(e, t) {
  890. var n = e[1],
  891. r = e[2],
  892. i = e[5];
  893. t[0] = e[0],
  894. t[1] = e[3],
  895. t[2] = e[6],
  896. t[3] = n,
  897. t[4] = e[4],
  898. t[5] = e[7],
  899. t[6] = r,
  900. t[7] = i,
  901. t[8] = e[8]
  902. }
  903. function ns(e, t, n) {
  904. e[t] = n.x,
  905. e[t + 3] = n.y,
  906. e[t + 6] = n.z
  907. }
  908. function rs(e, t) {
  909. e[0] = t[0],
  910. e[1] = t[1],
  911. e[2] = t[2],
  912. e[3] = t[3],
  913. e[4] = t[4],
  914. e[5] = t[5],
  915. e[6] = t[6],
  916. e[7] = t[7],
  917. e[8] = t[8]
  918. }
  919. function is(e, t) {
  920. var n = e[0] * (e[4] * e[8] - e[7] * e[5]) - e[1] * (e[3] * e[8] - e[5] * e[6]) + e[2] * (e[3] * e[7] - e[4] * e[6]);
  921. n != 0 && (n = 1 / n, t[0] = (e[4] * e[8] - e[7] * e[5]) * n, t[1] = -(e[1] * e[8] - e[2] * e[7]) * n, t[2] = (e[1] * e[5] - e[2] * e[4]) * n, t[3] = -(e[3] * e[8] - e[5] * e[6]) * n, t[4] = (e[0] * e[8] - e[2] * e[6]) * n, t[5] = -(e[0] * e[5] - e[3] * e[2]) * n, t[6] = (e[3] * e[7] - e[6] * e[4]) * n, t[7] = -(e[0] * e[7] - e[6] * e[1]) * n, t[8] = (e[0] * e[4] - e[3] * e[1]) * n)
  922. }
  923. function ss(e, t) {
  924. e[0] -= t[0],
  925. e[1] -= t[1],
  926. e[2] -= t[2],
  927. e[3] -= t[3],
  928. e[4] -= t[4],
  929. e[5] -= t[5],
  930. e[6] -= t[6],
  931. e[7] -= t[7],
  932. e[8] -= t[8]
  933. }
  934. function os(e, t) {
  935. e[0] += t[0],
  936. e[1] += t[1],
  937. e[2] += t[2],
  938. e[3] += t[3],
  939. e[4] += t[4],
  940. e[5] += t[5],
  941. e[6] += t[6],
  942. e[7] += t[7],
  943. e[8] += t[8]
  944. }
  945. function us(e, t, n) {
  946. var r = t[0],
  947. i = t[1],
  948. s = t[2],
  949. o = t[3],
  950. u = t[4],
  951. a = t[5],
  952. f = t[6],
  953. l = t[7],
  954. c = t[8],
  955. h = e[0],
  956. p = e[1],
  957. d = e[2];
  958. n[0] = h * r + p * o + d * f,
  959. n[1] = h * i + p * u + d * l,
  960. n[2] = h * s + p * a + d * c,
  961. h = e[3],
  962. p = e[4],
  963. d = e[5],
  964. n[3] = h * r + p * o + d * f,
  965. n[4] = h * i + p * u + d * l,
  966. n[5] = h * s + p * a + d * c,
  967. h = e[6],
  968. p = e[7],
  969. d = e[8],
  970. n[6] = h * r + p * o + d * f,
  971. n[7] = h * i + p * u + d * l,
  972. n[8] = h * s + p * a + d * c
  973. }
  974. function as(e, t, n) {
  975. var r = e[0] * t.x + e[1] * t.y + e[2] * t.z,
  976. i = e[3] * t.x + e[4] * t.y + e[5] * t.z,
  977. s = e[6] * t.x + e[7] * t.y + e[8] * t.z;
  978. n.x = r,
  979. n.y = i,
  980. n.z = s
  981. }
  982. function fs(e, t, n) {
  983. n[0] = e[0] + t[0],
  984. n[1] = e[1] + t[1],
  985. n[2] = e[2] + t[2],
  986. n[3] = e[3] + t[3],
  987. n[4] = e[4] + t[4],
  988. n[5] = e[5] + t[5],
  989. n[6] = e[6] + t[6],
  990. n[7] = e[7] + t[7],
  991. n[8] = e[8] + t[8]
  992. }
  993. function bs(e, t, n) {
  994. Ji(e, t, cs);
  995. if (Wi(cs) == 0) Yi(n);
  996. else {
  997. Ri(hs, e),
  998. Ri(ps, t),
  999. Xi(cs),
  1000. Xi(hs),
  1001. Xi(ps);
  1002. var r = vs,
  1003. i = ms;
  1004. Ji(cs, hs, ls),
  1005. r[0] = hs.x,
  1006. r[1] = hs.y,
  1007. r[2] = hs.z,
  1008. r[3] = cs.x,
  1009. r[4] = cs.y,
  1010. r[5] = cs.z,
  1011. r[6] = ls.x,
  1012. r[7] = ls.y,
  1013. r[8] = ls.z,
  1014. Ji(cs, ps, ls),
  1015. i[0] = ps.x,
  1016. i[3] = ps.y,
  1017. i[6] = ps.z,
  1018. i[1] = cs.x,
  1019. i[4] = cs.y,
  1020. i[7] = cs.z,
  1021. i[2] = ls.x,
  1022. i[5] = ls.y,
  1023. i[8] = ls.z,
  1024. us(i, r, n)
  1025. }
  1026. }
  1027. function ws(e, t) {
  1028. var n = Ki(e, e),
  1029. r = Math[Bt](n),
  1030. i,
  1031. s;
  1032. if (n < 1e-8) i = 1 - 1 / 6 * n,
  1033. s = .5;
  1034. else if (n < 1e-6) s = .5 - .25 * (1 / 6) * n,
  1035. i = 1 - n * (1 / 6) * (1 - .05 * n);
  1036. else {
  1037. var o = 1 / r;
  1038. i = Math.sin(r) * o,
  1039. s = (1 - Math.cos(r)) * o * o
  1040. }
  1041. Ss(e, i, s, t)
  1042. }
  1043. function Es(e, t) {
  1044. var n = (e[0] + e[4] + e[8] - 1) * .5;
  1045. qi(t, (e[7] - e[5]) / 2, (e[2] - e[6]) / 2, (e[3] - e[1]) / 2);
  1046. var r = Wi(t);
  1047. if (n > Math.SQRT1_2) r > 0 && Vi(t, Math.asin(r) / r);
  1048. else if (n > -Math.SQRT1_2) {
  1049. var i = Math.acos(n);
  1050. Vi(t, i / r)
  1051. } else {
  1052. var i = Math.PI - Math.asin(r),
  1053. s = e[0] - n,
  1054. o = e[4] - n,
  1055. u = e[8] - n,
  1056. a = gs;
  1057. s * s > o * o && s * s > u * u ? qi(a, s, (e[3] + e[1]) / 2, (e[2] + e[6]) / 2) : o * o > u * u ? qi(a, (e[3] + e[1]) / 2, o, (e[7] + e[5]) / 2) : qi(a, (e[2] + e[6]) / 2, (e[7] + e[5]) / 2, u),
  1058. Ki(a, t) < 0 && Vi(a, -1),
  1059. Xi(a),
  1060. Vi(a, i),
  1061. Ri(t, a)
  1062. }
  1063. }
  1064. function Ss(e, t, n, r) {
  1065. var i = e.x * e.x,
  1066. s = e.y * e.y,
  1067. o = e.z * e.z;
  1068. r[0] = 1 - n * (s + o),
  1069. r[4] = 1 - n * (i + o),
  1070. r[8] = 1 - n * (i + s);
  1071. var u = t * e.z,
  1072. a = n * e.x * e.y;
  1073. r[1] = a - u,
  1074. r[3] = a + u,
  1075. u = t * e.y,
  1076. a = n * e.x * e.z,
  1077. r[2] = a + u,
  1078. r[6] = a - u,
  1079. u = t * e.x,
  1080. a = n * e.y * e.z,
  1081. r[5] = a - u,
  1082. r[7] = a + u
  1083. }
  1084. function xs(e, t, n, r) {
  1085. t *= br,
  1086. n *= br,
  1087. r *= br;
  1088. var i = Math.cos(t),
  1089. s = Math.sin(t),
  1090. o = Math.cos(n),
  1091. u = Math.sin(n),
  1092. a = Math.cos(r),
  1093. f = Math.sin(r),
  1094. l = i * u,
  1095. c = s * u;
  1096. e[0] = o * a,
  1097. e[1] = l * a + i * f,
  1098. e[2] = -c * a + s * f,
  1099. e[3] = -o * f,
  1100. e[4] = -l * f + i * a,
  1101. e[5] = c * f + s * a,
  1102. e[6] = u,
  1103. e[7] = -s * o,
  1104. e[8] = i * o
  1105. }
  1106. function Ts(e, t) {
  1107. var n = e[0] + e[4] + e[8],
  1108. r;
  1109. n > 0 ? (r = Math[Bt](1 + n) * 2, t.x = (e[5] - e[7]) / r, t.y = (e[6] - e[2]) / r, t.z = (e[1] - e[3]) / r, t.w = .25 * r) : e[0] > e[4] && e[0] > e[8] ? (r = Math[Bt](1 + e[0] - e[4] - e[8]) * 2, t.x = .25 * r, t.y = (e[3] + e[1]) / r, t.z = (e[6] + e[2]) / r, t.w = (e[5] - e[7]) / r) : e[4] > e[8] ? (r = Math[Bt](1 + e[4] - e[0] - e[8]) * 2, t.x = (e[3] + e[1]) / r, t.y = .25 * r, t.z = (e[7] + e[5]) / r, t.w = (e[6] - e[2]) / r) : (r = Math[Bt](1 + e[8] - e[0] - e[4]) * 2, t.x = (e[6] + e[2]) / r, t.y = (e[7] + e[5]) / r, t.z = .25 * r, t.w = (e[1] - e[3]) / r)
  1110. }
  1111. function Ds(e) {
  1112. if (js) {
  1113. var t = Ci();
  1114. t != Ls && (Ls = t, xs(Os, 0, 0, -t), xs(As, -90, 0, +t));
  1115. var n;
  1116. if ($n <= 1 || $n == 3) n = To();
  1117. else {
  1118. var r = xn[B],
  1119. i = (r - Ns) / 1e3,
  1120. s = i;
  1121. $n == 2 ? s += 2 / 60 : $n == 6 ? s += 1 / 60 : $n == 7 && (s += 2 / 60),
  1122. n = Lo(s)
  1123. }
  1124. us(Os, n, _s),
  1125. us(_s, As, Ms),
  1126. Ts(Ms, e)
  1127. }
  1128. }
  1129. function Bs(e) {
  1130. if (!or[a]) return;
  1131. var i = xn[B],
  1132. s = i - Hs;
  1133. Hs = i,
  1134. s > 5e3 && (ui(), s = .16),
  1135. fr++;
  1136. if (fr < lr) return;
  1137. go == t && (go = r, yo());
  1138. var o = e[K],
  1139. u = o.x,
  1140. f = o.y,
  1141. l = o.z;
  1142. u == n && (u = 0),
  1143. f == n && (f = 9.81),
  1144. l == n && (l = 0);
  1145. var c = e.acceleration;
  1146. if (c) {
  1147. var h = c.x,
  1148. p = c.y,
  1149. d = c.z;
  1150. h == n && (h = 0),
  1151. p == n && (p = 0),
  1152. d == n && (d = 0),
  1153. u -= h,
  1154. f -= p,
  1155. l -= d
  1156. }
  1157. if (Tn.ios || Tn.ie) u *= -1,
  1158. f *= -1,
  1159. l *= -1;
  1160. var v = e.rotationRate,
  1161. m = v.alpha,
  1162. g = v.beta,
  1163. y = v.gamma;
  1164. m == n && (m = 0),
  1165. g == n && (g = 0),
  1166. y == n && (y = 0);
  1167. if (Tn.ios || Tn[Ht] || Tn.ie) {
  1168. m *= br,
  1169. g *= br,
  1170. y *= br;
  1171. if (Tn.ie) {
  1172. var b = m,
  1173. w = g,
  1174. E = y;
  1175. m = w,
  1176. g = E,
  1177. y = b
  1178. }
  1179. }
  1180. Uo ? Jo(s, m, g, y) : Pn && Ps(m, g, y, i);
  1181. var S = zo;
  1182. m -= S.rx,
  1183. g -= S.ry,
  1184. y -= S.rz,
  1185. qi(Cs, u, f, l),
  1186. Eo(Cs, s),
  1187. Ns = i,
  1188. qi(ks, m, g, y),
  1189. xo(ks, i);
  1190. if ($n <= 3 || $n == 5) ki.q.x = Li.q.x,
  1191. ki.q.y = Li.q.y,
  1192. ki.q.z = Li.q.z,
  1193. ki.q.w = Li.q.w,
  1194. ki.t = Li.t,
  1195. Ds(Li.q),
  1196. Li.t = i
  1197. }
  1198. function yo() {
  1199. Yi(Qs),
  1200. Yi(Gs),
  1201. Gi(Zs),
  1202. Zi(Zs, ho),
  1203. Gi(Ys),
  1204. Zi(Ys, 1),
  1205. Gi(ro),
  1206. Zi(ro, po),
  1207. Gi(to),
  1208. Gi(eo),
  1209. Gi(no),
  1210. Ui(Ws),
  1211. Ui(Us),
  1212. Ui(Rs),
  1213. Ui(zs),
  1214. Ui(qs),
  1215. qi(Is, 0, 0, vo),
  1216. js = t
  1217. }
  1218. function bo(e, t) {
  1219. as(e, Is, Rs),
  1220. bs(Rs, Us, co),
  1221. Es(co, t)
  1222. }
  1223. function wo() {
  1224. ts(Gs, fo),
  1225. us(Zs, fo, lo),
  1226. us(Gs, lo, Zs),
  1227. Yi(Gs)
  1228. }
  1229. function Eo(e, t) {
  1230. Ri(Us, e);
  1231. if (js) {
  1232. bo(Qs, Ws),
  1233. t < 5 && (t = 5);
  1234. var n = 1e3 / 60 / t,
  1235. i = mo * n,
  1236. s = 1 / mo,
  1237. o = Xs;
  1238. for (var u = 0; u < 3; u++) Ui(o),
  1239. zi(o, u, s),
  1240. ws(o, io),
  1241. us(io, Qs, so),
  1242. bo(so, Vs),
  1243. $i(Ws, Vs, $s),
  1244. Vi($s, i),
  1245. ns(eo, u, $s);
  1246. ts(eo, oo),
  1247. us(Zs, oo, uo),
  1248. us(eo, uo, ao),
  1249. fs(ao, ro, to),
  1250. is(to, oo),
  1251. ts(eo, uo),
  1252. us(uo, oo, ao),
  1253. us(Zs, ao, no),
  1254. as(no, Ws, qs),
  1255. us(no, eo, oo),
  1256. Yi(uo),
  1257. ss(uo, oo),
  1258. us(uo, Zs, oo),
  1259. rs(Zs, oo),
  1260. ws(qs, Gs),
  1261. us(Gs, Qs, Qs),
  1262. wo()
  1263. } else bs(Is, Us, Qs),
  1264. js = r
  1265. }
  1266. function xo(e, t) {
  1267. if (So != 0) {
  1268. var n = (t - So) / 1e3;
  1269. n > 1 && (n = 1),
  1270. Ri(zs, e),
  1271. Vi(zs, -n),
  1272. ws(zs, Gs),
  1273. rs(Js, Qs),
  1274. us(Gs, Qs, Js),
  1275. rs(Qs, Js),
  1276. wo(),
  1277. rs(Ks, Ys),
  1278. es(Ks, n * n),
  1279. os(Zs, Ks)
  1280. }
  1281. So = t,
  1282. Ri(Fs, e)
  1283. }
  1284. function To() {
  1285. return Qs
  1286. }
  1287. function Lo(e) {
  1288. var t = No;
  1289. Ri(t, Fs),
  1290. Vi(t, -e);
  1291. var n = Co;
  1292. ws(t, n);
  1293. var r = ko;
  1294. return us(n, Qs, r),
  1295. r
  1296. }
  1297. function Ho(e) {
  1298. var t = e[s]("://");
  1299. if (t > 0) {
  1300. var r = e[s]("/", t + 3),
  1301. i = e[It](0, t)[c](),
  1302. o = e[It](t + 3, r),
  1303. u = e[It](r);
  1304. return [i, o, u]
  1305. }
  1306. return n
  1307. }
  1308. function Bo(e) {
  1309. // if (Mo == n) {
  1310. // var i = Ho(Ao),
  1311. // s = Ho(window[wn].href);
  1312. // if (s[0] == "http" || s[0] == "https") {
  1313. // _o = s[0] + "://" + i[1],
  1314. // Do = _o + i[2];
  1315. // var o = document[bn]("iframe");
  1316. // o.style.cssText = "position:absolute;width:1px;height:1px;left:-9999px;visibility:hidden;",
  1317. // xn[m].viewerlayer.appendChild(o),
  1318. // Mo = o,
  1319. // o[u]("load",
  1320. // function() {
  1321. // Oo = r,
  1322. // e(Mo)
  1323. // },
  1324. // t),
  1325. // window[u]("message", Fo, t),
  1326. // o.src = Do
  1327. // }
  1328. // } else Oo && e(Mo)
  1329. }
  1330. function jo(e) {
  1331. Bo(function(t) {
  1332. try {
  1333. t.contentWindow.postMessage(e, _o)
  1334. } catch(n) {}
  1335. })
  1336. }
  1337. function Fo(e) {
  1338. if (e.origin == _o) {
  1339. var t = "" + e.data;
  1340. t[It](0, 15) == "webvr_settings:" && Io(t[It](15))
  1341. }
  1342. }
  1343. function Io(e) {
  1344. var t = e[mn](bt),
  1345. n = Number(t[0]),
  1346. i = Number(t[1]),
  1347. s = Number(t[2]),
  1348. o = Number(t[3]),
  1349. u = Number(t[4]),
  1350. a = Number(t[5]),
  1351. f = Number(t[6]),
  1352. l = Number(t[7]),
  1353. c = Number(t[8]),
  1354. h = Number(t[9]),
  1355. p = "" + t[10],
  1356. d = Number(t[11]);
  1357. isNaN(f) && (f = 0),
  1358. isNaN(l) && (l = 0),
  1359. isNaN(c) && (c = 0),
  1360. isNaN(h) && (h = 1),
  1361. isNaN(d) && (d = 0),
  1362. p[mn]("|")[kt] != 4 && (p = Qt),
  1363. !isNaN(n) && n >= 30 && n < 90 && !isNaN(i) && i >= 0 && i < 12 && !isNaN(s) && s >= 1 && s < 180 && !isNaN(o) && o >= 0 && o < 10 && !isNaN(u) && u >= 1 && u < 500 && !isNaN(a) && a >= 0 && a < 10 && !isNaN(h) && h > 0 && h < 2 && (Hn = n, Bn = i, Fn = s, In = o, Wn = u, $n = a, zo.rx = f, zo.ry = l, zo.rz = c, jn = h, qn = p, zn = d, ir = r)
  1364. }
  1365. function qo(e) {
  1366. if (tr || rr) {
  1367. if (Po) try {
  1368. var t = window.localStorage;
  1369. if (t) {
  1370. var n = t[tn](Pt);
  1371. n || (n = t[tn](Dt)),
  1372. n || (n = t[tn](At)),
  1373. n || (n = t[tn](Ot)),
  1374. n && Io(n)
  1375. }
  1376. } catch(r) {} ("" + e)[c]() != "local" && jo("load.4")
  1377. }
  1378. }
  1379. function Ro(e) {
  1380. if (tr || rr) {
  1381. var t = Hn + bt + Bn + bt + Fn + bt + In + bt + Wn + bt + $n + bt + zo.rx + bt + zo.ry + bt + zo.rz + bt + jn + bt + qn + bt + zn;
  1382. if (Po) try {
  1383. var n = window.localStorage;
  1384. n && (n[Zt](Pt, t), n[Zt](Dt, t[mn](bt)[It](0, 10).join(bt)), n[Zt](At, t[mn](bt)[It](0, 9).join(bt)), n[Zt](Ot, t[mn](bt)[It](0, 6).join(bt)))
  1385. } catch(r) {} ("" + e)[c]() != "local" && jo("save.4:" + t)
  1386. }
  1387. }
  1388. function Vo(e, n) {
  1389. Zn && tr && !nr && (Uo = r, Pn = t, Wo = e, Xo = n, Jo( - 1))
  1390. }
  1391. function $o() {
  1392. Uo = t,
  1393. zo.rx = 0,
  1394. zo.ry = 0,
  1395. zo.rz = 0
  1396. }
  1397. var e = "registerattribute",
  1398. t = !1,
  1399. n = null,
  1400. r = !0,
  1401. s = "indexOf",
  1402. o = "removeEventListener",
  1403. u = "addEventListener",
  1404. a = "enabled",
  1405. f = "deviceorientation",
  1406. l = "onunavailable",
  1407. c = "toLowerCase",
  1408. h = "devicemotion",
  1409. p = "view",
  1410. d = "maxpixelzoom",
  1411. v = "architectural",
  1412. m = "display",
  1413. g = "continuousupdates",
  1414. y = "control",
  1415. b = "fisheyefovlink",
  1416. w = "browser",
  1417. E = "desktop",
  1418. S = "getRecommendedEyeRenderRect",
  1419. x = "stereographic",
  1420. T = "limitview",
  1421. N = "height",
  1422. C = "getCurrentEyeFieldOfView",
  1423. k = "events",
  1424. L = "#ifdef GL_FRAGMENT_PRECISION_HIGH\n",
  1425. A = "loadwhilemoving",
  1426. O = "onavailable",
  1427. M = "float b = texture2D(sm,vB).b;",
  1428. _ = "android",
  1429. D = "downloadlockedlevel",
  1430. P = "float r = texture2D(sm,vR).r;",
  1431. H = "getRecommendedRenderTargetSize",
  1432. B = "timertick",
  1433. j = "stereooverlap",
  1434. F = "getEyeParameters",
  1435. I = "uniform1f",
  1436. q = "vec2 vR = center + v * ca;",
  1437. R = "vec2 vB = center + v / ca;",
  1438. U = "precision mediump float;\n",
  1439. z = "renderTargetSize",
  1440. W = "lockmultireslevel",
  1441. X = "fisheye",
  1442. V = "hlookat",
  1443. $ = "getEyeTranslation",
  1444. J = "call",
  1445. K = "accelerationIncludingGravity",
  1446. Q = "documentElement",
  1447. G = "fovtype",
  1448. Y = "width",
  1449. Z = "#endif\n",
  1450. et = "precision highp float;\n",
  1451. tt = "atan2",
  1452. nt = "pannini",
  1453. rt = "uniform sampler2D sm;",
  1454. it = "usercontrol",
  1455. st = "orientation",
  1456. ot = "scaleflying",
  1457. ut = "vec2 v = tx - center;",
  1458. at = "mobile",
  1459. ft = "fovmin",
  1460. lt = "renderRect",
  1461. ct = "useProgram",
  1462. ht = "fovmax",
  1463. pt = "auto",
  1464. dt = "uniform float ca;",
  1465. vt = "uniform float ol;",
  1466. mt = "left",
  1467. gt = "webkitFullscreenElement",
  1468. yt = "fullscreen",
  1469. bt = ",",
  1470. wt = "varying vec2 tx;",
  1471. Et = "recommendedFieldOfView",
  1472. St = "mousetype",
  1473. xt = "distorted",
  1474. Tt = "right",
  1475. Nt = "onunknowndevice",
  1476. Ct = "stereo",
  1477. kt = "length",
  1478. Lt = "area",
  1479. At = "krpano.webvr.2",
  1480. Ot = "krpano.webvr.1",
  1481. Mt = "mozFullScreenElement",
  1482. _t = "#ifdef GL_ES\n",
  1483. Dt = "krpano.webvr.3",
  1484. Pt = "krpano.webvr.4",
  1485. Ht = "firefox",
  1486. Bt = "sqrt",
  1487. jt = "vlookat",
  1488. Ft = "visible",
  1489. It = "slice",
  1490. qt = "msFullscreenElement",
  1491. Rt = "contextmenu",
  1492. Ut = "mozGetVRDevices",
  1493. zt = "webkitIsFullScreen",
  1494. Wt = "YXZ",
  1495. Xt = "void main()",
  1496. Vt = "_VR_backup",
  1497. $t = "layer",
  1498. Jt = "fullscreenElement",
  1499. Kt = "touchstart",
  1500. Qt = "1|0|0|0",
  1501. Gt = "devicename",
  1502. Yt = "fullscreenchange",
  1503. Zt = "setItem",
  1504. en = "maxmem",
  1505. tn = "getItem",
  1506. nn = "mousedown",
  1507. rn = "mousemove",
  1508. sn = "galaxy s4",
  1509. on = "iPhone 6+",
  1510. un = "touchmove",
  1511. an = "camroll",
  1512. fn = "changedTouches",
  1513. ln = "iPhone 6",
  1514. cn = "screentosphere",
  1515. hn = "createppshader",
  1516. pn = "eyeTranslation",
  1517. dn = "hotspot[",
  1518. vn = "hardwareUnitId",
  1519. mn = "split",
  1520. gn = "touchend",
  1521. yn = "#else\n",
  1522. bn = "createElement",
  1523. wn = "location",
  1524. En = this,
  1525. Sn = document,
  1526. xn = n,
  1527. Tn = n,
  1528. Nn = n,
  1529. Cn = 1,
  1530. kn = .00125,
  1531. Ln = t,
  1532. An = r,
  1533. On = r,
  1534. Mn = t,
  1535. _n = t,
  1536. Dn = r,
  1537. Pn = t,
  1538. Hn = 63.5,
  1539. Bn = pt,
  1540. jn = 1,
  1541. Fn = 96,
  1542. In = .6,
  1543. qn = Qt,
  1544. Rn = [1, 0, 0, 0],
  1545. Un = t,
  1546. zn = 0,
  1547. Wn = 100,
  1548. Xn = t,
  1549. Vn = 1,
  1550. $n = 3,
  1551. Jn = "",
  1552. Kn = r,
  1553. Qn = n,
  1554. Gn = n,
  1555. Yn = n,
  1556. Zn = t,
  1557. er = t,
  1558. tr = t,
  1559. nr = t,
  1560. rr = t,
  1561. ir = t,
  1562. sr = t,
  1563. or = {
  1564. enabled: t,
  1565. eyetranslt: Pi,
  1566. updateview: _i,
  1567. prjmatrix: Di,
  1568. getsize: Hi,
  1569. getcursor: Fi
  1570. },
  1571. ur = r,
  1572. ar = 0,
  1573. fr = 0,
  1574. lr = 6,
  1575. cr = 0,
  1576. hr = 1,
  1577. pr = 0,
  1578. dr = 0,
  1579. vr = 0,
  1580. mr = t,
  1581. gr = n,
  1582. yr = n,
  1583. br = Math.PI / 180,
  1584. wr = 180 / Math.PI;
  1585. En.registerplugin = function(i, s, o) {
  1586. xn = i,
  1587. Nn = o;
  1588. if (xn.version < "1.19" || xn.build < "2015-07-09") {
  1589. xn.trace(3, "WebVR plugin - too old krpano version (min. 1.19)");
  1590. return
  1591. }
  1592. if (xn.webVR) return;
  1593. Tn = xn.device,
  1594. Nn[e]("worldscale", Cn,
  1595. function(e) {
  1596. var t = Number(e);
  1597. isNaN(t) || (Cn = Math.max(t, .1))
  1598. },
  1599. function() {
  1600. return Cn
  1601. }),
  1602. Nn[e]("mousespeed", kn,
  1603. function(e) {
  1604. var t = Number(e);
  1605. isNaN(t) || (kn = t)
  1606. },
  1607. function() {
  1608. return kn
  1609. }),
  1610. Nn[e]("pos_tracking", Ln,
  1611. function(e) {
  1612. Ln = Er(e)
  1613. },
  1614. function() {
  1615. return Ln
  1616. }),
  1617. Nn[e]("multireslock", An,
  1618. function(e) {
  1619. An = Er(e),
  1620. or[a] && ri()
  1621. },
  1622. function() {
  1623. return An
  1624. }),
  1625. Nn[e]("mobilevr_support", On,
  1626. function(e) {
  1627. On = Er(e)
  1628. },
  1629. function() {
  1630. return On
  1631. }),
  1632. Nn[e]("mobilevr_touch_support", Mn,
  1633. function(e) {
  1634. Mn = Er(e)
  1635. },
  1636. function() {
  1637. return Mn
  1638. }),
  1639. Nn[e]("mobilevr_fake_support", _n,
  1640. function(e) {
  1641. _n = Er(e)
  1642. },
  1643. function() {
  1644. return _n
  1645. }),
  1646. Nn[e]("mobilevr_ipd", Hn,
  1647. function(e) {
  1648. var t = Number(e);
  1649. isNaN(t) || (Hn = t),
  1650. Ur()
  1651. },
  1652. function() {
  1653. return Hn
  1654. }),
  1655. Nn[e]("mobilevr_screensize", Bn,
  1656. function(e) {
  1657. $r(e)
  1658. },
  1659. function() {
  1660. return Jr()
  1661. }),
  1662. Nn[e]("mobilevr_lens_fov", Fn,
  1663. function(e) {
  1664. var t = Number(e);
  1665. isNaN(t) || (Fn = t, Ur())
  1666. },
  1667. function() {
  1668. return Fn
  1669. }),
  1670. Nn[e]("mobilevr_lens_overlap", jn,
  1671. function(e) {
  1672. var t = Number(e);
  1673. isNaN(t) || (jn = t, Ur())
  1674. },
  1675. function() {
  1676. return jn
  1677. }),
  1678. Nn[e]("mobilevr_lens_dist", In,
  1679. function(e) {
  1680. var t = Number(e);
  1681. isNaN(t) || (In = t, Ur())
  1682. },
  1683. function() {
  1684. return In
  1685. }),
  1686. Nn[e]("mobilevr_lens_dist2", qn,
  1687. function(e) {
  1688. qn = e,
  1689. Ur()
  1690. },
  1691. function() {
  1692. return qn
  1693. }),
  1694. Nn[e]("mobilevr_lens_ca", zn,
  1695. function(e) {
  1696. var t = Number(e);
  1697. isNaN(t) || (zn = t, Ur())
  1698. },
  1699. function() {
  1700. return zn
  1701. }),
  1702. Nn[e]("mobilevr_lens_vign", Wn,
  1703. function(e) {
  1704. var t = Number(e);
  1705. isNaN(t) || (Wn = t, Ur())
  1706. },
  1707. function() {
  1708. return Wn
  1709. }),
  1710. Nn[e]("mobilevr_webvr_dist", Xn,
  1711. function(e) {
  1712. Xn = Er(e)
  1713. },
  1714. function() {
  1715. return Xn
  1716. }),
  1717. Nn[e]("mobilevr_wakelock", Dn,
  1718. function(e) {
  1719. Dn = Er(e)
  1720. },
  1721. function() {
  1722. return Dn
  1723. }),
  1724. Nn[e]("mobilevr_autocalibration", Pn,
  1725. function(e) {
  1726. Pn = Er(e)
  1727. },
  1728. function() {
  1729. return Pn
  1730. }),
  1731. Nn[e]("mobilevr_sensor", Vn,
  1732. function(e) {
  1733. Vn = parseInt(e) & 1
  1734. },
  1735. function() {
  1736. return Vn
  1737. }),
  1738. Nn[e]("mobilevr_sensor_mode", $n,
  1739. function(e) {
  1740. var t = parseInt(e);
  1741. t >= 0 && t <= 7 && ($n = t),
  1742. fr = 0
  1743. },
  1744. function() {
  1745. return $n
  1746. }),
  1747. Nn[e]("vr_cursor", Jn,
  1748. function(e) {
  1749. Bi(e)
  1750. },
  1751. function() {
  1752. return Jn
  1753. }),
  1754. Nn[e]("vr_cursor_enabled", Kn,
  1755. function(e) {
  1756. Kn = Er(e)
  1757. },
  1758. function() {
  1759. return Kn
  1760. }),
  1761. Nn[e]("vr_cursor_onover", Gn,
  1762. function(e) {
  1763. Gn = e
  1764. },
  1765. function() {
  1766. return Gn
  1767. }),
  1768. Nn[e]("vr_cursor_onout", Yn,
  1769. function(e) {
  1770. Yn = e
  1771. },
  1772. function() {
  1773. return Yn
  1774. }),
  1775. Nn[e]("isavailable", er,
  1776. function(e) {},
  1777. function() {
  1778. return er
  1779. }),
  1780. Nn[e]("isenabled", Zn,
  1781. function(e) {},
  1782. function() {
  1783. return Zn
  1784. }),
  1785. Nn[e]("iswebvr", !tr,
  1786. function(e) {},
  1787. function() {
  1788. return ! tr || rr
  1789. }),
  1790. Nn[e]("ismobilevr", tr,
  1791. function(e) {},
  1792. function() {
  1793. return tr || rr
  1794. }),
  1795. Nn[e]("isfake", nr,
  1796. function(e) {},
  1797. function() {
  1798. return nr
  1799. }),
  1800. Nn[e]("havesettings", ir,
  1801. function(e) {},
  1802. function() {
  1803. return ir
  1804. }),
  1805. Nn[e](Gt, "",
  1806. function(e) {},
  1807. function() {
  1808. return Xr()
  1809. }),
  1810. Nn[e]("devicesize", "",
  1811. function(e) {},
  1812. function() {
  1813. return Vr()
  1814. }),
  1815. Nn[e](O, n),
  1816. Nn[e](l, n),
  1817. Nn[e](Nt, n),
  1818. Nn[e]("onentervr", n),
  1819. Nn[e]("onexitvr", n),
  1820. Nn.entervr = Gr,
  1821. Nn.exitvr = Yr,
  1822. Nn.togglevr = Zr,
  1823. Nn.resetsensor = ei,
  1824. Nn.loadsettings = qo,
  1825. Nn.savesettings = Ro,
  1826. Nn.calibrate = Vo,
  1827. Nn.resetcalibration = $o,
  1828. Nn.update = Qr;
  1829. if (xn.webGL) {
  1830. xn.webVR = or;
  1831. var u = Tn[_] && Tn[Ht],
  1832. f = document[Q].requestPointerLock || document[Q].mozRequestPointerLock || document[Q].webkitRequestPointerLock,
  1833. c = document.exitPointerLock || document.mozExitPointerLock || document.webkitExitPointerLock;
  1834. f && c && (mr = r, gr = f, yr = c);
  1835. try {
  1836. u == t && navigator.getVRDevices ? navigator.getVRDevices().then(jr) : u == t && navigator[Ut] ? navigator[Ut](jr) : On ? xr() : sr == t && (sr = r, xn[J](Nn[l], Nn))
  1837. } catch(h) {}
  1838. } else sr == t && (sr = r, xn[J](Nn[l], Nn))
  1839. },
  1840. En.unloadplugin = function() {
  1841. Yr(),
  1842. oi(t, r),
  1843. xn.webVR = n
  1844. };
  1845. var kr = n,
  1846. Lr = n,
  1847. Ar = n,
  1848. Or = n,
  1849. Mr = n,
  1850. _r = n,
  1851. Dr = n,
  1852. Pr = n,
  1853. Hr = n,
  1854. Br = 100,
  1855. Fr = n,
  1856. qr = n,
  1857. ti = n,
  1858. oi = function() {
  1859. var e = n,
  1860. r = n;
  1861. return function(i, s) {
  1862. if (Tn[at] && nr == t) if (i) Tn.ios ? e = window.setInterval(function() {
  1863. window[wn] = window[wn],
  1864. window.setTimeout(window.stop, 0)
  1865. },
  1866. 15e3) : Tn[_] && (r == n && (r = document[bn]("video"), r.setAttribute("loop", ""), r.canPlayType("video/webm") != "" && (r.src = Qo)), r.play());
  1867. else {
  1868. e && (window.clearInterval(e), e = n);
  1869. if (r && s) {
  1870. r.pause();
  1871. try {
  1872. r.src = "",
  1873. r.removeAttribute("src")
  1874. } catch(o) {}
  1875. r = n
  1876. }
  1877. }
  1878. }
  1879. } (),
  1880. ai = 0,
  1881. ci = 0,
  1882. ki = {
  1883. q: new pi(0, 0, 0, 1),
  1884. t: 0
  1885. },
  1886. Li = {
  1887. q: new pi(0, 0, 0, 1),
  1888. t: 0
  1889. },
  1890. Ai = new pi(0, 0, 0, 1),
  1891. Oi = n,
  1892. ls = new Ii,
  1893. cs = new Ii,
  1894. hs = new Ii,
  1895. ps = new Ii,
  1896. ds = new Ii,
  1897. vs = Qi(),
  1898. ms = Qi(),
  1899. gs = new Ii,
  1900. ys = new Ii,
  1901. Ns = 0,
  1902. Cs = new Ii,
  1903. ks = new Ii,
  1904. Ls = n,
  1905. As = Qi(),
  1906. Os = Qi(),
  1907. Ms = Qi(),
  1908. _s = Qi(),
  1909. Ps = function() {
  1910. var e = 0,
  1911. t = 0,
  1912. n = 0,
  1913. r = 0,
  1914. i = 0,
  1915. s = 0,
  1916. o = 0,
  1917. u = 0,
  1918. a = 0,
  1919. f = 0,
  1920. l = 1,
  1921. c = 0,
  1922. h = 0,
  1923. p = 0,
  1924. d = .03;
  1925. return function(c, h, p, v) {
  1926. var m = c - e,
  1927. g = h - t,
  1928. y = p - n,
  1929. b = v - r;
  1930. e = c,
  1931. t = h,
  1932. n = p,
  1933. r = v;
  1934. var w = Math[Bt](m * m + g * g + y * y);
  1935. if (b > 500) {
  1936. i = 0;
  1937. return
  1938. }
  1939. if (i == 0) {
  1940. i = b,
  1941. s = w;
  1942. return
  1943. }
  1944. i = i * .95 + .05 * b;
  1945. var E = Math.min(15 * i / 1e3, .5);
  1946. s = s * (1 - E) + E * w;
  1947. var S = zo;
  1948. s < d ? (o++, u += c, a += h, f += p, o > 19 && (S.rx = S.rx * (1 - l) + l * (u / o), S.ry = S.ry * (1 - l) + l * (a / o), S.rz = S.rz * (1 - l) + l * (f / o), l > .5 && (l *= .9), s = 10, d *= .5)) : (o = 1, u = c, a = h, f = p)
  1949. }
  1950. } (),
  1951. Hs = 0,
  1952. js = t,
  1953. Fs = new Ii,
  1954. Is = new Ii,
  1955. qs = new Ii,
  1956. Rs = new Ii,
  1957. Us = new Ii,
  1958. zs = new Ii,
  1959. Ws = new Ii,
  1960. Xs = new Ii,
  1961. Vs = new Ii,
  1962. $s = new Ii,
  1963. Js = Qi(),
  1964. Ks = Qi(),
  1965. Qs = Qi(),
  1966. Gs = Qi(),
  1967. Ys = Qi(),
  1968. Zs = Qi(),
  1969. eo = Qi(),
  1970. to = Qi(),
  1971. no = Qi(),
  1972. ro = Qi(),
  1973. io = Qi(),
  1974. so = Qi(),
  1975. oo = Qi(),
  1976. uo = Qi(),
  1977. ao = Qi(),
  1978. fo = Qi(),
  1979. lo = Qi(),
  1980. co = Qi(),
  1981. ho = 20,
  1982. po = .5,
  1983. vo = 9.81,
  1984. mo = 1e7,
  1985. go = t,
  1986. So = 0,
  1987. No = new Ii,
  1988. Co = Qi(),
  1989. ko = Qi(),
  1990. Oo = t,
  1991. Mo = n,
  1992. _o = n,
  1993. Do = n,
  1994. Po = r,
  1995. Uo = t,
  1996. zo = {
  1997. rx: 0,
  1998. ry: 0,
  1999. rz: 0
  2000. },
  2001. Wo = n,
  2002. Xo = n,
  2003. Jo = function() {
  2004. function i() {
  2005. var t = 0,
  2006. r = n * 3,
  2007. i = 0,
  2008. s = 0,
  2009. o = 0,
  2010. u = 0,
  2011. a = 0,
  2012. f = 0,
  2013. l = 0,
  2014. c = 0,
  2015. h = 0,
  2016. p = 0;
  2017. for (t = 0; t < r; t += 3) i += e[t | 0],
  2018. s += e[t + 1 | 0],
  2019. o += e[t + 2 | 0];
  2020. i /= n,
  2021. s /= n,
  2022. o /= n;
  2023. for (t = 0; t < r; t += 3) l = e[t | 0] - i,
  2024. c = e[t + 1 | 0] - s,
  2025. h = e[t + 2 | 0] - o,
  2026. u += l * l,
  2027. a += c * c,
  2028. f += h * h;
  2029. u = Math[Bt](u / n),
  2030. a = Math[Bt](a / n),
  2031. f = Math[Bt](f / n),
  2032. p = Math[Bt](u * u + a * a + f * f);
  2033. if (p < .05) {
  2034. var d = zo;
  2035. d.rx = i,
  2036. d.ry = s,
  2037. d.rz = o,
  2038. Wo && xn[J](Wo, Nn)
  2039. } else Xo && xn[J](Xo, Nn)
  2040. }
  2041. var e = new Array(300),
  2042. n = 0,
  2043. r = 0;
  2044. return function(s, o, u, a) {
  2045. if (s < 0) {
  2046. n = 0,
  2047. r = xn[B];
  2048. return
  2049. }
  2050. var f = xn[B] - r;
  2051. if (f > 500) {
  2052. var l = n * 3;
  2053. e[l | 0] = o,
  2054. e[l + 1 | 0] = u,
  2055. e[l + 2 | 0] = a,
  2056. n++;
  2057. if (n > 100 || f > 2500) Uo = t,
  2058. i()
  2059. }
  2060. }
  2061. } (),
  2062. Ko = function() {
  2063. function u(t) {
  2064. for (i = 0; i < t[kt]; i++) if (e && t[i] === e || s && t[i] === s) t.splice(i, 1),
  2065. i--
  2066. }
  2067. var e = n,
  2068. r = "" + _t + L + et + yn + U + Z + Z + rt + wt + dt + vt + Xt + "{" + "float g = texture2D(sm,tx).g;" + "vec2 center = vec2(0.5 + (0.5 - ol)*(step(0.5,tx.x) - 0.5), 0.5);" + ut + q + P + R + M + "gl_FragColor=vec4(r,g,b,1.0);" + "}",
  2069. s = n,
  2070. o = "" + _t + L + et + yn + U + Z + Z + rt + wt + "uniform vec2 sz;" + "uniform float ss;" + dt + vt + "uniform float vg;" + "uniform vec4 dd;" + Xt + "{" + "float vig = 0.015;" + "float side = step(0.5,tx.x) - 0.5;" + "float aspect = (sz.x / sz.y);" + "vec2 center = vec2(0.5 + (0.5 - ol)*side, 0.5);" + ut + "v.x = v.x * aspect;" + "v *= 2.0 * ss;" + "float rs = dot(v,v);" + "v = v * (dd.x + rs*(dd.y + rs*(dd.z + rs*dd.w)));" + "v /= 2.0 * ss;" + "v.x = v.x / aspect;" + "vec2 vG = center + v;" + "float a = (1.0 - smoothstep(vG.x-vig - side*ol, vG.x - side*ol, center.x - 0.25)) * " + "(1.0 - smoothstep(center.x + 0.25 - vG.x + side*ol - vig, center.x + 0.25 - vG.x + side*ol, 0.0)) * " + "(1.0 - smoothstep(vG.y-vig, vG.y, 0.0)) * " + "(1.0 - smoothstep(1.0 - vG.y-vig,1.0 - vG.y, 0.0));" + "a *= smoothstep(rs-vig, rs+vig, vg);" + q + R + P + "float g = texture2D(sm,vG).g;" + M + "gl_FragColor=vec4(a*r,a*g,a*b,1.0);" + "}";
  2071. return function(i) {
  2072. var a = xn.webGL;
  2073. if (a) {
  2074. var f, l = a.context,
  2075. c = a.ppshaders,
  2076. h = 1 - zn * .1 / hr;
  2077. Un == t && h > .999999 && h < 1.000001 && (i = t),
  2078. xn[m][Ct] == t && (i = t);
  2079. if (i) if (Un) {
  2080. s == n && (s = a[hn](o, "ss,ca,dd,ol,sz,vg"));
  2081. if (s) {
  2082. var p = 1 / Rn[0],
  2083. d = Rn[1],
  2084. v = Rn[2],
  2085. g = Rn[3];
  2086. a[ct](s.prg),
  2087. l[I](s.ss, hr),
  2088. l[I](s.ca, h),
  2089. l.uniform4f(s.dd, p, p * d, p * v, p * g),
  2090. l[I](s.ol, .5 * vr * (1 + (jn - 1) * .1)),
  2091. l[I](s.vg, Wn / 30),
  2092. a[ct](n),
  2093. u(c),
  2094. c.push(s)
  2095. }
  2096. } else e == n && (e = a[hn](r, "ca,ol")),
  2097. e && (a[ct](e.prg), l[I](e.ca, h), l[I](e.ol, .5 * vr * (1 + (jn - 1) * .1)), a[ct](n), u(c), c.push(e));
  2098. else u(c)
  2099. }
  2100. }
  2101. } (),
  2102. Qo = "data:video/webm;base64,GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4ECQoWBAhhTgGcBAAAAAAABzRFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEuTbuMU6uEHFO7a1OsggGw7AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEMq17GDD0JATYCMTGF2ZjU2LjMuMTAwV0GMTGF2ZjU2LjMuMTAwc6SQC+JFWnEfyt4nOD98NcnLDESJiAAAAAAAAAAAFlSuawEAAAAAAABCrgEAAAAAAAA514EBc8WBAZyBACK1nIN1bmSGhVZfVlA4g4EBI+ODgw9CQOABAAAAAAAADrCBCLqBCFSwgQhUuoEIH0O2dQEAAAAAAAAo54EAo6OBAACAEAIAnQEqCAAIAABHCIWFiIWEiAICAAwNYAD+/6PeABxTu2sBAAAAAAAAEbuPs4EAt4r3gQHxggF88IED"
  2103. };