!function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n||e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o1?1:elapsed);for(property in _valuesEnd)if(void 0!==_valuesStart[property]){var start=_valuesStart[property]||0,end=_valuesEnd[property];end instanceof Array?_object[property]=_interpolationFunction(end,value):("string"==typeof end&&(end="+"===end.charAt(0)||"-"===end.charAt(0)?start+parseFloat(end):parseFloat(end)),"number"==typeof end&&(_object[property]=start+(end-start)*value))}if(null!==_onUpdateCallback&&_onUpdateCallback.call(_object,value),1===elapsed){if(_repeat>0){isFinite(_repeat)&&_repeat--;for(property in _valuesStartRepeat){if("string"==typeof _valuesEnd[property]&&(_valuesStartRepeat[property]=_valuesStartRepeat[property]+parseFloat(_valuesEnd[property])),_yoyo){var tmp=_valuesStartRepeat[property];_valuesStartRepeat[property]=_valuesEnd[property],_valuesEnd[property]=tmp}_valuesStart[property]=_valuesStartRepeat[property]}return _yoyo&&(_reversed=!_reversed),_startTime=void 0!==_repeatDelayTime?time+_repeatDelayTime:time+_delayTime,!0}null!==_onCompleteCallback&&_onCompleteCallback.call(_object,_object);for(var i=0,numChainedTweens=_chainedTweens.length;i1?fn(v[m],v[m-1],m-f):fn(v[i],v[i+1>m?m:i+1],f-i)},Bezier:function(v,k){for(var b=0,n=v.length-1,pw=Math.pow,bn=TWEEN.Interpolation.Utils.Bernstein,i=0;i<=n;i++)b+=pw(1-k,n-i)*pw(k,i)*v[i]*bn(n,i);return b},CatmullRom:function(v,k){var m=v.length-1,f=m*k,i=Math.floor(f),fn=TWEEN.Interpolation.Utils.CatmullRom;return v[0]===v[m]?(k<0&&(i=Math.floor(f=m*(1+k))),fn(v[(i-1+m)%m],v[i],v[(i+1)%m],v[(i+2)%m],f-i)):k<0?v[0]-(fn(v[0],v[0],v[1],v[1],-f)-v[0]):k>1?v[m]-(fn(v[m],v[m],v[m-1],v[m-1],f-m)-v[m]):fn(v[i?i-1:0],v[i],v[m1;i--)s*=i;return a[n]=s,s}}(),CatmullRom:function(p0,p1,p2,p3,t){var v0=.5*(p2-p0),v1=.5*(p3-p1),t2=t*t;return(2*p1-2*p2+v0+v1)*(t*t2)+(-3*p1+3*p2-2*v0-v1)*t2+v0*t+p1}}},function(root){"function"==typeof define&&define.amd?define([],function(){return TWEEN}):void 0!==module&&"object"==typeof exports?module.exports=TWEEN:void 0!==root&&(root.TWEEN=TWEEN)}(this)}).call(this,_dereq_("_process"))},{_process:4}],2:[function(_dereq_,module,exports){(function(process,global){!function(global,factory){"object"==typeof exports&&void 0!==module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):global.ES6Promise=factory()}(this,function(){"use strict";function objectOrFunction(x){return"function"==typeof x||"object"==typeof x&&null!==x}function isFunction(x){return"function"==typeof x}function useVertxTimer(){return function(){vertxNext(flush)}}function useSetTimeout(){var globalSetTimeout=setTimeout;return function(){return globalSetTimeout(flush,1)}}function flush(){for(var i=0;i1)for(var i=1;ib)throw Error("Bad port number "+b);a.Ja=b}else a.Ja=null}function la(a,b,c){b instanceof oa?a.a=b:(c||(b=qa(b,va)),a.a=new oa(b))}function na(a,b){return a?b?decodeURI(a):decodeURIComponent(a):""}function qa(a,b,c){return"string"==typeof a?(a=encodeURI(a).replace(b,wa),c&&(a=a.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),a):null}function wa(a){return"%"+((a=a.charCodeAt(0))>>4&15).toString(16)+(15&a).toString(16)}function oa(a){this.b=a||null}function ma(a){var b=new oa;if(b.b=a.b,a.a){var d,c={};for(d in a.a)c[d]=a.a[d].concat();b.a=c,b.c=a.c}return b}function xa(a,b){return a.reduce(function(a,b,e){return b.catch(a.bind(null,e))}.bind(null,b),Promise.reject())}function x(a,b){return a.concat(b)}function y(){}function ya(a){return null!=a}function za(a){return function(b){return b!=a}}function Aa(a,b,c){return c.indexOf(a)==b}function z(a,b){if(!b.length)return a;var c=b.map(function(a){return new ia(a)});return a.map(function(a){return new ia(a)}).map(function(a){return c.map(a.resolve.bind(a))}).reduce(x,[]).map(function(a){return a.toString()})}function Ba(a,b){return{keySystem:a,licenseServerUri:"",distinctiveIdentifierRequired:!1,persistentStateRequired:!1,audioRobustness:"",videoRobustness:"",serverCertificate:null,initData:b||[],keyIds:[]}}function Ca(a,b,c,d,e){var g,f=e in d;for(g in b){var h=e+"."+g,l=f?d[e]:c[g],m=!!{".abr.manager":!0}[h]||!!{serverCertificate:!0}[g];(f||g in a)&&(void 0===b[g]?void 0===l||f?delete a[g]:a[g]=l:m?a[g]=b[g]:"object"==typeof a[g]&&"object"==typeof b[g]?Ca(a[g],b[g],l,d,h):typeof b[g]==typeof l&&(a[g]=b[g]))}}function Da(a){return JSON.parse(JSON.stringify(a))}function A(){var a,b,c=new Promise(function(c,e){a=c,b=e});return c.resolve=a,c.reject=b,c}function B(a){this.f=!1,this.a=[],this.b=[],this.c=[],this.h=a||null}function Fa(){return{maxAttempts:2,baseDelay:1e3,backoffFactor:2,fuzzFactor:.5,timeout:0}}function C(a,b){return{uris:a,method:"GET",body:null,headers:{},allowCrossSiteCredentials:!1,retryParameters:b}}function Ga(a,b){for(var c=[],d=0;d=a[b]}.bind(null,b);if(!b[0]&&!b[2])return Sa(a,!1);if(!b[1]&&!b[3])return Sa(a,!0);if(c(0)&&c(1)&&c(2)&&c(3))return F(a);throw new t(2,2,2003)}function Ua(a){a=unescape(encodeURIComponent(a));for(var b=new Uint8Array(a.length),c=0;c=b?null:new VTTCue(a,b,c)}function zb(a,b,c,d){return Promise.resolve().then(function(){if(this.c)if(null==c||null==d)this.f.parseInit(b);else{for(var a=this.f.parseMedia(b,{periodStart:this.h,segmentStart:c,segmentEnd:d}),f=0;f=this.g);++f)this.c.addCue(a[f]);null==this.b&&(this.b=c),this.a=Math.min(d,this.g)}}.bind(a))}function yb(a,b){for(var c=a.c.cues,d=[],e=0;ea.end(0)-a.start(0)?null:a.length?a.end(a.length-1):null}function Bb(a,b){return!(!a||!a.length||1==a.length&&1e-6>a.end(0)-a.start(0))&&(b>=a.start(0)&&b<=a.end(a.length-1))}function Cb(a,b){if(!a||!a.length||1==a.length&&1e-6>a.end(0)-a.start(0))return 0;for(var c=0,d=a.length-1;0<=d&&a.end(d)>b;--d)c+=a.end(d)-Math.max(a.start(d),b);return c}function Db(a,b,c){this.f=a,this.N=b,this.i=c,this.c={},this.a=null,this.b={},this.g=new D,this.h=!1}function Eb(){var a={};return'video/mp4; codecs="avc1.42E01E",video/mp4; codecs="avc3.42E01E",video/mp4; codecs="hvc1.1.6.L93.90",audio/mp4; codecs="mp4a.40.2",audio/mp4; codecs="ac-3",audio/mp4; codecs="ec-3",video/webm; codecs="vp8",video/webm; codecs="vp9",video/webm; codecs="av1",audio/webm; codecs="vorbis",audio/webm; codecs="opus",video/mp2t; codecs="avc1.42E01E",video/mp2t; codecs="avc3.42E01E",video/mp2t; codecs="hvc1.1.6.L93.90",video/mp2t; codecs="mp4a.40.2",video/mp2t; codecs="ac-3",video/mp2t; codecs="ec-3",video/mp2t; codecs="mp4a.40.2",text/vtt,application/mp4; codecs="wvtt",application/ttml+xml,application/mp4; codecs="stpp"'.split(",").forEach(function(b){a[b]=!!ub[b]||MediaSource.isTypeSupported(b);var c=b.split(";")[0];a[c]=a[c]||a[b]}),a}function Fb(a,b){a.a||(a.a=new tb(a.i)),a.a.f=new ub[b]}function Gb(a,b){if("text"==b)var c=a.a.b;else c=Ib(a,b),c=!c||1==c.length&&1e-6>c.end(0)-c.start(0)?null:1==c.length&&0>c.start(0)?0:c.length?c.start(0):null;return c}function Ib(a,b){try{return a.c[b].buffered}catch(c){return null}}function Jb(a,b,c,d,e){return"text"==b?zb(a.a,c,d,e):Kb(a,b,a.ie.bind(a,b,c))}function Lb(a,b){return"text"==b?a.a.remove(0,1/0):Kb(a,b,a.qc.bind(a,b,0,a.N.duration))}function Mb(a,b,c,d){return"text"==b?(a.a.h=c,null!=d&&(a.a.g=d),Promise.resolve()):(null==d&&(d=1/0),Promise.all([Kb(a,b,a.Ec.bind(a,b)),Kb(a,b,a.Zd.bind(a,b,c)),Kb(a,b,a.Xd.bind(a,b,d))]))}function Kb(a,b,c){if(a.h)return Promise.reject();if(c={start:c,p:new A},a.b[b].push(c),1==a.b[b].length)try{c.start()}catch(d){"QuotaExceededError"==d.name?c.p.reject(new t(2,3,3017,b)):c.p.reject(new t(2,3,3015,d)),Ob(a,b)}return c.p}function Nb(a,b){if(a.h)return Promise.reject();var d,c=[];for(d in a.c){var e=new A,f={start:function(a){a.resolve()}.bind(null,e),p:e};a.b[d].push(f),c.push(e),1==a.b[d].length&&f.start()}return Promise.all(c).then(function(){var a;try{b()}catch(l){var c=Promise.reject(new t(2,3,3015,l))}for(a in this.c)Ob(this,a);return c}.bind(a),function(){return Promise.reject()}.bind(a))}function Ob(a,b){a.b[b].shift();var c=a.b[b][0];if(c)try{c.start()}catch(d){c.p.reject(new t(2,3,3015,d)),Ob(a,b)}}function Pb(a,b,c){return c==b||a>=Qb&&c==b.split("-")[0]||a>=Rb&&c.split("-")[0]==b.split("-")[0]}function Sb(a){a=a.toLowerCase().split("-");var b=Tb[a[0]];return b&&(a[0]=b),a.join("-")}function Ub(a,b,c){var d=a.video;return!(d&&(d.widthb.maxWidth||d.width>c.width||d.heightb.maxHeight||d.height>c.height||d.width*d.heightb.maxPixels)||a.bandwidthb.maxBandwidth)}function Vb(a,b,c){var d=!1;return a.variants.forEach(function(a){var e=a.allowedByApplication;a.allowedByApplication=Ub(a,b,c),e!=a.allowedByApplication&&(d=!0)}),d}function Wb(a,b,c){var d=b.video,e=b.audio;for(b=0;bd.indexOf(b)||c&&(a.mimeType!=c.mimeType||a.codecs.split(".")[0]!=c.codecs.split(".")[0]))}function Zb(a,b,c){var d=null;return $b(a.variants).map(function(a){var e;e=a.video&&a.audio?c==a.video.id&&b==a.audio.id:a.video&&c==a.video.id||a.audio&&b==a.audio.id;var g="";a.video&&(g+=a.video.codecs),a.audio&&(""!=g&&(g+=", "),g+=a.audio.codecs,d=a.audio.label);var h=a.audio?a.audio.codecs:null,l=a.video?a.video.codecs:null,m=null;a.video?m=a.video.mimeType:a.audio&&(m=a.audio.mimeType);var q=null;a.audio?q=a.audio.kind:a.video&&(q=a.video.kind);var r=Ga((a.audio?a.audio.roles:[]).concat(a.video?a.video.roles:[]));return{id:a.id,active:e,type:"variant",bandwidth:a.bandwidth,language:a.language,label:d,kind:q||null,width:a.video?a.video.width:null,height:a.video?a.video.height:null,frameRate:a.video?a.video.frameRate:void 0,mimeType:m,codecs:g,audioCodec:h,videoCodec:l,primary:a.primary,roles:r,videoId:a.video?a.video.id:null,audioId:a.audio?a.audio.id:null}})}function ac(a,b){return a.textStreams.map(function(a){return{id:a.id,active:b==a.id,type:"text",language:a.language,label:a.label,kind:a.kind,mimeType:a.mimeType,codecs:a.codecs||null,audioCodec:null,videoCodec:null,primary:a.primary,roles:a.roles}})}function bc(a,b){for(var c=0;c=a.periods[c].startTime)return c;return 0}function ic(a,b){for(var c=0;cc?"-Infinity":"Infinity":c;return b}})}function wc(a){return JSON.parse(a,function(a,c){return"NaN"==c?NaN:"-Infinity"==c?-1/0:"Infinity"==c?1/0:c&&"object"==typeof c&&"TimeRanges"==c.__type__?xc(c):c})}function xc(a){return{length:a.length,start:function(b){return a.start[b]},end:function(b){return a.end[b]}}}function yc(a,b,c,d,e){this.J=a,this.l=b,this.B=c,this.G=d,this.v=e,this.c=this.j=this.h=!1,this.A="",this.a=this.i=null,this.b={video:{},player:{}},this.o=0,this.f={},this.g=null}function zc(a){for(var b in a.f){var c=a.f[b];delete a.f[b],c.reject(new t(1,7,7e3))}}function Ac(a,b){var c=vc(b);a.a.sendMessage("urn:x-cast:com.google.shaka.v2",c,function(){},ga)}function p(){this.nb=new Ia,this.Ta=this}function J(a,b,c){p.call(this),this.c=a,this.b=b,this.h=this.f=this.g=this.i=this.j=null,this.a=new yc(c,this.ee.bind(this),this.fe.bind(this),this.ge.bind(this),this.Vb.bind(this)),Bc(this)}function Bc(a){a.a.init(),a.h=new D,kc.forEach(function(a){E(this.h,this.c,a,this.te.bind(this))}.bind(a)),oc.forEach(function(a){E(this.h,this.b,a,this.Id.bind(this))}.bind(a)),a.j={};for(var b in a.c)Object.defineProperty(a.j,b,{configurable:!1,enumerable:!0,get:a.se.bind(a,b),set:a.ue.bind(a,b)});a.i={};for(b in a.b)Object.defineProperty(a.i,b,{configurable:!1,enumerable:!0,get:a.Hd.bind(a,b)});a.g=new p,a.g.Ta=a.j,a.f=new p,a.f.Ta=a.i}function K(a,b,c,d){p.call(this),this.a=a,this.b=b,this.j={video:a,player:b},this.l=c||function(){},this.o=d||function(a){return a},this.i=!1,this.f=!0,this.h=this.g=this.c=null,Cc(this)}function Cc(a){var b=cast.receiver.CastReceiverManager.getInstance();b.onSenderConnected=a.jc.bind(a),b.onSenderDisconnected=a.jc.bind(a),b.onSystemVolumeChanged=a.Mc.bind(a),a.g=b.getCastMessageBus("urn:x-cast:com.google.cast.media"),a.g.onMessage=a.hd.bind(a),a.c=b.getCastMessageBus("urn:x-cast:com.google.shaka.v2"),a.c.onMessage=a.vd.bind(a),b.start(),kc.forEach(function(a){this.a.addEventListener(a,this.mc.bind(this,"video"))}.bind(a)),oc.forEach(function(a){this.b.addEventListener(a,this.mc.bind(this,"player"))}.bind(a)),cast.__platform__&&cast.__platform__.canDisplayType('video/mp4; codecs="avc1.640028"; width=3840; height=2160')?a.b.Jb(3840,2160):a.b.Jb(1920,1080),a.b.addEventListener("loading",function(){this.f=!1,Dc(this)}.bind(a)),a.a.addEventListener("playing",function(){this.f=!1,Dc(this)}.bind(a)),a.a.addEventListener("pause",function(){Dc(this)}.bind(a)),a.b.addEventListener("unloading",function(){this.f=!0,Dc(this)}.bind(a)),a.a.addEventListener("ended",function(){window.setTimeout(function(){this.a&&this.a.ended&&(this.f=!0,Dc(this))}.bind(this),5e3)}.bind(a))}function Dc(a){Promise.resolve().then(function(){this.dispatchEvent(new I("caststatuschanged")),L(this,0)}.bind(a))}function Ec(a,b,c){for(var d in b.player)a.b[d](b.player[d]);a.l(c),c=Promise.resolve();var e=a.a.autoplay;b.manifest&&(a.a.autoplay=!1,(c=a.b.load(b.manifest,b.startTime)).catch(function(a){this.b.dispatchEvent(new I("error",{detail:a}))}.bind(a))),c.then(function(){var a;for(a in b.video){var c=b.video[a];this.a[a]=c}for(a in b.playerAfterLoad)c=b.playerAfterLoad[a],this.b[a](c);this.a.autoplay=e,b.manifest&&(this.a.play(),L(this,0))}.bind(a))}function Fc(a,b,c,d){a.i&&(a=vc(b),d?c.getCastChannel(d).send(a):c.broadcast(a))}function L(a,b,c){var d=Gc,d={mediaSessionId:0,playbackRate:a.a.playbackRate,playerState:a.f?d.IDLE:a.b.ka?d.Ac:a.a.paused?d.Bc:d.Cc,currentTime:a.a.currentTime,supportedMediaCommands:15,volume:{level:a.a.volume,muted:a.a.muted}};c&&(d.media=c),Fc(a,{requestId:b,type:"MEDIA_STATUS",status:[d]},a.g)}function Hc(a,b){var c=M(a,b);return 1!=c.length?null:c[0]}function M(a,b){return Array.prototype.filter.call(a.childNodes,function(a){return a.tagName==b})}function Ic(a){var b=a.firstChild;return b&&b.nodeType==Node.TEXT_NODE?a.textContent.trim():null}function N(a,b,c,d){var e=null;return null!=(a=a.getAttribute(b))&&(e=c(a)),null==e?void 0!=d?d:null:e}function Jc(a){return a?(a=Date.parse(a),isNaN(a)?null:Math.floor(a/1e3)):null}function Kc(a){return a&&(a=/^P(?:([0-9]*)Y)?(?:([0-9]*)M)?(?:([0-9]*)D)?(?:T(?:([0-9]*)H)?(?:([0-9]*)M)?(?:([0-9.]*)S)?)?$/.exec(a))?(a=31536e3*Number(a[1]||null)+2592e3*Number(a[2]||null)+86400*Number(a[3]||null)+3600*Number(a[4]||null)+60*Number(a[5]||null)+Number(a[6]||null),isFinite(a)?a:null):null}function Lc(a){var b=/([0-9]+)-([0-9]+)/.exec(a);return b?(a=Number(b[1]),isFinite(a)?(b=Number(b[2]),isFinite(b)?{start:a,end:b}:null):null):null}function Mc(a){return(a=Number(a))%1?null:a}function Nc(a){return!((a=Number(a))%1)&&0(u=u||0))if(v+1=u)break;u=Math.ceil((u-w)/G)-1}else{if(1/0==m)break;if(w/e>=m)break;u=Math.ceil((m*e-w)/G)-1}0>>31;var m=2147483647&m,q=d.s.D();if(d.s.I(4),1==g)throw new t(2,3,3006);e.push(new O(e.length,b/f,(b+q)/f,function(){return c},a,a+m-1)),b+=q,a+=m}return e}function S(a){this.a=a}function gd(a,b){if(a.a.length){var c=a.a[a.a.length-1];c.startTime>b||(a.a[a.a.length-1]=new O(c.position,c.startTime,b,c.a,c.X,c.M))}}function hd(a){this.b=a,this.a=new P(a,0),id||(id=[new Uint8Array([255]),new Uint8Array([127,255]),new Uint8Array([63,255,255]),new Uint8Array([31,255,255,255]),new Uint8Array([15,255,255,255,255]),new Uint8Array([7,255,255,255,255,255]),new Uint8Array([3,255,255,255,255,255,255]),new Uint8Array([1,255,255,255,255,255,255,255])])}function jd(a){var b=kd(a);if(7=c&&!(b&1<<8-c);c++);if(8a||c&&a>=c?null:Math.floor(a/d)},getSegmentReference:function(a){var b=a*d;return 0>b||c&&b>=c?null:new O(a,b,b+d,function(){var c=Vc(g,l,a+e,h,b*f);return z(m,[c])},0,null)}}}function Cd(a,b){for(var c=[],d=0;da.l||(a.f=window.setTimeout(a.he.bind(a),1e3*Math.max(Math.max(3,a.l)-b,0)))}function Od(a,b,c){b=b||{contentType:"",mimeType:"",codecs:"",containsEmsgBoxes:!1,frameRate:void 0},c=c||b.U;var d=M(a,"BaseURL").map(Ic),e=a.getAttribute("contentType")||b.contentType,f=a.getAttribute("mimeType")||b.mimeType,g=a.getAttribute("codecs")||b.codecs,h=N(a,"frameRate",Pc)||b.frameRate,l=!!M(a,"InbandEventStream").length;return e||(e=Rd(f,g)),{U:z(c,d),Qa:Hc(a,"SegmentBase")||b.Qa,oa:Hc(a,"SegmentList")||b.oa,Ra:Hc(a,"SegmentTemplate")||b.Ra,width:N(a,"width",Oc)||b.width,height:N(a,"height",Oc)||b.height,contentType:e,mimeType:f,codecs:g,frameRate:h,containsEmsgBoxes:l||b.containsEmsgBoxes,id:a.getAttribute("id")}}function Sd(a){var b=0+(a.Qa?1:0);return b+=a.oa?1:0,(b+=a.Ra?1:0)?(1!=b&&(a.Qa&&(a.oa=null),a.Ra=null),!0):"text"==a.contentType||"application"==a.contentType}function Td(a,b,c,d){return b=z(b,[c]),b=C(b,a.b.retryParameters),b.method=d,a.a.networkingEngine.request(0,b).then(function(a){if("HEAD"==d){if(!a.headers||!a.headers.date)return 0;a=a.headers.date}else a=F(a.data);return a=Date.parse(a),isNaN(a)?0:a-Date.now()})}function Md(a,b,c,d){c=c.map(function(a){return{scheme:a.getAttribute("schemeIdUri"),value:a.getAttribute("value")}});var e=a.b.dash.clockSyncUri;return d&&!c.length&&e&&c.push({scheme:"urn:mpeg:dash:utc:http-head:2014",value:e}),xa(c,function(a){var c=a.value;switch(a.scheme){case"urn:mpeg:dash:utc:http-head:2014":case"urn:mpeg:dash:utc:http-head:2012":return Td(this,b,c,"HEAD");case"urn:mpeg:dash:utc:http-xsdate:2014":case"urn:mpeg:dash:utc:http-iso:2014":case"urn:mpeg:dash:utc:http-xsdate:2012":case"urn:mpeg:dash:utc:http-iso:2012":return Td(this,b,c,"GET");case"urn:mpeg:dash:utc:direct:2014":case"urn:mpeg:dash:utc:direct:2012":return a=Date.parse(c),isNaN(a)?0:a-Date.now();case"urn:mpeg:dash:utc:http-ntp:2014":case"urn:mpeg:dash:utc:ntp:2014":case"urn:mpeg:dash:utc:sntp:2014":default:return Promise.reject()}}.bind(a)).catch(function(){return 0})}function Rd(a,b){return ub[Yb(a,b)]?"text":a.split("/")[0]}function Ud(a,b,c,d){this.uri=a,this.type=b,this.ga=c,this.segments=d||null}function Vd(a,b,c,d){this.id=a,this.name=b,this.a=c,this.value=d||null}function Wd(a,b){this.name=a,this.value=b}function Xd(a,b,c){return c=c||null,(a=a.getAttribute(b))?a.value:c}function Yd(a,b){this.ga=b,this.uri=a}function Zd(a,b){return a.filter(function(a){return a.name==b})}function $d(a,b){var c=Zd(a,b);return c.length?c[0]:null}function ae(a,b,c){return a.filter(function(a){var d=a.getAttribute("TYPE");return a=a.getAttribute("GROUP-ID"),d.value==b&&a.value==c})}function be(a){this.b=a,this.a=0}function ce(a,b){b.lastIndex=a.a;var c=(c=b.exec(a.b))?{position:c.index,length:c[0].length,Sd:c}:null;return a.a!=a.b.length&&c&&c.position==a.a?(a.a+=c.length,c.Sd):null}function de(a){return a.a==a.b.length?null:(a=ce(a,/[^ \t\n]*/gm))?a[0]:null}function ee(){this.a=0}function fe(a,b,c){var d=(b=(b=F(b)).replace(/\r\n|\r(?=[^\n]|$)/gm,"\n").trim()).split(/\n+/m);if(!/^#EXTM3U($|[ \t\n])/m.test(d[0]))throw new t(2,4,4015);b=0;for(var e=[],f=1;fc.length)return null;var d=null,e=a;for(a=null;e&&!(a=e.getAttribute(b))&&(e=e.parentNode)instanceof Element;);if(b=a)for(a=0;aa.Y()?a.ma():a.bb())}function lf(a,b){null!=a.f&&(window.clearInterval(a.f),a.f=null),a.g=b,a.a.playbackRate=a.h||0>b?0:b,!a.h&&0>b&&(a.f=window.setInterval(function(){this.a.currentTime+=b/4}.bind(a),250))}function nf(a,b){var c=Bb.bind(null,a.a.buffered),d=1*Math.max(a.c.minBufferTime||0,a.l.rebufferingGoal),e=a.c.presentationTimeline,f=e.ua(),g=e.Ea(d),h=e.Ea(5),d=e.Ea(d+5);return b>f?f:b=g||c(b)?b:d}function mf(a,b,c){a.a.currentTime=c;var d=0,e=function(){!this.a||10<=d++||this.a.currentTime!=b||(this.a.currentTime=c,setTimeout(e,100))}.bind(a);setTimeout(e,100)}function hf(a,b){var c=a.c.presentationTimeline.ma();return bc?c:b)}function of(a,b,c,d,e,f){this.a=a,this.g=b,this.A=c,this.l=d,this.h=e,this.B=f,this.c=[],this.j=new D,this.b=!1,this.i=-1,this.f=null,pf(this)}function rf(a){var b=Da(a);return b.eventElement=a.eventElement,b}function pf(a){qf(a),a.f=window.setTimeout(a.G.bind(a),250)}function qf(a){a.f&&(window.clearTimeout(a.f),a.f=null)}function sf(a,b){this.a=b,this.b=a,this.g=null,this.i=1,this.o=Promise.resolve(),this.h=[],this.j={},this.c={},this.f=this.l=this.v=!1}function V(a){return a.b.periods[hc(a.b,jf(a.a.Oa))]}function vf(a){return Oa(a.c,function(a){return a.na||a.stream})}function wf(a,b){var c={};return c.text=b,uf(a,c)}function xf(a,b){var c=a.c.video;if(c){var d=c.stream;if(d)if(b){var e=d.trickModeVideo;if(e){var f=c.na;f||(yf(a,"video",e,!1),c.na=d)}}else(f=c.na)&&(c.na=null,yf(a,"video",f,!0))}}function yf(a,b,c,d){var e=a.c[b];if(!e&&"text"==b&&a.g.ignoreTextStreamFailures)wf(a,c);else if(e){var f=ic(a.b,c);d&&f!=e.wa?zf(a):(e.na&&(c.trickModeVideo?(e.na=c,c=c.trickModeVideo):e.na=null),"text"==b&&Fb(a.a.K,Yb(c.mimeType,c.codecs)),(b=a.h[f])&&b.La&&(b=a.j[c.id])&&b.La&&e.stream!=c&&(e.stream=c,e.cb=!0,d&&(e.sa?e.kb=!0:e.xa?(e.ra=!0,e.kb=!0):(tf(e),Af(a,e,!0)))))}}function Bf(a){var b=jf(a.a.Oa);Object.keys(a.c).every(function(a){var c=this.a.K;return"text"==a?(a=c.a,a=b>=a.b&&bb?a.a.K.pa(b):a.a.K.pa(Math.pow(2,32))}function Gf(a,b){var c=jf(a.a.Oa),d=b.Fa&&b.ea?a.b.periods[ic(a.b,b.Fa)].startTime+b.ea.endTime:Math.max(c,b.rc);b.rc=0;var e=ic(a.b,b.stream),f=hc(a.b,d),g=a.a.K,h=b.type;return"text"==h?(g=g.a,g=null==g.a||g.a=a.b.presentationTimeline.Y()?(b.endOfStream=!0,null):(b.endOfStream=!1,b.wa=f,f!=e?null:g>=h?.5:(d=a.a.K,f=b.type,d="text"==f?d.a.a:Ab(Ib(d,f)),b.ea&&b.stream==b.Fa?(f=b.ea.position+1,d=If(a,b,e,f)):null==(f=b.ea?b.stream.findSegmentPosition(Math.max(0,a.b.periods[ic(a.b,b.Fa)].startTime+b.ea.endTime-a.b.periods[e].startTime)):b.stream.findSegmentPosition(Math.max(0,(d||c)-a.b.periods[e].startTime)))?d=null:(g=null,null==d&&(g=If(a,b,e,Math.max(0,f-1))),d=g||If(a,b,e,f)),d?(Jf(a,b,c,e,d),null):1))}function If(a,b,c,d){return c=a.b.periods[c],(b=b.stream.getSegmentReference(d))?(a=a.b.presentationTimeline,d=a.ua(),c.startTime+b.endTimed?null:b):null}function Jf(a,b,c,d,e){var f=a.b.periods[d],g=b.stream,h=a.b.periods[d+1],l=null,l=h?h.startTime:a.b.presentationTimeline.Y();d=Kf(a,b,d,l),b.xa=!0,b.cb=!1,h=Lf(a,e),Promise.all([d,h]).then(function(a){if(!this.f&&!this.l)return Mf(this,b,c,f,g,e,a[1])}.bind(a)).then(function(){this.f||this.l||(b.xa=!1,b.Gb=!1,b.ra||this.a.Ab(),Cf(this,b,0),Nf(this,g))}.bind(a)).catch(function(a){this.f||this.l||(b.xa=!1,this.b.presentationTimeline.$()&&this.g.infiniteRetriesForLiveStreams&&(1001==a.code||1002==a.code||1003==a.code)?"text"==b.type&&this.g.ignoreTextStreamFailures&&1001==a.code?delete this.c.text:(a.severity=1,this.a.onError(a),Cf(this,b,4)):3017==a.code?Of(this,b,a):"text"==b.type&&this.g.ignoreTextStreamFailures?delete this.c.text:(b.tb=!0,a.severity=2,this.a.onError(a)))}.bind(a))}function Of(a,b,c){if(!Na(a.c).some(function(a){return a!=b&&a.Gb})){var d=Math.round(100*a.i);if(20=(c=c-d-a.g.bufferBehind)?Promise.resolve():a.a.K.remove(b.type,d,d+c).then(function(){}.bind(a))}function Nf(a,b){if(!a.v&&(a.v=Na(a.c).every(function(a){return"text"==a.type||!a.ra&&!a.sa&&a.ea}),a.v)){var c=ic(a.b,b);for(a.h[c]||Ff(a,c).then(function(){this.a.ac()}.bind(a)).catch(y),c=0;c=b.status&&202!=b.status)b.responseURL&&(a=b.responseURL),c({uri:a,data:b.response,headers:e,fromCache:!!e["x-shaka-from-cache"]});else{var f=null;try{f=Ta(b.response)}catch(m){}d(new t(401==b.status||403==b.status?2:1,1,1001,a,b.status,f,e))}},e.onerror=function(){d(new t(1,1,1002,a))},e.ontimeout=function(){d(new t(1,1,1003,a))};for(var f in b.headers)e.setRequestHeader(f,b.headers[f]);e.send(b.body)})}function Sf(){this.a=null,this.b=[],this.c={}}function Wf(a,b,c){return Vf(a,b,"readwrite",function(a){a.put(c)})}function Xf(a,b,c){return Vf(a,"segment","readwrite",function(a){for(var d=0;d=a.length?Promise.resolve():jg(this,a[b++]).then(c):Promise.reject(new t(2,9,9002))}.bind(this);return c()}.bind(a));return a.b={},a.i=Promise.all(c).then(function(){return Wf(this.j,"manifest",b)}.bind(a)).then(function(){this.l=[]}.bind(a)),a.i}function jg(a,b){var c=C(b.uris,a.A);(b.X||null!=b.M)&&(c.headers.Range="bytes="+b.X+"-"+(null==b.M?"":b.M));var d;return a.v.request(1,c).then(function(a){return this.a?(d=a.data.byteLength,this.l.push(b.Hb.key),b.Hb.data=a.data,Wf(this.j,"segment",b.Hb)):Promise.reject(new t(2,9,9002))}.bind(a)).then(function(){if(!this.a)return Promise.reject(new t(2,9,9002));null==b.M?(this.a.size+=d,this.f+=b.Rb):this.h+=d;var a=(this.h+this.f)/(this.c+this.g),c=$f(this.a);this.o.progressCallback(c,a)}.bind(a))}function kg(){this.a=-1}function lg(a){var b=new T(null,0);b.pa(a.duration);var c=a.drmInfo?[a.drmInfo]:[];return{presentationTimeline:b,minBufferTime:10,offlineSessionIds:a.sessionIds,periods:a.periods.map(function(a){return ag(a,c,b)})}}function mg(a){if(/^offline:([0-9]+)$/.exec(a)){var b={uri:a,data:new ArrayBuffer(0),headers:{"content-type":"application/x-offline-manifest"}};return Promise.resolve(b)}if(b=/^offline:[0-9]+\/[0-9]+\/([0-9]+)$/.exec(a)){var c=Number(b[1]),d=fg();return d?d.init(Zf).then(function(){return d.get("segment",c)}).then(function(b){return d.m().then(function(){if(!b)throw new t(2,9,9003,c);return{uri:a,data:b.data,headers:{}}})}):Promise.reject(new t(2,9,9e3))}return Promise.reject(new t(2,1,9004,a))}function ng(){this.a=Promise.resolve(),this.b=this.c=this.f=!1,this.i=new Promise(function(a){this.g=a}.bind(this))}function og(a){return a.f||(a.a=a.a.then(function(a){return this.c=!0,Promise.resolve(a)}.bind(a),function(a){return this.c=!0,this.b?(this.g(),Promise.reject(this.h)):Promise.reject(a)}.bind(a))),a.f=!0,a.a}function W(a,b){p.call(this),this.O=!1,this.f=a,this.A=null,this.l=new D,this.Qb=new H,this.Ya=this.c=this.h=this.a=this.v=this.g=this.Wa=this.ja=this.N=this.j=this.o=null,this.Dc=1e9,this.Va=[],this.ka=!1,this.Za=!0,this.la=this.J=null,this.G={},this.Xa=[],this.B={},this.b=pg(this),this.ob={width:1/0,height:1/0},this.i=qg(),this.Ua=0,this.ia=this.b.preferredAudioLanguage,this.Ca=this.b.preferredTextLanguage,this.lb=this.mb="",b&&b(this),this.o=new B(this.de.bind(this)),this.Wa=rg(this);for(var c=0;cc.length)return a.ya(new t(2,4,4012)),{};a.b.abr.manager.setVariants(c),a.b.abr.manager.setTextStreams(d);var f=[];e&&(f=["video","audio"],b.textStreams.length&&f.push("text")),e=vf(a.a);var g=a.a,h=g.c.video||g.c.audio;if(g=h?g.b.periods[h.wa]:null,b=fc(e.audio,e.video,g?g.variants:b.variants)){b.allowedByApplication&&b.allowedByKeySystem||(f.push("audio"),f.push("video"));for(var l in e)"audio"==(b=e[l]).type&&b.language!=c[0].language?f.push(l):"text"==b.type&&0=d.a.length)a=c;else{var e=[];for(a=0;athis.a?this.b:Math.min(ea(this.c),ea(this.f))},n("shaka.util.Error",t),t.prototype.toString=function(){return"shaka.util.Error "+JSON.stringify(this,null," ")},t.Severity={RECOVERABLE:1,CRITICAL:2},t.Category={NETWORK:1,TEXT:2,MEDIA:3,MANIFEST:4,STREAMING:5,DRM:6,PLAYER:7,CAST:8,STORAGE:9},t.Code={UNSUPPORTED_SCHEME:1e3,BAD_HTTP_STATUS:1001,HTTP_ERROR:1002,TIMEOUT:1003,MALFORMED_DATA_URI:1004,UNKNOWN_DATA_URI_ENCODING:1005,REQUEST_FILTER_ERROR:1006,RESPONSE_FILTER_ERROR:1007,INVALID_TEXT_HEADER:2e3,INVALID_TEXT_CUE:2001,UNABLE_TO_DETECT_ENCODING:2003,BAD_ENCODING:2004,INVALID_XML:2005,INVALID_MP4_TTML:2007,INVALID_MP4_VTT:2008,BUFFER_READ_OUT_OF_BOUNDS:3e3,JS_INTEGER_OVERFLOW:3001,EBML_OVERFLOW:3002,EBML_BAD_FLOATING_POINT_SIZE:3003,MP4_SIDX_WRONG_BOX_TYPE:3004,MP4_SIDX_INVALID_TIMESCALE:3005,MP4_SIDX_TYPE_NOT_SUPPORTED:3006,WEBM_CUES_ELEMENT_MISSING:3007,WEBM_EBML_HEADER_ELEMENT_MISSING:3008,WEBM_SEGMENT_ELEMENT_MISSING:3009,WEBM_INFO_ELEMENT_MISSING:3010,WEBM_DURATION_ELEMENT_MISSING:3011,WEBM_CUE_TRACK_POSITIONS_ELEMENT_MISSING:3012,WEBM_CUE_TIME_ELEMENT_MISSING:3013,MEDIA_SOURCE_OPERATION_FAILED:3014,MEDIA_SOURCE_OPERATION_THREW:3015,VIDEO_ERROR:3016,QUOTA_EXCEEDED_ERROR:3017,UNABLE_TO_GUESS_MANIFEST_TYPE:4e3,DASH_INVALID_XML:4001,DASH_NO_SEGMENT_INFO:4002,DASH_EMPTY_ADAPTATION_SET:4003,DASH_EMPTY_PERIOD:4004,DASH_WEBM_MISSING_INIT:4005,DASH_UNSUPPORTED_CONTAINER:4006,DASH_PSSH_BAD_ENCODING:4007,DASH_NO_COMMON_KEY_SYSTEM:4008,DASH_MULTIPLE_KEY_IDS_NOT_SUPPORTED:4009,DASH_CONFLICTING_KEY_IDS:4010,UNPLAYABLE_PERIOD:4011,RESTRICTIONS_CANNOT_BE_MET:4012,NO_PERIODS:4014,HLS_PLAYLIST_HEADER_MISSING:4015,INVALID_HLS_TAG:4016,HLS_INVALID_PLAYLIST_HIERARCHY:4017,DASH_DUPLICATE_REPRESENTATION_ID:4018,HLS_MULTIPLE_MEDIA_INIT_SECTIONS_FOUND:4020,HLS_COULD_NOT_GUESS_MIME_TYPE:4021,HLS_MASTER_PLAYLIST_NOT_PROVIDED:4022,HLS_REQUIRED_ATTRIBUTE_MISSING:4023,HLS_REQUIRED_TAG_MISSING:4024,HLS_COULD_NOT_GUESS_CODECS:4025,HLS_KEYFORMATS_NOT_SUPPORTED:4026,INVALID_STREAMS_CHOSEN:5005,NO_RECOGNIZED_KEY_SYSTEMS:6e3,REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE:6001,FAILED_TO_CREATE_CDM:6002,FAILED_TO_ATTACH_TO_VIDEO:6003,INVALID_SERVER_CERTIFICATE:6004,FAILED_TO_CREATE_SESSION:6005,FAILED_TO_GENERATE_LICENSE_REQUEST:6006,LICENSE_REQUEST_FAILED:6007,LICENSE_RESPONSE_REJECTED:6008,ENCRYPTED_CONTENT_WITHOUT_DRM_INFO:6010,NO_LICENSE_SERVER_GIVEN:6012,OFFLINE_SESSION_REMOVED:6013,EXPIRED:6014,LOAD_INTERRUPTED:7e3,CAST_API_UNAVAILABLE:8e3,NO_CAST_RECEIVERS:8001,ALREADY_CASTING:8002,UNEXPECTED_CAST_ERROR:8003,CAST_CANCELED_BY_USER:8004,CAST_CONNECTION_TIMED_OUT:8005,CAST_RECEIVER_APP_UNAVAILABLE:8006,STORAGE_NOT_SUPPORTED:9e3,INDEXED_DB_ERROR:9001,OPERATION_ABORTED:9002,REQUESTED_ITEM_NOT_FOUND:9003,MALFORMED_OFFLINE_URI:9004,CANNOT_STORE_LIVE_OFFLINE:9005,STORE_ALREADY_IN_PROGRESS:9006,NO_INIT_DATA_FOR_OFFLINE:9007,LOCAL_PLAYER_INSTANCE_REQUIRED:9008};var ha=/^(?:([^:/?#.]+):)?(?:\/\/(?:([^/?#]*)@)?([^/#?]*?)(?::([0-9]+))?(?=[/#?]|$))?([^?#]+)?(?:\?([^#]*))?(?:#(.*))?$/;(k=ia.prototype).aa="",k.Ba="",k.ca="",k.Ja=null,k.W="",k.ta="",k.toString=function(){var a=[],b=this.aa;if(b&&a.push(qa(b,ra,!0),":"),b=this.ca){a.push("//");var c=this.Ba;c&&a.push(qa(c,ra,!0),"@"),a.push(encodeURIComponent(b).replace(/%25([0-9a-fA-F]{2})/g,"%$1")),null!=(b=this.Ja)&&a.push(":",String(b))}return(b=this.W)&&(this.ca&&"/"!=b.charAt(0)&&a.push("/"),a.push(qa(b,"/"==b.charAt(0)?sa:ta,!0))),(b=this.a.toString())&&a.push("?",b),(b=this.ta)&&a.push("#",qa(b,ua)),a.join("")},k.resolve=function(a){var b=new ia(this);"data"===b.aa&&(b=new ia);var c=!!a.aa;c?ja(b,a.aa):c=!!a.Ba,c?b.Ba=a.Ba:c=!!a.ca,c?b.ca=a.ca:c=null!=a.Ja;d=a.W;if(c)ka(b,a.Ja);else if(c=!!a.W)if("/"!=d.charAt(0)&&(this.ca&&!this.W?d="/"+d:-1!=(e=b.W.lastIndexOf("/"))&&(d=b.W.substr(0,e+1)+d)),".."==d||"."==d)d="";else if(-1!=d.indexOf("./")||-1!=d.indexOf("/.")){for(var e=!d.lastIndexOf("/",0),d=d.split("/"),f=[],g=0;gd||c&&1e3>d)&&!this.a[b].ib&&(this.a.splice(b,1),a.close()),Wa(this.B)}},k.Kd=function(){!Ma(this.A)&&Pa(this.A,function(a,c){return"expired"==c})&&this.g(new t(2,6,6014)),this.Ca(this.A)},k.qd=function(){for(var a=0;a=b||c.endTime<=a)}),null==this.b||b<=this.b||a>=this.a||(a<=this.b&&b>=this.a?this.b=this.a=null:a<=this.b&&bthis.b&&b>=this.a&&(this.a=a)))}.bind(this))},wb.prototype.parseInit=function(a){this.Na(a,0,null,null)},wb.prototype.parseMedia=function(a,b){return this.Na(a,b.periodStart,b.segmentStart,b.segmentEnd)},(k=Db.prototype).m=function(){this.h=!0;var b,a=[];for(b in this.b){var c=this.b[b],d=c[0];for(this.b[b]=c.slice(0,1),d&&a.push(d.p.catch(y)),d=1;d=g.bandwidth/.95&&e<=h&&(c=g)}(d=c)&&d.video&&(b.video=d.video),d&&d.audio&&(b.audio=d.audio)}return-1b)){var d=8e3*b/a,e=a/1e3;c.a+=b,da(c.c,e,d),da(c.f,e,d)}if(null!=this.c&&this.b)a:{if(this.j){if(8e3>Date.now()-this.c)break a}else{if(!(128e3<=this.a.a))break a;this.j=!0}c=this.chooseStreams(["audio","video"]),this.a.getBandwidthEstimate(),this.f(c)}},H.prototype.segmentDownloaded=H.prototype.segmentDownloaded,H.prototype.getBandwidthEstimate=function(){return this.a.getBandwidthEstimate()},H.prototype.getBandwidthEstimate=H.prototype.getBandwidthEstimate,H.prototype.setDefaultEstimate=function(a){this.a.setDefaultEstimate(a)},H.prototype.setDefaultEstimate=H.prototype.setDefaultEstimate,H.prototype.setRestrictions=function(a){this.i=a},H.prototype.setRestrictions=H.prototype.setRestrictions,H.prototype.setVariants=function(a){this.h=a},H.prototype.setVariants=H.prototype.setVariants,H.prototype.setTextStreams=function(a){this.g=a},H.prototype.setTextStreams=H.prototype.setTextStreams,I.prototype.preventDefault=function(){this.cancelable&&(this.defaultPrevented=!0)},I.prototype.stopImmediatePropagation=function(){this.a=!0},I.prototype.stopPropagation=function(){};var kc="ended play playing pause pausing ratechange seeked seeking timeupdate volumechange".split(" "),lc="buffered currentTime duration ended loop muted paused playbackRate seeking videoHeight videoWidth volume".split(" "),mc=["loop","playbackRate"],nc=["pause","play"],oc="adaptation buffering emsg error loading unloading texttrackvisibility timelineregionadded timelineregionenter timelineregionexit trackschanged".split(" "),pc="drmInfo getAudioLanguages getConfiguration getExpiration getManifestUri getPlaybackRate getPlayheadTimeAsDate getTextLanguages getTextTracks getTracks getStats getVariantTracks isBuffering isInProgress isLive isTextTrackVisible keySystem seekRange".split(" "),qc=[["getConfiguration","configure"]],rc=[["isTextTrackVisible","setTextTrackVisibility"]],sc="addTextTrack cancelTrickPlay configure resetConfiguration selectAudioLanguage selectTextLanguage selectTextTrack selectTrack selectVariantTrack setTextTrackVisibility trickPlay".split(" "),uc=["load","unload"];(k=yc.prototype).m=function(){return zc(this),this.a&&(this.a.leave(function(){},function(){}),this.a=null),this.G=this.B=this.l=null,this.c=this.j=this.h=!1,this.g=this.f=this.b=this.i=null,Promise.resolve()},k.V=function(){return this.c},k.Fb=function(){return this.A},k.init=function(){if(window.chrome&&chrome.cast&&chrome.cast.isAvailable){delete window.__onGCastApiAvailable,this.h=!0,this.l();var a=new chrome.cast.SessionRequest(this.J),a=new chrome.cast.ApiConfig(a,this.gd.bind(this),this.sd.bind(this),"origin_scoped");chrome.cast.initialize(a,function(){},function(){})}else window.__onGCastApiAvailable=function(a){a&&this.init()}.bind(this)},k.Ib=function(a){this.i=a,this.c&&Ac(this,{type:"appData",appData:this.i})},k.cast=function(a){return this.h?this.j?this.c?Promise.reject(new t(1,8,8002)):(this.g=new A,chrome.cast.requestSession(this.Bb.bind(this,a),this.cc.bind(this)),this.g):Promise.reject(new t(1,8,8001)):Promise.reject(new t(1,8,8e3))},k.$a=function(){this.c&&(zc(this),this.a&&(this.a.stop(function(){},function(){}),this.a=null))},k.get=function(a,b){if("video"==a){if(0<=nc.indexOf(b))return this.pc.bind(this,a,b)}else if("player"==a){if(0<=sc.indexOf(b))return this.pc.bind(this,a,b);if(0<=uc.indexOf(b))return this.Od.bind(this,a,b);if(0<=pc.indexOf(b))return this.lc.bind(this,a,b)}return this.lc(a,b)},k.set=function(a,b,c){this.b[a][b]=c,Ac(this,{type:"set",targetName:a,property:b,value:c})},k.Bb=function(a,b){this.a=b,this.a.addUpdateListener(this.dc.bind(this)),this.a.addMessageListener("urn:x-cast:com.google.shaka.v2",this.md.bind(this)),this.dc(),Ac(this,{type:"init",initState:a,appData:this.i}),this.g.resolve()},k.cc=function(a){var b=8003;switch(a.code){case"cancel":b=8004;break;case"timeout":b=8005;break;case"receiver_unavailable":b=8006}this.g.reject(new t(2,8,b,a))},k.lc=function(a,b){return this.b[a][b]},k.pc=function(a,b){Ac(this,{type:"call",targetName:a,methodName:b,args:Array.prototype.slice.call(arguments,2)})},k.Od=function(a,b){var c=Array.prototype.slice.call(arguments,2),d=new A,e=this.o.toString();return this.o++,this.f[e]=d,Ac(this,{type:"asyncCall",targetName:a,methodName:b,args:c,id:e}),d},k.gd=function(a){var b=this.v();this.g=new A,this.Bb(b,a)},k.sd=function(a){this.j="available"==a,this.l()},k.dc=function(){var a=!!this.a&&"connected"==this.a.status;if(this.c&&!a){this.G();for(var b in this.b)this.b[b]={};zc(this)}this.A=(this.c=a)?this.a.receiver.friendlyName:"",this.l()},k.md=function(a,b){switch((c=wc(b)).type){case"event":var d=c.targetName,e=c.event;this.B(d,new I(e.type,e));break;case"update":e=c.update;for(d in e){var c=this.b[d]||{};for(f in e[d])c[f]=e[d][f]}break;case"asyncComplete":d=c.id;var f=c.error;if(c=this.f[d],delete this.f[d],c)if(f){d=new t(f.severity,f.category,f.code);for(e in f)d[e]=f[e];c.reject(d)}else c.resolve()}},p.prototype.addEventListener=function(a,b){this.nb.push(a,b)},p.prototype.removeEventListener=function(a,b){this.nb.remove(a,b)},p.prototype.dispatchEvent=function(a){for(var b=this.nb.get(a.type)||[],c=0;cthis.H.byteLength&&ad();var b=this.H.buffer.slice(this.u,this.u+a);return this.u+=a,new Uint8Array(b)},P.prototype.readBytes=P.prototype.Ka,P.prototype.I=function(a){this.u+a>this.H.byteLength&&ad(),this.u+=a},P.prototype.skip=P.prototype.I,P.prototype.Db=function(){for(var a=this.u;this.Z()&&this.H.getUint8(this.u);)this.u+=1;return a=this.H.buffer.slice(a,this.u),this.u+=1,F(a)},P.prototype.readTerminatedString=P.prototype.Db,n("shaka.util.Mp4Parser",Q),Q.prototype.C=function(a,b){var c=bd(a);return this.b[c]=0,this.a[c]=b,this},Q.prototype.box=Q.prototype.C,Q.prototype.da=function(a,b){var c=bd(a);return this.b[c]=1,this.a[c]=b,this},Q.prototype.fullBox=Q.prototype.da,Q.prototype.parse=function(a){for(a=new P(new DataView(a),0);a.Z();)this.eb(0,a)},Q.prototype.parse=Q.prototype.parse,Q.prototype.eb=function(a,b){var c=b.u,d=b.D(),e=b.D();switch(d){case 0:d=b.H.byteLength-c;break;case 1:d=b.Pa()}var f=this.a[e];if(f){var g=null,h=null;1==this.b[e]&&(h=b.D(),g=h>>>24,h&=16777215),e=0<(e=c+d-b.u)?b.Ka(e).buffer:new ArrayBuffer(0),f({Na:this,version:g,Nc:h,s:e=new P(new DataView(e),0),size:d,start:c+a})}else b.I(c+d-b.u)},Q.prototype.parseNext=Q.prototype.eb,Q.children=R,Q.sampleDescription=cd,Q.allData=dd,n("shaka.media.SegmentIndex",S),S.prototype.m=function(){return this.a=null,Promise.resolve()},S.prototype.destroy=S.prototype.m,S.prototype.find=function(a){for(var b=this.a.length-1;0<=b;--b){var c=this.a[b];if(a>=c.startTime&&a(a-=this.a[0].position)||a>=this.a.length?null:this.a[a]:null},S.prototype.get=S.prototype.get,S.prototype.xb=function(a){for(var b,c,d=[],e=c=0;cb.startTime||(.1a);++b);this.a.splice(0,b)},S.prototype.evict=S.prototype.qb;var id;hd.prototype.Z=function(){return this.a.Z()},nd.prototype.parse=function(a,b,c,d){var e;if(b=new hd(new DataView(b)),440786851!=jd(b).id)throw new t(2,3,3008);var f=jd(b);if(408125543!=f.id)throw new t(2,3,3009);for(b=f.a.byteOffset,f=new hd(f.a),e=null;f.Z();){var g=jd(f);if(357149030==g.id){e=g;break}}if(!e)throw new t(2,3,3010);for(f=new hd(e.a),e=1e6,g=null;f.Z();){var h=jd(f);if(2807729==h.id)e=md(h);else if(17545==h.id)if(4==(g=h).a.byteLength)g=g.a.getFloat32(0);else{if(8!=g.a.byteLength)throw new t(2,3,3003);g=g.a.getFloat64(0)}}if(null==g)throw new t(2,3,3011);if(f=e/1e9,e=g*f,475249515!=(a=jd(new hd(new DataView(a)))).id)throw new t(2,3,3007);return od(a,b,f,e,c,d)};var Dd={},Ed={};n("shaka.media.ManifestParser.registerParserByExtension",function(a,b){Ed[a]=b}),n("shaka.media.ManifestParser.registerParserByMime",function(a,b){Dd[a]=b}),n("shaka.media.PresentationTimeline",T),T.prototype.Y=function(){return this.a},T.prototype.getDuration=T.prototype.Y,T.prototype.pa=function(a){this.a=a},T.prototype.setDuration=T.prototype.pa,T.prototype.Wc=function(){return this.f},T.prototype.getPresentationStartTime=T.prototype.Wc,T.prototype.wc=function(a){this.h=a},T.prototype.setClockOffset=T.prototype.wc,T.prototype.yc=function(a){this.g=a},T.prototype.setStatic=T.prototype.yc,T.prototype.Xc=function(){return this.c},T.prototype.getSegmentAvailabilityDuration=T.prototype.Xc,T.prototype.xc=function(a){this.c=a},T.prototype.setSegmentAvailabilityDuration=T.prototype.xc,T.prototype.Ha=function(a,b){b.length&&(this.b=b.reduce(function(a,b){return Math.max(a,b.endTime-b.startTime)},this.b))},T.prototype.notifySegments=T.prototype.Ha,T.prototype.yb=function(a){this.b=Math.max(this.b,a)},T.prototype.notifyMaxSegmentDuration=T.prototype.yb,T.prototype.$=function(){return 1/0==this.a&&!this.g},T.prototype.isLive=T.prototype.$,T.prototype.va=function(){return 1/0!=this.a&&!this.g},T.prototype.isInProgress=T.prototype.va,T.prototype.ma=function(){return this.Ea(0)},T.prototype.getSegmentAvailabilityStart=T.prototype.ma,T.prototype.Ea=function(a){if(1/0==this.c)return 0;var b=this.ua();return Math.max(0,Math.min(b-this.c+a,b))},T.prototype.getSafeAvailabilityStart=T.prototype.Ea,T.prototype.ua=function(){return this.$()||this.va()?Math.min(Math.max(0,(Date.now()+this.h)/1e3-this.b-this.f),this.a):this.a},T.prototype.getSegmentAvailabilityEnd=T.prototype.ua,T.prototype.bb=function(){return Math.max(0,this.ua()-(this.$()||this.va()?this.i:0))},T.prototype.getSeekRangeEnd=T.prototype.bb,n("shaka.dash.DashParser",Hd),(k=Hd.prototype).configure=function(a){this.b=a},k.start=function(a,b){return this.g=[a],this.a=b,Id(this).then(function(){return this.a&&Jd(this,0),this.c}.bind(this))},k.stop=function(){return this.b=this.a=null,this.g=[],this.c=null,this.i=[],this.j={},null!=this.f&&(window.clearTimeout(this.f),this.f=null),Promise.resolve()},k.update=function(){Id(this).catch(function(a){this.a&&this.a.onError(a)}.bind(this))},k.onExpirationUpdated=function(){},k.Dd=function(a,b){a.S=Od(b,a.T,null);var c=!1,e=(d=M(b,"Role")).map(function(a){return a.getAttribute("value")}).filter(ya),f=void 0;"text"==a.S.contentType&&(f="subtitle");for(var g=0;g(b=a.split(":")).length||"data"!=b[0])throw new t(2,1,1004,a);if(2>(b=b.slice(1).join(":").split(",")).length)throw new t(2,1,1004,a);var c=b[0],b=window.decodeURIComponent(b.slice(1).join(",")),d=null;if(1<(c=c.split(";")).length&&(d=c[1]),"base64"==d)a=Ya(b).buffer;else{if(d)throw new t(2,1,1005,a);a=Ua(b)}return{data:a,contentType:c[0]}},Ea.data=ke,n("shaka.hls.HlsParser",le),(k=le.prototype).configure=function(a){this.b=a},k.start=function(a,b){return this.c=b,this.j=a,this.c.networkingEngine.request(0,C([a],this.b.retryParameters)).then(function(b){return ne(this,b.data,a)}.bind(this))},k.stop=function(){return this.b=this.c=null,this.g={},Promise.resolve()},k.update=function(){},k.onExpirationUpdated=function(){};var Ee=[/^(avc)/,/^(hvc)/,/^(vp[8-9])$/,/^(av1)$/,/^(mp4v)/],Fe=[/^(vorbis)/,/^(opus)/,/^(mp4a)/,/^(ac-3)$/,/^(ec-3)$/],Ge={mp4:"audio/mp4",m4s:"audio/mp4",m4i:"audio/mp4",m4a:"audio/mp4",ts:"video/mp2t"},He={mp4:"video/mp4",m4s:"video/mp4",m4i:"video/mp4",m4v:"video/mp4",ts:"video/mp2t"},Be={"urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed":function(a){if("SAMPLE-AES-CENC"!=U(a,"METHOD"))return null;var b=U(a,"URI"),b=ke.parse(b),b=Ba("com.widevine.alpha",[{initDataType:"cenc",initData:b=new Uint8Array(b.data)}]);return(a=Xd(a,"KEYID"))&&(b.keyIds=[a.substr(2).toLowerCase()]),b}};Ed.m3u8=le,Dd["application/x-mpegurl"]=le,Dd["application/vnd.apple.mpegurl"]=le,Ie.prototype.parseInit=function(){},Ie.prototype.parseMedia=function(a,b){var c=F(a),d=[],e=new DOMParser,f=null;try{f=e.parseFromString(c,"text/xml")}catch(Hb){throw new t(2,2,2005)}if(f){var g=f.getElementsByTagName("tt")[0];if(!g)throw new t(2,2,2005);e=g.getAttribute("ttp:frameRate"),f=g.getAttribute("ttp:subFrameRate");var h=g.getAttribute("ttp:frameRateMultiplier"),l=g.getAttribute("ttp:tickRate");if("default"!=(c=g.getAttribute("xml:space")||"default")&&"preserve"!=c)throw new t(2,2,2005);for(c="default"==c,e=new Je(e,f,h,l),f=Ke(g.getElementsByTagName("styling")[0]),h=Ke(g.getElementsByTagName("layout")[0]),g=Ke(g.getElementsByTagName("body")[0]),l=0;lg[0].indexOf("--\x3e")&&(l=g[0],g.splice(0,1));var m=new be(g[0]),q=af(m),r=ce(m,/[ \t]+--\x3e[ \t]+/g),v=af(m);if(null==q||!r||null==v)throw new t(2,2,2001);if(g=xb(q+h,v+h,g.slice(1).join("\n").trim())){for(ce(m,/[ \t]+/gm),h=de(m);h;)bf(g,h),ce(m,/[ \t]+/gm),h=de(m);null!=l&&(g.id=l),l=g}else l=null}l&&f.push(l)}return f},vb("text/vtt",$e),vb('text/vtt; codecs="vtt"',$e),cf.prototype.parseInit=function(a){var b=!1;if((new Q).C("moov",R).C("trak",R).C("mdia",R).da("mdhd",function(a){0==a.version?(a.s.I(4),a.s.I(4),this.a=a.s.D(),a.s.I(4)):(a.s.I(8),a.s.I(8),this.a=a.s.D(),a.s.I(8)),a.s.I(4)}.bind(this)).C("minf",R).C("stbl",R).da("stsd",cd).C("wvtt",function(){b=!0}).parse(a),!this.a)throw new t(2,2,2008);if(!b)throw new t(2,2,2008)},cf.prototype.parseMedia=function(a,b){var c=0,d=[],e=[],f=[],g=!1,h=!1,l=!1;if((new Q).C("moof",R).C("traf",R).da("tfdt",function(a){g=!0,c=a.version?a.s.Pa():a.s.D()}).da("trun",function(a){h=!0;var b=a.version,c=a.Nc,e=(a=a.s).D();1&c&&a.I(4),4&c&&a.I(4);for(var f=[],g=0;gthis.g?0:this.g)&&lf(this,this.a.playbackRate)},k.fc=function(){var a=kf(this);.001>Math.abs(this.a.currentTime-a)?(E(this.b,this.a,"seeking",this.ic.bind(this)),E(this.b,this.a,"playing",this.gc.bind(this))):(La(this.b,this.a,"seeking",this.td.bind(this)),this.a.currentTime=a)},k.td=function(){E(this.b,this.a,"seeking",this.ic.bind(this)),E(this.b,this.a,"playing",this.gc.bind(this))},k.hc=function(){if(this.a.readyState){this.a.readyState!=this.B&&(this.i=!1,this.B=this.a.readyState);var a=this.l.smallGapLimit,b=this.a.currentTime,c=this.a.buffered;a:{if(c&&c.length&&!(1==c.length&&1e-6>c.end(0)-c.start(0))){var d=.1;/(Edge|Trident)\//.test(navigator.userAgent)&&(d=.5);for(var e=0;eb&&(!e||c.end(e-1)-b<=d)){d=e;break a}}d=null}if(null==d){if(3>this.a.readyState&&0=c.start(d)&&b=this.c.presentationTimeline.bb())){var f=e-b,g=!1;(a=f<=a)||this.i||(this.i=!0,f=new I("largegap",{currentTime:b,gapSize:f}),f.cancelable=!0,this.G(f),this.l.jumpLargeGaps&&!f.defaultPrevented&&(g=!0)),(a||g)&&(d&&c.end(d-1),mf(this,b,e))}}},k.ic=function(){this.o=!1;var a=this.a.currentTime,b=nf(this,a);.001this.a.currentTime?1:b.info.endTime=this.g.presentationTimeline.ua()-.1||this.a.ended;if(this.b){var c=1*Math.max(this.g.minBufferTime||0,this.A.rebufferingGoal);(b||a>=c)&&0!=this.b&&(this.b=!1,this.l(!1))}else!b&&.5>a&&1!=this.b&&(this.b=!0,this.l(!0));this.c.forEach(this.o.bind(this,!1))},(k=sf.prototype).m=function(){for(var a in this.c)tf(this.c[a]);return this.g=this.c=this.j=this.h=this.o=this.b=this.a=null,this.f=!0,Promise.resolve()},k.configure=function(a){this.g=a},k.init=function(){var a=this.a.bc(this.b.periods[hc(this.b,jf(this.a.Oa))]);return Ma(a)?Promise.reject(new t(2,5,5005)):uf(this,a).then(function(){this.a&&this.a.jd&&this.a.jd()}.bind(this))},k.ke=function(a){if(!this.f&&!a.xa&&null!=a.qa&&!a.sa)if(a.qa=null,a.ra)Af(this,a,a.kb);else{try{var b=Gf(this,a);null!=b&&(Cf(this,a,b),a.tb=!1)}catch(c){return void this.a.onError(c)}b=Na(this.c),Hf(this,a),b.every(function(a){return a.endOfStream})&&this.a.K.endOfStream().then(function(){this.b.presentationTimeline.pa(this.a.K.Y())}.bind(this))}},k.Ed=function(a,b,c){var d=c.s.Db(),e=c.s.Db(),f=c.s.D(),g=c.s.D(),h=c.s.D(),l=c.s.D();c=c.s.Ka(c.s.H.byteLength-c.s.u),a=a.startTime+b.startTime+g/f,"urn:mpeg:dash:event:2012"==d?this.a.kd():this.a.onEvent(new I("emsg",{detail:{startTime:a,endTime:a+h/f,schemeIdUri:d,value:e,timescale:f,presentationTimeDelta:g,eventDuration:h,id:l,messageData:c}}))},n("shaka.net.HttpPlugin",Rf),Ea.http=Rf,Ea.https=Rf,(k=Sf.prototype).init=function(a,b){return Tf(this,a,b).then(function(){var b=Object.keys(a);return Promise.all(b.map(function(a){return Uf(this,a).then(function(b){this.c[a]=b}.bind(this))}.bind(this)))}.bind(this))},k.m=function(){return Promise.all(this.b.map(function(a){try{a.transaction.abort()}catch(b){}return a.L.catch(y)})).then(function(){this.a&&(this.a.close(),this.a=null)}.bind(this))},k.get=function(a,b){var c;return Vf(this,a,"readonly",function(a){c=a.get(b)}).then(function(){return c.result})},k.forEach=function(a,b){return Vf(this,a,"readonly",function(a){a.openCursor().onsuccess=function(a){(a=a.target.result)&&(b(a.value),a.continue())}})},k.remove=function(a,b){return Vf(this,a,"readwrite",function(a){a.delete(b)})};var Zf={manifest:"key",segment:"key"};gg.prototype.m=function(){var a=this.j,b=this.l,c=(c=this.i||Promise.resolve()).then(function(){return Xf(a,b)});return this.b={},this.l=[],this.i=this.a=this.A=this.v=this.j=this.o=null,c},(k=kg.prototype).configure=function(){},k.start=function(a){var b=/^offline:([0-9]+)$/.exec(a);if(!b)return Promise.reject(new t(2,1,9004,a));var c=Number(b[1]),d=fg();return this.a=c,d?d.init(Zf).then(function(){return d.get("manifest",c)}).then(function(a){if(!a)throw new t(2,9,9003,c);return lg(a)}).then(function(a){return d.m().then(function(){return a})},function(a){return d.m().then(function(){throw a})}):Promise.reject(new t(2,9,9e3))},k.stop=function(){return Promise.resolve()},k.update=function(){},k.onExpirationUpdated=function(a,b){var c=fg();c.init(Zf).then(function(){return c.get("manifest",this.a)}.bind(this)).then(function(d){if(d&&!(0>d.sessionIds.indexOf(a))&&(void 0==d.expiration||d.expiration>b))return d.expiration=b,Wf(c,"manifest",d)}).catch(function(){}).then(function(){return c.m()})},Dd["application/x-offline-manifest"]=kg,n("shaka.offline.OfflineScheme",mg),Ea.offline=mg,ng.prototype.then=function(a){return this.a=this.a.then(a).then(function(a){return this.b?(this.g(),Promise.reject(this.h)):Promise.resolve(a)}.bind(this)),this},ng.prototype.cancel=function(a){return this.c?Promise.resolve():(this.b=!0,this.h=a,this.i)},ba(W),n("shaka.Player",W),W.prototype.m=function(){this.O=!0;var a=Promise.resolve();return this.J&&(a=this.J.cancel(new t(2,7,7e3))),a.then(function(){var a=Promise.all([this.la,sg(this),this.l?this.l.m():null,this.o?this.o.m():null]);return this.b=this.o=this.Qb=this.l=this.A=this.f=null,a}.bind(this))},W.prototype.destroy=W.prototype.m,W.version="v2.1.4";var tg={};W.registerSupportPlugin=function(a,b){tg[a]=b},W.isBrowserSupported=function(){return!!(window.Promise&&window.Uint8Array&&Array.prototype.forEach&&window.MediaSource&&window.MediaSource.isTypeSupported&&window.MediaKeys&&window.navigator&&window.navigator.requestMediaKeySystemAccess&&window.MediaKeySystemAccess&&window.MediaKeySystemAccess.prototype.getConfiguration)},W.probeSupport=function(){return qb().then(function(a){a={manifest:Fd(),media:Eb(),drm:a};for(var d in tg)a[d]=tg[d]();return a})},W.prototype.load=function(a,b,c){var d=this.hb(),e=new ng;this.J=e,this.dispatchEvent(new I("loading"));var f=Date.now();return og(e.then(function(){return d}).then(function(){return this.i={width:NaN,height:NaN,streamBandwidth:NaN,decodedFrames:NaN,droppedFrames:NaN,estimatedBandwidth:NaN,loadLatency:NaN,playTime:0,bufferingTime:0,switchHistory:[],stateHistory:[]},E(this.l,this.f,"playing",this.Sa.bind(this)),E(this.l,this.f,"pause",this.Sa.bind(this)),E(this.l,this.f,"ended",this.Sa.bind(this)),Gd(a,this.o,this.b.manifest.retryParameters,c)}.bind(this)).then(function(b){return this.h=new b,this.h.configure(this.b.manifest),b={networkingEngine:this.o,filterPeriod:this.fb.bind(this),onTimelineRegionAdded:this.xd.bind(this),onEvent:this.gb.bind(this),onError:this.ya.bind(this)},2this.Va.indexOf(a.id)}.bind(this))},W.prototype.getTextTracks=W.prototype.Xb,W.prototype.tc=function(a){if(this.a&&(a=cc(V(this.a),a))){Cg(this,a,!1);var b={};b.text=a,Dg(this,b,!0)}},W.prototype.selectTextTrack=W.prototype.tc,W.prototype.uc=function(a,b){if(this.a){var c={},d=bc(V(this.a),a),e=vf(this.a);if(d){if(!d.allowedByApplication||!d.allowedByKeySystem)return;d.audio&&(Eg(this,d.audio),d.audio!=e.audio&&(c.audio=d.audio)),d.video&&(Eg(this,d.video),d.video!=e.video&&(c.video=d.video))}Na(c).forEach(function(a){Cg(this,a,!1)}.bind(this)),(d=e.text)&&(c.text=d),Dg(this,c,b)}},W.prototype.selectVariantTrack=W.prototype.uc,W.prototype.Pc=function(){return this.a?$b(V(this.a).variants).map(function(a){return a.language}).filter(Aa):[]},W.prototype.getAudioLanguages=W.prototype.Pc,W.prototype.Yc=function(){return this.a?V(this.a).textStreams.map(function(a){return a.language}).filter(Aa):[]},W.prototype.getTextLanguages=W.prototype.Yc,W.prototype.Ud=function(a,b){if(this.a){var c=V(this.a);this.ia=a,this.mb=b||"",Ag(this,c)}},W.prototype.selectAudioLanguage=W.prototype.Ud,W.prototype.Vd=function(a,b){if(this.a){var c=V(this.a);this.Ca=a,this.lb=b||"",Ag(this,c)}},W.prototype.selectTextLanguage=W.prototype.Vd,W.prototype.bd=function(){return"showing"==this.A.mode},W.prototype.isTextTrackVisible=W.prototype.bd,W.prototype.Yd=function(a){this.A.mode=a?"showing":"hidden",Fg(this)},W.prototype.setTextTrackVisibility=W.prototype.Yd,W.prototype.Uc=function(){return this.c?new Date(1e3*this.c.presentationTimeline.f+1e3*this.f.currentTime):null},W.prototype.getPlayheadTimeAsDate=W.prototype.Uc,W.prototype.getStats=function(){Gg(this),this.Sa();var a=null,b=null,c=this.f&&this.f.getVideoPlaybackQuality?this.f.getVideoPlaybackQuality():{};return this.g&&this.c&&(a=hc(this.c,jf(this.g)),b=this.B[a],b=gc(b.audio,b.video,this.c.periods[a].variants),a=b.video||{}),a||(a={}),b||(b={}),{width:a.width||0,height:a.height||0,streamBandwidth:b.bandwidth||0,decodedFrames:Number(c.totalVideoFrames),droppedFrames:Number(c.droppedVideoFrames),estimatedBandwidth:this.b.abr.manager.getBandwidthEstimate(),loadLatency:this.i.loadLatency,playTime:this.i.playTime,bufferingTime:this.i.bufferingTime,switchHistory:Da(this.i.switchHistory),stateHistory:Da(this.i.stateHistory)}},W.prototype.getStats=W.prototype.getStats,W.prototype.addTextTrack=function(a,b,c,d,e,f){if(!this.a)return Promise.reject();for(var h,g=V(this.a),l=0;l$b(a.variants).length,!b)throw new t(2,4,4011);if(a)throw new t(2,4,4012)},k.de=function(a,b){this.b.abr.manager.segmentDownloaded(a,b)},k.zc=function(a){if(Gg(this),this.ka=a,this.Sa(),this.g){var b=this.g;a!=b.h&&(b.h=a,lf(b,b.g))}this.dispatchEvent(new I("buffering",{buffering:a}))},k.$d=function(){wg(this)},k.Sa=function(){if(!this.O){var a=this.ka?"buffering":this.f.ended?"ended":this.f.paused?"paused":"playing",b=Date.now()/1e3;if(this.i.stateHistory.length){var c=this.i.stateHistory[this.i.stateHistory.length-1];if(c.duration=b-c.timestamp,a==c.state)return}this.i.stateHistory.push({timestamp:b,state:a,duration:0})}},k.ce=function(){if(this.v){var a=this.v;a.c.forEach(a.o.bind(a,!0))}this.a&&Bf(this.a)},k.ed=function(a){this.Za=!0,this.b.abr.manager.disable(),a=Hg(this,a,dc(a,this.ia,void 0,this.mb),ec(a,this.Ca,void 0,this.lb),!0);for(var d in this.G)a[d]=this.G[d].stream;this.G={};for(d in a)Cg(this,a[d],!0);return a},k.Gc=function(){this.Za=!1,this.b.abr.enabled&&this.b.abr.manager.enable();for(var a in this.G){var b=this.G[a];yf(this.a,a,b.stream,b.Kc)}this.G={}},k.ld=function(){this.h&&this.h.update&&this.h.update()},k.ud=function(){this.g&&this.g.Ab()},k.Lb=function(a,b){var d,c=vf(this.a);for(d in a){var e=a[d];c[d]!=e?Cg(this,e,!0):delete a[d]}if(!Ma(a)&&this.a){for(d in a)yf(this.a,d,a[d],b||!1);xg(this)}},k.ya=function(a){this.O||this.dispatchEvent(new I("error",{detail:a}))},k.xd=function(a){this.v?this.v.v(a):this.Xa.push(a)},k.gb=function(a){this.dispatchEvent(a)},k.yd=function(){if(this.f.error){var a=this.f.error.code;if(1!=a){var b=this.f.error.msExtendedCode;b&&(0>b&&(b+=Math.pow(2,32)),b=b.toString(16)),this.ya(new t(2,3,3016,a,b))}}},k.be=function(a){var b=["output-restricted","internal-error"],c=V(this.a),d=!1;c.variants.forEach(function(c){var e=[];c.audio&&e.push(c.audio),c.video&&e.push(c.video),e.forEach(function(e){var f=c.allowedByKeySystem;e.keyId&&(e=a[e.keyId],c.allowedByKeySystem=!!e&&0>b.indexOf(e)),f!=c.allowedByKeySystem&&(d=!0)})});var e=vf(this.a);(e=fc(e.audio,e.video,c.variants))&&!e.allowedByKeySystem&&Ag(this,c),d&&wg(this)},k.ae=function(a,b){this.h&&this.h.onExpirationUpdated&&this.h.onExpirationUpdated(a,b),this.dispatchEvent(new I("expirationupdated"))},n("shaka.offline.Storage",X),X.support=Jg,X.prototype.m=function(){var a=this.a,b=this.h?this.h.m().catch(function(){}).then(function(){if(a)return a.m()}):Promise.resolve();return this.i=this.f=this.h=this.a=null,b},X.prototype.destroy=X.prototype.m,X.prototype.configure=function(a){Ca(this.i,a,Ig(this),{},"")},X.prototype.configure=X.prototype.configure,X.prototype.le=function(a,b,c){function d(a){f=a}if(this.v)return Promise.reject(new t(2,9,9006));this.v=!0;var e,f=null;return Kg(this).then(function(){return Y(this),Lg(this,a,d,c)}.bind(this)).then(function(c){if(Y(this),this.c=c.manifest,this.b=c.Lc,this.c.presentationTimeline.$()||this.c.presentationTimeline.va())throw new t(2,9,9005,a);this.c.periods.forEach(this.o.bind(this)),this.g=this.a.c.manifest++,this.l=0,c=this.c.periods.map(this.B.bind(this));var d=this.b.b,f=jb(this.b);if(d){if(!f.length)throw new t(2,9,9007,a);d.initData=[]}return e={key:this.g,originalManifestUri:a,duration:this.l,size:0,expiration:this.b.ab(),periods:c,sessionIds:f,drmInfo:d,appMetadata:b},ig(this.h,e)}.bind(this)).then(function(){if(Y(this),f)throw f;return Mg(this)}.bind(this)).then(function(){return $f(e)}.bind(this)).catch(function(a){return Mg(this).catch(y).then(function(){throw a})}.bind(this))},X.prototype.store=X.prototype.le,X.prototype.remove=function(a){function b(a){6013!=a.code&&(e=a)}var c=a.offlineUri,d=/^offline:([0-9]+)$/.exec(c);if(!d)return Promise.reject(new t(2,9,9004,c));var f,g,e=null,h=Number(d[1]);return Kg(this).then(function(){return Y(this),this.a.get("manifest",h)}.bind(this)).then(function(a){if(Y(this),!a)throw new t(2,9,9003,c);return f=a,a=lg(f),(g=new bb(this.f.o,b,function(){},function(){})).configure(this.f.getConfiguration().drm),g.init(a,!0)}.bind(this)).then(function(){return gb(g,f.sessionIds)}.bind(this)).then(function(){return g.m()}.bind(this)).then(function(){if(Y(this),e)throw e;var b=f.periods.map(function(a){return a.streams.map(function(a){var b=a.segments.map(function(a){return a=/^offline:[0-9]+\/[0-9]+\/([0-9]+)$/.exec(a.uri),Number(a[1])});return a.initSegmentUri&&(a=/^offline:[0-9]+\/[0-9]+\/([0-9]+)$/.exec(a.initSegmentUri),b.push(Number(a[1]))),b}).reduce(x,[])}).reduce(x,[]),c=0,d=b.length,g=this.i.progressCallback;return Xf(this.a,b,function(){g(a,++c/d)})}.bind(this)).then(function(){return Y(this),this.i.progressCallback(a,1),this.a.remove("manifest",h)}.bind(this))},X.prototype.remove=X.prototype.remove,X.prototype.list=function(){var a=[];return Kg(this).then(function(){return Y(this),this.a.forEach("manifest",function(b){a.push($f(b))})}.bind(this)).then(function(){return a})},X.prototype.list=X.prototype.list,X.prototype.A=function(a){for(var f,b=[],c=Sb(this.f.getConfiguration().preferredAudioLanguage),d=[0,Qb,Rb],e=a.filter(function(a){return"variant"==a.type}),d=d.map(function(a){return e.filter(function(b){return b=Sb(b.language),Pb(a,c,b)})}),g=0;g=a.height});return h.length&&(h.sort(function(a,b){return b.height-a.height}),f=h.filter(function(a){return a.height==h[0].height})),f.sort(function(a,b){return a.bandwidth-b.bandwidth}),f.length&&b.push(f[Math.floor(f.length/2)]),b.push.apply(b,a.filter(function(a){return"text"==a.type})),b},X.prototype.o=function(a){var b={};if(this.j){var c=this.j.filter(function(a){return"variant"==a.type}),d=null;c.length&&(d=bc(a,c[0])),d&&(d.video&&(b.video=d.video),d.audio&&(b.audio=d.audio))}Wb(this.b,b,a),Vb(a,this.f.getConfiguration().restrictions,{width:1/0,height:1/0})},X.prototype.B=function(a){var b,c,d=Zb(a,null,null),e=ac(a,null),d=this.i.trackSelectionCallback(d.concat(e));for(this.j||(this.j=d,this.c.periods.forEach(this.o.bind(this))),e=d.length-1;0=b&&(c=a(b)),c}}}),Sg.prototype.c=function(a){if(!(1a.indexOf("Apple")||(0<=b.indexOf("Version/8")?window.MediaSource=null:0<=b.indexOf("Version/9")?vh():0<=b.indexOf("Version/10")&&(vh(),wh()))}});var zh=0;Z.prototype.then=function(a,b){var c=new Z;switch(this.Aa){case 1:Eh(this,c,a);break;case 2:Eh(this,c,b);break;case zh:this.c.push({L:c,pb:a}),this.b.push({L:c,pb:b})}return c},Z.prototype.catch=function(a){return this.then(void 0,a)},Z.prototype.fa=function(a){if(this.Aa==zh){for(this.jb=a,this.Aa=1,a=0;ac.children.length;){var j=document.createElement("span");j.style.cssText="width:1px;height:30px;float:left;background-color:#113",c.appendChild(j)}var d=document.createElement("div");d.id="ms",d.style.cssText="padding:0 0 3px 3px;text-align:left;background-color:#020;display:none",f.appendChild(d);var k=document.createElement("div");k.id="msText",k.style.cssText="color:#0f0;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px",k.innerHTML="MS",d.appendChild(k);var e=document.createElement("div");for(e.id="msGraph",e.style.cssText="position:relative;width:74px;height:30px;background-color:#0f0",d.appendChild(e);74>e.children.length;)j=document.createElement("span"),j.style.cssText="width:1px;height:30px;float:left;background-color:#131",e.appendChild(j);var t=function(b){switch(s=b){case 0:a.style.display="block",d.style.display="none";break;case 1:a.style.display="none",d.style.display="block"}};return{REVISION:12,domElement:f,setMode:t,begin:function(){l=Date.now()},end:function(){var b=Date.now();g=b-l,n=Math.min(n,g),o=Math.max(o,g),k.textContent=g+" MS ("+n+"-"+o+")";var a=Math.min(30,30-g/200*30);return e.appendChild(e.firstChild).style.height=a+"px",r++,b>m+1e3&&(h=Math.round(1e3*r/(b-m)),p=Math.min(p,h),q=Math.max(q,h),i.textContent=h+" FPS ("+p+"-"+q+")",a=Math.min(30,30-h/100*30),c.appendChild(c.firstChild).style.height=a+"px",m=b,r=0),b},update:function(){l=this.end()}}})},{}],7:[function(_dereq_,module,exports){(function(global){!function(f){if("object"==typeof exports&&void 0!==module)module.exports=f();else if("function"==typeof define&&define.amd)define([],f);else{("undefined"!=typeof window?window:void 0!==global?global:"undefined"!=typeof self?self:this).WebVRManager=f()}}(function(){return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof _dereq_&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n||e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof _dereq_&&_dereq_,o=0;o=0.9.38 <0.10.0",_id:"webvr-polyfill@0.9.40",_inCache:!0,_installable:!0,_location:"/webvr-polyfill",_nodeVersion:"8.6.0",_npmOperationalInternal:{host:"s3://npm-registry-packages",tmp:"tmp/webvr-polyfill-0.9.40.tgz_1507657755590_0.00047161197289824486"},_npmUser:{email:"jsantell@gmail.com",name:"jsantell"},_npmVersion:"5.3.0",_phantomChildren:{},_requested:{name:"webvr-polyfill",raw:"webvr-polyfill@^0.9.38",rawSpec:"^0.9.38",scope:null,spec:">=0.9.38 <0.10.0",type:"range"},_requiredBy:["/","/webvr-boilerplate"],_resolved:"https://registry.npmjs.org/webvr-polyfill/-/webvr-polyfill-0.9.40.tgz",_shasum:"2cfa0ec0e0cc6ba7238c73a09cba4952fff59a63",_shrinkwrap:null,_spec:"webvr-polyfill@^0.9.38",_where:"/Users/lincolnfrog/daydream/vrview",authors:["Boris Smus ","Brandon Jones ","Jordan Santell "],bugs:{url:"https://github.com/googlevr/webvr-polyfill/issues"},dependencies:{},description:"Use WebVR today, on mobile or desktop, without requiring a special browser build.",devDependencies:{chai:"^3.5.0",jsdom:"^9.12.0",mocha:"^3.2.0",semver:"^5.3.0",webpack:"^2.6.1","webpack-dev-server":"2.7.1"},directories:{},dist:{integrity:"sha512-m7jhJHjFcUYPyPSNeGmly7a2h/cP7bARz0OZMoUn5SueVXEKeZ4P7bzbAUDBDvvqCsa5gHgM3PFIhYe13bqaWw==",shasum:"2cfa0ec0e0cc6ba7238c73a09cba4952fff59a63",tarball:"https://registry.npmjs.org/webvr-polyfill/-/webvr-polyfill-0.9.40.tgz"},gitHead:"45828ffdb8c3e0f9bb90296d6039d3cc7909ba8e",homepage:"https://github.com/googlevr/webvr-polyfill",keywords:["vr","webvr"],license:"Apache-2.0",main:"src/node-entry",maintainers:[{email:"jsantell@gmail.com",name:"jsantell"},{email:"tojiro@gmail.com",name:"toji"},{email:"boris@smus.com",name:"smus"}],name:"webvr-polyfill",optionalDependencies:{},readme:"ERROR: No README data found!",repository:{type:"git",url:"git+https://github.com/googlevr/webvr-polyfill.git"},scripts:{build:"webpack",start:"npm run watch",test:"mocha",watch:"webpack-dev-server"},version:"0.9.40"}},{}],9:[function(_dereq_,module,exports){function VRDisplay(){this.isPolyfilled=!0,this.displayId=nextDisplayId++,this.displayName="webvr-polyfill displayName",this.depthNear=.01,this.depthFar=1e4,this.isConnected=!0,this.isPresenting=!1,this.capabilities={hasPosition:!1,hasOrientation:!1,hasExternalDisplay:!1,canPresent:!1,maxLayers:1},this.stageParameters=null,this.waitingForPresent_=!1,this.layer_=null,this.fullscreenElement_=null,this.fullscreenWrapper_=null,this.fullscreenElementCachedStyle_=null,this.fullscreenEventTarget_=null,this.fullscreenChangeHandler_=null,this.fullscreenErrorHandler_=null,this.wakelock_=new WakeLock}function VRDevice(){this.isPolyfilled=!0,this.hardwareUnitId="webvr-polyfill hardwareUnitId",this.deviceId="webvr-polyfill deviceId",this.deviceName="webvr-polyfill deviceName"}function HMDVRDevice(){}function PositionSensorVRDevice(){}var Util=_dereq_("./util.js"),WakeLock=_dereq_("./wakelock.js"),nextDisplayId=1e3,hasShowDeprecationWarning=!1,defaultLeftBounds=[0,0,.5,1],defaultRightBounds=[.5,0,.5,1];VRDisplay.prototype.getFrameData=function(frameData){return Util.frameDataFromPose(frameData,this.getPose(),this)},VRDisplay.prototype.getPose=function(){return this.getImmediatePose()},VRDisplay.prototype.requestAnimationFrame=function(callback){return window.requestAnimationFrame(callback)},VRDisplay.prototype.cancelAnimationFrame=function(id){return window.cancelAnimationFrame(id)},VRDisplay.prototype.wrapForFullscreen=function(element){if(Util.isIOS())return element;if(!this.fullscreenWrapper_){this.fullscreenWrapper_=document.createElement("div");var cssProperties=["height: "+Math.min(screen.height,screen.width)+"px !important","top: 0 !important","left: 0 !important","right: 0 !important","border: 0","margin: 0","padding: 0","z-index: 999999 !important","position: fixed"];this.fullscreenWrapper_.setAttribute("style",cssProperties.join("; ")+";"),this.fullscreenWrapper_.classList.add("webvr-polyfill-fullscreen-wrapper")}if(this.fullscreenElement_==element)return this.fullscreenWrapper_;this.removeFullscreenWrapper(),this.fullscreenElement_=element;var parent=this.fullscreenElement_.parentElement;parent.insertBefore(this.fullscreenWrapper_,this.fullscreenElement_),parent.removeChild(this.fullscreenElement_),this.fullscreenWrapper_.insertBefore(this.fullscreenElement_,this.fullscreenWrapper_.firstChild),this.fullscreenElementCachedStyle_=this.fullscreenElement_.getAttribute("style");var self=this;return function(){if(self.fullscreenElement_){var cssProperties=["position: absolute","top: 0","left: 0","width: "+Math.max(screen.width,screen.height)+"px","height: "+Math.min(screen.height,screen.width)+"px","border: 0","margin: 0","padding: 0"];self.fullscreenElement_.setAttribute("style",cssProperties.join("; ")+";")}}(),this.fullscreenWrapper_},VRDisplay.prototype.removeFullscreenWrapper=function(){if(this.fullscreenElement_){var element=this.fullscreenElement_;this.fullscreenElementCachedStyle_?element.setAttribute("style",this.fullscreenElementCachedStyle_):element.removeAttribute("style"),this.fullscreenElement_=null,this.fullscreenElementCachedStyle_=null;var parent=this.fullscreenWrapper_.parentElement;return this.fullscreenWrapper_.removeChild(element),parent.insertBefore(element,this.fullscreenWrapper_),parent.removeChild(this.fullscreenWrapper_),element}},VRDisplay.prototype.requestPresent=function(layers){var wasPresenting=this.isPresenting,self=this;return layers instanceof Array||(hasShowDeprecationWarning||(console.warn("Using a deprecated form of requestPresent. Should pass in an array of VRLayers."),hasShowDeprecationWarning=!0),layers=[layers]),new Promise(function(resolve,reject){if(self.capabilities.canPresent)if(0==layers.length||layers.length>self.capabilities.maxLayers)reject(new Error("Invalid number of layers."));else{var incomingLayer=layers[0];if(incomingLayer.source){var leftBounds=incomingLayer.leftBounds||defaultLeftBounds,rightBounds=incomingLayer.rightBounds||defaultRightBounds;if(wasPresenting){var layer=self.layer_;layer.source!==incomingLayer.source&&(layer.source=incomingLayer.source);for(var i=0;i<4;i++)layer.leftBounds[i]=leftBounds[i],layer.rightBounds[i]=rightBounds[i];resolve()}else{if(self.layer_={predistorted:incomingLayer.predistorted,source:incomingLayer.source,leftBounds:leftBounds.slice(0),rightBounds:rightBounds.slice(0)},self.waitingForPresent_=!1,self.layer_&&self.layer_.source){var fullscreenElement=self.wrapForFullscreen(self.layer_.source),onFullscreenChange=function(){var actualFullscreenElement=Util.getFullscreenElement();self.isPresenting=fullscreenElement===actualFullscreenElement,self.isPresenting?(screen.orientation&&screen.orientation.lock&&screen.orientation.lock("landscape-primary").catch(function(error){console.error("screen.orientation.lock() failed due to",error.message)}),self.waitingForPresent_=!1,self.beginPresent_(),resolve()):(screen.orientation&&screen.orientation.unlock&&screen.orientation.unlock(),self.removeFullscreenWrapper(),self.wakelock_.release(),self.endPresent_(),self.removeFullscreenListeners_()),self.fireVRDisplayPresentChange_()},onFullscreenError=function(){self.waitingForPresent_&&(self.removeFullscreenWrapper(),self.removeFullscreenListeners_(),self.wakelock_.release(),self.waitingForPresent_=!1,self.isPresenting=!1,reject(new Error("Unable to present.")))};self.addFullscreenListeners_(fullscreenElement,onFullscreenChange,onFullscreenError),Util.requestFullscreen(fullscreenElement)?(self.wakelock_.request(),self.waitingForPresent_=!0):(Util.isIOS()||Util.isWebViewAndroid())&&(self.wakelock_.request(),self.isPresenting=!0,self.beginPresent_(),self.fireVRDisplayPresentChange_(),resolve())}self.waitingForPresent_||Util.isIOS()||(Util.exitFullscreen(),reject(new Error("Unable to present.")))}}else resolve()}else reject(new Error("VRDisplay is not capable of presenting."))})},VRDisplay.prototype.exitPresent=function(){var wasPresenting=this.isPresenting,self=this;return this.isPresenting=!1,this.layer_=null,this.wakelock_.release(),new Promise(function(resolve,reject){wasPresenting?(!Util.exitFullscreen()&&Util.isIOS()&&(self.endPresent_(),self.fireVRDisplayPresentChange_()),Util.isWebViewAndroid()&&(self.removeFullscreenWrapper(),self.removeFullscreenListeners_(),self.endPresent_(),self.fireVRDisplayPresentChange_()),resolve()):reject(new Error("Was not presenting to VRDisplay."))})},VRDisplay.prototype.getLayers=function(){return this.layer_?[this.layer_]:[]},VRDisplay.prototype.fireVRDisplayPresentChange_=function(){var event=new CustomEvent("vrdisplaypresentchange",{detail:{display:this}});window.dispatchEvent(event)},VRDisplay.prototype.fireVRDisplayConnect_=function(){var event=new CustomEvent("vrdisplayconnect",{detail:{display:this}});window.dispatchEvent(event)},VRDisplay.prototype.addFullscreenListeners_=function(element,changeHandler,errorHandler){this.removeFullscreenListeners_(),this.fullscreenEventTarget_=element,this.fullscreenChangeHandler_=changeHandler,this.fullscreenErrorHandler_=errorHandler,changeHandler&&(document.fullscreenEnabled?element.addEventListener("fullscreenchange",changeHandler,!1):document.webkitFullscreenEnabled?element.addEventListener("webkitfullscreenchange",changeHandler,!1):document.mozFullScreenEnabled?document.addEventListener("mozfullscreenchange",changeHandler,!1):document.msFullscreenEnabled&&element.addEventListener("msfullscreenchange",changeHandler,!1)),errorHandler&&(document.fullscreenEnabled?element.addEventListener("fullscreenerror",errorHandler,!1):document.webkitFullscreenEnabled?element.addEventListener("webkitfullscreenerror",errorHandler,!1):document.mozFullScreenEnabled?document.addEventListener("mozfullscreenerror",errorHandler,!1):document.msFullscreenEnabled&&element.addEventListener("msfullscreenerror",errorHandler,!1))},VRDisplay.prototype.removeFullscreenListeners_=function(){if(this.fullscreenEventTarget_){var element=this.fullscreenEventTarget_;if(this.fullscreenChangeHandler_){var changeHandler=this.fullscreenChangeHandler_;element.removeEventListener("fullscreenchange",changeHandler,!1),element.removeEventListener("webkitfullscreenchange",changeHandler,!1),document.removeEventListener("mozfullscreenchange",changeHandler,!1),element.removeEventListener("msfullscreenchange",changeHandler,!1)}if(this.fullscreenErrorHandler_){var errorHandler=this.fullscreenErrorHandler_;element.removeEventListener("fullscreenerror",errorHandler,!1),element.removeEventListener("webkitfullscreenerror",errorHandler,!1),document.removeEventListener("mozfullscreenerror",errorHandler,!1),element.removeEventListener("msfullscreenerror",errorHandler,!1)}this.fullscreenEventTarget_=null,this.fullscreenChangeHandler_=null,this.fullscreenErrorHandler_=null}},VRDisplay.prototype.beginPresent_=function(){},VRDisplay.prototype.endPresent_=function(){},VRDisplay.prototype.submitFrame=function(pose){},VRDisplay.prototype.getEyeParameters=function(whichEye){return null},HMDVRDevice.prototype=new VRDevice,PositionSensorVRDevice.prototype=new VRDevice,module.exports.VRFrameData=function(){this.leftProjectionMatrix=new Float32Array(16),this.leftViewMatrix=new Float32Array(16),this.rightProjectionMatrix=new Float32Array(16),this.rightViewMatrix=new Float32Array(16),this.pose=null},module.exports.VRDisplay=VRDisplay,module.exports.VRDevice=VRDevice,module.exports.HMDVRDevice=HMDVRDevice,module.exports.PositionSensorVRDevice=PositionSensorVRDevice},{"./util.js":29,"./wakelock.js":31}],10:[function(_dereq_,module,exports){function CardboardDistorter(gl){this.gl=gl,this.ctxAttribs=gl.getContextAttributes(),this.meshWidth=20,this.meshHeight=20,this.bufferScale=window.WebVRConfig.BUFFER_SCALE,this.bufferWidth=gl.drawingBufferWidth,this.bufferHeight=gl.drawingBufferHeight,this.realBindFramebuffer=gl.bindFramebuffer,this.realEnable=gl.enable,this.realDisable=gl.disable,this.realColorMask=gl.colorMask,this.realClearColor=gl.clearColor,this.realViewport=gl.viewport,Util.isIOS()||(this.realCanvasWidth=Object.getOwnPropertyDescriptor(gl.canvas.__proto__,"width"),this.realCanvasHeight=Object.getOwnPropertyDescriptor(gl.canvas.__proto__,"height")),this.isPatched=!1,this.lastBoundFramebuffer=null,this.cullFace=!1,this.depthTest=!1,this.blend=!1,this.scissorTest=!1,this.stencilTest=!1,this.viewport=[0,0,0,0],this.colorMask=[!0,!0,!0,!0],this.clearColor=[0,0,0,0],this.attribs={position:0,texCoord:1},this.program=Util.linkProgram(gl,distortionVS,distortionFS,this.attribs),this.uniforms=Util.getProgramUniforms(gl,this.program),this.viewportOffsetScale=new Float32Array(8),this.setTextureBounds(),this.vertexBuffer=gl.createBuffer(),this.indexBuffer=gl.createBuffer(),this.indexCount=0,this.renderTarget=gl.createTexture(),this.framebuffer=gl.createFramebuffer(),this.depthStencilBuffer=null,this.depthBuffer=null,this.stencilBuffer=null,this.ctxAttribs.depth&&this.ctxAttribs.stencil?this.depthStencilBuffer=gl.createRenderbuffer():this.ctxAttribs.depth?this.depthBuffer=gl.createRenderbuffer():this.ctxAttribs.stencil&&(this.stencilBuffer=gl.createRenderbuffer()),this.patch(),this.onResize(),window.WebVRConfig.CARDBOARD_UI_DISABLED||(this.cardboardUI=new CardboardUI(gl))}var CardboardUI=_dereq_("./cardboard-ui.js"),Util=_dereq_("./util.js"),WGLUPreserveGLState=_dereq_("./deps/wglu-preserve-state.js"),distortionVS=["attribute vec2 position;","attribute vec3 texCoord;","varying vec2 vTexCoord;","uniform vec4 viewportOffsetScale[2];","void main() {"," vec4 viewport = viewportOffsetScale[int(texCoord.z)];"," vTexCoord = (texCoord.xy * viewport.zw) + viewport.xy;"," gl_Position = vec4( position, 1.0, 1.0 );","}"].join("\n"),distortionFS=["precision mediump float;","uniform sampler2D diffuse;","varying vec2 vTexCoord;","void main() {"," gl_FragColor = texture2D(diffuse, vTexCoord);","}"].join("\n");CardboardDistorter.prototype.destroy=function(){var gl=this.gl;this.unpatch(),gl.deleteProgram(this.program),gl.deleteBuffer(this.vertexBuffer),gl.deleteBuffer(this.indexBuffer),gl.deleteTexture(this.renderTarget),gl.deleteFramebuffer(this.framebuffer),this.depthStencilBuffer&&gl.deleteRenderbuffer(this.depthStencilBuffer),this.depthBuffer&&gl.deleteRenderbuffer(this.depthBuffer),this.stencilBuffer&&gl.deleteRenderbuffer(this.stencilBuffer),this.cardboardUI&&this.cardboardUI.destroy()},CardboardDistorter.prototype.onResize=function(){var gl=this.gl,self=this,glState=[gl.RENDERBUFFER_BINDING,gl.TEXTURE_BINDING_2D,gl.TEXTURE0];WGLUPreserveGLState(gl,glState,function(gl){self.realBindFramebuffer.call(gl,gl.FRAMEBUFFER,null),self.scissorTest&&self.realDisable.call(gl,gl.SCISSOR_TEST),self.realColorMask.call(gl,!0,!0,!0,!0),self.realViewport.call(gl,0,0,gl.drawingBufferWidth,gl.drawingBufferHeight),self.realClearColor.call(gl,0,0,0,1),gl.clear(gl.COLOR_BUFFER_BIT),self.realBindFramebuffer.call(gl,gl.FRAMEBUFFER,self.framebuffer),gl.bindTexture(gl.TEXTURE_2D,self.renderTarget),gl.texImage2D(gl.TEXTURE_2D,0,self.ctxAttribs.alpha?gl.RGBA:gl.RGB,self.bufferWidth,self.bufferHeight,0,self.ctxAttribs.alpha?gl.RGBA:gl.RGB,gl.UNSIGNED_BYTE,null),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,self.renderTarget,0),self.ctxAttribs.depth&&self.ctxAttribs.stencil?(gl.bindRenderbuffer(gl.RENDERBUFFER,self.depthStencilBuffer),gl.renderbufferStorage(gl.RENDERBUFFER,gl.DEPTH_STENCIL,self.bufferWidth,self.bufferHeight),gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.DEPTH_STENCIL_ATTACHMENT,gl.RENDERBUFFER,self.depthStencilBuffer)):self.ctxAttribs.depth?(gl.bindRenderbuffer(gl.RENDERBUFFER,self.depthBuffer),gl.renderbufferStorage(gl.RENDERBUFFER,gl.DEPTH_COMPONENT16,self.bufferWidth,self.bufferHeight),gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.DEPTH_ATTACHMENT,gl.RENDERBUFFER,self.depthBuffer)):self.ctxAttribs.stencil&&(gl.bindRenderbuffer(gl.RENDERBUFFER,self.stencilBuffer),gl.renderbufferStorage(gl.RENDERBUFFER,gl.STENCIL_INDEX8,self.bufferWidth,self.bufferHeight),gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.STENCIL_ATTACHMENT,gl.RENDERBUFFER,self.stencilBuffer)),!gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE&&console.error("Framebuffer incomplete!"),self.realBindFramebuffer.call(gl,gl.FRAMEBUFFER,self.lastBoundFramebuffer),self.scissorTest&&self.realEnable.call(gl,gl.SCISSOR_TEST),self.realColorMask.apply(gl,self.colorMask),self.realViewport.apply(gl,self.viewport),self.realClearColor.apply(gl,self.clearColor)}),this.cardboardUI&&this.cardboardUI.onResize()},CardboardDistorter.prototype.patch=function(){if(!this.isPatched){var self=this,canvas=this.gl.canvas,gl=this.gl;Util.isIOS()||(canvas.width=Util.getScreenWidth()*this.bufferScale,canvas.height=Util.getScreenHeight()*this.bufferScale,Object.defineProperty(canvas,"width",{configurable:!0,enumerable:!0,get:function(){return self.bufferWidth},set:function(value){self.bufferWidth=value,self.realCanvasWidth.set.call(canvas,value),self.onResize()}}),Object.defineProperty(canvas,"height",{configurable:!0,enumerable:!0,get:function(){return self.bufferHeight},set:function(value){self.bufferHeight=value,self.realCanvasHeight.set.call(canvas,value),self.onResize()}})),this.lastBoundFramebuffer=gl.getParameter(gl.FRAMEBUFFER_BINDING),null==this.lastBoundFramebuffer&&(this.lastBoundFramebuffer=this.framebuffer,this.gl.bindFramebuffer(gl.FRAMEBUFFER,this.framebuffer)),this.gl.bindFramebuffer=function(target,framebuffer){self.lastBoundFramebuffer=framebuffer||self.framebuffer,self.realBindFramebuffer.call(gl,target,self.lastBoundFramebuffer)},this.cullFace=gl.getParameter(gl.CULL_FACE),this.depthTest=gl.getParameter(gl.DEPTH_TEST),this.blend=gl.getParameter(gl.BLEND),this.scissorTest=gl.getParameter(gl.SCISSOR_TEST),this.stencilTest=gl.getParameter(gl.STENCIL_TEST),gl.enable=function(pname){switch(pname){case gl.CULL_FACE:self.cullFace=!0;break;case gl.DEPTH_TEST:self.depthTest=!0;break;case gl.BLEND:self.blend=!0;break;case gl.SCISSOR_TEST:self.scissorTest=!0;break;case gl.STENCIL_TEST:self.stencilTest=!0}self.realEnable.call(gl,pname)},gl.disable=function(pname){switch(pname){case gl.CULL_FACE:self.cullFace=!1;break;case gl.DEPTH_TEST:self.depthTest=!1;break;case gl.BLEND:self.blend=!1;break;case gl.SCISSOR_TEST:self.scissorTest=!1;break;case gl.STENCIL_TEST:self.stencilTest=!1}self.realDisable.call(gl,pname)},this.colorMask=gl.getParameter(gl.COLOR_WRITEMASK),gl.colorMask=function(r,g,b,a){self.colorMask[0]=r,self.colorMask[1]=g,self.colorMask[2]=b,self.colorMask[3]=a,self.realColorMask.call(gl,r,g,b,a)},this.clearColor=gl.getParameter(gl.COLOR_CLEAR_VALUE),gl.clearColor=function(r,g,b,a){self.clearColor[0]=r,self.clearColor[1]=g,self.clearColor[2]=b,self.clearColor[3]=a,self.realClearColor.call(gl,r,g,b,a)},this.viewport=gl.getParameter(gl.VIEWPORT),gl.viewport=function(x,y,w,h){self.viewport[0]=x,self.viewport[1]=y,self.viewport[2]=w,self.viewport[3]=h,self.realViewport.call(gl,x,y,w,h)},this.isPatched=!0,Util.safariCssSizeWorkaround(canvas)}},CardboardDistorter.prototype.unpatch=function(){if(this.isPatched){var gl=this.gl,canvas=this.gl.canvas;Util.isIOS()||(Object.defineProperty(canvas,"width",this.realCanvasWidth),Object.defineProperty(canvas,"height",this.realCanvasHeight)),canvas.width=this.bufferWidth,canvas.height=this.bufferHeight,gl.bindFramebuffer=this.realBindFramebuffer,gl.enable=this.realEnable,gl.disable=this.realDisable,gl.colorMask=this.realColorMask,gl.clearColor=this.realClearColor,gl.viewport=this.realViewport,this.lastBoundFramebuffer==this.framebuffer&&gl.bindFramebuffer(gl.FRAMEBUFFER,null),this.isPatched=!1,setTimeout(function(){Util.safariCssSizeWorkaround(canvas)},1)}},CardboardDistorter.prototype.setTextureBounds=function(leftBounds,rightBounds){leftBounds||(leftBounds=[0,0,.5,1]),rightBounds||(rightBounds=[.5,0,.5,1]),this.viewportOffsetScale[0]=leftBounds[0],this.viewportOffsetScale[1]=leftBounds[1],this.viewportOffsetScale[2]=leftBounds[2],this.viewportOffsetScale[3]=leftBounds[3],this.viewportOffsetScale[4]=rightBounds[0],this.viewportOffsetScale[5]=rightBounds[1],this.viewportOffsetScale[6]=rightBounds[2],this.viewportOffsetScale[7]=rightBounds[3]},CardboardDistorter.prototype.submitFrame=function(){var gl=this.gl,self=this,glState=[];if(window.WebVRConfig.DIRTY_SUBMIT_FRAME_BINDINGS||glState.push(gl.CURRENT_PROGRAM,gl.ARRAY_BUFFER_BINDING,gl.ELEMENT_ARRAY_BUFFER_BINDING,gl.TEXTURE_BINDING_2D,gl.TEXTURE0),WGLUPreserveGLState(gl,glState,function(gl){self.realBindFramebuffer.call(gl,gl.FRAMEBUFFER,null),self.cullFace&&self.realDisable.call(gl,gl.CULL_FACE),self.depthTest&&self.realDisable.call(gl,gl.DEPTH_TEST),self.blend&&self.realDisable.call(gl,gl.BLEND),self.scissorTest&&self.realDisable.call(gl,gl.SCISSOR_TEST),self.stencilTest&&self.realDisable.call(gl,gl.STENCIL_TEST),self.realColorMask.call(gl,!0,!0,!0,!0),self.realViewport.call(gl,0,0,gl.drawingBufferWidth,gl.drawingBufferHeight),(self.ctxAttribs.alpha||Util.isIOS())&&(self.realClearColor.call(gl,0,0,0,1),gl.clear(gl.COLOR_BUFFER_BIT)),gl.useProgram(self.program),gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,self.indexBuffer),gl.bindBuffer(gl.ARRAY_BUFFER,self.vertexBuffer),gl.enableVertexAttribArray(self.attribs.position),gl.enableVertexAttribArray(self.attribs.texCoord),gl.vertexAttribPointer(self.attribs.position,2,gl.FLOAT,!1,20,0),gl.vertexAttribPointer(self.attribs.texCoord,3,gl.FLOAT,!1,20,8),gl.activeTexture(gl.TEXTURE0),gl.uniform1i(self.uniforms.diffuse,0),gl.bindTexture(gl.TEXTURE_2D,self.renderTarget),gl.uniform4fv(self.uniforms.viewportOffsetScale,self.viewportOffsetScale),gl.drawElements(gl.TRIANGLES,self.indexCount,gl.UNSIGNED_SHORT,0),self.cardboardUI&&self.cardboardUI.renderNoState(),self.realBindFramebuffer.call(self.gl,gl.FRAMEBUFFER,self.framebuffer),self.ctxAttribs.preserveDrawingBuffer||(self.realClearColor.call(gl,0,0,0,0),gl.clear(gl.COLOR_BUFFER_BIT)),window.WebVRConfig.DIRTY_SUBMIT_FRAME_BINDINGS||self.realBindFramebuffer.call(gl,gl.FRAMEBUFFER,self.lastBoundFramebuffer),self.cullFace&&self.realEnable.call(gl,gl.CULL_FACE),self.depthTest&&self.realEnable.call(gl,gl.DEPTH_TEST),self.blend&&self.realEnable.call(gl,gl.BLEND),self.scissorTest&&self.realEnable.call(gl,gl.SCISSOR_TEST),self.stencilTest&&self.realEnable.call(gl,gl.STENCIL_TEST),self.realColorMask.apply(gl,self.colorMask),self.realViewport.apply(gl,self.viewport),!self.ctxAttribs.alpha&&self.ctxAttribs.preserveDrawingBuffer||self.realClearColor.apply(gl,self.clearColor)}),Util.isIOS()){var canvas=gl.canvas;canvas.width==self.bufferWidth&&canvas.height==self.bufferHeight||(self.bufferWidth=canvas.width,self.bufferHeight=canvas.height,self.onResize())}},CardboardDistorter.prototype.updateDeviceInfo=function(deviceInfo){var gl=this.gl,self=this,glState=[gl.ARRAY_BUFFER_BINDING,gl.ELEMENT_ARRAY_BUFFER_BINDING];WGLUPreserveGLState(gl,glState,function(gl){var vertices=self.computeMeshVertices_(self.meshWidth,self.meshHeight,deviceInfo);if(gl.bindBuffer(gl.ARRAY_BUFFER,self.vertexBuffer),gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW),!self.indexCount){var indices=self.computeMeshIndices_(self.meshWidth,self.meshHeight);gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,self.indexBuffer),gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,indices,gl.STATIC_DRAW),self.indexCount=indices.length}})},CardboardDistorter.prototype.computeMeshVertices_=function(width,height,deviceInfo){for(var vertices=new Float32Array(2*width*height*5),lensFrustum=deviceInfo.getLeftEyeVisibleTanAngles(),noLensFrustum=deviceInfo.getLeftEyeNoLensTanAngles(),viewport=deviceInfo.getLeftEyeVisibleScreenRect(noLensFrustum),vidx=0,e=0;e<2;e++){for(var j=0;jmidline-42&&event.clientXcanvas.clientHeight-42?optionsCallback(event):event.clientX<42&&event.clientY<42&&backCallback(event)},canvas.addEventListener("click",this.listener,!1)},CardboardUI.prototype.onResize=function(){var gl=this.gl,self=this,glState=[gl.ARRAY_BUFFER_BINDING];WGLUPreserveGLState(gl,glState,function(gl){function addGearSegment(theta,r){var angle=(90-theta)*DEG2RAD,x=Math.cos(angle),y=Math.sin(angle);vertices.push(kInnerRadius*x*buttonScale+midline,kInnerRadius*y*buttonScale+buttonScale),vertices.push(r*x*buttonScale+midline,r*y*buttonScale+buttonScale)}function addArrowVertex(x,y){vertices.push(buttonBorder+x,gl.drawingBufferHeight-buttonBorder-y)}var vertices=[],midline=gl.drawingBufferWidth/2,physicalPixels=Math.max(screen.width,screen.height)*window.devicePixelRatio,dps=gl.drawingBufferWidth/physicalPixels*window.devicePixelRatio,lineWidth=4*dps/2,buttonSize=42*dps,buttonScale=28*dps/2,buttonBorder=14*dps;vertices.push(midline-lineWidth,buttonSize),vertices.push(midline-lineWidth,gl.drawingBufferHeight),vertices.push(midline+lineWidth,buttonSize),vertices.push(midline+lineWidth,gl.drawingBufferHeight),self.gearOffset=vertices.length/2;for(var i=0;i<=6;i++){var segmentTheta=60*i;addGearSegment(segmentTheta,1),addGearSegment(segmentTheta+12,1),addGearSegment(segmentTheta+20,.75),addGearSegment(segmentTheta+40,.75),addGearSegment(segmentTheta+48,1)}self.gearVertexCount=vertices.length/2-self.gearOffset,self.arrowOffset=vertices.length/2;var angledLineWidth=lineWidth/Math.sin(45*DEG2RAD);addArrowVertex(0,buttonScale),addArrowVertex(buttonScale,0),addArrowVertex(buttonScale+angledLineWidth,angledLineWidth),addArrowVertex(angledLineWidth,buttonScale+angledLineWidth),addArrowVertex(angledLineWidth,buttonScale-angledLineWidth),addArrowVertex(0,buttonScale),addArrowVertex(buttonScale,2*buttonScale),addArrowVertex(buttonScale+angledLineWidth,2*buttonScale-angledLineWidth),addArrowVertex(angledLineWidth,buttonScale-angledLineWidth),addArrowVertex(0,buttonScale),addArrowVertex(angledLineWidth,buttonScale-lineWidth),addArrowVertex(28*dps,buttonScale-lineWidth),addArrowVertex(angledLineWidth,buttonScale+lineWidth),addArrowVertex(28*dps,buttonScale+lineWidth),self.arrowVertexCount=vertices.length/2-self.arrowOffset,gl.bindBuffer(gl.ARRAY_BUFFER,self.vertexBuffer),gl.bufferData(gl.ARRAY_BUFFER,new Float32Array(vertices),gl.STATIC_DRAW)})},CardboardUI.prototype.render=function(){var gl=this.gl,self=this,glState=[gl.CULL_FACE,gl.DEPTH_TEST,gl.BLEND,gl.SCISSOR_TEST,gl.STENCIL_TEST,gl.COLOR_WRITEMASK,gl.VIEWPORT,gl.CURRENT_PROGRAM,gl.ARRAY_BUFFER_BINDING];WGLUPreserveGLState(gl,glState,function(gl){gl.disable(gl.CULL_FACE),gl.disable(gl.DEPTH_TEST),gl.disable(gl.BLEND),gl.disable(gl.SCISSOR_TEST),gl.disable(gl.STENCIL_TEST),gl.colorMask(!0,!0,!0,!0),gl.viewport(0,0,gl.drawingBufferWidth,gl.drawingBufferHeight),self.renderNoState()})},CardboardUI.prototype.renderNoState=function(){var gl=this.gl;gl.useProgram(this.program),gl.bindBuffer(gl.ARRAY_BUFFER,this.vertexBuffer),gl.enableVertexAttribArray(this.attribs.position),gl.vertexAttribPointer(this.attribs.position,2,gl.FLOAT,!1,8,0),gl.uniform4f(this.uniforms.color,1,1,1,1),Util.orthoMatrix(this.projMat,0,gl.drawingBufferWidth,0,gl.drawingBufferHeight,.1,1024),gl.uniformMatrix4fv(this.uniforms.projectionMat,!1,this.projMat),gl.drawArrays(gl.TRIANGLE_STRIP,0,4),gl.drawArrays(gl.TRIANGLE_STRIP,this.gearOffset,this.gearVertexCount),gl.drawArrays(gl.TRIANGLE_STRIP,this.arrowOffset,this.arrowVertexCount)},module.exports=CardboardUI},{"./deps/wglu-preserve-state.js":13,"./util.js":29}],12:[function(_dereq_,module,exports){function CardboardVRDisplay(){this.displayName="Cardboard VRDisplay (webvr-polyfill)",this.capabilities.hasOrientation=!0,this.capabilities.canPresent=!0,this.bufferScale_=window.WebVRConfig.BUFFER_SCALE,this.poseSensor_=new FusionPoseSensor,this.distorter_=null,this.cardboardUI_=null,this.dpdb_=new Dpdb(!0,this.onDeviceParamsUpdated_.bind(this)),this.deviceInfo_=new DeviceInfo(this.dpdb_.getDeviceParams()),this.viewerSelector_=new ViewerSelector,this.viewerSelector_.onChange(this.onViewerChanged_.bind(this)),this.deviceInfo_.setViewer(this.viewerSelector_.getCurrentViewer()),window.WebVRConfig.ROTATE_INSTRUCTIONS_DISABLED||(this.rotateInstructions_=new RotateInstructions),Util.isIOS()&&window.addEventListener("resize",this.onResize_.bind(this))}var CardboardDistorter=_dereq_("./cardboard-distorter.js"),CardboardUI=_dereq_("./cardboard-ui.js"),DeviceInfo=_dereq_("./device-info.js"),Dpdb=_dereq_("./dpdb/dpdb.js"),FusionPoseSensor=_dereq_("./sensor-fusion/fusion-pose-sensor.js"),RotateInstructions=_dereq_("./rotate-instructions.js"),ViewerSelector=_dereq_("./viewer-selector.js"),VRDisplay=_dereq_("./base.js").VRDisplay,Util=_dereq_("./util.js"),Eye={LEFT:"left",RIGHT:"right"};(CardboardVRDisplay.prototype=new VRDisplay).getImmediatePose=function(){return{position:this.poseSensor_.getPosition(),orientation:this.poseSensor_.getOrientation(),linearVelocity:null,linearAcceleration:null,angularVelocity:null,angularAcceleration:null}},CardboardVRDisplay.prototype.resetPose=function(){this.poseSensor_.resetPose()},CardboardVRDisplay.prototype.getEyeParameters=function(whichEye){var fieldOfView,offset=[.5*this.deviceInfo_.viewer.interLensDistance,0,0];if(whichEye==Eye.LEFT)offset[0]*=-1,fieldOfView=this.deviceInfo_.getFieldOfViewLeftEye();else{if(whichEye!=Eye.RIGHT)return console.error("Invalid eye provided: %s",whichEye),null;fieldOfView=this.deviceInfo_.getFieldOfViewRightEye()}return{fieldOfView:fieldOfView,offset:offset,renderWidth:.5*this.deviceInfo_.device.width*this.bufferScale_,renderHeight:this.deviceInfo_.device.height*this.bufferScale_}},CardboardVRDisplay.prototype.onDeviceParamsUpdated_=function(newParams){Util.isDebug()&&console.log("DPDB reported that device params were updated."),this.deviceInfo_.updateDeviceParams(newParams),this.distorter_&&this.distorter_.updateDeviceInfo(this.deviceInfo_)},CardboardVRDisplay.prototype.updateBounds_=function(){this.layer_&&this.distorter_&&(this.layer_.leftBounds||this.layer_.rightBounds)&&this.distorter_.setTextureBounds(this.layer_.leftBounds,this.layer_.rightBounds)},CardboardVRDisplay.prototype.beginPresent_=function(){var gl=this.layer_.source.getContext("webgl");gl||(gl=this.layer_.source.getContext("experimental-webgl")),gl||(gl=this.layer_.source.getContext("webgl2")),gl&&(this.layer_.predistorted?window.WebVRConfig.CARDBOARD_UI_DISABLED||(gl.canvas.width=Util.getScreenWidth()*this.bufferScale_,gl.canvas.height=Util.getScreenHeight()*this.bufferScale_,this.cardboardUI_=new CardboardUI(gl)):(this.distorter_=new CardboardDistorter(gl),this.distorter_.updateDeviceInfo(this.deviceInfo_),this.cardboardUI_=this.distorter_.cardboardUI),this.cardboardUI_&&this.cardboardUI_.listen(function(e){this.viewerSelector_.show(this.layer_.source.parentElement),e.stopPropagation(),e.preventDefault()}.bind(this),function(e){this.exitPresent(),e.stopPropagation(),e.preventDefault()}.bind(this)),this.rotateInstructions_&&(Util.isLandscapeMode()&&Util.isMobile()?this.rotateInstructions_.showTemporarily(3e3,this.layer_.source.parentElement):this.rotateInstructions_.update()),this.orientationHandler=this.onOrientationChange_.bind(this),window.addEventListener("orientationchange",this.orientationHandler),this.vrdisplaypresentchangeHandler=this.updateBounds_.bind(this),window.addEventListener("vrdisplaypresentchange",this.vrdisplaypresentchangeHandler),this.fireVRDisplayDeviceParamsChange_())},CardboardVRDisplay.prototype.endPresent_=function(){this.distorter_&&(this.distorter_.destroy(),this.distorter_=null),this.cardboardUI_&&(this.cardboardUI_.destroy(),this.cardboardUI_=null),this.rotateInstructions_&&this.rotateInstructions_.hide(),this.viewerSelector_.hide(),window.removeEventListener("orientationchange",this.orientationHandler),window.removeEventListener("vrdisplaypresentchange",this.vrdisplaypresentchangeHandler)},CardboardVRDisplay.prototype.submitFrame=function(pose){if(this.distorter_)this.updateBounds_(),this.distorter_.submitFrame();else if(this.cardboardUI_&&this.layer_){var canvas=this.layer_.source.getContext("webgl").canvas;canvas.width==this.lastWidth&&canvas.height==this.lastHeight||this.cardboardUI_.onResize(),this.lastWidth=canvas.width,this.lastHeight=canvas.height,this.cardboardUI_.render()}},CardboardVRDisplay.prototype.onOrientationChange_=function(e){this.viewerSelector_.hide(),this.rotateInstructions_&&this.rotateInstructions_.update(),this.onResize_()},CardboardVRDisplay.prototype.onResize_=function(e){if(this.layer_){var gl=this.layer_.source.getContext("webgl"),cssProperties=["position: absolute","top: 0","left: 0","width: 100vw","height: 100vh","border: 0","margin: 0","padding: 0px","box-sizing: content-box"];gl.canvas.setAttribute("style",cssProperties.join("; ")+";"),Util.safariCssSizeWorkaround(gl.canvas)}},CardboardVRDisplay.prototype.onViewerChanged_=function(viewer){this.deviceInfo_.setViewer(viewer),this.distorter_&&this.distorter_.updateDeviceInfo(this.deviceInfo_),this.fireVRDisplayDeviceParamsChange_()},CardboardVRDisplay.prototype.fireVRDisplayDeviceParamsChange_=function(){var event=new CustomEvent("vrdisplaydeviceparamschange",{detail:{vrdisplay:this,deviceInfo:this.deviceInfo_}});window.dispatchEvent(event)},module.exports=CardboardVRDisplay},{"./base.js":9,"./cardboard-distorter.js":10,"./cardboard-ui.js":11,"./device-info.js":14,"./dpdb/dpdb.js":18,"./rotate-instructions.js":23,"./sensor-fusion/fusion-pose-sensor.js":25,"./util.js":29,"./viewer-selector.js":30}],13:[function(_dereq_,module,exports){module.exports=function(gl,bindings,callback){if(bindings){for(var boundValues=[],activeTexture=null,i=0;igl.TEXTURE31){console.error("TEXTURE_BINDING_2D or TEXTURE_BINDING_CUBE_MAP must be followed by a valid texture unit"),boundValues.push(null,null);break}activeTexture||(activeTexture=gl.getParameter(gl.ACTIVE_TEXTURE)),gl.activeTexture(textureUnit),boundValues.push(gl.getParameter(binding),null);break;case gl.ACTIVE_TEXTURE:activeTexture=gl.getParameter(gl.ACTIVE_TEXTURE),boundValues.push(null);break;default:boundValues.push(gl.getParameter(binding))}for(callback(gl),i=0;igl.TEXTURE31)break;gl.activeTexture(textureUnit),gl.bindTexture(gl.TEXTURE_2D,boundValue);break;case gl.TEXTURE_BINDING_CUBE_MAP:var textureUnit=bindings[++i];if(textureUnitgl.TEXTURE31)break;gl.activeTexture(textureUnit),gl.bindTexture(gl.TEXTURE_CUBE_MAP,boundValue);break;case gl.VIEWPORT:gl.viewport(boundValue[0],boundValue[1],boundValue[2],boundValue[3]);break;case gl.BLEND:case gl.CULL_FACE:case gl.DEPTH_TEST:case gl.SCISSOR_TEST:case gl.STENCIL_TEST:boundValue?gl.enable(binding):gl.disable(binding);break;default:console.log("No GL restore behavior for 0x"+binding.toString(16))}activeTexture&&gl.activeTexture(activeTexture)}}else callback(gl)}},{}],14:[function(_dereq_,module,exports){function Device(params){this.width=params.width||Util.getScreenWidth(),this.height=params.height||Util.getScreenHeight(),this.widthMeters=params.widthMeters,this.heightMeters=params.heightMeters,this.bevelMeters=params.bevelMeters}function DeviceInfo(deviceParams){this.viewer=Viewers.CardboardV2,this.updateDeviceParams(deviceParams),this.distortion=new Distortion(this.viewer.distortionCoefficients)}function CardboardViewer(params){this.id=params.id,this.label=params.label,this.fov=params.fov,this.interLensDistance=params.interLensDistance,this.baselineLensDistance=params.baselineLensDistance,this.screenLensDistance=params.screenLensDistance,this.distortionCoefficients=params.distortionCoefficients,this.inverseCoefficients=params.inverseCoefficients}var Distortion=_dereq_("./distortion/distortion.js"),MathUtil=_dereq_("./math-util.js"),Util=_dereq_("./util.js"),DEFAULT_ANDROID=new Device({widthMeters:.11,heightMeters:.062,bevelMeters:.004}),DEFAULT_IOS=new Device({widthMeters:.1038,heightMeters:.0584,bevelMeters:.004}),Viewers={CardboardV1:new CardboardViewer({id:"CardboardV1",label:"Cardboard I/O 2014",fov:40,interLensDistance:.06,baselineLensDistance:.035,screenLensDistance:.042,distortionCoefficients:[.441,.156],inverseCoefficients:[-.4410035,.42756155,-.4804439,.5460139,-.58821183,.5733938,-.48303202,.33299083,-.17573841,.0651772,-.01488963,.001559834]}),CardboardV2:new CardboardViewer({id:"CardboardV2",label:"Cardboard I/O 2015",fov:60,interLensDistance:.064,baselineLensDistance:.035,screenLensDistance:.039,distortionCoefficients:[.34,.55],inverseCoefficients:[-.33836704,-.18162185,.862655,-1.2462051,1.0560602,-.58208317,.21609078,-.05444823,.009177956,-.0009904169,6183535e-11,-16981803e-13]})};DeviceInfo.prototype.updateDeviceParams=function(deviceParams){this.device=this.determineDevice_(deviceParams)||this.device},DeviceInfo.prototype.getDevice=function(){return this.device},DeviceInfo.prototype.setViewer=function(viewer){this.viewer=viewer,this.distortion=new Distortion(this.viewer.distortionCoefficients)},DeviceInfo.prototype.determineDevice_=function(deviceParams){if(!deviceParams)return Util.isIOS()?(console.warn("Using fallback iOS device measurements."),DEFAULT_IOS):(console.warn("Using fallback Android device measurements."),DEFAULT_ANDROID);var metersPerPixelX=.0254/deviceParams.xdpi,metersPerPixelY=.0254/deviceParams.ydpi;return new Device({widthMeters:metersPerPixelX*Util.getScreenWidth(),heightMeters:metersPerPixelY*Util.getScreenHeight(),bevelMeters:.001*deviceParams.bevelMm})},DeviceInfo.prototype.getDistortedFieldOfViewLeftEye=function(){var viewer=this.viewer,device=this.device,distortion=this.distortion,eyeToScreenDistance=viewer.screenLensDistance,outerDist=(device.widthMeters-viewer.interLensDistance)/2,innerDist=viewer.interLensDistance/2,bottomDist=viewer.baselineLensDistance-device.bevelMeters,topDist=device.heightMeters-bottomDist,outerAngle=MathUtil.radToDeg*Math.atan(distortion.distort(outerDist/eyeToScreenDistance)),innerAngle=MathUtil.radToDeg*Math.atan(distortion.distort(innerDist/eyeToScreenDistance)),bottomAngle=MathUtil.radToDeg*Math.atan(distortion.distort(bottomDist/eyeToScreenDistance)),topAngle=MathUtil.radToDeg*Math.atan(distortion.distort(topDist/eyeToScreenDistance));return{leftDegrees:Math.min(outerAngle,viewer.fov),rightDegrees:Math.min(innerAngle,viewer.fov),downDegrees:Math.min(bottomAngle,viewer.fov),upDegrees:Math.min(topAngle,viewer.fov)}},DeviceInfo.prototype.getLeftEyeVisibleTanAngles=function(){var viewer=this.viewer,device=this.device,distortion=this.distortion,fovLeft=Math.tan(-MathUtil.degToRad*viewer.fov),fovTop=Math.tan(MathUtil.degToRad*viewer.fov),fovRight=Math.tan(MathUtil.degToRad*viewer.fov),fovBottom=Math.tan(-MathUtil.degToRad*viewer.fov),halfWidth=device.widthMeters/4,halfHeight=device.heightMeters/2,verticalLensOffset=viewer.baselineLensDistance-device.bevelMeters-halfHeight,centerX=viewer.interLensDistance/2-halfWidth,centerY=-verticalLensOffset,centerZ=viewer.screenLensDistance,screenLeft=distortion.distort((centerX-halfWidth)/centerZ),screenTop=distortion.distort((centerY+halfHeight)/centerZ),screenRight=distortion.distort((centerX+halfWidth)/centerZ),screenBottom=distortion.distort((centerY-halfHeight)/centerZ),result=new Float32Array(4);return result[0]=Math.max(fovLeft,screenLeft),result[1]=Math.min(fovTop,screenTop),result[2]=Math.min(fovRight,screenRight),result[3]=Math.max(fovBottom,screenBottom),result},DeviceInfo.prototype.getLeftEyeNoLensTanAngles=function(){var viewer=this.viewer,device=this.device,distortion=this.distortion,result=new Float32Array(4),fovLeft=distortion.distortInverse(Math.tan(-MathUtil.degToRad*viewer.fov)),fovTop=distortion.distortInverse(Math.tan(MathUtil.degToRad*viewer.fov)),fovRight=distortion.distortInverse(Math.tan(MathUtil.degToRad*viewer.fov)),fovBottom=distortion.distortInverse(Math.tan(-MathUtil.degToRad*viewer.fov)),halfWidth=device.widthMeters/4,halfHeight=device.heightMeters/2,verticalLensOffset=viewer.baselineLensDistance-device.bevelMeters-halfHeight,centerX=viewer.interLensDistance/2-halfWidth,centerY=-verticalLensOffset,centerZ=viewer.screenLensDistance,screenLeft=(centerX-halfWidth)/centerZ,screenTop=(centerY+halfHeight)/centerZ,screenRight=(centerX+halfWidth)/centerZ,screenBottom=(centerY-halfHeight)/centerZ;return result[0]=Math.max(fovLeft,screenLeft),result[1]=Math.min(fovTop,screenTop),result[2]=Math.min(fovRight,screenRight),result[3]=Math.max(fovBottom,screenBottom),result},DeviceInfo.prototype.getLeftEyeVisibleScreenRect=function(undistortedFrustum){var viewer=this.viewer,device=this.device,dist=viewer.screenLensDistance,eyeX=(device.widthMeters-viewer.interLensDistance)/2,eyeY=viewer.baselineLensDistance-device.bevelMeters,left=(undistortedFrustum[0]*dist+eyeX)/device.widthMeters,top=(undistortedFrustum[1]*dist+eyeY)/device.heightMeters,right=(undistortedFrustum[2]*dist+eyeX)/device.widthMeters,bottom=(undistortedFrustum[3]*dist+eyeY)/device.heightMeters;return{x:left,y:bottom,width:right-left,height:top-bottom}},DeviceInfo.prototype.getFieldOfViewLeftEye=function(opt_isUndistorted){return opt_isUndistorted?this.getUndistortedFieldOfViewLeftEye():this.getDistortedFieldOfViewLeftEye()},DeviceInfo.prototype.getFieldOfViewRightEye=function(opt_isUndistorted){var fov=this.getFieldOfViewLeftEye(opt_isUndistorted);return{leftDegrees:fov.rightDegrees,rightDegrees:fov.leftDegrees,upDegrees:fov.upDegrees,downDegrees:fov.downDegrees}},DeviceInfo.prototype.getUndistortedFieldOfViewLeftEye=function(){var p=this.getUndistortedParams_();return{leftDegrees:MathUtil.radToDeg*Math.atan(p.outerDist),rightDegrees:MathUtil.radToDeg*Math.atan(p.innerDist),downDegrees:MathUtil.radToDeg*Math.atan(p.bottomDist),upDegrees:MathUtil.radToDeg*Math.atan(p.topDist)}},DeviceInfo.prototype.getUndistortedViewportLeftEye=function(){var p=this.getUndistortedParams_(),viewer=this.viewer,device=this.device,eyeToScreenDistance=viewer.screenLensDistance,screenWidth=device.widthMeters/eyeToScreenDistance,screenHeight=device.heightMeters/eyeToScreenDistance,xPxPerTanAngle=device.width/screenWidth,yPxPerTanAngle=device.height/screenHeight,x=Math.round((p.eyePosX-p.outerDist)*xPxPerTanAngle),y=Math.round((p.eyePosY-p.bottomDist)*yPxPerTanAngle);return{x:x,y:y,width:Math.round((p.eyePosX+p.innerDist)*xPxPerTanAngle)-x,height:Math.round((p.eyePosY+p.topDist)*yPxPerTanAngle)-y}},DeviceInfo.prototype.getUndistortedParams_=function(){var viewer=this.viewer,device=this.device,distortion=this.distortion,eyeToScreenDistance=viewer.screenLensDistance,halfLensDistance=viewer.interLensDistance/2/eyeToScreenDistance,screenWidth=device.widthMeters/eyeToScreenDistance,screenHeight=device.heightMeters/eyeToScreenDistance,eyePosX=screenWidth/2-halfLensDistance,eyePosY=(viewer.baselineLensDistance-device.bevelMeters)/eyeToScreenDistance,maxFov=viewer.fov,viewerMax=distortion.distortInverse(Math.tan(MathUtil.degToRad*maxFov)),outerDist=Math.min(eyePosX,viewerMax),innerDist=Math.min(halfLensDistance,viewerMax),bottomDist=Math.min(eyePosY,viewerMax);return{outerDist:outerDist,innerDist:innerDist,topDist:Math.min(screenHeight-eyePosY,viewerMax),bottomDist:bottomDist,eyePosX:eyePosX,eyePosY:eyePosY}},DeviceInfo.Viewers=Viewers,module.exports=DeviceInfo},{"./distortion/distortion.js":16,"./math-util.js":20,"./util.js":29}],15:[function(_dereq_,module,exports){function VRDisplayHMDDevice(display){this.display=display,this.hardwareUnitId=display.displayId,this.deviceId="webvr-polyfill:HMD:"+display.displayId,this.deviceName=display.displayName+" (HMD)"}function VRDisplayPositionSensorDevice(display){this.display=display,this.hardwareUnitId=display.displayId,this.deviceId="webvr-polyfill:PositionSensor: "+display.displayId,this.deviceName=display.displayName+" (PositionSensor)"}_dereq_("./base.js").VRDisplay;var HMDVRDevice=_dereq_("./base.js").HMDVRDevice,PositionSensorVRDevice=_dereq_("./base.js").PositionSensorVRDevice;(VRDisplayHMDDevice.prototype=new HMDVRDevice).getEyeParameters=function(whichEye){var eyeParameters=this.display.getEyeParameters(whichEye);return{currentFieldOfView:eyeParameters.fieldOfView,maximumFieldOfView:eyeParameters.fieldOfView,minimumFieldOfView:eyeParameters.fieldOfView,recommendedFieldOfView:eyeParameters.fieldOfView,eyeTranslation:{x:eyeParameters.offset[0],y:eyeParameters.offset[1],z:eyeParameters.offset[2]},renderRect:{x:"right"==whichEye?eyeParameters.renderWidth:0,y:0,width:eyeParameters.renderWidth,height:eyeParameters.renderHeight}}},VRDisplayHMDDevice.prototype.setFieldOfView=function(opt_fovLeft,opt_fovRight,opt_zNear,opt_zFar){},(VRDisplayPositionSensorDevice.prototype=new PositionSensorVRDevice).getState=function(){var pose=this.display.getPose();return{position:pose.position?{x:pose.position[0],y:pose.position[1],z:pose.position[2]}:null,orientation:pose.orientation?{x:pose.orientation[0],y:pose.orientation[1],z:pose.orientation[2],w:pose.orientation[3]}:null,linearVelocity:null,linearAcceleration:null,angularVelocity:null,angularAcceleration:null}},VRDisplayPositionSensorDevice.prototype.resetState=function(){return this.positionDevice.resetPose()},module.exports.VRDisplayHMDDevice=VRDisplayHMDDevice,module.exports.VRDisplayPositionSensorDevice=VRDisplayPositionSensorDevice},{"./base.js":9}],16:[function(_dereq_,module,exports){function Distortion(coefficients){this.coefficients=coefficients}Distortion.prototype.distortInverse=function(radius){for(var r0=0,r1=1,dr0=radius-this.distort(r0);Math.abs(r1-r0)>1e-4;){var dr1=radius-this.distort(r1),r2=r1-dr1*((r1-r0)/(dr1-dr0));r0=r1,r1=r2,dr0=dr1}return r1},Distortion.prototype.distort=function(radius){for(var r2=radius*radius,ret=0,i=0;i=200&&xhr.status<=299?(obj.dpdb=JSON.parse(xhr.response),obj.recalculateDeviceParams_()):console.error("Error loading online DPDB!")}),xhr.send()}}function DeviceParams(params){this.xdpi=params.xdpi,this.ydpi=params.ydpi,this.bevelMm=params.bevelMm}var DPDB_CACHE=_dereq_("./dpdb.json"),Util=_dereq_("../util.js"),ONLINE_DPDB_URL="https://dpdb.webvr.rocks/dpdb.json";Dpdb.prototype.getDeviceParams=function(){return this.deviceParams},Dpdb.prototype.recalculateDeviceParams_=function(){var newDeviceParams=this.calcDeviceParams_();newDeviceParams?(this.deviceParams=newDeviceParams,this.onDeviceParamsUpdated&&this.onDeviceParamsUpdated(this.deviceParams)):console.error("Failed to recalculate device parameters.")},Dpdb.prototype.calcDeviceParams_=function(){var db=this.dpdb;if(!db)return console.error("DPDB not available."),null;if(1!=db.format)return console.error("DPDB has unexpected format version."),null;if(!db.devices||!db.devices.length)return console.error("DPDB does not have a devices section."),null;var userAgent=navigator.userAgent||navigator.vendor||window.opera,width=Util.getScreenWidth(),height=Util.getScreenHeight();if(!db.devices)return console.error("DPDB has no devices section."),null;for(var i=0;i=1)return this.w=w,this.x=x,this.y=y,this.z=z,this;var halfTheta=Math.acos(cosHalfTheta),sinHalfTheta=Math.sqrt(1-cosHalfTheta*cosHalfTheta);if(Math.abs(sinHalfTheta)<.001)return this.w=.5*(w+this.w),this.x=.5*(x+this.x),this.y=.5*(y+this.y),this.z=.5*(z+this.z),this;var ratioA=Math.sin((1-t)*halfTheta)/sinHalfTheta,ratioB=Math.sin(t*halfTheta)/sinHalfTheta;return this.w=w*ratioA+this.w*ratioB,this.x=x*ratioA+this.x*ratioB,this.y=y*ratioA+this.y*ratioB,this.z=z*ratioA+this.z*ratioB,this},setFromUnitVectors:function(){var v1,r;return function(vFrom,vTo){return void 0===v1&&(v1=new MathUtil.Vector3),(r=vFrom.dot(vTo)+1)<1e-6?(r=0,Math.abs(vFrom.x)>Math.abs(vFrom.z)?v1.set(-vFrom.y,vFrom.x,0):v1.set(0,-vFrom.z,vFrom.y)):v1.crossVectors(vFrom,vTo),this.x=v1.x,this.y=v1.y,this.z=v1.z,this.w=r,this.normalize(),this}}()},module.exports=MathUtil},{}],21:[function(_dereq_,module,exports){function MouseKeyboardVRDisplay(){this.displayName="Mouse and Keyboard VRDisplay (webvr-polyfill)",this.capabilities.hasOrientation=!0,window.addEventListener("keydown",this.onKeyDown_.bind(this)),window.addEventListener("mousemove",this.onMouseMove_.bind(this)),window.addEventListener("mousedown",this.onMouseDown_.bind(this)),window.addEventListener("mouseup",this.onMouseUp_.bind(this)),this.phi_=0,this.theta_=0,this.targetAngle_=null,this.angleAnimation_=null,this.orientation_=new MathUtil.Quaternion,this.rotateStart_=new MathUtil.Vector2,this.rotateEnd_=new MathUtil.Vector2,this.rotateDelta_=new MathUtil.Vector2,this.isDragging_=!1,this.orientationOut_=new Float32Array(4)}var VRDisplay=_dereq_("./base.js").VRDisplay,MathUtil=_dereq_("./math-util.js"),Util=_dereq_("./util.js");(MouseKeyboardVRDisplay.prototype=new VRDisplay).getImmediatePose=function(){return this.orientation_.setFromEulerYXZ(this.phi_,this.theta_,0),this.orientationOut_[0]=this.orientation_.x,this.orientationOut_[1]=this.orientation_.y,this.orientationOut_[2]=this.orientation_.z,this.orientationOut_[3]=this.orientation_.w,{position:null,orientation:this.orientationOut_,linearVelocity:null,linearAcceleration:null,angularVelocity:null,angularAcceleration:null}},MouseKeyboardVRDisplay.prototype.onKeyDown_=function(e){38==e.keyCode?this.animatePhi_(this.phi_+.15):39==e.keyCode?this.animateTheta_(this.theta_-.15):40==e.keyCode?this.animatePhi_(this.phi_-.15):37==e.keyCode&&this.animateTheta_(this.theta_+.15)},MouseKeyboardVRDisplay.prototype.animateTheta_=function(targetAngle){this.animateKeyTransitions_("theta_",targetAngle)},MouseKeyboardVRDisplay.prototype.animatePhi_=function(targetAngle){targetAngle=Util.clamp(targetAngle,-Math.PI/2,Math.PI/2),this.animateKeyTransitions_("phi_",targetAngle)},MouseKeyboardVRDisplay.prototype.animateKeyTransitions_=function(angleName,targetAngle){this.angleAnimation_&&cancelAnimationFrame(this.angleAnimation_);var startAngle=this[angleName],startTime=new Date;this.angleAnimation_=requestAnimationFrame(function animate(){var elapsed=new Date-startTime;if(elapsed>=80)return this[angleName]=targetAngle,void cancelAnimationFrame(this.angleAnimation_);this.angleAnimation_=requestAnimationFrame(animate.bind(this));var percent=elapsed/80;this[angleName]=startAngle+(targetAngle-startAngle)*percent}.bind(this))},MouseKeyboardVRDisplay.prototype.onMouseDown_=function(e){this.rotateStart_.set(e.clientX,e.clientY),this.isDragging_=!0},MouseKeyboardVRDisplay.prototype.onMouseMove_=function(e){if(this.isDragging_||this.isPointerLocked_()){if(this.isPointerLocked_()){var movementX=e.movementX||e.mozMovementX||0,movementY=e.movementY||e.mozMovementY||0;this.rotateEnd_.set(this.rotateStart_.x-movementX,this.rotateStart_.y-movementY)}else this.rotateEnd_.set(e.clientX,e.clientY);this.rotateDelta_.subVectors(this.rotateEnd_,this.rotateStart_),this.rotateStart_.copy(this.rotateEnd_),this.phi_+=2*Math.PI*this.rotateDelta_.y/screen.height*.3,this.theta_+=2*Math.PI*this.rotateDelta_.x/screen.width*.5,this.phi_=Util.clamp(this.phi_,-Math.PI/2,Math.PI/2)}},MouseKeyboardVRDisplay.prototype.onMouseUp_=function(e){this.isDragging_=!1},MouseKeyboardVRDisplay.prototype.isPointerLocked_=function(){return void 0!==(document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement)},MouseKeyboardVRDisplay.prototype.resetPose=function(){this.phi_=0,this.theta_=0},module.exports=MouseKeyboardVRDisplay},{"./base.js":9,"./math-util.js":20,"./util.js":29}],22:[function(_dereq_,module,exports){(function(global){void 0!==global&&global.window&&(global.document=global.window.document,global.navigator=global.window.navigator),_dereq_("./main")}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./main":19}],23:[function(_dereq_,module,exports){function RotateInstructions(){this.loadIcon_();var overlay=document.createElement("div"),s=overlay.style;s.position="fixed",s.top=0,s.right=0,s.bottom=0,s.left=0,s.backgroundColor="gray",s.fontFamily="sans-serif",s.zIndex=1e6;var img=document.createElement("img");img.src=this.icon,(s=img.style).marginLeft="25%",s.marginTop="25%",s.width="50%",overlay.appendChild(img);var text=document.createElement("div");(s=text.style).textAlign="center",s.fontSize="16px",s.lineHeight="24px",s.margin="24px 25%",s.width="50%",text.innerHTML="Place your phone into your Cardboard viewer.",overlay.appendChild(text);var snackbar=document.createElement("div");(s=snackbar.style).backgroundColor="#CFD8DC",s.position="fixed",s.bottom=0,s.width="100%",s.height="48px",s.padding="14px 24px",s.boxSizing="border-box",s.color="#656A6B",overlay.appendChild(snackbar);var snackbarText=document.createElement("div");snackbarText.style.float="left",snackbarText.innerHTML="No Cardboard viewer?";var snackbarButton=document.createElement("a");snackbarButton.href="https://www.google.com/get/cardboard/get-cardboard/",snackbarButton.innerHTML="get one",snackbarButton.target="_blank",(s=snackbarButton.style).float="right",s.fontWeight=600,s.textTransform="uppercase",s.borderLeft="1px solid gray",s.paddingLeft="24px",s.textDecoration="none",s.color="#656A6B",snackbar.appendChild(snackbarText),snackbar.appendChild(snackbarButton),this.overlay=overlay,this.text=text,this.hide()}var Util=_dereq_("./util.js");RotateInstructions.prototype.show=function(parent){parent||this.overlay.parentElement?parent&&(this.overlay.parentElement&&this.overlay.parentElement!=parent&&this.overlay.parentElement.removeChild(this.overlay),parent.appendChild(this.overlay)):document.body.appendChild(this.overlay),this.overlay.style.display="block";var s=this.overlay.querySelector("img").style;Util.isLandscapeMode()?(s.width="20%",s.marginLeft="40%",s.marginTop="3%"):(s.width="50%",s.marginLeft="25%",s.marginTop="25%")},RotateInstructions.prototype.hide=function(){this.overlay.style.display="none"},RotateInstructions.prototype.showTemporarily=function(ms,parent){this.show(parent),this.timer=setTimeout(this.hide.bind(this),ms)},RotateInstructions.prototype.disableShowTemporarily=function(){clearTimeout(this.timer)},RotateInstructions.prototype.update=function(){this.disableShowTemporarily(),!Util.isLandscapeMode()&&Util.isMobile()?this.show():this.hide()},RotateInstructions.prototype.loadIcon_=function(){this.icon=Util.base64("image/svg+xml","PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjE5OHB4IiBoZWlnaHQ9IjI0MHB4IiB2aWV3Qm94PSIwIDAgMTk4IDI0MCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczpza2V0Y2g9Imh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaC9ucyI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDMuMy4zICgxMjA4MSkgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+dHJhbnNpdGlvbjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHNrZXRjaDp0eXBlPSJNU1BhZ2UiPgogICAgICAgIDxnIGlkPSJ0cmFuc2l0aW9uIiBza2V0Y2g6dHlwZT0iTVNBcnRib2FyZEdyb3VwIj4KICAgICAgICAgICAgPGcgaWQ9IkltcG9ydGVkLUxheWVycy1Db3B5LTQtKy1JbXBvcnRlZC1MYXllcnMtQ29weS0rLUltcG9ydGVkLUxheWVycy1Db3B5LTItQ29weSIgc2tldGNoOnR5cGU9Ik1TTGF5ZXJHcm91cCI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iSW1wb3J0ZWQtTGF5ZXJzLUNvcHktNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDEwNy4wMDAwMDApIiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTQ5LjYyNSwyLjUyNyBDMTQ5LjYyNSwyLjUyNyAxNTUuODA1LDYuMDk2IDE1Ni4zNjIsNi40MTggTDE1Ni4zNjIsNy4zMDQgQzE1Ni4zNjIsNy40ODEgMTU2LjM3NSw3LjY2NCAxNTYuNCw3Ljg1MyBDMTU2LjQxLDcuOTM0IDE1Ni40Miw4LjAxNSAxNTYuNDI3LDguMDk1IEMxNTYuNTY3LDkuNTEgMTU3LjQwMSwxMS4wOTMgMTU4LjUzMiwxMi4wOTQgTDE2NC4yNTIsMTcuMTU2IEwxNjQuMzMzLDE3LjA2NiBDMTY0LjMzMywxNy4wNjYgMTY4LjcxNSwxNC41MzYgMTY5LjU2OCwxNC4wNDIgQzE3MS4wMjUsMTQuODgzIDE5NS41MzgsMjkuMDM1IDE5NS41MzgsMjkuMDM1IEwxOTUuNTM4LDgzLjAzNiBDMTk1LjUzOCw4My44MDcgMTk1LjE1Miw4NC4yNTMgMTk0LjU5LDg0LjI1MyBDMTk0LjM1Nyw4NC4yNTMgMTk0LjA5NSw4NC4xNzcgMTkzLjgxOCw4NC4wMTcgTDE2OS44NTEsNzAuMTc5IEwxNjkuODM3LDcwLjIwMyBMMTQyLjUxNSw4NS45NzggTDE0MS42NjUsODQuNjU1IEMxMzYuOTM0LDgzLjEyNiAxMzEuOTE3LDgxLjkxNSAxMjYuNzE0LDgxLjA0NSBDMTI2LjcwOSw4MS4wNiAxMjYuNzA3LDgxLjA2OSAxMjYuNzA3LDgxLjA2OSBMMTIxLjY0LDk4LjAzIEwxMTMuNzQ5LDEwMi41ODYgTDExMy43MTIsMTAyLjUyMyBMMTEzLjcxMiwxMzAuMTEzIEMxMTMuNzEyLDEzMC44ODUgMTEzLjMyNiwxMzEuMzMgMTEyLjc2NCwxMzEuMzMgQzExMi41MzIsMTMxLjMzIDExMi4yNjksMTMxLjI1NCAxMTEuOTkyLDEzMS4wOTQgTDY5LjUxOSwxMDYuNTcyIEM2OC41NjksMTA2LjAyMyA2Ny43OTksMTA0LjY5NSA2Ny43OTksMTAzLjYwNSBMNjcuNzk5LDEwMi41NyBMNjcuNzc4LDEwMi42MTcgQzY3LjI3LDEwMi4zOTMgNjYuNjQ4LDEwMi4yNDkgNjUuOTYyLDEwMi4yMTggQzY1Ljg3NSwxMDIuMjE0IDY1Ljc4OCwxMDIuMjEyIDY1LjcwMSwxMDIuMjEyIEM2NS42MDYsMTAyLjIxMiA2NS41MTEsMTAyLjIxNSA2NS40MTYsMTAyLjIxOSBDNjUuMTk1LDEwMi4yMjkgNjQuOTc0LDEwMi4yMzUgNjQuNzU0LDEwMi4yMzUgQzY0LjMzMSwxMDIuMjM1IDYzLjkxMSwxMDIuMjE2IDYzLjQ5OCwxMDIuMTc4IEM2MS44NDMsMTAyLjAyNSA2MC4yOTgsMTAxLjU3OCA1OS4wOTQsMTAwLjg4MiBMMTIuNTE4LDczLjk5MiBMMTIuNTIzLDc0LjAwNCBMMi4yNDUsNTUuMjU0IEMxLjI0NCw1My40MjcgMi4wMDQsNTEuMDM4IDMuOTQzLDQ5LjkxOCBMNTkuOTU0LDE3LjU3MyBDNjAuNjI2LDE3LjE4NSA2MS4zNSwxNy4wMDEgNjIuMDUzLDE3LjAwMSBDNjMuMzc5LDE3LjAwMSA2NC42MjUsMTcuNjYgNjUuMjgsMTguODU0IEw2NS4yODUsMTguODUxIEw2NS41MTIsMTkuMjY0IEw2NS41MDYsMTkuMjY4IEM2NS45MDksMjAuMDAzIDY2LjQwNSwyMC42OCA2Ni45ODMsMjEuMjg2IEw2Ny4yNiwyMS41NTYgQzY5LjE3NCwyMy40MDYgNzEuNzI4LDI0LjM1NyA3NC4zNzMsMjQuMzU3IEM3Ni4zMjIsMjQuMzU3IDc4LjMyMSwyMy44NCA4MC4xNDgsMjIuNzg1IEM4MC4xNjEsMjIuNzg1IDg3LjQ2NywxOC41NjYgODcuNDY3LDE4LjU2NiBDODguMTM5LDE4LjE3OCA4OC44NjMsMTcuOTk0IDg5LjU2NiwxNy45OTQgQzkwLjg5MiwxNy45OTQgOTIuMTM4LDE4LjY1MiA5Mi43OTIsMTkuODQ3IEw5Ni4wNDIsMjUuNzc1IEw5Ni4wNjQsMjUuNzU3IEwxMDIuODQ5LDI5LjY3NCBMMTAyLjc0NCwyOS40OTIgTDE0OS42MjUsMi41MjcgTTE0OS42MjUsMC44OTIgQzE0OS4zNDMsMC44OTIgMTQ5LjA2MiwwLjk2NSAxNDguODEsMS4xMSBMMTAyLjY0MSwyNy42NjYgTDk3LjIzMSwyNC41NDIgTDk0LjIyNiwxOS4wNjEgQzkzLjMxMywxNy4zOTQgOTEuNTI3LDE2LjM1OSA4OS41NjYsMTYuMzU4IEM4OC41NTUsMTYuMzU4IDg3LjU0NiwxNi42MzIgODYuNjQ5LDE3LjE1IEM4My44NzgsMTguNzUgNzkuNjg3LDIxLjE2OSA3OS4zNzQsMjEuMzQ1IEM3OS4zNTksMjEuMzUzIDc5LjM0NSwyMS4zNjEgNzkuMzMsMjEuMzY5IEM3Ny43OTgsMjIuMjU0IDc2LjA4NCwyMi43MjIgNzQuMzczLDIyLjcyMiBDNzIuMDgxLDIyLjcyMiA2OS45NTksMjEuODkgNjguMzk3LDIwLjM4IEw2OC4xNDUsMjAuMTM1IEM2Ny43MDYsMTkuNjcyIDY3LjMyMywxOS4xNTYgNjcuMDA2LDE4LjYwMSBDNjYuOTg4LDE4LjU1OSA2Ni45NjgsMTguNTE5IDY2Ljk0NiwxOC40NzkgTDY2LjcxOSwxOC4wNjUgQzY2LjY5LDE4LjAxMiA2Ni42NTgsMTcuOTYgNjYuNjI0LDE3LjkxMSBDNjUuNjg2LDE2LjMzNyA2My45NTEsMTUuMzY2IDYyLjA1MywxNS4zNjYgQzYxLjA0MiwxNS4zNjYgNjAuMDMzLDE1LjY0IDU5LjEzNiwxNi4xNTggTDMuMTI1LDQ4LjUwMiBDMC40MjYsNTAuMDYxIC0wLjYxMyw1My40NDIgMC44MTEsNTYuMDQgTDExLjA4OSw3NC43OSBDMTEuMjY2LDc1LjExMyAxMS41MzcsNzUuMzUzIDExLjg1LDc1LjQ5NCBMNTguMjc2LDEwMi4yOTggQzU5LjY3OSwxMDMuMTA4IDYxLjQzMywxMDMuNjMgNjMuMzQ4LDEwMy44MDYgQzYzLjgxMiwxMDMuODQ4IDY0LjI4NSwxMDMuODcgNjQuNzU0LDEwMy44NyBDNjUsMTAzLjg3IDY1LjI0OSwxMDMuODY0IDY1LjQ5NCwxMDMuODUyIEM2NS41NjMsMTAzLjg0OSA2NS42MzIsMTAzLjg0NyA2NS43MDEsMTAzLjg0NyBDNjUuNzY0LDEwMy44NDcgNjUuODI4LDEwMy44NDkgNjUuODksMTAzLjg1MiBDNjUuOTg2LDEwMy44NTYgNjYuMDgsMTAzLjg2MyA2Ni4xNzMsMTAzLjg3NCBDNjYuMjgyLDEwNS40NjcgNjcuMzMyLDEwNy4xOTcgNjguNzAyLDEwNy45ODggTDExMS4xNzQsMTMyLjUxIEMxMTEuNjk4LDEzMi44MTIgMTEyLjIzMiwxMzIuOTY1IDExMi43NjQsMTMyLjk2NSBDMTE0LjI2MSwxMzIuOTY1IDExNS4zNDcsMTMxLjc2NSAxMTUuMzQ3LDEzMC4xMTMgTDExNS4zNDcsMTAzLjU1MSBMMTIyLjQ1OCw5OS40NDYgQzEyMi44MTksOTkuMjM3IDEyMy4wODcsOTguODk4IDEyMy4yMDcsOTguNDk4IEwxMjcuODY1LDgyLjkwNSBDMTMyLjI3OSw4My43MDIgMTM2LjU1Nyw4NC43NTMgMTQwLjYwNyw4Ni4wMzMgTDE0MS4xNCw4Ni44NjIgQzE0MS40NTEsODcuMzQ2IDE0MS45NzcsODcuNjEzIDE0Mi41MTYsODcuNjEzIEMxNDIuNzk0LDg3LjYxMyAxNDMuMDc2LDg3LjU0MiAxNDMuMzMzLDg3LjM5MyBMMTY5Ljg2NSw3Mi4wNzYgTDE5Myw4NS40MzMgQzE5My41MjMsODUuNzM1IDE5NC4wNTgsODUuODg4IDE5NC41OSw4NS44ODggQzE5Ni4wODcsODUuODg4IDE5Ny4xNzMsODQuNjg5IDE5Ny4xNzMsODMuMDM2IEwxOTcuMTczLDI5LjAzNSBDMTk3LjE3MywyOC40NTEgMTk2Ljg2MSwyNy45MTEgMTk2LjM1NSwyNy42MTkgQzE5Ni4zNTUsMjcuNjE5IDE3MS44NDMsMTMuNDY3IDE3MC4zODUsMTIuNjI2IEMxNzAuMTMyLDEyLjQ4IDE2OS44NSwxMi40MDcgMTY5LjU2OCwxMi40MDcgQzE2OS4yODUsMTIuNDA3IDE2OS4wMDIsMTIuNDgxIDE2OC43NDksMTIuNjI3IEMxNjguMTQzLDEyLjk3OCAxNjUuNzU2LDE0LjM1NyAxNjQuNDI0LDE1LjEyNSBMMTU5LjYxNSwxMC44NyBDMTU4Ljc5NiwxMC4xNDUgMTU4LjE1NCw4LjkzNyAxNTguMDU0LDcuOTM0IEMxNTguMDQ1LDcuODM3IDE1OC4wMzQsNy43MzkgMTU4LjAyMSw3LjY0IEMxNTguMDA1LDcuNTIzIDE1Ny45OTgsNy40MSAxNTcuOTk4LDcuMzA0IEwxNTcuOTk4LDYuNDE4IEMxNTcuOTk4LDUuODM0IDE1Ny42ODYsNS4yOTUgMTU3LjE4MSw1LjAwMiBDMTU2LjYyNCw0LjY4IDE1MC40NDIsMS4xMTEgMTUwLjQ0MiwxLjExMSBDMTUwLjE4OSwwLjk2NSAxNDkuOTA3LDAuODkyIDE0OS42MjUsMC44OTIiIGlkPSJGaWxsLTEiIGZpbGw9IiM0NTVBNjQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTYuMDI3LDI1LjYzNiBMMTQyLjYwMyw1Mi41MjcgQzE0My44MDcsNTMuMjIyIDE0NC41ODIsNTQuMTE0IDE0NC44NDUsNTUuMDY4IEwxNDQuODM1LDU1LjA3NSBMNjMuNDYxLDEwMi4wNTcgTDYzLjQ2LDEwMi4wNTcgQzYxLjgwNiwxMDEuOTA1IDYwLjI2MSwxMDEuNDU3IDU5LjA1NywxMDAuNzYyIEwxMi40ODEsNzMuODcxIEw5Ni4wMjcsMjUuNjM2IiBpZD0iRmlsbC0yIiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTYzLjQ2MSwxMDIuMTc0IEM2My40NTMsMTAyLjE3NCA2My40NDYsMTAyLjE3NCA2My40MzksMTAyLjE3MiBDNjEuNzQ2LDEwMi4wMTYgNjAuMjExLDEwMS41NjMgNTguOTk4LDEwMC44NjMgTDEyLjQyMiw3My45NzMgQzEyLjM4Niw3My45NTIgMTIuMzY0LDczLjkxNCAxMi4zNjQsNzMuODcxIEMxMi4zNjQsNzMuODMgMTIuMzg2LDczLjc5MSAxMi40MjIsNzMuNzcgTDk1Ljk2OCwyNS41MzUgQzk2LjAwNCwyNS41MTQgOTYuMDQ5LDI1LjUxNCA5Ni4wODUsMjUuNTM1IEwxNDIuNjYxLDUyLjQyNiBDMTQzLjg4OCw1My4xMzQgMTQ0LjY4Miw1NC4wMzggMTQ0Ljk1Nyw1NS4wMzcgQzE0NC45Nyw1NS4wODMgMTQ0Ljk1Myw1NS4xMzMgMTQ0LjkxNSw1NS4xNjEgQzE0NC45MTEsNTUuMTY1IDE0NC44OTgsNTUuMTc0IDE0NC44OTQsNTUuMTc3IEw2My41MTksMTAyLjE1OCBDNjMuNTAxLDEwMi4xNjkgNjMuNDgxLDEwMi4xNzQgNjMuNDYxLDEwMi4xNzQgTDYzLjQ2MSwxMDIuMTc0IFogTTEyLjcxNCw3My44NzEgTDU5LjExNSwxMDAuNjYxIEM2MC4yOTMsMTAxLjM0MSA2MS43ODYsMTAxLjc4MiA2My40MzUsMTAxLjkzNyBMMTQ0LjcwNyw1NS4wMTUgQzE0NC40MjgsNTQuMTA4IDE0My42ODIsNTMuMjg1IDE0Mi41NDQsNTIuNjI4IEw5Ni4wMjcsMjUuNzcxIEwxMi43MTQsNzMuODcxIEwxMi43MTQsNzMuODcxIFoiIGlkPSJGaWxsLTMiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTQ4LjMyNyw1OC40NzEgQzE0OC4xNDUsNTguNDggMTQ3Ljk2Miw1OC40OCAxNDcuNzgxLDU4LjQ3MiBDMTQ1Ljg4Nyw1OC4zODkgMTQ0LjQ3OSw1Ny40MzQgMTQ0LjYzNiw1Ni4zNCBDMTQ0LjY4OSw1NS45NjcgMTQ0LjY2NCw1NS41OTcgMTQ0LjU2NCw1NS4yMzUgTDYzLjQ2MSwxMDIuMDU3IEM2NC4wODksMTAyLjExNSA2NC43MzMsMTAyLjEzIDY1LjM3OSwxMDIuMDk5IEM2NS41NjEsMTAyLjA5IDY1Ljc0MywxMDIuMDkgNjUuOTI1LDEwMi4wOTggQzY3LjgxOSwxMDIuMTgxIDY5LjIyNywxMDMuMTM2IDY5LjA3LDEwNC4yMyBMMTQ4LjMyNyw1OC40NzEiIGlkPSJGaWxsLTQiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNjkuMDcsMTA0LjM0NyBDNjkuMDQ4LDEwNC4zNDcgNjkuMDI1LDEwNC4zNCA2OS4wMDUsMTA0LjMyNyBDNjguOTY4LDEwNC4zMDEgNjguOTQ4LDEwNC4yNTcgNjguOTU1LDEwNC4yMTMgQzY5LDEwMy44OTYgNjguODk4LDEwMy41NzYgNjguNjU4LDEwMy4yODggQzY4LjE1MywxMDIuNjc4IDY3LjEwMywxMDIuMjY2IDY1LjkyLDEwMi4yMTQgQzY1Ljc0MiwxMDIuMjA2IDY1LjU2MywxMDIuMjA3IDY1LjM4NSwxMDIuMjE1IEM2NC43NDIsMTAyLjI0NiA2NC4wODcsMTAyLjIzMiA2My40NSwxMDIuMTc0IEM2My4zOTksMTAyLjE2OSA2My4zNTgsMTAyLjEzMiA2My4zNDcsMTAyLjA4MiBDNjMuMzM2LDEwMi4wMzMgNjMuMzU4LDEwMS45ODEgNjMuNDAyLDEwMS45NTYgTDE0NC41MDYsNTUuMTM0IEMxNDQuNTM3LDU1LjExNiAxNDQuNTc1LDU1LjExMyAxNDQuNjA5LDU1LjEyNyBDMTQ0LjY0Miw1NS4xNDEgMTQ0LjY2OCw1NS4xNyAxNDQuNjc3LDU1LjIwNCBDMTQ0Ljc4MSw1NS41ODUgMTQ0LjgwNiw1NS45NzIgMTQ0Ljc1MSw1Ni4zNTcgQzE0NC43MDYsNTYuNjczIDE0NC44MDgsNTYuOTk0IDE0NS4wNDcsNTcuMjgyIEMxNDUuNTUzLDU3Ljg5MiAxNDYuNjAyLDU4LjMwMyAxNDcuNzg2LDU4LjM1NSBDMTQ3Ljk2NCw1OC4zNjMgMTQ4LjE0Myw1OC4zNjMgMTQ4LjMyMSw1OC4zNTQgQzE0OC4zNzcsNTguMzUyIDE0OC40MjQsNTguMzg3IDE0OC40MzksNTguNDM4IEMxNDguNDU0LDU4LjQ5IDE0OC40MzIsNTguNTQ1IDE0OC4zODUsNTguNTcyIEw2OS4xMjksMTA0LjMzMSBDNjkuMTExLDEwNC4zNDIgNjkuMDksMTA0LjM0NyA2OS4wNywxMDQuMzQ3IEw2OS4wNywxMDQuMzQ3IFogTTY1LjY2NSwxMDEuOTc1IEM2NS43NTQsMTAxLjk3NSA2NS44NDIsMTAxLjk3NyA2NS45MywxMDEuOTgxIEM2Ny4xOTYsMTAyLjAzNyA2OC4yODMsMTAyLjQ2OSA2OC44MzgsMTAzLjEzOSBDNjkuMDY1LDEwMy40MTMgNjkuMTg4LDEwMy43MTQgNjkuMTk4LDEwNC4wMjEgTDE0Ny44ODMsNTguNTkyIEMxNDcuODQ3LDU4LjU5MiAxNDcuODExLDU4LjU5MSAxNDcuNzc2LDU4LjU4OSBDMTQ2LjUwOSw1OC41MzMgMTQ1LjQyMiw1OC4xIDE0NC44NjcsNTcuNDMxIEMxNDQuNTg1LDU3LjA5MSAxNDQuNDY1LDU2LjcwNyAxNDQuNTIsNTYuMzI0IEMxNDQuNTYzLDU2LjAyMSAxNDQuNTUyLDU1LjcxNiAxNDQuNDg4LDU1LjQxNCBMNjMuODQ2LDEwMS45NyBDNjQuMzUzLDEwMi4wMDIgNjQuODY3LDEwMi4wMDYgNjUuMzc0LDEwMS45ODIgQzY1LjQ3MSwxMDEuOTc3IDY1LjU2OCwxMDEuOTc1IDY1LjY2NSwxMDEuOTc1IEw2NS42NjUsMTAxLjk3NSBaIiBpZD0iRmlsbC01IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIuMjA4LDU1LjEzNCBDMS4yMDcsNTMuMzA3IDEuOTY3LDUwLjkxNyAzLjkwNiw0OS43OTcgTDU5LjkxNywxNy40NTMgQzYxLjg1NiwxNi4zMzMgNjQuMjQxLDE2LjkwNyA2NS4yNDMsMTguNzM0IEw2NS40NzUsMTkuMTQ0IEM2NS44NzIsMTkuODgyIDY2LjM2OCwyMC41NiA2Ni45NDUsMjEuMTY1IEw2Ny4yMjMsMjEuNDM1IEM3MC41NDgsMjQuNjQ5IDc1LjgwNiwyNS4xNTEgODAuMTExLDIyLjY2NSBMODcuNDMsMTguNDQ1IEM4OS4zNywxNy4zMjYgOTEuNzU0LDE3Ljg5OSA5Mi43NTUsMTkuNzI3IEw5Ni4wMDUsMjUuNjU1IEwxMi40ODYsNzMuODg0IEwyLjIwOCw1NS4xMzQgWiIgaWQ9IkZpbGwtNiIgZmlsbD0iI0ZBRkFGQSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi40ODYsNzQuMDAxIEMxMi40NzYsNzQuMDAxIDEyLjQ2NSw3My45OTkgMTIuNDU1LDczLjk5NiBDMTIuNDI0LDczLjk4OCAxMi4zOTksNzMuOTY3IDEyLjM4NCw3My45NCBMMi4xMDYsNTUuMTkgQzEuMDc1LDUzLjMxIDEuODU3LDUwLjg0NSAzLjg0OCw0OS42OTYgTDU5Ljg1OCwxNy4zNTIgQzYwLjUyNSwxNi45NjcgNjEuMjcxLDE2Ljc2NCA2Mi4wMTYsMTYuNzY0IEM2My40MzEsMTYuNzY0IDY0LjY2NiwxNy40NjYgNjUuMzI3LDE4LjY0NiBDNjUuMzM3LDE4LjY1NCA2NS4zNDUsMTguNjYzIDY1LjM1MSwxOC42NzQgTDY1LjU3OCwxOS4wODggQzY1LjU4NCwxOS4xIDY1LjU4OSwxOS4xMTIgNjUuNTkxLDE5LjEyNiBDNjUuOTg1LDE5LjgzOCA2Ni40NjksMjAuNDk3IDY3LjAzLDIxLjA4NSBMNjcuMzA1LDIxLjM1MSBDNjkuMTUxLDIzLjEzNyA3MS42NDksMjQuMTIgNzQuMzM2LDI0LjEyIEM3Ni4zMTMsMjQuMTIgNzguMjksMjMuNTgyIDgwLjA1MywyMi41NjMgQzgwLjA2NCwyMi41NTcgODAuMDc2LDIyLjU1MyA4MC4wODgsMjIuNTUgTDg3LjM3MiwxOC4zNDQgQzg4LjAzOCwxNy45NTkgODguNzg0LDE3Ljc1NiA4OS41MjksMTcuNzU2IEM5MC45NTYsMTcuNzU2IDkyLjIwMSwxOC40NzIgOTIuODU4LDE5LjY3IEw5Ni4xMDcsMjUuNTk5IEM5Ni4xMzgsMjUuNjU0IDk2LjExOCwyNS43MjQgOTYuMDYzLDI1Ljc1NiBMMTIuNTQ1LDczLjk4NSBDMTIuNTI2LDczLjk5NiAxMi41MDYsNzQuMDAxIDEyLjQ4Niw3NC4wMDEgTDEyLjQ4Niw3NC4wMDEgWiBNNjIuMDE2LDE2Ljk5NyBDNjEuMzEyLDE2Ljk5NyA2MC42MDYsMTcuMTkgNTkuOTc1LDE3LjU1NCBMMy45NjUsNDkuODk5IEMyLjA4Myw1MC45ODUgMS4zNDEsNTMuMzA4IDIuMzEsNTUuMDc4IEwxMi41MzEsNzMuNzIzIEw5NS44NDgsMjUuNjExIEw5Mi42NTMsMTkuNzgyIEM5Mi4wMzgsMTguNjYgOTAuODcsMTcuOTkgODkuNTI5LDE3Ljk5IEM4OC44MjUsMTcuOTkgODguMTE5LDE4LjE4MiA4Ny40ODksMTguNTQ3IEw4MC4xNzIsMjIuNzcyIEM4MC4xNjEsMjIuNzc4IDgwLjE0OSwyMi43ODIgODAuMTM3LDIyLjc4NSBDNzguMzQ2LDIzLjgxMSA3Ni4zNDEsMjQuMzU0IDc0LjMzNiwyNC4zNTQgQzcxLjU4OCwyNC4zNTQgNjkuMDMzLDIzLjM0NyA2Ny4xNDIsMjEuNTE5IEw2Ni44NjQsMjEuMjQ5IEM2Ni4yNzcsMjAuNjM0IDY1Ljc3NCwxOS45NDcgNjUuMzY3LDE5LjIwMyBDNjUuMzYsMTkuMTkyIDY1LjM1NiwxOS4xNzkgNjUuMzU0LDE5LjE2NiBMNjUuMTYzLDE4LjgxOSBDNjUuMTU0LDE4LjgxMSA2NS4xNDYsMTguODAxIDY1LjE0LDE4Ljc5IEM2NC41MjUsMTcuNjY3IDYzLjM1NywxNi45OTcgNjIuMDE2LDE2Ljk5NyBMNjIuMDE2LDE2Ljk5NyBaIiBpZD0iRmlsbC03IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQyLjQzNCw0OC44MDggTDQyLjQzNCw0OC44MDggQzM5LjkyNCw0OC44MDcgMzcuNzM3LDQ3LjU1IDM2LjU4Miw0NS40NDMgQzM0Ljc3MSw0Mi4xMzkgMzYuMTQ0LDM3LjgwOSAzOS42NDEsMzUuNzg5IEw1MS45MzIsMjguNjkxIEM1My4xMDMsMjguMDE1IDU0LjQxMywyNy42NTggNTUuNzIxLDI3LjY1OCBDNTguMjMxLDI3LjY1OCA2MC40MTgsMjguOTE2IDYxLjU3MywzMS4wMjMgQzYzLjM4NCwzNC4zMjcgNjIuMDEyLDM4LjY1NyA1OC41MTQsNDAuNjc3IEw0Ni4yMjMsNDcuNzc1IEM0NS4wNTMsNDguNDUgNDMuNzQyLDQ4LjgwOCA0Mi40MzQsNDguODA4IEw0Mi40MzQsNDguODA4IFogTTU1LjcyMSwyOC4xMjUgQzU0LjQ5NSwyOC4xMjUgNTMuMjY1LDI4LjQ2MSA1Mi4xNjYsMjkuMDk2IEwzOS44NzUsMzYuMTk0IEMzNi41OTYsMzguMDg3IDM1LjMwMiw0Mi4xMzYgMzYuOTkyLDQ1LjIxOCBDMzguMDYzLDQ3LjE3MyA0MC4wOTgsNDguMzQgNDIuNDM0LDQ4LjM0IEM0My42NjEsNDguMzQgNDQuODksNDguMDA1IDQ1Ljk5LDQ3LjM3IEw1OC4yODEsNDAuMjcyIEM2MS41NiwzOC4zNzkgNjIuODUzLDM0LjMzIDYxLjE2NCwzMS4yNDggQzYwLjA5MiwyOS4yOTMgNTguMDU4LDI4LjEyNSA1NS43MjEsMjguMTI1IEw1NS43MjEsMjguMTI1IFoiIGlkPSJGaWxsLTgiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTQ5LjU4OCwyLjQwNyBDMTQ5LjU4OCwyLjQwNyAxNTUuNzY4LDUuOTc1IDE1Ni4zMjUsNi4yOTcgTDE1Ni4zMjUsNy4xODQgQzE1Ni4zMjUsNy4zNiAxNTYuMzM4LDcuNTQ0IDE1Ni4zNjIsNy43MzMgQzE1Ni4zNzMsNy44MTQgMTU2LjM4Miw3Ljg5NCAxNTYuMzksNy45NzUgQzE1Ni41Myw5LjM5IDE1Ny4zNjMsMTAuOTczIDE1OC40OTUsMTEuOTc0IEwxNjUuODkxLDE4LjUxOSBDMTY2LjA2OCwxOC42NzUgMTY2LjI0OSwxOC44MTQgMTY2LjQzMiwxOC45MzQgQzE2OC4wMTEsMTkuOTc0IDE2OS4zODIsMTkuNCAxNjkuNDk0LDE3LjY1MiBDMTY5LjU0MywxNi44NjggMTY5LjU1MSwxNi4wNTcgMTY5LjUxNywxNS4yMjMgTDE2OS41MTQsMTUuMDYzIEwxNjkuNTE0LDEzLjkxMiBDMTcwLjc4LDE0LjY0MiAxOTUuNTAxLDI4LjkxNSAxOTUuNTAxLDI4LjkxNSBMMTk1LjUwMSw4Mi45MTUgQzE5NS41MDEsODQuMDA1IDE5NC43MzEsODQuNDQ1IDE5My43ODEsODMuODk3IEwxNTEuMzA4LDU5LjM3NCBDMTUwLjM1OCw1OC44MjYgMTQ5LjU4OCw1Ny40OTcgMTQ5LjU4OCw1Ni40MDggTDE0OS41ODgsMjIuMzc1IiBpZD0iRmlsbC05IiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE5NC41NTMsODQuMjUgQzE5NC4yOTYsODQuMjUgMTk0LjAxMyw4NC4xNjUgMTkzLjcyMiw4My45OTcgTDE1MS4yNSw1OS40NzYgQzE1MC4yNjksNTguOTA5IDE0OS40NzEsNTcuNTMzIDE0OS40NzEsNTYuNDA4IEwxNDkuNDcxLDIyLjM3NSBMMTQ5LjcwNSwyMi4zNzUgTDE0OS43MDUsNTYuNDA4IEMxNDkuNzA1LDU3LjQ1OSAxNTAuNDUsNTguNzQ0IDE1MS4zNjYsNTkuMjc0IEwxOTMuODM5LDgzLjc5NSBDMTk0LjI2Myw4NC4wNCAxOTQuNjU1LDg0LjA4MyAxOTQuOTQyLDgzLjkxNyBDMTk1LjIyNyw4My43NTMgMTk1LjM4NCw4My4zOTcgMTk1LjM4NCw4Mi45MTUgTDE5NS4zODQsMjguOTgyIEMxOTQuMTAyLDI4LjI0MiAxNzIuMTA0LDE1LjU0MiAxNjkuNjMxLDE0LjExNCBMMTY5LjYzNCwxNS4yMiBDMTY5LjY2OCwxNi4wNTIgMTY5LjY2LDE2Ljg3NCAxNjkuNjEsMTcuNjU5IEMxNjkuNTU2LDE4LjUwMyAxNjkuMjE0LDE5LjEyMyAxNjguNjQ3LDE5LjQwNSBDMTY4LjAyOCwxOS43MTQgMTY3LjE5NywxOS41NzggMTY2LjM2NywxOS4wMzIgQzE2Ni4xODEsMTguOTA5IDE2NS45OTUsMTguNzY2IDE2NS44MTQsMTguNjA2IEwxNTguNDE3LDEyLjA2MiBDMTU3LjI1OSwxMS4wMzYgMTU2LjQxOCw5LjQzNyAxNTYuMjc0LDcuOTg2IEMxNTYuMjY2LDcuOTA3IDE1Ni4yNTcsNy44MjcgMTU2LjI0Nyw3Ljc0OCBDMTU2LjIyMSw3LjU1NSAxNTYuMjA5LDcuMzY1IDE1Ni4yMDksNy4xODQgTDE1Ni4yMDksNi4zNjQgQzE1NS4zNzUsNS44ODMgMTQ5LjUyOSwyLjUwOCAxNDkuNTI5LDIuNTA4IEwxNDkuNjQ2LDIuMzA2IEMxNDkuNjQ2LDIuMzA2IDE1NS44MjcsNS44NzQgMTU2LjM4NCw2LjE5NiBMMTU2LjQ0Miw2LjIzIEwxNTYuNDQyLDcuMTg0IEMxNTYuNDQyLDcuMzU1IDE1Ni40NTQsNy41MzUgMTU2LjQ3OCw3LjcxNyBDMTU2LjQ4OSw3LjggMTU2LjQ5OSw3Ljg4MiAxNTYuNTA3LDcuOTYzIEMxNTYuNjQ1LDkuMzU4IDE1Ny40NTUsMTAuODk4IDE1OC41NzIsMTEuODg2IEwxNjUuOTY5LDE4LjQzMSBDMTY2LjE0MiwxOC41ODQgMTY2LjMxOSwxOC43MiAxNjYuNDk2LDE4LjgzNyBDMTY3LjI1NCwxOS4zMzYgMTY4LDE5LjQ2NyAxNjguNTQzLDE5LjE5NiBDMTY5LjAzMywxOC45NTMgMTY5LjMyOSwxOC40MDEgMTY5LjM3NywxNy42NDUgQzE2OS40MjcsMTYuODY3IDE2OS40MzQsMTYuMDU0IDE2OS40MDEsMTUuMjI4IEwxNjkuMzk3LDE1LjA2NSBMMTY5LjM5NywxMy43MSBMMTY5LjU3MiwxMy44MSBDMTcwLjgzOSwxNC41NDEgMTk1LjU1OSwyOC44MTQgMTk1LjU1OSwyOC44MTQgTDE5NS42MTgsMjguODQ3IEwxOTUuNjE4LDgyLjkxNSBDMTk1LjYxOCw4My40ODQgMTk1LjQyLDgzLjkxMSAxOTUuMDU5LDg0LjExOSBDMTk0LjkwOCw4NC4yMDYgMTk0LjczNyw4NC4yNSAxOTQuNTUzLDg0LjI1IiBpZD0iRmlsbC0xMCIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDUuNjg1LDU2LjE2MSBMMTY5LjgsNzAuMDgzIEwxNDMuODIyLDg1LjA4MSBMMTQyLjM2LDg0Ljc3NCBDMTM1LjgyNiw4Mi42MDQgMTI4LjczMiw4MS4wNDYgMTIxLjM0MSw4MC4xNTggQzExNi45NzYsNzkuNjM0IDExMi42NzgsODEuMjU0IDExMS43NDMsODMuNzc4IEMxMTEuNTA2LDg0LjQxNCAxMTEuNTAzLDg1LjA3MSAxMTEuNzMyLDg1LjcwNiBDMTEzLjI3LDg5Ljk3MyAxMTUuOTY4LDk0LjA2OSAxMTkuNzI3LDk3Ljg0MSBMMTIwLjI1OSw5OC42ODYgQzEyMC4yNiw5OC42ODUgOTQuMjgyLDExMy42ODMgOTQuMjgyLDExMy42ODMgTDcwLjE2Nyw5OS43NjEgTDE0NS42ODUsNTYuMTYxIiBpZD0iRmlsbC0xMSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik05NC4yODIsMTEzLjgxOCBMOTQuMjIzLDExMy43ODUgTDY5LjkzMyw5OS43NjEgTDcwLjEwOCw5OS42NiBMMTQ1LjY4NSw1Ni4wMjYgTDE0NS43NDMsNTYuMDU5IEwxNzAuMDMzLDcwLjA4MyBMMTQzLjg0Miw4NS4yMDUgTDE0My43OTcsODUuMTk1IEMxNDMuNzcyLDg1LjE5IDE0Mi4zMzYsODQuODg4IDE0Mi4zMzYsODQuODg4IEMxMzUuNzg3LDgyLjcxNCAxMjguNzIzLDgxLjE2MyAxMjEuMzI3LDgwLjI3NCBDMTIwLjc4OCw4MC4yMDkgMTIwLjIzNiw4MC4xNzcgMTE5LjY4OSw4MC4xNzcgQzExNS45MzEsODAuMTc3IDExMi42MzUsODEuNzA4IDExMS44NTIsODMuODE5IEMxMTEuNjI0LDg0LjQzMiAxMTEuNjIxLDg1LjA1MyAxMTEuODQyLDg1LjY2NyBDMTEzLjM3Nyw4OS45MjUgMTE2LjA1OCw5My45OTMgMTE5LjgxLDk3Ljc1OCBMMTE5LjgyNiw5Ny43NzkgTDEyMC4zNTIsOTguNjE0IEMxMjAuMzU0LDk4LjYxNyAxMjAuMzU2LDk4LjYyIDEyMC4zNTgsOTguNjI0IEwxMjAuNDIyLDk4LjcyNiBMMTIwLjMxNyw5OC43ODcgQzEyMC4yNjQsOTguODE4IDk0LjU5OSwxMTMuNjM1IDk0LjM0LDExMy43ODUgTDk0LjI4MiwxMTMuODE4IEw5NC4yODIsMTEzLjgxOCBaIE03MC40MDEsOTkuNzYxIEw5NC4yODIsMTEzLjU0OSBMMTE5LjA4NCw5OS4yMjkgQzExOS42Myw5OC45MTQgMTE5LjkzLDk4Ljc0IDEyMC4xMDEsOTguNjU0IEwxMTkuNjM1LDk3LjkxNCBDMTE1Ljg2NCw5NC4xMjcgMTEzLjE2OCw5MC4wMzMgMTExLjYyMiw4NS43NDYgQzExMS4zODIsODUuMDc5IDExMS4zODYsODQuNDA0IDExMS42MzMsODMuNzM4IEMxMTIuNDQ4LDgxLjUzOSAxMTUuODM2LDc5Ljk0MyAxMTkuNjg5LDc5Ljk0MyBDMTIwLjI0Niw3OS45NDMgMTIwLjgwNiw3OS45NzYgMTIxLjM1NSw4MC4wNDIgQzEyOC43NjcsODAuOTMzIDEzNS44NDYsODIuNDg3IDE0Mi4zOTYsODQuNjYzIEMxNDMuMjMyLDg0LjgzOCAxNDMuNjExLDg0LjkxNyAxNDMuNzg2LDg0Ljk2NyBMMTY5LjU2Niw3MC4wODMgTDE0NS42ODUsNTYuMjk1IEw3MC40MDEsOTkuNzYxIEw3MC40MDEsOTkuNzYxIFoiIGlkPSJGaWxsLTEyIiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2Ny4yMywxOC45NzkgTDE2Ny4yMyw2OS44NSBMMTM5LjkwOSw4NS42MjMgTDEzMy40NDgsNzEuNDU2IEMxMzIuNTM4LDY5LjQ2IDEzMC4wMiw2OS43MTggMTI3LjgyNCw3Mi4wMyBDMTI2Ljc2OSw3My4xNCAxMjUuOTMxLDc0LjU4NSAxMjUuNDk0LDc2LjA0OCBMMTE5LjAzNCw5Ny42NzYgTDkxLjcxMiwxMTMuNDUgTDkxLjcxMiw2Mi41NzkgTDE2Ny4yMywxOC45NzkiIGlkPSJGaWxsLTEzIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTkxLjcxMiwxMTMuNTY3IEM5MS42OTIsMTEzLjU2NyA5MS42NzIsMTEzLjU2MSA5MS42NTMsMTEzLjU1MSBDOTEuNjE4LDExMy41MyA5MS41OTUsMTEzLjQ5MiA5MS41OTUsMTEzLjQ1IEw5MS41OTUsNjIuNTc5IEM5MS41OTUsNjIuNTM3IDkxLjYxOCw2Mi40OTkgOTEuNjUzLDYyLjQ3OCBMMTY3LjE3MiwxOC44NzggQzE2Ny4yMDgsMTguODU3IDE2Ny4yNTIsMTguODU3IDE2Ny4yODgsMTguODc4IEMxNjcuMzI0LDE4Ljg5OSAxNjcuMzQ3LDE4LjkzNyAxNjcuMzQ3LDE4Ljk3OSBMMTY3LjM0Nyw2OS44NSBDMTY3LjM0Nyw2OS44OTEgMTY3LjMyNCw2OS45MyAxNjcuMjg4LDY5Ljk1IEwxMzkuOTY3LDg1LjcyNSBDMTM5LjkzOSw4NS43NDEgMTM5LjkwNSw4NS43NDUgMTM5Ljg3Myw4NS43MzUgQzEzOS44NDIsODUuNzI1IDEzOS44MTYsODUuNzAyIDEzOS44MDIsODUuNjcyIEwxMzMuMzQyLDcxLjUwNCBDMTMyLjk2Nyw3MC42ODIgMTMyLjI4LDcwLjIyOSAxMzEuNDA4LDcwLjIyOSBDMTMwLjMxOSw3MC4yMjkgMTI5LjA0NCw3MC45MTUgMTI3LjkwOCw3Mi4xMSBDMTI2Ljg3NCw3My4yIDEyNi4wMzQsNzQuNjQ3IDEyNS42MDYsNzYuMDgyIEwxMTkuMTQ2LDk3LjcwOSBDMTE5LjEzNyw5Ny43MzggMTE5LjExOCw5Ny43NjIgMTE5LjA5Miw5Ny43NzcgTDkxLjc3LDExMy41NTEgQzkxLjc1MiwxMTMuNTYxIDkxLjczMiwxMTMuNTY3IDkxLjcxMiwxMTMuNTY3IEw5MS43MTIsMTEzLjU2NyBaIE05MS44MjksNjIuNjQ3IEw5MS44MjksMTEzLjI0OCBMMTE4LjkzNSw5Ny41OTggTDEyNS4zODIsNzYuMDE1IEMxMjUuODI3LDc0LjUyNSAxMjYuNjY0LDczLjA4MSAxMjcuNzM5LDcxLjk1IEMxMjguOTE5LDcwLjcwOCAxMzAuMjU2LDY5Ljk5NiAxMzEuNDA4LDY5Ljk5NiBDMTMyLjM3Nyw2OS45OTYgMTMzLjEzOSw3MC40OTcgMTMzLjU1NCw3MS40MDcgTDEzOS45NjEsODUuNDU4IEwxNjcuMTEzLDY5Ljc4MiBMMTY3LjExMywxOS4xODEgTDkxLjgyOSw2Mi42NDcgTDkxLjgyOSw2Mi42NDcgWiIgaWQ9IkZpbGwtMTQiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTY4LjU0MywxOS4yMTMgTDE2OC41NDMsNzAuMDgzIEwxNDEuMjIxLDg1Ljg1NyBMMTM0Ljc2MSw3MS42ODkgQzEzMy44NTEsNjkuNjk0IDEzMS4zMzMsNjkuOTUxIDEyOS4xMzcsNzIuMjYzIEMxMjguMDgyLDczLjM3NCAxMjcuMjQ0LDc0LjgxOSAxMjYuODA3LDc2LjI4MiBMMTIwLjM0Niw5Ny45MDkgTDkzLjAyNSwxMTMuNjgzIEw5My4wMjUsNjIuODEzIEwxNjguNTQzLDE5LjIxMyIgaWQ9IkZpbGwtMTUiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTMuMDI1LDExMy44IEM5My4wMDUsMTEzLjggOTIuOTg0LDExMy43OTUgOTIuOTY2LDExMy43ODUgQzkyLjkzMSwxMTMuNzY0IDkyLjkwOCwxMTMuNzI1IDkyLjkwOCwxMTMuNjg0IEw5Mi45MDgsNjIuODEzIEM5Mi45MDgsNjIuNzcxIDkyLjkzMSw2Mi43MzMgOTIuOTY2LDYyLjcxMiBMMTY4LjQ4NCwxOS4xMTIgQzE2OC41MiwxOS4wOSAxNjguNTY1LDE5LjA5IDE2OC42MDEsMTkuMTEyIEMxNjguNjM3LDE5LjEzMiAxNjguNjYsMTkuMTcxIDE2OC42NiwxOS4yMTIgTDE2OC42Niw3MC4wODMgQzE2OC42Niw3MC4xMjUgMTY4LjYzNyw3MC4xNjQgMTY4LjYwMSw3MC4xODQgTDE0MS4yOCw4NS45NTggQzE0MS4yNTEsODUuOTc1IDE0MS4yMTcsODUuOTc5IDE0MS4xODYsODUuOTY4IEMxNDEuMTU0LDg1Ljk1OCAxNDEuMTI5LDg1LjkzNiAxNDEuMTE1LDg1LjkwNiBMMTM0LjY1NSw3MS43MzggQzEzNC4yOCw3MC45MTUgMTMzLjU5Myw3MC40NjMgMTMyLjcyLDcwLjQ2MyBDMTMxLjYzMiw3MC40NjMgMTMwLjM1Nyw3MS4xNDggMTI5LjIyMSw3Mi4zNDQgQzEyOC4xODYsNzMuNDMzIDEyNy4zNDcsNzQuODgxIDEyNi45MTksNzYuMzE1IEwxMjAuNDU4LDk3Ljk0MyBDMTIwLjQ1LDk3Ljk3MiAxMjAuNDMxLDk3Ljk5NiAxMjAuNDA1LDk4LjAxIEw5My4wODMsMTEzLjc4NSBDOTMuMDY1LDExMy43OTUgOTMuMDQ1LDExMy44IDkzLjAyNSwxMTMuOCBMOTMuMDI1LDExMy44IFogTTkzLjE0Miw2Mi44ODEgTDkzLjE0MiwxMTMuNDgxIEwxMjAuMjQ4LDk3LjgzMiBMMTI2LjY5NSw3Ni4yNDggQzEyNy4xNCw3NC43NTggMTI3Ljk3Nyw3My4zMTUgMTI5LjA1Miw3Mi4xODMgQzEzMC4yMzEsNzAuOTQyIDEzMS41NjgsNzAuMjI5IDEzMi43Miw3MC4yMjkgQzEzMy42ODksNzAuMjI5IDEzNC40NTIsNzAuNzMxIDEzNC44NjcsNzEuNjQxIEwxNDEuMjc0LDg1LjY5MiBMMTY4LjQyNiw3MC4wMTYgTDE2OC40MjYsMTkuNDE1IEw5My4xNDIsNjIuODgxIEw5My4xNDIsNjIuODgxIFoiIGlkPSJGaWxsLTE2IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2OS44LDcwLjA4MyBMMTQyLjQ3OCw4NS44NTcgTDEzNi4wMTgsNzEuNjg5IEMxMzUuMTA4LDY5LjY5NCAxMzIuNTksNjkuOTUxIDEzMC4zOTMsNzIuMjYzIEMxMjkuMzM5LDczLjM3NCAxMjguNSw3NC44MTkgMTI4LjA2NCw3Ni4yODIgTDEyMS42MDMsOTcuOTA5IEw5NC4yODIsMTEzLjY4MyBMOTQuMjgyLDYyLjgxMyBMMTY5LjgsMTkuMjEzIEwxNjkuOCw3MC4wODMgWiIgaWQ9IkZpbGwtMTciIGZpbGw9IiNGQUZBRkEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTQuMjgyLDExMy45MTcgQzk0LjI0MSwxMTMuOTE3IDk0LjIwMSwxMTMuOTA3IDk0LjE2NSwxMTMuODg2IEM5NC4wOTMsMTEzLjg0NSA5NC4wNDgsMTEzLjc2NyA5NC4wNDgsMTEzLjY4NCBMOTQuMDQ4LDYyLjgxMyBDOTQuMDQ4LDYyLjczIDk0LjA5Myw2Mi42NTIgOTQuMTY1LDYyLjYxMSBMMTY5LjY4MywxOS4wMSBDMTY5Ljc1NSwxOC45NjkgMTY5Ljg0NCwxOC45NjkgMTY5LjkxNywxOS4wMSBDMTY5Ljk4OSwxOS4wNTIgMTcwLjAzMywxOS4xMjkgMTcwLjAzMywxOS4yMTIgTDE3MC4wMzMsNzAuMDgzIEMxNzAuMDMzLDcwLjE2NiAxNjkuOTg5LDcwLjI0NCAxNjkuOTE3LDcwLjI4NSBMMTQyLjU5NSw4Ni4wNiBDMTQyLjUzOCw4Ni4wOTIgMTQyLjQ2OSw4Ni4xIDE0Mi40MDcsODYuMDggQzE0Mi4zNDQsODYuMDYgMTQyLjI5Myw4Ni4wMTQgMTQyLjI2Niw4NS45NTQgTDEzNS44MDUsNzEuNzg2IEMxMzUuNDQ1LDcwLjk5NyAxMzQuODEzLDcwLjU4IDEzMy45NzcsNzAuNTggQzEzMi45MjEsNzAuNTggMTMxLjY3Niw3MS4yNTIgMTMwLjU2Miw3Mi40MjQgQzEyOS41NCw3My41MDEgMTI4LjcxMSw3NC45MzEgMTI4LjI4Nyw3Ni4zNDggTDEyMS44MjcsOTcuOTc2IEMxMjEuODEsOTguMDM0IDEyMS43NzEsOTguMDgyIDEyMS43Miw5OC4xMTIgTDk0LjM5OCwxMTMuODg2IEM5NC4zNjIsMTEzLjkwNyA5NC4zMjIsMTEzLjkxNyA5NC4yODIsMTEzLjkxNyBMOTQuMjgyLDExMy45MTcgWiBNOTQuNTE1LDYyLjk0OCBMOTQuNTE1LDExMy4yNzkgTDEyMS40MDYsOTcuNzU0IEwxMjcuODQsNzYuMjE1IEMxMjguMjksNzQuNzA4IDEyOS4xMzcsNzMuMjQ3IDEzMC4yMjQsNzIuMTAzIEMxMzEuNDI1LDcwLjgzOCAxMzIuNzkzLDcwLjExMiAxMzMuOTc3LDcwLjExMiBDMTM0Ljk5NSw3MC4xMTIgMTM1Ljc5NSw3MC42MzggMTM2LjIzLDcxLjU5MiBMMTQyLjU4NCw4NS41MjYgTDE2OS41NjYsNjkuOTQ4IEwxNjkuNTY2LDE5LjYxNyBMOTQuNTE1LDYyLjk0OCBMOTQuNTE1LDYyLjk0OCBaIiBpZD0iRmlsbC0xOCIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMDkuODk0LDkyLjk0MyBMMTA5Ljg5NCw5Mi45NDMgQzEwOC4xMiw5Mi45NDMgMTA2LjY1Myw5Mi4yMTggMTA1LjY1LDkwLjgyMyBDMTA1LjU4Myw5MC43MzEgMTA1LjU5Myw5MC42MSAxMDUuNjczLDkwLjUyOSBDMTA1Ljc1Myw5MC40NDggMTA1Ljg4LDkwLjQ0IDEwNS45NzQsOTAuNTA2IEMxMDYuNzU0LDkxLjA1MyAxMDcuNjc5LDkxLjMzMyAxMDguNzI0LDkxLjMzMyBDMTEwLjA0Nyw5MS4zMzMgMTExLjQ3OCw5MC44OTQgMTEyLjk4LDkwLjAyNyBDMTE4LjI5MSw4Ni45NiAxMjIuNjExLDc5LjUwOSAxMjIuNjExLDczLjQxNiBDMTIyLjYxMSw3MS40ODkgMTIyLjE2OSw2OS44NTYgMTIxLjMzMyw2OC42OTIgQzEyMS4yNjYsNjguNiAxMjEuMjc2LDY4LjQ3MyAxMjEuMzU2LDY4LjM5MiBDMTIxLjQzNiw2OC4zMTEgMTIxLjU2Myw2OC4yOTkgMTIxLjY1Niw2OC4zNjUgQzEyMy4zMjcsNjkuNTM3IDEyNC4yNDcsNzEuNzQ2IDEyNC4yNDcsNzQuNTg0IEMxMjQuMjQ3LDgwLjgyNiAxMTkuODIxLDg4LjQ0NyAxMTQuMzgyLDkxLjU4NyBDMTEyLjgwOCw5Mi40OTUgMTExLjI5OCw5Mi45NDMgMTA5Ljg5NCw5Mi45NDMgTDEwOS44OTQsOTIuOTQzIFogTTEwNi45MjUsOTEuNDAxIEMxMDcuNzM4LDkyLjA1MiAxMDguNzQ1LDkyLjI3OCAxMDkuODkzLDkyLjI3OCBMMTA5Ljg5NCw5Mi4yNzggQzExMS4yMTUsOTIuMjc4IDExMi42NDcsOTEuOTUxIDExNC4xNDgsOTEuMDg0IEMxMTkuNDU5LDg4LjAxNyAxMjMuNzgsODAuNjIxIDEyMy43OCw3NC41MjggQzEyMy43OCw3Mi41NDkgMTIzLjMxNyw3MC45MjkgMTIyLjQ1NCw2OS43NjcgQzEyMi44NjUsNzAuODAyIDEyMy4wNzksNzIuMDQyIDEyMy4wNzksNzMuNDAyIEMxMjMuMDc5LDc5LjY0NSAxMTguNjUzLDg3LjI4NSAxMTMuMjE0LDkwLjQyNSBDMTExLjY0LDkxLjMzNCAxMTAuMTMsOTEuNzQyIDEwOC43MjQsOTEuNzQyIEMxMDguMDgzLDkxLjc0MiAxMDcuNDgxLDkxLjU5MyAxMDYuOTI1LDkxLjQwMSBMMTA2LjkyNSw5MS40MDEgWiIgaWQ9IkZpbGwtMTkiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEzLjA5Nyw5MC4yMyBDMTE4LjQ4MSw4Ny4xMjIgMTIyLjg0NSw3OS41OTQgMTIyLjg0NSw3My40MTYgQzEyMi44NDUsNzEuMzY1IDEyMi4zNjIsNjkuNzI0IDEyMS41MjIsNjguNTU2IEMxMTkuNzM4LDY3LjMwNCAxMTcuMTQ4LDY3LjM2MiAxMTQuMjY1LDY5LjAyNiBDMTA4Ljg4MSw3Mi4xMzQgMTA0LjUxNyw3OS42NjIgMTA0LjUxNyw4NS44NCBDMTA0LjUxNyw4Ny44OTEgMTA1LDg5LjUzMiAxMDUuODQsOTAuNyBDMTA3LjYyNCw5MS45NTIgMTEwLjIxNCw5MS44OTQgMTEzLjA5Nyw5MC4yMyIgaWQ9IkZpbGwtMjAiIGZpbGw9IiNGQUZBRkEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA4LjcyNCw5MS42MTQgTDEwOC43MjQsOTEuNjE0IEMxMDcuNTgyLDkxLjYxNCAxMDYuNTY2LDkxLjQwMSAxMDUuNzA1LDkwLjc5NyBDMTA1LjY4NCw5MC43ODMgMTA1LjY2NSw5MC44MTEgMTA1LjY1LDkwLjc5IEMxMDQuNzU2LDg5LjU0NiAxMDQuMjgzLDg3Ljg0MiAxMDQuMjgzLDg1LjgxNyBDMTA0LjI4Myw3OS41NzUgMTA4LjcwOSw3MS45NTMgMTE0LjE0OCw2OC44MTIgQzExNS43MjIsNjcuOTA0IDExNy4yMzIsNjcuNDQ5IDExOC42MzgsNjcuNDQ5IEMxMTkuNzgsNjcuNDQ5IDEyMC43OTYsNjcuNzU4IDEyMS42NTYsNjguMzYyIEMxMjEuNjc4LDY4LjM3NyAxMjEuNjk3LDY4LjM5NyAxMjEuNzEyLDY4LjQxOCBDMTIyLjYwNiw2OS42NjIgMTIzLjA3OSw3MS4zOSAxMjMuMDc5LDczLjQxNSBDMTIzLjA3OSw3OS42NTggMTE4LjY1Myw4Ny4xOTggMTEzLjIxNCw5MC4zMzggQzExMS42NCw5MS4yNDcgMTEwLjEzLDkxLjYxNCAxMDguNzI0LDkxLjYxNCBMMTA4LjcyNCw5MS42MTQgWiBNMTA2LjAwNiw5MC41MDUgQzEwNi43OCw5MS4wMzcgMTA3LjY5NCw5MS4yODEgMTA4LjcyNCw5MS4yODEgQzExMC4wNDcsOTEuMjgxIDExMS40NzgsOTAuODY4IDExMi45OCw5MC4wMDEgQzExOC4yOTEsODYuOTM1IDEyMi42MTEsNzkuNDk2IDEyMi42MTEsNzMuNDAzIEMxMjIuNjExLDcxLjQ5NCAxMjIuMTc3LDY5Ljg4IDEyMS4zNTYsNjguNzE4IEMxMjAuNTgyLDY4LjE4NSAxMTkuNjY4LDY3LjkxOSAxMTguNjM4LDY3LjkxOSBDMTE3LjMxNSw2Ny45MTkgMTE1Ljg4Myw2OC4zNiAxMTQuMzgyLDY5LjIyNyBDMTA5LjA3MSw3Mi4yOTMgMTA0Ljc1MSw3OS43MzMgMTA0Ljc1MSw4NS44MjYgQzEwNC43NTEsODcuNzM1IDEwNS4xODUsODkuMzQzIDEwNi4wMDYsOTAuNTA1IEwxMDYuMDA2LDkwLjUwNSBaIiBpZD0iRmlsbC0yMSIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDkuMzE4LDcuMjYyIEwxMzkuMzM0LDE2LjE0IEwxNTUuMjI3LDI3LjE3MSBMMTYwLjgxNiwyMS4wNTkgTDE0OS4zMTgsNy4yNjIiIGlkPSJGaWxsLTIyIiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2OS42NzYsMTMuODQgTDE1OS45MjgsMTkuNDY3IEMxNTYuMjg2LDIxLjU3IDE1MC40LDIxLjU4IDE0Ni43ODEsMTkuNDkxIEMxNDMuMTYxLDE3LjQwMiAxNDMuMTgsMTQuMDAzIDE0Ni44MjIsMTEuOSBMMTU2LjMxNyw2LjI5MiBMMTQ5LjU4OCwyLjQwNyBMNjcuNzUyLDQ5LjQ3OCBMMTEzLjY3NSw3NS45OTIgTDExNi43NTYsNzQuMjEzIEMxMTcuMzg3LDczLjg0OCAxMTcuNjI1LDczLjMxNSAxMTcuMzc0LDcyLjgyMyBDMTE1LjAxNyw2OC4xOTEgMTE0Ljc4MSw2My4yNzcgMTE2LjY5MSw1OC41NjEgQzEyMi4zMjksNDQuNjQxIDE0MS4yLDMzLjc0NiAxNjUuMzA5LDMwLjQ5MSBDMTczLjQ3OCwyOS4zODggMTgxLjk4OSwyOS41MjQgMTkwLjAxMywzMC44ODUgQzE5MC44NjUsMzEuMDMgMTkxLjc4OSwzMC44OTMgMTkyLjQyLDMwLjUyOCBMMTk1LjUwMSwyOC43NSBMMTY5LjY3NiwxMy44NCIgaWQ9IkZpbGwtMjMiIGZpbGw9IiNGQUZBRkEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEzLjY3NSw3Ni40NTkgQzExMy41OTQsNzYuNDU5IDExMy41MTQsNzYuNDM4IDExMy40NDIsNzYuMzk3IEw2Ny41MTgsNDkuODgyIEM2Ny4zNzQsNDkuNzk5IDY3LjI4NCw0OS42NDUgNjcuMjg1LDQ5LjQ3OCBDNjcuMjg1LDQ5LjMxMSA2Ny4zNzQsNDkuMTU3IDY3LjUxOSw0OS4wNzMgTDE0OS4zNTUsMi4wMDIgQzE0OS40OTksMS45MTkgMTQ5LjY3NywxLjkxOSAxNDkuODIxLDIuMDAyIEwxNTYuNTUsNS44ODcgQzE1Ni43NzQsNi4wMTcgMTU2Ljg1LDYuMzAyIDE1Ni43MjIsNi41MjYgQzE1Ni41OTIsNi43NDkgMTU2LjMwNyw2LjgyNiAxNTYuMDgzLDYuNjk2IEwxNDkuNTg3LDIuOTQ2IEw2OC42ODcsNDkuNDc5IEwxMTMuNjc1LDc1LjQ1MiBMMTE2LjUyMyw3My44MDggQzExNi43MTUsNzMuNjk3IDExNy4xNDMsNzMuMzk5IDExNi45NTgsNzMuMDM1IEMxMTQuNTQyLDY4LjI4NyAxMTQuMyw2My4yMjEgMTE2LjI1OCw1OC4zODUgQzExOS4wNjQsNTEuNDU4IDEyNS4xNDMsNDUuMTQzIDEzMy44NCw0MC4xMjIgQzE0Mi40OTcsMzUuMTI0IDE1My4zNTgsMzEuNjMzIDE2NS4yNDcsMzAuMDI4IEMxNzMuNDQ1LDI4LjkyMSAxODIuMDM3LDI5LjA1OCAxOTAuMDkxLDMwLjQyNSBDMTkwLjgzLDMwLjU1IDE5MS42NTIsMzAuNDMyIDE5Mi4xODYsMzAuMTI0IEwxOTQuNTY3LDI4Ljc1IEwxNjkuNDQyLDE0LjI0NCBDMTY5LjIxOSwxNC4xMTUgMTY5LjE0MiwxMy44MjkgMTY5LjI3MSwxMy42MDYgQzE2OS40LDEzLjM4MiAxNjkuNjg1LDEzLjMwNiAxNjkuOTA5LDEzLjQzNSBMMTk1LjczNCwyOC4zNDUgQzE5NS44NzksMjguNDI4IDE5NS45NjgsMjguNTgzIDE5NS45NjgsMjguNzUgQzE5NS45NjgsMjguOTE2IDE5NS44NzksMjkuMDcxIDE5NS43MzQsMjkuMTU0IEwxOTIuNjUzLDMwLjkzMyBDMTkxLjkzMiwzMS4zNSAxOTAuODksMzEuNTA4IDE4OS45MzUsMzEuMzQ2IEMxODEuOTcyLDI5Ljk5NSAxNzMuNDc4LDI5Ljg2IDE2NS4zNzIsMzAuOTU0IEMxNTMuNjAyLDMyLjU0MyAxNDIuODYsMzUuOTkzIDEzNC4zMDcsNDAuOTMxIEMxMjUuNzkzLDQ1Ljg0NyAxMTkuODUxLDUyLjAwNCAxMTcuMTI0LDU4LjczNiBDMTE1LjI3LDYzLjMxNCAxMTUuNTAxLDY4LjExMiAxMTcuNzksNzIuNjExIEMxMTguMTYsNzMuMzM2IDExNy44NDUsNzQuMTI0IDExNi45OSw3NC42MTcgTDExMy45MDksNzYuMzk3IEMxMTMuODM2LDc2LjQzOCAxMTMuNzU2LDc2LjQ1OSAxMTMuNjc1LDc2LjQ1OSIgaWQ9IkZpbGwtMjQiIGZpbGw9IiM0NTVBNjQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTUzLjMxNiwyMS4yNzkgQzE1MC45MDMsMjEuMjc5IDE0OC40OTUsMjAuNzUxIDE0Ni42NjQsMTkuNjkzIEMxNDQuODQ2LDE4LjY0NCAxNDMuODQ0LDE3LjIzMiAxNDMuODQ0LDE1LjcxOCBDMTQzLjg0NCwxNC4xOTEgMTQ0Ljg2LDEyLjc2MyAxNDYuNzA1LDExLjY5OCBMMTU2LjE5OCw2LjA5MSBDMTU2LjMwOSw2LjAyNSAxNTYuNDUyLDYuMDYyIDE1Ni41MTgsNi4xNzMgQzE1Ni41ODMsNi4yODQgMTU2LjU0Nyw2LjQyNyAxNTYuNDM2LDYuNDkzIEwxNDYuOTQsMTIuMTAyIEMxNDUuMjQ0LDEzLjA4MSAxNDQuMzEyLDE0LjM2NSAxNDQuMzEyLDE1LjcxOCBDMTQ0LjMxMiwxNy4wNTggMTQ1LjIzLDE4LjMyNiAxNDYuODk3LDE5LjI4OSBDMTUwLjQ0NiwyMS4zMzggMTU2LjI0LDIxLjMyNyAxNTkuODExLDE5LjI2NSBMMTY5LjU1OSwxMy42MzcgQzE2OS42NywxMy41NzMgMTY5LjgxMywxMy42MTEgMTY5Ljg3OCwxMy43MjMgQzE2OS45NDMsMTMuODM0IDE2OS45MDQsMTMuOTc3IDE2OS43OTMsMTQuMDQyIEwxNjAuMDQ1LDE5LjY3IEMxNTguMTg3LDIwLjc0MiAxNTUuNzQ5LDIxLjI3OSAxNTMuMzE2LDIxLjI3OSIgaWQ9IkZpbGwtMjUiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEzLjY3NSw3NS45OTIgTDY3Ljc2Miw0OS40ODQiIGlkPSJGaWxsLTI2IiBmaWxsPSIjNDU1QTY0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTExMy42NzUsNzYuMzQyIEMxMTMuNjE1LDc2LjM0MiAxMTMuNTU1LDc2LjMyNyAxMTMuNSw3Ni4yOTUgTDY3LjU4Nyw0OS43ODcgQzY3LjQxOSw0OS42OSA2Ny4zNjIsNDkuNDc2IDY3LjQ1OSw0OS4zMDkgQzY3LjU1Niw0OS4xNDEgNjcuNzcsNDkuMDgzIDY3LjkzNyw0OS4xOCBMMTEzLjg1LDc1LjY4OCBDMTE0LjAxOCw3NS43ODUgMTE0LjA3NSw3NiAxMTMuOTc4LDc2LjE2NyBDMTEzLjkxNCw3Ni4yNzkgMTEzLjc5Niw3Ni4zNDIgMTEzLjY3NSw3Ni4zNDIiIGlkPSJGaWxsLTI3IiBmaWxsPSIjNDU1QTY0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTY3Ljc2Miw0OS40ODQgTDY3Ljc2MiwxMDMuNDg1IEM2Ny43NjIsMTA0LjU3NSA2OC41MzIsMTA1LjkwMyA2OS40ODIsMTA2LjQ1MiBMMTExLjk1NSwxMzAuOTczIEMxMTIuOTA1LDEzMS41MjIgMTEzLjY3NSwxMzEuMDgzIDExMy42NzUsMTI5Ljk5MyBMMTEzLjY3NSw3NS45OTIiIGlkPSJGaWxsLTI4IiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTExMi43MjcsMTMxLjU2MSBDMTEyLjQzLDEzMS41NjEgMTEyLjEwNywxMzEuNDY2IDExMS43OCwxMzEuMjc2IEw2OS4zMDcsMTA2Ljc1NSBDNjguMjQ0LDEwNi4xNDIgNjcuNDEyLDEwNC43MDUgNjcuNDEyLDEwMy40ODUgTDY3LjQxMiw0OS40ODQgQzY3LjQxMiw0OS4yOSA2Ny41NjksNDkuMTM0IDY3Ljc2Miw0OS4xMzQgQzY3Ljk1Niw0OS4xMzQgNjguMTEzLDQ5LjI5IDY4LjExMyw0OS40ODQgTDY4LjExMywxMDMuNDg1IEM2OC4xMTMsMTA0LjQ0NSA2OC44MiwxMDUuNjY1IDY5LjY1NywxMDYuMTQ4IEwxMTIuMTMsMTMwLjY3IEMxMTIuNDc0LDEzMC44NjggMTEyLjc5MSwxMzAuOTEzIDExMywxMzAuNzkyIEMxMTMuMjA2LDEzMC42NzMgMTEzLjMyNSwxMzAuMzgxIDExMy4zMjUsMTI5Ljk5MyBMMTEzLjMyNSw3NS45OTIgQzExMy4zMjUsNzUuNzk4IDExMy40ODIsNzUuNjQxIDExMy42NzUsNzUuNjQxIEMxMTMuODY5LDc1LjY0MSAxMTQuMDI1LDc1Ljc5OCAxMTQuMDI1LDc1Ljk5MiBMMTE0LjAyNSwxMjkuOTkzIEMxMTQuMDI1LDEzMC42NDggMTEzLjc4NiwxMzEuMTQ3IDExMy4zNSwxMzEuMzk5IEMxMTMuMTYyLDEzMS41MDcgMTEyLjk1MiwxMzEuNTYxIDExMi43MjcsMTMxLjU2MSIgaWQ9IkZpbGwtMjkiIGZpbGw9IiM0NTVBNjQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEyLjg2LDQwLjUxMiBDMTEyLjg2LDQwLjUxMiAxMTIuODYsNDAuNTEyIDExMi44NTksNDAuNTEyIEMxMTAuNTQxLDQwLjUxMiAxMDguMzYsMzkuOTkgMTA2LjcxNywzOS4wNDEgQzEwNS4wMTIsMzguMDU3IDEwNC4wNzQsMzYuNzI2IDEwNC4wNzQsMzUuMjkyIEMxMDQuMDc0LDMzLjg0NyAxMDUuMDI2LDMyLjUwMSAxMDYuNzU0LDMxLjUwNCBMMTE4Ljc5NSwyNC41NTEgQzEyMC40NjMsMjMuNTg5IDEyMi42NjksMjMuMDU4IDEyNS4wMDcsMjMuMDU4IEMxMjcuMzI1LDIzLjA1OCAxMjkuNTA2LDIzLjU4MSAxMzEuMTUsMjQuNTMgQzEzMi44NTQsMjUuNTE0IDEzMy43OTMsMjYuODQ1IDEzMy43OTMsMjguMjc4IEMxMzMuNzkzLDI5LjcyNCAxMzIuODQxLDMxLjA2OSAxMzEuMTEzLDMyLjA2NyBMMTE5LjA3MSwzOS4wMTkgQzExNy40MDMsMzkuOTgyIDExNS4xOTcsNDAuNTEyIDExMi44Niw0MC41MTIgTDExMi44Niw0MC41MTIgWiBNMTI1LjAwNywyMy43NTkgQzEyMi43OSwyMy43NTkgMTIwLjcwOSwyNC4yNTYgMTE5LjE0NiwyNS4xNTggTDEwNy4xMDQsMzIuMTEgQzEwNS42MDIsMzIuOTc4IDEwNC43NzQsMzQuMTA4IDEwNC43NzQsMzUuMjkyIEMxMDQuNzc0LDM2LjQ2NSAxMDUuNTg5LDM3LjU4MSAxMDcuMDY3LDM4LjQzNCBDMTA4LjYwNSwzOS4zMjMgMTEwLjY2MywzOS44MTIgMTEyLjg1OSwzOS44MTIgTDExMi44NiwzOS44MTIgQzExNS4wNzYsMzkuODEyIDExNy4xNTgsMzkuMzE1IDExOC43MjEsMzguNDEzIEwxMzAuNzYyLDMxLjQ2IEMxMzIuMjY0LDMwLjU5MyAxMzMuMDkyLDI5LjQ2MyAxMzMuMDkyLDI4LjI3OCBDMTMzLjA5MiwyNy4xMDYgMTMyLjI3OCwyNS45OSAxMzAuOCwyNS4xMzYgQzEyOS4yNjEsMjQuMjQ4IDEyNy4yMDQsMjMuNzU5IDEyNS4wMDcsMjMuNzU5IEwxMjUuMDA3LDIzLjc1OSBaIiBpZD0iRmlsbC0zMCIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNjUuNjMsMTYuMjE5IEwxNTkuODk2LDE5LjUzIEMxNTYuNzI5LDIxLjM1OCAxNTEuNjEsMjEuMzY3IDE0OC40NjMsMTkuNTUgQzE0NS4zMTYsMTcuNzMzIDE0NS4zMzIsMTQuNzc4IDE0OC40OTksMTIuOTQ5IEwxNTQuMjMzLDkuNjM5IEwxNjUuNjMsMTYuMjE5IiBpZD0iRmlsbC0zMSIgZmlsbD0iI0ZBRkFGQSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNTQuMjMzLDEwLjQ0OCBMMTY0LjIyOCwxNi4yMTkgTDE1OS41NDYsMTguOTIzIEMxNTguMTEyLDE5Ljc1IDE1Ni4xOTQsMjAuMjA2IDE1NC4xNDcsMjAuMjA2IEMxNTIuMTE4LDIwLjIwNiAxNTAuMjI0LDE5Ljc1NyAxNDguODE0LDE4Ljk0MyBDMTQ3LjUyNCwxOC4xOTkgMTQ2LjgxNCwxNy4yNDkgMTQ2LjgxNCwxNi4yNjkgQzE0Ni44MTQsMTUuMjc4IDE0Ny41MzcsMTQuMzE0IDE0OC44NSwxMy41NTYgTDE1NC4yMzMsMTAuNDQ4IE0xNTQuMjMzLDkuNjM5IEwxNDguNDk5LDEyLjk0OSBDMTQ1LjMzMiwxNC43NzggMTQ1LjMxNiwxNy43MzMgMTQ4LjQ2MywxOS41NSBDMTUwLjAzMSwyMC40NTUgMTUyLjA4NiwyMC45MDcgMTU0LjE0NywyMC45MDcgQzE1Ni4yMjQsMjAuOTA3IDE1OC4zMDYsMjAuNDQ3IDE1OS44OTYsMTkuNTMgTDE2NS42MywxNi4yMTkgTDE1NC4yMzMsOS42MzkiIGlkPSJGaWxsLTMyIiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE0NS40NDUsNzIuNjY3IEwxNDUuNDQ1LDcyLjY2NyBDMTQzLjY3Miw3Mi42NjcgMTQyLjIwNCw3MS44MTcgMTQxLjIwMiw3MC40MjIgQzE0MS4xMzUsNzAuMzMgMTQxLjE0NSw3MC4xNDcgMTQxLjIyNSw3MC4wNjYgQzE0MS4zMDUsNjkuOTg1IDE0MS40MzIsNjkuOTQ2IDE0MS41MjUsNzAuMDExIEMxNDIuMzA2LDcwLjU1OSAxNDMuMjMxLDcwLjgyMyAxNDQuMjc2LDcwLjgyMiBDMTQ1LjU5OCw3MC44MjIgMTQ3LjAzLDcwLjM3NiAxNDguNTMyLDY5LjUwOSBDMTUzLjg0Miw2Ni40NDMgMTU4LjE2Myw1OC45ODcgMTU4LjE2Myw1Mi44OTQgQzE1OC4xNjMsNTAuOTY3IDE1Ny43MjEsNDkuMzMyIDE1Ni44ODQsNDguMTY4IEMxNTYuODE4LDQ4LjA3NiAxNTYuODI4LDQ3Ljk0OCAxNTYuOTA4LDQ3Ljg2NyBDMTU2Ljk4OCw0Ny43ODYgMTU3LjExNCw0Ny43NzQgMTU3LjIwOCw0Ny44NCBDMTU4Ljg3OCw0OS4wMTIgMTU5Ljc5OCw1MS4yMiAxNTkuNzk4LDU0LjA1OSBDMTU5Ljc5OCw2MC4zMDEgMTU1LjM3Myw2OC4wNDYgMTQ5LjkzMyw3MS4xODYgQzE0OC4zNiw3Mi4wOTQgMTQ2Ljg1LDcyLjY2NyAxNDUuNDQ1LDcyLjY2NyBMMTQ1LjQ0NSw3Mi42NjcgWiBNMTQyLjQ3Niw3MSBDMTQzLjI5LDcxLjY1MSAxNDQuMjk2LDcyLjAwMiAxNDUuNDQ1LDcyLjAwMiBDMTQ2Ljc2Nyw3Mi4wMDIgMTQ4LjE5OCw3MS41NSAxNDkuNyw3MC42ODIgQzE1NS4wMSw2Ny42MTcgMTU5LjMzMSw2MC4xNTkgMTU5LjMzMSw1NC4wNjUgQzE1OS4zMzEsNTIuMDg1IDE1OC44NjgsNTAuNDM1IDE1OC4wMDYsNDkuMjcyIEMxNTguNDE3LDUwLjMwNyAxNTguNjMsNTEuNTMyIDE1OC42Myw1Mi44OTIgQzE1OC42Myw1OS4xMzQgMTU0LjIwNSw2Ni43NjcgMTQ4Ljc2NSw2OS45MDcgQzE0Ny4xOTIsNzAuODE2IDE0NS42ODEsNzEuMjgzIDE0NC4yNzYsNzEuMjgzIEMxNDMuNjM0LDcxLjI4MyAxNDMuMDMzLDcxLjE5MiAxNDIuNDc2LDcxIEwxNDIuNDc2LDcxIFoiIGlkPSJGaWxsLTMzIiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE0OC42NDgsNjkuNzA0IEMxNTQuMDMyLDY2LjU5NiAxNTguMzk2LDU5LjA2OCAxNTguMzk2LDUyLjg5MSBDMTU4LjM5Niw1MC44MzkgMTU3LjkxMyw0OS4xOTggMTU3LjA3NCw0OC4wMyBDMTU1LjI4OSw0Ni43NzggMTUyLjY5OSw0Ni44MzYgMTQ5LjgxNiw0OC41MDEgQzE0NC40MzMsNTEuNjA5IDE0MC4wNjgsNTkuMTM3IDE0MC4wNjgsNjUuMzE0IEMxNDAuMDY4LDY3LjM2NSAxNDAuNTUyLDY5LjAwNiAxNDEuMzkxLDcwLjE3NCBDMTQzLjE3Niw3MS40MjcgMTQ1Ljc2NSw3MS4zNjkgMTQ4LjY0OCw2OS43MDQiIGlkPSJGaWxsLTM0IiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE0NC4yNzYsNzEuMjc2IEwxNDQuMjc2LDcxLjI3NiBDMTQzLjEzMyw3MS4yNzYgMTQyLjExOCw3MC45NjkgMTQxLjI1Nyw3MC4zNjUgQzE0MS4yMzYsNzAuMzUxIDE0MS4yMTcsNzAuMzMyIDE0MS4yMDIsNzAuMzExIEMxNDAuMzA3LDY5LjA2NyAxMzkuODM1LDY3LjMzOSAxMzkuODM1LDY1LjMxNCBDMTM5LjgzNSw1OS4wNzMgMTQ0LjI2LDUxLjQzOSAxNDkuNyw0OC4yOTggQzE1MS4yNzMsNDcuMzkgMTUyLjc4NCw0Ni45MjkgMTU0LjE4OSw0Ni45MjkgQzE1NS4zMzIsNDYuOTI5IDE1Ni4zNDcsNDcuMjM2IDE1Ny4yMDgsNDcuODM5IEMxNTcuMjI5LDQ3Ljg1NCAxNTcuMjQ4LDQ3Ljg3MyAxNTcuMjYzLDQ3Ljg5NCBDMTU4LjE1Nyw0OS4xMzggMTU4LjYzLDUwLjg2NSAxNTguNjMsNTIuODkxIEMxNTguNjMsNTkuMTMyIDE1NC4yMDUsNjYuNzY2IDE0OC43NjUsNjkuOTA3IEMxNDcuMTkyLDcwLjgxNSAxNDUuNjgxLDcxLjI3NiAxNDQuMjc2LDcxLjI3NiBMMTQ0LjI3Niw3MS4yNzYgWiBNMTQxLjU1OCw3MC4xMDQgQzE0Mi4zMzEsNzAuNjM3IDE0My4yNDUsNzEuMDA1IDE0NC4yNzYsNzEuMDA1IEMxNDUuNTk4LDcxLjAwNSAxNDcuMDMsNzAuNDY3IDE0OC41MzIsNjkuNiBDMTUzLjg0Miw2Ni41MzQgMTU4LjE2Myw1OS4wMzMgMTU4LjE2Myw1Mi45MzkgQzE1OC4xNjMsNTEuMDMxIDE1Ny43MjksNDkuMzg1IDE1Ni45MDcsNDguMjIzIEMxNTYuMTMzLDQ3LjY5MSAxNTUuMjE5LDQ3LjQwOSAxNTQuMTg5LDQ3LjQwOSBDMTUyLjg2Nyw0Ny40MDkgMTUxLjQzNSw0Ny44NDIgMTQ5LjkzMyw0OC43MDkgQzE0NC42MjMsNTEuNzc1IDE0MC4zMDIsNTkuMjczIDE0MC4zMDIsNjUuMzY2IEMxNDAuMzAyLDY3LjI3NiAxNDAuNzM2LDY4Ljk0MiAxNDEuNTU4LDcwLjEwNCBMMTQxLjU1OCw3MC4xMDQgWiIgaWQ9IkZpbGwtMzUiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTUwLjcyLDY1LjM2MSBMMTUwLjM1Nyw2NS4wNjYgQzE1MS4xNDcsNjQuMDkyIDE1MS44NjksNjMuMDQgMTUyLjUwNSw2MS45MzggQzE1My4zMTMsNjAuNTM5IDE1My45NzgsNTkuMDY3IDE1NC40ODIsNTcuNTYzIEwxNTQuOTI1LDU3LjcxMiBDMTU0LjQxMiw1OS4yNDUgMTUzLjczMyw2MC43NDUgMTUyLjkxLDYyLjE3MiBDMTUyLjI2Miw2My4yOTUgMTUxLjUyNSw2NC4zNjggMTUwLjcyLDY1LjM2MSIgaWQ9IkZpbGwtMzYiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTE1LjkxNyw4NC41MTQgTDExNS41NTQsODQuMjIgQzExNi4zNDQsODMuMjQ1IDExNy4wNjYsODIuMTk0IDExNy43MDIsODEuMDkyIEMxMTguNTEsNzkuNjkyIDExOS4xNzUsNzguMjIgMTE5LjY3OCw3Ni43MTcgTDEyMC4xMjEsNzYuODY1IEMxMTkuNjA4LDc4LjM5OCAxMTguOTMsNzkuODk5IDExOC4xMDYsODEuMzI2IEMxMTcuNDU4LDgyLjQ0OCAxMTYuNzIyLDgzLjUyMSAxMTUuOTE3LDg0LjUxNCIgaWQ9IkZpbGwtMzciIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTE0LDEzMC40NzYgTDExNCwxMzAuMDA4IEwxMTQsNzYuMDUyIEwxMTQsNzUuNTg0IEwxMTQsNzYuMDUyIEwxMTQsMTMwLjAwOCBMMTE0LDEzMC40NzYiIGlkPSJGaWxsLTM4IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8ZyBpZD0iSW1wb3J0ZWQtTGF5ZXJzLUNvcHkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYyLjAwMDAwMCwgMC4wMDAwMDApIiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTkuODIyLDM3LjQ3NCBDMTkuODM5LDM3LjMzOSAxOS43NDcsMzcuMTk0IDE5LjU1NSwzNy4wODIgQzE5LjIyOCwzNi44OTQgMTguNzI5LDM2Ljg3MiAxOC40NDYsMzcuMDM3IEwxMi40MzQsNDAuNTA4IEMxMi4zMDMsNDAuNTg0IDEyLjI0LDQwLjY4NiAxMi4yNDMsNDAuNzkzIEMxMi4yNDUsNDAuOTI1IDEyLjI0NSw0MS4yNTQgMTIuMjQ1LDQxLjM3MSBMMTIuMjQ1LDQxLjQxNCBMMTIuMjM4LDQxLjU0MiBDOC4xNDgsNDMuODg3IDUuNjQ3LDQ1LjMyMSA1LjY0Nyw0NS4zMjEgQzUuNjQ2LDQ1LjMyMSAzLjU3LDQ2LjM2NyAyLjg2LDUwLjUxMyBDMi44Niw1MC41MTMgMS45NDgsNTcuNDc0IDEuOTYyLDcwLjI1OCBDMS45NzcsODIuODI4IDIuNTY4LDg3LjMyOCAzLjEyOSw5MS42MDkgQzMuMzQ5LDkzLjI5MyA2LjEzLDkzLjczNCA2LjEzLDkzLjczNCBDNi40NjEsOTMuNzc0IDYuODI4LDkzLjcwNyA3LjIxLDkzLjQ4NiBMODIuNDgzLDQ5LjkzNSBDODQuMjkxLDQ4Ljg2NiA4NS4xNSw0Ni4yMTYgODUuNTM5LDQzLjY1MSBDODYuNzUyLDM1LjY2MSA4Ny4yMTQsMTAuNjczIDg1LjI2NCwzLjc3MyBDODUuMDY4LDMuMDggODQuNzU0LDIuNjkgODQuMzk2LDIuNDkxIEw4Mi4zMSwxLjcwMSBDODEuNTgzLDEuNzI5IDgwLjg5NCwyLjE2OCA4MC43NzYsMi4yMzYgQzgwLjYzNiwyLjMxNyA0MS44MDcsMjQuNTg1IDIwLjAzMiwzNy4wNzIgTDE5LjgyMiwzNy40NzQiIGlkPSJGaWxsLTEiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNODIuMzExLDEuNzAxIEw4NC4zOTYsMi40OTEgQzg0Ljc1NCwyLjY5IDg1LjA2OCwzLjA4IDg1LjI2NCwzLjc3MyBDODcuMjEzLDEwLjY3MyA4Ni43NTEsMzUuNjYgODUuNTM5LDQzLjY1MSBDODUuMTQ5LDQ2LjIxNiA4NC4yOSw0OC44NjYgODIuNDgzLDQ5LjkzNSBMNy4yMSw5My40ODYgQzYuODk3LDkzLjY2NyA2LjU5NSw5My43NDQgNi4zMTQsOTMuNzQ0IEw2LjEzMSw5My43MzMgQzYuMTMxLDkzLjczNCAzLjM0OSw5My4yOTMgMy4xMjgsOTEuNjA5IEMyLjU2OCw4Ny4zMjcgMS45NzcsODIuODI4IDEuOTYzLDcwLjI1OCBDMS45NDgsNTcuNDc0IDIuODYsNTAuNTEzIDIuODYsNTAuNTEzIEMzLjU3LDQ2LjM2NyA1LjY0Nyw0NS4zMjEgNS42NDcsNDUuMzIxIEM1LjY0Nyw0NS4zMjEgOC4xNDgsNDMuODg3IDEyLjIzOCw0MS41NDIgTDEyLjI0NSw0MS40MTQgTDEyLjI0NSw0MS4zNzEgQzEyLjI0NSw0MS4yNTQgMTIuMjQ1LDQwLjkyNSAxMi4yNDMsNDAuNzkzIEMxMi4yNCw0MC42ODYgMTIuMzAyLDQwLjU4MyAxMi40MzQsNDAuNTA4IEwxOC40NDYsMzcuMDM2IEMxOC41NzQsMzYuOTYyIDE4Ljc0NiwzNi45MjYgMTguOTI3LDM2LjkyNiBDMTkuMTQ1LDM2LjkyNiAxOS4zNzYsMzYuOTc5IDE5LjU1NCwzNy4wODIgQzE5Ljc0NywzNy4xOTQgMTkuODM5LDM3LjM0IDE5LjgyMiwzNy40NzQgTDIwLjAzMywzNy4wNzIgQzQxLjgwNiwyNC41ODUgODAuNjM2LDIuMzE4IDgwLjc3NywyLjIzNiBDODAuODk0LDIuMTY4IDgxLjU4MywxLjcyOSA4Mi4zMTEsMS43MDEgTTgyLjMxMSwwLjcwNCBMODIuMjcyLDAuNzA1IEM4MS42NTQsMC43MjggODAuOTg5LDAuOTQ5IDgwLjI5OCwxLjM2MSBMODAuMjc3LDEuMzczIEM4MC4xMjksMS40NTggNTkuNzY4LDEzLjEzNSAxOS43NTgsMzYuMDc5IEMxOS41LDM1Ljk4MSAxOS4yMTQsMzUuOTI5IDE4LjkyNywzNS45MjkgQzE4LjU2MiwzNS45MjkgMTguMjIzLDM2LjAxMyAxNy45NDcsMzYuMTczIEwxMS45MzUsMzkuNjQ0IEMxMS40OTMsMzkuODk5IDExLjIzNiw0MC4zMzQgMTEuMjQ2LDQwLjgxIEwxMS4yNDcsNDAuOTYgTDUuMTY3LDQ0LjQ0NyBDNC43OTQsNDQuNjQ2IDIuNjI1LDQ1Ljk3OCAxLjg3Nyw1MC4zNDUgTDEuODcxLDUwLjM4NCBDMS44NjIsNTAuNDU0IDAuOTUxLDU3LjU1NyAwLjk2NSw3MC4yNTkgQzAuOTc5LDgyLjg3OSAxLjU2OCw4Ny4zNzUgMi4xMzcsOTEuNzI0IEwyLjEzOSw5MS43MzkgQzIuNDQ3LDk0LjA5NCA1LjYxNCw5NC42NjIgNS45NzUsOTQuNzE5IEw2LjAwOSw5NC43MjMgQzYuMTEsOTQuNzM2IDYuMjEzLDk0Ljc0MiA2LjMxNCw5NC43NDIgQzYuNzksOTQuNzQyIDcuMjYsOTQuNjEgNy43MSw5NC4zNSBMODIuOTgzLDUwLjc5OCBDODQuNzk0LDQ5LjcyNyA4NS45ODIsNDcuMzc1IDg2LjUyNSw0My44MDEgQzg3LjcxMSwzNS45ODcgODguMjU5LDEwLjcwNSA4Ni4yMjQsMy41MDIgQzg1Ljk3MSwyLjYwOSA4NS41MiwxLjk3NSA4NC44ODEsMS42MiBMODQuNzQ5LDEuNTU4IEw4Mi42NjQsMC43NjkgQzgyLjU1MSwwLjcyNSA4Mi40MzEsMC43MDQgODIuMzExLDAuNzA0IiBpZD0iRmlsbC0yIiBmaWxsPSIjNDU1QTY0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTY2LjI2NywxMS41NjUgTDY3Ljc2MiwxMS45OTkgTDExLjQyMyw0NC4zMjUiIGlkPSJGaWxsLTMiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuMjAyLDkwLjU0NSBDMTIuMDI5LDkwLjU0NSAxMS44NjIsOTAuNDU1IDExLjc2OSw5MC4yOTUgQzExLjYzMiw5MC4wNTcgMTEuNzEzLDg5Ljc1MiAxMS45NTIsODkuNjE0IEwzMC4zODksNzguOTY5IEMzMC42MjgsNzguODMxIDMwLjkzMyw3OC45MTMgMzEuMDcxLDc5LjE1MiBDMzEuMjA4LDc5LjM5IDMxLjEyNyw3OS42OTYgMzAuODg4LDc5LjgzMyBMMTIuNDUxLDkwLjQ3OCBMMTIuMjAyLDkwLjU0NSIgaWQ9IkZpbGwtNCIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy43NjQsNDIuNjU0IEwxMy42NTYsNDIuNTkyIEwxMy43MDIsNDIuNDIxIEwxOC44MzcsMzkuNDU3IEwxOS4wMDcsMzkuNTAyIEwxOC45NjIsMzkuNjczIEwxMy44MjcsNDIuNjM3IEwxMy43NjQsNDIuNjU0IiBpZD0iRmlsbC01IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTguNTIsOTAuMzc1IEw4LjUyLDQ2LjQyMSBMOC41ODMsNDYuMzg1IEw3NS44NCw3LjU1NCBMNzUuODQsNTEuNTA4IEw3NS43NzgsNTEuNTQ0IEw4LjUyLDkwLjM3NSBMOC41Miw5MC4zNzUgWiBNOC43Nyw0Ni41NjQgTDguNzcsODkuOTQ0IEw3NS41OTEsNTEuMzY1IEw3NS41OTEsNy45ODUgTDguNzcsNDYuNTY0IEw4Ljc3LDQ2LjU2NCBaIiBpZD0iRmlsbC02IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTI0Ljk4Niw4My4xODIgQzI0Ljc1Niw4My4zMzEgMjQuMzc0LDgzLjU2NiAyNC4xMzcsODMuNzA1IEwxMi42MzIsOTAuNDA2IEMxMi4zOTUsOTAuNTQ1IDEyLjQyNiw5MC42NTggMTIuNyw5MC42NTggTDEzLjI2NSw5MC42NTggQzEzLjU0LDkwLjY1OCAxMy45NTgsOTAuNTQ1IDE0LjE5NSw5MC40MDYgTDI1LjcsODMuNzA1IEMyNS45MzcsODMuNTY2IDI2LjEyOCw4My40NTIgMjYuMTI1LDgzLjQ0OSBDMjYuMTIyLDgzLjQ0NyAyNi4xMTksODMuMjIgMjYuMTE5LDgyLjk0NiBDMjYuMTE5LDgyLjY3MiAyNS45MzEsODIuNTY5IDI1LjcwMSw4Mi43MTkgTDI0Ljk4Niw4My4xODIiIGlkPSJGaWxsLTciIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTMuMjY2LDkwLjc4MiBMMTIuNyw5MC43ODIgQzEyLjUsOTAuNzgyIDEyLjM4NCw5MC43MjYgMTIuMzU0LDkwLjYxNiBDMTIuMzI0LDkwLjUwNiAxMi4zOTcsOTAuMzk5IDEyLjU2OSw5MC4yOTkgTDI0LjA3NCw4My41OTcgQzI0LjMxLDgzLjQ1OSAyNC42ODksODMuMjI2IDI0LjkxOCw4My4wNzggTDI1LjYzMyw4Mi42MTQgQzI1LjcyMyw4Mi41NTUgMjUuODEzLDgyLjUyNSAyNS44OTksODIuNTI1IEMyNi4wNzEsODIuNTI1IDI2LjI0NCw4Mi42NTUgMjYuMjQ0LDgyLjk0NiBDMjYuMjQ0LDgzLjE2IDI2LjI0NSw4My4zMDkgMjYuMjQ3LDgzLjM4MyBMMjYuMjUzLDgzLjM4NyBMMjYuMjQ5LDgzLjQ1NiBDMjYuMjQ2LDgzLjUzMSAyNi4yNDYsODMuNTMxIDI1Ljc2Myw4My44MTIgTDE0LjI1OCw5MC41MTQgQzE0LDkwLjY2NSAxMy41NjQsOTAuNzgyIDEzLjI2Niw5MC43ODIgTDEzLjI2Niw5MC43ODIgWiBNMTIuNjY2LDkwLjUzMiBMMTIuNyw5MC41MzMgTDEzLjI2Niw5MC41MzMgQzEzLjUxOCw5MC41MzMgMTMuOTE1LDkwLjQyNSAxNC4xMzIsOTAuMjk5IEwyNS42MzcsODMuNTk3IEMyNS44MDUsODMuNDk5IDI1LjkzMSw4My40MjQgMjUuOTk4LDgzLjM4MyBDMjUuOTk0LDgzLjI5OSAyNS45OTQsODMuMTY1IDI1Ljk5NCw4Mi45NDYgTDI1Ljg5OSw4Mi43NzUgTDI1Ljc2OCw4Mi44MjQgTDI1LjA1NCw4My4yODcgQzI0LjgyMiw4My40MzcgMjQuNDM4LDgzLjY3MyAyNC4yLDgzLjgxMiBMMTIuNjk1LDkwLjUxNCBMMTIuNjY2LDkwLjUzMiBMMTIuNjY2LDkwLjUzMiBaIiBpZD0iRmlsbC04IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEzLjI2Niw4OS44NzEgTDEyLjcsODkuODcxIEMxMi41LDg5Ljg3MSAxMi4zODQsODkuODE1IDEyLjM1NCw4OS43MDUgQzEyLjMyNCw4OS41OTUgMTIuMzk3LDg5LjQ4OCAxMi41NjksODkuMzg4IEwyNC4wNzQsODIuNjg2IEMyNC4zMzIsODIuNTM1IDI0Ljc2OCw4Mi40MTggMjUuMDY3LDgyLjQxOCBMMjUuNjMyLDgyLjQxOCBDMjUuODMyLDgyLjQxOCAyNS45NDgsODIuNDc0IDI1Ljk3OCw4Mi41ODQgQzI2LjAwOCw4Mi42OTQgMjUuOTM1LDgyLjgwMSAyNS43NjMsODIuOTAxIEwxNC4yNTgsODkuNjAzIEMxNCw4OS43NTQgMTMuNTY0LDg5Ljg3MSAxMy4yNjYsODkuODcxIEwxMy4yNjYsODkuODcxIFogTTEyLjY2Niw4OS42MjEgTDEyLjcsODkuNjIyIEwxMy4yNjYsODkuNjIyIEMxMy41MTgsODkuNjIyIDEzLjkxNSw4OS41MTUgMTQuMTMyLDg5LjM4OCBMMjUuNjM3LDgyLjY4NiBMMjUuNjY3LDgyLjY2OCBMMjUuNjMyLDgyLjY2NyBMMjUuMDY3LDgyLjY2NyBDMjQuODE1LDgyLjY2NyAyNC40MTgsODIuNzc1IDI0LjIsODIuOTAxIEwxMi42OTUsODkuNjAzIEwxMi42NjYsODkuNjIxIEwxMi42NjYsODkuNjIxIFoiIGlkPSJGaWxsLTkiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuMzcsOTAuODAxIEwxMi4zNyw4OS41NTQgTDEyLjM3LDkwLjgwMSIgaWQ9IkZpbGwtMTAiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNi4xMyw5My45MDEgQzUuMzc5LDkzLjgwOCA0LjgxNiw5My4xNjQgNC42OTEsOTIuNTI1IEMzLjg2LDg4LjI4NyAzLjU0LDgzLjc0MyAzLjUyNiw3MS4xNzMgQzMuNTExLDU4LjM4OSA0LjQyMyw1MS40MjggNC40MjMsNTEuNDI4IEM1LjEzNCw0Ny4yODIgNy4yMSw0Ni4yMzYgNy4yMSw0Ni4yMzYgQzcuMjEsNDYuMjM2IDgxLjY2NywzLjI1IDgyLjA2OSwzLjAxNyBDODIuMjkyLDIuODg4IDg0LjU1NiwxLjQzMyA4NS4yNjQsMy45NCBDODcuMjE0LDEwLjg0IDg2Ljc1MiwzNS44MjcgODUuNTM5LDQzLjgxOCBDODUuMTUsNDYuMzgzIDg0LjI5MSw0OS4wMzMgODIuNDgzLDUwLjEwMSBMNy4yMSw5My42NTMgQzYuODI4LDkzLjg3NCA2LjQ2MSw5My45NDEgNi4xMyw5My45MDEgQzYuMTMsOTMuOTAxIDMuMzQ5LDkzLjQ2IDMuMTI5LDkxLjc3NiBDMi41NjgsODcuNDk1IDEuOTc3LDgyLjk5NSAxLjk2Miw3MC40MjUgQzEuOTQ4LDU3LjY0MSAyLjg2LDUwLjY4IDIuODYsNTAuNjggQzMuNTcsNDYuNTM0IDUuNjQ3LDQ1LjQ4OSA1LjY0Nyw0NS40ODkgQzUuNjQ2LDQ1LjQ4OSA4LjA2NSw0NC4wOTIgMTIuMjQ1LDQxLjY3OSBMMTMuMTE2LDQxLjU2IEwxOS43MTUsMzcuNzMgTDE5Ljc2MSwzNy4yNjkgTDYuMTMsOTMuOTAxIiBpZD0iRmlsbC0xMSIgZmlsbD0iI0ZBRkFGQSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02LjMxNyw5NC4xNjEgTDYuMTAyLDk0LjE0OCBMNi4xMDEsOTQuMTQ4IEw1Ljg1Nyw5NC4xMDEgQzUuMTM4LDkzLjk0NSAzLjA4NSw5My4zNjUgMi44ODEsOTEuODA5IEMyLjMxMyw4Ny40NjkgMS43MjcsODIuOTk2IDEuNzEzLDcwLjQyNSBDMS42OTksNTcuNzcxIDIuNjA0LDUwLjcxOCAyLjYxMyw1MC42NDggQzMuMzM4LDQ2LjQxNyA1LjQ0NSw0NS4zMSA1LjUzNSw0NS4yNjYgTDEyLjE2Myw0MS40MzkgTDEzLjAzMyw0MS4zMiBMMTkuNDc5LDM3LjU3OCBMMTkuNTEzLDM3LjI0NCBDMTkuNTI2LDM3LjEwNyAxOS42NDcsMzcuMDA4IDE5Ljc4NiwzNy4wMjEgQzE5LjkyMiwzNy4wMzQgMjAuMDIzLDM3LjE1NiAyMC4wMDksMzcuMjkzIEwxOS45NSwzNy44ODIgTDEzLjE5OCw0MS44MDEgTDEyLjMyOCw0MS45MTkgTDUuNzcyLDQ1LjcwNCBDNS43NDEsNDUuNzIgMy43ODIsNDYuNzcyIDMuMTA2LDUwLjcyMiBDMy4wOTksNTAuNzgyIDIuMTk4LDU3LjgwOCAyLjIxMiw3MC40MjQgQzIuMjI2LDgyLjk2MyAyLjgwOSw4Ny40MiAzLjM3Myw5MS43MjkgQzMuNDY0LDkyLjQyIDQuMDYyLDkyLjg4MyA0LjY4Miw5My4xODEgQzQuNTY2LDkyLjk4NCA0LjQ4Niw5Mi43NzYgNC40NDYsOTIuNTcyIEMzLjY2NSw4OC41ODggMy4yOTEsODQuMzcgMy4yNzYsNzEuMTczIEMzLjI2Miw1OC41MiA0LjE2Nyw1MS40NjYgNC4xNzYsNTEuMzk2IEM0LjkwMSw0Ny4xNjUgNy4wMDgsNDYuMDU5IDcuMDk4LDQ2LjAxNCBDNy4wOTQsNDYuMDE1IDgxLjU0MiwzLjAzNCA4MS45NDQsMi44MDIgTDgxLjk3MiwyLjc4NSBDODIuODc2LDIuMjQ3IDgzLjY5MiwyLjA5NyA4NC4zMzIsMi4zNTIgQzg0Ljg4NywyLjU3MyA4NS4yODEsMy4wODUgODUuNTA0LDMuODcyIEM4Ny41MTgsMTEgODYuOTY0LDM2LjA5MSA4NS43ODUsNDMuODU1IEM4NS4yNzgsNDcuMTk2IDg0LjIxLDQ5LjM3IDgyLjYxLDUwLjMxNyBMNy4zMzUsOTMuODY5IEM2Ljk5OSw5NC4wNjMgNi42NTgsOTQuMTYxIDYuMzE3LDk0LjE2MSBMNi4zMTcsOTQuMTYxIFogTTYuMTcsOTMuNjU0IEM2LjQ2Myw5My42OSA2Ljc3NCw5My42MTcgNy4wODUsOTMuNDM3IEw4Mi4zNTgsNDkuODg2IEM4NC4xODEsNDguODA4IDg0Ljk2LDQ1Ljk3MSA4NS4yOTIsNDMuNzggQzg2LjQ2NiwzNi4wNDkgODcuMDIzLDExLjA4NSA4NS4wMjQsNC4wMDggQzg0Ljg0NiwzLjM3NyA4NC41NTEsMi45NzYgODQuMTQ4LDIuODE2IEM4My42NjQsMi42MjMgODIuOTgyLDIuNzY0IDgyLjIyNywzLjIxMyBMODIuMTkzLDMuMjM0IEM4MS43OTEsMy40NjYgNy4zMzUsNDYuNDUyIDcuMzM1LDQ2LjQ1MiBDNy4zMDQsNDYuNDY5IDUuMzQ2LDQ3LjUyMSA0LjY2OSw1MS40NzEgQzQuNjYyLDUxLjUzIDMuNzYxLDU4LjU1NiAzLjc3NSw3MS4xNzMgQzMuNzksODQuMzI4IDQuMTYxLDg4LjUyNCA0LjkzNiw5Mi40NzYgQzUuMDI2LDkyLjkzNyA1LjQxMiw5My40NTkgNS45NzMsOTMuNjE1IEM2LjA4Nyw5My42NCA2LjE1OCw5My42NTIgNi4xNjksOTMuNjU0IEw2LjE3LDkzLjY1NCBMNi4xNyw5My42NTQgWiIgaWQ9IkZpbGwtMTIiIGZpbGw9IiM0NTVBNjQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNy4zMTcsNjguOTgyIEM3LjgwNiw2OC43MDEgOC4yMDIsNjguOTI2IDguMjAyLDY5LjQ4NyBDOC4yMDIsNzAuMDQ3IDcuODA2LDcwLjczIDcuMzE3LDcxLjAxMiBDNi44MjksNzEuMjk0IDYuNDMzLDcxLjA2OSA2LjQzMyw3MC41MDggQzYuNDMzLDY5Ljk0OCA2LjgyOSw2OS4yNjUgNy4zMTcsNjguOTgyIiBpZD0iRmlsbC0xMyIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02LjkyLDcxLjEzMyBDNi42MzEsNzEuMTMzIDYuNDMzLDcwLjkwNSA2LjQzMyw3MC41MDggQzYuNDMzLDY5Ljk0OCA2LjgyOSw2OS4yNjUgNy4zMTcsNjguOTgyIEM3LjQ2LDY4LjkgNy41OTUsNjguODYxIDcuNzE0LDY4Ljg2MSBDOC4wMDMsNjguODYxIDguMjAyLDY5LjA5IDguMjAyLDY5LjQ4NyBDOC4yMDIsNzAuMDQ3IDcuODA2LDcwLjczIDcuMzE3LDcxLjAxMiBDNy4xNzQsNzEuMDk0IDcuMDM5LDcxLjEzMyA2LjkyLDcxLjEzMyBNNy43MTQsNjguNjc0IEM3LjU1Nyw2OC42NzQgNy4zOTIsNjguNzIzIDcuMjI0LDY4LjgyMSBDNi42NzYsNjkuMTM4IDYuMjQ2LDY5Ljg3OSA2LjI0Niw3MC41MDggQzYuMjQ2LDcwLjk5NCA2LjUxNyw3MS4zMiA2LjkyLDcxLjMyIEM3LjA3OCw3MS4zMiA3LjI0Myw3MS4yNzEgNy40MTEsNzEuMTc0IEM3Ljk1OSw3MC44NTcgOC4zODksNzAuMTE3IDguMzg5LDY5LjQ4NyBDOC4zODksNjkuMDAxIDguMTE3LDY4LjY3NCA3LjcxNCw2OC42NzQiIGlkPSJGaWxsLTE0IiBmaWxsPSIjODA5N0EyIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTYuOTIsNzAuOTQ3IEM2LjY0OSw3MC45NDcgNi42MjEsNzAuNjQgNi42MjEsNzAuNTA4IEM2LjYyMSw3MC4wMTcgNi45ODIsNjkuMzkyIDcuNDExLDY5LjE0NSBDNy41MjEsNjkuMDgyIDcuNjI1LDY5LjA0OSA3LjcxNCw2OS4wNDkgQzcuOTg2LDY5LjA0OSA4LjAxNSw2OS4zNTUgOC4wMTUsNjkuNDg3IEM4LjAxNSw2OS45NzggNy42NTIsNzAuNjAzIDcuMjI0LDcwLjg1MSBDNy4xMTUsNzAuOTE0IDcuMDEsNzAuOTQ3IDYuOTIsNzAuOTQ3IE03LjcxNCw2OC44NjEgQzcuNTk1LDY4Ljg2MSA3LjQ2LDY4LjkgNy4zMTcsNjguOTgyIEM2LjgyOSw2OS4yNjUgNi40MzMsNjkuOTQ4IDYuNDMzLDcwLjUwOCBDNi40MzMsNzAuOTA1IDYuNjMxLDcxLjEzMyA2LjkyLDcxLjEzMyBDNy4wMzksNzEuMTMzIDcuMTc0LDcxLjA5NCA3LjMxNyw3MS4wMTIgQzcuODA2LDcwLjczIDguMjAyLDcwLjA0NyA4LjIwMiw2OS40ODcgQzguMjAyLDY5LjA5IDguMDAzLDY4Ljg2MSA3LjcxNCw2OC44NjEiIGlkPSJGaWxsLTE1IiBmaWxsPSIjODA5N0EyIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTcuNDQ0LDg1LjM1IEM3LjcwOCw4NS4xOTggNy45MjEsODUuMzE5IDcuOTIxLDg1LjYyMiBDNy45MjEsODUuOTI1IDcuNzA4LDg2LjI5MiA3LjQ0NCw4Ni40NDQgQzcuMTgxLDg2LjU5NyA2Ljk2Nyw4Ni40NzUgNi45NjcsODYuMTczIEM2Ljk2Nyw4NS44NzEgNy4xODEsODUuNTAyIDcuNDQ0LDg1LjM1IiBpZD0iRmlsbC0xNiIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik03LjIzLDg2LjUxIEM3LjA3NCw4Ni41MSA2Ljk2Nyw4Ni4zODcgNi45NjcsODYuMTczIEM2Ljk2Nyw4NS44NzEgNy4xODEsODUuNTAyIDcuNDQ0LDg1LjM1IEM3LjUyMSw4NS4zMDUgNy41OTQsODUuMjg0IDcuNjU4LDg1LjI4NCBDNy44MTQsODUuMjg0IDcuOTIxLDg1LjQwOCA3LjkyMSw4NS42MjIgQzcuOTIxLDg1LjkyNSA3LjcwOCw4Ni4yOTIgNy40NDQsODYuNDQ0IEM3LjM2Nyw4Ni40ODkgNy4yOTQsODYuNTEgNy4yMyw4Ni41MSBNNy42NTgsODUuMDk4IEM3LjU1OCw4NS4wOTggNy40NTUsODUuMTI3IDcuMzUxLDg1LjE4OCBDNy4wMzEsODUuMzczIDYuNzgxLDg1LjgwNiA2Ljc4MSw4Ni4xNzMgQzYuNzgxLDg2LjQ4MiA2Ljk2Niw4Ni42OTcgNy4yMyw4Ni42OTcgQzcuMzMsODYuNjk3IDcuNDMzLDg2LjY2NiA3LjUzOCw4Ni42MDcgQzcuODU4LDg2LjQyMiA4LjEwOCw4NS45ODkgOC4xMDgsODUuNjIyIEM4LjEwOCw4NS4zMTMgNy45MjMsODUuMDk4IDcuNjU4LDg1LjA5OCIgaWQ9IkZpbGwtMTciIGZpbGw9IiM4MDk3QTIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNy4yMyw4Ni4zMjIgTDcuMTU0LDg2LjE3MyBDNy4xNTQsODUuOTM4IDcuMzMzLDg1LjYyOSA3LjUzOCw4NS41MTIgTDcuNjU4LDg1LjQ3MSBMNy43MzQsODUuNjIyIEM3LjczNCw4NS44NTYgNy41NTUsODYuMTY0IDcuMzUxLDg2LjI4MiBMNy4yMyw4Ni4zMjIgTTcuNjU4LDg1LjI4NCBDNy41OTQsODUuMjg0IDcuNTIxLDg1LjMwNSA3LjQ0NCw4NS4zNSBDNy4xODEsODUuNTAyIDYuOTY3LDg1Ljg3MSA2Ljk2Nyw4Ni4xNzMgQzYuOTY3LDg2LjM4NyA3LjA3NCw4Ni41MSA3LjIzLDg2LjUxIEM3LjI5NCw4Ni41MSA3LjM2Nyw4Ni40ODkgNy40NDQsODYuNDQ0IEM3LjcwOCw4Ni4yOTIgNy45MjEsODUuOTI1IDcuOTIxLDg1LjYyMiBDNy45MjEsODUuNDA4IDcuODE0LDg1LjI4NCA3LjY1OCw4NS4yODQiIGlkPSJGaWxsLTE4IiBmaWxsPSIjODA5N0EyIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTc3LjI3OCw3Ljc2OSBMNzcuMjc4LDUxLjQzNiBMMTAuMjA4LDkwLjE2IEwxMC4yMDgsNDYuNDkzIEw3Ny4yNzgsNy43NjkiIGlkPSJGaWxsLTE5IiBmaWxsPSIjNDU1QTY0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEwLjA4Myw5MC4zNzUgTDEwLjA4Myw0Ni40MjEgTDEwLjE0Niw0Ni4zODUgTDc3LjQwMyw3LjU1NCBMNzcuNDAzLDUxLjUwOCBMNzcuMzQxLDUxLjU0NCBMMTAuMDgzLDkwLjM3NSBMMTAuMDgzLDkwLjM3NSBaIE0xMC4zMzMsNDYuNTY0IEwxMC4zMzMsODkuOTQ0IEw3Ny4xNTQsNTEuMzY1IEw3Ny4xNTQsNy45ODUgTDEwLjMzMyw0Ni41NjQgTDEwLjMzMyw0Ni41NjQgWiIgaWQ9IkZpbGwtMjAiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMjUuNzM3LDg4LjY0NyBMMTE4LjA5OCw5MS45ODEgTDExOC4wOTgsODQgTDEwNi42MzksODguNzEzIEwxMDYuNjM5LDk2Ljk4MiBMOTksMTAwLjMxNSBMMTEyLjM2OSwxMDMuOTYxIEwxMjUuNzM3LDg4LjY0NyIgaWQ9IkltcG9ydGVkLUxheWVycy1Db3B5LTIiIGZpbGw9IiM0NTVBNjQiIHNrZXRjaDp0eXBlPSJNU1NoYXBlR3JvdXAiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+")},module.exports=RotateInstructions},{"./util.js":29}],24:[function(_dereq_,module,exports){function ComplementaryFilter(kFilter){this.kFilter=kFilter,this.currentAccelMeasurement=new SensorSample,this.currentGyroMeasurement=new SensorSample,this.previousGyroMeasurement=new SensorSample,Util.isIOS()?this.filterQ=new MathUtil.Quaternion(-1,0,0,1):this.filterQ=new MathUtil.Quaternion(1,0,0,1),this.previousFilterQ=new MathUtil.Quaternion,this.previousFilterQ.copy(this.filterQ),this.accelQ=new MathUtil.Quaternion,this.isOrientationInitialized=!1,this.estimatedGravity=new MathUtil.Vector3,this.measuredGravity=new MathUtil.Vector3,this.gyroIntegralQ=new MathUtil.Quaternion}var SensorSample=_dereq_("./sensor-sample.js"),MathUtil=_dereq_("../math-util.js"),Util=_dereq_("../util.js");ComplementaryFilter.prototype.addAccelMeasurement=function(vector,timestampS){this.currentAccelMeasurement.set(vector,timestampS)},ComplementaryFilter.prototype.addGyroMeasurement=function(vector,timestampS){this.currentGyroMeasurement.set(vector,timestampS);var deltaT=timestampS-this.previousGyroMeasurement.timestampS;Util.isTimestampDeltaValid(deltaT)&&this.run_(),this.previousGyroMeasurement.copy(this.currentGyroMeasurement)},ComplementaryFilter.prototype.run_=function(){if(!this.isOrientationInitialized)return this.accelQ=this.accelToQuaternion_(this.currentAccelMeasurement.sample),this.previousFilterQ.copy(this.accelQ),void(this.isOrientationInitialized=!0);var deltaT=this.currentGyroMeasurement.timestampS-this.previousGyroMeasurement.timestampS,gyroDeltaQ=this.gyroToQuaternionDelta_(this.currentGyroMeasurement.sample,deltaT);this.gyroIntegralQ.multiply(gyroDeltaQ),this.filterQ.copy(this.previousFilterQ),this.filterQ.multiply(gyroDeltaQ);var invFilterQ=new MathUtil.Quaternion;invFilterQ.copy(this.filterQ),invFilterQ.inverse(),this.estimatedGravity.set(0,0,-1),this.estimatedGravity.applyQuaternion(invFilterQ),this.estimatedGravity.normalize(),this.measuredGravity.copy(this.currentAccelMeasurement.sample),this.measuredGravity.normalize();var deltaQ=new MathUtil.Quaternion;deltaQ.setFromUnitVectors(this.estimatedGravity,this.measuredGravity),deltaQ.inverse(),Util.isDebug()&&console.log("Delta: %d deg, G_est: (%s, %s, %s), G_meas: (%s, %s, %s)",MathUtil.radToDeg*Util.getQuaternionAngle(deltaQ),this.estimatedGravity.x.toFixed(1),this.estimatedGravity.y.toFixed(1),this.estimatedGravity.z.toFixed(1),this.measuredGravity.x.toFixed(1),this.measuredGravity.y.toFixed(1),this.measuredGravity.z.toFixed(1));var targetQ=new MathUtil.Quaternion;targetQ.copy(this.filterQ),targetQ.multiply(deltaQ),this.filterQ.slerp(targetQ,1-this.kFilter),this.previousFilterQ.copy(this.filterQ)},ComplementaryFilter.prototype.getOrientation=function(){return this.filterQ},ComplementaryFilter.prototype.accelToQuaternion_=function(accel){var normAccel=new MathUtil.Vector3;normAccel.copy(accel),normAccel.normalize();var quat=new MathUtil.Quaternion;return quat.setFromUnitVectors(new MathUtil.Vector3(0,0,-1),normAccel),quat.inverse(),quat},ComplementaryFilter.prototype.gyroToQuaternionDelta_=function(gyro,dt){var quat=new MathUtil.Quaternion,axis=new MathUtil.Vector3;return axis.copy(gyro),axis.normalize(),quat.setFromAxisAngle(axis,gyro.length()*dt),quat},module.exports=ComplementaryFilter},{"../math-util.js":20,"../util.js":29,"./sensor-sample.js":27}],25:[function(_dereq_,module,exports){function FusionPoseSensor(){this.deviceId="webvr-polyfill:fused",this.deviceName="VR Position Device (webvr-polyfill:fused)",this.accelerometer=new MathUtil.Vector3,this.gyroscope=new MathUtil.Vector3,this.start(),this.filter=new ComplementaryFilter(window.WebVRConfig.K_FILTER),this.posePredictor=new PosePredictor(window.WebVRConfig.PREDICTION_TIME_S),this.touchPanner=new TouchPanner,this.filterToWorldQ=new MathUtil.Quaternion,Util.isIOS()?this.filterToWorldQ.setFromAxisAngle(new MathUtil.Vector3(1,0,0),Math.PI/2):this.filterToWorldQ.setFromAxisAngle(new MathUtil.Vector3(1,0,0),-Math.PI/2),this.inverseWorldToScreenQ=new MathUtil.Quaternion,this.worldToScreenQ=new MathUtil.Quaternion,this.originalPoseAdjustQ=new MathUtil.Quaternion,this.originalPoseAdjustQ.setFromAxisAngle(new MathUtil.Vector3(0,0,1),-window.orientation*Math.PI/180),this.setScreenTransform_(),Util.isLandscapeMode()&&this.filterToWorldQ.multiply(this.inverseWorldToScreenQ),this.resetQ=new MathUtil.Quaternion,this.isFirefoxAndroid=Util.isFirefoxAndroid(),this.isIOS=Util.isIOS(),this.orientationOut_=new Float32Array(4)}var ComplementaryFilter=_dereq_("./complementary-filter.js"),PosePredictor=_dereq_("./pose-predictor.js"),TouchPanner=_dereq_("../touch-panner.js"),MathUtil=_dereq_("../math-util.js"),Util=_dereq_("../util.js");FusionPoseSensor.prototype.getPosition=function(){return null},FusionPoseSensor.prototype.getOrientation=function(){var orientation=this.filter.getOrientation();this.predictedQ=this.posePredictor.getPrediction(orientation,this.gyroscope,this.previousTimestampS);var out=new MathUtil.Quaternion;return out.copy(this.filterToWorldQ),out.multiply(this.resetQ),window.WebVRConfig.TOUCH_PANNER_DISABLED||out.multiply(this.touchPanner.getOrientation()),out.multiply(this.predictedQ),out.multiply(this.worldToScreenQ),window.WebVRConfig.YAW_ONLY&&(out.x=0,out.z=0,out.normalize()),this.orientationOut_[0]=out.x,this.orientationOut_[1]=out.y,this.orientationOut_[2]=out.z,this.orientationOut_[3]=out.w,this.orientationOut_},FusionPoseSensor.prototype.resetPose=function(){this.resetQ.copy(this.filter.getOrientation()),this.resetQ.x=0,this.resetQ.y=0,this.resetQ.z*=-1,this.resetQ.normalize(),Util.isLandscapeMode()&&this.resetQ.multiply(this.inverseWorldToScreenQ),this.resetQ.multiply(this.originalPoseAdjustQ),window.WebVRConfig.TOUCH_PANNER_DISABLED||this.touchPanner.resetSensor()},FusionPoseSensor.prototype.onDeviceMotion_=function(deviceMotion){this.updateDeviceMotion_(deviceMotion)},FusionPoseSensor.prototype.updateDeviceMotion_=function(deviceMotion){var accGravity=deviceMotion.accelerationIncludingGravity,rotRate=deviceMotion.rotationRate,timestampS=deviceMotion.timeStamp/1e3,deltaS=timestampS-this.previousTimestampS;if(deltaS<=Util.MIN_TIMESTEP||deltaS>Util.MAX_TIMESTEP)return console.warn("Invalid timestamps detected. Time step between successive gyroscope sensor samples is very small or not monotonic"),void(this.previousTimestampS=timestampS);this.accelerometer.set(-accGravity.x,-accGravity.y,-accGravity.z),Util.isR7()?this.gyroscope.set(-rotRate.beta,rotRate.alpha,rotRate.gamma):this.gyroscope.set(rotRate.alpha,rotRate.beta,rotRate.gamma),(this.isIOS||this.isFirefoxAndroid)&&this.gyroscope.multiplyScalar(Math.PI/180),this.filter.addAccelMeasurement(this.accelerometer,timestampS),this.filter.addGyroMeasurement(this.gyroscope,timestampS),this.previousTimestampS=timestampS},FusionPoseSensor.prototype.onOrientationChange_=function(screenOrientation){this.setScreenTransform_()},FusionPoseSensor.prototype.onMessage_=function(event){var message=event.data;message&&message.type&&"devicemotion"===message.type.toLowerCase()&&this.updateDeviceMotion_(message.deviceMotionEvent)},FusionPoseSensor.prototype.setScreenTransform_=function(){switch(this.worldToScreenQ.set(0,0,0,1),window.orientation){case 0:break;case 90:this.worldToScreenQ.setFromAxisAngle(new MathUtil.Vector3(0,0,1),-Math.PI/2);break;case-90:this.worldToScreenQ.setFromAxisAngle(new MathUtil.Vector3(0,0,1),Math.PI/2)}this.inverseWorldToScreenQ.copy(this.worldToScreenQ),this.inverseWorldToScreenQ.inverse()},FusionPoseSensor.prototype.start=function(){this.onDeviceMotionCallback_=this.onDeviceMotion_.bind(this),this.onOrientationChangeCallback_=this.onOrientationChange_.bind(this),this.onMessageCallback_=this.onMessage_.bind(this),Util.isIOS()&&Util.isInsideCrossDomainIFrame()&&window.addEventListener("message",this.onMessageCallback_),window.addEventListener("orientationchange",this.onOrientationChangeCallback_),window.addEventListener("devicemotion",this.onDeviceMotionCallback_)},FusionPoseSensor.prototype.stop=function(){window.removeEventListener("devicemotion",this.onDeviceMotionCallback_),window.removeEventListener("orientationchange",this.onOrientationChangeCallback_),window.removeEventListener("message",this.onMessageCallback_)},module.exports=FusionPoseSensor},{"../math-util.js":20,"../touch-panner.js":28,"../util.js":29,"./complementary-filter.js":24,"./pose-predictor.js":26}],26:[function(_dereq_,module,exports){function PosePredictor(predictionTimeS){this.predictionTimeS=predictionTimeS,this.previousQ=new MathUtil.Quaternion,this.previousTimestampS=null,this.deltaQ=new MathUtil.Quaternion,this.outQ=new MathUtil.Quaternion}var MathUtil=_dereq_("../math-util"),Util=_dereq_("../util");PosePredictor.prototype.getPrediction=function(currentQ,gyro,timestampS){if(!this.previousTimestampS)return this.previousQ.copy(currentQ),this.previousTimestampS=timestampS,currentQ;var axis=new MathUtil.Vector3;axis.copy(gyro),axis.normalize();var angularSpeed=gyro.length();if(angularSpeed<20*MathUtil.degToRad)return Util.isDebug()&&console.log("Moving slowly, at %s deg/s: no prediction",(MathUtil.radToDeg*angularSpeed).toFixed(1)),this.outQ.copy(currentQ),this.previousQ.copy(currentQ),this.outQ;this.previousTimestampS;var predictAngle=angularSpeed*this.predictionTimeS;return this.deltaQ.setFromAxisAngle(axis,predictAngle),this.outQ.copy(this.previousQ),this.outQ.multiply(this.deltaQ),this.previousQ.copy(currentQ),this.previousTimestampS=timestampS,this.outQ},module.exports=PosePredictor},{"../math-util":20,"../util":29}],27:[function(_dereq_,module,exports){function SensorSample(sample,timestampS){this.set(sample,timestampS)}SensorSample.prototype.set=function(sample,timestampS){this.sample=sample,this.timestampS=timestampS},SensorSample.prototype.copy=function(sensorSample){this.set(sensorSample.sample,sensorSample.timestampS)},module.exports=SensorSample},{}],28:[function(_dereq_,module,exports){function TouchPanner(){window.addEventListener("touchstart",this.onTouchStart_.bind(this)),window.addEventListener("touchmove",this.onTouchMove_.bind(this)),window.addEventListener("touchend",this.onTouchEnd_.bind(this)),this.isTouching=!1,this.rotateStart=new MathUtil.Vector2,this.rotateEnd=new MathUtil.Vector2,this.rotateDelta=new MathUtil.Vector2,this.theta=0,this.orientation=new MathUtil.Quaternion}var MathUtil=_dereq_("./math-util.js"),Util=_dereq_("./util.js");TouchPanner.prototype.getOrientation=function(){return this.orientation.setFromEulerXYZ(0,0,this.theta),this.orientation},TouchPanner.prototype.resetSensor=function(){this.theta=0},TouchPanner.prototype.onTouchStart_=function(e){e.touches&&1==e.touches.length&&(this.rotateStart.set(e.touches[0].pageX,e.touches[0].pageY),this.isTouching=!0)},TouchPanner.prototype.onTouchMove_=function(e){if(this.isTouching){this.rotateEnd.set(e.touches[0].pageX,e.touches[0].pageY),this.rotateDelta.subVectors(this.rotateEnd,this.rotateStart),this.rotateStart.copy(this.rotateEnd),Util.isIOS()&&(this.rotateDelta.x*=-1);var element=document.body;this.theta+=2*Math.PI*this.rotateDelta.x/element.clientWidth*.5}},TouchPanner.prototype.onTouchEnd_=function(e){this.isTouching=!1},module.exports=TouchPanner},{"./math-util.js":20,"./util.js":29}],29:[function(_dereq_,module,exports){var Util=window.Util||{};Util.MIN_TIMESTEP=.001,Util.MAX_TIMESTEP=1,Util.base64=function(mimeType,base64){return"data:"+mimeType+";base64,"+base64},Util.clamp=function(value,min,max){return Math.min(Math.max(min,value),max)},Util.lerp=function(a,b,t){return a+(b-a)*t},Util.race=function(promises){return Promise.race?Promise.race(promises):new Promise(function(resolve,reject){for(var i=0;iUtil.MAX_TIMESTEP))},Util.getScreenWidth=function(){return Math.max(window.screen.width,window.screen.height)*window.devicePixelRatio},Util.getScreenHeight=function(){return Math.min(window.screen.width,window.screen.height)*window.devicePixelRatio},Util.requestFullscreen=function(element){if(Util.isWebViewAndroid())return!1;if(element.requestFullscreen)element.requestFullscreen();else if(element.webkitRequestFullscreen)element.webkitRequestFullscreen();else if(element.mozRequestFullScreen)element.mozRequestFullScreen();else{if(!element.msRequestFullscreen)return!1;element.msRequestFullscreen()}return!0},Util.exitFullscreen=function(){if(document.exitFullscreen)document.exitFullscreen();else if(document.webkitExitFullscreen)document.webkitExitFullscreen();else if(document.mozCancelFullScreen)document.mozCancelFullScreen();else{if(!document.msExitFullscreen)return!1;document.msExitFullscreen()}return!0},Util.getFullscreenElement=function(){return document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement},Util.linkProgram=function(gl,vertexSource,fragmentSource,attribLocationMap){var vertexShader=gl.createShader(gl.VERTEX_SHADER);gl.shaderSource(vertexShader,vertexSource),gl.compileShader(vertexShader);var fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(fragmentShader,fragmentSource),gl.compileShader(fragmentShader);var program=gl.createProgram();gl.attachShader(program,vertexShader),gl.attachShader(program,fragmentShader);for(var attribName in attribLocationMap)gl.bindAttribLocation(program,attribLocationMap[attribName],attribName);return gl.linkProgram(program),gl.deleteShader(vertexShader),gl.deleteShader(fragmentShader),program},Util.getProgramUniforms=function(gl,program){for(var uniforms={},uniformCount=gl.getProgramParameter(program,gl.ACTIVE_UNIFORMS),uniformName="",i=0;i-1?url.split("/")[2]:url.split("/")[0],domain=domain.split(":")[0]},module.exports=Util},{}],30:[function(_dereq_,module,exports){function ViewerSelector(){try{this.selectedKey=localStorage.getItem(VIEWER_KEY)}catch(error){console.error("Failed to load viewer profile: %s",error)}this.selectedKey||(this.selectedKey=DEFAULT_VIEWER),this.dialog=this.createDialog_(DeviceInfo.Viewers),this.root=null,this.onChangeCallbacks_=[]}var DeviceInfo=_dereq_("./device-info.js"),DEFAULT_VIEWER=(_dereq_("./util.js"),"CardboardV1"),VIEWER_KEY="WEBVR_CARDBOARD_VIEWER";ViewerSelector.prototype.show=function(root){this.root=root,root.appendChild(this.dialog),this.dialog.querySelector("#"+this.selectedKey).checked=!0,this.dialog.style.display="block"},ViewerSelector.prototype.hide=function(){this.root&&this.root.contains(this.dialog)&&this.root.removeChild(this.dialog),this.dialog.style.display="none"},ViewerSelector.prototype.getCurrentViewer=function(){return DeviceInfo.Viewers[this.selectedKey]},ViewerSelector.prototype.getSelectedKey_=function(){var input=this.dialog.querySelector("input[name=field]:checked");return input?input.id:null},ViewerSelector.prototype.onChange=function(cb){this.onChangeCallbacks_.push(cb)},ViewerSelector.prototype.fireOnChange_=function(viewer){for(var i=0;i0?nativeDisplays:polyfillDisplays})},WebVRPolyfill.prototype.getVRDevices=function(){console.warn("getVRDevices is deprecated. Please update your code to use getVRDisplays instead.");var self=this;return new Promise(function(resolve,reject){try{if(!self.devicesPopulated){if(self.nativeWebVRAvailable)return navigator.getVRDisplays(function(displays){for(var i=0;i0;isIntersected&&!this.selectedHotspots[id]&&(this.emit("focus",id),this.focus_(id)),!isIntersected&&this.selectedHotspots[id]&&(this.emit("blur",id),this.blur_(id)),isIntersected?this.selectedHotspots[id]=!0:delete this.selectedHotspots[id]}},HotspotRenderer.prototype.setVisibility=function(isVisible){this.hotspotRoot.visible=isVisible},HotspotRenderer.prototype.onTouchStart_=function(e){this.worldRenderer.isVRMode()||this.updateTouch_(e),this.update(this.worldRenderer.camera),this.downHotspots={};for(var id in this.selectedHotspots)this.downHotspots[id]=!0,this.down_(id);return!1},HotspotRenderer.prototype.onTouchEnd_=function(e){if(Util.isEmptyObject(this.downHotspots))this.emit("click");else for(var id in this.downHotspots)this.emit("click",id),this.up_(id),e.preventDefault()},HotspotRenderer.prototype.updateTouch_=function(e){var size=this.getSize_(),touch=e.touches[0];this.pointer.x=touch.clientX/size.width*2-1,this.pointer.y=-touch.clientY/size.height*2+1},HotspotRenderer.prototype.onMouseDown_=function(e){this.updateMouse_(e),this.downHotspots={};for(var id in this.selectedHotspots)this.downHotspots[id]=!0,this.down_(id)},HotspotRenderer.prototype.onMouseMove_=function(e){this.updateMouse_(e)},HotspotRenderer.prototype.onMouseUp_=function(e){if(this.updateMouse_(e),Util.isEmptyObject(this.downHotspots))this.emit("click");else for(var id in this.selectedHotspots)id in this.downHotspots&&(this.emit("click",id),this.up_(id))},HotspotRenderer.prototype.updateMouse_=function(e){var size=this.getSize_();this.pointer.x=e.clientX/size.width*2-1,this.pointer.y=-e.clientY/size.height*2+1},HotspotRenderer.prototype.getSize_=function(){this.worldRenderer.renderer.domElement;return this.worldRenderer.renderer.getSize()},HotspotRenderer.prototype.createHotspot_=function(radius,distance){var innerGeometry=new THREE.CircleGeometry(radius,32),innerMaterial=new THREE.MeshBasicMaterial({color:16777215,side:THREE.DoubleSide,transparent:!0,opacity:.8,depthTest:!1}),inner=new THREE.Mesh(innerGeometry,innerMaterial);inner.name="inner";var outerMaterial=new THREE.MeshBasicMaterial({color:16777215,side:THREE.DoubleSide,transparent:!0,opacity:.5,depthTest:!1}),outerGeometry=new THREE.RingGeometry(.85*radius,radius,32),outer=new THREE.Mesh(outerGeometry,outerMaterial);outer.name="outer";var hotspot=new THREE.Object3D;return hotspot.position.z=-distance,hotspot.scale.copy(NORMAL_SCALE),hotspot.add(inner),hotspot.add(outer),hotspot},HotspotRenderer.prototype.fadeOffCenterHotspots_=function(camera){var lookAt=new THREE.Vector3(1,0,0);lookAt.applyQuaternion(camera.quaternion),lookAt.applyQuaternion(camera.parent.quaternion);for(var id in this.hotspots){var opacity,angle=this.hotspots[id].position.angleTo(lookAt),angleDeg=THREE.Math.radToDeg(angle);if(angleDeg<35)opacity=1;else if(angleDeg>60)opacity=0;else{opacity=(60-angleDeg)/25}this.setOpacity_(id,opacity)}},HotspotRenderer.prototype.focus_=function(id){var hotspot=this.hotspots[id];this.tween=new TWEEN.Tween(hotspot.scale).to(FOCUS_SCALE,200).easing(TWEEN.Easing.Quadratic.InOut).start(),this.worldRenderer.isVRMode()&&(this.timeForHospotClick=setTimeout(function(){this.emit("click",id)},1200))},HotspotRenderer.prototype.blur_=function(id){var hotspot=this.hotspots[id];this.tween=new TWEEN.Tween(hotspot.scale).to(NORMAL_SCALE,200).easing(TWEEN.Easing.Quadratic.InOut).start(),this.timeForHospotClick&&clearTimeout(this.timeForHospotClick)},HotspotRenderer.prototype.down_=function(id){var outer=this.hotspots[id].getObjectByName("inner");this.tween=new TWEEN.Tween(outer.material.color).to(ACTIVE_COLOR,100).start()},HotspotRenderer.prototype.up_=function(id){var outer=this.hotspots[id].getObjectByName("inner");this.tween=new TWEEN.Tween(outer.material.color).to(INACTIVE_COLOR,100).start()},HotspotRenderer.prototype.setOpacity_=function(id,opacity){var hotspot=this.hotspots[id],outer=hotspot.getObjectByName("outer"),inner=hotspot.getObjectByName("inner");outer.material.opacity=.5*opacity,inner.material.opacity=.8*opacity},module.exports=HotspotRenderer},{"../util":45,"@tweenjs/tween.js":1,eventemitter3:3}],36:[function(_dereq_,module,exports){function IFrameMessageReceiver(){window.addEventListener("message",this.onMessage_.bind(this),!1)}var EventEmitter=_dereq_("eventemitter3"),Message=_dereq_("../message"),Util=_dereq_("../util");(IFrameMessageReceiver.prototype=new EventEmitter).onMessage_=function(event){Util.isDebug()&&console.log("onMessage_",event);var message=event.data,type=message.type.toLowerCase(),data=message.data;switch(type){case Message.SET_CONTENT:case Message.SET_VOLUME:case Message.MUTED:case Message.ADD_HOTSPOT:case Message.PLAY:case Message.PAUSE:case Message.SET_CURRENT_TIME:case Message.GET_POSITION:case Message.SET_FULLSCREEN:this.emit(type,data);break;default:Util.isDebug()&&console.warn("Got unknown message of type %s from %s",message.type,message.origin)}},module.exports=IFrameMessageReceiver},{"../message":44,"../util":45,eventemitter3:3}],37:[function(_dereq_,module,exports){function LoadingIndicator(){this.el=this.build_(),document.body.appendChild(this.el),this.show()}LoadingIndicator.prototype.build_=function(){var overlay=document.createElement("div"),s=overlay.style;s.position="fixed",s.top=0,s.left=0,s.width="100%",s.height="100%",s.background="#eee";var img=document.createElement("img");return img.src="images/loading.gif",(s=img.style).position="absolute",s.top="50%",s.left="50%",s.transform="translate(-50%, -50%)",overlay.appendChild(img),overlay},LoadingIndicator.prototype.hide=function(){this.el.style.display="none"},LoadingIndicator.prototype.show=function(){this.el.style.display="block"},module.exports=LoadingIndicator},{}],38:[function(_dereq_,module,exports){function onVideoTap(){worldRenderer.videoProxy.play(),hidePlayButton(),document.body.removeEventListener("touchend",onVideoTap)}function onGetCurrentTime(){var time=worldRenderer.videoProxy.getCurrentTime();Util.sendParentMessage({type:"timeupdate",data:time})}function onApiError(message){console.error(message),Util.sendParentMessage({type:"error",data:{message:message}})}function onPlay(){Util.sendParentMessage({type:"paused",data:!1})}function onPause(){Util.sendParentMessage({type:"paused",data:!0})}function onEnded(){Util.sendParentMessage({type:"ended",data:!0})}function showError(message){loadIndicator.hide(),message=encodeURI(message).replace(/%20/g," ");var error=document.querySelector("#error");error.classList.add("visible"),error.querySelector(".message").innerHTML=message,error.querySelector(".title").innerHTML="Error"}function showPlayButton(){document.querySelector("#play-overlay").classList.add("visible")}function hidePlayButton(){document.querySelector("#play-overlay").classList.remove("visible")}function showStats(){stats.setMode(0),stats.domElement.style.position="absolute",stats.domElement.style.left="0px",stats.domElement.style.bottom="0px",document.body.appendChild(stats.domElement)}function loop(time){worldRenderer.vrDisplay?worldRenderer.vrDisplay.requestAnimationFrame(loop):requestAnimationFrame(loop),stats.begin(),worldRenderer.videoProxy&&worldRenderer.videoProxy.update(time),worldRenderer.render(time),worldRenderer.submitFrame(),stats.end()}var loadIndicator=new(_dereq_("./loading-indicator"));_dereq_("es6-promise").polyfill();var IFrameMessageReceiver=_dereq_("./iframe-message-receiver"),Message=_dereq_("../message"),SceneInfo=_dereq_("./scene-info"),Stats=_dereq_("../../node_modules/stats-js/build/stats.min"),Util=_dereq_("../util"),WorldRenderer=(_dereq_("webvr-polyfill"),_dereq_("./world-renderer")),receiver=new IFrameMessageReceiver;receiver.on(Message.PLAY,function(){worldRenderer.videoProxy?worldRenderer.videoProxy.play():onApiError("Attempt to pause, but no video found.")}),receiver.on(Message.PAUSE,function(){worldRenderer.videoProxy?worldRenderer.videoProxy.pause():onApiError("Attempt to pause, but no video found.")}),receiver.on(Message.ADD_HOTSPOT,function(e){Util.isDebug()&&console.log("onAddHotspot",e);var pitch=parseFloat(e.pitch),yaw=parseFloat(e.yaw),radius=parseFloat(e.radius),distance=parseFloat(e.distance),id=e.id;worldRenderer.hotspotRenderer.add(pitch,yaw,radius,distance,id)}),receiver.on(Message.SET_CONTENT,function(e){Util.isDebug()&&console.log("onSetContent",e),worldRenderer.hotspotRenderer.clearAll(),worldRenderer.sphereRenderer.setOpacity(0,500).then(function(){var scene=SceneInfo.loadFromAPIParams(e.contentInfo);worldRenderer.destroy();var url=scene.getCurrentUrl();return window.history.pushState(null,"VR View",url),worldRenderer.setScene(scene)}).then(function(){worldRenderer.sphereRenderer.setOpacity(1,500)})}),receiver.on(Message.SET_VOLUME,function(e){worldRenderer.videoProxy?(worldRenderer.videoProxy.setVolume(e.volumeLevel),volume=e.volumeLevel,Util.sendParentMessage({type:"volumechange",data:e.volumeLevel})):onApiError("Attempt to set volume, but no video found.")}),receiver.on(Message.MUTED,function(e){worldRenderer.videoProxy?(worldRenderer.videoProxy.mute(e.muteState),Util.sendParentMessage({type:"muted",data:e.muteState})):onApiError("Attempt to mute, but no video found.")}),receiver.on(Message.SET_CURRENT_TIME,function(time){worldRenderer.videoProxy?(worldRenderer.videoProxy.setCurrentTime(time),onGetCurrentTime()):onApiError("Attempt to pause, but no video found.")}),receiver.on(Message.GET_POSITION,function(){Util.sendParentMessage({type:"getposition",data:{Yaw:180*worldRenderer.camera.rotation.y/Math.PI,Pitch:180*worldRenderer.camera.rotation.x/Math.PI}})}),receiver.on(Message.SET_FULLSCREEN,function(){worldRenderer.videoProxy?worldRenderer.manager.onFSClick_():onApiError("Attempt to set fullscreen, but no video found.")}),window.addEventListener("load",function(){Util.isWebGLEnabled()?(worldRenderer.setScene(scene),scene.isDebug&&showStats(),scene.isYawOnly&&(WebVRConfig=window.WebVRConfig||{},WebVRConfig.YAW_ONLY=!0),requestAnimationFrame(loop)):showError("WebGL not supported.")});var stats=new Stats,scene=SceneInfo.loadFromGetParams(),worldRenderer=new WorldRenderer(scene);worldRenderer.on("error",function(message){showError("Render: "+message)}),worldRenderer.on("load",function(event){event.videoElement&&(SceneInfo.loadFromGetParams(),Util.isMobile()?(showPlayButton(),document.body.addEventListener("touchend",onVideoTap)):event.videoElement.play(),event.videoElement.addEventListener("pause",onPause),event.videoElement.addEventListener("play",onPlay),event.videoElement.addEventListener("timeupdate",onGetCurrentTime),event.videoElement.addEventListener("ended",onEnded));loadIndicator.hide(),Util.isMobile()||worldRenderer.sceneInfo.video||worldRenderer.sceneInfo.isAutopanOff||worldRenderer.autopan(),isReadySent||(event.videoElement?Util.sendParentMessage({type:"ready",data:{duration:event.videoElement.duration}}):Util.sendParentMessage({type:"ready"}),isReadySent=!0)}),worldRenderer.on("modechange",function(mode){Util.sendParentMessage({type:"modechange",data:{mode:mode}})}),worldRenderer.on("ended",onEnded),worldRenderer.on("play",onPlay),worldRenderer.hotspotRenderer.on("click",function(id){Util.sendParentMessage({type:"click",data:{id:id}})}),window.worldRenderer=worldRenderer;var isReadySent=!1,volume=0},{"../../node_modules/stats-js/build/stats.min":6,"../message":44,"../util":45,"./iframe-message-receiver":36,"./loading-indicator":37,"./scene-info":40,"./world-renderer":43,"es6-promise":2,"webvr-polyfill":22}],39:[function(_dereq_,module,exports){function ReticleRenderer(camera){this.camera=camera,this.reticle=this.createReticle_(),this.reticle.position.z=-.97,camera.add(this.reticle),this.setVisibility(!1)}ReticleRenderer.prototype.setVisibility=function(isVisible){this.reticle.visible=isVisible},ReticleRenderer.prototype.createReticle_=function(){var geometry=new THREE.TorusGeometry(.02,.005,10,20),material=new THREE.MeshBasicMaterial({color:0});return new THREE.Mesh(geometry,material)},module.exports=ReticleRenderer},{}],40:[function(_dereq_,module,exports){function SceneInfo(opt_params){var params=opt_params||{};params.player={loop:opt_params.loop,volume:opt_params.volume,muted:opt_params.muted},this.image=void 0!==params.image?encodeURI(params.image):void 0,this.preview=void 0!==params.preview?encodeURI(params.preview):void 0,this.video=void 0!==params.video?encodeURI(params.video):void 0,this.defaultYaw=THREE.Math.degToRad(params.defaultYaw||0),this.isStereo=Util.parseBoolean(params.isStereo),this.isYawOnly=Util.parseBoolean(params.isYawOnly),this.isDebug=Util.parseBoolean(params.isDebug),this.isVROff=Util.parseBoolean(params.isVROff),this.isAutopanOff=Util.parseBoolean(params.isAutopanOff),this.loop=Util.parseBoolean(params.player.loop),this.volume=parseFloat(params.player.volume?params.player.volume:"1"),this.muted=Util.parseBoolean(params.player.muted),this.hideFullscreenButton=Util.parseBoolean(params.hideFullscreenButton)}var Util=_dereq_("../util"),CAMEL_TO_UNDERSCORE={video:"video",image:"image",preview:"preview",loop:"loop",volume:"volume",muted:"muted",isStereo:"is_stereo",defaultYaw:"default_yaw",isYawOnly:"is_yaw_only",isDebug:"is_debug",isVROff:"is_vr_off",isAutopanOff:"is_autopan_off",hideFullscreenButton:"hide_fullscreen_button"};SceneInfo.loadFromGetParams=function(){var params={};for(var camelCase in CAMEL_TO_UNDERSCORE){var underscore=CAMEL_TO_UNDERSCORE[camelCase];params[camelCase]=Util.getQueryParameter(underscore)||(window.WebVRConfig&&window.WebVRConfig.PLAYER?window.WebVRConfig.PLAYER[underscore]:"")}var scene=new SceneInfo(params);return scene.isValid()||console.warn("Invalid scene: %s",scene.errorMessage),scene},SceneInfo.loadFromAPIParams=function(underscoreParams){var params={};for(var camelCase in CAMEL_TO_UNDERSCORE){var underscore=CAMEL_TO_UNDERSCORE[camelCase];underscoreParams[underscore]&&(params[camelCase]=underscoreParams[underscore])}var scene=new SceneInfo(params);return scene.isValid()||console.warn("Invalid scene: %s",scene.errorMessage),scene},SceneInfo.prototype.isValid=function(){return this.image||this.video?this.image&&!this.isValidImage_(this.image)?(this.errorMessage="Invalid image URL: "+this.image,!1):(this.errorMessage=null,!0):(this.errorMessage="Either image or video URL must be specified.",!1)},SceneInfo.prototype.getCurrentUrl=function(){var url=location.protocol+"//"+location.host+location.pathname+"?";for(var camelCase in CAMEL_TO_UNDERSCORE){var underscore=CAMEL_TO_UNDERSCORE[camelCase],value=this[camelCase];void 0!==value&&(url+=underscore+"="+value+"&")}return url.substring(0,url.length-1)},SceneInfo.prototype.isValidImage_=function(imageUrl){return!0},module.exports=SceneInfo},{"../util":45}],41:[function(_dereq_,module,exports){function SphereRenderer(scene){this.scene=scene,this.createOpacityMask_()}var Eyes=_dereq_("./eyes"),TWEEN=_dereq_("@tweenjs/tween.js"),Util=_dereq_("../util"),VideoType=_dereq_("../video-type");SphereRenderer.prototype.setPhotosphere=function(src,opt_params){return new Promise(function(resolve,reject){this.resolve=resolve,this.reject=reject;var params=opt_params||{};this.isStereo=!!params.isStereo,this.src=src;var loader=new THREE.TextureLoader;loader.crossOrigin="anonymous",loader.load(src,this.onTextureLoaded_.bind(this),void 0,this.onTextureError_.bind(this))}.bind(this))},SphereRenderer.prototype.set360Video=function(videoElement,videoType,opt_params){return new Promise(function(resolve,reject){this.resolve=resolve,this.reject=reject;var params=opt_params||{};this.isStereo=!!params.isStereo;var videoTexture=new THREE.VideoTexture(videoElement);videoTexture.minFilter=THREE.LinearFilter,videoTexture.magFilter=THREE.LinearFilter,videoTexture.generateMipmaps=!1,Util.isSafari()&&videoType===VideoType.HLS?(videoTexture.format=THREE.RGBAFormat,videoTexture.flipY=!1):videoTexture.format=THREE.RGBFormat,videoTexture.needsUpdate=!0,this.onTextureLoaded_(videoTexture)}.bind(this))},SphereRenderer.prototype.setOpacity=function(opacity,duration){var scene=this.scene,overlayOpacity=1-opacity;return new Promise(function(resolve,reject){var mask=scene.getObjectByName("opacityMask"),tween=new TWEEN.Tween({opacity:mask.material.opacity}).to({opacity:overlayOpacity},duration).easing(TWEEN.Easing.Quadratic.InOut);tween.onUpdate(function(e){mask.material.opacity=this.opacity}),tween.onComplete(resolve).start()})},SphereRenderer.prototype.onTextureLoaded_=function(texture){var sphereLeft,sphereRight;this.isStereo?(sphereLeft=this.createPhotosphere_(texture,{offsetY:.5,scaleY:.5}),sphereRight=this.createPhotosphere_(texture,{offsetY:0,scaleY:.5})):(sphereLeft=this.createPhotosphere_(texture),sphereRight=this.createPhotosphere_(texture)),sphereLeft.layers.set(Eyes.LEFT),sphereLeft.eye=Eyes.LEFT,sphereLeft.name="eyeLeft",sphereRight.layers.set(Eyes.RIGHT),sphereRight.eye=Eyes.RIGHT,sphereRight.name="eyeRight",this.scene.getObjectByName("photo").children=[sphereLeft,sphereRight],this.resolve()},SphereRenderer.prototype.onTextureError_=function(error){this.reject('Unable to load texture from "'+this.src+'"')},SphereRenderer.prototype.createPhotosphere_=function(texture,opt_params){var p=opt_params||{};p.scaleX=p.scaleX||1,p.scaleY=p.scaleY||1,p.offsetX=p.offsetX||0,p.offsetY=p.offsetY||0,p.phiStart=p.phiStart||0,p.phiLength=p.phiLength||2*Math.PI,p.thetaStart=p.thetaStart||0,p.thetaLength=p.thetaLength||Math.PI;var geometry=new THREE.SphereGeometry(1,48,48,p.phiStart,p.phiLength,p.thetaStart,p.thetaLength);geometry.applyMatrix((new THREE.Matrix4).makeScale(-1,1,1));for(var uvs=geometry.faceVertexUvs[0],i=0;iduration&&(this.startTime=now,this.videoElement.currentTime=0,this.audioElement.currentTime=0)}},module.exports=VideoProxy},{"../util":45}],43:[function(_dereq_,module,exports){function WorldRenderer(params){this.init_(params.hideFullscreenButton),this.sphereRenderer=new SphereRenderer(this.scene),this.hotspotRenderer=new HotspotRenderer(this),this.hotspotRenderer.on("focus",this.onHotspotFocus_.bind(this)),this.hotspotRenderer.on("blur",this.onHotspotBlur_.bind(this)),this.reticleRenderer=new ReticleRenderer(this.camera),navigator.getVRDisplays().then(function(displays){displays.length>0&&(this.vrDisplay=displays[0])}.bind(this))}var AdaptivePlayer=_dereq_("./adaptive-player"),EventEmitter=_dereq_("eventemitter3"),HotspotRenderer=(_dereq_("./eyes"),_dereq_("./hotspot-renderer")),ReticleRenderer=_dereq_("./reticle-renderer"),SphereRenderer=_dereq_("./sphere-renderer"),TWEEN=_dereq_("@tweenjs/tween.js"),Util=_dereq_("../util"),VideoProxy=_dereq_("./video-proxy"),WebVRManager=_dereq_("webvr-boilerplate");(WorldRenderer.prototype=new EventEmitter).render=function(time){this.controls.update(),TWEEN.update(time),this.effect.render(this.scene,this.camera),this.hotspotRenderer.update(this.camera)},WorldRenderer.prototype.setScene=function(scene){var self=this,promise=new Promise(function(resolve,reject){self.sceneResolve=resolve,self.sceneReject=reject});if(scene&&scene.isValid()){var params={isStereo:scene.isStereo,loop:scene.loop,volume:scene.volume,muted:scene.muted};return this.setDefaultYaw_(scene.defaultYaw||0),(scene.isVROff||scene.video&&Util.isIOS9OrLess())&&this.manager.setVRCompatibleOverride(!1),Util.isIOS()&&(this.manager.setFullscreenCallback(function(){Util.sendParentMessage({type:"enter-fullscreen"})}),this.manager.setExitFullscreenCallback(function(){Util.sendParentMessage({type:"exit-fullscreen"})}),this.manager.setVRCallback(function(){Util.sendParentMessage({type:"enter-vr"})})),scene.image&&!scene.video?scene.preview?this.sphereRenderer.setPhotosphere(scene.preview,params).then(function(){self.didLoad_(),self.sphereRenderer.setPhotosphere(scene.image,params)}).catch(self.didLoadFail_.bind(self)):this.sphereRenderer.setPhotosphere(scene.image,params).then(function(){self.didLoad_()}).catch(self.didLoadFail_.bind(self)):scene.video&&(Util.isIE11()?scene.image?this.sphereRenderer.setPhotosphere(scene.image,params).then(function(){self.didLoad_()}).catch(self.didLoadFail_.bind(self)):this.didLoadFail_("Video is not supported on IE11."):(this.player=new AdaptivePlayer(params),this.player.on("load",function(videoElement,videoType){self.sphereRenderer.set360Video(videoElement,videoType,params).then(function(){self.didLoad_({videoElement:videoElement})}).catch(self.didLoadFail_.bind(self))}),this.player.on("error",function(error){self.didLoadFail_("Video load error: "+error)}),this.player.load(scene.video),this.videoProxy=new VideoProxy(this.player.video))),this.sceneInfo=scene,Util.isDebug()&&console.log("Loaded scene",scene),promise}this.didLoadFail_(scene.errorMessage)},WorldRenderer.prototype.isVRMode=function(){return!!this.vrDisplay&&this.vrDisplay.isPresenting},WorldRenderer.prototype.submitFrame=function(){this.isVRMode()&&this.vrDisplay.submitFrame()},WorldRenderer.prototype.disposeEye_=function(eye){eye&&(eye.material.map&&eye.material.map.dispose(),eye.material.dispose(),eye.geometry.dispose())},WorldRenderer.prototype.dispose=function(){var eyeLeft=this.scene.getObjectByName("eyeLeft");this.disposeEye_(eyeLeft);var eyeRight=this.scene.getObjectByName("eyeRight");this.disposeEye_(eyeRight)},WorldRenderer.prototype.destroy=function(){this.player&&(this.player.removeAllListeners(),this.player.destroy(),this.player=null);var photo=this.scene.getObjectByName("photo"),eyeLeft=this.scene.getObjectByName("eyeLeft"),eyeRight=this.scene.getObjectByName("eyeRight");eyeLeft&&(this.disposeEye_(eyeLeft),photo.remove(eyeLeft),this.scene.remove(eyeLeft)),eyeRight&&(this.disposeEye_(eyeRight),photo.remove(eyeRight),this.scene.remove(eyeRight))},WorldRenderer.prototype.didLoad_=function(opt_event){var event=opt_event||{};this.emit("load",event),this.sceneResolve&&this.sceneResolve()},WorldRenderer.prototype.didLoadFail_=function(message){this.emit("error",message),this.sceneReject&&this.sceneReject(message)},WorldRenderer.prototype.setDefaultYaw_=function(angleRad){var display=this.controls.getVRDisplay(),theta=display.theta_||0;display.poseSensor_&&display.poseSensor_.resetPose(),this.camera.parent.rotation.y=Math.PI/2+angleRad-theta},WorldRenderer.prototype.autopan=function(duration){var targetY=this.camera.parent.rotation.y-.4;new TWEEN.Tween(this.camera.parent.rotation).to({y:targetY},3e3).easing(TWEEN.Easing.Quadratic.Out).start()},WorldRenderer.prototype.init_=function(hideFullscreenButton){var container=document.querySelector("body"),aspect=window.innerWidth/window.innerHeight,camera=new THREE.PerspectiveCamera(75,aspect,.1,100);camera.layers.enable(1),(new THREE.Object3D).add(camera);var renderer=new THREE.WebGLRenderer({antialias:!1});renderer.setClearColor(0,0),renderer.setSize(window.innerWidth,window.innerHeight),renderer.setPixelRatio(window.devicePixelRatio),container.appendChild(renderer.domElement);var controls=new THREE.VRControls(camera),effect=new THREE.VREffect(renderer);effect.scale=0,effect.setSize(window.innerWidth,window.innerHeight),effect.autoSubmitFrame=!1,this.camera=camera,this.renderer=renderer,this.effect=effect,this.controls=controls,this.manager=new WebVRManager(renderer,effect,{predistorted:!1,hideButton:hideFullscreenButton}),this.scene=this.createScene_(),this.scene.add(this.camera.parent),window.addEventListener("resize",this.onResize_.bind(this)),window.addEventListener("contextmenu",this.onContextMenu_.bind(this)),window.addEventListener("vrdisplaypresentchange",this.onVRDisplayPresentChange_.bind(this))},WorldRenderer.prototype.onResize_=function(){this.effect.setSize(window.innerWidth,window.innerHeight),this.camera.aspect=window.innerWidth/window.innerHeight,this.camera.updateProjectionMatrix()},WorldRenderer.prototype.onVRDisplayPresentChange_=function(e){Util.isDebug()&&console.log("onVRDisplayPresentChange_");var isVR=this.isVRMode(),isReticleVisible=isVR&&this.hotspotRenderer.getCount()>0;this.reticleRenderer.setVisibility(isReticleVisible),this.onResize_(),window.analytics&&analytics.logModeChanged(isVR),!isVR&&Util.isIOS()&&Util.sendParentMessage({type:"exit-fullscreen"}),this.emit("modechange",isVR)},WorldRenderer.prototype.createScene_=function(opt_params){var scene=new THREE.Scene,photoGroup=new THREE.Object3D;return photoGroup.name="photo",scene.add(photoGroup),scene},WorldRenderer.prototype.onHotspotFocus_=function(id){this.setCursor_("pointer")},WorldRenderer.prototype.onHotspotBlur_=function(id){this.setCursor_("")},WorldRenderer.prototype.setCursor_=function(cursor){this.renderer.domElement.style.cursor=cursor},WorldRenderer.prototype.onContextMenu_=function(e){return e.preventDefault(),e.stopPropagation(),!1},module.exports=WorldRenderer},{"../util":45,"./adaptive-player":33,"./eyes":34,"./hotspot-renderer":35,"./reticle-renderer":39,"./sphere-renderer":41,"./video-proxy":42,"@tweenjs/tween.js":1,eventemitter3:3,"webvr-boilerplate":7}],44:[function(_dereq_,module,exports){var Message={PLAY:"play",PAUSE:"pause",TIMEUPDATE:"timeupdate",ADD_HOTSPOT:"addhotspot",SET_CONTENT:"setimage",SET_VOLUME:"setvolume",MUTED:"muted",SET_CURRENT_TIME:"setcurrenttime",DEVICE_MOTION:"devicemotion",GET_POSITION:"getposition",SET_FULLSCREEN:"setfullscreen"};module.exports=Message},{}],45:[function(_dereq_,module,exports){var Util=window.Util||{};Util.isDataURI=function(src){return src&&0==src.indexOf("data:")},Util.generateUUID=function(){function s4(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return s4()+s4()+"-"+s4()+"-"+s4()+"-"+s4()+"-"+s4()+s4()+s4()},Util.isMobile=function(){var check=!1;return function(a){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))&&(check=!0)}(navigator.userAgent||navigator.vendor||window.opera),check},Util.isIOS=function(){return/(iPad|iPhone|iPod)/g.test(navigator.userAgent)},Util.isSafari=function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)},Util.cloneObject=function(obj){var out={};for(key in obj)out[key]=obj[key];return out},Util.hashCode=function(s){return s.split("").reduce(function(a,b){return(a=(a<<5)-a+b.charCodeAt(0))&a},0)},Util.loadTrackSrc=function(context,src,callback,opt_progressCallback){var request=new XMLHttpRequest;request.open("GET",src,!0),request.responseType="arraybuffer",request.onload=function(){context.decodeAudioData(request.response,function(buffer){callback(buffer)},function(e){console.error(e)})},opt_progressCallback&&(request.onprogress=function(e){var percent=e.loaded/e.total;opt_progressCallback(percent)}),request.send()},Util.isPow2=function(n){return 0==(n&n-1)},Util.capitalize=function(s){return s.charAt(0).toUpperCase()+s.slice(1)},Util.isIFrame=function(){try{return window.self!==window.top}catch(e){return!0}},Util.getQueryParameter=function(name){name=name.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var results=new RegExp("[\\?&]"+name+"=([^&#]*)").exec(location.search);return null===results?"":decodeURIComponent(results[1].replace(/\+/g," "))},Util.isWebGLEnabled=function(){var canvas=document.createElement("canvas");try{gl=canvas.getContext("webgl")}catch(x){gl=null}if(null==gl)try{gl=canvas.getContext("experimental-webgl"),experimental=!0}catch(x){gl=null}return!!gl},Util.clone=function(obj){return JSON.parse(JSON.stringify(obj))},Util.hypot=Math.hypot||function(x,y){return Math.sqrt(x*x+y*y)},Util.isIE11=function(){return navigator.userAgent.match(/Trident/)},Util.getRectCenter=function(rect){return new THREE.Vector2(rect.x+rect.width/2,rect.y+rect.height/2)},Util.getScreenWidth=function(){return Math.max(window.screen.width,window.screen.height)*window.devicePixelRatio},Util.getScreenHeight=function(){return Math.min(window.screen.width,window.screen.height)*window.devicePixelRatio},Util.isIOS9OrLess=function(){if(!Util.isIOS())return!1;var re=/(iPhone|iPad|iPod) OS ([\d_]+)/,iOSVersion=navigator.userAgent.match(re);if(!iOSVersion)return!1;var versionString=iOSVersion[iOSVersion.length-1];return parseFloat(versionString)<=9},Util.getExtension=function(url){return url.split(".").pop().split("?")[0]},Util.createGetParams=function(params){var out="?";for(var k in params)out+=k+"="+params[k]+"&";return out.substring(0,params.length-2),out},Util.sendParentMessage=function(message){window.parent&&parent.postMessage(message,"*")},Util.parseBoolean=function(value){return"false"!=value&&0!=value&&("true"==value||1==value||!!value)},Util.relativeToAbsolutePath=function(base,relative){for(var stack=base.split("/"),parts=relative.split("/"),i=0;i