var krpanoplugin = function() {
    function Er(e) {
        return ".yes.on.true.1" [s](("." + e)[c]()) >= 0
    }
    function Sr(e) {}
    function xr() {
        ar = 0;
        if (Tn[at] || _n) if (Tn[_]) {
            var e = ("" + navigator.userAgent)[c]()[s]("ucbrowser") > 0;
            Tn.chrome || Tn[Ht] ? ar = 2 : e && (ar = 2)
        } else ar = 2;
        if (ar > 0) {
            Vn == 0 && (ar = 1);
            if (Tn[E] && _n) setTimeout(Nr, 10);
            else {
                window[u](ar == 1 ? f: h, Cr, t);
                var i = Nn[l] != "" && Nn[l] != n;
                setTimeout(Nr, Tn[E] ? 10 : i ? 1500 : 3e3)
            }
        } else sr == t && (sr = r, xn[J](Nn[l], Nn))
    }
    function Tr() {
        sr == t && (sr = r, er = r, tr = r, nr = r, rr = t, Rr(), xn[J](Nn[O], Nn))
    }
    function Nr() {
        window[o](f, Cr, t),
        window[o](h, Cr, t),
        Tn[E] && _n ? Tr() : sr == t && (sr = r, xn[J](Nn[l], Nn))
    }
    function Cr(e) {
        window[o](e.type, Cr, t),
        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))
    }
    function jr(e) {
        var i;
        for (i = 0; i < e[kt]; i++) if (e[i] instanceof HMDVRDevice) {
            kr = e[i],
            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));
            var s = 2 * Math.max(Mr.leftDegrees, Mr.rightDegrees),
            o = 2 * Math.max(Mr.upDegrees, Mr.downDegrees);
            Br = Math.max(s, o);
            break
        }
        for (i = 0; i < e[kt]; i++) if (e[i] instanceof PositionSensorVRDevice) if (kr == n || kr[vn] == e[i][vn]) {
            Lr = e[i];
            break
        }
        kr || Lr ? (er = r, Xn == t && Tn[_] && (rr = r), xn[J](Nn[O], Nn)) : sr == t && (sr = r, xn[J](Nn[l], Nn))
    }
    function Ir(e) {
        Zn = e;
        if (e) {
            Fr = {
                imagehfov: xn.image.hfov,
                continuousupdates: xn[p][g],
                usercontrol: xn[y][it],
                mousetype: xn[y][St],
                contextmenu_touch: xn[Rt].touch,
                loadwhilemoving: xn[m][A],
                stereo: xn[m][Ct],
                stereooverlap: xn[m][j],
                hlookat: xn[p][V],
                vlookat: xn[p][jt],
                camroll: xn[p][an],
                fovmin: xn[p][ft],
                fovmax: xn[p][ht],
                fisheye: xn[p][X],
                fov: xn[p].fov,
                maxpixelzoom: xn[p][d],
                fovtype: xn[p][G],
                stereographic: xn[p][x],
                fisheyefovlink: xn[p][b],
                pannini: xn[p][nt],
                architectural: xn[p][v],
                limitview: xn[p][T],
                area_mode: xn[Lt].mode,
                area_align: xn[Lt].align,
                area_x: xn[Lt].x,
                area_y: xn[Lt].y,
                area_width: xn[Lt][Y],
                area_height: xn[Lt][N],
                maxmem: xn.memory[en]
            },
            xn[Lt].mode = "align",
            xn[Lt].align = "lefttop",
            xn[Lt].x = "0",
            xn[Lt].y = "0",
            xn[Lt][Y] = "100%",
            xn[Lt][N] = "100%",
            xn[Rt].touch = t,
            xn[p][g] = r,
            nr && Tn[E] && !mr ? xn[y][St] = "drag2d": xn[y][it] = "off",
            xn[m][Ct] = r,
            xn[m][A] = r,
            xn[p][T] = "off",
            xn[p][nt] = 0,
            xn[p][v] = 0,
            xn[p][G] = "VFOV",
            xn[p][ft] = 0,
            xn[p][ht] = 179,
            xn[p][X] = 0,
            xn[p].fov = Br,
            xn[p][d] = 0,
            xn[p][x] = r,
            xn[p][b] = 0,
            cr = xn[p][V],
            ci = 0,
            Tn[E] || (cr -= Ci()),
            ui();
            if (tr || rr) zr(0, 0),
            nr && Tn[E] && !mr || (xn[yt] = r);
            ri(),
            Dn && oi(r),
            xn.set("events[__webvr].keep", r),
            xn.set("events[__webvr].onnewpano", ii),
            xn.set("events[__webvr].onresize", si),
            (tr || rr) && Ko(r),
            xn[J](Nn.onentervr, Nn)
        } else if (Fr) {
            xn.set("events[__webvr].name", n),
            xn[p][g] = Fr[g],
            xn[y][it] = Fr[it],
            xn[y][St] = Fr[St],
            xn[Rt].touch = Fr.contextmenu_touch,
            xn[m][A] = Fr[A],
            xn[m][Ct] = Fr[Ct],
            xn[m][j] = Fr[j],
            xn[p][an] = 0;
            if (Fr.imagehfov == xn.image.hfov) xn[p][ft] = Fr[ft],
            xn[p][ht] = Fr[ht],
            xn[p].fov = Fr.fov,
            xn[p][d] = Fr[d],
            xn[p][G] = Fr[G],
            xn[p][T] = Fr[T],
            xn[p][X] = Fr[X],
            xn[p][x] = Fr[x],
            xn[p][b] = Fr[b],
            xn[p][nt] = Fr[nt],
            xn[p][v] = Fr[v];
            else {
                var i = xn.xml[p];
                xn[p][ft] = i && !isNaN(Number(i[ft])) ? Number(i[ft]) : 1,
                xn[p][ht] = i && !isNaN(Number(i[ht])) ? Number(i[ht]) : 140,
                xn[p].fov = i && !isNaN(Number(i.fov)) ? Number(i.fov) : 90,
                xn[p][X] = i && !isNaN(Number(i[X])) ? Number(i[X]) : 0,
                xn[p][nt] = i && !isNaN(Number(i[nt])) ? Number(i[nt]) : 0,
                xn[p][v] = i && !isNaN(Number(i[v])) ? Number(i[v]) : 0,
                xn[p][d] = i && !isNaN(Number(i[d])) ? Number(i[d]) : 2,
                xn[p][G] = i && i[G] ? i[G] : "MFOV",
                xn[p][T] = i && i[T] ? i[T] : pt,
                xn[p][x] = r,
                xn[p][b] = .5
            }
            xn[Lt].mode = Fr.area_mode,
            xn[Lt].align = Fr.area_align,
            xn[Lt].x = Fr.area_x,
            xn[Lt].y = Fr.area_y,
            xn[Lt][Y] = Fr.area_width,
            xn[Lt][N] = Fr.area_height,
            xn[W] = -1,
            xn[D] = t,
            xn.memory[en] = Fr[en],
            Fr = n,
            Qn && (ji(Qn, t), Qn = n),
            Ko(t),
            oi(t),
            ui(),
            xn[J](Nn.onexitvr, Nn)
        }
    }
    function Rr() {
        if (qr) return qr;
        var e = "Unknown",
        t = 0,
        n = 1536,
        r = Math.min(screen[Y], screen[N]),
        i = Math.max(screen[Y], screen[N]),
        o = window.devicePixelRatio || 1;
        if (Tn.iphone) if (i == 568) {
            var u = xn.webGL.context,
            a = "" + u.getParameter(u.VERSION);
            a[s]("A8 GPU") > 0 ? (e = ln, t = 4.7) : (e = "iPhone 5", t = 4, n = 1024)
        } else i == 667 ? o == 2 ? (e = ln, t = 4.7) : (e = on, t = 5.5) : i == 736 && (e = on, t = 5.5);
        else {
            var f = navigator.userAgent[c]();
            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")
        }
        t == 0 && (xn[J](Nn[Nt], Nn), t = 5);
        var l = Math[Bt](t * t / (1 + r / i * (r / i))) * 25.4,
        h = l * r / i;
        return qr = {
            screendiagonal_inch: t,
            screenwidth_mm: l,
            screenheight_mm: h,
            screenwidth_px: i * o,
            screenheight_px: r * o,
            devicename: e,
            best_res: n
        },
        qr
    }
    function Ur() {
        Fn < 1 ? Fn = 1 : Fn > 179.9 && (Fn = 179.9),
        In < 0 ? In = 0 : In > 5 && (In = 5);
        var e = qn[mn]("|"),
        t;
        for (t = 0; t < 4; t++) {
            var n = Number(e[t]);
            isNaN(n) && (n = t == 0 ? 1 : 0),
            Rn[t] = n
        }
        Un = Rn[0] != 1 || Rn[1] != 0 || Rn[2] != 0 || Rn[3] != 0,
        or[a] && (tr || rr) && (zr(0, 0), Ko(r))
    }
    function zr(e, n) {
        var i = Rr(),
        s = 0,
        o = 0,
        u = xn.webGL.canvas;
        if (u) {
            var a = Number(xn[m].framebufferscale);
            s = u[Y],
            o = u[N],
            !isNaN(a) && a != 0 && (s /= a, o /= a)
        }
        if (e <= 0 || n <= 0) e = s,
        n = o;
        var f = Fn,
        l = In;
        f = Math.tan(f * .5 * br),
        l = Math.exp(l) - 1;
        var c = Math.atan(f) * 2 / 2,
        h = l * 1e3,
        p = 1e3,
        d = p * Math.sin(c),
        v = p * Math.cos(c),
        g = 2 * Math.atan(d / (h + v));
        f = Math.tan(g / 2);
        var y = l,
        b = Hn;
        b /= jn;
        var w = i.screenwidth_mm,
        E = i.screenheight_mm;
        if (Bn > 0) {
            var S = Math.min(screen[Y], screen[N]),
            x = Math.max(screen[Y], screen[N]);
            w = Math[Bt](Bn * Bn / (1 + S / x * (S / x))) * 25.4,
            E = w * S / x
        }
        var T = w / 2 - b,
        C = 2 * (T / w),
        k = e,
        L = n,
        A = i.screenwidth_px,
        O = i.screenheight_px,
        M = r;
        if (nr || Tn.tablet || n > e) M = t;
        k <= 0 && (k = s),
        L <= 0 && (L = o);
        var _ = E / 70.9,
        D = f;
        D *= _,
        hr = _ / .69,
        M && (D *= L / O, C = 2 * (w * (k / A) / 2 - b) / (w * (k / A)));
        var P = 2 * Math.atan(D) * wr;
        pr = P,
        dr = y,
        vr = C,
        Wr()
    }
    function Wr() {
        var e = xn[p];
        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)
    }
    function Xr() {
        return Tn[E] && kr && kr.deviceName ? kr.deviceName: (Rr(), qr ? qr[Gt] : "")
    }
    function Vr() {
        return qr ? qr.screendiagonal_inch: 0
    }
    function $r(e) {
        if (("" + e)[c]() == pt) Bn = 0,
        Ur();
        else {
            var t = parseFloat(e);
            if (isNaN(t) || t <= 0) t = 0;
            Bn = t,
            Ur()
        }
    }
    function Jr() {
        var e = Bn;
        return e <= 0 ? pt: e
    }
    function Kr() {
        return Tn[_] ? xn[m].viewerlayer: xn.webGL.canvas
    }
    function Qr() {
        xn.trace(0, "update - stereo=" + xn[m][Ct]),
        or[a] && (tr || rr) && (zr(0, 0), Ko(r))
    }
    function Gr() {
        if (er && Zn == t) if (tr == t) {
            var e = Kr();
            Sn[u](Tn[w][k][Yt], li),
            or[a] = r,
            Ir(r),
            ur = r,
            rr = t,
            Xn == t && Tn[_] && (rr = r),
            rr && (ur = t),
            e[Tn[w][k].requestfullscreen]({
                vrDisplay: kr,
                vrDistortion: ur
            }),
            Tn[at] && ei(xn[p][V]),
            ur == t && zr()
        } else {
            Sn[u](Tn[w][k][Yt], li),
            or[a] = r,
            Ir(r);
            if (Tn[at] || Tn.tablet) ar == 1 ? window[u](f, Mi, r) : ar == 2 && window[u](h, Bs, r);
            nr == t && Tn[w][k].touch && xn[y][$t][u](Tn[w][k][Kt], ni, t)
        }
    }
    function Yr() {
        or[a] = t,
        xn.get(yt) && xn.set(yt, t),
        window[o](f, Mi, r),
        window[o](h, Bs, r),
        Tn[w][k].touch && xn[y][$t][o](Tn[w][k][Kt], ni, t),
        Ir(t),
        xn[p].haschanged = r
    }
    function Zr() {
        er && (Zn ? Yr() : Gr())
    }
    function ei(e) {
        e === undefined ? e = 0 : (e = Number(e), isNaN(e) && (e = 0));
        var t = xn[p][V];
        if (Lr) {
            try {
                Lr.resetSensor !== undefined && Lr.resetSensor()
            } catch(n) {}
            try {
                Lr.zeroSensor !== undefined && Lr.zeroSensor()
            } catch(n) {}
            t = 0,
            cr = 0
        }
        nr && (xn[p][V] = e),
        cr = cr - t + e,
        ci = 0
    }
    function ni(e) {
        var i = t;
        if (Mn == t) i = r;
        else {
            var s = xn[y].getMousePos(e[fn] ? e[fn][0] : e);
            s.x /= xn.stagescale,
            s.y /= xn.stagescale;
            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;
            else if (e.type == Tn[w][k][gn]) i = r;
            else if (e.type == Tn[w][k][un] && ti) {
                var a = ti.x,
                f = s.x;
                if (xn[m][Ct]) {
                    var l = xn.stagewidth * .5; (a >= l || f >= l) && (a < l || f < l) && (f = a)
                }
                var c = xn[cn](a, ti.y, t),
                h = xn[cn](f, s.y, t),
                p = h.x - c.x;
                ti = s,
                cr -= p
            }
        }
        i && (ti = n, xn[y][$t][o](Tn[w][k][un], ni, r), xn[y][$t][o](Tn[w][k][gn], ni, r))
    }
    function ri() {
        if (An == t) xn[W] = -1,
        xn[D] = t;
        else if (xn.image.type == "cube" && xn.image.multires) {
            var e = Rr().best_res,
            n = 0,
            s = -1,
            o = 0,
            u = xn.image.level.getArray(),
            a = u[kt];
            if (a > 0) for (i = 0; i < a; i++) {
                var f = u[i].tiledimagewidth,
                l = Math.abs(f - e);
                if (s == -1 || l < s) n = f,
                s = l,
                o = i
            }
            if (s > 0) {
                xn[W] = o,
                xn[D] = r;
                if (n > 0) {
                    var c = 4 + 8 * (n * n * 6 + 1048575 >> 20);
                    c > xn.memory[en] && (xn.memory[en] = c)
                }
            }
        }
    }
    function ii() {
        or[a] && ri()
    }
    function si() {
        ii(),
        Ur()
    }
    function ui() {
        fr = 0,
        ki.t = 0,
        Li.t = 0,
        yo(),
        So = 0,
        go = t,
        Ls = n
    }
    function fi(e) {
        ai == 1 ? (yr.apply(document), ai = 0) : (gr.apply(Kr()), ai = 1)
    }
    function li(e) {
        var n = Kr(),
        i = !!(Sn[Jt] || Sn[Mt] || Sn[zt] || Sn[gt] || Sn[qt]);
        if (i && or[a]) {
            try {
                Tn[E] && mr && (gr.apply(n), nr && (ai = 1, xn[y][$t][u](nn, fi, t)))
            } catch(s) {}
            Tn[E] && n[u](rn, hi, t)
        } else window[o](f, Mi, r),
        window[o](h, Bs, r),
        n[o](rn, hi, t),
        xn[y][$t][o](nn, fi, t),
        or[a] = t,
        Ir(t)
    }
    function hi(e) {
        var t = Kr();
        if (Sn.pointerLockElement === t || Sn.mozPointerLockElement === t) {
            var n = e.movementX || e.mozMovementX,
            r = e.movementY || e.mozMovementY;
            if (!isNaN(n)) {
                ci += n * kn;
                while (ci < 0) ci += Math.PI * 2;
                while (ci >= Math.PI * 2) ci -= Math.PI * 2
            } else n = 0;
            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))
        }
    }
    function pi(e, t, n, r) {
        this.x = e,
        this.y = t,
        this.z = n,
        this.w = r
    }
    function di(e) {
        var t = Math[Bt](e.x * e.x + e.y * e.y + e.z * e.z + e.w * e.w);
        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)
    }
    function vi(e) {
        e.x *= -1,
        e.y *= -1,
        e.z *= -1,
        di(e)
    }
    function mi(e, t) {
        return e.x * t.x + e.y * t.y + e.z * t.z + e.w * t.w
    }
    function gi(e) {
        return Math[Bt](e.x * e.x + e.y * e.y + e.z * e.z + e.w * e.w)
    }
    function yi(e, t) {
        var n = e.x,
        r = e.y,
        i = e.z,
        s = e.w,
        o = t.x,
        u = t.y,
        a = t.z,
        f = t.w;
        e.x = n * f + s * o + r * a - i * u,
        e.y = r * f + s * u + i * o - n * a,
        e.z = i * f + s * a + n * u - r * o,
        e.w = s * f - n * o - r * u - i * a
    }
    function bi(e, t) {
        var n = t.x,
        r = t.y,
        i = t.z,
        s = t.w,
        o = e.x,
        u = e.y,
        a = e.z,
        f = e.w;
        e.x = n * f + s * o + r * a - i * u,
        e.y = r * f + s * u + i * o - n * a,
        e.z = i * f + s * a + n * u - r * o,
        e.w = s * f - n * o - r * u - i * a
    }
    function wi(e, t, n) {
        var r = e.x,
        i = e.y,
        s = e.z,
        o = e.w,
        u = r * t.x + i * t.y + s * t.z + o * t.w;
        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);
        if (u >= 1) {
            e.w = o,
            e.x = r,
            e.y = i,
            e.z = s;
            return
        }
        var a = Math.acos(u),
        f = Math[Bt](1 - u * u);
        if (Math.abs(f) < .001) {
            e.w = .5 * (o + e.w),
            e.x = .5 * (r + e.x),
            e.y = .5 * (i + e.y),
            e.z = .5 * (s + e.z);
            return
        }
        var l = Math.sin((1 - n) * a) / f,
        c = Math.sin(n * a) / f;
        e.w = o * l + e.w * c,
        e.x = r * l + e.x * c,
        e.y = i * l + e.y * c,
        e.z = s * l + e.z * c
    }
    function Ei(e, t, n) {
        var r = n / 2,
        i = Math.sin(r);
        e.x = t.x * i,
        e.y = t.y * i,
        e.z = t.z * i,
        e.w = Math.cos(r)
    }
    function Si(e, t, n, r, i) {
        var s = Math.cos(t / 2),
        o = Math.cos(n / 2),
        u = Math.cos(r / 2),
        a = Math.sin(t / 2),
        f = Math.sin(n / 2),
        l = Math.sin(r / 2);
        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),
        e
    }
    function xi(e, t, n) {
        var r, i, s, o, u, a, f, l, c, h, p, d;
        i = t.x,
        s = t.y,
        o = t.z,
        u = Math[Bt](i * i + s * s + o * o),
        u > 0 && (i /= u, s /= u, o /= u),
        a = n.x,
        f = n.y,
        l = n.z,
        c = Math[Bt](a * a + f * f + l * l),
        c > 0 && (a /= c, f /= c, l /= c),
        r = i * a + s * f + o * l + 1,
        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),
        e.x = h,
        e.y = p,
        e.z = d,
        e.w = r,
        di(e)
    }
    function Ti(e, t, n) {
        function r(e, t, n) {
            return e < t ? t: e > n ? n: e
        }
        if (!t || isNaN(t.x) || isNaN(t.y) || isNaN(t.z) || isNaN(t.w)) return;
        var i = t.x * t.x,
        s = t.y * t.y,
        o = t.z * t.z,
        u = t.w * t.w;
        if (n === "XYZ") e[0] = Math[tt](2 * (t.x * t.w - t.y * t.z), u - i - s + o),
        e[1] = Math.asin(r(2 * (t.x * t.z + t.y * t.w), -1, 1)),
        e[2] = Math[tt](2 * (t.z * t.w - t.x * t.y), u + i - s - o);
        else if (n === Wt) e[0] = Math.asin(r(2 * (t.x * t.w - t.y * t.z), -1, 1)),
        e[1] = Math[tt](2 * (t.x * t.z + t.y * t.w), u - i - s + o),
        e[2] = Math[tt](2 * (t.x * t.y + t.z * t.w), u - i + s - o);
        else if (n === "ZXY") e[0] = Math.asin(r(2 * (t.x * t.w + t.y * t.z), -1, 1)),
        e[1] = Math[tt](2 * (t.y * t.w - t.z * t.x), u - i - s + o),
        e[2] = Math[tt](2 * (t.z * t.w - t.x * t.y), u - i + s - o);
        else if (n === "ZYX") e[0] = Math[tt](2 * (t.x * t.w + t.z * t.y), u - i - s + o),
        e[1] = Math.asin(r(2 * (t.y * t.w - t.x * t.z), -1, 1)),
        e[2] = Math[tt](2 * (t.x * t.y + t.z * t.w), u + i - s - o);
        else if (n === "YZX") e[0] = Math[tt](2 * (t.x * t.w - t.z * t.y), u - i + s - o),
        e[1] = Math[tt](2 * (t.y * t.w - t.x * t.z), u + i - s - o),
        e[2] = Math.asin(r(2 * (t.x * t.y + t.z * t.w), -1, 1));
        else {
            if (n !== "XZY") return;
            e[0] = Math[tt](2 * (t.x * t.w + t.y * t.z), u - i + s - o),
            e[1] = Math[tt](2 * (t.x * t.z + t.y * t.w), u + i - s - o),
            e[2] = Math.asin(r(2 * (t.z * t.w - t.x * t.y), -1, 1))
        }
    }
    function Ni(e, t) {
        var r, i, s, o;
        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));
        var u = 2 / (s + o),
        a = 2 / (r + i);
        t[0] = u,
        t[1] = 0,
        t[2] = 0,
        t[3] = 0,
        t[4] = 0,
        t[5] = -a,
        t[6] = 0,
        t[7] = 0,
        t[8] = (s - o) * u * .5,
        t[9] = -((r - i) * a * .5),
        t[10] = 65535 / 65536,
        t[11] = 1,
        t[12] = 0,
        t[13] = 0,
        t[14] = 65535 / 65536 - 1,
        t[15] = 1
    }
    function Ci() {
        var e = Number.NaN,
        t = screen[Y] > screen[N],
        n = screen[st] || screen.msOrientation || screen.mozOrientation;
        if (n) {
            n = ("" + n)[c]();
            var r = n[s]("portrait") >= 0,
            i = n[s]("landscape") >= 0,
            o = n[s]("primary") >= 0,
            u = n[s]("secondary") >= 0;
            r && o ? e = 0 : i && o ? e = 90 : i && u ? e = -90 : r && u && (e = 180),
            !isNaN(e) && !Tn[at] && (e -= 90)
        }
        return isNaN(e) && (e = xn._have_top_access ? top[st] : window[st]),
        isNaN(e) && (Tn[at] ? e = t ? 90 : 0 : e = t ? 0 : 90),
        Tn.tablet && Tn[Ht] && (e += 90),
        e
    }
    function Mi(e) {
        if (!or[a]) return;
        var t = xn[B],
        r = t - Hs;
        Hs = t;
        var i = Ci() * br,
        s = e.alpha * br,
        o = e.beta * br,
        u = e.gamma * br;
        Oi === n && (Oi = s),
        s = s - Oi + Math.PI;
        var f = Math.cos(s),
        l = Math.sin(s),
        c = Math.cos(o),
        h = Math.sin(o),
        p = Math.cos(u),
        d = Math.sin(u);
        s = Math[tt]( - l * h * p - f * d, l * d - f * h * p),
        o = -Math.asin(c * p),
        u = Math[tt](c * d, -h) - Math.PI,
        ki.q.x = Li.q.x,
        ki.q.y = Li.q.y,
        ki.q.z = Li.q.z,
        ki.q.w = Li.q.w,
        ki.t = Li.t;
        var v = Li.q;
        Li.t = t,
        fr++,
        Si(v, o, s + i, u - i, Wt)
    }
    function _i() {
        if (or[a]) {
            xn[p][g] = r;
            var e = [0, 0, 0];
            if (Lr) {
                Hr = Lr.getState();
                if (Hr) {
                    rr && Wr();
                    if (Ln) {
                        var t = Hr.position;
                        if (t) {
                            ci = 0;
                            var i = 400;
                            xn[p].tx = t.x * i,
                            xn[p].ty = t.y * i,
                            xn[p].tz = t.z * i
                        }
                    }
                    Ti(e, Hr[st], Wt);
                    var s = 0;
                    Tn[_] && (s = Ci()),
                    s += cr,
                    xn[p][V] = ( - e[1] + ci) * wr + s,
                    xn[p][jt] = -e[0] * wr,
                    xn[p][an] = -e[2] * wr
                }
            } else if (tr) {
                Wr();
                if (fr > lr) {
                    var o = n;
                    if ($n == 0) o = Li.q;
                    else if (($n == 4 || $n >= 6) && ar == 2) o = Li.q,
                    Ds(o);
                    else if ($n <= 3 || $n == 5 || ar == 1) if (ki.t > 0 && Li.t > 0) {
                        var u = xn[B],
                        f = Li.t - ki.t,
                        l = 0,
                        c = 0,
                        h = 1;
                        $n == 1 || $n == 2 ? l = u - Li.t: (l = u - ki.t, h = 2),
                        f <= 0 ? c = 1 : (c = l / f, c > h && (c = h)),
                        Ai.x = ki.q.x,
                        Ai.y = ki.q.y,
                        Ai.z = ki.q.z,
                        Ai.w = ki.q.w,
                        wi(Ai, Li.q, c),
                        o = Ai
                    }
                    if (o) {
                        Ti(e, o, Wt);
                        var s = Ci();
                        xn[p][V] = cr + ( - e[1] + ci) * wr + s,
                        xn[p][jt] = -e[0] * wr,
                        xn[p][an] = -e[2] * wr
                    }
                }
            }
        }
    }
    function Di(e, n) {
        tr == t && ur == r && Ni(e == 1 ? Mr: _r, n)
    }
    function Pi(e) {
        var t = 0;
        return e == 1 ? Ar && Ar.x ? t = Ar.x: t = -0.03 : e == 2 && (Or && Or.x ? t = Or.x: t = .03),
        t *= 320 / Cn,
        t
    }
    function Hi(e, i) {
        var s = !!(Sn[Jt] || Sn[Mt] || Sn[zt] || Sn[gt] || Sn[qt]);
        if (or[a] && s && tr == t && ur == r) {
            var o = 0,
            u = 0;
            if (Dr) o = Dr[lt][Y] + Pr[lt][Y],
            u = Math.max(Dr[lt][N], Pr[lt][N]);
            else if (S in kr) {
                var f = kr[S](mt),
                l = kr[S](Tt);
                o = f[Y] + l[Y],
                u = Math.max(f[N], l[N])
            } else if (H in kr) {
                var c = kr[H]();
                o = c[Y],
                u = c[N]
            } else z in kr ? (o = kr[z][Y], u = kr[z][N]) : (o = 2e3, u = 1056);
            if (o > 0 && u > 0) {
                var h = 1;
                return o *= h,
                u *= h,
                {
                    w: o,
                    h: u
                }
            }
        } else or[a] && (tr || ur == t) && zr(e, i);
        return n
    }
    function Bi(e) {
        var e = ("" + e)[c](),
        i = e[s](dn),
        o = e.lastIndexOf("]");
        if (i >= 0 && o > i) {
            var u = e[It](i + 8, o),
            a = dn + u + "]";
            a != Jn && (Jn = a, Qn && (ji(Qn, t), Qn = n), Qn = xn.get(Jn), Qn && ji(Qn, r))
        }
    }
    function ji(e, i) {
        if (i == r) e[Vt] = {
            visible: e[Ft],
            enabled: e[a],
            flying: e.flying,
            scaleflying: e[ot],
            distorted: e[xt],
            zorder: e.zorder,
            scale: e.scale,
            depth: e.depth,
            onover: e.onover,
            onout: e.onout
        },
        e[a] = t,
        e.flying = 1,
        e[ot] = t,
        e[xt] = r,
        e.zorder = 999999999;
        else {
            var s = e[Vt];
            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)
        }
    }
    function Fi() {
        if (Jn) {
            var e = Qn;
            e == n && (e = xn.get(Jn), e && (ji(e, r), Qn = e));
            if (e) {
                if (!or[a]) return e[Ft] = t,
                n;
                e.onover = Gn,
                e.onout = Yn,
                e[a] = Kn,
                e[Ft] = r
            }
            return e
        }
        return n
    }
    function Ii() {
        this.x = 0,
        this.y = 0,
        this.z = 0
    }
    function qi(e, t, n, r) {
        e.x = t,
        e.y = n,
        e.z = r
    }
    function Ri(e, t) {
        e.x = t.x,
        e.y = t.y,
        e.z = t.z
    }
    function Ui(e) {
        e.x = 0,
        e.y = 0,
        e.z = 0
    }
    function zi(e, t, n) {
        t == 0 ? e.x = n: t == 1 ? e.y = n: e.z = n
    }
    function Wi(e) {
        return Math[Bt](e.x * e.x + e.y * e.y + e.z * e.z)
    }
    function Xi(e) {
        var t = Wi(e);
        t > 0 ? Vi(e, 1 / t) : (e.x = 0, e.y = 0, e.z = 0)
    }
    function Vi(e, t) {
        e.x *= t,
        e.y *= t,
        e.z *= t
    }
    function $i(e, t, n) {
        qi(n, e.x - t.x, e.y - t.y, e.z - t.z)
    }
    function Ji(e, t, n) {
        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)
    }
    function Ki(e, t) {
        return e.x * t.x + e.y * t.y + e.z * t.z
    }
    function Qi() {
        var e;
        return typeof Float64Array != "undefined" ? e = new Float64Array(9) : e = new Array(9),
        Yi(e),
        e
    }
    function Gi(e) {
        e[0] = e[1] = e[2] = e[3] = e[4] = e[5] = e[6] = e[7] = e[8] = 0
    }
    function Yi(e) {
        e[0] = e[4] = e[8] = 1,
        e[1] = e[2] = e[3] = e[5] = e[6] = e[7] = 0
    }
    function Zi(e, t) {
        e[0] = e[4] = e[8] = t
    }
    function es(e, t) {
        e[0] *= t,
        e[1] *= t,
        e[2] *= t,
        e[3] *= t,
        e[4] *= t,
        e[5] *= t,
        e[6] *= t,
        e[7] *= t,
        e[8] *= t
    }
    function ts(e, t) {
        var n = e[1],
        r = e[2],
        i = e[5];
        t[0] = e[0],
        t[1] = e[3],
        t[2] = e[6],
        t[3] = n,
        t[4] = e[4],
        t[5] = e[7],
        t[6] = r,
        t[7] = i,
        t[8] = e[8]
    }
    function ns(e, t, n) {
        e[t] = n.x,
        e[t + 3] = n.y,
        e[t + 6] = n.z
    }
    function rs(e, t) {
        e[0] = t[0],
        e[1] = t[1],
        e[2] = t[2],
        e[3] = t[3],
        e[4] = t[4],
        e[5] = t[5],
        e[6] = t[6],
        e[7] = t[7],
        e[8] = t[8]
    }
    function is(e, t) {
        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]);
        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)
    }
    function ss(e, t) {
        e[0] -= t[0],
        e[1] -= t[1],
        e[2] -= t[2],
        e[3] -= t[3],
        e[4] -= t[4],
        e[5] -= t[5],
        e[6] -= t[6],
        e[7] -= t[7],
        e[8] -= t[8]
    }
    function os(e, t) {
        e[0] += t[0],
        e[1] += t[1],
        e[2] += t[2],
        e[3] += t[3],
        e[4] += t[4],
        e[5] += t[5],
        e[6] += t[6],
        e[7] += t[7],
        e[8] += t[8]
    }
    function us(e, t, n) {
        var r = t[0],
        i = t[1],
        s = t[2],
        o = t[3],
        u = t[4],
        a = t[5],
        f = t[6],
        l = t[7],
        c = t[8],
        h = e[0],
        p = e[1],
        d = e[2];
        n[0] = h * r + p * o + d * f,
        n[1] = h * i + p * u + d * l,
        n[2] = h * s + p * a + d * c,
        h = e[3],
        p = e[4],
        d = e[5],
        n[3] = h * r + p * o + d * f,
        n[4] = h * i + p * u + d * l,
        n[5] = h * s + p * a + d * c,
        h = e[6],
        p = e[7],
        d = e[8],
        n[6] = h * r + p * o + d * f,
        n[7] = h * i + p * u + d * l,
        n[8] = h * s + p * a + d * c
    }
    function as(e, t, n) {
        var r = e[0] * t.x + e[1] * t.y + e[2] * t.z,
        i = e[3] * t.x + e[4] * t.y + e[5] * t.z,
        s = e[6] * t.x + e[7] * t.y + e[8] * t.z;
        n.x = r,
        n.y = i,
        n.z = s
    }
    function fs(e, t, n) {
        n[0] = e[0] + t[0],
        n[1] = e[1] + t[1],
        n[2] = e[2] + t[2],
        n[3] = e[3] + t[3],
        n[4] = e[4] + t[4],
        n[5] = e[5] + t[5],
        n[6] = e[6] + t[6],
        n[7] = e[7] + t[7],
        n[8] = e[8] + t[8]
    }
    function bs(e, t, n) {
        Ji(e, t, cs);
        if (Wi(cs) == 0) Yi(n);
        else {
            Ri(hs, e),
            Ri(ps, t),
            Xi(cs),
            Xi(hs),
            Xi(ps);
            var r = vs,
            i = ms;
            Ji(cs, hs, ls),
            r[0] = hs.x,
            r[1] = hs.y,
            r[2] = hs.z,
            r[3] = cs.x,
            r[4] = cs.y,
            r[5] = cs.z,
            r[6] = ls.x,
            r[7] = ls.y,
            r[8] = ls.z,
            Ji(cs, ps, ls),
            i[0] = ps.x,
            i[3] = ps.y,
            i[6] = ps.z,
            i[1] = cs.x,
            i[4] = cs.y,
            i[7] = cs.z,
            i[2] = ls.x,
            i[5] = ls.y,
            i[8] = ls.z,
            us(i, r, n)
        }
    }
    function ws(e, t) {
        var n = Ki(e, e),
        r = Math[Bt](n),
        i,
        s;
        if (n < 1e-8) i = 1 - 1 / 6 * n,
        s = .5;
        else if (n < 1e-6) s = .5 - .25 * (1 / 6) * n,
        i = 1 - n * (1 / 6) * (1 - .05 * n);
        else {
            var o = 1 / r;
            i = Math.sin(r) * o,
            s = (1 - Math.cos(r)) * o * o
        }
        Ss(e, i, s, t)
    }
    function Es(e, t) {
        var n = (e[0] + e[4] + e[8] - 1) * .5;
        qi(t, (e[7] - e[5]) / 2, (e[2] - e[6]) / 2, (e[3] - e[1]) / 2);
        var r = Wi(t);
        if (n > Math.SQRT1_2) r > 0 && Vi(t, Math.asin(r) / r);
        else if (n > -Math.SQRT1_2) {
            var i = Math.acos(n);
            Vi(t, i / r)
        } else {
            var i = Math.PI - Math.asin(r),
            s = e[0] - n,
            o = e[4] - n,
            u = e[8] - n,
            a = gs;
            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),
            Ki(a, t) < 0 && Vi(a, -1),
            Xi(a),
            Vi(a, i),
            Ri(t, a)
        }
    }
    function Ss(e, t, n, r) {
        var i = e.x * e.x,
        s = e.y * e.y,
        o = e.z * e.z;
        r[0] = 1 - n * (s + o),
        r[4] = 1 - n * (i + o),
        r[8] = 1 - n * (i + s);
        var u = t * e.z,
        a = n * e.x * e.y;
        r[1] = a - u,
        r[3] = a + u,
        u = t * e.y,
        a = n * e.x * e.z,
        r[2] = a + u,
        r[6] = a - u,
        u = t * e.x,
        a = n * e.y * e.z,
        r[5] = a - u,
        r[7] = a + u
    }
    function xs(e, t, n, r) {
        t *= br,
        n *= br,
        r *= br;
        var i = Math.cos(t),
        s = Math.sin(t),
        o = Math.cos(n),
        u = Math.sin(n),
        a = Math.cos(r),
        f = Math.sin(r),
        l = i * u,
        c = s * u;
        e[0] = o * a,
        e[1] = l * a + i * f,
        e[2] = -c * a + s * f,
        e[3] = -o * f,
        e[4] = -l * f + i * a,
        e[5] = c * f + s * a,
        e[6] = u,
        e[7] = -s * o,
        e[8] = i * o
    }
    function Ts(e, t) {
        var n = e[0] + e[4] + e[8],
        r;
        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)
    }
    function Ds(e) {
        if (js) {
            var t = Ci();
            t != Ls && (Ls = t, xs(Os, 0, 0, -t), xs(As, -90, 0, +t));
            var n;
            if ($n <= 1 || $n == 3) n = To();
            else {
                var r = xn[B],
                i = (r - Ns) / 1e3,
                s = i;
                $n == 2 ? s += 2 / 60 : $n == 6 ? s += 1 / 60 : $n == 7 && (s += 2 / 60),
                n = Lo(s)
            }
            us(Os, n, _s),
            us(_s, As, Ms),
            Ts(Ms, e)
        }
    }
    function Bs(e) {
        if (!or[a]) return;
        var i = xn[B],
        s = i - Hs;
        Hs = i,
        s > 5e3 && (ui(), s = .16),
        fr++;
        if (fr < lr) return;
        go == t && (go = r, yo());
        var o = e[K],
        u = o.x,
        f = o.y,
        l = o.z;
        u == n && (u = 0),
        f == n && (f = 9.81),
        l == n && (l = 0);
        var c = e.acceleration;
        if (c) {
            var h = c.x,
            p = c.y,
            d = c.z;
            h == n && (h = 0),
            p == n && (p = 0),
            d == n && (d = 0),
            u -= h,
            f -= p,
            l -= d
        }
        if (Tn.ios || Tn.ie) u *= -1,
        f *= -1,
        l *= -1;
        var v = e.rotationRate,
        m = v.alpha,
        g = v.beta,
        y = v.gamma;
        m == n && (m = 0),
        g == n && (g = 0),
        y == n && (y = 0);
        if (Tn.ios || Tn[Ht] || Tn.ie) {
            m *= br,
            g *= br,
            y *= br;
            if (Tn.ie) {
                var b = m,
                w = g,
                E = y;
                m = w,
                g = E,
                y = b
            }
        }
        Uo ? Jo(s, m, g, y) : Pn && Ps(m, g, y, i);
        var S = zo;
        m -= S.rx,
        g -= S.ry,
        y -= S.rz,
        qi(Cs, u, f, l),
        Eo(Cs, s),
        Ns = i,
        qi(ks, m, g, y),
        xo(ks, i);
        if ($n <= 3 || $n == 5) ki.q.x = Li.q.x,
        ki.q.y = Li.q.y,
        ki.q.z = Li.q.z,
        ki.q.w = Li.q.w,
        ki.t = Li.t,
        Ds(Li.q),
        Li.t = i
    }
    function yo() {
        Yi(Qs),
        Yi(Gs),
        Gi(Zs),
        Zi(Zs, ho),
        Gi(Ys),
        Zi(Ys, 1),
        Gi(ro),
        Zi(ro, po),
        Gi(to),
        Gi(eo),
        Gi(no),
        Ui(Ws),
        Ui(Us),
        Ui(Rs),
        Ui(zs),
        Ui(qs),
        qi(Is, 0, 0, vo),
        js = t
    }
    function bo(e, t) {
        as(e, Is, Rs),
        bs(Rs, Us, co),
        Es(co, t)
    }
    function wo() {
        ts(Gs, fo),
        us(Zs, fo, lo),
        us(Gs, lo, Zs),
        Yi(Gs)
    }
    function Eo(e, t) {
        Ri(Us, e);
        if (js) {
            bo(Qs, Ws),
            t < 5 && (t = 5);
            var n = 1e3 / 60 / t,
            i = mo * n,
            s = 1 / mo,
            o = Xs;
            for (var u = 0; u < 3; u++) Ui(o),
            zi(o, u, s),
            ws(o, io),
            us(io, Qs, so),
            bo(so, Vs),
            $i(Ws, Vs, $s),
            Vi($s, i),
            ns(eo, u, $s);
            ts(eo, oo),
            us(Zs, oo, uo),
            us(eo, uo, ao),
            fs(ao, ro, to),
            is(to, oo),
            ts(eo, uo),
            us(uo, oo, ao),
            us(Zs, ao, no),
            as(no, Ws, qs),
            us(no, eo, oo),
            Yi(uo),
            ss(uo, oo),
            us(uo, Zs, oo),
            rs(Zs, oo),
            ws(qs, Gs),
            us(Gs, Qs, Qs),
            wo()
        } else bs(Is, Us, Qs),
        js = r
    }
    function xo(e, t) {
        if (So != 0) {
            var n = (t - So) / 1e3;
            n > 1 && (n = 1),
            Ri(zs, e),
            Vi(zs, -n),
            ws(zs, Gs),
            rs(Js, Qs),
            us(Gs, Qs, Js),
            rs(Qs, Js),
            wo(),
            rs(Ks, Ys),
            es(Ks, n * n),
            os(Zs, Ks)
        }
        So = t,
        Ri(Fs, e)
    }
    function To() {
        return Qs
    }
    function Lo(e) {
        var t = No;
        Ri(t, Fs),
        Vi(t, -e);
        var n = Co;
        ws(t, n);
        var r = ko;
        return us(n, Qs, r),
        r
    }
    function Ho(e) {
        var t = e[s]("://");
        if (t > 0) {
            var r = e[s]("/", t + 3),
            i = e[It](0, t)[c](),
            o = e[It](t + 3, r),
            u = e[It](r);
            return [i, o, u]
        }
        return n
    }
    function Bo(e) {
        // if (Mo == n) {
        //     var i = Ho(Ao),
        //     s = Ho(window[wn].href);
        //     if (s[0] == "http" || s[0] == "https") {
        //         _o = s[0] + "://" + i[1],
        //         Do = _o + i[2];
        //         var o = document[bn]("iframe");
        //         o.style.cssText = "position:absolute;width:1px;height:1px;left:-9999px;visibility:hidden;",
        //         xn[m].viewerlayer.appendChild(o),
        //         Mo = o,
        //         o[u]("load",
        //         function() {
        //             Oo = r,
        //             e(Mo)
        //         },
        //         t),
        //         window[u]("message", Fo, t),
        //         o.src = Do
        //     }
        // } else Oo && e(Mo)
    }
    function jo(e) {
        Bo(function(t) {
            try {
                t.contentWindow.postMessage(e, _o)
            } catch(n) {}
        })
    }
    function Fo(e) {
        if (e.origin == _o) {
            var t = "" + e.data;
            t[It](0, 15) == "webvr_settings:" && Io(t[It](15))
        }
    }
    function Io(e) {
        var t = e[mn](bt),
        n = Number(t[0]),
        i = Number(t[1]),
        s = Number(t[2]),
        o = Number(t[3]),
        u = Number(t[4]),
        a = Number(t[5]),
        f = Number(t[6]),
        l = Number(t[7]),
        c = Number(t[8]),
        h = Number(t[9]),
        p = "" + t[10],
        d = Number(t[11]);
        isNaN(f) && (f = 0),
        isNaN(l) && (l = 0),
        isNaN(c) && (c = 0),
        isNaN(h) && (h = 1),
        isNaN(d) && (d = 0),
        p[mn]("|")[kt] != 4 && (p = Qt),
        !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)
    }
    function qo(e) {
        if (tr || rr) {
            if (Po) try {
                var t = window.localStorage;
                if (t) {
                    var n = t[tn](Pt);
                    n || (n = t[tn](Dt)),
                    n || (n = t[tn](At)),
                    n || (n = t[tn](Ot)),
                    n && Io(n)
                }
            } catch(r) {} ("" + e)[c]() != "local" && jo("load.4")
        }
    }
    function Ro(e) {
        if (tr || rr) {
            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;
            if (Po) try {
                var n = window.localStorage;
                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)))
            } catch(r) {} ("" + e)[c]() != "local" && jo("save.4:" + t)
        }
    }
    function Vo(e, n) {
        Zn && tr && !nr && (Uo = r, Pn = t, Wo = e, Xo = n, Jo( - 1))
    }
    function $o() {
        Uo = t,
        zo.rx = 0,
        zo.ry = 0,
        zo.rz = 0
    }
    var e = "registerattribute",
    t = !1,
    n = null,
    r = !0,
    s = "indexOf",
    o = "removeEventListener",
    u = "addEventListener",
    a = "enabled",
    f = "deviceorientation",
    l = "onunavailable",
    c = "toLowerCase",
    h = "devicemotion",
    p = "view",
    d = "maxpixelzoom",
    v = "architectural",
    m = "display",
    g = "continuousupdates",
    y = "control",
    b = "fisheyefovlink",
    w = "browser",
    E = "desktop",
    S = "getRecommendedEyeRenderRect",
    x = "stereographic",
    T = "limitview",
    N = "height",
    C = "getCurrentEyeFieldOfView",
    k = "events",
    L = "#ifdef GL_FRAGMENT_PRECISION_HIGH\n",
    A = "loadwhilemoving",
    O = "onavailable",
    M = "float b = texture2D(sm,vB).b;",
    _ = "android",
    D = "downloadlockedlevel",
    P = "float r = texture2D(sm,vR).r;",
    H = "getRecommendedRenderTargetSize",
    B = "timertick",
    j = "stereooverlap",
    F = "getEyeParameters",
    I = "uniform1f",
    q = "vec2 vR = center + v * ca;",
    R = "vec2 vB = center + v / ca;",
    U = "precision mediump float;\n",
    z = "renderTargetSize",
    W = "lockmultireslevel",
    X = "fisheye",
    V = "hlookat",
    $ = "getEyeTranslation",
    J = "call",
    K = "accelerationIncludingGravity",
    Q = "documentElement",
    G = "fovtype",
    Y = "width",
    Z = "#endif\n",
    et = "precision highp float;\n",
    tt = "atan2",
    nt = "pannini",
    rt = "uniform sampler2D sm;",
    it = "usercontrol",
    st = "orientation",
    ot = "scaleflying",
    ut = "vec2 v = tx - center;",
    at = "mobile",
    ft = "fovmin",
    lt = "renderRect",
    ct = "useProgram",
    ht = "fovmax",
    pt = "auto",
    dt = "uniform float ca;",
    vt = "uniform float ol;",
    mt = "left",
    gt = "webkitFullscreenElement",
    yt = "fullscreen",
    bt = ",",
    wt = "varying vec2 tx;",
    Et = "recommendedFieldOfView",
    St = "mousetype",
    xt = "distorted",
    Tt = "right",
    Nt = "onunknowndevice",
    Ct = "stereo",
    kt = "length",
    Lt = "area",
    At = "krpano.webvr.2",
    Ot = "krpano.webvr.1",
    Mt = "mozFullScreenElement",
    _t = "#ifdef GL_ES\n",
    Dt = "krpano.webvr.3",
    Pt = "krpano.webvr.4",
    Ht = "firefox",
    Bt = "sqrt",
    jt = "vlookat",
    Ft = "visible",
    It = "slice",
    qt = "msFullscreenElement",
    Rt = "contextmenu",
    Ut = "mozGetVRDevices",
    zt = "webkitIsFullScreen",
    Wt = "YXZ",
    Xt = "void main()",
    Vt = "_VR_backup",
    $t = "layer",
    Jt = "fullscreenElement",
    Kt = "touchstart",
    Qt = "1|0|0|0",
    Gt = "devicename",
    Yt = "fullscreenchange",
    Zt = "setItem",
    en = "maxmem",
    tn = "getItem",
    nn = "mousedown",
    rn = "mousemove",
    sn = "galaxy s4",
    on = "iPhone 6+",
    un = "touchmove",
    an = "camroll",
    fn = "changedTouches",
    ln = "iPhone 6",
    cn = "screentosphere",
    hn = "createppshader",
    pn = "eyeTranslation",
    dn = "hotspot[",
    vn = "hardwareUnitId",
    mn = "split",
    gn = "touchend",
    yn = "#else\n",
    bn = "createElement",
    wn = "location",
    En = this,
    Sn = document,
    xn = n,
    Tn = n,
    Nn = n,
    Cn = 1,
    kn = .00125,
    Ln = t,
    An = r,
    On = r,
    Mn = t,
    _n = t,
    Dn = r,
    Pn = t,
    Hn = 63.5,
    Bn = pt,
    jn = 1,
    Fn = 96,
    In = .6,
    qn = Qt,
    Rn = [1, 0, 0, 0],
    Un = t,
    zn = 0,
    Wn = 100,
    Xn = t,
    Vn = 1,
    $n = 3,
    Jn = "",
    Kn = r,
    Qn = n,
    Gn = n,
    Yn = n,
    Zn = t,
    er = t,
    tr = t,
    nr = t,
    rr = t,
    ir = t,
    sr = t,
    or = {
        enabled: t,
        eyetranslt: Pi,
        updateview: _i,
        prjmatrix: Di,
        getsize: Hi,
        getcursor: Fi
    },
    ur = r,
    ar = 0,
    fr = 0,
    lr = 6,
    cr = 0,
    hr = 1,
    pr = 0,
    dr = 0,
    vr = 0,
    mr = t,
    gr = n,
    yr = n,
    br = Math.PI / 180,
    wr = 180 / Math.PI;
    En.registerplugin = function(i, s, o) {
        xn = i,
        Nn = o;
        if (xn.version < "1.19" || xn.build < "2015-07-09") {
            xn.trace(3, "WebVR plugin - too old krpano version (min. 1.19)");
            return
        }
        if (xn.webVR) return;
        Tn = xn.device,
        Nn[e]("worldscale", Cn,
        function(e) {
            var t = Number(e);
            isNaN(t) || (Cn = Math.max(t, .1))
        },
        function() {
            return Cn
        }),
        Nn[e]("mousespeed", kn,
        function(e) {
            var t = Number(e);
            isNaN(t) || (kn = t)
        },
        function() {
            return kn
        }),
        Nn[e]("pos_tracking", Ln,
        function(e) {
            Ln = Er(e)
        },
        function() {
            return Ln
        }),
        Nn[e]("multireslock", An,
        function(e) {
            An = Er(e),
            or[a] && ri()
        },
        function() {
            return An
        }),
        Nn[e]("mobilevr_support", On,
        function(e) {
            On = Er(e)
        },
        function() {
            return On
        }),
        Nn[e]("mobilevr_touch_support", Mn,
        function(e) {
            Mn = Er(e)
        },
        function() {
            return Mn
        }),
        Nn[e]("mobilevr_fake_support", _n,
        function(e) {
            _n = Er(e)
        },
        function() {
            return _n
        }),
        Nn[e]("mobilevr_ipd", Hn,
        function(e) {
            var t = Number(e);
            isNaN(t) || (Hn = t),
            Ur()
        },
        function() {
            return Hn
        }),
        Nn[e]("mobilevr_screensize", Bn,
        function(e) {
            $r(e)
        },
        function() {
            return Jr()
        }),
        Nn[e]("mobilevr_lens_fov", Fn,
        function(e) {
            var t = Number(e);
            isNaN(t) || (Fn = t, Ur())
        },
        function() {
            return Fn
        }),
        Nn[e]("mobilevr_lens_overlap", jn,
        function(e) {
            var t = Number(e);
            isNaN(t) || (jn = t, Ur())
        },
        function() {
            return jn
        }),
        Nn[e]("mobilevr_lens_dist", In,
        function(e) {
            var t = Number(e);
            isNaN(t) || (In = t, Ur())
        },
        function() {
            return In
        }),
        Nn[e]("mobilevr_lens_dist2", qn,
        function(e) {
            qn = e,
            Ur()
        },
        function() {
            return qn
        }),
        Nn[e]("mobilevr_lens_ca", zn,
        function(e) {
            var t = Number(e);
            isNaN(t) || (zn = t, Ur())
        },
        function() {
            return zn
        }),
        Nn[e]("mobilevr_lens_vign", Wn,
        function(e) {
            var t = Number(e);
            isNaN(t) || (Wn = t, Ur())
        },
        function() {
            return Wn
        }),
        Nn[e]("mobilevr_webvr_dist", Xn,
        function(e) {
            Xn = Er(e)
        },
        function() {
            return Xn
        }),
        Nn[e]("mobilevr_wakelock", Dn,
        function(e) {
            Dn = Er(e)
        },
        function() {
            return Dn
        }),
        Nn[e]("mobilevr_autocalibration", Pn,
        function(e) {
            Pn = Er(e)
        },
        function() {
            return Pn
        }),
        Nn[e]("mobilevr_sensor", Vn,
        function(e) {
            Vn = parseInt(e) & 1
        },
        function() {
            return Vn
        }),
        Nn[e]("mobilevr_sensor_mode", $n,
        function(e) {
            var t = parseInt(e);
            t >= 0 && t <= 7 && ($n = t),
            fr = 0
        },
        function() {
            return $n
        }),
        Nn[e]("vr_cursor", Jn,
        function(e) {
            Bi(e)
        },
        function() {
            return Jn
        }),
        Nn[e]("vr_cursor_enabled", Kn,
        function(e) {
            Kn = Er(e)
        },
        function() {
            return Kn
        }),
        Nn[e]("vr_cursor_onover", Gn,
        function(e) {
            Gn = e
        },
        function() {
            return Gn
        }),
        Nn[e]("vr_cursor_onout", Yn,
        function(e) {
            Yn = e
        },
        function() {
            return Yn
        }),
        Nn[e]("isavailable", er,
        function(e) {},
        function() {
            return er
        }),
        Nn[e]("isenabled", Zn,
        function(e) {},
        function() {
            return Zn
        }),
        Nn[e]("iswebvr", !tr,
        function(e) {},
        function() {
            return ! tr || rr
        }),
        Nn[e]("ismobilevr", tr,
        function(e) {},
        function() {
            return tr || rr
        }),
        Nn[e]("isfake", nr,
        function(e) {},
        function() {
            return nr
        }),
        Nn[e]("havesettings", ir,
        function(e) {},
        function() {
            return ir
        }),
        Nn[e](Gt, "",
        function(e) {},
        function() {
            return Xr()
        }),
        Nn[e]("devicesize", "",
        function(e) {},
        function() {
            return Vr()
        }),
        Nn[e](O, n),
        Nn[e](l, n),
        Nn[e](Nt, n),
        Nn[e]("onentervr", n),
        Nn[e]("onexitvr", n),
        Nn.entervr = Gr,
        Nn.exitvr = Yr,
        Nn.togglevr = Zr,
        Nn.resetsensor = ei,
        Nn.loadsettings = qo,
        Nn.savesettings = Ro,
        Nn.calibrate = Vo,
        Nn.resetcalibration = $o,
        Nn.update = Qr;
        if (xn.webGL) {
            xn.webVR = or;
            var u = Tn[_] && Tn[Ht],
            f = document[Q].requestPointerLock || document[Q].mozRequestPointerLock || document[Q].webkitRequestPointerLock,
            c = document.exitPointerLock || document.mozExitPointerLock || document.webkitExitPointerLock;
            f && c && (mr = r, gr = f, yr = c);
            try {
                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))
            } catch(h) {}
        } else sr == t && (sr = r, xn[J](Nn[l], Nn))
    },
    En.unloadplugin = function() {
        Yr(),
        oi(t, r),
        xn.webVR = n
    };
    var kr = n,
    Lr = n,
    Ar = n,
    Or = n,
    Mr = n,
    _r = n,
    Dr = n,
    Pr = n,
    Hr = n,
    Br = 100,
    Fr = n,
    qr = n,
    ti = n,
    oi = function() {
        var e = n,
        r = n;
        return function(i, s) {
            if (Tn[at] && nr == t) if (i) Tn.ios ? e = window.setInterval(function() {
                window[wn] = window[wn],
                window.setTimeout(window.stop, 0)
            },
            15e3) : Tn[_] && (r == n && (r = document[bn]("video"), r.setAttribute("loop", ""), r.canPlayType("video/webm") != "" && (r.src = Qo)), r.play());
            else {
                e && (window.clearInterval(e), e = n);
                if (r && s) {
                    r.pause();
                    try {
                        r.src = "",
                        r.removeAttribute("src")
                    } catch(o) {}
                    r = n
                }
            }
        }
    } (),
    ai = 0,
    ci = 0,
    ki = {
        q: new pi(0, 0, 0, 1),
        t: 0
    },
    Li = {
        q: new pi(0, 0, 0, 1),
        t: 0
    },
    Ai = new pi(0, 0, 0, 1),
    Oi = n,
    ls = new Ii,
    cs = new Ii,
    hs = new Ii,
    ps = new Ii,
    ds = new Ii,
    vs = Qi(),
    ms = Qi(),
    gs = new Ii,
    ys = new Ii,
    Ns = 0,
    Cs = new Ii,
    ks = new Ii,
    Ls = n,
    As = Qi(),
    Os = Qi(),
    Ms = Qi(),
    _s = Qi(),
    Ps = function() {
        var e = 0,
        t = 0,
        n = 0,
        r = 0,
        i = 0,
        s = 0,
        o = 0,
        u = 0,
        a = 0,
        f = 0,
        l = 1,
        c = 0,
        h = 0,
        p = 0,
        d = .03;
        return function(c, h, p, v) {
            var m = c - e,
            g = h - t,
            y = p - n,
            b = v - r;
            e = c,
            t = h,
            n = p,
            r = v;
            var w = Math[Bt](m * m + g * g + y * y);
            if (b > 500) {
                i = 0;
                return
            }
            if (i == 0) {
                i = b,
                s = w;
                return
            }
            i = i * .95 + .05 * b;
            var E = Math.min(15 * i / 1e3, .5);
            s = s * (1 - E) + E * w;
            var S = zo;
            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)
        }
    } (),
    Hs = 0,
    js = t,
    Fs = new Ii,
    Is = new Ii,
    qs = new Ii,
    Rs = new Ii,
    Us = new Ii,
    zs = new Ii,
    Ws = new Ii,
    Xs = new Ii,
    Vs = new Ii,
    $s = new Ii,
    Js = Qi(),
    Ks = Qi(),
    Qs = Qi(),
    Gs = Qi(),
    Ys = Qi(),
    Zs = Qi(),
    eo = Qi(),
    to = Qi(),
    no = Qi(),
    ro = Qi(),
    io = Qi(),
    so = Qi(),
    oo = Qi(),
    uo = Qi(),
    ao = Qi(),
    fo = Qi(),
    lo = Qi(),
    co = Qi(),
    ho = 20,
    po = .5,
    vo = 9.81,
    mo = 1e7,
    go = t,
    So = 0,
    No = new Ii,
    Co = Qi(),
    ko = Qi(),
    Oo = t,
    Mo = n,
    _o = n,
    Do = n,
    Po = r,
    Uo = t,
    zo = {
        rx: 0,
        ry: 0,
        rz: 0
    },
    Wo = n,
    Xo = n,
    Jo = function() {
        function i() {
            var t = 0,
            r = n * 3,
            i = 0,
            s = 0,
            o = 0,
            u = 0,
            a = 0,
            f = 0,
            l = 0,
            c = 0,
            h = 0,
            p = 0;
            for (t = 0; t < r; t += 3) i += e[t | 0],
            s += e[t + 1 | 0],
            o += e[t + 2 | 0];
            i /= n,
            s /= n,
            o /= n;
            for (t = 0; t < r; t += 3) l = e[t | 0] - i,
            c = e[t + 1 | 0] - s,
            h = e[t + 2 | 0] - o,
            u += l * l,
            a += c * c,
            f += h * h;
            u = Math[Bt](u / n),
            a = Math[Bt](a / n),
            f = Math[Bt](f / n),
            p = Math[Bt](u * u + a * a + f * f);
            if (p < .05) {
                var d = zo;
                d.rx = i,
                d.ry = s,
                d.rz = o,
                Wo && xn[J](Wo, Nn)
            } else Xo && xn[J](Xo, Nn)
        }
        var e = new Array(300),
        n = 0,
        r = 0;
        return function(s, o, u, a) {
            if (s < 0) {
                n = 0,
                r = xn[B];
                return
            }
            var f = xn[B] - r;
            if (f > 500) {
                var l = n * 3;
                e[l | 0] = o,
                e[l + 1 | 0] = u,
                e[l + 2 | 0] = a,
                n++;
                if (n > 100 || f > 2500) Uo = t,
                i()
            }
        }
    } (),
    Ko = function() {
        function u(t) {
            for (i = 0; i < t[kt]; i++) if (e && t[i] === e || s && t[i] === s) t.splice(i, 1),
            i--
        }
        var e = n,
        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);" + "}",
        s = n,
        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);" + "}";
        return function(i) {
            var a = xn.webGL;
            if (a) {
                var f, l = a.context,
                c = a.ppshaders,
                h = 1 - zn * .1 / hr;
                Un == t && h > .999999 && h < 1.000001 && (i = t),
                xn[m][Ct] == t && (i = t);
                if (i) if (Un) {
                    s == n && (s = a[hn](o, "ss,ca,dd,ol,sz,vg"));
                    if (s) {
                        var p = 1 / Rn[0],
                        d = Rn[1],
                        v = Rn[2],
                        g = Rn[3];
                        a[ct](s.prg),
                        l[I](s.ss, hr),
                        l[I](s.ca, h),
                        l.uniform4f(s.dd, p, p * d, p * v, p * g),
                        l[I](s.ol, .5 * vr * (1 + (jn - 1) * .1)),
                        l[I](s.vg, Wn / 30),
                        a[ct](n),
                        u(c),
                        c.push(s)
                    }
                } else e == n && (e = a[hn](r, "ca,ol")),
                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));
                else u(c)
            }
        }
    } (),
    Qo = "data:video/webm;base64,GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4ECQoWBAhhTgGcBAAAAAAABzRFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEuTbuMU6uEHFO7a1OsggGw7AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEMq17GDD0JATYCMTGF2ZjU2LjMuMTAwV0GMTGF2ZjU2LjMuMTAwc6SQC+JFWnEfyt4nOD98NcnLDESJiAAAAAAAAAAAFlSuawEAAAAAAABCrgEAAAAAAAA514EBc8WBAZyBACK1nIN1bmSGhVZfVlA4g4EBI+ODgw9CQOABAAAAAAAADrCBCLqBCFSwgQhUuoEIH0O2dQEAAAAAAAAo54EAo6OBAACAEAIAnQEqCAAIAABHCIWFiIWEiAICAAwNYAD+/6PeABxTu2sBAAAAAAAAEbuPs4EAt4r3gQHxggF88IED"
};