PageSourceSearch

https://kraftraum-leichlingen.de/wp-content/cache/wpo-minify/17684…/assets/wpo-minify-header-e3395408.min.js

js kraftraum-leichlingen.de collected 2026-10-07 04:28:52 UTC 1,847,064 bytes, 5,275 lines download raw bytes

1
2function check_instagram_cache(){jQuery.ajax({data:{route:"",_token:""},type:"post",url:window.rest_config.rest_url+"wslu/v1/check_cache/instagram/",beforeSend:function(e){e.setRequestHeader("X-WP-Nonce",rest_config.nonce)},success:function(e){e.success&&e.expired&&fetch_and_cache_instagram_count(e.unm),console.log("Instagram data cache was initiated - ",e)},error:function(e){},complete:function(){}})}function fetch_and_cache_instagram_count(e){jQuery.get("https://www.instagram.com/"+e+"/?__a=1",(function(t){console.log(t.graphql.user.edge_followed_by),console.log(t);var s=0;t.graphql.user.edge_followed_by&&(s=t.graphql.user.edge_followed_by),jQuery.ajax({type:"POST",url:window.rest_config.rest_url+"wslu/v1/save_cache/instagram/",data:{content:s},success:function(t){console.log("Instagram data fetch for user - "+e,t)},error:function(t){console.log("Instagram data fetch failed for user - "+e,t)}})}))}jQuery(document).ready((function(e){var t;e(window).on("resize.wslu",(function(){let s=(t=e(".xs_social_share_widget.wslu-share-horizontal.wslu-main_content")).parent(),a=t.find(".wslu-share-count"),n=s.width(),o=t.find("ul").outerWidth(!0)||null;if(a.length&&(o=a.outerWidth(!0)||null),o&&o>n){let s=a.length?a.outerWidth(!0):0;temLength=s||0;let o,r=t.find("ul li");for(let t=0;t<=r.length;t++)if(temLength+=e(r).eq(t).outerWidth(!0),temLength>n){temLength-=e(r).eq(t).outerWidth(!0),o=e(r).eq(t-2).outerWidth(!0);break}shareBTN=76;let l=Math.floor((temLength-s)/o),c=shareBTN>o?Math.ceil(shareBTN/o):1;t.find("ul li").slice(l-c).wrapAll("<div class='wslu-share-more'><ul></ul></div>")}})).trigger("resize.wslu"),t.find(".wslu-share-more").prepend('<span class="wslu-share-more-btn-close met-social met-social-cross"></span><h3 class="wslu-share-more-btn-title">Share this with:</h3>').before('<li class="wslu-share-more-btn"><a href="#"><div class="wslu-both-counter-text"><span class="wslu-share-more-btn--icon met-social met-social-share-1"></span> Share</div></a></li>'),e(".xs_social_share_widget").on("click",".wslu-share-more-btn",(function(){e(this).addClass("active").next().addClass("active")})),e(".xs_social_share_widget").on("click",".wslu-share-more-btn-close",(function(){e(this).parent().removeClass("active").prev().removeClass("active")})),"1"==rest_config.insta_enabled&&setTimeout((function(e){}),1200)}));
3
4
5
6window.pannellum=(function(window,document,undefined){'use strict';function Viewer(container,initialConfig){var _this=this;var config,renderer,preview,isUserInteracting=!1,latestInteraction=Date.now(),onPointerDownPointerX=0,onPointerDownPointerY=0,onPointerDownPointerDist=-1,onPointerDownYaw=0,onPointerDownPitch=0,keysDown=new Array(10),fullscreenActive=!1,loaded,error=!1,isTimedOut=!1,listenersAdded=!1,panoImage,prevTime,speed={'yaw':0,'pitch':0,'hfov':0},animating=!1,orientation=!1,orientationYawOffset=0,autoRotateStart,autoRotateSpeed=0,origHfov,origPitch,animatedMove={},externalEventListeners={},specifiedPhotoSphereExcludes=[],update=!1,eps=1e-6,hotspotsCreated=!1,destroyed=!1;var defaultConfig={hfov:100,minHfov:50,multiResMinHfov:!1,maxHfov:120,pitch:0,minPitch:undefined,maxPitch:undefined,yaw:0,minYaw:-180,maxYaw:180,roll:0,haov:360,vaov:180,vOffset:0,autoRotate:!1,autoRotateInactivityDelay:-1,autoRotateStopDelay:undefined,type:'equirectangular',northOffset:0,showFullscreenCtrl:!0,dynamic:!1,dynamicUpdate:!1,doubleClickZoom:!0,keyboardZoom:!0,mouseZoom:!0,showZoomCtrl:!0,autoLoad:!1,showControls:!0,orientationOnByDefault:!1,hotSpotDebug:!1,backgroundColor:[0,0,0],avoidShowingBackground:!1,animationTimingFunction:timingFunction,draggable:!0,disableKeyboardCtrl:!1,crossOrigin:'anonymous',touchPanSpeedCoeffFactor:1,capturedKeyNumbers:[16,17,27,37,38,39,40,61,65,68,83,87,107,109,173,187,189],friction:0.15};defaultConfig.strings={loadButtonLabel:'Click to<br>Load<br>Panorama',loadingLabel:'Loading...',bylineLabel:' %s',noPanoramaError:'No panorama image was specified.',fileAccessError:'The file %s could not be accessed.',malformedURLError:'There is something wrong with the panorama URL.',iOS8WebGLError:"Due to iOS 8's broken WebGL implementation, only "+"progressive encoded JPEGs work for your device (this "+"panorama uses standard encoding).",genericWebGLError:'Your browser does not have the necessary WebGL support to display this panorama.',textureSizeError:'This panorama is too big for your device! It\'s '+'%spx wide, but your device only supports images up to '+'%spx wide. Try another device.'+' (If you\'re the author, try scaling down the image.)',unknownError:'Unknown error. Check developer console.',};container=typeof container==='string'?document.getElementById(container):container;container.classList.add('pnlm-container');container.tabIndex=0;var uiContainer=document.createElement('div');uiContainer.className='pnlm-ui';container.appendChild(uiContainer);var renderContainer=document.createElement('div');renderContainer.className='pnlm-render-container';container.appendChild(renderContainer);var dragFix=document.createElement('div');dragFix.className='pnlm-dragfix';uiContainer.appendChild(dragFix);var aboutMsg=document.createElement('span');aboutMsg.className='pnlm-about-msg';aboutMsg.innerHTML='<a href="https://rextheme.com/docs/wpvr-360-panorama-and-virtual-tour
6-creator-for-wordpress/" target="_blank">Rextheme</a>';uiContainer.appendChild(aboutMsg);dragFix.addEventListener('contextmenu',aboutMessage);var infoDisplay={};var hotSpotDebugIndicator=document.createElement('div');hotSpotDebugIndicator.className='pnlm-sprite pnlm-hot-spot-debug-indicator';uiContainer.appendChild(hotSpotDebugIndicator);infoDisplay.container=document.createElement('div');infoDisplay.container.className='pnlm-panorama-info';infoDisplay.title=document.createElement('div');infoDisplay.title.className='pnlm-title-box';infoDisplay.container.appendChild(infoDisplay.title);infoDisplay.author=document.createElement('div');infoDisplay.author.className='pnlm-author-box';infoDisplay.container.appendChild(infoDisplay.author);uiContainer.appendChild(infoDisplay.container);infoDisplay.load={};infoDisplay.load.box=document.createElement('div');infoDisplay.load.box.className='pnlm-load-box';infoDisplay.load.boxp=document.createElement('p');infoDisplay.load.box.appendChild(infoDisplay.load.boxp);infoDisplay.load.lbox=document.createElement('div');infoDisplay.load.lbox.className='pnlm-lbox';infoDisplay.load.lbox.innerHTML='<div class="pnlm-loading"></div>';infoDisplay.load.box.appendChild(infoDisplay.load.lbox);infoDisplay.load.lbar=document.createElement('div');infoDisplay.load.lbar.className='pnlm-lbar';infoDisplay.load.lbarFill=document.createElement('div');infoDisplay.load.lbarFill.className='pnlm-lbar-fill';infoDisplay.load.lbar.appendChild(infoDisplay.load.lbarFill);infoDisplay.load.box.appendChild(infoDisplay.load.lbar);infoDisplay.load.msg=document.createElement('p');infoDisplay.load.msg.className='pnlm-lmsg';infoDisplay.load.box.appendChild(infoDisplay.load.msg);uiContainer.appendChild(infoDisplay.load.box);infoDisplay.errorMsg=document.createElement('div');infoDisplay.errorMsg.className='pnlm-error-msg pnlm-info-box';uiContainer.appendChild(infoDisplay.errorMsg);var controls={};controls.container=document.createElement('div');controls.container.className='pnlm-controls-container';uiContainer.appendChild(controls.container);controls.load=document.createElement('div');controls.load.className='pnlm-load-button';controls.load.addEventListener('click',function(){processOptions();load()});uiContainer.appendChild(controls.load);controls.zoom=document.createElement('div');controls.zoom.className='pnlm-zoom-controls pnlm-controls';controls.zoomIn=document.createElement('div');controls.zoomIn.className='pnlm-zoom-in pnlm-sprite pnlm-control';controls.zoomIn.addEventListener('click',zoomIn);controls.zoom.appendChild(controls.zoomIn);controls.zoomOut=document.createElement('div');controls.zoomOut.className='pnlm-zoom-out pnlm-sprite pnlm-control';controls.zoomOut.addEventListener('click',zoomOut);controls.zoom.appendChild(controls.zoomOut);controls.container.appendChild(controls.zoom);controls.fullscreen=document.createElement('div');controls.fullscreen.addEventListener('click',toggleFullscreen);controls.fullscreen.className='pnlm-fullscreen-toggle-button pnlm-sprite pnlm-fullscreen-toggle-button-inactive pnlm-controls pnlm-control';if(document.fullscreenEnabled||document.mozFullScreenEnabled||document.webkitFullscreenEnabled||document.msFullscreenEnabled)
7controls.container.appendChild(controls.fullscreen);controls.orientation=document.createElement('div');controls.orientation.addEventListener('click',function(e){if(orientation)
8stopOrientation();else startOrientation()});controls.orientation.addEventListener('mousedown',function(e){e.stopPropagation()});controls.orientation.addEventListener('touchstart',function(e){e.stopPropagation()});controls.orientation.addEventListener('pointerdown',function(e){e.stopPropagation()});controls.orientation.className='pnlm-orientation-button pnlm-orientation-button-inactive pnlm-sprite pnlm-controls pnlm-control';var orientationSupport=!1;if(window.DeviceOrientationEvent&&location.protocol=='https:'&&navigator.userAgent.toLowerCase().indexOf('mobi')>=0){controls.container.appendChild(controls.orientation);orientationSupport=!0}
9var compass=document.createElement('div');
9compass.className='pnlm-compass pnlm-controls pnlm-control';uiContainer.appendChild(compass);if(initialConfig.firstScene){mergeConfig(initialConfig.firstScene)}else if(initialConfig.default&&initialConfig.default.firstScene){mergeConfig(initialConfig.default.firstScene)}else{mergeConfig(null)}
10processOptions(!0);function init(){var div=document.createElement("div");div.innerHTML="<!--[if lte IE 9]><i></i><![endif]-->";if(div.getElementsByTagName("i").length==1){anError();return}
11origHfov=config.hfov;origPitch=config.pitch;var i,p;if(config.type=='cubemap'){panoImage=[];for(i=0;i<6;i++){panoImage.push(new Image());panoImage[i].crossOrigin=config.crossOrigin}
12infoDisplay.load.lbox.style.display='block';infoDisplay.load.lbar.style.display='none'}else if(config.type=='multires'){var c=JSON.parse(JSON.stringify(config.multiRes));if(config.basePath&&config.multiRes.basePath&&!(/^(?:[a-z]+:)?\/\//i.test(config.multiRes.basePath))){c.basePath=config.basePath+config.multiRes.basePath}else if(config.multiRes.basePath){c.basePath=config.multiRes.basePath}else if(config.basePath){c.basePath=config.basePath}
13panoImage=c}else{if(config.dynamic===!0){panoImage=config.panorama}else{if(config.panorama===undefined){anError(config.strings.noPanoramaError);return}
14panoImage=new Image()}}
15if(config.type=='cubemap'){var itemsToLoad=6;var onLoad=function(){itemsToLoad--;if(itemsToLoad===0){onImageLoad()}};var onError=function(e){var a=document.createElement('a');a.href=e.target.src;a.textContent=a.href;anError(config.strings.fileAccessError.replace('%s',a.outerHTML))};for(i=0;i<panoImage.length;i++){p=config.cubeMap[i];if(p=="null"){console.log('Will use background instead of missing cubemap face '+i);onLoad()}else{if(config.basePath&&!absoluteURL(p)){p=config.basePath+p}
16panoImage[i].onload=onLoad;panoImage[i].onerror=onError;panoImage[i].src=sanitizeURL(p)}}}else if(config.type=='multires'){onImageLoad()}else{p='';if(config.basePath){p=config.basePath}
17if(config.dynamic!==!0){p=absoluteURL(config.panorama)?config.panorama:p+config.panorama;panoImage.onload=function(){window.URL.revokeObjectURL(this.src);onImageLoad()};var xhr=new XMLHttpRequest();xhr.onloadend=function(){if(xhr.status!=200){var a=document.createElement('a');a.href=p;a.textContent=a.href;anError(config.strings.fileAccessError.replace('%s',a.outerHTML))}
18var img=this.response;parseGPanoXMP(img,p);infoDisplay.load.msg.innerHTML=''};xhr.onprogress=function(e){if(e.lengthComputable){var percent=e.loaded/e.total*100;infoDisplay.load.lbarFill.style.width=percent+'%';var unit,numerator,denominator;if(e.total>1e6){unit='MB';numerator=(e.loaded/1e6).toFixed(2);denominator=(e.total/1e6).toFixed(2)}else if(e.total>1e3){unit='kB';numerator=(e.loaded/1e3).toFixed(1);denominator=(e.total/1e3).toFixed(1)}else{unit='B';numerator=e.loaded;denominator=e.total}
19infoDisplay.load.msg.innerHTML=numerator+' / '+denominator+' '+unit}else{infoDisplay.load.lbox.style.display='block';infoDisplay.load.lbar.style.display='none'}};try{xhr.open('GET',p,!0)}catch(e){anError(config.strings.malformedURLError)}
20xhr.responseType='blob';xhr.setRequestHeader('Accept','image/*,*/*;q=0.9');xhr.withCredentials=config.crossOrigin==='use-credentials';xhr.send()}}
21if(config.draggable)
22uiContainer.classList.add('pnlm-grab');uiContainer.classList.remove('pnlm-grabbing');update=config.dynamicUpdate===!0;if(config.dynamic&&update){panoImage=config.panorama;onImageLoad()}}
23function absoluteURL(url){return new RegExp('^(?:[a-z]+:)?//','i').test(url)||url[0]=='/'||url.slice(0,5)=='blob:'}
24function onImageLoad(){if(!renderer)
25renderer=new libpannellum.renderer(renderContainer);if(!listenersAdded){listenersAdded=!0;dragFix.addEventListener('mousedown',onDocumentMouseDown,!1);document.addEventListener('mousemove',onDocumentMouseMove,!1);document.addEventListener('mouseup',onDocumentMouseUp,!1);if(config.mouseZoom){uiContainer.addEventListener('mousewheel',onDocumentMouseWheel,!1);uiContainer.addEventListener('DOMMouseScroll',onDocumentMouseWheel,!1)}
26if(config.doubleClickZoom){dragFix.addEventListener('dblclick',onDocumentDoubleClick,!1)}
27container.addEventListener('mozfullscreenchange',onFullScreenChange,!1);container.addEventListener('webkitfullscreenchange',onFullScreenChange,!1);container.addEventListener('msfullscreenchange',onFullScreenChange,!1);container.addEventListener('fullscreenchange',onFullScreenChange,!1);window.addEventListener('resize',onDocumentResize,!1);window.addEventListener('orientationchange',onDocumentResize,!1);if(!config.disableKeyboardCtrl){container.addEventListener('keydown',onDocumentKeyPress,!1);container.addEventListener('keyup',onDocumentKeyUp,!1);container.addEventListener('blur',clearKeys,!1)}
28document.addEventListener('mouseleave',onDocumentMouseUp,!1);if(document.documentElement.style.pointerAction===''&&document.documentElement.style.touchAction===''){dragFix.addEventListener('pointerdown',onDocumentPointerDown,!1);dragFix.addEventListener('pointermove',onDocumentPointerMove,!1);dragFix.addEventListener('pointerup',onDocumentPointerUp,!1);dragFix.addEventListener('pointerleave',onDocumentPointerUp,!1)}else{dragFix.addEventListener('touchstart',onDocumentTouchStart,!1);dragFix.addEventListener('touchmove',onDocumentTouchMove,!1);dragFix.addEventListener('touchend',onDocumentTouchEnd,!1)}
29if(window.navigator.pointerEnabled)
30container.style.touchAction='none'}
31renderInit();setHfov(config.hfov);setTimeout(function(){isTimedOut=!0},500)}
32function parseGPanoXMP(image,url){var reader=new FileReader();reader.addEventListener('loadend',function(){var img=reader.result;
32if(navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad).* os 8_/)){var flagIndex=img.indexOf('\xff\xc2');if(flagIndex<0||flagIndex>65536)
33anError(config.strings.iOS8WebGLError);}
34var start=img.indexOf('<x:xmpmeta');if(start>-1&&config.ignoreGPanoXMP!==!0){var xmpData=img.substring(start,img.indexOf('</x:xmpmeta>')+12);var getTag=function(tag){var result;if(xmpData.indexOf(tag+'="')>=0){result=xmpData.substring(xmpData.indexOf(tag+'="')+tag.length+2);result=result.substring(0,result.indexOf('"'))}else if(xmpData.indexOf(tag+'>')>=0){result=xmpData.substring(xmpData.indexOf(tag+'>')+tag.length+1);result=result.substring(0,result.indexOf('<'))}
35if(result!==undefined){return Number(result)}
36return null};var xmp={fullWidth:getTag('GPano:FullPanoWidthPixels'),croppedWidth:getTag('GPano:CroppedAreaImageWidthPixels'),fullHeight:getTag('GPano:FullPanoHeightPixels'),croppedHeight:getTag('GPano:CroppedAreaImageHeightPixels'),topPixels:getTag('GPano:CroppedAreaTopPixels'),heading:getTag('GPano:PoseHeadingDegrees'),horizonPitch:getTag('GPano:PosePitchDegrees'),horizonRoll:getTag('GPano:PoseRollDegrees')};if(xmp.fullWidth!==null&&xmp.croppedWidth!==null&&xmp.fullHeight!==null&&xmp.croppedHeight!==null&&xmp.topPixels!==null){if(specifiedPhotoSphereExcludes.indexOf('haov')<0)
37config.haov=xmp.croppedWidth/xmp.fullWidth*360;if(specifiedPhotoSphereExcludes.indexOf('vaov')<0)
38config.vaov=xmp.croppedHeight/xmp.fullHeight*180;if(specifiedPhotoSphereExcludes.indexOf('vOffset')<0)
39config.vOffset=((xmp.topPixels+xmp.croppedHeight/2)/xmp.fullHeight-0.5)*-180;if(xmp.heading!==null&&specifiedPhotoSphereExcludes.indexOf('northOffset')<0){config.northOffset=xmp.heading;if(config.compass!==!1){config.compass=!0}}
40if(xmp.horizonPitch!==null&&xmp.horizonRoll!==null){if(specifiedPhotoSphereExcludes.indexOf('horizonPitch')<0)
41config.horizonPitch=xmp.horizonPitch;if(specifiedPhotoSphereExcludes.indexOf('horizonRoll')<0)
42config.horizonRoll=xmp.horizonRoll}}}
43panoImage.src=window.URL.createObjectURL(image);panoImage.onerror=function(){function getCspHeaders(){if(!window.fetch)
44return null;return window.fetch(document.location.href).then(function(resp){return resp.headers.get('Content-Security-Policy')})}
45getCspHeaders().then(function(cspHeaders){if(cspHeaders){var invalidImgSource=cspHeaders.split(";").find(function(p){var matchstring=p.match(/img-src(.*)/);if(matchstring){return!matchstring[1].includes("blob")}});if(invalidImgSource){console.log('CSP blocks blobs; reverting to URL.');panoImage.crossOrigin=config.crossOrigin;panoImage.src=url}}})}});if(reader.readAsBinaryString!==undefined)
46reader.readAsBinaryString(image);else reader.readAsText(image)}
47function anError(errorMsg){if(errorMsg===undefined)
48errorMsg=config.strings.genericWebGLError;infoDisplay.errorMsg.innerHTML='<p>'+errorMsg+'</p>';controls.load.style.display='none';infoDisplay.load.box.style.display='none';infoDisplay.errorMsg.style.display='table';error=!0;loaded=undefined;renderContainer.style.display='none';fireEvent('error',errorMsg)}
49function clearError(){if(error){infoDisplay.load.box.style.display='none';infoDisplay.errorMsg.style.display='none';error=!1;renderContainer.style.display='block';fireEvent('errorcleared')}}
50function aboutMessage(event){var pos=mousePosition(event);aboutMsg.style.left=pos.x+'px';aboutMsg.style.top=pos.y+'px';clearTimeout(aboutMessage.t1);clearTimeout(aboutMessage.t2);aboutMsg.style.display='block';aboutMsg.style.opacity=1;aboutMessage.t1=setTimeout(function(){aboutMsg.style.opacity=0},2000);aboutMessage.t2=setTimeout(function(){aboutMsg.style.display='none'},2500);event.preventDefault()}
51function mousePosition(event){var bounds=container.getBoundingClientRect();var pos={};pos.x=(event.clientX||event.pageX)-bounds.left;pos.y=(event.clientY||event.pageY)-bounds.top;return pos}
52function onDocumentMouseDown(event){event.preventDefault();container.focus();if(!loaded||!config.draggable){return}
53var pos=mousePosition(event);if(config.hotSpotDebug){var coords=mouseEventToCoords(event);console.log('Pitch: '+coords[0]+', Yaw: '+coords[1]+', Center Pitch: '+config.pitch+', Center Yaw: '+config.yaw+', HFOV: '+config.hfov)}
54stopAnimation();stopOrientation();config.roll=0;speed.hfov=0;isUserInteracting=!0;latestInteraction=Date.now();onPointerDownPointerX=pos.x;onPointerDownPointerY=pos.y;onPointerDownYaw=config.yaw;onPointerDownPitch=config.pitch;uiContainer.classList.add('pnlm-grabbing');uiContainer.classList.remove('pnlm-grab');fireEvent('mousedown',event);animateInit()}
55function onDocumentDoubleClick(event){if(config.minHfov===config.hfov){_this.setHfov(origHfov,1000)}else{var coords=mouseEventToCoords(event);_this.lookAt(coords[0],coords[1],config.minHfov,1000)}}
56function mouseEventToCoords(event){var pos=mousePosition(event);var canvas=renderer.getCanvas();var canvasWidth=canvas.clientWidth,canvasHeight=canvas.clientHeight;var x=pos.x/canvasWidth*2-1;var y=(1-pos.y/canvasHeight*2)*canvasHeight/canvasWidth;var focal=1/Math.tan(config.hfov*Math.PI/360);var s=Math.sin(config.pitch*Math.PI/180);var c=Math.cos(config.pitch*Math.PI/180);var a=focal*c-y*s;var root=Math.sqrt(x*x+a*a);var pitch=Math.atan((y*c+focal*s)/root)*180/Math.PI;var yaw=Math.atan2(x/root,a/root)*180/Math.PI+config.yaw;if(yaw<-180)
57yaw+=360;if(yaw>180)
58yaw-=360;return[pitch,yaw]}
59function onDocumentMouseMove(event){if(isUserInteracting&&loaded){latestInteraction=Date.now();var canvas=renderer.getCanvas();var canvasWidth=canvas.clientWidth,canvasHeight=canvas.clientHeight;var pos=mousePosition(event);var yaw=((Math.atan(onPointerDownPointerX/canvasWidth*2-1)-Math.atan(pos.x/canvasWidth*2-1))*180/Math.PI*config.hfov/90)+onPointerDownYaw;speed.yaw=(yaw-config.yaw)%360*0.2;config.yaw=yaw;var vfov=2*Math.atan(Math.tan(config.hfov/360*Math.PI)*canvasHeight/canvasWidth)*180/Math.PI;var pitch=((Math.atan(pos.y/canvasHeight*2-1)-Math.atan(onPointerDownPointerY/canvasHeight*2-1))*180/Math.PI*vfov/90)+onPointerDownPitch;speed.pitch=(pitch-config.pitch)*0.2;config.pitch=pitch;var mirrorData={pitch:pitch,yaw:yaw}
60fireEvent('mousemove',mirrorData)}}
61function onDocumentMouseUp(event){if(!isUserInteracting){return}
62isUserInteracting=!1;if(Date.now()-latestInteraction>15){speed.pitch=speed.yaw=0}
63uiContainer.classList.add('pnlm-grab');uiContainer.classList.remove('pnlm-grabbing');latestInteraction=Date.now();fireEvent('mouseup',event)}
64function onDocumentTouchStart(event){if(!loaded||!config.draggable){return}
65stopAnimation();stopOrientation();config.roll=0;speed.hfov=0;var pos0=mousePosition(event.targetTouches[0]);onPointerDownPointerX=pos0.x;onPointerDownPointerY=pos0.y;if(event.targetTouches.length==2){var pos1=mousePosition(event.targetTouches[1]);onPointerDownPointerX+=(pos1.x-pos0.x)*0.5;onPointerDownPointerY+=(pos1.y-pos0.y)*0.5;
65onPointerDownPointerDist=Math.sqrt((pos0.x-pos1.x)*(pos0.x-pos1.x)+(pos0.y-pos1.y)*(pos0.y-pos1.y))}
66isUserInteracting=!0;latestInteraction=Date.now();onPointerDownYaw=config.yaw;onPointerDownPitch=config.pitch;fireEvent('touchstart',event);animateInit()}
67function onDocumentTouchMove(event){if(!config.draggable){return}
68event.preventDefault();if(loaded){latestInteraction=Date.now()}
69if(isUserInteracting&&loaded){var pos0=mousePosition(event.targetTouches[0]);var clientX=pos0.x;var clientY=pos0.y;if(event.targetTouches.length==2&&onPointerDownPointerDist!=-1){var pos1=mousePosition(event.targetTouches[1]);clientX+=(pos1.x-pos0.x)*0.5;clientY+=(pos1.y-pos0.y)*0.5;var clientDist=Math.sqrt((pos0.x-pos1.x)*(pos0.x-pos1.x)+(pos0.y-pos1.y)*(pos0.y-pos1.y));setHfov(config.hfov+(onPointerDownPointerDist-clientDist)*0.1);onPointerDownPointerDist=clientDist}
70var touchmovePanSpeedCoeff=(config.hfov/360)*config.touchPanSpeedCoeffFactor;var yaw=(onPointerDownPointerX-clientX)*touchmovePanSpeedCoeff+onPointerDownYaw;speed.yaw=(yaw-config.yaw)%360*0.2;config.yaw=yaw;var pitch=(clientY-onPointerDownPointerY)*touchmovePanSpeedCoeff+onPointerDownPitch;speed.pitch=(pitch-config.pitch)*0.2;config.pitch=pitch;var mirrorData={pitch:pitch,yaw:yaw}
71fireEvent('touchmove',mirrorData)}}
72function onDocumentTouchEnd(){isUserInteracting=!1;if(Date.now()-latestInteraction>150){speed.pitch=speed.yaw=0}
73onPointerDownPointerDist=-1;latestInteraction=Date.now();fireEvent('touchend',event)}
74var pointerIDs=[],pointerCoordinates=[];function onDocumentPointerDown(event){if(event.pointerType=='touch'){if(!loaded||!config.draggable)
75return;pointerIDs.push(event.pointerId);pointerCoordinates.push({clientX:event.clientX,clientY:event.clientY});event.targetTouches=pointerCoordinates;onDocumentTouchStart(event);event.preventDefault()}}
76function onDocumentPointerMove(event){if(event.pointerType=='touch'){if(!config.draggable)
77return;for(var i=0;i<pointerIDs.length;i++){if(event.pointerId==pointerIDs[i]){pointerCoordinates[i].clientX=event.clientX;pointerCoordinates[i].clientY=event.clientY;event.targetTouches=pointerCoordinates;onDocumentTouchMove(event);event.preventDefault();return}}}}
78function onDocumentPointerUp(event){if(event.pointerType=='touch'){var defined=!1;for(var i=0;i<pointerIDs.length;i++){if(event.pointerId==pointerIDs[i])
79pointerIDs[i]=undefined;if(pointerIDs[i])
80defined=!0}
81if(!defined){pointerIDs=[];pointerCoordinates=[];onDocumentTouchEnd()}
82event.preventDefault()}}
83function onDocumentMouseWheel(event){if(!loaded||(config.mouseZoom=='fullscreenonly'&&!fullscreenActive)){return}
84event.preventDefault();stopAnimation();latestInteraction=Date.now();if(event.wheelDeltaY){setHfov(config.hfov-event.wheelDeltaY*0.05);speed.hfov=event.wheelDelta<0?1:-1}else if(event.wheelDelta){setHfov(config.hfov-event.wheelDelta*0.05);speed.hfov=event.wheelDelta<0?1:-1}else if(event.detail){setHfov(config.hfov+event.detail*1.5);speed.hfov=event.detail>0?1:-1}
85animateInit()}
86function onDocumentKeyPress(event){stopAnimation();latestInteraction=Date.now();stopOrientation();config.roll=0;var keynumber=event.which||event.keycode;if(config.capturedKeyNumbers.indexOf(keynumber)<0)
87return;event.preventDefault();if(keynumber==27){if(fullscreenActive){toggleFullscreen()}}else{changeKey(keynumber,!0)}}
88function clearKeys(){for(var i=0;i<10;i++){keysDown[i]=!1}}
89function onDocumentKeyUp(event){var keynumber=event.which||event.keycode;if(config.capturedKeyNumbers.indexOf(keynumber)<0)
90return;event.preventDefault();changeKey(keynumber,!1)}
91function changeKey(keynumber,value){var keyChanged=!1;switch(keynumber){case 109:case 189:case 17:case 173:if(keysDown[0]!=value){keyChanged=!0}
92keysDown[0]=value;break;case 107:case 187:case 16:case 61:if(keysDown[1]!=value){keyChanged=!0}
93keysDown[1]=value;break;case 38:if(keysDown[2]!=value){keyChanged=!0}
94keysDown[2]=value;break;case 87:if(keysDown[6]!=value){keyChanged=!0}
95keysDown[6]=value;break;case 40:if(keysDown[3]!=value){keyChanged=!0}
96keysDown[3]=value;break;case 83:if(keysDown[7]!=value){keyChanged=!0}
97keysDown[7]=value;break;case 37:if(keysDown[4]!=value){keyChanged=!0}
98keysDown[4]=value;break;case 65:if(keysDown[8]!=value){keyChanged=!0}
99keysDown[8]=value;break;case 39:if(keysDown[5]!=value){keyChanged=!0}
100keysDown[5]=value;break;case 68:if(keysDown[9]!=value){keyChanged=!0}
101keysDown[9]=value}
102if(keyChanged&&value){if(typeof performance!=='undefined'&&performance.now()){prevTime=performance.now()}else{prevTime=Date.now()}
103animateInit()}}
104function keyRepeat(){if(!loaded){return}
105var isKeyDown=!1;var prevPitch=config.pitch;var prevYaw=config.yaw;var prevZoom=config.hfov;var newTime;if(typeof performance!=='undefined'&&performance.now()){newTime=performance.now()}else{newTime=Date.now()}
106if(prevTime===undefined){prevTime=newTime}
107var diff=(newTime-prevTime)*config.hfov/1700;diff=Math.min(diff,1.0);if(keysDown[0]&&config.keyboardZoom===!0){setHfov(config.hfov+(speed.hfov*0.8+0.5)*diff);isKeyDown=!0}
108if(keysDown[1]&&config.keyboardZoom===!0){setHfov(config.hfov+(speed.hfov*0.8-0.2)*diff);isKeyDown=!0}
109if(keysDown[2]||keysDown[6]){config.pitch+=(speed.pitch*0.8+0.2)*diff;isKeyDown=!0}
110if(keysDown[3]||keysDown[7]){config.pitch+=(speed.pitch*0.8-0.2)*diff;isKeyDown=!0}
111if(keysDown[4]||keysDown[8]){config.yaw+=(speed.yaw*0.8-0.2)*diff;isKeyDown=!0}
112if(keysDown[5]||keysDown[9]){config.yaw+=(speed.yaw*0.8+0.2)*diff;isKeyDown=!0}
113if(isKeyDown)
114latestInteraction=Date.now();if(config.autoRotate){if(newTime-prevTime>0.001){var timeDiff=(newTime-prevTime)/1000;var yawDiff=(speed.yaw/timeDiff*diff-config.autoRotate*0.2)*timeDiff;yawDiff=(-config.autoRotate>0?1:-1)*Math.min(Math.abs(config.autoRotate*timeDiff),Math.abs(yawDiff));config.yaw+=yawDiff}
115if(config.autoRotateStopDelay){config.autoRotateStopDelay-=newTime-prevTime;if(config.autoRotateStopDelay<=0){config.autoRotateStopDelay=!1;autoRotateSpeed=config.autoRotate;config.autoRotate=0}}}
116if(animatedMove.pitch){animateMove('pitch');prevPitch=config.pitch}
117if(animatedMove.yaw){animateMove('yaw');prevYaw=config.yaw}
118if(animatedMove.hfov){animateMove('hfov');prevZoom=config.hfov}
119if(diff>0&&!config.autoRotate){var slowDownFactor=1-config.friction;if(!keysDown[4]&&!keysDown[5]&&!keysDown[8]&&!keysDown[9]&&!animatedMove.yaw){config.yaw+=speed.yaw*diff*slowDownFactor}
120if(!keysDown[2]&&!keysDown[3]&&!keysDown[6]&&!keysDown[7]&&!animatedMove.pitch){config.pitch+=s
120peed.pitch*diff*slowDownFactor}
121if(!keysDown[0]&&!keysDown[1]&&!animatedMove.hfov){setHfov(config.hfov+speed.hfov*diff*slowDownFactor)}}
122prevTime=newTime;if(diff>0){speed.yaw=speed.yaw*0.8+(config.yaw-prevYaw)/diff*0.2;speed.pitch=speed.pitch*0.8+(config.pitch-prevPitch)/diff*0.2;speed.hfov=speed.hfov*0.8+(config.hfov-prevZoom)/diff*0.2;var maxSpeed=config.autoRotate?Math.abs(config.autoRotate):5;speed.yaw=Math.min(maxSpeed,Math.max(speed.yaw,-maxSpeed));speed.pitch=Math.min(maxSpeed,Math.max(speed.pitch,-maxSpeed));speed.hfov=Math.min(maxSpeed,Math.max(speed.hfov,-maxSpeed))}
123if(keysDown[0]&&keysDown[1]){speed.hfov=0}
124if((keysDown[2]||keysDown[6])&&(keysDown[3]||keysDown[7])){speed.pitch=0}
125if((keysDown[4]||keysDown[8])&&(keysDown[5]||keysDown[9])){speed.yaw=0}}
126function animateMove(axis){var t=animatedMove[axis];var normTime=Math.min(1,Math.max((Date.now()-t.startTime)/1000/(t.duration/1000),0));var result=t.startPosition+config.animationTimingFunction(normTime)*(t.endPosition-t.startPosition);if((t.endPosition>t.startPosition&&result>=t.endPosition)||(t.endPosition<t.startPosition&&result<=t.endPosition)||t.endPosition===t.startPosition){result=t.endPosition;speed[axis]=0;delete animatedMove[axis]}
127config[axis]=result}
128function timingFunction(t){return t<0.5?2*t*t:-1+(4-2*t)*t}
129function onDocumentResize(){onFullScreenChange('resize')}
130function animateInit(){if(animating){return}
131animating=!0;animate()}
132function animate(){if(destroyed){return}
133render();if(autoRotateStart)
134clearTimeout(autoRotateStart);if(isUserInteracting||orientation===!0){requestAnimationFrame(animate)}else if(keysDown[0]||keysDown[1]||keysDown[2]||keysDown[3]||keysDown[4]||keysDown[5]||keysDown[6]||keysDown[7]||keysDown[8]||keysDown[9]||config.autoRotate||animatedMove.pitch||animatedMove.yaw||animatedMove.hfov||Math.abs(speed.yaw)>0.01||Math.abs(speed.pitch)>0.01||Math.abs(speed.hfov)>0.01){keyRepeat();if(config.autoRotateInactivityDelay>=0&&autoRotateSpeed&&Date.now()-latestInteraction>config.autoRotateInactivityDelay&&!config.autoRotate){config.autoRotate=autoRotateSpeed;_this.lookAt(origPitch,undefined,origHfov,3000)}
135requestAnimationFrame(animate)}else if(renderer&&(renderer.isLoading()||(config.dynamic===!0&&update))){requestAnimationFrame(animate)}else{fireEvent('animatefinished',{pitch:_this.getPitch(),yaw:_this.getYaw(),hfov:_this.getHfov()});animating=!1;prevTime=undefined;var autoRotateStartTime=config.autoRotateInactivityDelay-(Date.now()-latestInteraction);if(autoRotateStartTime>0){autoRotateStart=setTimeout(function(){config.autoRotate=autoRotateSpeed;_this.lookAt(origPitch,undefined,origHfov,3000);animateInit()},autoRotateStartTime)}else if(config.autoRotateInactivityDelay>=0&&autoRotateSpeed){config.autoRotate=autoRotateSpeed;_this.lookAt(origPitch,undefined,origHfov,3000);animateInit()}}}
136function render(){var tmpyaw;if(loaded){var canvas=renderer.getCanvas();if(config.autoRotate!==!1){if(config.yaw>360){config.yaw-=360}else if(config.yaw<-360){config.yaw+=360}}
137tmpyaw=config.yaw;var hoffcut=0,voffcut=0;if(config.avoidShowingBackground){var hfov2=config.hfov/2,vfov2=Math.atan2(Math.tan(hfov2/180*Math.PI),(canvas.width/canvas.height))*180/Math.PI,transposed=config.vaov>config.haov;if(transposed){voffcut=vfov2*(1-Math.min(Math.cos((config.pitch-hfov2)/180*Math.PI),Math.cos((config.pitch+hfov2)/180*Math.PI)))}else{hoffcut=hfov2*(1-Math.min(Math.cos((config.pitch-vfov2)/180*Math.PI),Math.cos((config.pitch+vfov2)/180*Math.PI)))}}
138var yawRange=config.maxYaw-config.minYaw,minYaw=-180,maxYaw=180;if(yawRange<360){minYaw=config.minYaw+config.hfov/2+hoffcut;maxYaw=config.maxYaw-config.hfov/2-hoffcut;if(yawRange<config.hfov){minYaw=maxYaw=(minYaw+maxYaw)/2}
139config.yaw=Math.max(minYaw,Math.min(maxYaw,config.yaw))}
140if(!(config.autoRotate!==!1)){if(config.yaw>360){config.yaw-=360}else if(config.yaw<-360){config.yaw+=360}}
141if(config.autoRotate!==!1&&tmpyaw!=config.yaw&&prevTime!==undefined){config.autoRotate*=-1}
142var vfov=2*Math.atan(Math.tan(config.hfov / 180 * Math.PI * 0.5) /(canvas.width/canvas.height))/Math.PI*180;var minPitch=config.minPitch+vfov/2,maxPitch=config.maxPitch-vfov/2;var pitchRange=config.maxPitch-config.minPitch;if(pitchRange<vfov){minPitch=maxPitch=(minPitch+maxPitch)/2}
143if(isNaN(minPitch))
144minPitch=-90;if(isNaN(maxPitch))
145maxPitch=90;config.pitch=Math.max(minPitch,Math.min(maxPitch,config.pitch));renderer.render(config.pitch*Math.PI/180,config.yaw*Math.PI/180,config.hfov*Math.PI/180,{roll:config.roll*Math.PI/180});renderHotSpots();if(config.compass){compass.style.transform='rotate('+(-config.yaw-config.northOffset)+'deg)';compass.style.webkitTransform='rotate('+(-config.yaw-config.northOffset)+'deg)'}}}
146function Quaternion(w,x,y,z){this.w=w;this.x=x;this.y=y;this.z=z}
147Quaternion.prototype.multiply=function(q){return new Quaternion(this.w*q.w-this.x*q.x-this.y*q.y-this.z*q.z,this.x*q.w+this.w*q.x+this.y*q.z-this.z*q.y,this.y*q.w+this.w*q.y+this.z*q.x-this.x*q.z,this.z*q.w+this.w*q.z+this.x*q.y-this.y*q.x)};Quaternion.prototype.toEulerAngles=function(){var phi=Math.atan2(2*(this.w*this.x+this.y*this.z),1-2*(this.x*this.x+this.y*this.y)),theta=Math.asin(2*(this.w*this.y-this.z*this.x)),psi=Math.atan2(2*(this.w*this.z+this.x*this.y),1-2*(this.y*this.y+this.z*this.z));return[phi,theta,psi]};function taitBryanToQuaternion(alpha,beta,gamma){var r=[beta?beta*Math.PI/180/2:0,gamma?gamma*Math.PI/180/2:0,alpha?alpha*Math.PI/180/2:0];var c=[Math.cos(r[0]),Math.cos(r[1]),Math.cos(r[2])],s=[Math.sin(r[0]),Math.sin(r[1]),Math.sin(r[2])];return new Quaternion(c[0]*c[1]*c[2]-s[0]*s[1]*s[2],s[0]*c[1]*c[2]-c[0]*s[1]*s[2],c[0]*s[1]*c[2]+s[0]*c[1]*s[2],c[0]*c[1]*s[2]+s[0]*s[1]*c[2])}
148function computeQuaternion(alpha,beta,gamma){var quaternion=taitBryanToQuaternion(alpha,beta,gamma);quaternion=quaternion.multiply(new Quaternion(Math.sqrt(0.5),-Math.sqrt(0.5),0,0));var angle=window.orientation?-window.orientation*Math.PI/180/2:0;return quaternion.multiply(new Quaternion(Math.cos(angle),0,-Math.sin(angle),0))}
149function orientationListener(e){var q=computeQuaternion(e.alpha,e.beta,e.gamma).toEulerAngles();if(typeof(orientation)=='number'&&orientation<10){orientation+=1}else if(orientation===10){orientationYawOffset=q[2]/Math.PI*180+config.yaw;orientation=!0;requestAnimationFrame(animate)}else{config.pitch=q[0]/Math.PI*180;config.roll=-q[1]/Math.PI*180;config.yaw=-q[2]/Math.PI*180+orientationYawOffset}}
150function renderInit(){try{var params={};if(config.horizonPitch!==undefined)
151params.horizonPitch=config.horizonPitch*Math.PI/180;if(config.horizonRoll!==undefined)
152params.horizonRoll=config.horizonRoll*Math.PI/180;if(config.backgroundColor!==undefined)
153params.backgroundColor=config.backgroundColor;renderer.init(panoImage,config.type,config.dynamic,config.haov*Math.PI/180,config.vaov*Math.PI/180,config.vOffset*Math.PI/180,renderInitCallback,params);if(config.dynamic!==!0){panoImage=undefined}}catch(event){if(event.type=='webgl error'||event.type=='no webgl'){anError()}else if(event.type=='webgl size error'){anError(config.strings.textureSizeError.replace('%s',event.width).replace('%s',event.maxWidth))}else{anError(config.strings.unknownError);throw event}}}
154function renderInitCallback(){if(config.sceneFadeDuration&&renderer.fadeImg!==undefined){renderer.fadeImg.style.opacity=0;var fadeImg=renderer.fadeImg;delete renderer.fadeImg;setTimeout(function(){renderContainer.removeChild(fadeImg);fireEvent('scenechangefadedone')},config.sceneFadeDuration)}
155if(config.compass){compass.style.display='inline'}else{compass.style.display='none'}
156createHotSpots();infoDisplay.load.box.style.display='none';if(preview!==undefined){renderContainer.removeChild(preview);preview=undefined}
157loaded=!0;animateInit();fireEvent('load')}
158function createHotSpot(hs){hs.pitch=Number(hs.pitch)||0;hs.yaw=Number(hs.yaw)||0;var div=document.createElement('div');div.className='pnlm-hotspot-base';if(hs.cssClass)
159div.className+=' '+hs.cssClass;else div.className+=' pnlm-hotspot pnlm-sprite pnlm-'+escapeHTML(hs.type);var span=document.createElement('span');if(hs.text)
160span.innerHTML=escapeHTML(hs.text);var a;if(hs.video){var video=document.createElement('video'),vidp=hs.video;if(config.basePath&&!absoluteURL(vidp))
161vidp=config.basePath+vidp;video.src=sanitizeURL(vidp);video.controls=!0;video.style.width=hs.width+'px';renderContainer.appendChild(div);span.appendChild(video)}else if(hs.image){var imgp=hs.image;if(config.basePath&&!absoluteURL(imgp))
162imgp=config.basePath+imgp;a=document.createElement('a');a.href=sanitizeURL(hs.URL?hs.URL:imgp,!0);a.target='_blank';span.appendChild(a);var image=document.createElement('img');image.src=sanitizeURL(imgp);image.style.width=hs.width+'px';image.style.paddingTop='5px';renderContainer.appendChild(div);a.appendChild(image);span.style.maxWidth='initial'}else if(hs.URL){a=document.createElement('a');a.href=sanitizeURL(hs.URL,!0);if(hs.attributes){for(var key in hs.attributes){a.setAttribute(key,hs.attributes[key])}}else{if(hs.wpvr_url_open=='on'){a.target='_self'}else{a.target='_blank'}}
163renderContainer.appendChild(a);div.className+=' pnlm-pointer';span.className+=' pnlm-pointer';a.appendChild(div)}else{if(hs.sceneId){div.onclick=div.ontouchend=function(){if(!div.clicked){div.clicked=!0;loadScene(hs.sceneId,hs.targetPitch,hs.targetYaw,hs.targetHfov)}
164return!1};div.className+=' pnlm-pointer';span.className+=' pnlm-pointer'}
165renderContainer.appendChild(div)}
166if(hs.createTooltipFunc){hs.createTooltipFunc(div,hs.createTooltipArgs)}else if(hs.text||hs.video||hs.image){div.classList.add('pnlm-tooltip');div.appendChild(span);span.style.width=span.scrollWidth-20+'px';span.style.marginLeft=-(span.scrollWidth-div.offsetWidth)/2+'px';span.style.marginTop=-span.scrollHeight-12+'px'}
167if(hs.clickHandlerFunc){div.addEventListener('click',function(e){hs.clickHandlerFunc(e,hs.clickHandlerArgs)},'false');div.className+=' pnlm-pointer';span.className+=' pnlm-pointer'}
168hs.div=div}
169function createHotSpots(){if(hotspotsCreated)return;if(!config.hotSpots){config.hotSpots=[]}else{config.hotSpots=config.hotSpots.sort(function(a,b){return a.pitch<b.pitch});config.hotSpots.forEach(createHotSpot)}
170hotspotsCreated=!0;renderHotSpots()}
171function destroyHotSpots(){var hs=config.hotSpots;hotspotsCreated=!1;delete config.hotSpots;if(hs){for(var i=0;i<hs.length;i++){var current=hs[i].div;if(current){while(current.parentNode&&current.parentNode!=renderContainer){current=current.parentNode}
172renderContainer.removeChild(current)}
173delete hs[i].div}}}
174function renderHotSpot(hs){var hsPitchSin=Math.sin(hs.pitch*Math.PI/180),hsPitchCos=Math.cos(hs.pitch*Math.PI/180),c
174onfigPitchSin=Math.sin(config.pitch*Math.PI/180),configPitchCos=Math.cos(config.pitch*Math.PI/180),yawCos=Math.cos((-hs.yaw+config.yaw)*Math.PI/180);var z=hsPitchSin*configPitchSin+hsPitchCos*yawCos*configPitchCos;if((hs.yaw<=90&&hs.yaw>-90&&z<=0)||((hs.yaw>90||hs.yaw<=-90)&&z<=0)){hs.div.style.visibility='hidden'}else{var yawSin=Math.sin((-hs.yaw+config.yaw)*Math.PI/180),hfovTan=Math.tan(config.hfov*Math.PI/360);hs.div.style.visibility='visible';var canvas=renderer.getCanvas(),canvasWidth=canvas.clientWidth,canvasHeight=canvas.clientHeight;var coord=[-canvasWidth/hfovTan*yawSin*hsPitchCos/z/2,-canvasWidth/hfovTan*(hsPitchSin*configPitchCos-hsPitchCos*yawCos*configPitchSin)/z/2];var rollSin=Math.sin(config.roll*Math.PI/180),rollCos=Math.cos(config.roll*Math.PI/180);coord=[coord[0]*rollCos-coord[1]*rollSin,coord[0]*rollSin+coord[1]*rollCos];coord[0]+=(canvasWidth-hs.div.offsetWidth)/2;coord[1]+=(canvasHeight-hs.div.offsetHeight)/2;var transform='translate('+coord[0]+'px, '+coord[1]+'px) translateZ(9999px) rotate('+config.roll+'deg)';if(hs.scale){transform+=' scale('+(origHfov/config.hfov)/z+')'}
175hs.div.style.webkitTransform=transform;hs.div.style.MozTransform=transform;hs.div.style.transform=transform}}
176function renderHotSpots(){config.hotSpots.forEach(renderHotSpot)}
177function mergeConfig(sceneId){config={};var k,s;var photoSphereExcludes=['haov','vaov','vOffset','northOffset','horizonPitch','horizonRoll'];specifiedPhotoSphereExcludes=[];for(k in defaultConfig){if(defaultConfig.hasOwnProperty(k)){config[k]=defaultConfig[k]}}
178for(k in initialConfig.default){if(initialConfig.default.hasOwnProperty(k)){if(k=='strings'){for(s in initialConfig.default.strings){if(initialConfig.default.strings.hasOwnProperty(s)){config.strings[s]=escapeHTML(initialConfig.default.strings[s])}}}else{config[k]=initialConfig.default[k];if(photoSphereExcludes.indexOf(k)>=0){specifiedPhotoSphereExcludes.push(k)}}}}
179if((sceneId!==null)&&(sceneId!=='')&&(initialConfig.scenes)&&(initialConfig.scenes[sceneId])){var scene=initialConfig.scenes[sceneId];for(k in scene){if(scene.hasOwnProperty(k)){if(k=='strings'){for(s in scene.strings){if(scene.strings.hasOwnProperty(s)){config.strings[s]=escapeHTML(scene.strings[s])}}}else{config[k]=scene[k];if(photoSphereExcludes.indexOf(k)>=0){specifiedPhotoSphereExcludes.push(k)}}}}
180config.scene=sceneId}
181for(k in initialConfig){if(initialConfig.hasOwnProperty(k)){if(k=='strings'){for(s in initialConfig.strings){if(initialConfig.strings.hasOwnProperty(s)){config.strings[s]=escapeHTML(initialConfig.strings[s])}}}else{config[k]=initialConfig[k];if(photoSphereExcludes.indexOf(k)>=0){specifiedPhotoSphereExcludes.push(k)}}}}}
182function processOptions(isPreview){isPreview=isPreview?isPreview:!1;if(isPreview&&'preview' in config){var p=config.preview;if(config.basePath&&!absoluteURL(p))
183p=config.basePath+p;preview=document.createElement('div');preview.className='pnlm-preview-img';preview.style.backgroundImage="url('"+sanitizeURLForCss(p)+"')";renderContainer.appendChild(preview)}
184var title=config.title,author=config.author;if(isPreview){if('previewTitle' in config)
185config.title=config.previewTitle;if('previewAuthor' in config)
186config.author=config.previewAuthor}
187if(!config.hasOwnProperty('title'))
188infoDisplay.title.innerHTML='';if(!config.hasOwnProperty('author'))
189infoDisplay.author.innerHTML='';if(!config.hasOwnProperty('title')&&!config.hasOwnProperty('author'))
190infoDisplay.container.style.display='none';controls.load.innerHTML='<p>'+config.strings.loadButtonLabel+'</p>';infoDisplay.load.boxp.innerHTML=config.strings.loadingLabel;for(var key in config){if(config.hasOwnProperty(key)){switch(key){case 'title':infoDisplay.title.innerHTML=escapeHTML(config[key]);infoDisplay.container.style.display='inline';break;case 'author':var authorText=escapeHTML(config[key]);if(config.authorURL){var authorLink=document.createElement('a');authorLink.href=sanitizeURL(config.authorURL,!0);authorLink.target='_blank';authorLink.innerHTML=escapeHTML(config[key]);authorText=authorLink.outerHTML}
191infoDisplay.author.innerHTML=config.strings.bylineLabel.replace('%s',authorText);
191infoDisplay.container.style.display='inline';break;case 'fallback':var link=document.createElement('a');link.href=sanitizeURL(config[key],!0);link.target='_blank';link.textContent='Click here to view this panorama in an alternative viewer.';var message=document.createElement('p');message.textContent='Your browser does not support WebGL.';message.appendChild(document.createElement('br'));message.appendChild(link);infoDisplay.errorMsg.innerHTML='';infoDisplay.errorMsg.appendChild(message);break;case 'hfov':setHfov(Number(config[key]));break;case 'autoLoad':if(config[key]===!0&&renderer===undefined){infoDisplay.load.box.style.display='inline';controls.load.style.display='none';init()}
192break;case 'showZoomCtrl':if(config[key]&&config.showControls!=!1){controls.zoom.style.display='block'}else{controls.zoom.style.display='none'}
193break;case 'showFullscreenCtrl':if(config[key]&&config.showControls!=!1&&('fullscreen' in document||'mozFullScreen' in document||'webkitIsFullScreen' in document||'msFullscreenElement' in document)){controls.fullscreen.style.display='block'}else{controls.fullscreen.style.display='none'}
194break;case 'hotSpotDebug':if(config[key])
195hotSpotDebugIndicator.style.display='block';else hotSpotDebugIndicator.style.display='none';break;case 'showControls':if(!config[key]){controls.orientation.style.display='none';controls.zoom.style.display='none';controls.fullscreen.style.display='none'}
196break;case 'orientationOnByDefault':if(config[key])
197startOrientation();break}}}
198if(isPreview){if(title)
199config.title=title;else delete config.title;if(author)
200config.author=author;else delete config.author}}
201function toggleFullscreen(){if(loaded&&!error){if(!fullscreenActive){try{if(container.requestFullscreen){container.requestFullscreen()}else if(container.mozRequestFullScreen){container.mozRequestFullScreen()}else if(container.msRequestFullscreen){container.msRequestFullscreen()}else{container.webkitRequestFullScreen()}}catch(event){}}else{if(document.exitFullscreen){document.exitFullscreen()}else if(document.mozCancelFullScreen){document.mozCancelFullScreen()}else if(document.webkitCancelFullScreen){document.webkitCancelFullScreen()}else if(document.msExitFullscreen){document.msExitFullscreen()}}}}
202function onFullScreenChange(resize){if(document.fullscreenElement||document.fullscreen||document.mozFullScreen||document.webkitIsFullScreen||document.msFullscreenElement){controls.fullscreen.classList.add('pnlm-fullscreen-toggle-button-active');fullscreenActive=!0}else{controls.fullscreen.classList.remove('pnlm-fullscreen-toggle-button-active');fullscreenActive=!1}
203if(resize!=='resize')
204fireEvent('fullscreenchange',fullscreenActive);renderer.resize();setHfov(config.hfov);animateInit()}
205function zoomIn(){if(loaded){setHfov(config.hfov-5);animateInit()}}
206function zoomOut(){if(loaded){setHfov(config.hfov+5);animateInit()}}
207function constrainHfov(hfov){var minHfov=config.minHfov;if(config.type=='multires'&&renderer&&!config.multiResMinHfov){minHfov=Math.min(minHfov,renderer.getCanvas().width/(config.multiRes.cubeResolution/90*0.9))}
208if(minHfov>config.maxHfov){console.log('HFOV bounds do not make sense (minHfov > maxHfov).');return config.hfov}
209var newHfov=config.hfov;if(hfov<minHfov){newHfov=minHfov}else if(hfov>config.maxHfov){newHfov=config.maxHfov}else{newHfov=hfov}
210if(config.avoidShowingBackground&&renderer){var canvas=renderer.getCanvas();newHfov=Math.min(newHfov,Math.atan(Math.tan((config.maxPitch-config.minPitch)/360*Math.PI)/canvas.height*canvas.width)*360/Math.PI)}
211return newHfov}
212function setHfov(hfov){config.hfov=constrainHfov(hfov);fireEvent('zoomchange',config.hfov)}
213function stopAnimation(){animatedMove={};autoRotateSpeed=config.autoRotate?config.autoRotate:autoRotateSpeed;config.autoRotate=!1}
214function load(){clearError();loaded=!1;controls.load.style.display='none';infoDisplay.load.box.style.display='inline';init()}
215function loadScene(sceneId,targetPitch,targetYaw,targetHfov,fadeDone){if(!loaded)
216fadeDone=!0;loaded=!1;animatedMove={};var fadeImg,workingPitch,workingYaw,workingHfov;if(config.sceneFadeDuration&&!fadeDone){var data=renderer.render(config.pitch*Math.PI/180,config.yaw*Math.PI/180,config.hfov*Math.PI/180,{returnImage:!0});
216if(data!==undefined){fadeImg=new Image();fadeImg.className='pnlm-fade-img';fadeImg.style.transition='opacity '+(config.sceneFadeDuration/1000)+'s';fadeImg.style.width='100%';fadeImg.style.height='100%';fadeImg.onload=function(){loadScene(sceneId,targetPitch,targetYaw,targetHfov,!0)};fadeImg.src=data;renderContainer.appendChild(fadeImg);renderer.fadeImg=fadeImg;return}}
217if(targetPitch==='same'){workingPitch=config.pitch}else{workingPitch=targetPitch}
218if(targetYaw==='same'){workingYaw=config.yaw}else if(targetYaw==='sameAzimuth'){workingYaw=config.yaw+(config.northOffset||0)-(initialConfig.scenes[sceneId].northOffset||0)}else{workingYaw=targetYaw}
219if(targetHfov==='same'){workingHfov=config.hfov}else{workingHfov=targetHfov}
220destroyHotSpots();mergeConfig(sceneId);speed.yaw=speed.pitch=speed.hfov=0;processOptions();if(workingPitch!==undefined){config.pitch=workingPitch}
221if(workingYaw!==undefined){config.yaw=workingYaw}
222if(workingHfov!==undefined){config.hfov=workingHfov}
223fireEvent('scenechange',sceneId);load()}
224function stopOrientation(){window.removeEventListener('deviceorientation',orientationListener);controls.orientation.classList.remove('pnlm-orientation-button-active');orientation=!1}
225function startOrientation(){if(!orientationSupport)
226return;if(typeof DeviceMotionEvent!=='undefined'&&typeof DeviceMotionEvent.requestPermission==='function'){DeviceOrientationEvent.requestPermission().then(function(response){if(response=='granted'){orientation=1;window.addEventListener('deviceorientation',orientationListener);controls.orientation.classList.add('pnlm-orientation-button-active')}})}else{orientation=1;window.addEventListener('deviceorientation',orientationListener);controls.orientation.classList.add('pnlm-orientation-button-active')}}
227function escapeHTML(s){if(!initialConfig.escapeHTML)
228return String(s).split('\n').join('<br>');return String(s).split(/&/g).join('&amp;').split('"').join('&quot;').split("'").join('&#39;').split('<').join('&lt;').split('>').join('&gt;').split('/').join('&#x2f;').split('\n').join('<br>')}
229function sanitizeURL(url,href){try{var decoded_url=decodeURIComponent(unescape(url)).replace(/[^\w:]/g,'').toLowerCase()}catch(e){return'about:blank'}
230if(decoded_url.indexOf('javascript:')===0||decoded_url.indexOf('vbscript:')===0){console.log('Script URL removed.');return'about:blank'}
231if(href&&decoded_url.indexOf('data:')===0){console.log('Data URI removed from link.');return'about:blank'}
232return url}
233function unescape(html){return html.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,function(_,n){n=n.toLowerCase();if(n==='colon')return':';if(n.charAt(0)==='#'){return n.charAt(1)==='x'?String.fromCharCode(parseInt(n.substring(2),16)):String.fromCharCode(+n.substring(1))}
234return''})}
235function sanitizeURLForCss(url){return sanitizeURL(url).replace(/"/g,'%22').replace(/'/g,'%27')}
236this.isLoaded=function(){return Boolean(loaded)};this.getPitch=function(){return config.pitch};this.setPitch=function(pitch,animated,callback,callbackArgs){latestInteraction=Date.now();if(Math.abs(pitch-config.pitch)<=eps){if(typeof callback=='function')
237callback(callbackArgs);return this}
238animated=animated==undefined?1000:Number(animated);if(animated){animatedMove.pitch={'startTime':Date.now(),'startPosition':config.pitch,'endPosition':pitch,'duration':animated};if(typeof callback=='function')
239setTimeout(function(){callback(callbackArgs)},animated)}else{config.pitch=pitch}
240animateInit();return this};this.getPitchBounds=function(){return[config.minPitch,config.maxPitch]};this.setPitchBounds=function(bounds){config.minPitch=Math.max(-90,Math.min(bounds[0],90));config.maxPitch=Math.max(-90,Math.min(bounds[1],90));return this};this.getYaw=function(){return(config.yaw+540)%360-180};this.setYaw=function(yaw,animated,callback,callbackArgs){latestInteraction=Date.now();if(Math.abs(yaw-config.yaw)<=eps){if(typeof callback=='function')
241callback(callbackArgs);return this}
242animated=animated==undefined?1000:Number(animated);yaw=((yaw+180)%360)-180;if(animated){if(config.yaw-yaw>180)
243yaw+=360;else if(yaw-config.yaw>180)
244yaw-=360;animatedMove.yaw={'startTime':Date.now(),'startPosition':config.yaw,'endPosition':yaw,'duration':animated};if(typeof callback=='function')
245setTimeout(function(){callback(callbackArgs)},animated)}else{config.yaw=yaw}
246animateInit();return this};this.getYawBounds=function(){return[config.minYaw,config.maxYaw]};
246this.setYawBounds=function(bounds){config.minYaw=Math.max(-360,Math.min(bounds[0],360));config.maxYaw=Math.max(-360,Math.min(bounds[1],360));return this};this.getHfov=function(){return config.hfov};this.setHfov=function(hfov,animated,callback,callbackArgs){latestInteraction=Date.now();if(Math.abs(hfov-config.hfov)<=eps){if(typeof callback=='function')
247callback(callbackArgs);return this}
248animated=animated==undefined?1000:Number(animated);if(animated){animatedMove.hfov={'startTime':Date.now(),'startPosition':config.hfov,'endPosition':constrainHfov(hfov),'duration':animated};if(typeof callback=='function')
249setTimeout(function(){callback(callbackArgs)},animated)}else{setHfov(hfov)}
250animateInit();return this};this.getHfovBounds=function(){return[config.minHfov,config.maxHfov]};this.setHfovBounds=function(bounds){config.minHfov=Math.max(0,bounds[0]);config.maxHfov=Math.max(0,bounds[1]);return this};this.lookAt=function(pitch,yaw,hfov,animated,callback,callbackArgs){animated=animated==undefined?1000:Number(animated);if(pitch!==undefined&&Math.abs(pitch-config.pitch)>eps){this.setPitch(pitch,animated,callback,callbackArgs);callback=undefined}
251if(yaw!==undefined&&Math.abs(yaw-config.yaw)>eps){this.setYaw(yaw,animated,callback,callbackArgs);callback=undefined}
252if(hfov!==undefined&&Math.abs(hfov-config.hfov)>eps){this.setHfov(hfov,animated,callback,callbackArgs);callback=undefined}
253if(typeof callback=='function')
254callback(callbackArgs);return this};this.getNorthOffset=function(){return config.northOffset};this.setNorthOffset=function(heading){config.northOffset=Math.min(360,Math.max(0,heading));animateInit();return this};this.getHorizonRoll=function(){return config.horizonRoll};this.setHorizonRoll=function(roll){config.horizonRoll=Math.min(90,Math.max(-90,roll));renderer.setPose(config.horizonPitch*Math.PI/180,config.horizonRoll*Math.PI/180);animateInit();return this};this.getHorizonPitch=function(){return config.horizonPitch};this.setHorizonPitch=function(pitch){config.horizonPitch=Math.min(90,Math.max(-90,pitch));renderer.setPose(config.horizonPitch*Math.PI/180,config.horizonRoll*Math.PI/180);animateInit();return this};this.startAutoRotate=function(speed,pitch){speed=speed||autoRotateSpeed||1;pitch=pitch===undefined?origPitch:pitch;config.autoRotate=speed;_this.lookAt(pitch,undefined,origHfov,3000);animateInit();return this};this.stopAutoRotate=function(){autoRotateSpeed=config.autoRotate?config.autoRotate:autoRotateSpeed;config.autoRotate=!1;config.autoRotateInactivityDelay=-1;return this};this.stopMovement=function(){stopAnimation();speed={'yaw':0,'pitch':0,'hfov':0}};this.getRenderer=function(){return renderer};this.setUpdate=function(bool){update=bool===!0;if(renderer===undefined)
255onImageLoad();else animateInit();return this};this.mouseEventToCoords=function(event){return mouseEventToCoords(event)};this.loadScene=function(sceneId,pitch,yaw,hfov){if(loaded!==!1)
256loadScene(sceneId,pitch,yaw,hfov);return this};this.getScene=function(){return config.scene};this.addScene=function(sceneId,config){initialConfig.scenes[sceneId]=config;return this};this.removeScene=function(sceneId){if(config.scene===sceneId||!initialConfig.scenes.hasOwnProperty(sceneId))
257return!1;delete initialConfig.scenes[sceneId];return!0};this.toggleFullscreen=function(){toggleFullscreen();return this};this.getConfig=function(){return config};this.getContainer=function(){return container};this.addHotSpot=function(hs,sceneId){if(sceneId===undefined&&config.scene===undefined){config.hotSpots.push(hs)}else{var id=sceneId!==undefined?sceneId:config.scene;if(initialConfig.scenes.hasOwnProperty(id)){if(!initialConfig.scenes[id].hasOwnProperty('hotSpots')){initialConfig.scenes[id].hotSpots=[];if(id==config.scene)
258config.hotSpots=initialConfig.scenes[id].hotSpots}
259initialConfig.scenes[id].hotSpots.push(hs)}else{throw 'Invalid scene ID!'}}
260if(sceneId===undefined||config.scene==sceneId){createHotSpot(hs);if(loaded)
261renderHotSpot(hs);}
262return this};this.removeHotSpot=function(hotSpotId,sceneId){if(sceneId===undefined||config.scene==sceneId){if(!config.hotSpots)
263return!1;for(var i=0;i<config.hotSpots.length;i++){if(config.hotSpots[i].hasOwnProperty('id')&&config.hotSpots[i].id===hotSpotId){var current=config.hotSpots[i].div;while(current.parentNode!=renderContainer)
264current=current.parentNode;renderContainer.removeChild(current);delete config.hotSpots[i].div;config.hotSpots.splice(i,1);return!0}}}else{if(initialConfig.scenes.hasOwnProperty(sceneId)){if(!initialConfig.scenes[sceneId].hasOwnProperty('hotSpots'))
265return!1;for(var j=0;j<initialConfig.scenes[sceneId].hotSpots.length;j++){if(initialConfig.scenes[sceneId].hotSpots[j].hasOwnProperty('id')&&initialConfig.scenes[sceneId].hotSpots[j].id===hotSpotId){initialConfig.scenes[sceneId].hotSpots.splice(j,1);return!0}}}else{return!1}}};this.resize=function(){if(renderer)
266onDocumentResize();};this.isLoaded=function(){return loaded};this.isOrientationSupported=function(){return orientationSupport||!1};this.stopOrientation=function(){stopOrientation()};this.startOrientation=function(){if(orientationSupport)
267startOrientation();};this.isOrientationActive=function(){return Boolean(orientation)};this.on=function(type,listener){externalEventListeners[type]=externalEventListeners[type]||[];externalEventListeners[type].push(listener);return this};this.off=function(type,listener){if(!type){externalEventListeners={};return this}
268if(listener){var i=externalEventListeners[type].indexOf(listener);if(i>=0){externalEventListeners[type].splice(i,1)}
269if(externalEventListeners[type].length==0){delete externalEventListeners[type]}}else{delete externalEventListeners[type]}
270return this};function fireEvent(type){if(type in externalEventListeners){for(var i=externalEventListeners[type].length;i>0;i--){externalEventListeners[type][externalEventListeners[type].length-i].apply(null,[].slice.call(arguments,1
270))}}}
271this.destroy=function(){destroyed=!0;clearTimeout(autoRotateStart);if(renderer)
272renderer.destroy();if(listenersAdded){document.removeEventListener('mousemove',onDocumentMouseMove,!1);document.removeEventListener('mouseup',onDocumentMouseUp,!1);container.removeEventListener('mozfullscreenchange',onFullScreenChange,!1);container.removeEventListener('webkitfullscreenchange',onFullScreenChange,!1);container.removeEventListener('msfullscreenchange',onFullScreenChange,!1);container.removeEventListener('fullscreenchange',onFullScreenChange,!1);window.removeEventListener('resize',onDocumentResize,!1);window.removeEventListener('orientationchange',onDocumentResize,!1);container.removeEventListener('keydown',onDocumentKeyPress,!1);container.removeEventListener('keyup',onDocumentKeyUp,!1);container.removeEventListener('blur',clearKeys,!1);document.removeEventListener('mouseleave',onDocumentMouseUp,!1)}
273container.innerHTML='';container.classList.remove('pnlm-container')}}
274return{viewer:function(container,config){return new Viewer(container,config)}}})(window,document);
275
276
277
278window.libpannellum=(function(window,document,undefined){'use strict';
278function Renderer(container){var canvas=document.createElement('canvas');canvas.style.width=canvas.style.height='100%';container.appendChild(canvas);var program,gl,vs,fs;var fallbackImgSize;var world;var vtmps;var pose;var image,imageType,dynamic;var texCoordBuffer,cubeVertBuf,cubeVertTexCoordBuf,cubeVertIndBuf;var globalParams;this.init=function(_image,_imageType,_dynamic,haov,vaov,voffset,callback,params){if(_imageType===undefined)
279_imageType='equirectangular';if(_imageType!='equirectangular'&&_imageType!='cubemap'&&_imageType!='multires'){console.log('Error: invalid image type specified!');throw{type:'config error'}}
280imageType=_imageType;image=_image;dynamic=_dynamic;globalParams=params||{};if(program){if(vs){gl.detachShader(program,vs);gl.deleteShader(vs)}
281if(fs){gl.detachShader(program,fs);gl.deleteShader(fs)}
282gl.bindBuffer(gl.ARRAY_BUFFER,null);gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,null);if(program.texture)
283gl.deleteTexture(program.texture);if(program.nodeCache)
284for(var i=0;i<program.nodeCache.length;i++)
285gl.deleteTexture(program.nodeCache[i].texture);gl.deleteProgram(program);program=undefined}
286pose=undefined;var s;var faceMissing=!1;var cubeImgWidth;if(imageType=='cubemap'){for(s=0;s<6;s++){if(image[s].width>0){if(cubeImgWidth===undefined)
287cubeImgWidth=image[s].width;if(cubeImgWidth!=image[s].width)
288console.log('Cube faces have inconsistent widths: '+cubeImgWidth+' vs. '+image[s].width);}else faceMissing=!0}}
289function fillMissingFaces(imgSize){if(faceMissing){var nbytes=imgSize*imgSize*4;var imageArray=new Uint8ClampedArray(nbytes);var rgb=params.backgroundColor?params.backgroundColor:[0,0,0];rgb[0]*=255;rgb[1]*=255;rgb[2]*=255;for(var i=0;i<nbytes;i++){imageArray[i++]=rgb[0];imageArray[i++]=rgb[1];imageArray[i++]=rgb[2]}
290var backgroundSquare=new ImageData(imageArray,imgSize,imgSize);for(s=0;s<6;s++){if(image[s].width==0)
291image[s]=backgroundSquare}}}
292if(!(imageType=='cubemap'&&(cubeImgWidth&(cubeImgWidth-1))!==0&&(navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad).* os 8_/)||navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad).* os 9_/)||navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad).* os 10_/)||navigator.userAgent.match(/Trident.*rv[ :]*11\./)))){if(!gl)
293gl=canvas.getContext('experimental-webgl',{alpha:!1,depth:!1});if(gl&&gl.getError()==1286)
294handleWebGLError1286();}
295if(!gl&&((imageType=='multires'&&image.hasOwnProperty('fallbackPath'))||imageType=='cubemap')&&('WebkitAppearance' in document.documentElement.style||navigator.userAgent.match(/Trident.*rv[ :]*11\./)||navigator.appVersion.indexOf('MSIE 10')!==-1)){if(world){container.removeChild(world)}
296world=document.createElement('div');world.className='pnlm-world';var path;if(image.basePath){path=image.basePath+image.fallbackPath}else{path=image.fallbackPath}
297var sides=['f','r','b','l','u','d'];var loaded=0;var onLoad=function(){var faceCanvas=document.createElement('canvas');faceCanvas.className='pnlm-face pnlm-'+sides[this.side]+'face';world.appendChild(faceCanvas);var faceContext=faceCanvas.getContext('2d');faceCanvas.style.width=this.width+4+'px';faceCanvas.style.height=this.height+4+'px';faceCanvas.width=this.width+4;faceCanvas.height=this.height+4;faceContext.drawImage(this,2,2);var imgData=faceContext.getImageData(0,0,faceCanvas.width,faceCanvas.height);var data=imgData.data;var i;var j;for(i=2;i<faceCanvas.width-2;i++){for(j=0;j<4;j++){data[(i+faceCanvas.width)*4+j]=data[(i+faceCanvas.width*2)*4+j];data[(i+faceCanvas.width*(faceCanvas.height-2))*4+j]=data[(i+faceCanvas.width*(faceCanvas.height-3))*4+j]}}
298for(i=2;i<faceCanvas.height-2;i++){for(j=0;j<4;j++){data[(i*faceCanvas.width+1)*4+j]=data[(i*faceCanvas.width+2)*4+j];data[((i+1)*faceCanvas.width-2)*4+j]=data[((i+1)*faceCanvas.width-3)*4+j]}}
299for(j=0;j<4;j++){data[(faceCanvas.width+1)*4+j]=data[(faceCanvas.width*2+2)*4+j];data[(faceCanvas.width*2-2)*4+j]=data[(faceCanvas.width*3-3)*4+j];data[(faceCanvas.width*(faceCanvas.height-2)+1)*4+j]=data[(faceCanvas.width*(faceCanvas.height-3)+2)*4+j];data[(faceCanvas.width*(faceCanvas.height-1)-2)*4+j]=data[(faceCanvas.width*(faceCanvas.height-2)-3)*4+j]}
300for(i=1;i<faceCanvas.width-1;i++){for(j=0;j<4;j++){data[i*4+j]=data[(i+faceCanvas.width)*4+j];data[(i+faceCanvas.width*(faceCanvas.height-1))*4+j]=data[(i+faceCanvas.width*(faceCanvas.height-2))*4+j]}}
301for(i=1;i<faceCanvas.height-1;i++){for(j=0;j<4;j++){data[(i*faceCanvas.width)*4+j]=data[(i*faceCanvas.width+1)*4+j];data[((i+1)*faceCanvas.width-1)*4+j]=data[((i+1)*faceCanvas.width-2)*4+j]}}
302for(j=0;j<4;j++){data[j]=data[(faceCanvas.width+1)*4+j];data[(faceCanvas.width-1)*4+j]=data[(faceCanvas.width*2-2)*4+j];data[(faceCanvas.width*(faceCanvas.height-1))*4+j]=data[(faceCanvas.width*(faceCanvas.height-2)+1)*4+j];data[(faceCanvas.width*faceCanvas.height-1)*4+j]=data[(faceCanvas.width*(faceCanvas.height-1)-2)*4+j]}
303faceContext.putImageData(imgData,0,0);incLoaded.call(this)};var incLoaded=function(){if(this.width>0){if(fallbackImgSize===undefined)
304fallbackImgSize=this.width;if(fallbackImgSize!=this.width)
305console.log('Fallback faces have inconsistent widths: '+fallbackImgSize+' vs. '+this.width);}else faceMissing=!0;loaded++;if(loaded==6){fallbackImgSize=this.width;container.appendChild(world);callback()}};faceMissing=!1;for(s=0;s<6;s++){var faceImg=new Image();faceImg.crossOrigin=globalParams.crossOrigin?globalParams.crossOrigin:'anonymous';faceImg.side=s;faceImg.onload=onLoad;faceImg.onerror=incLoaded;if(imageType=='multires'){faceImg.src=path.replace('%s',sides[s])+'.'+image.extension}else{faceImg.src=image[s].src}}
306fillMissingFaces(fallbackImgSize);return}else if(!gl){console.log('Error: no WebGL support detected!');throw{type:'no webgl'}}
307if(imageType=='cubemap')
308fillMissingFaces(cubeImgWidth);if(image.basePath){image.fullpath=image.basePath+image.path}else{image.fullpath=image.path}
309image.invTileResolution=1/image.tileResolution;var vertices=createCube();vtmps=[];for(s=0;s<6;s++){vtmps[s]=vertices.slice(s*12,s*12+12);vertices=createCube()}
310var maxWidth=0;if(imageType=='equirectangular'){maxWidth=gl.getParameter(gl.MAX_TEXTURE_SIZE);if(Math.max(image.width/2,image.height)>maxWidth){console.log('Error: The image is too big;
310 it\'s '+image.width+'px wide, '+'but this device\'s maximum supported size is '+(maxWidth*2)+'px.');throw{type:'webgl size error',width:image.width,maxWidth:maxWidth*2}}}else if(imageType=='cubemap'){if(cubeImgWidth>gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE)){console.log('Error: The image is too big; it\'s '+cubeImgWidth+'px wide, '+'but this device\'s maximum supported size is '+maxWidth+'px.');throw{type:'webgl size error',width:cubeImgWidth,maxWidth:maxWidth}}}
311if(params!==undefined&&(params.horizonPitch!==undefined||params.horizonRoll!==undefined))
312pose=[params.horizonPitch==undefined?0:params.horizonPitch,params.horizonRoll==undefined?0:params.horizonRoll];var glBindType=gl.TEXTURE_2D;gl.viewport(0,0,gl.drawingBufferWidth,gl.drawingBufferHeight);if(gl.getShaderPrecisionFormat){var precision=gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER,gl.HIGH_FLOAT);if(precision&&precision.precision<1){fragEquiCubeBase=fragEquiCubeBase.replace('highp','mediump')}}
313vs=gl.createShader(gl.VERTEX_SHADER);var vertexSrc=v;if(imageType=='multires'){vertexSrc=vMulti}
314gl.shaderSource(vs,vertexSrc);gl.compileShader(vs);fs=gl.createShader(gl.FRAGMENT_SHADER);var fragmentSrc=fragEquirectangular;if(imageType=='cubemap'){glBindType=gl.TEXTURE_CUBE_MAP;fragmentSrc=fragCube}else if(imageType=='multires'){fragmentSrc=fragMulti}
315gl.shaderSource(fs,fragmentSrc);gl.compileShader(fs);program=gl.createProgram();gl.attachShader(program,vs);gl.attachShader(program,fs);gl.linkProgram(program);if(!gl.getShaderParameter(vs,gl.COMPILE_STATUS))
316console.log(gl.getShaderInfoLog(vs));if(!gl.getShaderParameter(fs,gl.COMPILE_STATUS))
317console.log(gl.getShaderInfoLog(fs));if(!gl.getProgramParameter(program,gl.LINK_STATUS))
318console.log(gl.getProgramInfoLog(program));gl.useProgram(program);program.drawInProgress=!1;var color=params.backgroundColor?params.backgroundColor:[0,0,0];gl.clearColor(color[0],color[1],color[2],1.0);gl.clear(gl.COLOR_BUFFER_BIT);program.texCoordLocation=gl.getAttribLocation(program,'a_texCoord');gl.enableVertexAttribArray(program.texCoordLocation);if(imageType!='multires'){if(!texCoordBuffer)
319texCoordBuffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,texCoordBuffer);gl.bufferData(gl.ARRAY_BUFFER,new Float32Array([-1,1,1,1,1,-1,-1,1,1,-1,-1,-1]),gl.STATIC_DRAW);gl.vertexAttribPointer(program.texCoordLocation,2,gl.FLOAT,!1,0,0);program.aspectRatio=gl.getUniformLocation(program,'u_aspectRatio');gl.uniform1f(program.aspectRatio,gl.drawingBufferWidth/gl.drawingBufferHeight);program.psi=gl.getUniformLocation(program,'u_psi');program.theta=gl.getUniformLocation(program,'u_theta');program.f=gl.getUniformLocation(program,'u_f');program.h=gl.getUniformLocation(program,'u_h');program.v=gl.getUniformLocation(program,'u_v');program.vo=gl.getUniformLocation(program,'u_vo');program.rot=gl.getUniformLocation(program,'u_rot');gl.uniform1f(program.h,haov/(Math.PI*2.0));gl.uniform1f(program.v,vaov/Math.PI);gl.uniform1f(program.vo,voffset/Math.PI*2);if(imageType=='equirectangular'){program.backgroundColor=gl.getUniformLocation(program,'u_backgroundColor');gl.uniform4fv(program.backgroundColor,color.concat([1]))}
320program.texture=gl.createTexture();gl.bindTexture(glBindType,program.texture);if(imageType=='cubemap'){gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X,0,gl.RGB,gl.RGB,gl.UNSIGNED_BYTE,image[1]);gl.texImage2D(gl.TEXTURE_CUBE_MAP_NEGATIVE_X,0,gl.RGB,gl.RGB,gl.UNSIGNED_BYTE,image[3]);gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_Y,0,gl.RGB,gl.RGB,gl.UNSIGNED_BYTE,image[4]);gl.texImage2D(gl.TEXTURE_CUBE_MAP_NEGATIVE_Y,0,gl.RGB,gl.RGB,gl.UNSIGNED_BYTE,image[5]);gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_Z,0,gl.RGB,gl.RGB,gl.UNSIGNED_BYTE,image[0]);gl.texImage2D(gl.TEXTURE_CUBE_MAP_NEGATIVE_Z,0,gl.RGB,gl.RGB,gl.UNSIGNED_BYTE,image[2])}else{if(image.width<=maxWidth){gl.uniform1i(gl.getUniformLocation(program,'u_splitImage'),0);gl.texImage2D(glBindType,0,gl.RGB,gl.RGB,gl.UNSIGNED_BYTE,image)}else{gl.uniform1i(gl.getUniformLocation(program,'u_splitImage'),1);var cropCanvas=document.createElement('canvas');cropCanvas.width=image.width/2;cropCanvas.height=image.height;var cropContext=cropCanvas.getContext('2d');
320cropContext.drawImage(image,0,0);var cropImage=cropContext.getImageData(0,0,image.width/2,image.height);gl.texImage2D(glBindType,0,gl.RGB,gl.RGB,gl.UNSIGNED_BYTE,cropImage);program.texture2=gl.createTexture();gl.activeTexture(gl.TEXTURE1);gl.bindTexture(glBindType,program.texture2);gl.uniform1i(gl.getUniformLocation(program,'u_image1'),1);cropContext.drawImage(image,-image.width/2,0);cropImage=cropContext.getImageData(0,0,image.width/2,image.height);gl.texImage2D(glBindType,0,gl.RGB,gl.RGB,gl.UNSIGNED_BYTE,cropImage);gl.texParameteri(glBindType,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(glBindType,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.texParameteri(glBindType,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(glBindType,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.activeTexture(gl.TEXTURE0)}}
321gl.texParameteri(glBindType,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(glBindType,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.texParameteri(glBindType,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(glBindType,gl.TEXTURE_MAG_FILTER,gl.LINEAR)}else{program.vertPosLocation=gl.getAttribLocation(program,'a_vertCoord');gl.enableVertexAttribArray(program.vertPosLocation);if(!cubeVertBuf)
322cubeVertBuf=gl.createBuffer();if(!cubeVertTexCoordBuf)
323cubeVertTexCoordBuf=gl.createBuffer();if(!cubeVertIndBuf)
324cubeVertIndBuf=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,cubeVertTexCoordBuf);gl.bufferData(gl.ARRAY_BUFFER,new Float32Array([0,0,1,0,1,1,0,1]),gl.STATIC_DRAW);gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,cubeVertIndBuf);gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),gl.STATIC_DRAW);program.perspUniform=gl.getUniformLocation(program,'u_perspMatrix');program.cubeUniform=gl.getUniformLocation(program,'u_cubeMatrix');program.level=-1;program.currentNodes=[];program.nodeCache=[];program.nodeCacheTimestamp=0}
325var err=gl.getError();if(err!==0){console.log('Error: Something went wrong with WebGL!',err);throw{type:'webgl error'}}
326callback()};this.destroy=function(){if(container!==undefined){if(canvas!==undefined&&container.contains(canvas)){container.removeChild(canvas)}
327if(world!==undefined&&container.contains(world)){container.removeChild(world)}}
328if(gl){var extension=gl.getExtension('WEBGL_lose_context');if(extension)
329extension.loseContext();}};this.resize=function(){var pixelRatio=window.devicePixelRatio||1;canvas.width=canvas.clientWidth*pixelRatio;canvas.height=canvas.clientHeight*pixelRatio;if(gl){if(gl.getError()==1286)
330handleWebGLError1286();gl.viewport(0,0,gl.drawingBufferWidth,gl.drawingBufferHeight);if(imageType!='multires'){gl.uniform1f(program.aspectRatio,canvas.clientWidth/canvas.clientHeight)}}};this.resize();this.setPose=function(horizonPitch,horizonRoll){pose=[horizonPitch,horizonRoll]};this.render=function(pitch,yaw,hfov,params){var focal,i,s,roll=0;if(params===undefined)
331params={};if(params.roll)
332roll=params.roll;if(pose!==undefined){var horizonPitch=pose[0],horizonRoll=pose[1];var orig_pitch=pitch,orig_yaw=yaw,x=Math.cos(horizonRoll)*Math.sin(pitch)*Math.sin(horizonPitch)+Math.cos(pitch)*(Math.cos(horizonPitch)*Math.cos(yaw)+Math.sin(horizonRoll)*Math.sin(horizonPitch)*Math.sin(yaw)),y=-Math.sin(pitch)*Math.sin(horizonRoll)+Math.cos(pitch)*Math.cos(horizonRoll)*Math.sin(yaw),z=Math.cos(horizonRoll)*Math.cos(horizonPitch)*Math.sin(pitch)+Math.cos(pitch)*(-Math.cos(yaw)*Math.sin(horizonPitch)+Math.cos(horizonPitch)*Math.sin(horizonRoll)*Math.sin(yaw));pitch=Math.asin(Math.max(Math.min(z,1),-1));yaw=Math.atan2(y,x);var v=[Math.cos(orig_pitch)*(Math.sin(horizonRoll)*Math.sin(horizonPitch)*Math.cos(orig_yaw)-Math.cos(horizonPitch)*Math.sin(orig_yaw)),Math.cos(orig_pitch)*Math.cos(horizonRoll)*Math.cos(orig_yaw),Math.cos(orig_pitch)*(Math.cos(horizonPitch)*Math.sin(horizonRoll)*Math.cos(orig_yaw)+Math.sin(orig_yaw)*Math.sin(horizonPitch))],w=[-Math.cos(pitch)*Math.sin(yaw),Math.cos(pitch)*Math.cos(yaw)];var roll_adj=Math.acos(Math.max(Math.min((v[0]*w[0]+v[1]*w[1])/(Math.sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2])*Math.sqrt(w[0]*w[0]+w[1]*w[1])),1),-1));if(v[2]<0)
333roll_adj=2*Math.PI-roll_adj;roll+=roll_adj}
334if(!gl&&(imageType=='multires'||imageType=='cubemap')){s=fallbackImgSize/2;var transforms={f:'translate3d(-'+(s+2)+'px, -'+(s+2)+'px, -'+s+'px)',b:'translate3d('+(s+2)+'px, -'+(s+2)+'px, '+s+'px) rotateX(180deg) rotateZ(180deg)',u:'translate3d(-'+(s+2)+'px, -'+s+'px, '+(s+2)+'px) rotateX(270deg)',d:'translate3d(-'+(s+2)+'px, '+s+'px, -'+(s+2)+'px) rotateX(90deg)',l:'translate3d(-'+s+'px, -'+(s+2)+'px, '+(s+2)+'px) rotateX(180deg) rotateY(90deg) rotateZ(180deg)',r:'translate3d('+s+'px, -'+(s+2)+'px, -'+(s+2)+'px) rotateY(270deg)'};focal=1/Math.tan(hfov/2);var zoom=focal*canvas.clientWidth/2+'px';var transform='perspective('+zoom+') translateZ('+zoom+') rotateX('+pitch+'rad) rotateY('+yaw+'rad) ';var faces=Object.keys(transforms);for(i=0;i<6;i++){var face=world.querySelector('.pnlm-'+faces[i]+'face');if(!face)
335continue;face.style.webkitTransform=transform+transforms[faces[i]];face.style.transform=transform+transforms[faces[i]]}
336return}
337if(imageType!='multires'){var vfov=2*Math.atan(Math.tan(hfov*0.5)/(gl.drawingBufferWidth/gl.drawingBufferHeight));focal=1/Math.tan(vfov*0.5);gl.uniform1f(program.psi,yaw);gl.uniform1f(program.theta,pitch);gl.uniform1f(program.rot,roll);gl.uniform1f(program.f,focal);if(dynamic===!0){if(imageType=='equirectangular'){gl.bindTexture(gl.TEXTURE_2D,program.texture);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGB,gl.RGB,gl.UNSIGNED_BYTE,image)}}
338gl.drawArrays(gl.TRIANGLES,0,6)}else{var perspMatrix=makePersp(hfov,gl.drawingBufferWidth/gl.drawingBufferHeight,0.1,100.0);checkZoom(hfov);var matrix=identityMatrix3();matrix=rotateMatrix(matrix,-roll,'z');matrix=rotateMatrix(matrix,-pitch,'x');matrix=rotateMatrix(matrix,yaw,'y');matrix=makeMatrix4(matrix);gl.uniformMatrix4fv(program.perspUniform,!1,new Float32Array(trans
338poseMatrix4(perspMatrix)));gl.uniformMatrix4fv(program.cubeUniform,!1,new Float32Array(transposeMatrix4(matrix)));var rotPersp=rotatePersp(perspMatrix,matrix);program.nodeCache.sort(multiresNodeSort);if(program.nodeCache.length>200&&program.nodeCache.length>program.currentNodes.length+50){var removed=program.nodeCache.splice(200,program.nodeCache.length-200);for(var j=0;j<removed.length;j++){gl.deleteTexture(removed[j].texture)}}
339program.currentNodes=[];var sides=['f','b','u','d','l','r'];for(s=0;s<6;s++){var ntmp=new MultiresNode(vtmps[s],sides[s],1,0,0,image.fullpath);testMultiresNode(rotPersp,ntmp,pitch,yaw,hfov)}
340program.currentNodes.sort(multiresNodeRenderSort);for(i=pendingTextureRequests.length-1;i>=0;i--){if(program.currentNodes.indexOf(pendingTextureRequests[i].node)===-1){pendingTextureRequests[i].node.textureLoad=!1;pendingTextureRequests.splice(i,1)}}
341if(pendingTextureRequests.length===0){for(i=0;i<program.currentNodes.length;i++){var node=program.currentNodes[i];if(!node.texture&&!node.textureLoad){node.textureLoad=!0;setTimeout(processNextTile,0,node);break}}}
342multiresDraw()}
343if(params.returnImage!==undefined){return canvas.toDataURL('image/png')}};this.isLoading=function(){if(gl&&imageType=='multires'){for(var i=0;i<program.currentNodes.length;i++){if(!program.currentNodes[i].textureLoaded){return!0}}}
344return!1};this.getCanvas=function(){return canvas};function multiresNodeSort(a,b){if(a.level==1&&b.level!=1){return-1}
345if(b.level==1&&a.level!=1){return 1}
346return b.timestamp-a.timestamp}
347function multiresNodeRenderSort(a,b){if(a.level!=b.level){return a.level-b.level}
348return a.diff-b.diff}
349function multiresDraw(){if(!program.drawInProgress){program.drawInProgress=!0;gl.clear(gl.COLOR_BUFFER_BIT);for(var i=0;i<program.currentNodes.length;i++){if(program.currentNodes[i].textureLoaded>1){gl.bindBuffer(gl.ARRAY_BUFFER,cubeVertBuf);gl.bufferData(gl.ARRAY_BUFFER,new Float32Array(program.currentNodes[i].vertices),gl.STATIC_DRAW);gl.vertexAttribPointer(program.vertPosLocation,3,gl.FLOAT,!1,0,0);gl.bindBuffer(gl.ARRAY_BUFFER,cubeVertTexCoordBuf);gl.vertexAttribPointer(program.texCoordLocation,2,gl.FLOAT,!1,0,0);gl.bindTexture(gl.TEXTURE_2D,program.currentNodes[i].texture);gl.drawElements(gl.TRIANGLES,6,gl.UNSIGNED_SHORT,0)}}
350program.drawInProgress=!1}}
351function MultiresNode(vertices,side,level,x,y,path){this.vertices=vertices;this.side=side;this.level=level;this.x=x;this.y=y;this.path=path.replace('%s',side).replace('%l',level).replace('%x',x).replace('%y',y)}
352function testMultiresNode(rotPersp,node,pitch,yaw,hfov){if(checkSquareInView(rotPersp,node.vertices)){var v=node.vertices;var x=v[0]+v[3]+v[6]+v[9];var y=v[1]+v[4]+v[7]+v[10];var z=v[2]+v[5]+v[8]+v[11];var r=Math.sqrt(x*x+y*y+z*z);var theta=Math.asin(z/r);var phi=Math.atan2(y,x);var ydiff=phi-yaw;ydiff+=(ydiff>Math.PI)?-2*Math.PI:(ydiff<-Math.PI)?2*Math.PI:0;ydiff=Math.abs(ydiff);
352node.diff=Math.acos(Math.sin(pitch)*Math.sin(theta)+Math.cos(pitch)*Math.cos(theta)*Math.cos(ydiff));var inCurrent=!1;for(var k=0;k<program.nodeCache.length;k++){if(program.nodeCache[k].path==node.path){inCurrent=!0;program.nodeCache[k].timestamp=program.nodeCacheTimestamp++;program.nodeCache[k].diff=node.diff;program.currentNodes.push(program.nodeCache[k]);break}}
353if(!inCurrent){node.timestamp=program.nodeCacheTimestamp++;program.currentNodes.push(node);program.nodeCache.push(node)}
354if(node.level<program.level){var cubeSize=image.cubeResolution*Math.pow(2,node.level-image.maxLevel);var numTiles=Math.ceil(cubeSize*image.invTileResolution)-1;var doubleTileSize=cubeSize%image.tileResolution*2;var lastTileSize=(cubeSize*2)%image.tileResolution;if(lastTileSize===0){lastTileSize=image.tileResolution}
355if(doubleTileSize===0){doubleTileSize=image.tileResolution*2}
356var f=0.5;if(node.x==numTiles||node.y==numTiles){f=1.0-image.tileResolution/(image.tileResolution+lastTileSize)}
357var i=1.0-f;var children=[];var vtmp,ntmp;var f1=f,f2=f,f3=f,i1=i,i2=i,i3=i;if(lastTileSize<image.tileResolution){if(node.x==numTiles&&node.y!=numTiles){f2=0.5;i2=0.5;if(node.side=='d'||node.side=='u'){f3=0.5;i3=0.5}}else if(node.x!=numTiles&&node.y==numTiles){f1=0.5;i1=0.5;if(node.side=='l'||node.side=='r'){f3=0.5;i3=0.5}}}
358if(doubleTileSize<=image.tileResolution){if(node.x==numTiles){f1=0;i1=1;if(node.side=='l'||node.side=='r'){f3=0;i3=1}}
359if(node.y==numTiles){f2=0;i2=1;if(node.side=='d'||node.side=='u'){f3=0;i3=1}}}
360vtmp=[v[0],v[1],v[2],v[0]*f1+v[3]*i1,v[1]*f+v[4]*i,v[2]*f3+v[5]*i3,v[0]*f1+v[6]*i1,v[1]*f2+v[7]*i2,v[2]*f3+v[8]*i3,v[0]*f+v[9]*i,v[1]*f2+v[10]*i2,v[2]*f3+v[11]*i3];ntmp=new MultiresNode(vtmp,node.side,node.level+1,node.x*2,node.y*2,image.fullpath);children.push(ntmp);if(!(node.x==numTiles&&doubleTileSize<=image.tileResolution)){vtmp=[v[0]*f1+v[3]*i1,v[1]*f+v[4]*i,v[2]*f3+v[5]*i3,v[3],v[4],v[5],v[3]*f+v[6]*i,v[4]*f2+v[7]*i2,v[5]*f3+v[8]*i3,v[0]*f1+v[6]*i1,v[1]*f2+v[7]*i2,v[2]*f3+v[8]*i3];ntmp=new MultiresNode(vtmp,node.side,node.level+1,node.x*2+1,node.y*2,image.fullpath);children.push(ntmp)}
361if(!(node.x==numTiles&&doubleTileSize<=image.tileResolution)&&!(node.y==numTiles&&doubleTileSize<=image.tileResolution)){vtmp=[v[0]*f1+v[6]*i1,v[1]*f2+v[7]*i2,v[2]*f3+v[8]*i3,v[3]*f+v[6]*i,v[4]*f2+v[7]*i2,v[5]*f3+v[8]*i3,v[6],v[7],v[8],v[9]*f1+v[6]*i1,v[10
361]*f+v[7]*i,v[11]*f3+v[8]*i3];ntmp=new MultiresNode(vtmp,node.side,node.level+1,node.x*2+1,node.y*2+1,image.fullpath);children.push(ntmp)}
362if(!(node.y==numTiles&&doubleTileSize<=image.tileResolution)){vtmp=[v[0]*f+v[9]*i,v[1]*f2+v[10]*i2,v[2]*f3+v[11]*i3,v[0]*f1+v[6]*i1,v[1]*f2+v[7]*i2,v[2]*f3+v[8]*i3,v[9]*f1+v[6]*i1,v[10]*f+v[7]*i,v[11]*f3+v[8]*i3,v[9],v[10],v[11]];ntmp=new MultiresNode(vtmp,node.side,node.level+1,node.x*2,node.y*2+1,image.fullpath);children.push(ntmp)}
363for(var j=0;j<children.length;j++){testMultiresNode(rotPersp,children[j],pitch,yaw,hfov)}}}}
364function createCube(){return[-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,-1,1,1,1,1,-1,1,1,-1,-1]}
365function identityMatrix3(){return[1,0,0,0,1,0,0,0,1]}
366function rotateMatrix(m,angle,axis){var s=Math.sin(angle);var c=Math.cos(angle);if(axis=='x'){return[m[0],c*m[1]+s*m[2],c*m[2]-s*m[1],m[3],c*m[4]+s*m[5],c*m[5]-s*m[4],m[6],c*m[7]+s*m[8],c*m[8]-s*m[7]]}
367if(axis=='y'){return[c*m[0]-s*m[2],m[1],c*m[2]+s*m[0],c*m[3]-s*m[5],m[4],c*m[5]+s*m[3],c*m[6]-s*m[8],m[7],c*m[8]+s*m[6]]}
368if(axis=='z'){return[c*m[0]+s*m[1],c*m[1]-s*m[0],m[2],c*m[3]+s*m[4],c*m[4]-s*m[3],m[5],c*m[6]+s*m[7],c*m[7]-s*m[6],m[8]]}}
369function makeMatrix4(m){return[m[0],m[1],m[2],0,m[3],m[4],m[5],0,m[6],m[7],m[8],0,0,0,0,1]}
370function transposeMatrix4(m){return[m[0],m[4],m[8],m[12],m[1],m[5],m[9],m[13],m[2],m[6],m[10],m[14],m[3],m[7],m[11],m[15]]}
371function makePersp(hfov,aspect,znear,zfar){var fovy=2*Math.atan(Math.tan(hfov/2)*gl.drawingBufferHeight/gl.drawingBufferWidth);var f=1/Math.tan(fovy/2);return[f/aspect,0,0,0,0,f,0,0,0,0,(zfar+znear)/(znear-zfar),(2*zfar*znear)/(znear-zfar),0,0,-1,0]}
372function processLoadedTexture(img,tex){gl.bindTexture(gl.TEXTURE_2D,tex);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGB,gl.RGB,gl.UNSIGNED_BYTE,img);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.bindTexture(gl.TEXTURE_2D,null)}
373var pendingTextureRequests=[];var loadTexture=(function(){var cacheTop=4;var textureImageCache={};var crossOrigin;function TextureImageLoader(){var self=this;this.texture=this.callback=null;this.image=new Image();this.image.crossOrigin=crossOrigin?crossOrigin:'anonymous';var loadFn=(function(){if(self.image.width>0&&self.image.height>0){processLoadedTexture(self.image,self.texture);self.callback(self.texture,!0)}else{self.callback(self.texture,!1)}
374releaseTextureImageLoader(self)});this.image.addEventListener('load',loadFn);this.image.addEventListener('error',loadFn)}
375TextureImageLoader.prototype.loadTexture=function(src,texture,callback){this.texture=texture;this.callback=callback;this.image.src=src};function PendingTextureRequest(node,src,texture,callback){this.node=node;this.src=src;this.texture=texture;this.callback=callback}
376function releaseTextureImageLoader(til){if(pendingTextureRequests.length){var req=pendingTextureRequests.shift();til.loadTexture(req.src,req.texture,req.callback)}else textureImageCache[cacheTop++]=til}
377for(var i=0;i<cacheTop;i++)
378textureImageCache[i]=new TextureImageLoader();return function(node,src,callback,_crossOrigin){crossOrigin=_crossOrigin;var texture=gl.createTexture();if(cacheTop)
379textureImageCache[--cacheTop].loadTexture(src,texture,callback);else pendingTextureRequests.push(new PendingTextureRequest(node,src,texture,callback));return texture}})();function processNextTile(node){loadTexture(node,node.path+'.'+image.extension,function(texture,loaded){node.texture=texture;node.textureLoaded=loaded?2:1},globalParams.crossOrigin)}
380function checkZoom(hfov){var newLevel=1;while(newLevel<image.maxLevel&&gl.drawingBufferWidth>image.tileResolution*Math.pow(2,newLevel-1)*Math.tan(hfov/2)*0.707){newLevel++}
381program.level=newLevel}
382function rotatePersp(p,r){return[p[0]*r[0],p[0]*r[1],p[0]*r[2],0,p[5]*r[4],p[5]*r[5],p[5]*r[6],0,p[10]*r[8],p[10]*r[9],p[10]*r[10],p[11],-r[8],-r[9],-r[10],0]}
383function applyRotPerspToVec(m,v){return[m[0]*v[0]+m[1]*v[1]+m[2]*v[2],m[4]*v[0]+m[5]*v[1]+m[6]*v[2],m[11]+m[8]*v[0]+m[9]*v[1]+m[10]*v[2],1/(m[12]*v[0]+m[13]*v[1]+m[14]*v[2])]}
384function checkInView(m,v){var vpp=applyRotPerspToVec(m,v);var winX=vpp[0]*vpp[3];var winY=vpp[1]*vpp[3];var winZ=vpp[2]*vpp[3];var ret=[0,0,0];if(winX<-1)
385ret[0]=-1;if(winX>1)
386ret[0]=1;if(winY<-1)
387ret[1]=-1;if(winY>1)
388ret[1]=1;if(winZ<-1||winZ>1)
389ret[2]=1;return ret}
390function checkSquareInView(m,v){var check1=checkInView(m,v.slice(0,3));var check2=checkInView(m,v.slice(3,6));var check3=checkInView(m,v.slice(6,9));var check4=checkInView(m,v.slice(9,12));var testX=check1[0]+check2[0]+check3[0]+check4[0];if(testX==-4||testX==4)
391return!1;var testY=check1[1]+check2[1]+check3[1]+check4[1];if(testY==-4||testY==4)
392return!1;var testZ=check1[2]+check2[2]+check3[2]+check4[2];return testZ!=4}
393function handleWebGLError1286(){console.log('Reducing canvas size due to error 1286!');canvas.width=Math.round(canvas.width/2);canvas.height=Math.round(canvas.height/2)}}
394var v=['attribute vec2 a_texCoord;','varying vec2 v_texCoord;','void main() {','gl_Position = vec4(a_texCoord, 0.0, 1.0);','v_texCoord = a_texCoord;','}'].join('');var vMulti=['attribute vec3 a_vertCoord;','attribute vec2 a_texCoord;','uniform mat4 u_cubeMatrix;','uniform mat4 u_perspMatrix;','varying mediump vec2 v_texCoord;','void main(void) {','gl_Position = u_perspMatrix * u_cubeMatrix * vec4(a_vertCoord, 1.0);','v_texCoord = a_texCoord;','}'].join('');var fragEquiCubeBase=['precision highp float;','uniform float u_aspectRatio;','uniform float u_psi;','uniform float u_theta;','uniform float u_f;','uniform float u_h;','uniform float u_v;','uniform float u_vo;','uniform float u_rot;','const float PI = 3.14159265358979323846264;','uniform sampler2D u_image0;','uniform sampler2D u_image1;','uniform bool u_splitImage;','uniform samplerCube u_imageCube;','varying vec2 v_texCoord;','uniform vec4 u_backgroundColor;','void main() {','float x = v_texCoord.x * u_aspectRatio;','float y = v_texCoord.y;','float sinrot = sin(u_rot);','float cosrot = cos(u_rot);','float rot_x = x * cosrot - y * sinrot;','float rot_y = x * sinrot + y * cosrot;','float sintheta = sin(u_theta);','float costheta = cos(u_theta);','float a = u_f * costheta - rot_y * sintheta;','float root = sqrt(rot_x * rot_x + a * a);','float lambda = atan(rot_x / root, a / root) + u_psi;','float phi = atan((rot_y * costheta + u_f * sintheta) / root);',].join('\n');var fragCube=fragEquiCubeBase+['float cosphi = cos(phi);','gl_FragColor = textureCube(u_imageCube, vec3(cosphi*sin(lambda), sin(phi), cosphi*cos(lambda)));','}'].join('\n');var fragEquirectangular=fragEquiCubeBase+['lambda = mod(lambda + PI, PI * 2.0) - PI;','vec2 coord = vec2(lambda / PI, phi / (PI / 2.0));','if(coord.x < -u_h || coord.x > u_h || coord.y < -u_v + u_vo || coord.y > u_v + u_vo)','gl_FragColor = u_backgroundColor;
394','else {','if(u_splitImage) {','if(coord.x < 0.0)','gl_FragColor = texture2D(u_image0, vec2((coord.x + u_h) / u_h, (-coord.y + u_v + u_vo) / (u_v * 2.0)));','else','gl_FragColor = texture2D(u_image1, vec2((coord.x + u_h) / u_h - 1.0, (-coord.y + u_v + u_vo) / (u_v * 2.0)));','} else {','gl_FragColor = texture2D(u_image0, vec2((coord.x + u_h) / (u_h * 2.0), (-coord.y + u_v + u_vo) / (u_v * 2.0)));','}','}','}'].join('\n');var fragMulti=['varying mediump vec2 v_texCoord;','uniform sampler2D u_sampler;','void main(void) {','gl_FragColor = texture2D(u_sampler, v_texCoord);','}'].join('');return{renderer:function(container,image,imagetype,dynamic){return new Renderer(container,image,imagetype,dynamic)}}})(window,document);
395
396
397
398/**
399 * @license
400 * Video.js 7.7.4 <http://videojs.com/>
401 * Copyright Brightcove, Inc. <https://www.brightcove.com/>
402 * Available under Apache License Version 2.0
403 * <https://github.com/videojs/video.js/blob/master/LICENSE>
404 *
405 * Includes vtt.js <https://github.com/mozilla/vtt.js>
406 * Available under Apache License Version 2.0
407 * <https://github.com/mozilla/vtt.js/blob/master/LICENSE>
408 */
409(function(global,factory){typeof exports==='object'&&typeof module!=='undefined'?module.exports=factory(require('global/window'),require('global/document')):typeof define==='function'&&define.amd?define(['global/window','global/document'],factory):(global=global||self,global.videojs=factory(global.window,global.document))}(this,function(window$1,document){'use strict';window$1=window$1&&window$1.hasOwnProperty('default')?window$1['default']:window$1;document=document&&document.hasOwnProperty('default')?document['default']:document;var version="7.7.4";var history=[];var LogByTypeFactory=function LogByTypeFactory(name,log){return function(type,level,args){var lvl=log.levels[level];var lvlRegExp=new RegExp("^("+lvl+")$");if(type!=='log'){args.unshift(type.toUpperCase()+':')}
410args.unshift(name+':');if(history){history.push([].concat(args));var splice=history.length-1000;history.splice(0,splice>0?splice:0)}
411if(!window$1.console){return}
412var fn=window$1.console[type];if(!fn&&type==='debug'){fn=window$1.console.info||window$1.console.log}
413if(!fn||!lvl||!lvlRegExp.test(type)){return}
414fn[Array.isArray(args)?'apply':'call'](window$1.console,args)}};function createLogger(name){var level='info';var logByType;var log=function log(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}
415logByType('log',level,args)};logByType=LogByTypeFactory(name,log);log.createLogger=function(subname){return createLogger(name+': '+subname)};log.levels={all:'debug|log|warn|error',off:'',debug:'debug|log|warn|error',info:'log|warn|error',warn:'warn|error',error:'error',DEFAULT:level};log.level=function(lvl){if(typeof lvl==='string'){if(!log.levels.hasOwnProperty(lvl)){throw new Error("\""+lvl+"\" in not a valid log level")}
416level=lvl}
417return level};log.history=function(){return history?[].concat(history):[]};log.history.filter=function(fname){return(history||[]).filter(function(historyItem){return new RegExp(".*"+fname+".*").test(historyItem[0])})};log.history.clear=function(){if(history){history.length=0}};log.history.disable=function(){if(history!==null){history.length=0;history=null}};log.history.enable=function(){if(history===null){history=[]}};log.error=function(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++){args[_key2]=arguments[_key2]}
418return logByType('error',level,args)};log.warn=function(){for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++){args[_key3]=arguments[_key3]}
419return logByType('warn',level,args)};log.debug=function(){for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++){args[_key4]=arguments[_key4]}
420return logByType('debug',level,args)};return log}
421var log=createLogger('VIDEOJS');var createLogger$1=log.createLogger;function createCommonjsModule(fn,module){return module={exports:{}},fn(module,module.exports),module.exports}
422var _extends_1=createCommonjsModule(function(module){function _extends(){module.exports=_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}
423return target};return _extends.apply(this,arguments)}
424module.exports=_extends});var toString=Object.prototype.toString;var keys=function keys(object){return isObject(object)?Object.keys(object):[]};function each(object,fn){keys(object).forEach(function(key){return fn(object[key],key)})}
425function reduce(object,fn,initial){if(initial===void 0){initial=0}
426return keys(object).reduce(function(accum,key){return fn(accum,object[key],key)},initial)}
427function assign(target){for(var _len=arguments.length,sources=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){sources[_key-1]=arguments[_key]}
428if(Object.assign){return _extends_1.apply(void 0,[target].concat(sources))}
429sources.forEach(function(source){if(!source){return}
430each(source,function(value,key){target[key]=value})});return target}
431function isObject(value){return!!value&&typeof value==='object'}
432function isPlain(value){return isObject(value)&&toString.call(value)==='[object Object]'&&value.constructor===Object}
433function computedStyle(el,prop){if(!el||!prop){return''}
434if(typeof window$1.getComputedStyle==='function'){var computedStyleValue=window$1.getComputedStyle(el);return computedStyleValue?computedStyleValue.getPropertyValue(prop)||computedStyleValue[prop]:''}
435return''}
436function isNonBlankString(str){return typeof str==='string'&&Boolean(str.trim())}
437function throwIfWhitespace(str){if(str.indexOf(' ')>=0){throw new Error('class has illegal whitespace characters')}}
438function classRegExp(className){return new RegExp('(^|\\s)'+className+'($|\\s)')}
439function isReal(){return document===window$1.document}
440function isEl(value){return isObject(value)&&value.nodeType===1}
441function isInFrame(){try{return window$1.parent!==window$1.self}catch(x){return!0}}
442function createQuerier(method){return function(selector,context){if(!isNonBlankString(selector)){return document[method](null)}
443if(isNonBlankString(context)){context=document.querySelector(context)}
444var ctx=isEl(context)?context:document;return ctx[method]&&ctx[method](selector)}}
445function createEl(tagName,properties,attributes,content){if(tagName===void 0){tagName='div'}
446if(properties===void 0){properties={}}
447if(attributes===void 0){attributes={}}
448var el=document.createElement(tagName);Object.getOwnPropertyNames(properties).forEach(function(propName){var val=properties[propName];if(propName.indexOf('aria-')!==-1||propName==='role'||propName==='type'){log.warn('Setting attributes in the second argument of createEl()\n'+'has been deprecated. Use the third argument instead.\n'+("createEl(type, properties, attributes). Attempting to set "+propName+" to "+val+"."));el.setAttribute(propName,val)}else if(propName==='textContent'){textContent(el,val)}else if(el[propName]!==val){el[propName]=val}});Object.getOwnPropertyNames(attributes).forEach(function(attrName){el.setAttribute(attrName,attributes[attrName])});if(content){appendContent(el,content)}
449return el}
450function textContent(el,text){if(typeof el.textContent==='undefined'){el.innerText=text}else{el.textContent=text}
451return el}
452function prependTo(child,parent){if(parent.firstChild){parent.insertBefore(child,parent.firstChild)}else{parent.appendChild(child)}}
453function hasClass(element,classToCheck){throwIfWhitespace(classToCheck);if(element.classList){return element.classList.contains(classToCheck)}
454return classRegExp(classToCheck).test(element.className)}
455function addClass(element,classToAdd){if(element.classList){element.classList.add(classToAdd)}else if(!hasClass(element,classToAdd)){element.className=(element.className+' '+classToAdd).trim()}
456return element}
457function removeClass(element,classToRemove){if(element.classList){element.classList.remove(classToRemove)}else{throwIfWhitespace(classToRemove);element.className=element.className.split(/\s+/).filter(function(c){return c!==classToRemove}).join(' ')}
458return element}
459function toggleClass(element,classToToggle,predicate){var has=hasClass(element,classToToggle);if(typeof predicate==='function'){predicate=predicate(element,classToToggle)}
460if(typeof predicate!=='boolean'){predicate=!has}
461if(predicate===has){return}
462if(predicate){addClass(element,classToToggle)}else{removeClass(element,classToToggle)}
463return element}
464function setAttributes(el,attributes){Object.getOwnPropertyNames(attributes).forEach(function(attrName){var attrValue=attributes[attrName];if(attrValue===null||typeof attrValue==='undefined'||attrValue===!1){el.removeAttribute(attrName)}else{el.setAttribute(attrName,attrValue===!0?'':attrValue)}})}
465function getAttributes(tag){var obj={};var knownBooleans=','+'autoplay,controls,playsinline,loop,muted,default,defaultMuted'+',';if(tag&&tag.attributes&&tag.attributes.length>0){var attrs=tag.attributes;for(var i=attrs.length-1;i>=0;i--){var attrName=attrs[i].name;var attrVal=attrs[i].value;if(typeof tag[attrName]==='boolean'||knownBooleans.indexOf(','+attrName+',')!==-1){attrVal=attrVal!==null?!0:!1}
466obj[attrName]=attrVal}}
467return obj}
468function getAttribute(el,attribute){return el.getAttribute(attribute)}
469function setAttribute(el,attribute,value){el.setAttribute(attribute,value)}
470function removeAttribute(el,attribute){el.removeAttribute(attribute)}
471function blockTextSelection(){document.body.focus();document.onselectstart=function(){return!1}}
472function unblockTextSelection(){document.onselectstart=function(){return!0}}
473function getBoundingClientRect(el){if(el&&el.getBoundingClientRect&&el.parentNode){var rect=el.getBoundingClientRect();var result={};['bottom','height','left','right','top','width'].forEach(function(k){if(rect[k]!==undefined){result[k]=rect[k]}});if(!result.height){result.height=parseFloat(computedStyle(el,'height'))}
474if(!result.width){result.width=parseFloat(computedStyle(el,'width'))}
475return result}}
476function findPosition(el){var box;if(el.getBoundingClientRect&&el.parentNode){box=el.getBoundingClientRect()}
477if(!box){return{left:0,top:0}}
478var docEl=document.documentElement;var body=document.body;var clientLeft=docEl.clientLeft||body.clientLeft||0;var scrollLeft=window$1.pageXOffset||body.scrollLeft;var left=box.left+scrollLeft-clientLeft;var clientTop=docEl.clientTop||body.clientTop||0;var scrollTop=window$1.pageYOffset||body.scrollTop;var top=box.top+scrollTop-clientTop;return{left:Math.round(left),top:Math.round(top)}}
479function getPointerPosition(el,event){var position={};var box=findPosition(el);var boxW=el.offsetWidth;var boxH=el.offsetHeight;var boxY=box.top;var boxX=box.left;var pageY=event.pageY;var pageX=event.pageX;if(event.changedTouches){pageX=event.changedTouches[0].pageX;pageY=event.changedTouches[0].pageY}
480position.y=Math.max(0,Math.min(1,(boxY-pageY+boxH)/boxH));position.x=Math.max(0,Math.min(1,(pageX-boxX)/boxW));return position}
481function isTextNode(value){return isObject(value)&&value.nodeType===3}
482function emptyEl(el){while(el.firstChild){el.removeChild(el.firstChild)}
483return el}
484function normalizeContent(content){if(typeof content==='function'){content=content()}
485return(Array.isArray(content)?content:[content]).map(function(value){if(typeof value==='function'){value=value()}
486if(isEl(value)||isTextNode(value)){return value}
487if(typeof value==='string'&&/\S/.test(value)){return document.createTextNode(value)}}).filter(function(value){return value})}
488function appendContent(el,content){normalizeContent(content).forEach(function(node){return el.appendChild(node)}
488);return el}
489function insertContent(el,content){return appendContent(emptyEl(el),content)}
490function isSingleLeftClick(event){if(event.button===undefined&&event.buttons===undefined){return!0}
491if(event.button===0&&event.buttons===undefined){return!0}
492if(event.type==='mouseup'&&event.button===0&&event.buttons===0){return!0}
493if(event.button!==0||event.buttons!==1){return!1}
494return!0}
495var $=createQuerier('querySelector');var $$=createQuerier('querySelectorAll');var Dom=Object.freeze({isReal:isReal,isEl:isEl,isInFrame:isInFrame,createEl:createEl,textContent:textContent,prependTo:prependTo,hasClass:hasClass,addClass:addClass,removeClass:removeClass,toggleClass:toggleClass,setAttributes:setAttributes,getAttributes:getAttributes,getAttribute:getAttribute,setAttribute:setAttribute,removeAttribute:removeAttribute,blockTextSelection:blockTextSelection,unblockTextSelection:unblockTextSelection,getBoundingClientRect:getBoundingClientRect,findPosition:findPosition,getPointerPosition:getPointerPosition,isTextNode:isTextNode,emptyEl:emptyEl,normalizeContent:normalizeContent,appendContent:appendContent,insertContent:insertContent,isSingleLeftClick:isSingleLeftClick,$:$,$$:$$});var _windowLoaded=!1;var videojs;var autoSetup=function autoSetup(){if(!isReal()||videojs.options.autoSetup===!1){return}
496var vids=Array.prototype.slice.call(document.getElementsByTagName('video'));var audios=Array.prototype.slice.call(document.getElementsByTagName('audio'));var divs=Array.prototype.slice.call(document.getElementsByTagName('video-js'));var mediaEls=vids.concat(audios,divs);if(mediaEls&&mediaEls.length>0){for(var i=0,e=mediaEls.length;i<e;i++){var mediaEl=mediaEls[i];if(mediaEl&&mediaEl.getAttribute){if(mediaEl.player===undefined){var options=mediaEl.getAttribute('data-setup');if(options!==null){videojs(mediaEl)}}}else{autoSetupTimeout(1);break}}}else if(!_windowLoaded){autoSetupTimeout(1)}};function autoSetupTimeout(wait,vjs){if(vjs){videojs=vjs}
497window$1.setTimeout(autoSetup,wait)}
498function setWindowLoaded(){_windowLoaded=!0;window$1.removeEventListener('load',setWindowLoaded)}
499if(isReal()){if(document.readyState==='complete'){setWindowLoaded()}else{window$1.addEventListener('load',setWindowLoaded)}}
500var createStyleElement=function createStyleElement(className){var style=document.createElement('style');style.className=className;return style};var setTextContent=function setTextContent(el,content){if(el.styleSheet){el.styleSheet.cssText=content}else{el.textContent=content}};var _initialGuid=3;var _guid=_initialGuid;function newGUID(){return _guid++}
501var FakeWeakMap;if(!window$1.WeakMap){FakeWeakMap=function(){function FakeWeakMap(){this.vdata='vdata'+Math.floor(window$1.performance&&window$1.performance.now()||Date.now());this.data={}}
502var _proto=FakeWeakMap.prototype;_proto.set=function set(key,value){var access=key[this.vdata]||newGUID();if(!key[this.vdata]){key[this.vdata]=access}
503this.data[access]=value;return this};_proto.get=function get(key){var access=key[this.vdata];if(access){return this.data[access]}
504log('We have no data for this element',key);return undefined};_proto.has=function has(key){var access=key[this.vdata];return access in this.data};_proto["delete"]=function _delete(key){var access=key[this.vdata];if(access){delete this.data[access];delete key[this.vdata]}};return FakeWeakMap}()}
505var DomData=window$1.WeakMap?new WeakMap():new FakeWeakMap();function _cleanUpEvents(elem,type){if(!DomData.has(elem)){return}
506var data=DomData.get(elem);if(data.handlers[type].length===0){delete data.handlers[type];if(elem.removeEventListener){elem.removeEventListener(type,data.dispatcher,!1)}else if(elem.detachEvent){elem.detachEvent('on'+type,data.dispatcher)}}
507if(Object.getOwnPropertyNames(data.handlers).length<=0){delete data.handlers;delete data.dispatcher;delete data.disabled}
508if(Object.getOwnPropertyNames(data).length===0){DomData["delete"](elem)}}
509function _handleMultipleEvents(fn,elem,types,callback){types.forEach(function(type){fn(elem,type,callback)})}
510function fixEvent(event){if(event.fixed_){return event}
511function returnTrue(){return!0}
512function returnFalse(){return!1}
513if(!event||!event.isPropagationStopped){var old=event||window$1.event;event={};for(var key in old){if(key!=='layerX'&&key!=='layerY'&&key!=='keyLocation'&&key!=='webkitMovementX'&&key!=='webkitMovementY'){if(!(key==='returnValue'&&old.preventDefault)){event[key]=old[key]}}}
514if(!event.target){event.target=event.srcElement||document}
515if(!event.relatedTarget){event.relatedTarget=event.fromElement===event.target?event.toElement:event.fromElement}
516event.preventDefault=function(){if(old.preventDefault){old.preventDefault()}
517event.returnValue=!1;old.returnValue=!1;event.defaultPrevented=!0};event.defaultPrevented=!1;event.stopPropagation=function(){if(old.stopPropagation){old.stopPropagation()}
518event.cancelBubble=!0;old.cancelBubble=!0;event.isPropagationStopped=returnTrue};event.isPropagationStopped=returnFalse;event.stopImmediatePropagation=function(){if(old.stopImmediatePropagation){old.stopImmediatePropagation()}
519event.isImmediatePropagationStopped=returnTrue;event.stopPropagation()};event.isImmediatePropagationStopped=returnFalse;if(event.clientX!==null&&event.clientX!==undefined){var doc=document.documentElement;var body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc&&doc.clientLeft||body&&body.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc&&doc.clientTop||body&&body.clientTop||0)}
520event.which=event.charCode||event.keyCode;if(event.button!==null&&event.button!==undefined){event.button=event.button&1?0:event.button&4?1:event.button&2?2:0}}
521event.fixed_=!0;return event}
522var _supportsPassive;var supportsPassive=function supportsPassive(){if(typeof _supportsPassive!=='boolean'){_supportsPassive=!1;try{var opts=Object.defineProperty({},'passive',{get:function get(){_supportsPassive=!0}});window$1.addEventListener('test',null,opts);window$1.removeEventListener('test',null,opts)}catch(e){}}
523return _supportsPassive};var passiveEvents=['touchstart','touchmove'];function on(elem,type,fn){if(Array.isArray(type)){return _handleMultipleEvents(on,elem,type,fn)}
524if(!DomData.has(elem)){DomData.set(elem,{})}
525var data=DomData.get(elem);if(!data.handlers){data.handlers={}}
526if(!data.handlers[type]){data.handlers[type]=[]}
527if(!fn.guid){fn.guid=newGUID()}
528data.handlers[type].push(fn);if(!data.dispatcher){data.disabled=!1;data.dispatcher=function(event,hash){if(data.disabled){return}
529event=fixEvent(event);var handlers=data.handlers[event.type];if(handlers){var handlersCopy=handlers.slice(0);for(var m=0,n=handlersCopy.length;m<n;m++){if(event.isImmediatePropagationStopped()){break}else{try{handlersCopy[m].call(elem,event,hash)}catch(e){log.error(e)}}}}}}
530if(data.handlers[type].length===1){if(elem.addEventListener){var options=!1;if(supportsPassive()&&passiveEvents.indexOf(type)>-1){options={passive:!0}}
531elem.addEventListener(type,data.dispatcher,options)}else if(elem.attachEvent){elem.attachEvent('on'+type,data.dispatcher)}}}
532function off(elem,type,fn){if(!DomData.has(elem)){return}
533var data=DomData.get(elem);if(!data.handlers){return}
534if(Array.isArray(type)){return _handleMultipleEvents(off,elem,type,fn)}
535var removeType=function removeType(el,t){data.handlers[t]=[];_cleanUpEvents(el,t)};if(type===undefined){for(var t in data.handlers){if(Object.prototype.hasOwnProperty.call(data.handlers||{},t)){removeType(elem,t)}}
536return}
537var handlers=data.handlers[type];
537if(!handlers){return}
538if(!fn){removeType(elem,type);return}
539if(fn.guid){for(var n=0;n<handlers.length;n++){if(handlers[n].guid===fn.guid){handlers.splice(n--,1)}}}
540_cleanUpEvents(elem,type)}
541function trigger(elem,event,hash){var elemData=DomData.has(elem)?DomData.get(elem):{};var parent=elem.parentNode||elem.ownerDocument;if(typeof event==='string'){event={type:event,target:elem}}else if(!event.target){event.target=elem}
542event=fixEvent(event);if(elemData.dispatcher){elemData.dispatcher.call(elem,event,hash)}
543if(parent&&!event.isPropagationStopped()&&event.bubbles===!0){trigger.call(null,parent,event,hash)}else if(!parent&&!event.defaultPrevented&&event.target&&event.target[event.type]){if(!DomData.has(event.target)){DomData.set(event.target,{})}
544var targetData=DomData.get(event.target);if(event.target[event.type]){targetData.disabled=!0;if(typeof event.target[event.type]==='function'){event.target[event.type]()}
545targetData.disabled=!1}}
546return!event.defaultPrevented}
547function one(elem,type,fn){if(Array.isArray(type)){return _handleMultipleEvents(one,elem,type,fn)}
548var func=function func(){off(elem,type,func);fn.apply(this,arguments)};func.guid=fn.guid=fn.guid||newGUID();on(elem,type,func)}
549function any(elem,type,fn){var func=function func(){off(elem,type,func);fn.apply(this,arguments)};func.guid=fn.guid=fn.guid||newGUID();on(elem,type,func)}
550var Events=Object.freeze({fixEvent:fixEvent,on:on,off:off,trigger:trigger,one:one,any:any});var UPDATE_REFRESH_INTERVAL=30;var bind=function bind(context,fn,uid){if(!fn.guid){fn.guid=newGUID()}
551var bound=fn.bind(context);bound.guid=uid?uid+'_'+fn.guid:fn.guid;return bound};var throttle=function throttle(fn,wait){var last=window$1.performance.now();var throttled=function throttled(){var now=window$1.performance.now();if(now-last>=wait){fn.apply(void 0,arguments);last=now}};return throttled};var debounce=function debounce(func,wait,immediate,context){if(context===void 0){context=window$1}
552var timeout;var cancel=function cancel(){context.clearTimeout(timeout);timeout=null};var debounced=function debounced(){var self=this;var args=arguments;var _later=function later(){timeout=null;_later=null;if(!immediate){func.apply(self,args)}};if(!timeout&&immediate){func.apply(self,args)}
553context.clearTimeout(timeout);timeout=context.setTimeout(_later,wait)};debounced.cancel=cancel;return debounced};var EventTarget=function EventTarget(){};EventTarget.prototype.allowedEvents_={};EventTarget.prototype.on=function(type,fn){var ael=this.addEventListener;this.addEventListener=function(){};on(this,type,fn);this.addEventListener=ael};EventTarget.prototype.addEventListener=EventTarget.prototype.on;EventTarget.prototype.off=function(type,fn){off(this,type,fn)};EventTarget.prototype.removeEventListener=EventTarget.prototype.off;EventTarget.prototype.one=function(type,fn){var ael=this.addEventListener;this.addEventListener=function(){};one(this,type,fn);this.addEventListener=ael};EventTarget.prototype.any=function(type,fn){var ael=this.addEventListener;this.addEventListener=function(){};any(this,type,fn);this.addEventListener=ael};EventTarget.prototype.trigger=function(event){var type=event.type||event;if(typeof event==='string'){event={type:type}}
554event=fixEvent(event);if(this.allowedEvents_[type]&&this['on'+type]){this['on'+type](event)}
555trigger(this,event)};EventTarget.prototype.dispatchEvent=EventTarget.prototype.trigger;var EVENT_MAP;EventTarget.prototype.queueTrigger=function(event){var _this=this;if(!EVENT_MAP){EVENT_MAP=new Map()}
556var type=event.type||event;var map=EVENT_MAP.get(this);if(!map){map=new Map();EVENT_MAP.set(this,map)}
557var oldTimeout=map.get(type);map["delete"](type);window$1.clearTimeout(oldTimeout);var timeout=window$1.setTimeout(function(){if(map.size===0){map=null;EVENT_MAP["delete"](_this)}
558_this.trigger(event)},0);map.set(type,timeout)};var isEvented=function isEvented(object){return object instanceof EventTarget||!!object.eventBusEl_&&['on','one','off','trigger'].every(function(k){return typeof object[k]==='function'})};var addEventedCallback=function addEventedCallback(target,callback){if(isEvented(target)){callback()}else{if(!target.eventedCallbacks){target.eventedCallbacks=[]}
559target.eventedCallbacks.push(callback)}};var isValidEventType=function isValidEventType(type){return(typeof type==='string'&&/\S/.test(type)||Array.isArray(type)&&!!type.length)};var validateTarget=function validateTarget(target){if(!target.nodeName&&!isEvented(target)){throw new Error('Invalid target; must be a DOM node or evented object.')}};var validateEventType=function validateEventType(type){if(!isValidEventType(type)){throw new Error('Invalid event type; must be a non-empty string or array.')}};var validateListener=function validateListener(listener){if(typeof listener!=='function'){throw new Error('Invalid listener; must be a function.')}};var normalizeListenArgs=function normalizeListenArgs(self,args){var isTargetingSelf=args.length<3||args[0]===self||args[0]===self.eventBusEl_;var target;var type;var listener;if(isTargetingSelf){target=self.eventBusEl_;if(args.length>=3){args.shift()}
560type=args[0];listener=args[1]}else{target=args[0];type=args[1];listener=args[2]}
561validateTarget(target);validateEventType(type);validateListener(listener);listener=bind(self,listener);return{isTargetingSelf:isTargetingSelf,target:target,type:type,listener:listener}};var listen=function listen(target,method,type,listener){validateTarget(target);if(target.nodeName){Events[method](target,type,listener)}else{target[method](type,listener)}};var EventedMixin={on:function on(){var _this=this;
561for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}
562var _normalizeListenArgs=normalizeListenArgs(this,args),isTargetingSelf=_normalizeListenArgs.isTargetingSelf,target=_normalizeListenArgs.target,type=_normalizeListenArgs.type,listener=_normalizeListenArgs.listener;listen(target,'on',type,listener);if(!isTargetingSelf){var removeListenerOnDispose=function removeListenerOnDispose(){return _this.off(target,type,listener)};removeListenerOnDispose.guid=listener.guid;var removeRemoverOnTargetDispose=function removeRemoverOnTargetDispose(){return _this.off('dispose',removeListenerOnDispose)};removeRemoverOnTargetDispose.guid=listener.guid;listen(this,'on','dispose',removeListenerOnDispose);listen(target,'on','dispose',removeRemoverOnTargetDispose)}},one:function one(){var _this2=this;for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++){args[_key2]=arguments[_key2]}
563var _normalizeListenArgs2=normalizeListenArgs(this,args),isTargetingSelf=_normalizeListenArgs2.isTargetingSelf,target=_normalizeListenArgs2.target,type=_normalizeListenArgs2.type,listener=_normalizeListenArgs2.listener;if(isTargetingSelf){listen(target,'one',type,listener)}else{var wrapper=function wrapper(){_this2.off(target,type,wrapper);for(var _len3=arguments.length,largs=new Array(_len3),_key3=0;_key3<_len3;_key3++){largs[_key3]=arguments[_key3]}
564listener.apply(null,largs)};wrapper.guid=listener.guid;listen(target,'one',type,wrapper)}},any:function any(){var _this3=this;for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++){args[_key4]=arguments[_key4]}
565var _normalizeListenArgs3=normalizeListenArgs(this,args),isTargetingSelf=_normalizeListenArgs3.isTargetingSelf,target=_normalizeListenArgs3.target,type=_normalizeListenArgs3.type,listener=_normalizeListenArgs3.listener;if(isTargetingSelf){listen(target,'any',type,listener)}else{var wrapper=function wrapper(){_this3.off(target,type,wrapper);for(var _len5=arguments.length,largs=new Array(_len5),_key5=0;_key5<_len5;_key5++){largs[_key5]=arguments[_key5]}
566listener.apply(null,largs)};wrapper.guid=listener.guid;listen(target,'any',type,wrapper)}},off:function off$1(targetOrType,typeOrListener,listener){if(!targetOrType||isValidEventType(targetOrType)){off(this.eventBusEl_,targetOrType,typeOrListener)}else{var target=targetOrType;var type=typeOrListener;validateTarget(target);validateEventType(type);validateListener(listener);listener=bind(this,listener);this.off('dispose',listener);if(target.nodeName){off(target,type,listener);off(target,'dispose',listener)}else if(isEvented(target)){target.off(type,listener);target.off('dispose',listener)}}},trigger:function trigger$1(event,hash){return trigger(this.eventBusEl_,event,hash)}};function evented(target,options){if(options===void 0){options={}}
567var _options=options,eventBusKey=_options.eventBusKey;if(eventBusKey){if(!target[eventBusKey].nodeName){throw new Error("The eventBusKey \""+eventBusKey+"\" does not refer to an element.")}
568target.eventBusEl_=target[eventBusKey]}else{target.eventBusEl_=createEl('span',{className:'vjs-event-bus'})}
569assign(target,EventedMixin);if(target.eventedCallbacks){target.eventedCallbacks.forEach(function(callback){callback()})}
570target.on('dispose',function(){target.off();window$1.setTimeout(function(){target.eventBusEl_=null},0)});return target}
571var StatefulMixin={state:{},setState:function setState(stateUpdates){var _this=this;if(typeof stateUpdates==='function'){stateUpdates=stateUpdates()}
572var changes;each(stateUpdates,function(value,key){if(_this.state[key]!==value){changes=changes||{};changes[key]={from:_this.state[key],to:value}}
573_this.state[key]=value});if(changes&&isEvented(this)){this.trigger({changes:changes,type:'statechanged'})}
574return changes}};function stateful(target,defaultState){assign(target,StatefulMixin);target.state=assign({},target.state,defaultState);if(typeof target.handleStateChanged==='function'&&isEvented(target)){target.on('statechanged',target.handleStateChanged)}
575return target}
576var toLowerCase=function toLowerCase(string){if(typeof string!=='string'){return string}
577return string.replace(/./,function(w){return w.toLowerCase()})};var toTitleCase=function toTitleCase(string){if(typeof string!=='string'){return string}
578return string.replace(/./,function(w){return w.toUpperCase()})};var titleCaseEquals=function titleCaseEquals(str1,str2){return toTitleCase(str1)===toTitleCase(str2)};function mergeOptions(){var result={};
578for(var _len=arguments.length,sources=new Array(_len),_key=0;_key<_len;_key++){sources[_key]=arguments[_key]}
579sources.forEach(function(source){if(!source){return}
580each(source,function(value,key){if(!isPlain(value)){result[key]=value;return}
581if(!isPlain(result[key])){result[key]={}}
582result[key]=mergeOptions(result[key],value)})});return result}
583var Component=function(){function Component(player,options,ready){if(!player&&this.play){this.player_=player=this}else{this.player_=player}
584this.isDisposed_=!1;this.parentComponent_=null;this.options_=mergeOptions({},this.options_);options=this.options_=mergeOptions(this.options_,options);this.id_=options.id||options.el&&options.el.id;if(!this.id_){var id=player&&player.id&&player.id()||'no_player';this.id_=id+"_component_"+newGUID()}
585this.name_=options.name||null;if(options.el){this.el_=options.el}else if(options.createEl!==!1){this.el_=this.createEl()}
586if(options.evented!==!1){evented(this,{eventBusKey:this.el_?'el_':null})}
587stateful(this,this.constructor.defaultState);this.children_=[];this.childIndex_={};this.childNameIndex_={};var SetSham;if(!window$1.Set){SetSham=function(){function SetSham(){this.set_={}}
588var _proto2=SetSham.prototype;_proto2.has=function has(key){return key in this.set_};_proto2["delete"]=function _delete(key){var has=this.has(key);delete this.set_[key];return has};_proto2.add=function add(key){this.set_[key]=1;return this};_proto2.forEach=function forEach(callback,thisArg){for(var key in this.set_){callback.call(thisArg,key,key,this)}};return SetSham}()}
589this.setTimeoutIds_=window$1.Set?new Set():new SetSham();this.setIntervalIds_=window$1.Set?new Set():new SetSham();this.rafIds_=window$1.Set?new Set():new SetSham();this.clearingTimersOnDispose_=!1;if(options.initChildren!==!1){this.initChildren()}
590this.ready(ready);if(options.reportTouchActivity!==!1){this.enableTouchActivity()}}
591var _proto=Component.prototype;_proto.dispose=function dispose(){if(this.isDisposed_){return}
592this.trigger({type:'dispose',bubbles:!1});this.isDisposed_=!0;if(this.children_){for(var i=this.children_.length-1;i>=0;i--){if(this.children_[i].dispose){this.children_[i].dispose()}}}
593this.children_=null;this.childIndex_=null;this.childNameIndex_=null;this.parentComponent_=null;if(this.el_){if(this.el_.parentNode){this.el_.parentNode.removeChild(this.el_)}
594if(DomData.has(this.el_)){DomData["delete"](this.el_)}
595this.el_=null}
596this.player_=null};_proto.isDisposed=function isDisposed(){return Boolean(this.isDisposed_)};_proto.player=function player(){return this.player_};_proto.options=function options(obj){if(!obj){return this.options_}
597this.options_=mergeOptions(this.options_,obj);return this.options_};_proto.el=function el(){return this.el_};_proto.createEl=function createEl$1(tagName,properties,attributes){return createEl(tagName,properties,attributes)};_proto.localize=function localize(string,tokens,defaultValue){if(defaultValue===void 0){defaultValue=string}
598var code=this.player_.language&&this.player_.language();var languages=this.player_.languages&&this.player_.languages();var language=languages&&languages[code];var primaryCode=code&&code.split('-')[0];var primaryLang=languages&&languages[primaryCode];var localizedString=defaultValue;if(language&&language[string]){localizedString=language[string]}else if(primaryLang&&primaryLang[string]){localizedString=primaryLang[string]}
599if(tokens){localizedString=localizedString.replace(/\{(\d+)\}/g,function(match,index){var value=tokens[index-1];var ret=value;if(typeof value==='undefined'){ret=match}
600return ret})}
601return localizedString};_proto.contentEl=function contentEl(){return this.contentEl_||this.el_};_proto.id=function id(){return this.id_};_proto.name=function name(){return this.name_};_proto.children=function children(){return this.children_};_proto.getChildById=function getChildById(id){return this.childIndex_[id]};_proto.getChild=function getChild(name){if(!name){return}
602return this.childNameIndex_[name]};_proto.addChild=function addChild(child,options,index){if(options===void 0){options={}}
603if(index===void 0){index=this.children_.length}
604var component;var componentName;if(typeof child==='string'){componentName=toTitleCase(child);var componentClassName=options.componentClass||componentName;options.name=componentName;var ComponentClass=Component.getComponent(componentClassName);if(!ComponentClass){throw new Error("Component "+componentClassName+" does not exist")}
605if(typeof ComponentClass!=='function'){return null}
606component=new ComponentClass(this.player_||this,options)}else{component=child}
607if(component.parentComponent_){component.parentComponent_.removeChild(component)}
608this.children_.splice(index,0,component);component.parentComponent_=this;if(typeof component.id==='function'){this.childIndex_[component.id()]=component}
609componentName=componentName||component.name&&toTitleCase(component.name());if(componentName){this.childNameIndex_[componentName]=component;this.childNameIndex_[toLowerCase(componentName)]=component}
610if(typeof component.el==='function'&&component.el()){var refNode=null;if(this.children_[index+1]&&this.children_[index+1].el_){refNode=this.children_[index+1].el_}
611this.contentEl().insertBefore(component.el(),refNode)}
612return component};_proto.removeChild=function removeChild(component){if(typeof component==='string'){component=this.getChild(component)}
613if(!component||!this.children_){return}
614var childFound=!1;for(var i=this.children_.length-1;i>=0;i--){if(this.children_[i]===component){childFound=!0;this.children_.splice(i,1);break}}
615if(!childFound){return}
616component.parentComponent_=null;this.childIndex_[component.id()]=null;this.childNameIndex_[toTitleCase(component.name())]=null;this.childNameIndex_[toLowerCase(component.name())]=null;var compEl=component.el();if(compEl&&compEl.parentNode===this.contentEl()){this.contentEl().removeChild(component.el())}};_proto.initChildren=function initChildren(){var _this=this;var children=this.options_.children;if(children){var parentOptions=this.options_;var handleAdd=function handleAdd(child){var name=child.name;var opts=child.opts;if(parentOptions[name]!==undefined){opts=parentOptions[name]}
617if(opts===!1){return}
618if(opts===!0){opts={}}
619opts.playerOptions=_this.options_.playerOptions;var newChild=_this.addChild(name,opts);if(newChild){_this[name]=newChild}};var workingChildren;var Tech=Component.getComponent('Tech');if(Array.isArray(children)){workingChildren=children}else{workingChildren=Object.keys(children)}
620workingChildren.concat(Object.keys(this.options_).filter(function(child){return!workingChildren.some(function(wchild){if(typeof wchild==='string'){return child===wchild}
621return child===wchild.name})})).map(function(child){var name;var opts;if(typeof child==='string'){name=child;opts=children[name]||_this.options_[name]||{}}else{name=child.name;opts=child}
622return{name:name,opts:opts}}).filter(function(child){var c=Component.getComponent(child.opts.componentClass||toTitleCase(child.name));return c&&!Tech.isTech(c)}).forEach(handleAdd)}};_proto.buildCSSClass=function buildCSSClass(){return''};_proto.ready=function ready(fn,sync){if(sync===void 0){sync=!1}
623if(!fn){return}
624if(!this.isReady_){this.readyQueue_=this.readyQueue_||[];this.readyQueue_.push(fn);return}
625if(sync){fn.call(this)}else{this.setTimeout(fn,1)}};_proto.triggerReady=function triggerReady(){this.isReady_=!0;this.setTimeout(function(){var readyQueue=this.readyQueue_;this.readyQueue_=[];if(readyQueue&&readyQueue.length>0){readyQueue.forEach(function(fn){fn.call(this)},this)}
626this.trigger('ready')},1)};_proto.$=function $$1(selector,context){return $(selector,context||this.contentEl())};_proto.$$=function $$$1(selector,context){return $$(selector,context||this.contentEl())};_proto.hasClass=function hasClass$1(classToCheck){return hasClass(this.el_,classToCheck)};_proto.addClass=function addClass$1(classToAdd){addClass(this.el_,classToAdd)};_proto.removeClass=function removeClass$1(classToRemove){removeClass(this.el_,classToRemove)};_proto.toggleClass=function toggleClass$1(classToToggle,predicate){toggleClass(this.el_,classToToggle,predicate)};_proto.show=function show(){this.removeClass('vjs-hidden')};_proto.hide=function hide(){this.addClass('vjs-hidden')};_proto.lockShowing=function lockShowing(){this.addClass('vjs-lock-showing')};_proto.unlockShowing=function unlockShowing(){this.removeClass('vjs-lock-showing')};_proto.getAttribute=function getAttribute$1(attribute){return getAttribute(this.el_,attribute)};_proto.setAttribute=function setAttribute$1(attribute,value){setAttribute(this.el_,attribute,value)};_proto.removeAttribute=function removeAttribute$1(attribute){removeAttribute(this.el_,attribute)};_proto.width=function width(num,skipListeners){return this.dimension('width',num,skipListeners)};_proto.height=function height(num,skipListeners){return this.dimension('height',num,skipListeners)};_proto.dimensions=function dimensions(width,height){this.width(width,!0);this.height(height)};_proto.dimension=function dimension(widthOrHeight,num,skipListeners){if(num!==undefined){if(num===null||num!==num){num=0}
627if((''+num).indexOf('%')!==-1||(''+num).indexOf('px')!==-1){this.el_.style[widthOrHeight]=num}else if(num==='auto'){this.el_.style[widthOrHeight]=''}else{this.el_.style[widthOrHeight]=num+'px'}
628if(!skipListeners){this.trigger('componentresize')}
629return}
630if(!this.el_){return 0}
631var val=this.el_.style[widthOrHeight];var pxIndex=val.indexOf('px');if(pxIndex!==-1){return parseInt(val.slice(0,pxIndex),10)}
632return parseInt(this.el_['offset'+toTitleCase(widthOrHeight)],10)};_proto.currentDimension=function currentDimension(widthOrHeight){var computedWidthOrHeight=0;if(widthOrHeight!=='width'&&widthOrHeight!=='height'){throw new Error('currentDimension only accepts width or height value')}
633computedWidthOrHeight=computedStyle(this.el_,widthOrHeight);computedWidthOrHeight=parseFloat(computedWidthOrHeight);if(computedWidthOrHeight===0||isNaN(computedWidthOrHeight)){var rule="offset"+toTitleCase(widthOrHeight);computedWidthOrHeight=this.el_[rule]}
634return computedWidthOrHeight};_proto.currentDimensions=function currentDimensions(){return{width:this.currentDimension('width'),height:this.currentDimension('height')}};_proto.currentWidth=function currentWidth(){return this.currentDimension('width')};_proto.currentHeight=function currentHeight(){return this.currentDimension('height')};_proto.focus=function focus(){this.el_.focus()};_proto.blur=function blur(){this.el_.blur()};_proto.handleKeyDown=function handleKeyDown(event){if(this.player_){event.stopPropagation();this.player_.handleKeyDown(event)}};_proto.handleKeyPress=function handleKeyPress(event){this.handleKeyDown(event)};_proto.emitTapEvents=function emitTapEvents(){var touchStart=0;var firstTouch=null;var tapMovementThreshold=10;var touchTimeThreshold=200;var couldBeTap;this.on('touchstart',function(event){if(event.touches.length===1){firstTouch={pageX:event.touches[0].pageX,pageY:event.touches[0].pageY};touchStart=window$1.performance.now();couldBeTap=!0}});this.on('touchmove',function(event){if(event.touches.length>1){couldBeTap=!1}else if(firstTouch){var xdiff=event.touches[0].pageX-firstTouch.pageX;var ydiff=event.touches[0].pageY-firstTouch.pageY;var touchDistance=Math.sqrt(xdiff*xdiff+ydiff*ydiff);if(touchDistance>tapMovementThreshold){couldBeTap=!1}}});var noTap=function noTap(){couldBeTap=!1};this.on('touchleave',noTap);this.on('touchcancel',noTap);this.on('touchend',function(event){firstTouch=null;if(couldBeTap===!0){var touchTime=window$1.performance.now()-touchStart;if(touchTime<touchTimeThreshold){event.preventDefault();this.trigger('tap')}}})};_proto.enableTouchActivity=function enableTouchActivity(){if(!this.player()||!this.player().reportUserActivity){return}
635var report=bind(this.player(),this.player().reportUserActivity);var touchHolding;this.on('touchstart',function(){report();this.clearInterval(touchHolding);touchHolding=this.setInterval(report,250)});var touchEnd=function touchEnd(event){report();this.clearInterval(touchHolding)};this.on('touchmove',report);this.on('touchend',touchEnd);this.on('touchcancel',touchEnd)};_proto.setTimeout=function setTimeout(fn,timeout){var _this2=this;var timeoutId;fn=bind(this,fn);this.clearTimersOnDispose_();timeoutId=window$1.setTimeout(function(){if(_this2.setTimeoutIds_.has(timeoutId)){_this2.setTimeoutIds_["delete"](timeoutId)}
636fn()},timeout);this.setTimeoutIds_.add(timeoutId);return timeoutId};_proto.clearTimeout=function clearTimeout(timeoutId){if(this.setTimeoutIds_.has(timeoutId)){this.setTimeoutIds_["delete"](timeoutId);window$1.clearTimeout(timeoutId)}
637return timeoutId};_proto.setInterval=function setInterval(fn,interval){fn=bind(this,fn);this.clearTimersOnDispose_();var intervalId=window$1.setInterval(fn,interval);this.setIntervalIds_.add(intervalId);return intervalId};_proto.clearInterval=function clearInterval(intervalId){if(this.setIntervalIds_.has(intervalId)){this.setIntervalIds_["delete"](intervalId);window$1.clearInterval(intervalId)}
638return intervalId};_proto.requestAnimationFrame=function requestAnimationFrame(fn){var _this3=this;if(!this.supportsRaf_){return this.setTimeout(fn,1000/60)}
639this.clearTimersOnDispose_();var id;fn=bind(this,fn);id=window$1.requestAnimationFrame(function(){if(_this3.rafIds_.has(id)){_this3.rafIds_["delete"](id)}
640fn()});this.rafIds_.add(id);return id};_proto.cancelAnimationFrame=function cancelAnimationFrame(id){if(!this.supportsRaf_){return this.clearTimeout(id)}
641if(this.rafIds_.has(id)){this.rafIds_["delete"](id);window$1.cancelAnimationFrame(id)}
642return id};_proto.clearTimersOnDispose_=function clearTimersOnDispose_(){var _this4=this;if(this.clearingTimersOnDispose_){return}
643this.clearingTimersOnDispose_=!0;this.one('dispose',function(){[['rafIds_','cancelAnimationFrame'],['setTimeoutIds_','clearTimeout'],['setIntervalIds_','clearInterval']].forEac
643h(function(_ref){var idName=_ref[0],cancelName=_ref[1];_this4[idName].forEach(_this4[cancelName],_this4)});_this4.clearingTimersOnDispose_=!1})};Component.registerComponent=function registerComponent(name,ComponentToRegister){if(typeof name!=='string'||!name){throw new Error("Illegal component name, \""+name+"\"; must be a non-empty string.")}
644var Tech=Component.getComponent('Tech');var isTech=Tech&&Tech.isTech(ComponentToRegister);var isComp=Component===ComponentToRegister||Component.prototype.isPrototypeOf(ComponentToRegister.prototype);if(isTech||!isComp){var reason;if(isTech){reason='techs must be registered using Tech.registerTech()'}else{reason='must be a Component subclass'}
645throw new Error("Illegal component, \""+name+"\"; "+reason+".")}
646name=toTitleCase(name);if(!Component.components_){Component.components_={}}
647var Player=Component.getComponent('Player');if(name==='Player'&&Player&&Player.players){var players=Player.players;var playerNames=Object.keys(players);if(players&&playerNames.length>0&&playerNames.map(function(pname){return players[pname]}).every(Boolean)){throw new Error('Can not register Player component after player has been created.')}}
648Component.components_[name]=ComponentToRegister;Component.components_[toLowerCase(name)]=ComponentToRegister;return ComponentToRegister};Component.getComponent=function getComponent(name){if(!name||!Component.components_){return}
649return Component.components_[name]};return Component}();Component.prototype.supportsRaf_=typeof window$1.requestAnimationFrame==='function'&&typeof window$1.cancelAnimationFrame==='function';Component.registerComponent('Component',Component);function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}
650return self}
651var assertThisInitialized=_assertThisInitialized;function _inheritsLoose(subClass,superClass){subClass.prototype=Object.create(superClass.prototype);subClass.prototype.constructor=subClass;subClass.__proto__=superClass}
652var inheritsLoose=_inheritsLoose;var USER_AGENT=window$1.navigator&&window$1.navigator.userAgent||'';var webkitVersionMap=/AppleWebKit\/([\d.]+)/i.exec(USER_AGENT);var appleWebkitVersion=webkitVersionMap?parseFloat(webkitVersionMap.pop()):null;var IS_IPOD=/iPod/i.test(USER_AGENT);var IOS_VERSION=function(){var match=USER_AGENT.match(/OS (\d+)_/i);if(match&&match[1]){return match[1]}
653return null}();var IS_ANDROID=/Android/i.test(USER_AGENT);var ANDROID_VERSION=function(){var match=USER_AGENT.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(!match){return null}
654var major=match[1]&&parseFloat(match[1]);var minor=match[2]&&parseFloat(match[2]);if(major&&minor){return parseFloat(match[1]+'.'+match[2])}else if(major){return major}
655return null}();var IS_NATIVE_ANDROID=IS_ANDROID&&ANDROID_VERSION<5&&appleWebkitVersion<537;var IS_FIREFOX=/Firefox/i.test(USER_AGENT);var IS_EDGE=/Edge/i.test(USER_AGENT);var IS_CHROME=!IS_EDGE&&(/Chrome/i.test(USER_AGENT)||/CriOS/i.test(USER_AGENT));var CHROME_VERSION=function(){var match=USER_AGENT.match(/(Chrome|CriOS)\/(\d+)/);if(match&&match[2]){return parseFloat(match[2])}
656return null}();var IE_VERSION=function(){var result=/MSIE\s(\d+)\.\d/.exec(USER_AGENT);var version=result&&parseFloat(result[1]);if(!version&&/Trident\/7.0/i.test(USER_AGENT)&&/rv:11.0/.test(USER_AGENT)){version=11.0}
657return version}();var IS_SAFARI=/Safari/i.test(USER_AGENT)&&!IS_CHROME&&!IS_ANDROID&&!IS_EDGE;var IS_WINDOWS=/Windows/i.test(USER_AGENT);var TOUCH_ENABLED=isReal()&&('ontouchstart' in window$1||window$1.navigator.maxTouchPoints||window$1.DocumentTouch&&window$1.document instanceof window$1.DocumentTouch);var IS_IPAD=/iPad/i.test(USER_AGENT)||IS_SAFARI&&TOUCH_ENABLED&&
657!/iPhone/i.test(USER_AGENT);var IS_IPHONE=/iPhone/i.test(USER_AGENT)&&!IS_IPAD;var IS_IOS=IS_IPHONE||IS_IPAD||IS_IPOD;var IS_ANY_SAFARI=(IS_SAFARI||IS_IOS)&&!IS_CHROME;var browser=Object.freeze({IS_IPOD:IS_IPOD,IOS_VERSION:IOS_VERSION,IS_ANDROID:IS_ANDROID,ANDROID_VERSION:ANDROID_VERSION,IS_NATIVE_ANDROID:IS_NATIVE_ANDROID,IS_FIREFOX:IS_FIREFOX,IS_EDGE:IS_EDGE,IS_CHROME:IS_CHROME,CHROME_VERSION:CHROME_VERSION,IE_VERSION:IE_VERSION,IS_SAFARI:IS_SAFARI,IS_WINDOWS:IS_WINDOWS,TOUCH_ENABLED:TOUCH_ENABLED,IS_IPAD:IS_IPAD,IS_IPHONE:IS_IPHONE,IS_IOS:IS_IOS,IS_ANY_SAFARI:IS_ANY_SAFARI});function rangeCheck(fnName,index,maxIndex){if(typeof index!=='number'||index<0||index>maxIndex){throw new Error("Failed to execute '"+fnName+"' on 'TimeRanges': The index provided ("+index+") is non-numeric or out of bounds (0-"+maxIndex+").")}}
658function getRange(fnName,valueIndex,ranges,rangeIndex){rangeCheck(fnName,rangeIndex,ranges.length-1);return ranges[rangeIndex][valueIndex]}
659function createTimeRangesObj(ranges){if(ranges===undefined||ranges.length===0){return{length:0,start:function start(){throw new Error('This TimeRanges object is empty')},end:function end(){throw new Error('This TimeRanges object is empty')}}}
660return{length:ranges.length,start:getRange.bind(null,'start',0,ranges),end:getRange.bind(null,'end',1,ranges)}}
661function createTimeRanges(start,end){if(Array.isArray(start)){return createTimeRangesObj(start)}else if(start===undefined||end===undefined){return createTimeRangesObj()}
662return createTimeRangesObj([[start,end]])}
663function bufferedPercent(buffered,duration){var bufferedDuration=0;var start;var end;if(!duration){return 0}
664if(!buffered||!buffered.length){buffered=createTimeRanges(0,0)}
665for(var i=0;i<buffered.length;i++){start=buffered.start(i);end=buffered.end(i);if(end>duration){end=duration}
666bufferedDuration+=end-start}
667return bufferedDuration/duration}
668var FullscreenApi={prefixed:!0};var apiMap=[['requestFullscreen','exitFullscreen','fullscreenElement','fullscreenEnabled','fullscreenchange','fullscreenerror','fullscreen'],['webkitRequestFullscreen','webkitExitFullscreen','webkitFullscreenElement','webkitFullscreenEnabled','webkitfullscreenchange','webkitfullscreenerror','-webkit-full-screen'],['mozRequestFullScreen','mozCancelFullScreen','mozFullScreenElement','mozFullScreenEnabled','mozfullscreenchange','mozfullscreenerror','-moz-full-screen'],['msRequestFullscreen','msExitFullscreen','msFullscreenElement','msFullscreenEnabled','MSFullscreenChange','MSFullscreenError','-ms-fullscreen']];var specApi=apiMap[0];var browserApi;for(var i=0;i<apiMap.length;i++){if(apiMap[i][1]in document){browserApi=apiMap[i];break}}
669if(browserApi){for(var _i=0;_i<browserApi.length;_i++){FullscreenApi[specApi[_i]]=browserApi[_i]}
670FullscreenApi.prefixed=browserApi[0]!==specApi[0]}
671function MediaError(value){if(value instanceof MediaError){return value}
672if(typeof value==='number'){this.code=value}else if(typeof value==='string'){this.message=value}else if(isObject(value)){if(typeof value.code==='number'){this.code=value.code}
673assign(this,value)}
674if(!this.message){this.message=MediaError.defaultMessages[this.code]||''}}
675MediaError.prototype.code=0;MediaError.prototype.message='';MediaError.prototype.status=null;MediaError.errorTypes=['MEDIA_ERR_CUSTOM','MEDIA_ERR_ABORTED','MEDIA_ERR_NETWORK','MEDIA_ERR_DECODE','MEDIA_ERR_SRC_NOT_SUPPORTED','MEDIA_ERR_ENCRYPTED'];MediaError.defaultMessages={1:'You aborted the media playback',2:'A network error caused the media download to fail part-way.',3:'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.',4:'The media could not be loaded, either because the server or network failed or because the format is not supported.',5:'The media is encrypted and we do not have the keys to decrypt it.'};for(var errNum=0;errNum<MediaError.errorTypes.length;errNum++){MediaError[MediaError.errorTypes[errNum]]=errNum;MediaError.prototype[MediaError.errorTypes[errNum]]=errNum}
676var tuple=SafeParseTuple;function SafeParseTuple(obj,reviver){var json;var error=null;try{json=JSON.parse(obj,reviver)}catch(err){error=err}
677return[error,json]}
678function isPromise(value){return value!==undefined&&value!==null&&typeof value.then==='function'}
679function silencePromise(value){if(isPromise(value)){value.then(null,function(e){})}}
680var trackToJson_=function trackToJson_(track){var ret=['kind','label','language','id','inBandMetadataTrackDispatchType','mode','src'].reduce(function(acc,prop,i){if(track[prop]){acc[prop]=track[prop]}
681return acc},{cues:track.cues&&Array.prototype.map.call(track.cues,function(cue){return{startTime:cue.startTime,endTime:cue.endTime,text:cue.text,id:cue.id}})});return ret};var textTracksToJson=function textTracksToJson(tech){var trackEls=tech.$$('track');var trackObjs=Array.prototype.map.call(trackEls,function(t){return t.track});var tracks=Array.prototype.map.call(trackEls,function(trackEl){var json=trackToJson_(trackEl.track);if(trackEl.src){json.src=trackEl.src}
682return json});return tracks.concat(Array.prototype.filter.call(tech.textTracks(),function(track){return trackObjs.indexOf(track)===-1}).map(trackToJson_))};var jsonToTextTracks=function jsonToTextTracks(json,tech){json.forEach(function(track){var addedTrack=tech.addRemoteTextTrack(track).track;if(!track.src&&track.cues){track.cues.forEach(function(cue){return addedTrack.addCue(cue)})}});return tech.textTracks()};var textTrackConverter={textTracksToJson:textTracksToJson,jsonToTextTracks:jsonToTextTracks,trackToJson_:trackToJson_};var keycode=createCommonjsModule(function(module,exports){function keyCode(searchInput){if(searchInput&&'object'===typeof searchInput){var hasKeyCode=searchInput.which||searchInput.keyCode||searchInput.charCode;if(hasKeyCode)searchInput=hasKeyCode}
683if('number'===typeof searchInput)return names[searchInput];var search=String(searchInput);var foundNamedKey=codes[search.toLowerCase()];if(foundNamedKey)return foundNamedKey;var foundNamedKey=aliases[search.toLowerCase()];if(foundNamedKey)return foundNamedKey;if(search.length===1)return search.charCodeAt(0);return undefined}
684keyCode.isEventKey=function isEventKey(event,nameOrCode){if(event&&'object'===typeof event){var keyCode=event.which||event.keyCode||event.charCode;if(keyCode===null||keyCode===undefined){return!1}
685if(typeof nameOrCode==='string'){var foundNamedKey=codes[nameOrCode.toLowerCase()];if(foundNamedKey){return foundNamedKey===keyCode}
686var foundNamedKey=aliases[nameOrCode.toLowerCase()];if(foundNamedKey){return foundNamedKey===keyCode}}else if(typeof nameOrCode==='number'){return nameOrCode===keyCode}
687return!1}};exports=module.exports=keyCode;var codes=exports.code=exports.codes={'backspace':8,'tab':9,'enter':13,'shift':16,'ctrl':17,'alt':18,'pause/break':19,'caps lock':20,'esc':27,'space':32,'page up':33,'page down':34,'end':35,'home':36,'left':37,'up':38,'right':39,'down':40,'insert':45,'delete':46,'command':91,'left command':91,'right command':93,'numpad *':106,'numpad +':107,'numpad -':109,'numpad .':110,'numpad /':111,'num lock':144,'scroll lock':145,'my computer':182,'my calculator':183,';':186,'=':187,',':188,'-':189,'.':190,'/':191,'`':192,'[':219,'\\':220,']':221,"'":222};var aliases=exports.aliases={'windows':91,'⇧':16,'⌥':18,'⌃':17,'⌘':91,'ctl':17,'control':17,'option':18,'pause':19,'break':19,'caps':20,'return':13,'escape':27,'spc':32,'spacebar':32,'pgup':33,'pgdn':34,'ins':45,'del':46,'cmd':91/*!
688        * Programatically add the following
689        */
690};for(i=97;i<123;i++){codes[String.fromCharCode(i)]=i-32}
691for(var i=48;i<58;i++){codes[i-48]=i}
692for(i=1;i<13;i++){codes['f'+i]=i+111}
693for(i=0;i<10;i++){codes['numpad '+i]=i+96}
694var names=exports.names=exports.title={};for(i in codes){names[codes[i]]=i}
695for(var alias in aliases){codes[alias]=aliases[alias]}});var keycode_1=keycode.code;var keycode_2=keycode.codes;var keycode_3=keycode.aliases;var keycode_4=keycode.names;var keycode_5=keycode.title;var MODAL_CLASS_NAME='vjs-modal-dialog';var ModalDialog=function(_Component){inheritsLoose(ModalDialog,_Component);function ModalDialog(player,options){var _this;_this=_Component.call(this,player,options)||this;_this.opened_=_this.hasBeenOpened_=_this.hasBeenFilled_=!1;_this.closeable(!_this.options_.uncloseable);_this.content(_this.options_.content);_this.contentEl_=createEl('div',{className:MODAL_CLASS_NAME+"-content"},{role:'document'});_this.descEl_=createEl('p',{className:MODAL_CLASS_NAME+"-description vjs-control-text",id:_this.el().getAttribute('aria-describedby')});textContent(_this.descEl_,_this.description());_this.el_.appendChild(_this.descEl_);_this.el_.appendChild(_this.contentEl_);return _this}
696var _proto=ModalDialog.prototype;_proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,'div',{className:this.buildCSSClass(),tabIndex:-1},{'aria-describedby':this.id()+"_description",'aria-hidden':'true','aria-label':this.label(),'role':'dialog'})};_proto.dispose=function dispose(){this.contentEl_=null;this.descEl_=null;this.previouslyActiveEl_=null;_Component.prototype.dispose.call(this)};_proto.buildCSSClass=function buildCSSClass(){return MODAL_CLASS_NAME+" vjs-hidden "+_Component.prototype.buildCSSClass.call(this)};_proto.label=function label(){return this.localize(this.options_.label||'Modal Window')};_proto.description=function description(){var desc=this.options_.description||this.localize('This is a modal window.');if(this.closeable()){desc+=' '+this.localize('This modal can be closed by pressing the Escape key or activating the close button.')}
697return desc};_proto.open=function open(){if(!this.opened_){var player=this.player();this.trigger('beforemodalopen');this.opened_=!0;if(this.options_.fillAlways||!this.hasBeenOpened_&&!this.hasBeenFilled_){this.fill()}
698this.wasPlaying_=!player.paused();
698if(this.options_.pauseOnOpen&&this.wasPlaying_){player.pause()}
699this.on('keydown',this.handleKeyDown);this.hadControls_=player.controls();player.controls(!1);this.show();this.conditionalFocus_();this.el().setAttribute('aria-hidden','false');this.trigger('modalopen');this.hasBeenOpened_=!0}};_proto.opened=function opened(value){if(typeof value==='boolean'){this[value?'open':'close']()}
700return this.opened_};_proto.close=function close(){if(!this.opened_){return}
701var player=this.player();this.trigger('beforemodalclose');this.opened_=!1;if(this.wasPlaying_&&this.options_.pauseOnOpen){player.play()}
702this.off('keydown',this.handleKeyDown);if(this.hadControls_){player.controls(!0)}
703this.hide();this.el().setAttribute('aria-hidden','true');this.trigger('modalclose');this.conditionalBlur_();if(this.options_.temporary){this.dispose()}};_proto.closeable=function closeable(value){if(typeof value==='boolean'){var closeable=this.closeable_=!!value;var close=this.getChild('closeButton');if(closeable&&!close){var temp=this.contentEl_;this.contentEl_=this.el_;close=this.addChild('closeButton',{controlText:'Close Modal Dialog'});this.contentEl_=temp;this.on(close,'close',this.close)}
704if(!closeable&&close){this.off(close,'close',this.close);this.removeChild(close);close.dispose()}}
705return this.closeable_};_proto.fill=function fill(){this.fillWith(this.content())};_proto.fillWith=function fillWith(content){var contentEl=this.contentEl();var parentEl=contentEl.parentNode;var nextSiblingEl=contentEl.nextSibling;this.trigger('beforemodalfill');this.hasBeenFilled_=!0;parentEl.removeChild(contentEl);this.empty();insertContent(contentEl,content);this.trigger('modalfill');if(nextSiblingEl){parentEl.insertBefore(contentEl,nextSiblingEl)}else{parentEl.appendChild(contentEl)}
706var closeButton=this.getChild('closeButton');if(closeButton){parentEl.appendChild(closeButton.el_)}};_proto.empty=function empty(){this.trigger('beforemodalempty');emptyEl(this.contentEl());this.trigger('modalempty')};_proto.content=function content(value){if(typeof value!=='undefined'){this.content_=value}
707return this.content_};_proto.conditionalFocus_=function conditionalFocus_(){var activeEl=document.activeElement;var playerEl=this.player_.el_;this.previouslyActiveEl_=null;if(playerEl.contains(activeEl)||playerEl===activeEl){this.previouslyActiveEl_=activeEl;this.focus()}};_proto.conditionalBlur_=function conditionalBlur_(){if(this.previouslyActiveEl_){this.previouslyActiveEl_.focus();this.previouslyActiveEl_=null}};_proto.handleKeyDown=function handleKeyDown(event){event.stopPropagation();if(keycode.isEventKey(event,'Escape')&&this.closeable()){event.preventDefault();this.close();return}
708if(!keycode.isEventKey(event,'Tab')){return}
709var focusableEls=this.focusableEls_();var activeEl=this.el_.querySelector(':focus');var focusIndex;for(var i=0;i<focusableEls.length;i++){if(activeEl===focusableEls[i]){focusIndex=i;break}}
710if(document.activeElement===this.el_){focusIndex=0}
711if(event.shiftKey&&focusIndex===0){focusableEls[focusableEls.length-1].focus();event.preventDefault()}else if(!event.shiftKey&&focusIndex===focusableEls.length-1){focusableEls[0].focus();event.preventDefault()}};_proto.focusableEls_=function focusableEls_(){var allChildren=this.el_.querySelectorAll('*');return Array.prototype.filter.call(allChildren,function(child){return(child instanceof window$1.HTMLAnchorElement||child instanceof window$1.HTMLAreaElement)&&child.hasAttribute('href')||(child instanceof window$1.HTMLInputElement||child instanceof window$1.HTMLSelectElement||child instanceof window$1.HTMLTextAreaElement||child instanceof window$1.HTMLButtonElement)&&!child.hasAttribute('disabled')||child instanceof window$1.HTMLIFrameElement||child instanceof window$1.HTMLObjectElement||child instanceof window$1.HTMLEmbedElement||child.hasAttribute('tabindex')&&child.getAttribute('tabindex')!==-1||child.hasAttribute('contenteditable')})};return ModalDialog}(Component);ModalDialog.prototype.options_={pauseOnOpen:!0,temporary:!0};Component.registerComponent('ModalDialog',ModalDialog);var TrackList=function(_EventTarget){inheritsLoose(TrackList,_EventTarget);function TrackList(tracks){var _this;if(tracks===void 0){tracks=[]}
712_this=_EventTarget.call(this)||this;_this.tracks_=[];Object.defineProperty(assertThisInitialized(_this),'length',{get:function get(){return this.tracks_.length}});for(var i=0;i<tracks.length;i++){_this.addTrack(tracks[i])}
713return _this}
714var _proto=TrackList.prototype;_proto.addTrack=function addTrack(track){var index=this.tracks_.length;if(!(''+index in this)){Object.defineProperty(this,index,{get:function get(){return this.tracks_[index]}})}
715if(this.tracks_.indexOf(track)===-1){this.tracks_.push(track);this.trigger({track:track,type:'addtrack',target:this})}};_proto.removeTrack=function removeTrack(rtrack){var track;for(var i=0,l=this.length;i<l;i++){if(this[i]===rtrack){track=this[i];if(track.off){track.off()}
716this.tracks_.splice(i,1);break}}
717if(!track){return}
718this.trigger({track:track,type:'removetrack',target:this})};_proto.getTrackById=function getTrackById(id){var result=null;for(var i=0,l=this.length;i<l;i++){var track=this[i];if(track.id===id){result=track;break}}
719return result};return TrackList}(EventTarget);TrackList.prototype.allowedEvents_={change:'change',addtrack:'addtrack',removetrack:'removetrack'};for(var event in TrackList.prototype.allowedEvents_){TrackList.prototype['on'+event]=null}
720var disableOthers=function disableOthers(list,track){for(var i=0;i<list.length;i++){if(!Object.keys(list[i]).length||track.id===list[i].id){continue}
721list[i].enabled=!1}};var AudioTrackList=function(_TrackList){inheritsLoose(AudioTrackList,_TrackList);function AudioTrackList(tracks){var _this;if(tracks===void 0){tracks=[]}
722for(var i=tracks.length-1;i>=0;i--){if(tracks[i].enabled){disableOthers(tracks,tracks[i]);break}}
723_this=_TrackList.call(this,tracks)||this;_this.changing_=!1;return _this}
724var _proto=AudioTrackList.prototype;_proto.addTrack=function addTrack(track){var _this2=this;if(track.enabled){disableOthers(this,track)}
725_TrackList.prototype.addTrack.call(this,track);if(!track.addEventListener){return}
726track.enabledChange_=function(){if(_this2.changing_){return}
727_this2.changing_=!0;disableOthers(_this2,track);_this2.changing_=!1;_this2.trigger('change')};track.addEventListener('enabledchange',track.enabledChange_)};_proto.removeTrack=function removeTrack(rtrack){_TrackList.prototype.removeTrack.call(this,rtrack);if(rtrack.removeEventListener&&rtrack.enabledChange_){rtrack.removeEventListener('enabledchange',rtrack.enabledChange_);rtrack.enabledChange_=null}};return AudioTrackList}(TrackList);var disableOthers$1=function disableOthers(list,track){for(var i=0;i<list.length;i++){if(!Object.keys(list[i]).length||track.id===list[i].id){continue}
728list[i].selected=!1}};var VideoTrackList=function(_TrackList){inheritsLoose(VideoTrackList,_TrackList);function VideoTrackList(tracks){var _this;if(tracks===void 0){tracks=[]}
729for(var i=tracks.length-1;i>=0;i--){if(tracks[i].selected){disableOthers$1(tracks,tracks[i]);break}}
730_this=_TrackList.call(this,tracks)||this;_this.changing_=!1;Object.defineProperty(assertThisInitialized(_this),'selectedIndex',{get:function get(){for(var _i=0;_i<this.length;_i++){if(this[_i].selected){return _i}}
731return-1},set:function set(){}});return _this}
732var _proto=VideoTrackList.prototype;_proto.addTrack=function addTrack(track){var _this2=this;if(track.selected){disableOthers$1(this,track)}
733_TrackList.prototype.addTrack.call(this,track);if(!track.addEventListener){return}
734track.selectedChange_=function(){if(_this2.changing_){return}
735_this2.changing_=!0;disableOthers$1(_this2,track);_this2.changing_=!1;_this2.trigger('change')};track.addEventListener('selectedchange',track.selectedChange_)};_proto.removeTrack=function removeTrack(rtrack){_TrackList.prototype.removeTrack.call(this,rtrack);if(rtrack.removeEventListener&&rtrack.selectedChange_){rtrack.removeEventListener('selectedchange',rtrack.selectedChange_);rtrack.selectedChange_=null}};return VideoTrackList}(TrackList);var TextTrackList=function(_TrackList){inheritsLoose(TextTrackList,_TrackList);function TextTrackList(){return _TrackList.apply(this,arguments)||this}
736var _proto=TextTrackList.prototype;_proto.addTrack=function addTrack(track){var _this=this;_TrackList.prototype.addTrack.call(this,track);if(!this.queueChange_){this.queueChange_=function(){return _this.queueTrigger('change')}}
737if(!this.triggerSelectedlanguagechange){this.triggerSelectedlanguagechange_=function(){return _this.trigger('selectedlanguagechange')}}
738track.addEventListener('modechange',this.queueChange_);var nonLanguageTextTrackKind=['metadata','chapters'];if(nonLanguageTextTrackKind.indexOf(track.kind)===-1){track.addEventListener('modechange',this.triggerSelectedlanguagechange_)}};_proto.removeTrack=function removeTrack(rtrack){_TrackList.prototype.removeTrack.call(this,rtrack);if(rtrack.removeEventListener){if(this.queueChange_){rtrack.removeEventListener('modechange',this.queueChange_)}
739if(this.selectedlanguagechange_){rtrack.removeEventListener('modechange',this.triggerSelectedlanguagechange_)}}};return TextTrackList}(TrackList);var HtmlTrackElementList=function(){function HtmlTrackElementList(trackElements){if(trackElements===void 0){trackElements=[]}
740this.trackElements_=[];Object.defineProperty(this,'length',{get:function get(){return this.trackElements_.length}});for(var i=0,length=trackElements.length;i<length;i++){this.addTrackElement_(trackElements[i])}}
741var _proto=HtmlTrackElementList.prototype;_proto.addTrackElement_=function addTrackElement_(trackElement){var index=this.trackElements_.length;if(!(''+index in this)){Object.defineProperty(this,index,{get:function get(){return this.trackElements_[index]}})}
742if(this.trackElements_.indexOf(trackElement)===-1){this.trackElements_.pu
742sh(trackElement)}};_proto.getTrackElementByTrack_=function getTrackElementByTrack_(track){var trackElement_;for(var i=0,length=this.trackElements_.length;i<length;i++){if(track===this.trackElements_[i].track){trackElement_=this.trackElements_[i];break}}
743return trackElement_};_proto.removeTrackElement_=function removeTrackElement_(trackElement){for(var i=0,length=this.trackElements_.length;i<length;i++){if(trackElement===this.trackElements_[i]){if(this.trackElements_[i].track&&typeof this.trackElements_[i].track.off==='function'){this.trackElements_[i].track.off()}
744if(typeof this.trackElements_[i].off==='function'){this.trackElements_[i].off()}
745this.trackElements_.splice(i,1);break}}};return HtmlTrackElementList}();var TextTrackCueList=function(){function TextTrackCueList(cues){TextTrackCueList.prototype.setCues_.call(this,cues);Object.defineProperty(this,'length',{get:function get(){return this.length_}})}
746var _proto=TextTrackCueList.prototype;_proto.setCues_=function setCues_(cues){var oldLength=this.length||0;var i=0;var l=cues.length;this.cues_=cues;this.length_=cues.length;var defineProp=function defineProp(index){if(!(''+index in this)){Object.defineProperty(this,''+index,{get:function get(){return this.cues_[index]}})}};if(oldLength<l){i=oldLength;for(;i<l;i++){defineProp.call(this,i)}}};_proto.getCueById=function getCueById(id){var result=null;for(var i=0,l=this.length;i<l;i++){var cue=this[i];if(cue.id===id){result=cue;break}}
747return result};return TextTrackCueList}();var VideoTrackKind={alternative:'alternative',captions:'captions',main:'main',sign:'sign',subtitles:'subtitles',commentary:'commentary'};var AudioTrackKind={'alternative':'alternative','descriptions':'descriptions','main':'main','main-desc':'main-desc','translation':'translation','commentary':'commentary'};var TextTrackKind={subtitles:'subtitles',captions:'captions',descriptions:'descriptions',chapters:'chapters',metadata:'metadata'};var TextTrackMode={disabled:'disabled',hidden:'hidden',showing:'showing'};var Track=function(_EventTarget){inheritsLoose(Track,_EventTarget);function Track(options){var _this;if(options===void 0){options={}}
748_this=_EventTarget.call(this)||this;var trackProps={id:options.id||'vjs_track_'+newGUID(),kind:options.kind||'',label:options.label||'',language:options.language||''};var _loop=function _loop(key){Object.defineProperty(assertThisInitialized(_this),key,{get:function get(){return trackProps[key]},set:function set(){}})};for(var key in trackProps){_loop(key)}
749return _this}
750return Track}(EventTarget);var parseUrl=function parseUrl(url){var props=['protocol','hostname','port','pathname','search','hash','host'];var a=document.createElement('a');a.href=url;var addToBody=a.host===''&&a.protocol!=='file:';var div;if(addToBody){div=document.createElement('div');div.innerHTML="<a href=\""+url+"\"></a>";a=div.firstChild;div.setAttribute('style','display:none; position:absolute;');document.body.appendChild(div)}
751var details={};for(var i=0;i<props.length;i++){details[props[i]]=a[props[i]]}
752if(details.protocol==='http:'){details.host=details.host.replace(/:80$/,'')}
753if(details.protocol==='https:'){details.host=details.host.replace(/:443$/,'')}
754if(!details.protocol){details.protocol=window$1.location.protocol}
755if(addToBody){document.body.removeChild(div)}
756return details};var getAbsoluteURL=function getAbsoluteURL(url){if(!url.match(/^https?:\/\//)){var div=document.createElement('div');div.innerHTML="<a href=\""+url+"\">x</a>";url=div.firstChild.href}
757return url};var getFileExtension=function getFileExtension(path){if(typeof path==='string'){var splitPathRe=/^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/;var pathParts=splitPathRe.exec(path);if(pathParts){return pathParts.pop().toLowerCase()}}
758return''};var isCrossOrigin=function isCrossOrigin(url,winLoc){if(winLoc===void 0){winLoc=window$1.location}
759var urlInfo=parseUrl(url);var srcProtocol=urlInfo.protocol===':'?winLoc.protocol:urlInfo.protocol;var crossOrigin=srcProtocol+urlInfo.host!==winLoc.protocol+winLoc.host;return crossOrigin};var Url=Object.freeze({parseUrl:parseUrl,getAbsoluteURL:getAbsoluteURL,getFileExtension:getFileExtension,isCrossOrigin:isCrossOrigin});var isFunction_1=isFunction;var toString$1=Object.prototype.toString;function isFunction(fn){var string=toString$1.call(fn);return string==='[object Function]'||typeof fn==='function'&&string!=='[object RegExp]'||typeof window!=='undefined'&&(fn===window.setTimeout||fn===window.alert||fn===window.confirm||fn===window.prompt)}/**
760    * @license
761    * slighly modified parse-headers 2.0.2 <https://github.com/kesla/parse-headers/>
762    * Copyright (c) 2014 David Björklund
763    * Available under the MIT license
764    * <https://github.com/kesla/parse-headers/blob/master/LICENCE>
765    */
766var parseHeaders=function parseHeaders(headers){var result={};
766if(!headers){return result}
767headers.trim().split('\n').forEach(function(row){var index=row.indexOf(':');var key=row.slice(0,index).trim().toLowerCase();var value=row.slice(index+1).trim();if(typeof result[key]==='undefined'){result[key]=value}else if(Array.isArray(result[key])){result[key].push(value)}else{result[key]=[result[key],value]}});return result};var xhr=createXHR;var default_1=createXHR;createXHR.XMLHttpRequest=window$1.XMLHttpRequest||noop;createXHR.XDomainRequest="withCredentials" in new createXHR.XMLHttpRequest()?createXHR.XMLHttpRequest:window$1.XDomainRequest;forEachArray(["get","put","post","patch","head","delete"],function(method){createXHR[method==="delete"?"del":method]=function(uri,options,callback){options=initParams(uri,options,callback);options.method=method.toUpperCase();return _createXHR(options)}});function forEachArray(array,iterator){for(var i=0;i<array.length;i++){iterator(array[i])}}
768function isEmpty(obj){for(var i in obj){if(obj.hasOwnProperty(i))return!1}
769return!0}
770function initParams(uri,options,callback){var params=uri;if(isFunction_1(options)){callback=options;if(typeof uri==="string"){params={uri:uri}}}else{params=_extends_1({},options,{uri:uri})}
771params.callback=callback;return params}
772function createXHR(uri,options,callback){options=initParams(uri,options,callback);return _createXHR(options)}
773function _createXHR(options){if(typeof options.callback==="undefined"){throw new Error("callback argument missing")}
774var called=!1;var callback=function cbOnce(err,response,body){if(!called){called=!0;options.callback(err,response,body)}};function readystatechange(){if(xhr.readyState===4){setTimeout(loadFunc,0)}}
775function getBody(){var body=undefined;if(xhr.response){body=xhr.response}else{body=xhr.responseText||getXml(xhr)}
776if(isJson){try{body=JSON.parse(body)}catch(e){}}
777return body}
778function errorFunc(evt){clearTimeout(timeoutTimer);if(!(evt instanceof Error)){evt=new Error(""+(evt||"Unknown XMLHttpRequest Error"))}
779evt.statusCode=0;return callback(evt,failureResponse)}
780function loadFunc(){if(aborted)return;var status;clearTimeout(timeoutTimer);if(options.useXDR&&xhr.status===undefined){status=200}else{status=xhr.status===1223?204:xhr.status}
781var response=failureResponse;var err=null;if(status!==0){response={body:getBody(),statusCode:status,method:method,headers:{},url:uri,rawRequest:xhr};if(xhr.getAllResponseHeaders){response.headers=parseHeaders(xhr.getAllResponseHeaders())}}else{err=new Error("Internal XMLHttpRequest Error")}
782return callback(err,response,response.body)}
783var xhr=options.xhr||null;if(!xhr){if(options.cors||options.useXDR){xhr=new createXHR.XDomainRequest()}else{xhr=new createXHR.XMLHttpRequest()}}
784var key;var aborted;var uri=xhr.url=options.uri||options.url;var method=xhr.method=options.method||"GET";var body=options.body||options.data;var headers=xhr.headers=options.headers||{};var sync=!!options.sync;var isJson=!1;var timeoutTimer;var failureResponse={body:undefined,headers:{},statusCode:0,method:method,url:uri,rawRequest:xhr};if("json" in options&&options.json!==!1){isJson=!0;headers.accept||headers.Accept||(headers.Accept="application/json");if(method!=="GET"&&method!=="HEAD"){headers["content-type"]||headers["Content-Type"]||(headers["Content-Type"]="application/json");body=JSON.stringify(options.json===!0?body:options.json)}}
785xhr.onreadystatechange=readystatechange;xhr.onload=loadFunc;xhr.onerror=errorFunc;xhr.onprogress=function(){};xhr.onabort=function(){aborted=!0};xhr.ontimeout=errorFunc;xhr.open(method,uri,!sync,options.username,options.password);if(!sync){xhr.withCredentials=!!options.withCredentials}
786if(!sync&&options.timeout>0){timeoutTimer=setTimeout(function(){if(aborted)return;aborted=!0;xhr.abort("timeout");var e=new Error("XMLHttpRequest timeout");e.code="ETIMEDOUT";errorFunc(e)},options.timeout)}
787if(xhr.setRequestHeader){for(key in headers){if(headers.hasOwnProperty(key)){xhr.setRequestHeader(key,headers[key])}}}else if(options.headers&&!isEmpty(options.headers)){throw new Error("Headers cannot be set on an XDomainRequest object")}
788if("responseType" in options){xhr.responseType=options.responseType}
789if("beforeSend" in options&&typeof options.beforeSend==="function"){options.beforeSend(xhr)}
790xhr.send(body||null);return xhr}
791function getXml(xhr){try{if(xhr.responseType==="document"){return xhr.responseXML}
792var firefoxBugTakenEffect=xhr.responseXML&&xhr.responseXML.documentElement.nodeName==="parsererror";if(xhr.responseType===""&&!firefoxBugTakenEffect){return xhr.responseXML}}catch(e){}
793return null}
794function noop(){}
795xhr["default"]=default_1;var parseCues=function parseCues(srcContent,track){var parser=new window$1.WebVTT.Parser(window$1,window$1.vttjs,window$1.WebVTT.StringDecoder());var errors=[];parser.oncue=function(cue){track.addCue(cue)};parser.onparsingerror=function(error){errors.push(error)};parser.onflush=function(){track.trigger({type:'loadeddata',target:track})};parser.parse(srcContent);if(errors.length>0){if(window$1.console&&window$1.console.groupCollapsed){window$1.console.groupCollapsed("Text Track parsing errors for "+track.src)}
796errors.forEach(function(error){return log.error(error)});if(window$1.console&&window$1.console.groupEnd){window$1.console.groupEnd()}}
797parser.flush()};var loadTrack=function loadTrack(src,track){var opts={uri:src};var crossOrigin=isCrossOrigin(src);if(crossOrigin){opts.cors=crossOrigin}
798xhr(opts,bind(this,function(err,response,responseBody){if(err){return log.error(err,response)}
799track.loaded_=!0;if(typeof window$1.WebVTT!=='function'){if(track.tech_){track.tech_.any(['vttjsloaded','vttjserror'],function(event){if(event.type==='vttjserror'){log.error("vttjs failed to load, stopping trying to process "+track.src);return}
800return parseCues(responseBody,track)})}}else{parseCues(responseBody,track)}}))};var TextTrack=function(_Track){inheritsLoose(TextTrack,_Track);function TextTrack(options){var _this;if(options===void 0){options={}}
801if(!options.tech){throw new Error('A tech was not provided.')}
802var settings=mergeOptions(options,{kind:TextTrackKind[options.kind]||'subtitles',language:options.language||options.srclang||''});var mode=TextTrackMode[settings.mode]||'disabled';var default_=settings["default"];if(settings.kind==='metadata'||settings.kind==='chapters'){mode='hidden'}
803_this=_Track.call(this,settings)||this;_this.tech_=settings.tech;_this.cues_=[];_this.activeCues_=[];_this.preload_=_this.tech_.preloadTextTracks!==!1;var cues=new TextTrackCueList(_this.cues_);var activeCues=new TextTrackCueList(_this.activeCues_);var changed=!1;var timeupdateHandler=bind(assertThisInitialized(_this),function(){this.activeCues=this.activeCues;if(changed){this.trigger('cuechange');changed=!1}});if(mode!=='disabled'){_this.tech_.ready(function(){_this.tech_.on('timeupdate',timeupdateHandler)},!0)}
804Object.defineProperties(assertThisInitialized(_this),{"default":{get:function get(){return default_},set:function set(){}},mode:{get:function get(){return mode},set:function set(newMode){var _this2=this;if(!TextTrackMode[newMode]){return}
805mode=newMode;if(!this.preload_&&mode!=='disabled'&&this.cues.length===0){loadTrack(this.src,this)}
806if(mode!=='disabled'){this.tech_.ready(function(){_this2.tech_.on('timeupdate',timeupdateHandler)},!0)}else{this.tech_.off('timeupdate',timeupdateHandler)}
807this.trigger('modechange')}},cues:{get:function get(){if(!this.loaded_){return null}
808return cues},set:function set(){}},activeCues:{get:function get(){if(!this.loaded_){return null}
809if(this.cues.length===0){return activeCues}
810var ct=this.tech_.currentTime();var active=[];for(var i=0,l=this.cues.length;i<l;i++){var cue=this.cues[i];if(cue.startTime<=ct&&cue.endTime>=ct){active.push(cue)}else if(cue.startTime===cue.endTime&&cue.startTime<=ct&&cue.startTime+0.5>=ct){active.push(cue)}}
811changed=!1;if(active.length!==this.activeCues_.length){changed=!0}else{for(var _i=0;_i<active.length;_i++){if(this.activeCues_.indexOf(active[_i])===-1){changed=!0}}}
812this.activeCues_=active;activeCues.setCues_(this.activeCues_);return activeCues},set:function set(){}}});if(settings.src){_this.src=settings.src;if(!_this.preload_){_this.loaded_=!0}
813if(_this.preload_||default_||settings.kind!=='subtitles'&&settings.kind!=='captions'){loadTrack(_this.src,assertThisInitialized(_this))}}else{_this.loaded_=!0}
814return _this}
815var _proto=TextTrack.prototype;_proto.addCue=function addCue(originalCue){var cue=originalCue;if(window$1.vttjs&&!(originalCue instanceof window$1.vttjs.VTTCue)){cue=new window$1.vttjs.VTTCue(originalCue.startTime,originalCue.endTime,originalCue.text);for(var prop in originalCue){if(!(prop in cue)){cue[prop]=originalCue[prop]}}
816cue.id=originalCue.id;cue.originalCue_=originalCue}
817var tracks=this.tech_.textTracks();for(var i=0;i<tracks.length;i++){if(tracks[i]!==this){tracks[i].removeCue(cue)}}
818this.cues_.push(cue);this.cues.setCues_(this.cues_)};_proto.removeCue=function removeCue(_removeCue){var i=this.cues_.length;while(i--){var cue=this.cues_[i];if(cue===_removeCue||cue.originalCue_&&cue.originalCue_===_removeCue){this.cues_.splice(i,1);this.cues.setCues_(this.cues_);break}}};return TextTrack}(Track);TextTrack.prototype.allowedEvents_={cuechange:'cuechange'};var AudioTrack=function(_Track){inheritsLoose(AudioTrack,_Track);function AudioTrack(options){var _this;if(options===void 0){options={}}
819var settings=mergeOptions(options,{kind:AudioTrackKind[options.kind]||''});_this=_Track.call(this,settings)||this;var enabled=!1;Object.defineProperty(assertThisInitialized(_this),'enabled',{get:function get(){return enabled},set:function set(newEnabled){if(typeof newEnabled!=='boolean'||newEnabled===enabled){return}
820enabled=newEnabled;this.trigger('enabledchange')}});if(settings.enabled){_this.enabled=settings.enabled}
821_this.loaded_=!0;return _this}
822return AudioTrack}(Track);var VideoTrack=function(_Track){inheritsLoose(VideoTrack,_Track);function VideoTrack(options){var _this;if(options===void 0){options={}}
823var settings=mergeOptions(options,{kind:VideoTrackKind[options.kind]||''});_this=_Track.call(this,settings)||this;var selected=!1;Object.defineProperty(assertThisInitialized(_this),'selected',{get:function get(){return selected},set:function set(newSelected){if(typeof newSelected!=='boolean'||newSelected===selected){return}
824selected=newSelected;this.trigger('selectedchange')}});if(settings.selected){_this.selected=settings.selected}
825return _this}
826return VideoTrack}(Track);var NONE=0;var LOADING=1;var LOADED=2;var ERROR=3;var HTMLTrackElement=function(_EventTarget){inheritsLoose(HTMLTrackElement,_EventTarget);function HTMLTrackElement(options){var _this;if(options===void 0){options={}}
827_this=_EventTarget.call(this)||this;var readyState;var track=new TextTrack(options);_this.kind=track.kind;_this.src=track.src;_this.srclang=track.language;_this.label=track.label;_this["default"]=track["default"];Object.defineProperties(assertThisInitialized(_this),{readyState:{get:function get(){return readyState}},track:{get:function get(){return track}}});readyState=NONE;track.addEventListener('loadeddata',function(){readyState=LOADED;_this.trigger({type:'load',target:assertThisInitialized(_this)})});return _this}
828return HTMLTrackElement}(EventTarget);HTMLTrackElement.prototype.allowedEvents_={load:'load'};HTMLTrackElement.NONE=NONE;HTMLTrackElement.LOADING=LOADING;HTMLTrackElement.LOADED=LOADED;HTMLTrackElement.ERROR=ERROR;var NORMAL={audio:{ListClass:AudioTrackList,TrackClass:AudioTrack,capitalName:'Audio'},video:{ListClass:VideoTrackList,TrackClass:VideoTrack,capitalName:'Video'},text:{ListClass:TextTrackList,TrackClass:TextTrack,capitalName:'Text'}};Object.keys(NORMAL).forEach(function(type){NORMAL[type].getterName=type+"Tracks";NORMAL[type].privateName=type+"Tracks_"});var REMOTE={remoteText:{ListClass:TextTrackList,TrackClass:TextTrack,capitalName:'RemoteText',getterName:'remoteTextTracks',privateName:'remoteTextTracks_'},remoteTextEl:{ListClass:HtmlTrackElementList,TrackClass:HTMLTrackElement,capitalName:'RemoteTextTrackEls',getterName:'remoteTextTrackEls',privateName:'remoteTextTrackEls_'}};var ALL=_extends_1({},NORMAL,REMOTE);REMOTE.names=Object.keys(REMOTE);NORMAL.names=Object.keys(NORMAL);ALL.names=[].concat(REMOTE.names).concat(NORMAL.names);var _objCreate=Object.create||function(){function F(){}
829return function(o){if(arguments.length!==1){throw new Error('Object.create shim only accepts one parameter.')}
830F.prototype=o;return new F()}}();function ParsingError(errorData,message){this.name="ParsingError";this.code=errorData.code;this.message=message||errorData.message}
831ParsingError.prototype=_objCreate(Error.prototype);ParsingError.prototype.constructor=ParsingError;ParsingError.Errors={BadSignature:{code:0,message:"Malformed WebVTT signature."},BadTimeStamp:{code:1,message:"Malformed time stamp."}};function parseTimeStamp(input){function computeSeconds(h,m,s,f){return(
831h|0)*3600+(m|0)*60+(s|0)+(f|0)/1000}
832var m=input.match(/^(\d+):(\d{1,2})(:\d{1,2})?\.(\d{3})/);if(!m){return null}
833if(m[3]){return computeSeconds(m[1],m[2],m[3].replace(":",""),m[4])}else if(m[1]>59){return computeSeconds(m[1],m[2],0,m[4])}else{return computeSeconds(0,m[1],m[2],m[4])}}
834function Settings(){this.values=_objCreate(null)}
835Settings.prototype={set:function set(k,v){if(!this.get(k)&&v!==""){this.values[k]=v}},get:function get(k,dflt,defaultKey){if(defaultKey){return this.has(k)?this.values[k]:dflt[defaultKey]}
836return this.has(k)?this.values[k]:dflt},has:function has(k){return k in this.values},alt:function alt(k,v,a){for(var n=0;n<a.length;++n){if(v===a[n]){this.set(k,v);break}}},integer:function integer(k,v){if(/^-?\d+$/.test(v)){this.set(k,parseInt(v,10))}},percent:function percent(k,v){var m;if(m=v.match(/^([\d]{1,3})(\.[\d]*)?%$/)){v=parseFloat(v);if(v>=0&&v<=100){this.set(k,v);return!0}}
837return!1}};function parseOptions(input,callback,keyValueDelim,groupDelim){var groups=groupDelim?input.split(groupDelim):[input];for(var i in groups){if(typeof groups[i]!=="string"){continue}
838var kv=groups[i].split(keyValueDelim);if(kv.length!==2){continue}
839var k=kv[0];var v=kv[1];callback(k,v)}}
840function parseCue(input,cue,regionList){var oInput=input;function consumeTimeStamp(){var ts=parseTimeStamp(input);if(ts===null){throw new ParsingError(ParsingError.Errors.BadTimeStamp,"Malformed timestamp: "+oInput)}
841input=input.replace(/^[^\sa-zA-Z-]+/,"");return ts}
842function consumeCueSettings(input,cue){var settings=new Settings();parseOptions(input,function(k,v){switch(k){case "region":for(var i=regionList.length-1;i>=0;i--){if(regionList[i].id===v){settings.set(k,regionList[i].region);break}}
843break;case "vertical":settings.alt(k,v,["rl","lr"]);break;case "line":var vals=v.split(","),vals0=vals[0];settings.integer(k,vals0);settings.percent(k,vals0)?settings.set("snapToLines",!1):null;settings.alt(k,vals0,["auto"]);if(vals.length===2){settings.alt("lineAlign",vals[1],["start","center","end"])}
844break;case "position":vals=v.split(",");settings.percent(k,vals[0]);if(vals.length===2){settings.alt("positionAlign",vals[1],["start","center","end"])}
845break;case "size":settings.percent(k,v);break;case "align":settings.alt(k,v,["start","center","end","left","right"]);break}},/:/,/\s/);cue.region=settings.get("region",null);cue.vertical=settings.get("vertical","");try{cue.line=settings.get("line","auto")}catch(e){}
846cue.lineAlign=settings.get("lineAlign","start");cue.snapToLines=settings.get("snapToLines",!0);cue.size=settings.get("size",100);try{cue.align=settings.get("align","center")}catch(e){cue.align=settings.get("align","middle")}
847try{cue.position=settings.get("position","auto")}catch(e){cue.position=settings.get("position",{start:0,left:0,center:50,middle:50,end:100,right:100},cue.align)}
848cue.positionAlign=settings.get("positionAlign",{start:"start",left:"start",center:"center",middle:"center",end:"end",right:"end"},cue.align)}
849function skipWhitespace(){input=input.replace(/^\s+/,"")}
850skipWhitespace();cue.startTime=consumeTimeStamp();skipWhitespace();if(input.substr(0,3)!=="-->"){throw new ParsingError(ParsingError.Errors.BadTimeStamp,"Malformed time stamp (time stamps must be separated by '-->'): "+oInput)}
851input=input.substr(3);skipWhitespace();cue.endTime=consumeTimeStamp();skipWhitespace();consumeCueSettings(input,cue)}
852var TEXTAREA_ELEMENT=document.createElement("textarea");var TAG_NAME={c:"span",i:"i",b:"b",u:"u",ruby:"ruby",rt:"rt",v:"span",lang:"span"};var DEFAULT_COLOR_CLASS={white:'rgba(255,255,255,1)',lime:'rgba(0,255,0,1)',cyan:'rgba(0,255,255,1)',red:'rgba(255,0,0,1)',yellow:'rgba(255,255,0,1)',magenta:'rgba(255,0,255,1)',blue:'rgba(0,0,255,1)',black:'rgba(0,0,0,1)'};var TAG_ANNOTATION={v:"title",lang:"lang"};var NEEDS_PARENT={rt:"ruby"};function parseContent(window,input){function nextToken(){if(!input){return null}
853function consume(result){input=input.substr(result.length);return result}
854var m=input.match(/^([^<]*)(<[^>]*>?)?/);return consume(m[1]?m[1]:m[2])}
855function unescape(s){TEXTAREA_ELEMENT.innerHTML=s;s=TEXTAREA_ELEMENT.textContent;TEXTAREA_ELEMENT.textContent="";return s}
856function shouldAdd(current,element){return!NEEDS_PARENT[element.localName]||NEEDS_PARENT[element.localName]===current.localName}
857function createElement(type,annotation){var tagName=TAG_NAME[type];if(!tagName){return null}
858var element=window.document.createElement(tagName);var name=TAG_ANNOTATION[type];if(name&&annotation){element[name]=annotation.trim()}
859return element}
860var rootDiv=window.document.createElement("div"),current=rootDiv,t,tagStack=[];while((t=nextToken())!==null){if(t[0]==='<'){if(t[1]==="/"){if(tagStack.length&&tagStack[tagStack.length-1]===t.substr(2).replace(">","")){tagStack.pop();current=current.parentNode}
861continue}
862var ts=parseTimeStamp(t.substr(1,t.length-2));var node;if(ts){node=window.document.createProcessingInstruction("timestamp",ts);current.appendChild(node);continue}
863var m=t.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/);if(!m){continue}
864node=createElement(m[1],m[3]);if(!node){continue}
865if(!shouldAdd(current,node)){continue}
866if(m[2]){var classes=m[2].split('.');
866classes.forEach(function(cl){var bgColor=/^bg_/.test(cl);var colorName=bgColor?cl.slice(3):cl;if(DEFAULT_COLOR_CLASS.hasOwnProperty(colorName)){var propName=bgColor?'background-color':'color';var propValue=DEFAULT_COLOR_CLASS[colorName];node.style[propName]=propValue}});node.className=classes.join(' ')}
867tagStack.push(m[1]);current.appendChild(node);current=node;continue}
868current.appendChild(window.document.createTextNode(unescape(t)))}
869return rootDiv}
870var strongRTLRanges=[[0x5be,0x5be],[0x5c0,0x5c0],[0x5c3,0x5c3],[0x5c6,0x5c6],[0x5d0,0x5ea],[0x5f0,0x5f4],[0x608,0x608],[0x60b,0x60b],[0x60d,0x60d],[0x61b,0x61b],[0x61e,0x64a],[0x66d,0x66f],[0x671,0x6d5],[0x6e5,0x6e6],[0x6ee,0x6ef],[0x6fa,0x70d],[0x70f,0x710],[0x712,0x72f],[0x74d,0x7a5],[0x7b1,0x7b1],[0x7c0,0x7ea],[0x7f4,0x7f5],[0x7fa,0x7fa],[0x800,0x815],[0x81a,0x81a],[0x824,0x824],[0x828,0x828],[0x830,0x83e],[0x840,0x858],[0x85e,0x85e],[0x8a0,0x8a0],[0x8a2,0x8ac],[0x200f,0x200f],[0xfb1d,0xfb1d],[0xfb1f,0xfb28],[0xfb2a,0xfb36],[0xfb38,0xfb3c],[0xfb3e,0xfb3e],[0xfb40,0xfb41],[0xfb43,0xfb44],[0xfb46,0xfbc1],[0xfbd3,0xfd3d],[0xfd50,0xfd8f],[0xfd92,0xfdc7],[0xfdf0,0xfdfc],[0xfe70,0xfe74],[0xfe76,0xfefc],[0x10800,0x10805],[0x10808,0x10808],[0x1080a,0x10835],[0x10837,0x10838],[0x1083c,0x1083c],[0x1083f,0x10855],[0x10857,0x1085f],[0x10900,0x1091b],[0x10920,0x10939],[0x1093f,0x1093f],[0x10980,0x109b7],[0x109be,0x109bf],[0x10a00,0x10a00],[0x10a10,0x10a13],[0x10a15,0x10a17],[0x10a19,0x10a33],[0x10a40,0x10a47],[0x10a50,0x10a58],[0x10a60,0x10a7f],[0x10b00,0x10b35],[0x10b40,0x10b55],[0x10b58,0x10b72],[0x10b78,0x10b7f],[0x10c00,0x10c48],[0x1ee00,0x1ee03],[0x1ee05,0x1ee1f],[0x1ee21,0x1ee22],[0x1ee24,0x1ee24],[0x1ee27,0x1ee27],[0x1ee29,0x1ee32],[0x1ee34,0x1ee37],[0x1ee39,0
870x1ee39],[0x1ee3b,0x1ee3b],[0x1ee42,0x1ee42],[0x1ee47,0x1ee47],[0x1ee49,0x1ee49],[0x1ee4b,0x1ee4b],[0x1ee4d,0x1ee4f],[0x1ee51,0x1ee52],[0x1ee54,0x1ee54],[0x1ee57,0x1ee57],[0x1ee59,0x1ee59],[0x1ee5b,0x1ee5b],[0x1ee5d,0x1ee5d],[0x1ee5f,0x1ee5f],[0x1ee61,0x1ee62],[0x1ee64,0x1ee64],[0x1ee67,0x1ee6a],[0x1ee6c,0x1ee72],[0x1ee74,0x1ee77],[0x1ee79,0x1ee7c],[0x1ee7e,0x1ee7e],[0x1ee80,0x1ee89],[0x1ee8b,0x1ee9b],[0x1eea1,0x1eea3],[0x1eea5,0x1eea9],[0x1eeab,0x1eebb],[0x10fffd,0x10fffd]];function isStrongRTLChar(charCode){for(var i=0;i<strongRTLRanges.length;i++){var currentRange=strongRTLRanges[i];if(charCode>=currentRange[0]&&charCode<=currentRange[1]){return!0}}
871return!1}
872function determineBidi(cueDiv){var nodeStack=[],text="",charCode;if(!cueDiv||!cueDiv.childNodes){return"ltr"}
873function pushNodes(nodeStack,node){for(var i=node.childNodes.length-1;i>=0;i--){nodeStack.push(node.childNodes[i])}}
874function nextTextNode(nodeStack){if(!nodeStack||!nodeStack.length){return null}
875var node=nodeStack.pop(),text=node.textContent||node.innerText;if(text){var m=text.match(/^.*(\n|\r)/);if(m){nodeStack.length=0;return m[0]}
876return text}
877if(node.tagName==="ruby"){return nextTextNode(nodeStack)}
878if(node.childNodes){pushNodes(nodeStack,node);return nextTextNode(nodeStack)}}
879pushNodes(nodeStack,cueDiv);while(text=nextTextNode(nodeStack)){for(var i=0;i<text.length;i++){charCode=text.charCodeAt(i);if(isStrongRTLChar(charCode)){return"rtl"}}}
880return"ltr"}
881function computeLinePos(cue){if(typeof cue.line==="number"&&(cue.snapToLines||cue.line>=0&&cue.line<=100)){return cue.line}
882if(!cue.track||!cue.track.textTrackList||!cue.track.textTrackList.mediaElement){return-1}
883var track=cue.track,trackList=track.textTrackList,count=0;for(var i=0;i<trackList.length&&trackList[i]!==track;i++){if(trackList[i].mode==="showing"){count++}}
884return++count*-1}
885function StyleBox(){}
886StyleBox.prototype.applyStyles=function(styles,div){div=div||this.div;for(var prop in styles){if(styles.hasOwnProperty(prop)){div.style[prop]=styles[prop]}}};StyleBox.prototype.formatStyle=function(val,unit){return val===0?0:val+unit};function CueStyleBox(window,cue,styleOptions){StyleBox.call(this);this.cue=cue;this.cueDiv=parseContent(window,cue.text);var styles={color:"rgba(255, 255, 255, 1)",backgroundColor:"rgba(0, 0, 0, 0.8)",position:"relative",left:0,right:0,top:0,bottom:0,display:"inline",writingMode:cue.vertical===""?"horizontal-tb":cue.vertical==="lr"?"vertical-lr":"vertical-rl",unicodeBidi:"plaintext"};this.applyStyles(styles,this.cueDiv);this.div=window.document.createElement("div");styles={direction:determineBidi(this.cueDiv),writingMode:cue.vertical===""?"horizontal-tb":cue.vertical==="lr"?"vertical-lr":"vertical-rl",unicodeBidi:"plaintext",textAlign:cue.align==="middle"?"center":cue.align,font:styleOptions.font,whiteSpace:"pre-line",position:"absolute"};this.applyStyles(styles);this.div.appendChild(this.cueDiv);var textPos=0;switch(cue.positionAlign){case "start":textPos=cue.position;break;case "center":textPos=cue.position-cue.size/2;break;case "end":textPos=cue.position-cue.size;break}
887if(cue.vertical===""){this.applyStyles({left:this.formatStyle(textPos,"%"),width:this.formatStyle(cue.size,"%")})}else{this.applyStyles({top:this.formatStyle(textPos,"%"),height:this.formatStyle(cue.size,"%")})}
888this.move=function(box){this.applyStyles({top:this.formatStyle(box.top,"px"),bottom:this.formatStyle(box.bottom,"px"),left:this.formatStyle(box.left,"px"),right:this.formatStyle(box.right,"px"),height:this.formatStyle(box.height,"px"),width:this.formatStyle(box.width,"px")})}}
889CueStyleBox.prototype=_objCreate(StyleBox.prototype);CueStyleBox.prototype.constructor=CueStyleBox;function BoxPosition(obj){var lh,height,width,top;if(obj.div){height=obj.div.offsetHeight;width=obj.div.offsetWidth;top=obj.div.offsetTop;var rects=(rects=obj.div.childNodes)&&(rects=rects[0])&&rects.getClientRects&&rects.getClientRects();obj=obj.div.getBoundingClientRect();lh=rects?Math.max(rects[0]&&rects[0].height||0,obj.height/rects.length):0}
890this.left=obj.left;this.right=obj.right;this.top=obj.top||top;this.height=obj.height||height;this.bottom=obj.bottom||top+(obj.height||height);this.width=obj.width||width;this.lineHeight=lh!==undefined?lh:obj.lineHeight}
891BoxPosition.prototype.move=function(axis,toMove){toMove=toMove!==undefined?toMove:this.lineHeight;
891switch(axis){case "+x":this.left+=toMove;this.right+=toMove;break;case "-x":this.left-=toMove;this.right-=toMove;break;case "+y":this.top+=toMove;this.bottom+=toMove;break;case "-y":this.top-=toMove;this.bottom-=toMove;break}};BoxPosition.prototype.overlaps=function(b2){return this.left<b2.right&&this.right>b2.left&&this.top<b2.bottom&&this.bottom>b2.top};BoxPosition.prototype.overlapsAny=function(boxes){for(var i=0;i<boxes.length;i++){if(this.overlaps(boxes[i])){return!0}}
892return!1};BoxPosition.prototype.within=function(container){return this.top>=container.top&&this.bottom<=container.bottom&&this.left>=container.left&&this.right<=container.right};BoxPosition.prototype.overlapsOppositeAxis=function(container,axis){switch(axis){case "+x":return this.left<container.left;case "-x":return this.right>container.right;case "+y":return this.top<container.top;case "-y":return this.bottom>container.bottom}};BoxPosition.prototype.intersectPercentage=function(b2){var x=Math.max(0,Math.min(this.right,b2.right)-Math.max(this.left,b2.left)),y=Math.max(0,Math.min(this.bottom,b2.bottom)-Math.max(this.top,b2.top)),intersectArea=x*y;return intersectArea/(this.height*this.width)};BoxPosition.prototype.toCSSCompatValues=function(reference){return{top:this.top-reference.top,bottom:reference.bottom-this.bottom,left:this.left-reference.left,right:reference.right-this.right,height:this.height,width:this.width}};BoxPosition.getSimpleBoxPosition=function(obj){var height=obj.div?obj.div.offsetHeight:obj.tagName?obj.offsetHeight:0;var width=obj.div?obj.div.offsetWidth:obj.tagName?obj.offsetWidth:0;var top=obj.div?obj.div.offsetTop:obj.tagName?obj.offsetTop:0;obj=obj.div?obj.div.getBoundingClientRect():obj.tagName?obj.getBoundingClientRect():obj;var ret={left:obj.left,right:obj.right,top:obj.top||top,height:obj.height||height,bottom:obj.bottom||top+(obj.height||height),width:obj.width||width};return ret};function moveBoxToLinePosition(window,styleBox,containerBox,boxPositions){function findBestPosition(b,axis){var bestPosition,specifiedPosition=new BoxPosition(b),percentage=1;for(var i=0;i<axis.length;i++){while(b.overlapsOppositeAxis(containerBox,axis[i])||b.within(containerBox)&&b.overlapsAny(boxPositions)){b.move(axis[i])}
893if(b.within(containerBox)){return b}
894var p=b.intersectPercentage(containerBox);if(percentage>p){bestPosition=new BoxPosition(b);percentage=p}
895b=new BoxPosition(specifiedPosition)}
896return bestPosition||specifiedPosition}
897var boxPosition=new BoxPosition(styleBox),cue=styleBox.cue,linePos=computeLinePos(cue),axis=[];if(cue.snapToLines){var size;switch(cue.vertical){case "":axis=["+y","-y"];size="height";break;case "rl":axis=["+x","-x"];size="width";break;case "lr":axis=["-x","+x"];size="width";break}
898var step=boxPosition.lineHeight,position=step*Math.round(linePos),maxPosition=containerBox[size]+step,initialAxis=axis[0];if(Math.abs(position)>maxPosition){position=position<0?-1:1;position*=Math.ceil(maxPosition/step)*step}
899if(linePos<0){position+=cue.vertical===""?containerBox.height:containerBox.width;axis=axis.reverse()}
900boxPosition.move(initialAxis,position)}else{var calculatedPercentage=boxPosition.lineHeight/containerBox.height*100;switch(cue.lineAlign){case "center":linePos-=calculatedPercentage/2;break;case "end":linePos-=calculatedPercentage;break}
901switch(cue.vertical){case "":styleBox.applyStyles({top:styleBox.formatStyle(linePos,"%")});break;case "rl":styleBox.applyStyles({left:styleBox.formatStyle(linePos,"%")});break;case "lr":styleBox.applyStyles({right:styleBox.formatStyle(linePos,"%")});break}
902axis=["+y","-x","+x","-y"];boxPosition=new BoxPosition(styleBox)}
903var bestPosition=findBestPosition(boxPosition,axis);styleBox.move(bestPosition.toCSSCompatValues(containerBox))}
904function WebVTT$1(){}
905WebVTT$1.StringDecoder=function(){return{decode:function decode(data){if(!data){return""}
906if(typeof data!=="string"){throw new Error("Error - expected string data.")}
907return decodeURIComponent(encodeURIComponent(data))}}};WebVTT$1.convertCueToDOMTree=function(window,cuetext){if(!window||!cuetext){return null}
908return parseContent(window,cuetext)};var FONT_SIZE_PERCENT=0.05;var FONT_STYLE="sans-serif";var CUE_BACKGROUND_PADDING="1.5%";WebVTT$1.processCues=function(window,cues,overlay){if(!window||!cues||!overlay){return null}
909while(overlay.firstChild){overlay.removeChild(overlay.firstChild)}
910var paddedOverlay=window.document.createElement("div");paddedOverlay.style.position="absolute";paddedOverlay.style.left="0";paddedOverlay.style.right="0";paddedOverlay.style.top="0";paddedOverlay.style.bottom="0";paddedOverlay.style.margin=CUE_BACKGROUND_PADDING;overlay.appendChild(paddedOverlay);function shouldCompute(cues){for(var i=0;i<cues.length;i++){if(cues[i].hasBeenReset||!cues[i].displayState){return!0}}
911return!1}
912if(!shouldCompute(cues)){for(var i=0;i<cues.length;i++){paddedOverlay.appendChild(cues[i].displayState)}
913return}
914var boxPositions=[],containerBox=BoxPosition.getSimpleBoxPosition(paddedOverlay),fontSize=Math.round(containerBox.height*FONT_SIZE_PERCENT*100)/100;var styleOptions={font:fontSize+"px "+FONT_STYLE};(function(){var styleBox,cue;for(var i=0;i<cues.length;i++){cue=cues[i];styleBox=new CueStyleBox(window,cue,styleOptions);paddedOverlay.appendChild(styleBox.div);moveBoxToLinePosition(window,styleBox,containerBox,boxPositions);cue.displayState=styleBox.div;boxPositions.push(BoxPosition.getSimpleBoxPosition(styleBox))}})()};WebVTT$1.Parser=function(window,vttjs,decoder){if(!decoder){decoder=vttjs;vttjs={}}
915if(!vttjs){vttjs={}}
916this.window=window;this.vttjs=vttjs;this.state="INITIAL";this.buffer="";this.decoder=decoder||new TextDecoder("utf8");this.regionList=[]};WebVTT$1.Parser.prototype={reportOrThrowError:function reportOrThrowError(e){if(e instanceof ParsingError){this.onparsingerror&&this.onparsingerror(e)}else{throw e}},parse:function parse(data){var self=this;if(data){self.buffer+=self.decoder.decode(data,{stream:!0})}
917function collectNextLine(){var buffer=self.buffer;var pos=0;while(pos<buffer.length&&buffer[pos]!=='\r'&&buffer[pos]!=='\n'){++pos}
918var line=buffer.substr(0,pos);if(buffer[pos]==='\r'){++pos}
919if(buffer[pos]==='\n'){++pos}
920self.buffer=buffer.substr(pos);return line}
921function parseRegion(input){var settings=new Settings();parseOptions(input,function(k,v){switch(k){case "id":settings.set(k,v);break;case "width":settings.percent(k,v);break;case "lines":settings.integer(k,v);break;case "regionanchor":case "viewportanchor":var xy=v.split(',');if(xy.length!==2){break}
922var anchor=new Settings();anchor.percent("x",xy[0]);anchor.percent("y",xy[1]);if(!anchor.has("x")||!anchor.has("y")){break}
923settings.set(k+"X",anchor.get("x"));settings.set(k+"Y",anchor.get("y"));break;case "scroll":settings.alt(k,v,["up"]);break}},/=/,/\s/);if(settings.has("id")){var region=new(self.vttjs.VTTRegion||self.window.VTTRegion)();region.width=settings.get("width",100);region.lines=settings.get("lines",3);region.regionAnchorX=settings.get("regionanchorX",0);region.regionAnchorY=settings.get("regionanchorY",100);region.viewportAnchorX=settings.get("viewportanchorX",0);region.viewportAnchorY=settings.get("viewportanchorY",100);region.scroll=settings.get("scroll","");self.onregion&&self.onregion(region);self.regionList.push({id:settings.get("id"),region:region})}}
924function parseTimestampMap(input){var settings=new Settings();parseOptions(input,function(k,v){switch(k){case "MPEGT":settings.integer(k+'S',v);break;case "LOCA":settings.set(k+'L',parseTimeStamp(v));break}},/[^\d]:/,/,/);self.ontimestampmap&&self.ontimestampmap({"MPEGTS":settings.get("MPEGTS"),"LOCAL":settings.get("LOCAL")})}
925function parseHeader(input){if(input.match(/X-TIMESTAMP-MAP/)){parseOptions(input,function(k,v){switch(k){case "X-TIMESTAMP-MAP":parseTimestampMap(v);break}},/=/)}else{parseOptions(input,function(k,v){switch(k){case "Region":parseRegion(v);break}},/:/)}}
926try{var line;if(self.state==="INITIAL"){if(!/\r\n|\n/.test(self.buffer)){return this}
927line=collectNextLine();var m=line.match(/^WEBVTT([ \t].*)?$/);if(!m||!m[0]){throw new ParsingError(ParsingError.Errors.BadSignature)}
928self.state="HEADER"}
929var alreadyCollectedLine=!1;while(self.buffer){if(!/\r\n|\n/.test(self.buffer)){return this}
930if(!alreadyCollectedLine){line=collectNextLine()}else{alreadyCollectedLine=!1}
931switch(self.state){case "HEADER":if(/:/.test(line)){parseHeader(line)}else if(!line){self.state="ID"}
932continue;case "NOTE":if(!line){self.state="ID"}
933continue;case "ID":if(/^NOTE($|[ \t])/.test(line)){self.state="NOTE";break}
934if(!line){continue}
935self.cue=new(self.vttjs.VTTCue||self.window.VTTCue)(0,0,"");try{self.cue.align="center"}catch(e){self.cue.align="middle"}
936self.state="CUE";if(line.indexOf("-->")===-1){self.cue.id=line;continue}
937case "CUE":try{parseCue(line,self.cue,self.regionList)}catch(e){self.reportOrThrowError(e);self.cue=null;self.state="BADCUE";continue}
938self.state="CUETEXT";continue;case "CUETEXT":var hasSubstring=line.indexOf("-->")!==-1;if(!line||hasSubstring&&(alreadyCollectedLine=!0)){self.oncue&&self.oncue(self.cue);self.cue=null;self.state="ID";continue}
939if(self.cue.text){self.cue.text+="\n"}
940self.cue.text+=line.replace(/\u2028/g,'\n').replace(/u2029/g,'\n');continue;case "BADCUE":if(!line){self.state="ID"}
941continue}}}catch(e){self.reportOrThrowError(e);if(self.state==="CUETEXT"&&self.cue&&self.oncue){self.oncue(self.cue)}
942self.cue=null;self.state=self.state==="INITIAL"?"BADWEBVTT":"BADCUE"}
943return this},flush:function flush(){var self=this;try{self.buffer+=self.decoder.decode();if(self.cue||self.state==="HEADER"){self.buffer+="\n\n";self.parse()}
944if(self.state==="INITIAL"){throw new ParsingError(ParsingError.Errors.BadSignature)}}catch(e){self.reportOrThrowError(e)}
945self.onflush&&self.onflush();return this}};var vtt=WebVTT$1;var autoKeyword="auto";var directionSetting={"":1,"lr":1,"rl":1};
945var alignSetting={"start":1,"center":1,"end":1,"left":1,"right":1,"auto":1,"line-left":1,"line-right":1};function findDirectionSetting(value){if(typeof value!=="string"){return!1}
946var dir=directionSetting[value.toLowerCase()];return dir?value.toLowerCase():!1}
947function findAlignSetting(value){if(typeof value!=="string"){return!1}
948var align=alignSetting[value.toLowerCase()];return align?value.toLowerCase():!1}
949function VTTCue(startTime,endTime,text){this.hasBeenReset=!1;var _id="";var _pauseOnExit=!1;var _startTime=startTime;var _endTime=endTime;var _text=text;var _region=null;var _vertical="";var _snapToLines=!0;var _line="auto";var _lineAlign="start";var _position="auto";var _positionAlign="auto";var _size=100;var _align="center";Object.defineProperties(this,{"id":{enumerable:!0,get:function get(){return _id},set:function set(value){_id=""+value}},"pauseOnExit":{enumerable:!0,get:function get(){return _pauseOnExit},set:function set(value){_pauseOnExit=!!value}},"startTime":{enumerable:!0,get:function get(){return _startTime},set:function set(value){if(typeof value!=="number"){throw new TypeError("Start time must be set to a number.")}
950_startTime=value;this.hasBeenReset=!0}},"endTime":{enumerable:!0,get:function get(){return _endTime},set:function set(value){if(typeof value!=="number"){throw new TypeError("End time must be set to a number.")}
951_endTime=value;this.hasBeenReset=!0}},"text":{enumerable:!0,get:function get(){return _text},set:function set(value){_text=""+value;this.hasBeenReset=!0}},"region":{enumerable:!0,get:function get(){return _region},set:function set(value){_region=value;this.hasBeenReset=!0}},"vertical":{enumerable:!0,get:function get(){return _vertical},set:function set(value){var setting=findDirectionSetting(value);if(setting===!1){throw new SyntaxError("Vertical: an invalid or illegal direction string was specified.")}
952_vertical=setting;this.hasBeenReset=!0}},"snapToLines":{enumerable:!0,get:function get(){return _snapToLines},set:function set(value){_snapToLines=!!value;this.hasBeenReset=!0}},"line":{enumerable:!0,get:function get(){return _line},set:function set(value){if(typeof value!=="number"&&value!==autoKeyword){throw new SyntaxError("Line: an invalid number or illegal string was specified.")}
953_line=value;this.hasBeenReset=!0}},"lineAlign":{enumerable:!0,get:function get(){return _lineAlign},set:function set(value){var setting=findAlignSetting(value);if(!setting){console.warn("lineAlign: an invalid or illegal string was specified.")}else{_lineAlign=setting;this.hasBeenReset=!0}}},"position":{enumerable:!0,get:function get(){return _position},set:function set(value){if(value<0||value>100){throw new Error("Position must be between 0 and 100.")}
954_position=value;this.hasBeenReset=!0}},"positionAlign":{enumerable:!0,get:function get(){return _positionAlign},set:function set(value){var setting=findAlignSetting(value);if(!setting){console.warn("positionAlign: an invalid or illegal string was specified.")}else{_positionAlign=setting;this.hasBeenReset=!0}}},"size":{enumerable:!0,get:function get(){return _size},set:function set(value){if(value<0||value>100){throw new Error("Size must be between 0 and 100.")}
955_size=value;this.hasBeenReset=!0}},"align":{enumerable:!0,get:function get(){return _align},set:function set(value){var setting=findAlignSetting(value);if(!setting){throw new SyntaxError("align: an invalid or illegal alignment string was specified.")}
956_align=setting;this.hasBeenReset=!0}}});this.displayState=undefined}
957VTTCue.prototype.getCueAsHTML=function(){return WebVTT.convertCueToDOMTree(window,this.text)};var vttcue=VTTCue;var scrollSetting={"":!0,"up":!0};function findScrollSetting(value){if(typeof value!=="string"){return!1}
958var scroll=scrollSetting[value.toLowerCase()];return scroll?value.toLowerCase():!1}
959function isValidPercentValue(value){return typeof value==="number"&&value>=0&&value<=100}
960function VTTRegion(){var _width=100;var _lines=3;var _regionAnchorX=0;var _regionAnchorY=100;var _viewportAnchorX=0;var _viewportAnchorY=100;var _scroll="";Object.defineProperties(this,{"width":{enumerable:!0,get:function get(){return _width}
960,set:function set(value){if(!isValidPercentValue(value)){throw new Error("Width must be between 0 and 100.")}
961_width=value}},"lines":{enumerable:!0,get:function get(){return _lines},set:function set(value){if(typeof value!=="number"){throw new TypeError("Lines must be set to a number.")}
962_lines=value}},"regionAnchorY":{enumerable:!0,get:function get(){return _regionAnchorY},set:function set(value){if(!isValidPercentValue(value)){throw new Error("RegionAnchorX must be between 0 and 100.")}
963_regionAnchorY=value}},"regionAnchorX":{enumerable:!0,get:function get(){return _regionAnchorX},set:function set(value){if(!isValidPercentValue(value)){throw new Error("RegionAnchorY must be between 0 and 100.")}
964_regionAnchorX=value}},"viewportAnchorY":{enumerable:!0,get:function get(){return _viewportAnchorY},set:function set(value){if(!isValidPercentValue(value)){throw new Error("ViewportAnchorY must be between 0 and 100.")}
965_viewportAnchorY=value}},"viewportAnchorX":{enumerable:!0,get:function get(){return _viewportAnchorX},set:function set(value){if(!isValidPercentValue(value)){throw new Error("ViewportAnchorX must be between 0 and 100.")}
966_viewportAnchorX=value}},"scroll":{enumerable:!0,get:function get(){return _scroll},set:function set(value){var setting=findScrollSetting(value);if(setting===!1){console.warn("Scroll: an invalid or illegal string was specified.")}else{_scroll=setting}}}})}
967var vttregion=VTTRegion;var browserIndex=createCommonjsModule(function(module){var vttjs=module.exports={WebVTT:vtt,VTTCue:vttcue,VTTRegion:vttregion};window$1.vttjs=vttjs;window$1.WebVTT=vttjs.WebVTT;var cueShim=vttjs.VTTCue;var regionShim=vttjs.VTTRegion;var nativeVTTCue=window$1.VTTCue;var nativeVTTRegion=window$1.VTTRegion;vttjs.shim=function(){window$1.VTTCue=cueShim;window$1.VTTRegion=regionShim};vttjs.restore=function(){window$1.VTTCue=nativeVTTCue;window$1.VTTRegion=nativeVTTRegion};if(!window$1.VTTCue){vttjs.shim()}});var browserIndex_1=browserIndex.WebVTT;var browserIndex_2=browserIndex.VTTCue;var browserIndex_3=browserIndex.VTTRegion;function createTrackHelper(self,kind,label,language,options){if(options===void 0){options={}}
968var tracks=self.textTracks();options.kind=kind;if(label){options.label=label}
969if(language){options.language=language}
970options.tech=self;var track=new ALL.text.TrackClass(options);tracks.addTrack(track);return track}
971var Tech=function(_Component){inheritsLoose(Tech,_Component);function Tech(options,ready){var _this;if(options===void 0){options={}}
972if(ready===void 0){ready=function ready(){}}
973options.reportTouchActivity=!1;_this=_Component.call(this,null,options,ready)||this;_this.hasStarted_=!1;_this.on('playing',function(){this.hasStarted_=!0});_this.on('loadstart',function(){this.hasStarted_=!1});ALL.names.forEach(function(name){var props=ALL[name];if(options&&options[props.getterName]){_this[props.privateName]=options[props.getterName]}});if(!_this.featuresProgressEvents){_this.manualProgressOn()}
974if(!_this.featuresTimeupdateEvents){_this.manualTimeUpdatesOn()}['Text','Audio','Video'].forEach(function(track){if(options["native"+track+"Tracks"]===!1){_this["featuresNative"+track+"Tracks"]=!1}});if(options.nativeCaptions===!1||options.nativeTextTracks===!1){_this.featuresNativeTextTracks=!1}else if(options.nativeCaptions===!0||options.nativeTextTracks===!0){_this.featuresNativeTextTracks=!0}
975if(!_this.featuresNativeTextTracks){_this.emulateTextTracks()}
976_this.preloadTextTracks=options.preloadTextTracks!==!1;_this.autoRemoteTextTracks_=new ALL.text.ListClass();_this.initTrackListeners();if(!options.nativeControlsForTouch){_this.emitTapEvents()}
977if(_this.constructor){_this.name_=_this.constructor.name||'Unknown Tech'}
978return _this}
979var _proto=Tech.prototype;_proto.triggerSourceset=function triggerSourceset(src){var _this2=this;if(!this.isReady_){this.one('ready',function(){return _this2.setTimeout(function(){return _this2.triggerSourceset(src)},1)})}
980this.trigger({src:src,type:'sourceset'})};_proto.manualProgressOn=function manualProgressOn(){this.on('durationchange',this.onDurationChange);this.manualProgress=!0;this.one('ready',this.trackProgress)};_proto.manualProgressOff=function manualProgressOff(){this.manualProgress=!1;this.stopTrackingProgress();this.off('durationchange',this.onDurationChange)};_proto.trackProgress=function trackProgress(event){this.stopTrackingProgress();this.progressInterval=this.setInterval(bind(this,function(){var numBufferedPercent=this.bufferedPercent();if(this.bufferedPercent_!==numBufferedPercent){this.trigger('progress')}
981this.bufferedPercent_=numBufferedPercent;if(numBufferedPercent===1){this.stopTrackingProgress()}}),500)};_proto.onDurationChange=function onDurationChange(event){this.duration_=this.duration()};_proto.buffered=function buffered(){return createTimeRanges(0,0)};_proto.bufferedPercent=function bufferedPercent$1(){return bufferedPercent(this.buffered(),this.duration_)};_proto.stopTrackingProgress=function stopTrackingProgress(){this.clearInterval(this.progressInterval)};_proto.manualTimeUpdatesOn=function manualTimeUpdatesOn(){this.manualTimeUpdates=!0;this.on('play',this.trackCurrentTime);this.on('pause',this.stopTrackingCurrentTime)};_proto.manualTimeUpdatesOff=function manualTimeUpdatesOff(){this.manualTimeUpdates=!1;this.stopTrackingCurrentTime();this.off('play',this.trackCurrentTime);this.off('pause',this.stopTrackingCurrentTime)};_proto.trackCurrentTime=function trackCurrentTime(){if(this.currentTimeInterval){this.stopTrackingCurrentTime()}
982this.currentTimeInterval=this.setInterval(function(){this.trigger({type:'timeupdate',target:this,manuallyTriggered:!0})},250)};_proto.stopTrackingCurrentTime=function stopTrackingCurrentTime(){this.clearInterval(this.currentTimeInterval);this.trigger({type:'timeupdate',target:this,manuallyTriggered:!0})};_proto.dispose=function dispose(){this.clearTracks(NORMAL.names);if(this.manualProgress){this.manualProgressOff()}
983if(this.manualTimeUpdates){this.manualTimeUpdatesOff()}
984_Component.prototype.dispose.call(this)};_proto.clearTracks=function clearTracks(types){var _this3=this;types=[].concat(types);
984types.forEach(function(type){var list=_this3[type+"Tracks"]()||[];var i=list.length;while(i--){var track=list[i];if(type==='text'){_this3.removeRemoteTextTrack(track)}
985list.removeTrack(track)}})};_proto.cleanupAutoTextTracks=function cleanupAutoTextTracks(){var list=this.autoRemoteTextTracks_||[];var i=list.length;while(i--){var track=list[i];this.removeRemoteTextTrack(track)}};_proto.reset=function reset(){};_proto.error=function error(err){if(err!==undefined){this.error_=new MediaError(err);this.trigger('error')}
986return this.error_};_proto.played=function played(){if(this.hasStarted_){return createTimeRanges(0,0)}
987return createTimeRanges()};_proto.setCurrentTime=function setCurrentTime(){if(this.manualTimeUpdates){this.trigger({type:'timeupdate',target:this,manuallyTriggered:!0})}};_proto.initTrackListeners=function initTrackListeners(){var _this4=this;NORMAL.names.forEach(function(name){var props=NORMAL[name];var trackListChanges=function trackListChanges(){_this4.trigger(name+"trackchange")};var tracks=_this4[props.getterName]();tracks.addEventListener('removetrack',trackListChanges);tracks.addEventListener('addtrack',trackListChanges);_this4.on('dispose',function(){tracks.removeEventListener('removetrack',trackListChanges);tracks.removeEventListener('addtrack',trackListChanges)})})};_proto.addWebVttScript_=function addWebVttScript_(){var _this5=this;if(window$1.WebVTT){return}
988if(document.body.contains(this.el())){if(!this.options_['vtt.js']&&isPlain(browserIndex)&&Object.keys(browserIndex).length>0){this.trigger('vttjsloaded');return}
989var script=document.createElement('script');script.src=this.options_['vtt.js']||'https://vjs.zencdn.net/vttjs/0.14.1/vtt.min.js';script.onload=function(){_this5.trigger('vttjsloaded')};script.onerror=function(){_this5.trigger('vttjserror')};this.on('dispose',function(){script.onload=null;script.onerror=null});window$1.WebVTT=!0;this.el().parentNode.appendChild(script)}else{this.ready(this.addWebVttScript_)}};_proto.emulateTextTracks=function emulateTextTracks(){var _this6=this;var tracks=this.textTracks();var remoteTracks=this.remoteTextTracks();var handleAddTrack=function handleAddTrack(e){return tracks.addTrack(e.track)};var handleRemoveTrack=function handleRemoveTrack(e){return tracks.removeTrack(e.track)};remoteTracks.on('addtrack',handleAddTrack);remoteTracks.on('removetrack',handleRemoveTrack);this.addWebVttScript_();var updateDisplay=function updateDisplay(){return _this6.trigger('texttrackchange')};var textTracksChanges=function textTracksChanges(){updateDisplay();for(var i=0;i<tracks.length;i++){var track=tracks[i];track.removeEventListener('cuechange',updateDisplay);if(track.mode==='showing'){track.addEventListener('cuechange',updateDisplay)}}};textTracksChanges();tracks.addEventListener('change',textTracksChanges);tracks.addEventListener('addtrack',textTracksChanges);tracks.addEventListener('removetrack',textTracksChanges);this.on('dispose',function(){remoteTracks.off('addtrack',handleAddTrack);remoteTracks.off('removetrack',handleRemoveTrack);tracks.removeEventListener('change',textTracksChanges);tracks.removeEventListener('addtrack',textTracksChanges);tracks.removeEventListener('removetrack',textTracksChanges);for(var i=0;i<tracks.length;i++){var track=tracks[i];track.removeEventListener('cuechange',updateDisplay)}})};_proto.addTextTrack=function addTextTrack(kind,label,language){if(!kind){throw new Error('TextTrack kind is required but was not provided')}
990return createTrackHelper(this,kind,label,language)};_proto.createRemoteTextTrack=function createRemoteTextTrack(options){var track=mergeOptions(options,{tech:this});return new REMOTE.remoteTextEl.TrackClass(track)};_proto.addRemoteTextTrack=function addRemoteTextTrack(options,manualCleanup){var _this7=this;if(options===void 0){options={}}
991var htmlTrackElement=this.createRemoteTextTrack(options);if(manualCleanup!==!0&&manualCleanup!==!1){log.warn('Calling addRemoteTextTrack without explicitly setting the "manualCleanup" parameter to `true` is deprecated and default to `false` in future version of video.js');manualCleanup=!0}
991
992this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);this.remoteTextTracks().addTrack(htmlTrackElement.track);if(manualCleanup!==!0){this.ready(function(){return _this7.autoRemoteTextTracks_.addTrack(htmlTrackElement.track)})}
993return htmlTrackElement};_proto.removeRemoteTextTrack=function removeRemoteTextTrack(track){var trackElement=this.remoteTextTrackEls().getTrackElementByTrack_(track);this.remoteTextTrackEls().removeTrackElement_(trackElement);this.remoteTextTracks().removeTrack(track);this.autoRemoteTextTracks_.removeTrack(track)};_proto.getVideoPlaybackQuality=function getVideoPlaybackQuality(){return{}};_proto.requestPictureInPicture=function requestPictureInPicture(){var PromiseClass=this.options_.Promise||window$1.Promise;if(PromiseClass){return PromiseClass.reject()}};_proto.setPoster=function setPoster(){};_proto.playsinline=function playsinline(){};_proto.setPlaysinline=function setPlaysinline(){};_proto.overrideNativeAudioTracks=function overrideNativeAudioTracks(){};_proto.overrideNativeVideoTracks=function overrideNativeVideoTracks(){};_proto.canPlayType=function canPlayType(){return''};Tech.canPlayType=function canPlayType(){return''};Tech.canPlaySource=function canPlaySource(srcObj,options){return Tech.canPlayType(srcObj.type)};Tech.isTech=function isTech(component){return component.prototype instanceof Tech||component instanceof Tech||component===Tech};Tech.registerTech=function registerTech(name,tech){if(!Tech.techs_){Tech.techs_={}}
994if(!Tech.isTech(tech)){throw new Error("Tech "+name+" must be a Tech")}
995if(!Tech.canPlayType){throw new Error('Techs must have a static canPlayType method on them')}
996if(!Tech.canPlaySource){throw new Error('Techs must have a static canPlaySource method on them')}
997name=toTitleCase(name);Tech.techs_[name]=tech;Tech.techs_[toLowerCase(name)]=tech;if(name!=='Tech'){Tech.defaultTechOrder_.push(name)}
998return tech};Tech.getTech=function getTech(name){if(!name){return}
999if(Tech.techs_&&Tech.techs_[name]){return Tech.techs_[name]}
1000name=toTitleCase(name);if(window$1&&window$1.videojs&&window$1.videojs[name]){log.warn("The "+name+" tech was added to the videojs object when it should be registered using videojs.registerTech(name, tech)");return window$1.videojs[name]}};return Tech}(Component);ALL.names.forEach(function(name){var props=ALL[name];Tech.prototype[props.getterName]=function(){this[props.privateName]=this[props.privateName]||new props.ListClass();return this[props.privateName]}});Tech.prototype.featuresVolumeControl=!0;Tech.prototype.featuresMuteControl=!0;Tech.prototype.featuresFullscreenResize=!1;Tech.prototype.featuresPlaybackRate=!1;Tech.prototype.featuresProgressEvents=!1;Tech.prototype.featuresSourceset=!1;Tech.prototype.featuresTimeupdateEvents=!1;Tech.prototype.featuresNativeTextTracks=!1;Tech.withSourceHandlers=function(_Tech){_Tech.registerSourceHandler=function(handler,index){var handlers=_Tech.sourceHandlers;if(!handlers){handlers=_Tech.sourceHandlers=[]}
1001if(index===undefined){index=handlers.length}
1002handlers.splice(index,0,handler)};_Tech.canPlayType=function(type){var handlers=_Tech.sourceHandlers||[];var can;for(var i=0;i<handlers.length;i++){can=handlers[i].canPlayType(type);if(can){return can}}
1003return''};_Tech.selectSourceHandler=function(source,options){var handlers=_Tech.sourceHandlers||[];var can;for(var i=0;i<handlers.length;i++){can=handlers[i].canHandleSource(source,options);if(can){return handlers[i]}}
1004return null};_Tech.canPlaySource=function(srcObj,options){var sh=_Tech.selectSourceHandler(srcObj,options);if(sh){return sh.canHandleSource(srcObj,options)}
1005return''};var deferrable=['seekable','seeking','duration'];deferrable.forEach(function(fnName){var originalFn=this[fnName];if(typeof originalFn!=='function'){return}
1006this[fnName]=function(){if(this.sourceHandler_&&this.sourceHandler_[fnName]){return this.sourceHandler_[fnName].apply(this.sourceHandler_,arguments)}
1007return originalFn.apply(this,arguments)}},_Tech.prototype);_Tech.prototype.setSource=function(source){var sh=_Tech.selectSourceHandler(source,this.options_);if(!sh){if(_Tech.nativeSourceHandler){sh=_Tech.nativeSourceHandler}else{log.error('No source handler found for the current source.')}}
1008this.disposeSourceHandler();this.off('dispose',this.disposeSourceHandler);if(sh!==_Tech.nativeSourceHandler){this.currentSource_=source}
1009this.sourceHandler_=sh.handleSource(source,this,this.options_);this.one('dispose',this.disposeSourceHandler)};_Tech.prototype.disposeSourceHandler=function(){if(this.currentSource_){this.clearTracks(['audio','video']);this.currentSource_=null}
1010this.cleanupAutoTextTracks();if(this.sourceHandler_){if(this.sourceHandler_.dispose){this.sourceHandler_.dispose()}
1011this.sourceHandler_=null}}};Component.registerComponent('Tech',Tech);Tech.registerTech('Tech',Tech);Tech.defaultTechOrder_=[];var middlewares={};var middlewareInstances={};var TERMINATOR={};function use(type,middleware){middlewares[type]=middlewares[type]||[];middlewares[type].push(middleware)}
1012function setSource(player,src,next){player.setTimeout(function(){return setSourceHelper(src,middlewares[src.type],next,player)},1)}
1013function setTech(middleware,tech){middleware.forEach(function(mw){return mw.setTech&&mw.setTech(tech)})}
1014function get(middleware,tech,method){return middleware.reduceRight(middlewareIterator(method),tech[method]())}
1015function set(middleware,tech,method,arg){return tech[method](middleware.reduce(middlewareIterator(method),arg))}
1016function mediate(middleware,tech,method,arg){if(arg===void 0){arg=null}
1017var callMethod='call'+toTitleCase(method);var middlewareValue=middleware.reduce(middlewareIterator(callMethod),arg);var terminated=middlewareValue===TERMINATOR;var returnValue=terminated?null:tech[method](middlewareValue);executeRight(middleware,method,returnValue,terminated);return returnValue}
1018var allowedGetters={buffered:1,currentTime:1,duration:1,muted:1,played:1,paused:1,seekable:1,volume:1};var allowedSetters={setCurrentTime:1,setMuted:1,setVolume:1};var allowedMediators={play:1,pause:1};function middlewareIterator(method){return function(value,mw){if(value===TERMINATOR){return TERMINATOR}
1019if(mw[method]){return mw[method](value)}
1020return value}}
1021function executeRight(mws,method,value,terminated){for(var i=mws.length-1;i>=0;i--){var mw=mws[i];if(mw[method]){mw[method](terminated,value)}}}
1022function clearCacheForPlayer(player){middlewareInstances[player.id()]=null}
1023function getOrCreateFactory(player,mwFactory){var mws=middlewareInstances[player.id()];var mw=null;if(mws===undefined||mws===null){mw=mwFactory(player);middlewareInstances[player.id()]=[[mwFactory,mw]];return mw}
1024for(var i=0;i<mws.length;i++){var _mws$i=mws[i],mwf=_mws$i[0],mwi=_mws$i[1];if(mwf!==mwFactory){continue}
1025mw=mwi}
1026if(mw===null){mw=mwFactory(player);mws.push([mwFactory,mw])}
1027return mw}
1028function setSourceHelper(src,middleware,next,player,acc,lastRun){if(src===void 0){src={}}
1029if(middleware===void 0){middleware=[]}
1030if(acc===void 0){acc=[]}
1031if(lastRun===void 0){lastRun=!1}
1032var _middleware=middleware,mwFactory=_middleware[0],mwrest=_middleware.slice(1);if(typeof mwFactory==='string'){setSourceHelper(src,middlewares[mwFactory],next,player,acc,lastRun)}else if(mwFactory){var mw=getOrCreateFactory(player,mwFactory);if(!mw.setSource){acc.push(mw);return setSourceHelper(src,mwrest,next,player,acc,lastRun)}
1033mw.setSource(assign({},src),function(err,_src){if(err){return setSourceHelper(src,mwrest,next,player,acc,lastRun)}
1034acc.push(mw);setSourceHelper(_src,src.type===_src.type?mwrest:middlewares[_src.type],next,player,acc,lastRun)})}else if(mwrest.length){setSourceHelper(src,mwrest,next,player,acc,lastRun)}else if(lastRun){next(src,acc)}else{setSourceHelper(src,middlewares['*'],next,player,acc,!0)}}
1035var MimetypesKind={opus:'video/ogg',ogv:'video/ogg',mp4:'video/mp4',mov:'video/mp4',m4v:'video/mp4',mkv:'video/x-matroska',m4a:'audio/mp4',mp3:'audio/mpeg',aac:'audio/aac',oga:'audio/ogg',m3u8:'application/x-mpegURL',jpg:'image/jpeg',jpeg:'image/jpeg',gif:'image/gif',png:'image/png',svg:'image/svg+xml',webp:'image/webp'};var getMimetype=function getMimetype(src){if(src===void 0){src=''}
1036var ext=getFileExtension(src);var mimetype=MimetypesKind[ext.toLowerCase()];return mimetype||''};var findMimetype=function findMimetype(player,src){if(!src){return''}
1037if(player.cache_.source.src===src&&player.cache_.source.type){return player.cache_.source.type}
1038var matchingSources=player.cache_.sources.filter(function(s){return s.src===src});if(matchingSources.length){return matchingSources[0].type}
1039var sources=player.$$('source');for(var i=0;i<sources.length;i++){var s=sources[i];if(s.type&&s.src&&s.src===src){return s.type}}
1040return getMimetype(src)};var filterSource=function filterSource(src){if(Array.isArray(src)){var newsrc=[];src.forEach(function(srcobj){srcobj=filterSource(srcobj);if(Array.isArray(srcobj)){newsrc=newsrc.concat(srcobj)}else if(isObject(srcobj)){newsrc.push(srcobj)}});src=newsrc}else if(typeof src==='string'&&src.trim()){src=[fixSource({src:src})]}else if(isObject(src)&&typeof src.src==='string'&&src.src&&src.src.trim()){src=[fixSource(src)]}else{src=[]}
1041return src};function fixSource(src){if(!src.type){var mimetype=getMimetype(src.src);if(mimetype){src.type=mimetype}}
1042return src}
1043var MediaLoader=function(_Component){inheritsLoose(MediaLoader,_Component);function MediaLoader(player,options,ready){var _this;var options_=mergeOptions({createEl:!1},options);_this=_Component.call(this,player,options_,ready)||this;if(!options.playerOptions.sources||options.playerOptions.sources.length===0){for(var i=0,j=options.playerOptions.techOrder;i<j.length;i++){var techName=toTitleCase(j[i]);var tech=Tech.getTech(techName);if(!techName){tech=Component.getComponent(techName)}
1044if(tech&&tech.isSupported()){player.loadTech_(techName);break}}}else{player.src(options.playerOptions.sources)}
1045return _this}
1046return MediaLoader}(Component);Component.registerComponent('MediaLoader',MediaLoader);var ClickableComponent=function(_Component){inheritsLoose(ClickableComponent,_Component);function ClickableComponent(player,options){var _this;_this=_Component.call(this,player,options)||this;_this.emitTapEvents();_this.enable();return _this}
1047var _proto=ClickableComponent.prototype;
1047_proto.createEl=function createEl(tag,props,attributes){if(tag===void 0){tag='div'}
1048if(props===void 0){props={}}
1049if(attributes===void 0){attributes={}}
1050props=assign({innerHTML:'<span aria-hidden="true" class="vjs-icon-placeholder"></span>',className:this.buildCSSClass(),tabIndex:0},props);if(tag==='button'){log.error("Creating a ClickableComponent with an HTML element of "+tag+" is not supported; use a Button instead.")}
1051attributes=assign({role:'button'},attributes);this.tabIndex_=props.tabIndex;var el=_Component.prototype.createEl.call(this,tag,props,attributes);this.createControlTextEl(el);return el};_proto.dispose=function dispose(){this.controlTextEl_=null;_Component.prototype.dispose.call(this)};_proto.createControlTextEl=function createControlTextEl(el){this.controlTextEl_=createEl('span',{className:'vjs-control-text'},{'aria-live':'polite'});if(el){el.appendChild(this.controlTextEl_)}
1052this.controlText(this.controlText_,el);return this.controlTextEl_};_proto.controlText=function controlText(text,el){if(el===void 0){el=this.el()}
1053if(text===undefined){return this.controlText_||'Need Text'}
1054var localizedText=this.localize(text);this.controlText_=text;textContent(this.controlTextEl_,localizedText);if(!this.nonIconControl){el.setAttribute('title',localizedText)}};_proto.buildCSSClass=function buildCSSClass(){return"vjs-control vjs-button "+_Component.prototype.buildCSSClass.call(this)};_proto.enable=function enable(){if(!this.enabled_){this.enabled_=!0;this.removeClass('vjs-disabled');this.el_.setAttribute('aria-disabled','false');if(typeof this.tabIndex_!=='undefined'){this.el_.setAttribute('tabIndex',this.tabIndex_)}
1055this.on(['tap','click'],this.handleClick);this.on('keydown',this.handleKeyDown)}};_proto.disable=function disable(){this.enabled_=!1;this.addClass('vjs-disabled');this.el_.setAttribute('aria-disabled','true');if(typeof this.tabIndex_!=='undefined'){this.el_.removeAttribute('tabIndex')}
1056this.off('mouseover',this.handleMouseOver);this.off('mouseout',this.handleMouseOut);this.off(['tap','click'],this.handleClick);this.off('keydown',this.handleKeyDown)};_proto.handleClick=function handleClick(event){if(this.options_.clickHandler){this.options_.clickHandler.call(this,arguments)}};_proto.handleKeyDown=function handleKeyDown(event){if(keycode.isEventKey(event,'Space')||keycode.isEventKey(event,'Enter')){event.preventDefault();event.stopPropagation();this.trigger('click')}else{_Component.prototype.handleKeyDown.call(this,event)}};return ClickableComponent}(Component);Component.registerComponent('ClickableComponent',ClickableComponent);var PosterImage=function(_ClickableComponent){inheritsLoose(PosterImage,_ClickableComponent);function PosterImage(player,options){var _this;_this=_ClickableComponent.call(this,player,options)||this;_this.update();player.on('posterchange',bind(assertThisInitialized(_this),_this.update));return _this}
1057var _proto=PosterImage.prototype;_proto.dispose=function dispose(){this.player().off('posterchange',this.update);_ClickableComponent.prototype.dispose.call(this)};_proto.createEl=function createEl$1(){var el=createEl('div',{className:'vjs-poster',tabIndex:-1});return el};_proto.update=function update(event){var url=this.player().poster();this.setSrc(url);if(url){this.show()}else{this.hide()}};_proto.setSrc=function setSrc(url){var backgroundImage='';if(url){backgroundImage="url(\""+url+"\")"}
1058this.el_.style.backgroundImage=backgroundImage};_proto.handleClick=function handleClick(event){if(!this.player_.controls()){return}
1059if(this.player_.tech(!0)){this.player_.tech(!0).focus()}
1060if(this.player_.paused()){silencePromise(this.player_.play())}else{this.player_.pause()}};return PosterImage}(ClickableComponent);Component.registerComponent('PosterImage',PosterImage);var darkGray='#222';var lightGray='#ccc';var fontMap={monospace:'monospace',sansSerif:'sans-serif',serif:'serif',monospaceSansSerif:'"Andale Mono", "Lucida Console", monospace',monospaceSerif:'"Courier New", monospace',proportionalSansSerif:'sans-serif',proportionalSerif:'serif',casual:'"Comic Sans MS", Impact, fantasy',script:'"Monotype Corsiva", cursive',smallcaps:'"Andale Mono", "Lucida Console", monospace, sans-serif'};function constructColor(color,opacity){var hex;if(color.length===4){hex=color[1]+color[1]+color[2]+color[2]+color[3]+color[3]}else if(color.length===7){hex=color.slice(1)}else{throw new Error('Invalid color code provided, '+color+'; must be formatted as e.g. #f0e or #f604e2.')}
1061return'rgba('+parseInt(hex.slice(0,2),16)+','+parseInt(hex.slice(2,4),16)+','+parseInt(hex.slice(4,6),16)+','+opacity+')'}
1062function tryUpdateStyle(el,style,rule){try{el.style[style]=rule}catch(e){return}}
1063var TextTrackDisplay=function(_Component){inheritsLoose(TextTrackDisplay,_Component);function TextTrackDisplay(player,options,ready){var _this;_this=_Component.call(this,player,options,ready)||this;var updateDisplayHandler=bind(assertThisInitialized(_this),_this.updateDisplay);player.on('loadstart',bind(assertThisInitialized(_this),_this.toggleDisplay));player.on('texttrackchange',updateDisplayHandler);player.on('loadedmetadata',bind(assertThisInitialized(_this),_this.preselectTrack));player.ready(bind(assertThisInitialized(_this),function(){if(player.tech_&&player.tech_.featuresNativeTextTracks){this.hide();return}
1064player.on('fullscreenchange',updateDisplayHandler);player.on('playerresize',updateDisplayHandler);window$1.addEventListener('orientationchange',updateDisplayHandler);player.on('dispose',function(){return window$1.removeEventListener('orientationchange',updateDisplayHandler)});var tracks=this.options_.playerOptions.tracks||[];for(var i=0;i<tracks.length;i++){this.player_.addRemoteTextTrack(tracks[i],!0)}
1065this.preselectTrack()}));return _this}
1066var _proto=TextTrackDisplay.prototype;_proto.preselectTrack=function preselectTrack(){var modes={captions:1,subtitles:1};var trackList=this.player_.textTracks();var userPref=this.player_.cache_.selectedLanguage;var firstDesc;var firstCaptions;var preferredTrack;for(var i=0;i<trackList.length;i++){var track=trackList[i];if(userPref&&userPref.enabled&&userPref.language&&userPref.language===track.language&&track.kind in modes){if(track.kind===userPref.kind){preferredTrack=track}else if(!preferredTrack){preferredTrack=track}}else if(userPref&&!userPref.enabled){preferredTrack=null;firstDesc=null;firstCaptions=null}else if(track["default"]){if(track.kind==='descriptions'&&!firstDesc){firstDesc=track}else if(track.kind in modes&&!firstCaptions){firstCaptions=track}}}
1067if(preferredTrack){preferredTrack.mode='showing'}else if(firstCaptions){firstCaptions.mode='showing'}else if(firstDesc){firstDesc.mode='showing'}};_proto.toggleDisplay=function toggleDisplay(){if(this.player_.tech_&&this.player_.tech_.featuresNativeTextTracks){this.hide()}else{this.show()}};_proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,'div',{className:'vjs-text-track-display'},{'aria-live':'off','aria-atomic':'true'})};_proto.clearDisplay=function clearDisplay(){if(typeof window$1.WebVTT==='function'){window$1.WebVTT.processCues(window$1,[],this.el_)}};_proto.updateDisplay=function updateDisplay(){var tracks=this.player_.textTracks();var allowMultipleShowingTracks=this.options_.allowMultipleShowingTracks;this.clearDisplay();if(allowMultipleShowingTracks){var showingTracks=[];for(var _i=0;_i<tracks.length;++_i){var track=tracks[_i];if(track.mode!=='showing'){continue}
1068showingTracks.push(track)}
1069this.updateForTrack(showingTracks);return}
1070var descriptionsTrack=null;var captionsSubtitlesTrack=null;var i=tracks.length;while(i--){var _track=tracks[i];if(_track.mode==='showing'){if(_track.kind==='descriptions'){descriptionsTrack=_track}else{captionsSubtitlesTrack=_track}}}
1071if(captionsSubtitlesTrack){if(this.getAttribute('aria-live')!=='off'){this.setAttribute('aria-live','off')}
1072this.updateForTrack(captionsSubtitlesTrack)}else if(descriptionsTrack){if(this.getAttribute('aria-live')!=='assertive'){this.setAttribute('aria-live','assertive')}
1073this.updateForTrack(descriptionsTrack)}};_proto.updateDisplayState=function updateDisplayState(track){var overrides=this.player_.textTrackSettings.getValues();var cues=track.activeCues;var i=cues.length;while(i--){var cue=cues[i];if(!cue){continue}
1074var cueDiv=cue.displayState;if(overrides.color){cueDiv.firstChild.style.color=overrides.color}
1075if(overrides.textOpacity){tryUpdateStyle(cueDiv.firstChild,'color',constructColor(overrides.color||'#fff',overrides.textOpacity))}
1076if(overrides.backgroundColor){cueDiv.firstChild.style.backgroundColor=overrides.backgroundColor}
1077if(overrides.backgroundOpacity){tryUpdateStyle(cueDiv.firstChild,'backgroundColor',constructColor(overrides.backgroundColor||'#000',overrides.backgroundOpacity))}
1078if(overrides.windowColor){if(overrides.windowOpacity){tryUpdateStyle(cueDiv,'backgroundColor',constructColor(overrides.windowColor,overrides.windowOpacity))}else{cueDiv.style.backgroundColor=overrides.windowColor}}
1079if(overrides.edgeStyle){if(overrides.edgeStyle==='dropshadow'){cueDiv.firstChild.style.textShadow="2px 2px 3px "+darkGray+", 2px 2px 4px "+darkGray+", 2px 2px 5px "+darkGray}else if(overrides.edgeStyle==='raised'){cueDiv.firstChild.style.textShadow="1px 1px "+darkGray+", 2px 2px "+darkGray+", 3px 3px "+darkGray}else if(overrides.edgeStyle==='depressed'){cueDiv.firstChild.style.textShadow="1px 1px "+lightGray+", 0 1px "+lightGray+", -1px -1px "+darkGray+", 0 -1px "+darkGray}else if(overrides.edgeStyle==='uniform'){cueDiv.firstChild.style.textShadow="0 0 4px "+darkGray+", 0 0 4px "+darkGray+", 0 0 4px "+darkGray+", 0 0 4px "+darkGray}}
1080if(overrides.fontPercent&&overrides.fontPercent!==1){var fontSize=window$1.parseFloat(cueDiv.style.fontSize);cueDiv.style.fontSize=fontSize*overrides.fontPercent+'px';cueDiv.style.height='auto';cueDiv.style.top='auto';cueDiv.style.bottom='2px'}
1081if(overrides.fontFamily&&overrides.fontFamily!=='default'){if(overrides.fontFamily==='small-caps'){cueDiv.firstChild.style.fontVariant='small-caps'}else{cueDiv.firstChild.style.fontFamily=fontMap[overrides.fontFamily]}}}};_proto.updateForTrack=function updateForTrack(tracks){if(!Array.isArray(tracks)){tracks=[tracks]}
1082if(typeof window$1.WebVTT!=='function'||tracks.every(function(track){return!track.activeCues})){return}
1083var cues=[];for(var i=0;i<tracks.length;++i){var track=tracks[i];for(var j=0;j<track.activeCues.length;++j){cues.push(track.activeCues[j])}}
1084window$1.WebVTT.processCues(window$1,cues,this.el_);for(var _i2=0;_i2<tracks.length;++_i2){var _track2=tracks[_i2];for(var _j=0;_j<_track2.activeCues.length;++_j){var cueEl=_track2.activeCues[_j].displayState;addClass(cueEl,'vjs-text-track-cue');addClass(cueEl,'vjs-text-track-cue-'+(_track2.language?_track2.language:_i2))}
1085if(this.player_.textTrackSettings){this.updateDisplayState(_track2)}}};return TextTrackDisplay}(Component);Component.registerComponent('TextTrackDisplay',TextTrackDisplay);var LoadingSpinner=function(_Component){inheritsLoose(LoadingSpinner,_Component);function LoadingSpinner(){return _Component.apply(this,arguments)||this}
1086var _proto=LoadingSpinner.prototype;_proto.createEl=function createEl$1(){var isAudio=this.player_.isAudio();
1086var playerType=this.localize(isAudio?'Audio Player':'Video Player');var controlText=createEl('span',{className:'vjs-control-text',innerHTML:this.localize('{1} is loading.',[playerType])});var el=_Component.prototype.createEl.call(this,'div',{className:'vjs-loading-spinner',dir:'ltr'});el.appendChild(controlText);return el};return LoadingSpinner}(Component);Component.registerComponent('LoadingSpinner',LoadingSpinner);var Button=function(_ClickableComponent){inheritsLoose(Button,_ClickableComponent);function Button(){return _ClickableComponent.apply(this,arguments)||this}
1087var _proto=Button.prototype;_proto.createEl=function createEl(tag,props,attributes){if(props===void 0){props={}}
1088if(attributes===void 0){attributes={}}
1089tag='button';props=assign({innerHTML:'<span aria-hidden="true" class="vjs-icon-placeholder"></span>',className:this.buildCSSClass()},props);attributes=assign({type:'button'},attributes);var el=Component.prototype.createEl.call(this,tag,props,attributes);this.createControlTextEl(el);return el};_proto.addChild=function addChild(child,options){if(options===void 0){options={}}
1090var className=this.constructor.name;log.warn("Adding an actionable (user controllable) child to a Button ("+className+") is not supported; use a ClickableComponent instead.");return Component.prototype.addChild.call(this,child,options)};_proto.enable=function enable(){_ClickableComponent.prototype.enable.call(this);this.el_.removeAttribute('disabled')};_proto.disable=function disable(){_ClickableComponent.prototype.disable.call(this);this.el_.setAttribute('disabled','disabled')};_proto.handleKeyDown=function handleKeyDown(event){if(keycode.isEventKey(event,'Space')||keycode.isEventKey(event,'Enter')){event.stopPropagation();return}
1091_ClickableComponent.prototype.handleKeyDown.call(this,event)};return Button}(ClickableComponent);Component.registerComponent('Button',Button);var BigPlayButton=function(_Button){inheritsLoose(BigPlayButton,_Button);function BigPlayButton(player,options){var _this;_this=_Button.call(this,player,options)||this;_this.mouseused_=!1;_this.on('mousedown',_this.handleMouseDown);return _this}
1092var _proto=BigPlayButton.prototype;_proto.buildCSSClass=function buildCSSClass(){return'vjs-big-play-button'};_proto.handleClick=function handleClick(event){var playPromise=this.player_.play();if(this.mouseused_&&event.clientX&&event.clientY){var sourceIsEncrypted=this.player_.usingPlugin('eme')&&this.player_.eme.sessions&&this.player_.eme.sessions.length>0;silencePromise(playPromise);if(this.player_.tech(!0)&&!((IE_VERSION||IS_EDGE)&&sourceIsEncrypted)){this.player_.tech(!0).focus()}
1093return}
1094var cb=this.player_.getChild('controlBar');var playToggle=cb&&cb.getChild('playToggle');if(!playToggle){this.player_.tech(!0).focus();return}
1095var playFocus=function playFocus(){return playToggle.focus()};if(isPromise(playPromise)){playPromise.then(playFocus,function(){})}else{this.setTimeout(playFocus,1)}};_proto.handleKeyDown=function handleKeyDown(event){this.mouseused_=!1;_Button.prototype.handleKeyDown.call(this,event)};_proto.handleMouseDown=function handleMouseDown(event){this.mouseused_=!0};return BigPlayButton}(Button);BigPlayButton.prototype.controlText_='Play Video';Component.registerComponent('BigPlayButton',BigPlayButton);var CloseButton=function(_Button){inheritsLoose(CloseButton,_Button);function CloseButton(player,options){var _this;_this=_Button.call(this,player,options)||this;_this.controlText(options&&options.controlText||_this.localize('Close'));return _this}
1096var _proto=CloseButton.prototype;_proto.buildCSSClass=function buildCSSClass(){return"vjs-close-button "+_Button.prototype.buildCSSClass.call(this)};_proto.handleClick=function handleClick(event){this.trigger({type:'close',bubbles:!1})};_proto.handleKeyDown=function handleKeyDown(event){if(keycode.isEventKey(event,'Esc')){event.preventDefault();event.stopPropagation();this.trigger('click')}else{_Button.prototype.handleKeyDown.call(this,event)}};return CloseButton}(Button);Component.registerComponent('CloseButton',CloseButton);var PlayToggle=function(_Button){inheritsLoose(PlayToggle,_Button);function PlayToggle(player,options){var _this;if(options===void 0){options={}}
1097_this=_Button.call(this,player,options)||this;options.replay=options.replay===undefined||options.replay;_this.on(player,'play',_this.handlePlay);_this.on(player,'pause',_this.handlePause);
1097if(options.replay){_this.on(player,'ended',_this.handleEnded)}
1098return _this}
1099var _proto=PlayToggle.prototype;_proto.buildCSSClass=function buildCSSClass(){return"vjs-play-control "+_Button.prototype.buildCSSClass.call(this)};_proto.handleClick=function handleClick(event){if(this.player_.paused()){this.player_.play()}else{this.player_.pause()}};_proto.handleSeeked=function handleSeeked(event){this.removeClass('vjs-ended');if(this.player_.paused()){this.handlePause(event)}else{this.handlePlay(event)}};_proto.handlePlay=function handlePlay(event){this.removeClass('vjs-ended');this.removeClass('vjs-paused');this.addClass('vjs-playing');this.controlText('Pause')};_proto.handlePause=function handlePause(event){this.removeClass('vjs-playing');this.addClass('vjs-paused');this.controlText('Play')};_proto.handleEnded=function handleEnded(event){this.removeClass('vjs-playing');this.addClass('vjs-ended');this.controlText('Replay');this.one(this.player_,'seeked',this.handleSeeked)};return PlayToggle}(Button);PlayToggle.prototype.controlText_='Play';Component.registerComponent('PlayToggle',PlayToggle);var defaultImplementation=function defaultImplementation(seconds,guide){seconds=seconds<0?0:seconds;var s=Math.floor(seconds%60);var m=Math.floor(seconds/60%60);var h=Math.floor(seconds/3600);var gm=Math.floor(guide/60%60);var gh=Math.floor(guide/3600);if(isNaN(seconds)||seconds===Infinity){h=m=s='-'}
1100h=h>0||gh>0?h+':':'';m=((h||gm>=10)&&m<10?'0'+m:m)+':';s=s<10?'0'+s:s;return h+m+s};var implementation=defaultImplementation;function setFormatTime(customImplementation){implementation=customImplementation}
1101function resetFormatTime(){implementation=defaultImplementation}
1102function formatTime(seconds,guide){if(guide===void 0){guide=seconds}
1103return implementation(seconds,guide)}
1104var TimeDisplay=function(_Component){inheritsLoose(TimeDisplay,_Component);function TimeDisplay(player,options){var _this;_this=_Component.call(this,player,options)||this;_this.on(player,['timeupdate','ended'],_this.updateContent);_this.updateTextNode_();return _this}
1105var _proto=TimeDisplay.prototype;_proto.createEl=function createEl$1(){var className=this.buildCSSClass();var el=_Component.prototype.createEl.call(this,'div',{className:className+" vjs-time-control vjs-control",innerHTML:"<span class=\"vjs-control-text\" role=\"presentation\">"+this.localize(this.labelText_)+"\xA0</span>"});this.contentEl_=createEl('span',{className:className+"-display"},{'aria-live':'off','role':'presentation'});el.appendChild(this.contentEl_);return el};_proto.dispose=function dispose(){this.contentEl_=null;this.textNode_=null;_Component.prototype.dispose.call(this)};_proto.updateTextNode_=function updateTextNode_(time){var _this2=this;if(time===void 0){time=0}
1106time=formatTime(time);if(this.formattedTime_===time){return}
1107this.formattedTime_=time;this.requestAnimationFrame(function(){if(!_this2.contentEl_){return}
1108var oldNode=_this2.textNode_;_this2.textNode_=document.createTextNode(_this2.formattedTime_);if(!_this2.textNode_){return}
1109if(oldNode){_this2.contentEl_.replaceChild(_this2.textNode_,oldNode)}else{_this2.contentEl_.appendChild(_this2.textNode_)}})};_proto.updateContent=function updateContent(event){};return TimeDisplay}(Component);TimeDisplay.prototype.labelText_='Time';TimeDisplay.prototype.controlText_='Time';Component.registerComponent('TimeDisplay',TimeDisplay);var CurrentTimeDisplay=function(_TimeDisplay){inheritsLoose(CurrentTimeDisplay,_TimeDisplay);function CurrentTimeDisplay(){return _TimeDisplay.apply(this,arguments)||this}
1110var _proto=CurrentTimeDisplay.prototype;_proto.buildCSSClass=function buildCSSClass(){return'vjs-current-time'};_proto.updateContent=function updateContent(event){var time;if(this.player_.ended()){time=this.player_.duration()}else{time=this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime()}
1111this.updateTextNode_(time)};return CurrentTimeDisplay}(TimeDisplay);CurrentTimeDisplay.prototype.labelText_='Current Time';CurrentTimeDisplay.prototype.controlText_='Current Time';Component.registerComponent('CurrentTimeDisplay',CurrentTimeDisplay);var DurationDisplay=function(_TimeDisplay){inheritsLoose(DurationDisplay,_TimeDisplay);function DurationDisplay(player,options){var _this;_this=_TimeDisplay.call(this,player,options)||this;_this.on(player,'durationchange',_this.updateContent);_this.on(player,'loadstart',_this.updateContent);_this.on(player,'loadedmetadata',_this.updateContent);return _this}
1112var _proto=DurationDisplay.prototype;_proto.buildCSSClass=function buildCSSClass(){return'vjs-duration'};_proto.updateContent=function updateContent(event){var duration=this.player_.duration();this.updateTextNode_(duration)};return DurationDisplay}(TimeDisplay);DurationDisplay.prototype.labelText_='Duration';DurationDisplay.prototype.controlText_='Duration';Component.registerComponent('DurationDisplay',DurationDisplay);var TimeDivider=function(_Component){inheritsLoose(TimeDivider,_Component);function TimeDivider(){return _Component.apply(this,arguments)||this}
1113var _proto=TimeDivider.prototype;_proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,'div',{className:'vjs-time-control vjs-time-divider',innerHTML:'<div><span>/</span></div>'},{'aria-hidden':!0})};return TimeDivider}(Component);Component.registerComponent('TimeDivider',TimeDivider);var RemainingTimeDisplay=function(_TimeDisplay){inheritsLoose(RemainingTimeDisplay,_TimeDisplay);function RemainingTimeDisplay(player,options){var _this;_this=_TimeDisplay.call(this,player,options)||this;_this.on(player,'durationchange',_this.updateContent);return _this}
1114var _proto=RemainingTimeDisplay.prototype;_proto.buildCSSClass=function buildCSSClass(){return'vjs-remaining-time'};_proto.createEl=function createEl$1(){var el=_TimeDisplay.prototype.createEl.call(this);el.insertBefore(createEl('span',{},{'aria-hidden':!0},'-'),this.contentEl_);return el};_proto.updateContent=function updateContent(event){if(typeof this.player_.duration()!=='number'){return}
1115var time;if(this.player_.ended()){time=0}else if(this.player_.remainingTimeDisplay){time=this.player_.remainingTimeDisplay()}else{time=this.player_.remainingTime()}
1116this.updateTextNode_(time)};return RemainingTimeDisplay}(TimeDisplay);RemainingTimeDisplay.prototype.labelText_='Remaining Time';RemainingTimeDisplay.prototype.controlText_='Remaining Time';Component.registerComponent('RemainingTimeDisplay',RemainingTimeDisplay);var LiveDisplay=function(_Component){inheritsLoose(LiveDisplay,_Component);function LiveDisplay(player,options){var _this;_this=_Component.call(this,player,options)||this;_this.updateShowing();_this.on(_this.player(),'durationchange',_this.updateShowing);return _this}
1117var _proto=LiveDisplay.prototype;_proto.createEl=function createEl$1(){var el=_Component.prototype.createEl.call(this,'div',{className:'vjs-live-control vjs-control'});this.contentEl_=createEl('div',{className:'vjs-live-display',innerHTML:"<span class=\"vjs-control-text\">"+this.localize('Stream Type')+"\xA0</span>"+this.localize('LIVE')},{'aria-live':'off'});el.appendChild(this.contentEl_);return el};_proto.dispose=function dispose(){this.contentEl_=null;_Component.prototype.dispose.call(this)};_proto.updateShowing=function updateShowing(event){if(this.player().duration()===Infinity){this.show()}else{this.hide()}};return LiveDisplay}(Component);Component.registerComponent('LiveDisplay',LiveDisplay);var SeekToLive=function(_Button){inheritsLoose(SeekToLive,_Button);function SeekToLive(player,options){var _this;_this=_Button.call(this,player,options)||this;_this.updateLiveEdgeStatus();if(_this.player_.liveTracker){_this.on(_this.player_.liveTracker,'liveedgechange',_this.updateLiveEdgeStatus)}
1118return _this}
1119var _proto=SeekToLive.prototype;_proto.createEl=function createEl$1(){var el=_Button.prototype.createEl.call(this,'button',{className:'vjs-seek-to-live-control vjs-control'});this.textEl_=createEl('span',{className:'vjs-seek-to-live-text',innerHTML:this.localize('LIVE')},{'aria-hidden':'true'});el.appendChild(this.textEl_);return el};_proto.updateLiveEdgeStatus=function updateLiveEdgeStatus(e){if(!this.player_.liveTracker||this.player_.liveTracker.atLiveEdge()){this.setAttribute('aria-disabled',!0);this.addClass('vjs-at-live-edge');this.controlText('Seek to live, currently playing live')}else{this.setAttribute('aria-disabled',!1);this.removeClass('vjs-at-live-edge');this.controlText('Seek to live, currently behind live')}};_proto.handleClick=function handleClick(){this.player_.liveTracker.seekToLiveEdge()};_proto.dispose=function dispose(){if(this.player_.liveTracker){this.off(this.player_.liveTracker,'liveedgechange',this.updateLiveEdgeStatus)}
1120this.textEl_=null;_Button.prototype.dispose.call(this)};return SeekToLive}(Button);SeekToLive.prototype.controlText_='Seek to live, currently playing live';Component.registerComponent('SeekToLive',SeekToLive);var clamp=function clamp(number,min,max){number=Number(number);return Math.min(max,Math.max(min,isNaN(number)?min:number))};var Slider=function(_Component){inheritsLoose(Slider,_Component);function Slider(player,options){var _this;_this=_Component.call(this,player,options)||this;_this.bar=_this.getChild(_this.options_.barName);_this.vertical(!!_this.options_.vertical);_this.enable();return _this}
1121var _proto=Slider.prototype;_proto.enabled=function enabled(){return this.enabled_};_proto.enable=function enable(){if(this.enabled()){return}
1122this.on('mousedown',this.handleMouseDown);this.on('touchstart',this.handleMouseDown);this.on('keydown',this.handleKeyDown);this.on('click',this.handleClick);this.on(this.player_,'controlsvisible',this.update);if(this.playerEvent){this.on(this.player_,this.playerEvent,this.update)}
1123this.removeClass('disabled');this.setAttribute('tabindex',0);this.enabled_=!0};_proto.disable=function disable(){if(!this.enabled()){return}
1124var doc=this.bar.el_.ownerDocument;this.off('mousedown',this.handleMouseDown);this.off('touchstart',this.handleMouseDown);this.off('keydown',this.handleKeyDown);this.off('click',this.handleClick);this.off(this.player_,'controlsvisible',this.update);this.off(doc,'mousemove',this.handleMouseMove);this.off(doc,'mouseup',this.handleMouseUp);this.off(doc,'touchmove',this.handleMouseMove);this.off(doc,'touchend',this.handleMouseUp);this.removeAttribute('tabindex');this.addClass('disabled');
1124if(this.playerEvent){this.off(this.player_,this.playerEvent,this.update)}
1125this.enabled_=!1};_proto.createEl=function createEl(type,props,attributes){if(props===void 0){props={}}
1126if(attributes===void 0){attributes={}}
1127props.className=props.className+' vjs-slider';props=assign({tabIndex:0},props);attributes=assign({'role':'slider','aria-valuenow':0,'aria-valuemin':0,'aria-valuemax':100,'tabIndex':0},attributes);return _Component.prototype.createEl.call(this,type,props,attributes)};_proto.handleMouseDown=function handleMouseDown(event){var doc=this.bar.el_.ownerDocument;if(event.type==='mousedown'){event.preventDefault()}
1128if(event.type==='touchstart'&&!IS_CHROME){event.preventDefault()}
1129blockTextSelection();this.addClass('vjs-sliding');this.trigger('slideractive');this.on(doc,'mousemove',this.handleMouseMove);this.on(doc,'mouseup',this.handleMouseUp);this.on(doc,'touchmove',this.handleMouseMove);this.on(doc,'touchend',this.handleMouseUp);this.handleMouseMove(event)};_proto.handleMouseMove=function handleMouseMove(event){};_proto.handleMouseUp=function handleMouseUp(){var doc=this.bar.el_.ownerDocument;unblockTextSelection();this.removeClass('vjs-sliding');this.trigger('sliderinactive');this.off(doc,'mousemove',this.handleMouseMove);this.off(doc,'mouseup',this.handleMouseUp);this.off(doc,'touchmove',this.handleMouseMove);this.off(doc,'touchend',this.handleMouseUp);this.update()};_proto.update=function update(){var _this2=this;if(!this.el_||!this.bar){return}
1130var progress=this.getProgress();if(progress===this.progress_){return}
1131this.progress_=progress;this.requestAnimationFrame(function(){var sizeKey=_this2.vertical()?'height':'width';_this2.bar.el().style[sizeKey]=(progress*100).toFixed(2)+'%'});return progress};_proto.getProgress=function getProgress(){return clamp(this.getPercent(),0,1).toFixed(4)};_proto.calculateDistance=function calculateDistance(event){var position=getPointerPosition(this.el_,event);if(this.vertical()){return position.y}
1132return position.x};_proto.handleKeyDown=function handleKeyDown(event){if(keycode.isEventKey(event,'Left')||keycode.isEventKey(event,'Down')){event.preventDefault();event.stopPropagation();this.stepBack()}else if(keycode.isEventKey(event,'Right')||keycode.isEventKey(event,'Up')){event.preventDefault();event.stopPropagation();this.stepForward()}else{_Component.prototype.handleKeyDown.call(this,event)}};_proto.handleClick=function handleClick(event){event.stopPropagation();event.preventDefault()};_proto.vertical=function vertical(bool){if(bool===undefined){return this.vertical_||!1}
1133this.vertical_=!!bool;if(this.vertical_){this.addClass('vjs-slider-vertical')}else{this.addClass('vjs-slider-horizontal')}};return Slider}(Component);Component.registerComponent('Slider',Slider);var percentify=function percentify(time,end){return clamp(time/end*100,0,100).toFixed(2)+'%'};var LoadProgressBar=function(_Component){inheritsLoose(LoadProgressBar,_Component);function LoadProgressBar(player,options){var _this;_this=_Component.call(this,player,options)||this;_this.partEls_=[];_this.on(player,'progress',_this.update);return _this}
1134var _proto=LoadProgressBar.prototype;_proto.createEl=function createEl$1(){var el=_Component.prototype.createEl.call(this,'div',{className:'vjs-load-progress'});var wrapper=createEl('span',{className:'vjs-control-text'});var loadedText=createEl('span',{textContent:this.localize('Loaded')});var separator=document.createTextNode(': ');this.percentageEl_=createEl('span',{className:'vjs-control-text-loaded-percentage',textContent:'0%'});el.appendChild(wrapper);wrapper.appendChild(loadedText);wrapper.appendChild(separator);wrapper.appendChild(this.percentageEl_);return el};_proto.dispose=function dispose(){this.partEls_=null;this.percentageEl_=null;_Component.prototype.dispose.call(this)};_proto.update=function update(event){var _this2=this;this.requestAnimationFrame(function(){var liveTracker=_this2.player_.liveTracker;var buffered=_this2.player_.buffered();var duration=liveTracker&&liveTracker.isLive()?liveTracker.seekableEnd():_this2.player_.duration();var bufferedEnd=_this2.player_.bufferedEnd();var children=_this2.partEls_;var percent=percentify(bufferedEnd,duration);if(_this2.percent_!==percent){_this2.el_.style.width=percent;textContent(_this2.percentageEl_,percent);_this2.percent_=percent}
1135for(var i=0;i<buffered.length;i++){var start=buffered.start(i);var end=buffered.end(i);var part=children[i];if(!part){part=_this2.el_.appendChild(createEl());children[i]=part}
1136if(part.dataset.start===start&&part.dataset.end===end){continue}
1137part.dataset.start=start;part.dataset.end=end;part.style.left=percentify(start,bufferedEnd);part.style.width=percentify(end-start,bufferedEnd)}
1138for(var _i=children.length;_i>buffered.length;_i--){_this2.el_.removeChild(children[_i-1])}
1139children.length=buffered.length})};return LoadProgressBar}(Component);Component.registerComponent('LoadProgressBar',LoadProgressBar);var TimeTooltip=function(_Component){inheritsLoose(TimeTooltip,_Component);function TimeTooltip(player,options){var _this;_this=_Component.call(this,player,options)||this;_this.update=throttle(bind(assertThisInitialized(_this),_this.update),UPDATE_REFRESH_INTERVAL);return _this}
1140var _proto=TimeTooltip.prototype;_proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,'div',{className:'vjs-time-tooltip'},{'aria-hidden':'true'})};_proto.update=function update(seekBarRect,seekBarPoint,content){var tooltipRect=getBoundingClientRect(this.el_);var playerRect=getBoundingClientRect(this.player_.el());var seekBarPointPx=seekBarRect.width*seekBarPoint;if(!playerRect||!tooltipRect){return}
1141var spaceLeftOfPoint=seekBarRect.left-playerRect.left+seekBarPointPx;var spaceRightOfPoint=seekBarRect.width-seekBarPointPx+(playerRect.right-seekBarRect.right);var pullTooltipBy=tooltipRect.width/2;if(spaceLeftOfPoint<pullTooltipBy){pullTooltipBy+=pullTooltipBy-spaceLeftOfPoint}else if(spaceRightOfPoint<pullTooltipBy){pullTooltipBy=spaceRightOfPoint}
1142if(pullTooltipBy<0){pullTooltipBy=0}else if(pullTooltipBy>tooltipRect.width){pullTooltipBy=tooltipRect.width}
1143this.el_.style.right="-"+pullTooltipBy+"px";this.write(content)};_proto.write=function write(content){textContent(this.el_,content)};_proto.updateTime=function updateTime(seekBarRect,seekBarPoint,time,cb){var _this2=this;if(this.rafId_){this.cancelAnimationFrame(this.rafId_)}
1144this.rafId_=this.requestAnimationFrame(function(){var content;var duration=_this2.player_.duration();if(_this2.player_.liveTracker&&_this2.player_.liveTracker.isLive()){var liveWindow=_this2.player_.liveTracker.liveWindow();var secondsBehind=liveWindow-seekBarPoint*liveWindow;content=(secondsBehind<1?'':'-')+formatTime(secondsBehind,liveWindow)}else{content=formatTime(time,duration)}
1145_this2.update(seekBarRect,seekBarPoint,content);if(cb){cb()}})};return TimeTooltip}(Component);Component.registerComponent('TimeTooltip',TimeTooltip);var PlayProgressBar=function(_Component){inheritsLoose(PlayProgressBar,_Component);function PlayProgressBar(player,options){var _this;_this=_Component.call(this,player,options)||this;_this.update=throttle(bind(assertThisInitialized(_this),_this.update),UPDATE_REFRESH_INTERVAL);return _this}
1146var _proto=PlayProgressBar.prototype;_proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,'div',{className:'vjs-play-progress vjs-slider-bar'},{'aria-hidden':'true'})};_proto.update=function update(seekBarRect,seekBarPoint){var timeTooltip=this.getChild('timeTooltip');if(!timeTooltip){return}
1147var time=this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime();timeTooltip.updateTime(seekBarRect,seekBarPoint,time)};return PlayProgressBar}(Component);PlayProgressBar.prototype.options_={children:[]};if(!IS_IOS&&!IS_ANDROID){PlayProgressBar.prototype.options_.children.push('timeTooltip')}
1148Component.registerComponent('PlayProgressBar',PlayProgressBar);var MouseTimeDisplay=function(_Component){inheritsLoose(MouseTimeDisplay,_Component);function MouseTimeDisplay(player,options){var _this;_this=_Component.call(this,player,options)||this;_this.update=throttle(bind(assertThisInitialized(_this),_this.update),UPDATE_REFRESH_INTERVAL);return _this}
1149var _proto=MouseTimeDisplay.prototype;_proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,'div',{className:'vjs-mouse-display'})};_proto.update=function update(seekBarRect,seekBarPoint){var _this2=this;var time=seekBarPoint*this.player_.duration();this.getChild('timeTooltip').updateTime(seekBarRect,seekBarPoint,time,function(){_this2.el_.style.left=seekBarRect.width*seekBarPoint+"px"})};return MouseTimeDisplay}(Component);MouseTimeDisplay.prototype.options_={children:['timeTooltip']};Component.registerComponent('MouseTimeDisplay',MouseTimeDisplay);var STEP_SECONDS=5;var PAGE_KEY_MULTIPLIER=12;var UPDATE_REFRESH_INTERVAL$1=30;var SeekBar=function(_Slider){inheritsLoose(SeekBar,_Slider);function SeekBar(player,options){var _this;_this=_Slider.call(this,player,options)||this;_this.setEventHandlers_();return _this}
1150var _proto=SeekBar.prototype;_proto.setEventHandlers_=function setEventHandlers_(){this.update_=bind(this,this.update);this.update=throttle(this.update_,UPDATE_REFRESH_INTERVAL$1);this.on(this.player_,['ended','durationchange','timeupdate'],this.update);if(this.player_.liveTracker){this.on(this.player_.liveTracker,'liveedgechange',this.update)}
1151this.updateInterval=null;this.on(this.player_,['playing'],this.enableInterval_);this.on(this.player_,['ended','pause','waiting'],this.disableInterval_);if('hidden' in document&&'visibilityState' in document){this.on(document,'visibilitychange',this.toggleVisibility_)}};_proto.toggleVisibility_=function toggleVisibility_(e){if(document.hidden){this.disableInterval_(e)}else{this.enableInterval_();this.update()}};_proto.enableInterval_=function enableInterval_(){if(this.updateInterval){return}
1152this.updateInterval=this.setInterval(this.update,UPDATE_REFRESH_INTERVAL$1)};_proto.disableInterval_=function disableInterval_(e){if(this.player_.liveTracker&&this.player_.liveTracker.isLive()&&e.type!=='ended'){return}
1153if(!this.updateInterval){return}
1154this.clearInterval(this.updateInterval);this.updateInterval=null};_proto.createEl=function createEl(){return _Slider.prototype.createEl.call(this,'div',{className:'vjs-progress-holder'},{'aria-label':this.localize('Progress Bar')}
1154)};_proto.update=function update(event){var _this2=this;var percent=_Slider.prototype.update.call(this);this.requestAnimationFrame(function(){var currentTime=_this2.player_.ended()?_this2.player_.duration():_this2.getCurrentTime_();var liveTracker=_this2.player_.liveTracker;var duration=_this2.player_.duration();if(liveTracker&&liveTracker.isLive()){duration=_this2.player_.liveTracker.liveCurrentTime()}
1155if(_this2.percent_!==percent){_this2.el_.setAttribute('aria-valuenow',(percent*100).toFixed(2));_this2.percent_=percent}
1156if(_this2.currentTime_!==currentTime||_this2.duration_!==duration){_this2.el_.setAttribute('aria-valuetext',_this2.localize('progress bar timing: currentTime={1} duration={2}',[formatTime(currentTime,duration),formatTime(duration,duration)],'{1} of {2}'));_this2.currentTime_=currentTime;_this2.duration_=duration}});return percent};_proto.getCurrentTime_=function getCurrentTime_(){return this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime()};_proto.getPercent=function getPercent(){var currentTime=this.getCurrentTime_();var percent;var liveTracker=this.player_.liveTracker;if(liveTracker&&liveTracker.isLive()){percent=(currentTime-liveTracker.seekableStart())/liveTracker.liveWindow();if(liveTracker.atLiveEdge()){percent=1}}else{percent=currentTime/this.player_.duration()}
1157return percent};_proto.handleMouseDown=function handleMouseDown(event){if(!isSingleLeftClick(event)){return}
1158event.stopPropagation();this.player_.scrubbing(!0);this.videoWasPlaying=!this.player_.paused();this.player_.pause();_Slider.prototype.handleMouseDown.call(this,event)};_proto.handleMouseMove=function handleMouseMove(event){if(!isSingleLeftClick(event)){return}
1159var newTime;var distance=this.calculateDistance(event);var liveTracker=this.player_.liveTracker;if(!liveTracker||!liveTracker.isLive()){newTime=distance*this.player_.duration();if(newTime===this.player_.duration()){newTime=newTime-0.1}}else{var seekableStart=liveTracker.seekableStart();var seekableEnd=liveTracker.liveCurrentTime();newTime=seekableStart+distance*liveTracker.liveWindow();if(newTime>=seekableEnd){newTime=seekableEnd}
1160if(newTime<=seekableStart){newTime=seekableStart+0.1}
1161if(newTime===Infinity){return}}
1162this.player_.currentTime(newTime)};_proto.enable=function enable(){_Slider.prototype.enable.call(this);var mouseTimeDisplay=this.getChild('mouseTimeDisplay');if(!mouseTimeDisplay){return}
1163mouseTimeDisplay.show()};_proto.disable=function disable(){_Slider.prototype.disable.call(this);var mouseTimeDisplay=this.getChild('mouseTimeDisplay');if(!mouseTimeDisplay){return}
1164mouseTimeDisplay.hide()};_proto.handleMouseUp=function handleMouseUp(event){_Slider.prototype.handleMouseUp.call(this,event);if(event){event.stopPropagation()}
1165this.player_.scrubbing(!1);this.player_.trigger({type:'timeupdate',target:this,manuallyTriggered:!0});if(this.videoWasPlaying){silencePromise(this.player_.play())}else{this.update_()}};_proto.stepForward=function stepForward(){this.player_.currentTime(this.player_.currentTime()+STEP_SECONDS)};_proto.stepBack=function stepBack(){this.player_.currentTime(this.player_.currentTime()-STEP_SECONDS)};_proto.handleAction=function handleAction(event){if(this.player_.paused()){this.player_.play()}else{this.player_.pause()}};_proto.handleKeyDown=function handleKeyDown(event){if(keycode.isEventKey(event,'Space')||keycode.isEventKey(event,'Enter')){event.preventDefault();event.stopPropagation();this.handleAction(event)}else if(keycode.isEventKey(event,'Home')){event.preventDefault();event.stopPropagation();this.player_.currentTime(0)}else if(keycode.isEventKey(event,'End')){event.preventDefault();event.stopPropagation();this.player_.currentTime(this.player_.duration())}else if(/^[0-9]$/.test(keycode(event))){event.preventDefault();event.stopPropagation();var gotoFraction=(keycode.codes[keycode(event)]-keycode.codes['0'])*10.0/100.0;this.player_.currentTime(this.player_.duration()*gotoFraction)}else if(keycode.isEventKey(event,'PgDn')){event.preventDefault();event.stopPropagation();this.player_.currentTime(this.player_.currentTime()-STEP_SECONDS*PAGE_KEY_MULTIPLIER)}else if(keycode.isEventKey(event,'PgUp')){event.preventDefault();event.stopPropagation();this.player_.currentTime(this.player_.currentTime()+STEP_SECONDS*PAGE_KEY_MULTIPLIER)}else{_Slider.prototype.handleKeyDown.call(this,event)}};return SeekBar}(Slider);SeekBar.prototype.options_={children:['loadProgressBar','playProgressBar'],barName:'playProgressBar'};if(!IS_IOS&&!IS_ANDROID){SeekBar.prototype.options_.children.splice(1,0,'mouseTimeDisplay')}
1166Component.registerComponent('SeekBar',SeekBar);
1166var ProgressControl=function(_Component){inheritsLoose(ProgressControl,_Component);function ProgressControl(player,options){var _this;_this=_Component.call(this,player,options)||this;_this.handleMouseMove=throttle(bind(assertThisInitialized(_this),_this.handleMouseMove),UPDATE_REFRESH_INTERVAL);_this.throttledHandleMouseSeek=throttle(bind(assertThisInitialized(_this),_this.handleMouseSeek),UPDATE_REFRESH_INTERVAL);_this.enable();return _this}
1167var _proto=ProgressControl.prototype;_proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,'div',{className:'vjs-progress-control vjs-control'})};_proto.handleMouseMove=function handleMouseMove(event){var seekBar=this.getChild('seekBar');if(!seekBar){return}
1168var playProgressBar=seekBar.getChild('playProgressBar');var mouseTimeDisplay=seekBar.getChild('mouseTimeDisplay');if(!playProgressBar&&!mouseTimeDisplay){return}
1169var seekBarEl=seekBar.el();var seekBarRect=getBoundingClientRect(seekBarEl);var seekBarPoint=getPointerPosition(seekBarEl,event).x;seekBarPoint=clamp(0,1,seekBarPoint);if(mouseTimeDisplay){mouseTimeDisplay.update(seekBarRect,seekBarPoint)}
1170if(playProgressBar){playProgressBar.update(seekBarRect,seekBar.getProgress())}};_proto.handleMouseSeek=function handleMouseSeek(event){var seekBar=this.getChild('seekBar');
1170if(seekBar){seekBar.handleMouseMove(event)}};_proto.enabled=function enabled(){return this.enabled_};_proto.disable=function disable(){this.children().forEach(function(child){return child.disable&&child.disable()});if(!this.enabled()){return}
1171this.off(['mousedown','touchstart'],this.handleMouseDown);this.off(this.el_,'mousemove',this.handleMouseMove);this.handleMouseUp();this.addClass('disabled');this.enabled_=!1};_proto.enable=function enable(){this.children().forEach(function(child){return child.enable&&child.enable()});if(this.enabled()){return}
1172this.on(['mousedown','touchstart'],this.handleMouseDown);this.on(this.el_,'mousemove',this.handleMouseMove);this.removeClass('disabled');this.enabled_=!0};_proto.handleMouseDown=function handleMouseDown(event){var doc=this.el_.ownerDocument;var seekBar=this.getChild('seekBar');if(seekBar){seekBar.handleMouseDown(event)}
1173this.on(doc,'mousemove',this.throttledHandleMouseSeek);this.on(doc,'touchmove',this.throttledHandleMouseSeek);this.on(doc,'mouseup',this.handleMouseUp);this.on(doc,'touchend',this.handleMouseUp)};_proto.handleMouseUp=function handleMouseUp(event){var doc=this.el_.ownerDocument;var seekBar=this.getChild('seekBar');
1173if(seekBar){seekBar.handleMouseUp(event)}
1174this.off(doc,'mousemove',this.throttledHandleMouseSeek);this.off(doc,'touchmove',this.throttledHandleMouseSeek);this.off(doc,'mouseup',this.handleMouseUp);this.off(doc,'touchend',this.handleMouseUp)};return ProgressControl}(Component);ProgressControl.prototype.options_={children:['seekBar']};Component.registerComponent('ProgressControl',ProgressControl);var PictureInPictureToggle=function(_Button){inheritsLoose(PictureInPictureToggle,_Button);function PictureInPictureToggle(player,options){var _this;_this=_Button.call(this,player,options)||this;_this.on(player,['enterpictureinpicture','leavepictureinpicture'],_this.handlePictureInPictureChange);if(!document.pictureInPictureEnabled){_this.disable()}
1175return _this}
1176var _proto=PictureInPictureToggle.prototype;_proto.buildCSSClass=function buildCSSClass(){return"vjs-picture-in-picture-control "+_Button.prototype.buildCSSClass.call(this)};_proto.handlePictureInPictureChange=function handlePictureInPictureChange(event){if(this.player_.isInPictureInPicture()){this.controlText('Exit Picture-in-Picture')}else{this.controlText('Picture-in-Picture')}};_proto.handleClick=function handleClick(event){if(!this.player_.isInPictureInPicture()){this.player_.requestPictureInPicture()}else{this.player_.exitPictureInPicture()}};return PictureInPictureToggle}(Button);PictureInPictureToggle.prototype.controlText_='Picture-in-Picture';Component.registerComponent('PictureInPictureToggle',PictureInPictureToggle);var FullscreenToggle=function(_Button){inheritsLoose(FullscreenToggle,_Button);function FullscreenToggle(player,options){var _this;_this=_Button.call(this,player,options)||this;_this.on(player,'fullscreenchange',_this.handleFullscreenChange);if(document[player.fsApi_.fullscreenEnabled]===!1){_this.disable()}
1177return _this}
1178var _proto=FullscreenToggle.prototype;_proto.buildCSSClass=function buildCSSClass(){return"vjs-fullscreen-control "+_Button.prototype.buildCSSClass.call(this)};_proto.handleFullscreenChange=function handleFullscreenChange(event){if(this.player_.isFullscreen()){this.controlText('Non-Fullscreen')}else{this.controlText('Fullscreen')}};_proto.handleClick=function handleClick(event){if(!this.player_.isFullscreen()){this.player_.requestFullscreen()}else{this.player_.exitFullscreen()}};return FullscreenToggle}(Button);FullscreenToggle.prototype.controlText_='Fullscreen';Component.registerComponent('FullscreenToggle',FullscreenToggle);var checkVolumeSupport=function checkVolumeSupport(self,player){if(player.tech_&&!player.tech_.featuresVolumeControl){self.addClass('vjs-hidden')}
1179self.on(player,'loadstart',function(){if(!player.tech_.featuresVolumeControl){self.addClass('vjs-hidden')}else{self.removeClass('vjs-hidden')}})};var VolumeLevel=function(_Component){inheritsLoose(VolumeLevel,_Component);function VolumeLevel(){return _Component.apply(this,arguments)||this}
1180var _proto=VolumeLevel.prototype;_proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,'div',{className:'vjs-volume-level',innerHTML:'<span class="vjs-control-text"></span>'})};return VolumeLevel}(Component);Component.registerComponent('VolumeLevel',VolumeLevel);var VolumeBar=function(_Slider){inheritsLoose(VolumeBar,_Slider);function VolumeBar(player,options){var _this;_this=_Slider.call(this,player,options)||this;_this.on('slideractive',_this.updateLastVolume_);_this.on(player,'volumechange',_this.updateARIAAttributes);player.ready(function(){return _this.updateARIAAttributes()});return _this}
1181var _proto=VolumeBar.prototype;_proto.createEl=function createEl(){return _Slider.prototype.createEl.call(this,'div',{className:'vjs-volume-bar vjs-slider-bar'},{'aria-label':this.localize('Volume Level'),'aria-live':'polite'})};_proto.handleMouseDown=function handleMouseDown(event){if(!isSingleLeftClick(event)){return}
1182_Slider.prototype.handleMouseDown.call(this,event)};_proto.handleMouseMove=function handleMouseMove(event){if(!isSingleLeftClick(event)){return}
1183this.checkMuted();this.player_.volume(this.calculateDistance(event))};_proto.checkMuted=function checkMuted(){if(this.player_.muted()){this.player_.muted(!1)}};_proto.getPercent=function getPercent(){if(this.player_.muted()){return 0}
1184return this.player_.volume()};_proto.stepForward=function stepForward(){this.checkMuted();this.player_.volume(this.player_.volume()+0.1)};_proto.stepBack=function stepBack(){this.checkMuted();this.player_.volume(this.player_.volume()-0.1)};_proto.updateARIAAttributes=function updateARIAAttributes(event){var ariaValue=this.player_.muted()?0:this.volumeAsPercentage_();this.el_.setAttribute('aria-valuenow',ariaValue);this.el_.setAttribute('aria-valuetext',ariaValue+'%')};_proto.volumeAsPercentage_=function volumeAsPercentage_(){return Math.round(this.player_.volume()*100)};_proto.updateLastVolume_=function updateLastVolume_(){var _this2=this;var volumeBeforeDrag=this.player_.volume();this.one('sliderinactive',function(){if(_this2.player_.volume()===0){_this2.player_.lastVolume_(volumeBeforeDrag)}})};return VolumeBar}(Slider);VolumeBar.prototype.options_={children:['volumeLevel'],barName:'volumeLevel'};VolumeBar.prototype.playerEvent='volumechange';Component.registerComponent('VolumeBar',VolumeBar);var VolumeControl=function(_Component){inheritsLoose(VolumeControl,_Component);function VolumeControl(player,options){var _this;if(options===void 0){options={}}
1185options.vertical=options.vertical||!1;if(typeof options.volumeBar==='undefined'||isPlain(options.volumeBar)){options.volumeBar=options.volumeBar||{};options.volumeBar.vertical=options.vertical}
1186_this=_Component.call(this,player,options)||this;checkVolumeSupport(assertThisInitialized(_this),player);_this.throttledHandleMouseMove=throttle(bind(assertThisInitialized(_this),_this.handleMouseMove),UPDATE_REFRESH_INTERVAL);_this.on('mousedown',_this.handleMouseDown);_this.on('touchstart',_this.handleMouseDown);_this.on(_this.volumeBar,['focus','slideractive'],function(){_this.volumeBar.addClass('vjs-slider-active');_this.addClass('vjs-slider-active');_this.trigger('slideractive')});_this.on(_this.volumeBar,['blur','sliderinactive'],function(){_this.volumeBar.removeClass('vjs-slider-active');_this.removeClass('vjs-slider-active');_this.trigger('sliderinactive')});return _this}
1187var _proto=VolumeControl.prototype;_proto.createEl=function createEl(){var orientationClass='vjs-volume-horizontal';if(this.options_.vertical){orientationClass='vjs-volume-vertical'}
1188return _Component.prototype.createEl.call(this,'div',{className:"vjs-volume-control vjs-control "+orientationClass})};_proto.handleMouseDown=function handleMouseDown(event){var doc=this.el_.ownerDocument;this.on(doc,'mousemove',this.throttledHandleMouseMove);this.on(doc,'touchmove',this.throttledHandleMouseMove);this.on(doc,'mouseup',this.handleMouseUp);this.on(doc,'touchend',this.handleMouseUp)};_proto.handleMouseUp=function handleMouseUp(event){var doc=this.el_.ownerDocument;this.off(doc,'mousemove',this.throttledHandleMouseMove);this.off(doc,'touchmove',this.throttledHandleMouseMove);this.off(doc,'mouseup',this.handleMouseUp);this.off(doc,'touchend',this.handleMouseUp)};_proto.handleMouseMove=function handleMouseMove(event){this.volumeBar.handleMouseMove(event)};return VolumeControl}(Component);VolumeControl.prototype.options_={children:['volumeBar']};Component.registerComponent('VolumeControl',VolumeControl);var checkMuteSupport=function checkMuteSupport(self,player){if(player.tech_&&!player.tech_.featuresMuteControl){self.addClass('vjs-hidden')}
1189self.on(player,'loadstart',function(){if(!player.tech_.featuresMuteControl){self.addClass('vjs-hidden')}else{self.removeClass('vjs-hidden')}})};var MuteToggle=function(_Button){inheritsLoose(MuteToggle,_Button);function MuteToggle(player,options){var _this;_this=_Button.call(this,player,options)||this;checkMuteSupport(assertThisInitialized(_this),player);_this.on(player,['loadstart','volumechange'],_this.update);return _this}
1190var _proto=MuteToggle.prototype;_proto.buildCSSClass=function buildCSSClass(){return"vjs-mute-control "+_Button.prototype.buildCSSClass.call(this)};_proto.handleClick=function handleClick(event){var vol=this.player_.volume();var lastVolume=this.player_.lastVolume_();if(vol===0){var volumeToSet=lastVolume<0.1?0.1:lastVolume;this.player_.volume(volumeToSet);this.player_.muted(!1)}else{this.player_.muted(this.player_.muted()?!1:!0)}};_proto.update=function update(event){this.updateIcon_();this.updateControlText_()};_proto.updateIcon_=function updateIcon_(){var vol=this.player_.volume();var level=3;if(IS_IOS&&this.player_.tech_&&this.player_.tech_.el_){this.player_.muted(this.player_.tech_.el_.muted)}
1191if(vol===0||this.player_.muted()){level=0}else if(vol<0.33){level=1}else if(vol<0.67){level=2}
1192for(var i=0;i<4;i++){removeClass(this.el_,"vjs-vol-"+i)}
1193addClass(this.el_,"vjs-vol-"+level)};_proto.updateControlText_=function updateControlText_(){var soundOff=this.player_.muted()||this.player_.volume()===0;var text=soundOff?'Unmute':'Mute';if(this.controlText()!==text){this.controlText(text)}};return MuteToggle}(Button);MuteToggle.prototype.controlText_='Mute';Component.registerComponent('MuteToggle',MuteToggle);var VolumePanel=function(_Component){inheritsLoose(VolumePanel,_C
1193omponent);function VolumePanel(player,options){var _this;if(options===void 0){options={}}
1194if(typeof options.inline!=='undefined'){options.inline=options.inline}else{options.inline=!0}
1195if(typeof options.volumeControl==='undefined'||isPlain(options.volumeControl)){options.volumeControl=options.volumeControl||{};options.volumeControl.vertical=!options.inline}
1196_this=_Component.call(this,player,options)||this;_this.on(player,['loadstart'],_this.volumePanelState_);_this.on(_this.muteToggle,'keyup',_this.handleKeyPress);_this.on(_this.volumeControl,'keyup',_this.handleVolumeControlKeyUp);_this.on('keydown',_this.handleKeyPress);_this.on('mouseover',_this.handleMouseOver);_this.on('mouseout',_this.handleMouseOut);_this.on(_this.volumeControl,['slideractive'],_this.sliderActive_);_this.on(_this.volumeControl,['sliderinactive'],_this.sliderInactive_);return _this}
1197var _proto=VolumePanel.prototype;_proto.sliderActive_=function sliderActive_(){this.addClass('vjs-slider-active')};_proto.sliderInactive_=function sliderInactive_(){this.removeClass('vjs-slider-active')};_proto.volumePanelState_=function volumePanelState_(){if(this.volumeControl.hasClass('vjs-hidden')&&this.muteToggle.hasClass('vjs-hidden')){this.addClass('vjs-hidden')}
1198if(this.volumeControl.hasClass('vjs-hidden')&&!this.muteToggle.hasClass('vjs-hidden')){this.addClass('vjs-mute-toggle-only')}};_proto.createEl=function createEl(){var orientationClass='vjs-volume-panel-horizontal';if(!this.options_.inline){orientationClass='vjs-volume-panel-vertical'}
1199return _Component.prototype.createEl.call(this,'div',{className:"vjs-volume-panel vjs-control "+orientationClass})};_proto.dispose=function dispose(){this.handleMouseOut();_Component.prototype.dispose.call(this)};_proto.handleVolumeControlKeyUp=function handleVolumeControlKeyUp(event){if(keycode.isEventKey(event,'Esc')){this.muteToggle.focus()}};_proto.handleMouseOver=function handleMouseOver(event){this.addClass('vjs-hover');on(document,'keyup',bind(this,this.handleKeyPress))};_proto.handleMouseOut=function handleMouseOut(event){this.removeClass('vjs-hover');off(document,'keyup',bind(this,this.handleKeyPress))};_proto.handleKeyPress=function handleKeyPress(event){if(keycode.isEventKey(event,'Esc')){this.handleMouseOut()}};return VolumePanel}(Component);VolumePanel.prototype.options_={children:['muteToggle','volumeControl']};Component.registerComponent('VolumePanel',VolumePanel);var Menu=function(_Component){inheritsLoose(Menu,_Component);function Menu(player,options){var _this;_this=_Component.call(this,player,options)||this;if(options){_this.menuButton_=options.menuButton}
1200_this.focusedChild_=-1;_this.on('keydown',_this.handleKeyDown);_this.boundHandleBlur_=bind(assertThisInitialized(_this),_this.handleBlur);_this.boundHandleTapClick_=bind(assertThisInitialized(_this),_this.handleTapClick);return _this}
1201var _proto=Menu.prototype;_proto.addEventListenerForItem=function addEventListenerForItem(component){if(!(component instanceof Component)){return}
1202this.on(component,'blur',this.boundHandleBlur_);this.on(component,['tap','click'],this.boundHandleTapClick_)};_proto.removeEventListenerForItem=function removeEventListenerForItem(component){if(!(component instanceof Component)){return}
1203this.off(component,'blur',this.boundHandleBlur_);this.off(component,['tap','click'],this.boundHandleTapClick_)};_proto.removeChild=function removeChild(component){if(typeof component==='string'){component=this.getChild(component)}
1204this.removeEventListenerForItem(component);_Component.prototype.removeChild.call(this,component)};_proto.addItem=function addItem(component){var childComponent=this.addChild(component);if(childComponent){this.addEventListenerForItem(childComponent)}};_proto.createEl=function createEl$1(){var contentElType=this.options_.contentElType||'ul';this.contentEl_=createEl(contentElType,{className:'vjs-menu-content'});this.contentEl_.setAttribute('role','menu');var el=_Component.prototype.createEl.call(this,'div',{append:this.contentEl_,className:'vjs-menu'});el.appendChild(this.contentEl_);on(el,'click',function(event){event.preventDefault();event.stopImmediatePropagation()});return el};_proto.dispose=function dispose(){this.contentEl_=null;this.boundHandleBlur_=null;this.boundHandleTapClick_=null;_Component.prototype.dispose.call(this)};_proto.handleBlur=function handleBlur(event){var relatedTarget=event.relatedTarget||document.activeElement;if(!this.children().some(function(element){return element.el()===relatedTarget})){var btn=this.menuButton_;if(btn&&btn.buttonPressed_&&relatedTarget!==btn.el().firstChild){btn.unpressButton()}}};_proto.handleTapClick=function handleTapClick(event){if(this.menuButton_){this.menuButton_.unpressButton();var childComponents=this.children();if(!Array.isArray(childComponents)){return}
1205var foundComponent=childComponents.filter(function(component){return component.el()===event.target})[0];if(!foundComponent){return}
1206if(foundComponent.name()!=='CaptionSettingsMenuItem'){this.menuButton_.focus()}}};_proto.handleKeyDown=function handleKeyDown(event){if(keycode.isEventKey(event,'Left')||keycode.isEventKey(event,'Down')){event.preventDefault();event.stopPropagation();this.stepForward()}else if(keycode.isEventKey(event,'Right')||keycode.isEventKey(event,'Up')){event.preventDefault();event.stopPropagation();this.stepBack()}};_proto.stepForward=function stepForward(){var stepChild=0;if(this.focusedChild_!==undefined){stepChild=this.focusedChild_+1}
1207this.focus(stepChild)};_proto.stepBack=function stepBack(){var stepChild=0;if(this.focusedChild_!==undefined){stepChild=this.focusedChild_-1}
1208this.focus(stepChild)};_proto.focus=function focus(item){if(item===void 0){item=0}
1209var children=this.children().slice();var haveTitle=children.length&&children[0].className&&/vjs-menu-title/.test(children[0].className);if(haveTitle){children.shift()}
1210if(children.length>
12100){if(item<0){item=0}else if(item>=children.length){item=children.length-1}
1211this.focusedChild_=item;children[item].el_.focus()}};return Menu}(Component);Component.registerComponent('Menu',Menu);var MenuButton=function(_Component){inheritsLoose(MenuButton,_Component);function MenuButton(player,options){var _this;if(options===void 0){options={}}
1212_this=_Component.call(this,player,options)||this;_this.menuButton_=new Button(player,options);_this.menuButton_.controlText(_this.controlText_);_this.menuButton_.el_.setAttribute('aria-haspopup','true');var buttonClass=Button.prototype.buildCSSClass();_this.menuButton_.el_.className=_this.buildCSSClass()+' '+buttonClass;_this.menuButton_.removeClass('vjs-control');_this.addChild(_this.menuButton_);_this.update();_this.enabled_=!0;_this.on(_this.menuButton_,'tap',_this.handleClick);_this.on(_this.menuButton_,'click',_this.handleClick);_this.on(_this.menuButton_,'keydown',_this.handleKeyDown);_this.on(_this.menuButton_,'mouseenter',function(){_this.addClass('vjs-hover');_this.menu.show();on(document,'keyup',bind(assertThisInitialized(_this),_this.handleMenuKeyUp))});_this.on('mouseleave',_this.handleMouseLeave);_this.on('keydown',_this.handleSubmenuKeyDown);return _this}
1213var _proto=MenuButton.prototype;_proto.update=function update(){var menu=this.createMenu();if(this.menu){this.menu.dispose();this.removeChild(this.menu)}
1214this.menu=menu;this.addChild(menu);this.buttonPressed_=!1;this.menuButton_.el_.setAttribute('aria-expanded','false');if(this.items&&this.items.length<=this.hideThreshold_){this.hide()}else{this.show()}};_proto.createMenu=function createMenu(){var menu=new Menu(this.player_,{menuButton:this});this.hideThreshold_=0;if(this.options_.title){var titleEl=createEl('li',{className:'vjs-menu-title',innerHTML:toTitleCase(this.options_.title),tabIndex:-1});this.hideThreshold_+=1;var titleComponent=new Component(this.player_,{el:titleEl});menu.addItem(titleComponent)}
1215this.items=this.createItems();if(this.items){for(var i=0;i<this.items.length;i++){menu.addItem(this.items[i])}}
1216return menu};_proto.createItems=function createItems(){};_proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,'div',{className:this.buildWrapperCSSClass()},{})};_proto.buildWrapperCSSClass=function buildWrapperCSSClass(){var menuButtonClass='vjs-menu-button';if(this.options_.inline===!0){menuButtonClass+='-inline'}else{menuButtonClass+='-popup'}
1217var buttonClass=Button.prototype.buildCSSClass();return"vjs-menu-button "+menuButtonClass+" "+buttonClass+" "+_Component.prototype.buildCSSClass.call(this)};_proto.buildCSSClass=function buildCSSClass(){var menuButtonClass='vjs-menu-button';if(this.options_.inline===!0){menuButtonClass+='-inline'}else{menuButtonClass+='-popup'}
1218return"vjs-menu-button "+menuButtonClass+" "+_Component.prototype.buildCSSClass.call(this)};_proto.controlText=function controlText(text,el){if(el===void 0){el=this.menuButton_.el()}
1219return this.menuButton_.controlText(text,el)};_proto.dispose=function dispose(){this.handleMouseLeave();_Component.prototype.dispose.call(this)};_proto.handleClick=function handleClick(event){if(this.buttonPressed_){this.unpressButton()}else{this.pressButton()}};_proto.handleMouseLeave=function handleMouseLeave(event){this.removeClass('vjs-hover');off(document,'keyup',bind(this,this.handleMenuKeyUp))};_proto.focus=function focus(){this.menuButton_.focus()};_proto.blur=function blur(){this.menuButton_.blur()};_proto.handleKeyDown=function handleKeyDown(event){if(keycode.isEventKey(event,'Esc')||keycode.isEventKey(event,'Tab')){if(this.buttonPressed_){this.unpressButton()}
1220if(!keycode.isEventKey(event,'Tab')){event.preventDefault();this.menuButton_.focus()}}else if(keycode.isEventKey(event,'Up')||keycode.isEventKey(event,'Down')){if(!this.buttonPressed_){event.preventDefault();this.pressButton()}}};_proto.handleMenuKeyUp=function handleMenuKeyUp(event){if(keycode.isEventKey(event,'Esc')||keycode.isEventKey(event,'Tab')){this.removeClass('vjs-hover')}};_proto.handleSubmenuKeyPress=function handleSubmenuKeyPress(event){this.handleSubmenuKeyDown(event)};_proto.handleSubmenuKeyDown=function handleSubmenuKeyDown(event){if(keycode.isEventKey(event,'Esc')||keycode.isEventKey(event,'Tab')){if(this.buttonPressed_){this.unpressButton()}
1221if(!keycode.isEventKey(event,'Tab')){event.preventDefault();this.menuButton_.focus()}}};_proto.pressButton=function pressButton(){if(this.enabled_){this.buttonPressed_=!0;this.menu.show();this.menu.lockShowing();this.menuButton_.el_.setAttribute('aria-expanded','true');
1221if(IS_IOS&&isInFrame()){return}
1222this.menu.focus()}};_proto.unpressButton=function unpressButton(){if(this.enabled_){this.buttonPressed_=!1;this.menu.unlockShowing();this.menu.hide();this.menuButton_.el_.setAttribute('aria-expanded','false')}};_proto.disable=function disable(){this.unpressButton();this.enabled_=!1;this.addClass('vjs-disabled');this.menuButton_.disable()};_proto.enable=function enable(){this.enabled_=!0;this.removeClass('vjs-disabled');this.menuButton_.enable()};return MenuButton}(Component);Component.registerComponent('MenuButton',MenuButton);var TrackButton=function(_MenuButton){inheritsLoose(TrackButton,_MenuButton);function TrackButton(player,options){var _this;var tracks=options.tracks;_this=_MenuButton.call(this,player,options)||this;if(_this.items.length<=1){_this.hide()}
1223if(!tracks){return assertThisInitialized(_this)}
1224var updateHandler=bind(assertThisInitialized(_this),_this.update);tracks.addEventListener('removetrack',updateHandler);tracks.addEventListener('addtrack',updateHandler);_this.player_.on('ready',updateHandler);_this.player_.on('dispose',function(){tracks.removeEventListener('removetrack',updateHandler);tracks.removeEventListener('addtrack',updateHandler)});return _this}
1225return TrackButton}(MenuButton);Component.registerComponent('TrackButton',TrackButton);var MenuKeys=['Tab','Esc','Up','Down','Right','Left'];var MenuItem=function(_ClickableComponent){inheritsLoose(MenuItem,_ClickableComponent);function MenuItem(player,options){var _this;_this=_ClickableComponent.call(this,player,options)||this;_this.selectable=options.selectable;_this.isSelected_=options.selected||!1;_this.multiSelectable=options.multiSelectable;_this.selected(_this.isSelected_);if(_this.selectable){if(_this.multiSelectable){_this.el_.setAttribute('role','menuitemcheckbox')}else{_this.el_.setAttribute('role','menuitemradio')}}else{_this.el_.setAttribute('role','menuitem')}
1226return _this}
1227var _proto=MenuItem.prototype;_proto.createEl=function createEl(type,props,attrs){this.nonIconControl=!0;return _ClickableComponent.prototype.createEl.call(this,'li',assign({className:'vjs-menu-item',innerHTML:"<span class=\"vjs-menu-item-text\">"+this.localize(this.options_.label)+"</span>",tabIndex:-1},props),attrs)};_proto.handleKeyDown=function handleKeyDown(event){if(!MenuKeys.some(function(key){return keycode.isEventKey(event,key)})){_ClickableComponent.prototype.handleKeyDown.call(this,event)}};_proto.handleClick=function handleClick(event){this.selected(!0)};_proto.selected=function selected(_selected){if(this.selectable){if(_selected){this.addClass('vjs-selected');this.el_.setAttribute('aria-checked','true');this.controlText(', selected');this.isSelected_=!0}else{this.removeClass('vjs-selected');this.el_.setAttribute('aria-checked','false');this.controlText('');this.isSelected_=!1}}};return MenuItem}(ClickableComponent);Component.registerComponent('MenuItem',MenuItem);var TextTrackMenuItem=function(_MenuItem){inheritsLoose(TextTrackMenuItem,_MenuItem);function TextTrackMenuItem(player,options){var _this;var track=options.track;var tracks=player.textTracks();options.label=track.label||track.language||'Unknown';options.selected=track.mode==='showing';_this=_MenuItem.call(this,player,options)||this;_this.track=track;_this.kinds=(options.kinds||[options.kind||_this.track.kind]).filter(Boolean);var changeHandler=function changeHandler(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}
1228_this.handleTracksChange.apply(assertThisInitialized(_this),args)};var selectedLanguageChangeHandler=function selectedLanguageChangeHandler(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++){args[_key2]=arguments[_key2]}
1229_this.handleSelectedLanguageChange.apply(assertThisInitialized(_this),args)};player.on(['loadstart','texttrackchange'],changeHandler);tracks.addEventListener('change',changeHandler);tracks.addEventListener('selectedlanguagechange',selectedLanguageChangeHandler);_this.on('dispose',function(){player.off(['loadstart','texttrackchange'],changeHandler);tracks.removeEventListener('change',changeHandler);tracks.removeEventListener('selectedlanguagechange',selectedLanguageChangeHandler)});if(tracks.onchange===undefined){var event;_this.on(['tap','click'],function(){if(typeof window$1.Event!=='object'){try{event=new window$1.Event('change')}catch(err){}}
1230if(!event){event=document.createEvent('Event');event.initEvent('change',!0,!0)}
1231tracks.dispatchEvent(event)})}
1232_this.handleTracksChange();return _this}
1233var _proto=TextTrackMenuItem.prototype;_proto.handleClick=function handleClick(event){var referenceTrack=this.track;var tracks=this.player_.textTracks();_MenuItem.prototype.handleClick.call(this,event);if(!tracks){return}
1234for(var i=0;i<tracks.length;i++){var track=tracks[i];if(this.kinds.indexOf(track.kind)===-1){continue}
1235if(track===referenceTrack){if(track.mode!=='showing'){track.mode='showing'}}else if(track.mode!=='disabled'){track.mode='disabled'}}};_proto.handleTracksChange=function handleTracksChange(event){var shouldBeSelected=this.track.mode==='showing';if(shouldBeSelected!==this.isSelected_){this.selected(shouldBeSelected)}};_proto.handleSelectedLanguageChange=function handleSelectedLanguageChange(event){if(this.track.mode==='showing'){var selectedLanguage=this.player_.cache_.selectedLanguage;if(selectedLanguage&&selectedLanguage.enabled&&selectedLanguage.language===this.track.language&&selectedLanguage.kind!==this.track.kind){return}
1236this.player_.cache_.selectedLanguage={enabled:!0,language:this.track.language,kind:this.track.kind}}};_proto.dispose=function dispose(){this.track=null;_MenuItem.prototype.dispose.call(this)};return TextTrackMenuItem}(MenuItem);Component.registerComponent('TextTrackMenuItem',TextTrackMenuItem);var OffTextTrackMenuItem=function(_TextTrackMenuItem){inheritsLoose(OffTextTrackMenuItem,_TextTrackMenuItem);function OffTextTrackMenuItem(player,options){options.track={player:player,kind:options.kind,kinds:options.kinds,"default":!1,mode:'disabled'};if(!options.kinds){options.kinds=[options.kind]}
1237if(options.label){options.track.label=options.label}else{options.track.label=options.kinds.join(' and ')+' off'}
1238options.selectable=!0;options.multiSelectable=!1;return _TextTrackMenuItem.call(this,player,options)||this}
1239var _proto=OffTextTrackMenuItem.prototype;_proto.handleTracksChange=function handleTracksChange(event){var tracks=this.player().textTracks();var shouldBeSelected=!0;for(var i=0,l=tracks.length;i<l;i++){var track=tracks[i];if(this.options_.kinds.indexOf(track.kind)>-1&&track.mode==='showing'){shouldBeSelected=!1;break}}
1240if(shouldBeSelected!==this.isSelected_){this.selected(shouldBeSelected)}};_proto.handleSelectedLanguageChange=function handleSelectedLanguageChange(event){var tracks=this.player().textTracks();var allHidden=!0;for(var i=0,l=tracks.length;i<l;i++){var track=tracks[i];if(['captions','descriptions','subtitles'].indexOf(track.kind)>-1&&track.mode==='showing'){allHidden=!1;break}}
1241if(allHidden){this.player_.cache_.selectedLanguage={enabled:!1}}};return OffTextTrackMenuItem}(TextTrackMenuItem);Component.registerComponent('OffTextTrackMenuItem',OffTextTrackMenuItem);
1241var TextTrackButton=function(_TrackButton){inheritsLoose(TextTrackButton,_TrackButton);function TextTrackButton(player,options){if(options===void 0){options={}}
1242options.tracks=player.textTracks();return _TrackButton.call(this,player,options)||this}
1243var _proto=TextTrackButton.prototype;_proto.createItems=function createItems(items,TrackMenuItem){if(items===void 0){items=[]}
1244if(TrackMenuItem===void 0){TrackMenuItem=TextTrackMenuItem}
1245var label;if(this.label_){label=this.label_+" off"}
1246items.push(new OffTextTrackMenuItem(this.player_,{kinds:this.kinds_,kind:this.kind_,label:label}));this.hideThreshold_+=1;var tracks=this.player_.textTracks();if(!Array.isArray(this.kinds_)){this.kinds_=[this.kind_]}
1247for(var i=0;i<tracks.length;i++){var track=tracks[i];if(this.kinds_.indexOf(track.kind)>-1){var item=new TrackMenuItem(this.player_,{track:track,kinds:this.kinds_,kind:this.kind_,selectable:!0,multiSelectable:!1});item.addClass("vjs-"+track.kind+"-menu-item");items.push(item)}}
1248return items};return TextTrackButton}(TrackButton);Component.registerComponent('TextTrackButton',TextTrackButton);var ChaptersTrackMenuItem=function(_MenuItem){inheritsLoose(ChaptersTrackMenuItem,_MenuItem);function ChaptersTrackMenuItem(player,options){var _this;var track=options.track;var cue=options.cue;var currentTime=player.currentTime();options.selectable=!0;options.multiSelectable=!1;options.label=cue.text;options.selected=cue.startTime<=currentTime&&currentTime<cue.endTime;_this=_MenuItem.call(this,player,options)||this;_this.track=track;_this.cue=cue;track.addEventListener('cuechange',bind(assertThisInitialized(_this),_this.update));return _this}
1249var _proto=ChaptersTrackMenuItem.prototype;_proto.handleClick=function handleClick(event){_MenuItem.prototype.handleClick.call(this);this.player_.currentTime(this.cue.startTime);this.update(this.cue.startTime)};_proto.update=function update(event){var cue=this.cue;var currentTime=this.player_.currentTime();this.selected(cue.startTime<=currentTime&&currentTime<cue.endTime)};return ChaptersTrackMenuItem}(MenuItem);Component.registerComponent('ChaptersTrackMenuItem',ChaptersTrackMenuItem);var ChaptersButton=function(_TextTrackButton){inheritsLoose(ChaptersButton,_TextTrackButton);function ChaptersButton(player,options,ready){return _TextTrackButton.call(this,player,options,ready)||this}
1250var _proto=ChaptersButton.prototype;_proto.buildCSSClass=function buildCSSClass(){return"vjs-chapters-button "+_TextTrackButton.prototype.buildCSSClass.call(this)};_proto.buildWrapperCSSClass=function buildWrapperCSSClass(){return"vjs-chapters-button "+_TextTrackButton.prototype.buildWrapperCSSClass.call(this)};_proto.update=function update(event){if(!this.track_||event&&(event.type==='addtrack'||event.type==='removetrack')){this.setTrack(this.findChaptersTrack())}
1251_TextTrackButton.prototype.update.call(this)};_proto.setTrack=function setTrack(track){if(this.track_===track){return}
1252if(!this.updateHandler_){this.updateHandler_=this.update.bind(this)}
1253if(this.track_){var remoteTextTrackEl=this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_);if(remoteTextTrackEl){remoteTextTrackEl.removeEventListener('load',this.updateHandler_)}
1254this.track_=null}
1255this.track_=track;if(this.track_){this.track_.mode='hidden';var _remoteTextTrackEl=this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_);if(_remoteTextTrackEl){_remoteTextTrackEl.addEventListener('load',this.updateHandler_)}}};
1255_proto.findChaptersTrack=function findChaptersTrack(){var tracks=this.player_.textTracks()||[];for(var i=tracks.length-1;i>=0;i--){var track=tracks[i];if(track.kind===this.kind_){return track}}};_proto.getMenuCaption=function getMenuCaption(){if(this.track_&&this.track_.label){return this.track_.label}
1256return this.localize(toTitleCase(this.kind_))};_proto.createMenu=function createMenu(){this.options_.title=this.getMenuCaption();return _TextTrackButton.prototype.createMenu.call(this)};_proto.createItems=function createItems(){var items=[];if(!this.track_){return items}
1257var cues=this.track_.cues;if(!cues){return items}
1258for(var i=0,l=cues.length;i<l;i++){var cue=cues[i];var mi=new ChaptersTrackMenuItem(this.player_,{track:this.track_,cue:cue});items.push(mi)}
1259return items};return ChaptersButton}(TextTrackButton);ChaptersButton.prototype.kind_='chapters';ChaptersButton.prototype.controlText_='Chapters';Component.registerComponent('ChaptersButton',ChaptersButton);var DescriptionsButton=function(_TextTrackButton){inheritsLoose(DescriptionsButton,_TextTrackButton);function DescriptionsButton(player,options,ready){var _this;_this=_TextTrackButton.call(this,player,options,ready)||this;var tracks=player.textTracks();var changeHandler=bind(assertThisInitialized(_this),_this.handleTracksChange);tracks.addEventListener('change',changeHandler);_this.on('dispose',function(){tracks.removeEventListener('change',changeHandler)});return _this}
1260var _proto=DescriptionsButton.prototype;_proto.handleTracksChange=function handleTracksChange(event){var tracks=this.player().textTracks();var disabled=!1;for(var i=0,l=tracks.length;i<l;i++){var track=tracks[i];if(track.kind!==this.kind_&&track.mode==='showing'){disabled=!0;break}}
1261if(disabled){this.disable()}else{this.enable()}};_proto.buildCSSClass=function buildCSSClass(){return"vjs-descriptions-button "+_TextTrackButton.prototype.buildCSSClass.call(this)};_proto.buildWrapperCSSClass=function buildWrapperCSSClass(){return"vjs-descriptions-button "+_TextTrackButton.prototype.buildWrapperCSSClass.call(this)};return DescriptionsButton}(TextTrackButton);DescriptionsButton.prototype.kind_='descriptions';DescriptionsButton.prototype.controlText_='Descriptions';Component.registerComponent('DescriptionsButton',DescriptionsButton);var SubtitlesButton=function(_TextTrackButton){inheritsLoose(SubtitlesButton,_TextTrackButton);function SubtitlesButton(player,options,ready){return _TextTrackButton.call(this,player,options,ready)||this}
1262var _proto=SubtitlesButton.prototype;_proto.buildCSSClass=function buildCSSClass(){return"vjs-subtitles-button "+_TextTrackButton.prototype.buildCSSClass.call(this)};_proto.buildWrapperCSSClass=function buildWrapperCSSClass(){return"vjs-subtitles-button "+_TextTrackButton.prototype.buildWrapperCSSClass.call(this)};return SubtitlesButton}(TextTrackButton);SubtitlesButton.prototype.kind_='subtitles';SubtitlesButton.prototype.controlText_='Subtitles';Component.registerComponent('SubtitlesButton',SubtitlesButton);var CaptionSettingsMenuItem=function(_TextTrackMenuItem){inheritsLoose(CaptionSettingsMenuItem,_TextTrackMenuItem);function CaptionSettingsMenuItem(player,options){var _this;options.track={player:player,kind:options.kind,label:options.kind+' settings',selectable:!1,"default":!1,mode:'disabled'};options.selectable=!1;options.name='CaptionSettingsMenuItem';_this=_TextTrackMenuItem.call(this,player,options)||this;_this.addClass('vjs-texttrack-settings');_this.controlText(', opens '+options.kind+' settings dialog');return _this}
1263var _proto=CaptionSettingsMenuItem.prototype;_proto.handleClick=function handleClick(event){this.player().getChild('textTrackSettings').open()};return CaptionSettingsMenuItem}(TextTrackMenuItem);Component.registerComponent('CaptionSettingsMenuItem',CaptionSettingsMenuItem);var CaptionsButton=function(_TextTrackButton){inheritsLoose(CaptionsButton,_TextTrackButton);function CaptionsButton(player,options,ready){return _TextTrackButton.call(this,player,options,ready)||this}
1264var _proto=CaptionsButton.prototype;_proto.buildCSSClass=function buildCSSClass(){return"vjs-captions-button "+_TextTrackButton.prototype.buildCSSClass.call(this)};_proto.buildWrapperCSSClass=function buildWrapperCSSClass(){return"vjs-captions-button "+_TextTrackButton.prototype.buildWrapperCSSClass.call(this)};_proto.createItems=function createItems(){var items=[];if(!(this.player().tech_&&this.player().tech_.featuresNativeTextTracks)&&this.player().getChild('textTrackSettings')){items.push(new CaptionSettingsMenuItem(this.player_,{kind:this.kind_}));this.hideThreshold_+=1}
1265return _TextTrackButton.prototype.createItems.call(this,items)};return CaptionsButton}(TextTrackButton);CaptionsButton.prototype.kind_='captions';CaptionsButton.prototype.controlText_='Captions';Component.registerComponent('CaptionsButton',CaptionsButton);var SubsCapsMenuItem=function(_TextTrackMenuItem){inheritsLoose(Sub
1265sCapsMenuItem,_TextTrackMenuItem);function SubsCapsMenuItem(){return _TextTrackMenuItem.apply(this,arguments)||this}
1266var _proto=SubsCapsMenuItem.prototype;_proto.createEl=function createEl(type,props,attrs){var innerHTML="<span class=\"vjs-menu-item-text\">"+this.localize(this.options_.label);if(this.options_.track.kind==='captions'){innerHTML+="\n        <span aria-hidden=\"true\" class=\"vjs-icon-placeholder\"></span>\n        <span class=\"vjs-control-text\"> "+this.localize('Captions')+"</span>\n      "}
1267innerHTML+='</span>';var el=_TextTrackMenuItem.prototype.createEl.call(this,type,assign({innerHTML:innerHTML},props),attrs);return el};return SubsCapsMenuItem}(TextTrackMenuItem);Component.registerComponent('SubsCapsMenuItem',SubsCapsMenuItem);var SubsCapsButton=function(_TextTrackButton){inheritsLoose(SubsCapsButton,_TextTrackButton);function SubsCapsButton(player,options){var _this;if(options===void 0){options={}}
1268_this=_TextTrackButton.call(this,player,options)||this;_this.label_='subtitles';if(['en','en-us','en-ca','fr-ca'].indexOf(_this.player_.language_)>-1){_this.label_='captions'}
1269_this.menuButton_.controlText(toTitleCase(_this.label_));return _this}
1270var _proto=SubsCapsButton.prototype;_proto.buildCSSClass=function buildCSSClass(){return"vjs-subs-caps-button "+_TextTrackButton.prototype.buildCSSClass.call(this)};_proto.buildWrapperCSSClass=function buildWrapperCSSClass(){return"vjs-subs-caps-button "+_TextTrackButton.prototype.buildWrapperCSSClass.call(this)};_proto.createItems=function createItems(){var items=[];if(!(this.player().tech_&&this.player().tech_.featuresNativeTextTracks)&&this.player().getChild('textTrackSettings')){items.push(new CaptionSettingsMenuItem(this.player_,{kind:this.label_}));this.hideThreshold_+=1}
1271items=_TextTrackButton.prototype.createItems.call(this,items,SubsCapsMenuItem);return items};return SubsCapsButton}(TextTrackButton);SubsCapsButton.prototype.kinds_=['captions','subtitles'];SubsCapsButton.prototype.controlText_='Subtitles';Component.registerComponent('SubsCapsButton',SubsCapsButton);var AudioTrackMenuItem=function(_MenuItem){inheritsLoose(AudioTrackMenuItem,_MenuItem);function AudioTrackMenuItem(player,options){var _this;var track=options.track;var tracks=player.audioTracks();options.label=track.label||track.language||'Unknown';options.selected=track.enabled;_this=_MenuItem.call(this,player,options)||this;_this.track=track;_this.addClass("vjs-"+track.kind+"-menu-item");var changeHandler=function changeHandler(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}
1272_this.handleTracksChange.apply(assertThisInitialized(_this),args)};tracks.addEventListener('change',changeHandler);_this.on('dispose',function(){tracks.removeEventListener('change',changeHandler)});return _this}
1273var _proto=AudioTrackMenuItem.prototype;_proto.createEl=function createEl(type,props,attrs){var innerHTML="<span class=\"vjs-menu-item-text\">"+this.localize(this.options_.label);if(this.options_.track.kind==='main-desc'){innerHTML+="\n        <span aria-hidden=\"true\" class=\"vjs-icon-placeholder\"></span>\n        <span class=\"vjs-control-text\"> "+this.localize('Descriptions')+"</span>\n      "}
1274innerHTML+='</span>';var el=_MenuItem.prototype.createEl.call(this,type,assign({innerHTML:innerHTML},props),attrs);return el};_proto.handleClick=function handleClick(event){var tracks=this.player_.audioTracks();_MenuItem.prototype.handleClick.call(this,event);for(var i=0;i<tracks.length;i++){var track=tracks[i];track.enabled=track===this.track}};_proto.handleTracksChange=function handleTracksChange(event){this.selected(this.track.enabled)};return AudioTrackMenuItem}(MenuItem);Component.registerComponent('AudioTrackMenuItem',AudioTrackMenuItem);var AudioTrackButton=function(_TrackButton){inheritsLoose(AudioTrackButton,_TrackButton);function AudioTrackButton(player,options){if(options===void 0){options={}}
1275options.tracks=player.audioTracks();return _TrackButton.call(this,player,options)||this}
1276var _proto=AudioTrackButton.prototype;_proto.buildCSSClass=function buildCSSClass(){return"vjs-audio-button "+_TrackButton.prototype.buildCSSClass.call(this)};_proto.buildWrapperCSSClass=function buildWrapperCSSClass(){return"vjs-audio-button "+_TrackButton.prototype.buildWrapperCSSClass.call(this)};_proto.createItems=function createItems(items){if(items===void 0){items=[]}
1277this.hideThreshold_=1;var tracks=this.player_.audioTracks();for(var i=0;i<tracks.length;i++){var track=tracks[i];items.push(new AudioTrackMenuItem(this.player_,{track:track,selectable:!0,multiSelectable:!1}))}
1278return items};return AudioTrackButton}(TrackButton);AudioTrackButton.prototype.controlText_='Audio Track';Component.registerComponent('AudioTrackButton',AudioTrackButton);var PlaybackRateMenuItem=function(_MenuItem){inheritsLoose(PlaybackRateMenuItem,_MenuItem);function PlaybackRateMenuItem(player,options){var _this;var label=options.rate;var rate=parseFloat(label,10);options.label=label;options.selected=rate===1;options.selectable=!0;options.multiSelectable=!1;_this=_MenuItem.call(this,player,options)||this;_this.label=label;_this.rate=rate;_this.on(player,'ratechange',_this.update);return _this}
1279var _proto=PlaybackRateMenuItem.prototype;_proto.handleClick=function handleClick(event){_MenuItem.prototype.handleClick.call(this);this.player().playbackRate(this.rate)};_proto.update=function update(event){this.selected(this.player().playbackRate()===this.rate)};return PlaybackRateMenuItem}(MenuItem);PlaybackRateMenuItem.prototype.contentElType='button';Component.registerComponent('PlaybackRateMenuItem',PlaybackRateMenuItem);var PlaybackRateMenuButton=function(_MenuButton){inheritsLoose(PlaybackRateMenuButton,_MenuButton);function PlaybackRateMenuButton(player,options){var _this;_this=_MenuButton.call(this,player,options)||this;_this.updateVisibility();_this.updateLabel();_this.on(player,'loadstart',_this.updateVisibility);_this.on(player,'ratechange',_this.updateLabel);return _this}
1280var _proto=PlaybackRateMenuButton.prototype;_proto.createEl=function createEl$1(){var el=_MenuButton.prototype.createEl.call(this);this.labelEl_=createEl('div',{className:'vjs-playback-rate-value',innerHTML:'1x'});el.appendChild(this.labelEl_);return el};_proto.dispose=function dispose(){this.labelEl_=null;_MenuButton.prototype.dispose.call(this)};_proto.buildCSSClass=function buildCSSClass(){return"vjs-playback-rate "+_MenuButton.prototype.buildCSSClass.call(this)};_proto.buildWrapperCSSClass=function buildWrapperCSSClass(){return"vjs-playback-rate "+_MenuButton.prototype.buildWrapperCSSClass.call(this)};_proto.createMenu=function createMenu(){var menu=new Menu(this.player());var rates=this.playbackRates();if(rates){for(var i=rates.length-1;i>=0;i--){menu.addChild(new PlaybackRateMenuItem(this.player(),{rate:rates[i]+'x'}))}}
1281return menu};_proto.updateARIAAttributes=function updateARIAAttributes(){this.el().setAttribute('aria-valuenow',this.player().playbackRate())};_proto.handleClick=function handleClick(event){var currentRate=this.player().playbackRate();var rates=this.playbackRates();var newRate=rates[0];for(var i=0;i<rates.length;i++){if(rates[i]>currentRate){newRate=rates[i];break}}
1282this.player().playbackRate(newRate)};_proto.playbackRates=function playbackRates(){return this.options_.playbackRates||this.options_.playerOptions&&this.options_.playerOptions.playbackRates};_proto.playbackRateSupported=function playbackRateSupported(){return this.player().tech_&&this.player().tech_.featuresPlaybackRate&&this.playbackRates()&&this.playbackRates().length>0};_proto.updateVisibility=function updateVisibility(event){if(this.playbackRateSupported()){this.removeClass('vjs-hidden')}else{this.addClass('vjs-hidden')}};_proto.updateLabel=function updateLabel(event){if(this.playbackRateSupported()){this.labelEl_.innerHTML=this.player().playbackRate()+'x'}};return PlaybackRateMenuButton}(MenuButton);PlaybackRateMenuButton.prototype.controlText_='Playback Rate';Component.registerComponent('PlaybackRateMenuButton',PlaybackRateMenuButton);var Spacer=function(_Component){inheritsLoose(Spacer,_Component);function Spacer(){return _Component.apply(this,arguments)||this}
1283var _proto=Spacer.prototype;_proto.buildCSSClass=function buildCSSClass(){return"vjs-spacer "+_Component.prototype.buildCSSClass.call(this)};_proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,'div',{className:this.buildCSSClass()})};return Spacer}(Component);Component.registerComponent('Spacer',Spacer);var CustomControlSpacer=function(_Spacer){inheritsLoose(CustomControlSpacer,_Spacer);function CustomControlSpacer(){return _Spacer.apply(this,arguments)||this}
1284var _proto=CustomControlSpacer.prototype;_proto.buildCSSClass=function buildCSSClass(){return"vjs-custom-control-spacer "+_Spacer.prototype.buildCSSClass.call(this)};_proto.createEl=function createEl(){var el=_Spacer.prototype.createEl.call(this,{className:this.buildCSSClass()});el.innerHTML="\xA0";return el};return CustomControlSpacer}(Spacer);Component.registerComponent('CustomControlSpacer',CustomControlSpacer);var ControlBar=function(_Component){inheritsLoose(ControlBar,_Component);function ControlBar(){return _Component.apply(this,arguments)||this}
1285var _proto=ControlBar.prototype;_proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,'div',{className:'vjs-control-bar',dir:'ltr'})};return ControlBar}(Component);ControlBar.prototype.options_={children:['playToggle','volumePanel','currentTimeDisplay','timeDivider','durationDisplay','progressControl','liveDisplay','seekToLive','remainingTimeDisplay','customControlSpacer','playbackRateMenuButton','chaptersButton','descriptionsButton','subsCapsButton','audioTrackButton','fullscreenToggle']};if('exitPictureInPicture' in document){ControlBar.prototype.options_.children.splice(ControlBar.prototype.options_.children.length-1,0,'pictureInPictureToggle')}
1286Component.registerComponent('ControlBar',ControlBar);var ErrorDisplay=function(_ModalDialog){inheritsLoose(ErrorDisplay,_ModalDialog);function ErrorDisplay(player,options){var _this;_this=_ModalDialog.call(this,player,options)||this;_this.on(player,'error',_this.open);return _this}
1287var _proto=ErrorDisplay.prototype;_proto.buildCSSClass=function buildCSSClass(){return"vjs-error-display "+_ModalDialog.prototype.buildCSSClass.call(this)};_proto.content=function content(){var error=this.player().error();return error?this.localize(error.message):''};return ErrorDisplay}(ModalDialog);ErrorDisplay.prototype.options_=_extends_1({}
1287,ModalDialog.prototype.options_,{pauseOnOpen:!1,fillAlways:!0,temporary:!1,uncloseable:!0});Component.registerComponent('ErrorDisplay',ErrorDisplay);var LOCAL_STORAGE_KEY='vjs-text-track-settings';var COLOR_BLACK=['#000','Black'];var COLOR_BLUE=['#00F','Blue'];var COLOR_CYAN=['#0FF','Cyan'];var COLOR_GREEN=['#0F0','Green'];var COLOR_MAGENTA=['#F0F','Magenta'];var COLOR_RED=['#F00','Red'];var COLOR_WHITE=['#FFF','White'];var COLOR_YELLOW=['#FF0','Yellow'];var OPACITY_OPAQUE=['1','Opaque'];var OPACITY_SEMI=['0.5','Semi-Transparent'];var OPACITY_TRANS=['0','Transparent'];var selectConfigs={backgroundColor:{selector:'.vjs-bg-color > select',id:'captions-background-color-%s',label:'Color',options:[COLOR_BLACK,COLOR_WHITE,COLOR_RED,COLOR_GREEN,COLOR_BLUE,COLOR_YELLOW,COLOR_MAGENTA,COLOR_CYAN]},backgroundOpacity:{selector:'.vjs-bg-opacity > select',id:'captions-background-opacity-%s',label:'Transparency',options:[OPACITY_OPAQUE,OPACITY_SEMI,OPACITY_TRANS]},color:{selector:'.vjs-fg-color > select',id:'captions-foreground-color-%s',label:'Color',options:[COLOR_WHITE,COLOR_BLACK,COLOR_RED,COLOR_GREEN,COLOR_BLUE,COLOR_YELLOW,COLOR_MAGENTA,COLOR_CYAN]},edgeStyle:{selector:'.vjs-edge-style > select',id:'%s',label:'Text Edge Style',options:[['none','None'],['raised','Raised'],['depressed','Depressed'],['uniform','Uniform'],['dropshadow','Dropshadow']]},fontFamily:{selector:'.vjs-font-family > select',id:'captions-font-family-%s',label:'Font Family',options:[['proportionalSansSerif','Proportional Sans-Serif'],['monospaceSansSerif','Monospace Sans-Serif'],['proportionalSerif','Proportional Serif'],['monospaceSerif','Monospace Serif'],['casual','Casual'],['script','Script'],['small-caps','Small Caps']]},fontPercent:{selector:'.vjs-font-percent > select',id:'captions-font-size-%s',label:'Font Size',options:[['0.50','50%'],['0.75','75%'],['1.00','100%'],['1.25','125%'],['1.50','150%'],['1.75','175%'],['2.00','200%'],['3.00','300%'],['4.00','400%']],"default":2,parser:function parser(v){return v==='1.00'?null:Number(v)}},textOpacity:{selector:'.vjs-text-opacity > select',id:'captions-foreground-opacity-%s',label:'Transparency',options:[OPACITY_OPAQUE,OPACITY_SEMI]},windowColor:{selector:'.vjs-window-color > select',id:'captions-window-color-%s',label:'Color'},windowOpacity:{selector:'.vjs-window-opacity > select',id:'captions-window-opacity-%s',label:'Transparency',options:[OPACITY_TRANS,OPACITY_SEMI,OPACITY_OPAQUE]}};selectConfigs.windowColor.options=selectConfigs.backgroundColor.options;function parseOptionValue(value,parser){if(parser){value=parser(value)}
1288if(value&&value!=='none'){return value}}
1289function getSelectedOptionValue(el,parser){var value=el.options[el.options.selectedIndex].value;return parseOptionValue(value,parser)}
1290function setSelectedOption(el,value,parser){if(!value){return}
1291for(var i=0;i<el.options.length;i++){if(parseOptionValue(el.options[i].value,parser)===value){el.selectedIndex=i;break}}}
1292var TextTrackSettings=function(_ModalDialog){inheritsLoose(TextTrackSettings,_ModalDialog);function TextTrackSettings(player,options){var _this;options.temporary=!1;_this=_ModalDialog.call(this,player,options)||this;_this.updateDisplay=bind(assertThisInitialized(_this),_this.updateDisplay);_this.fill();_this.hasBeenOpened_=_this.hasBeenFilled_=!0;_this.endDialog=createEl('p',{className:'vjs-control-text',textContent:_this.localize('End of dialog window.')});_this.el().appendChild(_this.endDialog);_this.setDefaults();if(options.persistTextTrackSettings===undefined){_this.options_.persistTextTrackSettings=_this.options_.playerOptions.persistTextTrackSettings}
1293_this.on(_this.$('.vjs-done-button'),'click',function(){_this.saveSettings();_this.close()});_this.on(_this.$('.vjs-default-button'),'click',function(){_this.setDefaults();_this.updateDisplay()});each(selectConfigs,function(config){_this.on(_this.$(config.selector),'change',_this.updateDisplay)});if(_this.options_.persistTextTrackSettings){_this.restoreSettings()}
1294return _this}
1295var _proto=TextTrackSettings.prototype;_proto.dispose=function dispose(){this.endDialog=null;_ModalDialog.prototype.dispose.call(this)};_proto.createElSelect_=function createElSelect_(key,legendId,type){var _this2=this;if(legendId===void 0){legendId=''}
1296if(type===void 0){type='label'}
1297var config=selectConfigs[key];var id=config.id.replace('%s',this.id_);var selectLabelledbyIds=[legendId,id].join(' ').trim();return["<"+type+" id=\""+id+"\" class=\""+(type==='label'?'vjs-label':'')+"\">",this.localize(config.label),"</"+type+">","<select aria-labelledby=\""+selectLabelledbyIds+"\">"].concat(config.options.map(function(o){var optionId=id+'-'+o[1].replace(/\W+/g,'');return["<option id=\""+optionId+"\" value=\""+o[0]+"\" ","aria-labelledby=\""+selectLabelledbyIds+" "+optionId+"\">",_this2.localize(o[1]),'</option>'].join('')}
1297)).concat('</select>').join('')};_proto.createElFgColor_=function createElFgColor_(){var legendId="captions-text-legend-"+this.id_;return['<fieldset class="vjs-fg-color vjs-track-setting">',"<legend id=\""+legendId+"\">",this.localize('Text'),'</legend>',this.createElSelect_('color',legendId),'<span class="vjs-text-opacity vjs-opacity">',this.createElSelect_('textOpacity',legendId),'</span>','</fieldset>'].join('')};_proto.createElBgColor_=function createElBgColor_(){var legendId="captions-background-"+this.id_;return['<fieldset class="vjs-bg-color vjs-track-setting">',"<legend id=\""+legendId+"\">",this.localize('Background'),'</legend>',this.createElSelect_('backgroundColor',legendId),'<span class="vjs-bg-opacity vjs-opacity">',this.createElSelect_('backgroundOpacity',legendId),'</span>','</fieldset>'].join('')};_proto.createElWinColor_=function createElWinColor_(){var legendId="captions-window-"+this.id_;return['<fieldset class="vjs-window-color vjs-track-setting">',"<legend id=\""+legendId+"\">",this.localize('Window'),'</legend>',this.createElSelect_('windowColor',legendId),'<span class="vjs-window-opacity vjs-opacity">',this.createElSelect_('windowOpacity',legendId),'</span>','</fieldset>'].join('')};_proto.createElColors_=function createElColors_(){return createEl('div',{className:'vjs-track-settings-colors',innerHTML:[this.createElFgColor_(),this.createElBgColor_(),this.createElWinColor_()].join('')})};_proto.createElFont_=function createElFont_(){return createEl('div',{className:'vjs-track-settings-font',innerHTML:['<fieldset class="vjs-font-percent vjs-track-setting">',this.createElSelect_('fontPercent','','legend'),'</fieldset>','<fieldset class="vjs-edge-style vjs-track-setting">',this.createElSelect_('edgeStyle','','legend'),'</fieldset>','<fieldset class="vjs-font-family vjs-track-setting">',this.createElSelect_('fontFamily','','legend'),'</fieldset>'].join('')})};_proto.createElControls_=function createElControls_(){var defaultsDescription=this.localize('restore all settings to the default values');return createEl('div',{className:'vjs-track-settings-controls',innerHTML:["<button type=\"button\" class=\"vjs-default-button\" title=\""+defaultsDescription+"\">",this.localize('Reset'),"<span class=\"vjs-control-text\"> "+defaultsDescription+"</span>",'</button>',"<button type=\"button\" class=\"vjs-done-button\">"+this.localize('Done')+"</button>"].join('')})};_proto.content=function content(){return[this.createElColors_(),this.createElFont_(),this.createElControls_()]};_proto.label=function label(){return this.localize('Caption Settings Dialog')};_proto.description=function description(){return this.localize('Beginning of dialog window. Escape will cancel and close the window.')};_proto.buildCSSClass=function buildCSSClass(){return _ModalDialog.prototype.buildCSSClass.call(this)+' vjs-text-track-settings'};_proto.getValues=function getValues(){var _this3=this;return reduce(selectConfigs,function(accum,config,key){var value=getSelectedOptionValue(_this3.$(config.selector),config.parser);if(value!==undefined){accum[key]=value}
1298return accum},{})};_proto.setValues=function setValues(values){var _this4=this;each(selectConfigs,function(config,key){setSelectedOption(_this4.$(config.selector),values[key],config.parser)})};_proto.setDefaults=function setDefaults(){var _this5=this;each(selectConfigs,function(config){var index=config.hasOwnProperty('default')?config["default"]:0;_this5.$(config.selector).selectedIndex=index})};_proto.restoreSettings=function restoreSettings(){var values;try{values=JSON.parse(window$1.localStorage.getItem(LOCAL_STORAGE_KEY))}catch(err){log.warn(err)}
1299if(values){this.setValues(values)}};_proto.saveSettings=function saveSettings(){if(!this.options_.persistTextTrackSettings){return}
1300var values=this.getValues();try{if(Object.keys(values).length){window$1.localStorage.setItem(LOCAL_STORAGE_KEY,JSON.stringify(values))}else{window$1.localStorage.removeItem(LOCAL_STORAGE_KEY)}}catch(err){log.warn(err)}};_proto.updateDisplay=function updateDisplay(){var ttDisplay=this.player_.getChild('textTrackDisplay');if(ttDisplay){ttDisplay.updateDisplay()}};_proto.conditionalBlur_=function conditionalBlur_(){this.previouslyActiveEl_=null;var cb=this.player_.controlBar;var subsCapsBtn=cb&&cb.subsCapsButton;var ccBtn=cb&&cb.captionsButton;if(subsCapsBtn){subsCapsBtn.focus()}else if(ccBtn){ccBtn.focus()}};return TextTrackSettings}(ModalDialog);Component.registerComponent('TextTrackSettings',TextTrackSettings);var ResizeManager=function(_Component){inheritsLoose(ResizeManager,_Component);function ResizeManager(player,options){var _this;
1300var RESIZE_OBSERVER_AVAILABLE=options.ResizeObserver||window$1.ResizeObserver;if(options.ResizeObserver===null){RESIZE_OBSERVER_AVAILABLE=!1}
1301var options_=mergeOptions({createEl:!RESIZE_OBSERVER_AVAILABLE,reportTouchActivity:!1},options);_this=_Component.call(this,player,options_)||this;_this.ResizeObserver=options.ResizeObserver||window$1.ResizeObserver;_this.loadListener_=null;_this.resizeObserver_=null;_this.debouncedHandler_=debounce(function(){_this.resizeHandler()},100,!1,assertThisInitialized(_this));if(RESIZE_OBSERVER_AVAILABLE){_this.resizeObserver_=new _this.ResizeObserver(_this.debouncedHandler_);_this.resizeObserver_.observe(player.el())}else{_this.loadListener_=function(){if(!_this.el_||!_this.el_.contentWindow){return}
1302var debouncedHandler_=_this.debouncedHandler_;var unloadListener_=_this.unloadListener_=function(){off(this,'resize',debouncedHandler_);off(this,'unload',unloadListener_);unloadListener_=null};on(_this.el_.contentWindow,'unload',unloadListener_);on(_this.el_.contentWindow,'resize',debouncedHandler_)};_this.one('load',_this.loadListener_)}
1303return _this}
1304var _proto=ResizeManager.prototype;_proto.createEl=function createEl(){return _Component.prototype.createEl.call(this,'iframe',{className:'vjs-resize-manager',tabIndex:-1},{'aria-hidden':'true'})};_proto.resizeHandler=function resizeHandler(){if(!this.player_||!this.player_.trigger){return}
1305this.player_.trigger('playerresize')};_proto.dispose=function dispose(){if(this.debouncedHandler_){this.debouncedHandler_.cancel()}
1306if(this.resizeObserver_){if(this.player_.el()){this.resizeObserver_.unobserve(this.player_.el())}
1307this.resizeObserver_.disconnect()}
1308if(this.loadListener_){this.off('load',this.loadListener_)}
1309if(this.el_&&this.el_.contentWindow&&this.unloadListener_){this.unloadListener_.call(this.el_.contentWindow)}
1310this.ResizeObserver=null;this.resizeObserver=null;this.debouncedHandler_=null;this.loadListener_=null;_Component.prototype.dispose.call(this)};return ResizeManager}(Component);Component.registerComponent('ResizeManager',ResizeManager);var median=function median(arr){var mid=Math.floor(arr.length/2);var sortedList=[].concat(arr).sort(function(a,b){return a-b});return arr.length%2!==0?sortedList[mid]:(sortedList[mid-1]+sortedList[mid])/2};var LiveTracker=function(_Component){inheritsLoose(LiveTracker,_Component);function LiveTracker(player,options){var _this;var options_=mergeOptions({createEl:!1},options);_this=_Component.call(this,player,options_)||this;_this.reset_();_this.on(_this.player_,'durationchange',_this.handleDurationchange);if(IE_VERSION&&'hidden' in document&&'visibilityState' in document){_this.on(document,'visibilitychange',_this.handleVisibilityChange)}
1311return _this}
1312var _proto=LiveTracker.prototype;_proto.handleVisibilityChange=function handleVisibilityChange(){if(this.player_.duration()!==Infinity){return}
1313if(document.hidden){this.stopTracking()}else{this.startTracking()}};
1313_proto.isBehind_=function isBehind_(){if(!this.timeupdateSeen_){return!1}
1314var liveCurrentTime=this.liveCurrentTime();var currentTime=this.player_.currentTime();var liveEdgeWindow=this.seekableIncrement_*2+0.07;return liveCurrentTime!==Infinity&&liveCurrentTime-liveEdgeWindow>=currentTime};_proto.trackLive_=function trackLive_(){this.pastSeekEnd_=this.pastSeekEnd_;var seekable=this.player_.seekable();if(!seekable||!seekable.length){return}
1315var newSeekEnd=this.seekableEnd();if(newSeekEnd!==this.lastSeekEnd_){if(this.lastSeekEnd_){this.seekableIncrementList_=this.seekableIncrementList_.slice(-11);this.seekableIncrementList_.push(Math.abs(newSeekEnd-this.lastSeekEnd_));if(this.seekableIncrementList_.length>3){this.seekableIncrement_=median(this.seekableIncrementList_)}}
1316this.pastSeekEnd_=0;this.lastSeekEnd_=newSeekEnd;this.trigger('seekableendchange')}
1317if(this.pastSeekEnd()>this.seekableIncrement_*1.5){this.pastSeekEnd_=0}else{this.pastSeekEnd_=this.pastSeekEnd()+0.03}
1318if(this.isBehind_()!==this.behindLiveEdge()){this.behindLiveEdge_=this.isBehind_();this.trigger('liveedgechange')}};_proto.handleDurationchange=function handleDurationchange(){if(this.player_.duration()===Infinity){this.startTracking()}else{this.stopTracking()}};_proto.startTracking=function startTracking(){var _this2=this;if(this.isTracking()){return}
1319if(!this.timeupdateSeen_){this.timeupdateSeen_=this.player_.hasStarted()}
1320this.trackingInterval_=this.setInterval(this.trackLive_,30);this.trackLive_();this.on(this.player_,'play',this.trackLive_);this.on(this.player_,'pause',this.trackLive_);if(!this.timeupdateSeen_){this.one(this.player_,'play',this.handlePlay);this.handleTimeupdate=function(){_this2.timeupdateSeen_=!0;_this2.handleTimeupdate=null};this.one(this.player_,'timeupdate',this.handleTimeupdate)}};_proto.handlePlay=function handlePlay(){this.one(this.player_,'timeupdate',this.seekToLiveEdge)};_proto.reset_=function reset_(){this.pastSeekEnd_=0;this.lastSeekEnd_=null;this.behindLiveEdge_=null;this.timeupdateSeen_=!1;this.clearInterval(this.trackingInterval_);this.trackingInterval_=null;this.seekableIncrement_=12;this.seekableIncrementList_=[];this.off(this.player_,'play',this.trackLive_);this.off(this.player_,'pause',this.trackLive_);this.off(this.player_,'play',this.handlePlay);this.off(this.player_,'timeupdate',this.seekToLiveEdge);if(this.handleTimeupdate){this.off(this.player_,'timeupdate',this.handleTimeupdate);this.handleTimeupdate=null}};_proto.stopTracking=function stopTracking(){if(!this.isTracking()){return}
1321this.reset_()};_proto.seekableEnd=function seekableEnd(){var seekable=this.player_.seekable();var seekableEnds=[];var i=seekable?seekable.length:0;while(i--){seekableEnds.push(seekable.end(i))}
1322return seekableEnds.length?seekableEnds.sort()[seekableEnds.length-1]:Infinity};_proto.seekableStart=function seekableStart(){var seekable=this.player_.seekable();var seekableStarts=[];var i=seekable?seekable.length:0;while(i--){seekableStarts.push(seekable.start(i))}
1323return seekableStarts.length?seekableStarts.sort()[0]:0};_proto.liveWindow=function liveWindow(){var liveCurrentTime=this.liveCurrentTime();if(liveCurrentTime===Infinity){return Infinity}
1324return liveCurrentTime-this.seekableStart()};_proto.isLive=function isLive(){return this.isTracking()};_proto.atLiveEdge=function atLiveEdge(){return!this.behindLiveEdge()};_proto.liveCurrentTime=function liveCurrentTime(){return this.pastSeekEnd()+this.seekableEnd()};_proto.pastSeekEnd=function pastSeekEnd(){return this.pastSeekEnd_};_proto.behindLiveEdge=function behindLiveEdge(){return this.behindLiveEdge_};_proto.isTracking=function isTracking(){return typeof this.trackingInterval_==='number'};_proto.seekToLiveEdge=function seekToLiveEdge(){if(this.atLiveEdge()){return}
1325this.player_.currentTime(this.liveCurrentTime());if(this.player_.paused()){this.player_.play()}};_proto.dispose=function dispose(){this.stopTracking();_Component.prototype.dispose.call(this)};return LiveTracker}(Component);Component.registerComponent('LiveTracker',LiveTracker);var sourcesetLoad=function sourcesetLoad(tech){var el=tech.el();if(el.hasAttribute('src')){tech.triggerSourceset(el.src);return!0}
1326var sources=tech.$$('source');var srcUrls=[];var src='';if(!sources.length){return!1}
1327for(var i=0;i<sources.length;i++){var url=sources[i].src;if(url&&srcUrls.indexOf(url)===-1){srcUrls.push(url)}}
1328if(!srcUrls.length){return!1}
1329if(srcUrls.length===1){src=srcUrls[0]}
1330tech.triggerSourceset(src);return!0};var innerHTMLDescriptorPolyfill=Object.defineProperty({},'innerHTML',{get:function get(){return this.cloneNode(!0).innerHTML},set:function set(v){var dummy=document.createElement(this.nodeName.toLowerCase());dummy.innerHTML=v;
1330var docFrag=document.createDocumentFragment();while(dummy.childNodes.length){docFrag.appendChild(dummy.childNodes[0])}
1331this.innerText='';window$1.Element.prototype.appendChild.call(this,docFrag);return this.innerHTML}});var getDescriptor=function getDescriptor(priority,prop){var descriptor={};for(var i=0;i<priority.length;i++){descriptor=Object.getOwnPropertyDescriptor(priority[i],prop);if(descriptor&&descriptor.set&&descriptor.get){break}}
1332descriptor.enumerable=!0;descriptor.configurable=!0;return descriptor};var getInnerHTMLDescriptor=function getInnerHTMLDescriptor(tech){return getDescriptor([tech.el(),window$1.HTMLMediaElement.prototype,window$1.Element.prototype,innerHTMLDescriptorPolyfill],'innerHTML')};var firstSourceWatch=function firstSourceWatch(tech){var el=tech.el();if(el.resetSourceWatch_){return}
1333var old={};var innerDescriptor=getInnerHTMLDescriptor(tech);var appendWrapper=function appendWrapper(appendFn){return function(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}
1334var retval=appendFn.apply(el,args);sourcesetLoad(tech);return retval}};['append','appendChild','insertAdjacentHTML'].forEach(function(k){if(!el[k]){return}
1335old[k]=el[k];el[k]=appendWrapper(old[k])});Object.defineProperty(el,'innerHTML',mergeOptions(innerDescriptor,{set:appendWrapper(innerDescriptor.set)}));el.resetSourceWatch_=function(){el.resetSourceWatch_=null;
1335Object.keys(old).forEach(function(k){el[k]=old[k]});Object.defineProperty(el,'innerHTML',innerDescriptor)};tech.one('sourceset',el.resetSourceWatch_)};var srcDescriptorPolyfill=Object.defineProperty({},'src',{get:function get(){if(this.hasAttribute('src')){return getAbsoluteURL(window$1.Element.prototype.getAttribute.call(this,'src'))}
1336return''},set:function set(v){window$1.Element.prototype.setAttribute.call(this,'src',v);return v}});var getSrcDescriptor=function getSrcDescriptor(tech){return getDescriptor([tech.el(),window$1.HTMLMediaElement.prototype,srcDescriptorPolyfill],'src')};var setupSourceset=function setupSourceset(tech){if(!tech.featuresSourceset){return}
1337var el=tech.el();if(el.resetSourceset_){return}
1338var srcDescriptor=getSrcDescriptor(tech);var oldSetAttribute=el.setAttribute;var oldLoad=el.load;Object.defineProperty(el,'src',mergeOptions(srcDescriptor,{set:function set(v){var retval=srcDescriptor.set.call(el,v);tech.triggerSourceset(el.src);return retval}}));el.setAttribute=function(n,v){var retval=oldSetAttribute.call(el,n,v);if(/src/i.test(n)){tech.triggerSourceset(el.src)}
1339return retval};el.load=function(){var retval=oldLoad.call(el);if(!sourcesetLoad(tech)){tech.triggerSourceset('');firstSourceWatch(tech)}
1340return retval};if(el.currentSrc){tech.triggerSourceset(el.currentSrc)}else if(!sourcesetLoad(tech)){firstSourceWatch(tech)}
1341el.resetSourceset_=function(){el.resetSourceset_=null;el.load=oldLoad;el.setAttribute=oldSetAttribute;Object.defineProperty(el,'src',srcDescriptor);if(el.resetSourceWatch_){el.resetSourceWatch_()}}};var defineLazyProperty=function defineLazyProperty(obj,key,getValue,setter){if(setter===void 0){setter=!0}
1342var set=function set(value){return Object.defineProperty(obj,key,{value:value,enumerable:!0,writable:!0})};var options={configurable:!0,enumerable:!0,get:function get(){var value=getValue();set(value);return value}};if(setter){options.set=set}
1343return Object.defineProperty(obj,key,options)};var Html5=function(_Tech){inheritsLoose(Html5,_Tech);function Html5(options,ready){var _this;_this=_Tech.call(this,options,ready)||this;var source=options.source;var crossoriginTracks=!1;if(source&&(_this.el_.currentSrc!==source.src||options.tag&&options.tag.
1343initNetworkState_===3)){_this.setSource(source)}else{_this.handleLateInit_(_this.el_)}
1344if(options.enableSourceset){_this.setupSourcesetHandling_()}
1345if(_this.el_.hasChildNodes()){var nodes=_this.el_.childNodes;var nodesLength=nodes.length;var removeNodes=[];while(nodesLength--){var node=nodes[nodesLength];var nodeName=node.nodeName.toLowerCase();if(nodeName==='track'){if(!_this.featuresNativeTextTracks){removeNodes.push(node)}else{_this.remoteTextTrackEls().addTrackElement_(node);_this.remoteTextTracks().addTrack(node.track);_this.textTracks().addTrack(node.track);if(!crossoriginTracks&&!_this.el_.hasAttribute('crossorigin')&&isCrossOrigin(node.src)){crossoriginTracks=!0}}}}
1346for(var i=0;i<removeNodes.length;i++){_this.el_.removeChild(removeNodes[i])}}
1347_this.proxyNativeTracks_();if(_this.featuresNativeTextTracks&&crossoriginTracks){log.warn('Text Tracks are being loaded from another origin but the crossorigin attribute isn\'t used.\n'+'This may prevent text tracks from loading.')}
1348_this.restoreMetadataTracksInIOSNativePlayer_();if((TOUCH_ENABLED||IS_IPHONE||IS_NATIVE_ANDROID)&&options.nativeControlsForTouch===!0){_this.setControls(!0)}
1349_this.proxyWebkitFullscreen_();_this.triggerReady();return _this}
1350var _proto=Html5.prototype;_proto.dispose=function dispose(){if(this.el_&&this.el_.resetSourceset_){this.el_.resetSourceset_()}
1351Html5.disposeMediaElement(this.el_);this.options_=null;_Tech.prototype.dispose.call(this)};_proto.setupSourcesetHandling_=function setupSourcesetHandling_(){setupSourceset(this)};_proto.restoreMetadataTracksInIOSNativePlayer_=function restoreMetadataTracksInIOSNativePlayer_(){var textTracks=this.textTracks();var metadataTracksPreFullscreenState;var takeMetadataTrackSnapshot=function takeMetadataTrackSnapshot(){metadataTracksPreFullscreenState=[];for(var i=0;i<textTracks.length;i++){var track=textTracks[i];if(track.kind==='metadata'){metadataTracksPreFullscreenState.push({track:track,storedMode:track.mode})}}};takeMetadataTrackSnapshot();textTracks.addEventListener('change',takeMetadataTrackSnapshot);this.on('dispose',function(){return textTracks.removeEventListener('change',takeMetadataTrackSnapshot)});var restoreTrackMode=function restoreTrackMode(){for(var i=0;i<metadataTracksPreFullscreenState.length;i++){var storedTrack=metadataTracksPreFullscreenState[i];if(storedTrack.track.mode==='disabled'&&storedTrack.track.mode!==storedTrack.storedMode){storedTrack.track.mode=storedTrack.storedMode}}
1352textTracks.removeEventListener('change',restoreTrackMode)};this.on('webkitbeginfullscreen',function(){textTracks.removeEventListener('change',takeMetadataTrackSnapshot);textTracks.removeEventListener('change',restoreTrackMode);textTracks.addEventListener('change',restoreTrackMode)});this.on('webkitendfullscreen',function(){textTracks.removeEventListener('change',takeMetadataTrackSnapshot);textTracks.addEventListener('change',takeMetadataTrackSnapshot);textTracks.removeEventListener('change',restoreTrackMode)})};_proto.overrideNative_=function overrideNative_(type,override){var _this2=this;if(override!==this["featuresNative"+type+"Tracks"]){return}
1353var lowerCaseType=type.toLowerCase();if(this[lowerCaseType+"TracksListeners_"]){Object.keys(this[lowerCaseType+"TracksListeners_"]).forEach(function(eventName){var elTracks=_this2.el()[lowerCaseType+"Tracks"];elTracks.removeEventListener(eventName,_this2[lowerCaseType+"TracksListeners_"][eventName])})}
1354this["featuresNative"+type+"Tracks"]=!override;this[lowerCaseType+"TracksListeners_"]=null;this.proxyNativeTracksForType_(lowerCaseType)};_proto.overrideNativeAudioTracks=function overrideNativeAudioTracks(override){this.overrideNative_('Audio',override)};_proto.overrideNativeVideoTracks=function overrideNativeVideoTracks(override){this.overrideNative_('Video',override)};_proto.proxyNativeTracksForType_=function proxyNativeTracksForType_(name){var _this3=this;var props=NORMAL[name];var elTracks=this.el()[props.getterName];var techTracks=this[props.getterName]();if(!this["featuresNative"+props.capitalName+"Tracks"]||!elTracks||!elTracks.addEventListener){return}
1355var listeners={change:function change(e){techTracks.trigger({type:'change',target:techTracks,currentTarget:techTracks,srcElement:techTracks})},addtrack:function addtrack(e){techTracks.addTrack(e.track)},removetrack:function removetrack(e){techTracks.removeTrack(e.track)}};var removeOldTracks=function removeOldTracks(){var removeTracks=[];for(var i=0;i<techTracks.length;i++){var found=!1;for(var j=0;j<elTracks.length;
1355j++){if(elTracks[j]===techTracks[i]){found=!0;break}}
1356if(!found){removeTracks.push(techTracks[i])}}
1357while(removeTracks.length){techTracks.removeTrack(removeTracks.shift())}};this[props.getterName+'Listeners_']=listeners;Object.keys(listeners).forEach(function(eventName){var listener=listeners[eventName];elTracks.addEventListener(eventName,listener);_this3.on('dispose',function(e){return elTracks.removeEventListener(eventName,listener)})});this.on('loadstart',removeOldTracks);this.on('dispose',function(e){return _this3.off('loadstart',removeOldTracks)})};_proto.proxyNativeTracks_=function proxyNativeTracks_(){var _this4=this;NORMAL.names.forEach(function(name){_this4.proxyNativeTracksForType_(name)})};_proto.createEl=function createEl(){var el=this.options_.tag;if(!el||!(this.options_.playerElIngest||this.movingMediaElementInDOM)){if(el){var clone=el.cloneNode(!0);if(el.parentNode){el.parentNode.insertBefore(clone,el)}
1358Html5.disposeMediaElement(el);el=clone}else{el=document.createElement('video');var tagAttributes=this.options_.tag&&getAttributes(this.options_.tag);var attributes=mergeOptions({},tagAttributes);if(!TOUCH_ENABLED||this.options_.nativeControlsForTouch!==!0){delete attributes.controls}
1359setAttributes(el,assign(attributes,{id:this.options_.techId,"class":'vjs-tech'}))}
1360el.playerId=this.options_.playerId}
1361if(typeof this.options_.preload!=='undefined'){setAttribute(el,'preload',this.options_.preload)}
1362var settingsAttrs=['loop','muted','playsinline','autoplay'];for(var i=0;i<settingsAttrs.length;i++){var attr=settingsAttrs[i];var value=this.options_[attr];if(typeof value!=='undefined'){if(value){setAttribute(el,attr,attr)}else{removeAttribute(el,attr)}
1363el[attr]=value}}
1364return el};_proto.handleLateInit_=function handleLateInit_(el){if(el.networkState===0||el.networkState===3){return}
1365if(el.readyState===0){var loadstartFired=!1;var setLoadstartFired=function setLoadstartFired(){loadstartFired=!0};this.on('loadstart',setLoadstartFired);var triggerLoadstart=function triggerLoadstart(){if(!loadstartFired){this.trigger('loadstart')}};this.on('loadedmetadata',triggerLoadstart);this.ready(function(){this.off('loadstart',setLoadstartFired);this.off('loadedmetadata',triggerLoadstart);if(!loadstartFired){this.trigger('loadstart')}});return}
1366var eventsToTrigger=['loadstart'];eventsToTrigger.push('loadedmetadata');if(el.readyState>=2){eventsToTrigger.push('loadeddata')}
1367if(el.readyState>=3){eventsToTrigger.push('canplay')}
1368if(el.readyState>=4){eventsToTrigger.push('canplaythrough')}
1369this.ready(function(){eventsToTrigger.forEach(function(type){this.trigger(type)},this)})};_proto.setCurrentTime=function setCurrentTime(seconds){try{this.el_.currentTime=seconds}catch(e){log(e,'Video is not ready. (Video.js)')}};_proto.duration=function duration(){var _this5=this;if(this.el_.duration===Infinity&&IS_ANDROID&&IS_CHROME&&this.el_.currentTime===0){var checkProgress=function checkProgress(){if(_this5.el_.currentTime>0){if(_this5.el_.duration===Infinity){_this5.trigger('durationchange')}
1370_this5.off('timeupdate',checkProgress)}};this.on('timeupdate',checkProgress);return NaN}
1371return this.el_.duration||NaN};_proto.width=function width(){return this.el_.offsetWidth};_proto.height=function height(){return this.el_.offsetHeight};_proto.proxyWebkitFullscreen_=function proxyWebkitFullscreen_(){var _this6=this;if(!('webkitDisplayingFullscreen' in this.el_)){return}
1372var endFn=function endFn(){this.trigger('fullscreenchange',{isFullscreen:!1})};var beginFn=function beginFn(){if('webkitPresentationMode' in this.el_&&this.el_.webkitPresentationMode!=='picture-in-picture'){this.one('webkitendfullscreen',endFn);this.trigger('fullscreenchange',{isFullscreen:!0})}};this.on('webkitbeginfullscreen',beginFn);this.on('dispose',function(){_this6.off('webkitbeginfullscreen',beginFn);_this6.off('webkitendfullscreen',endFn)})};_proto.supportsFullScreen=function supportsFullScreen(){if(typeof this.el_.webkitEnterFullScreen==='function'){var userAgent=window$1.navigator&&window$1.navigator.userAgent||'';if(/Android/.test(userAgent)||!/Chrome|Mac OS X 10.5/.test(userAgent)){return!0}}
1373return!1};_proto.enterFullScreen=function enterFullScreen(){var video=this.el_;if(video.paused&&video.networkState<=video.HAVE_METADATA){this.el_.play();this.setTimeout(function(){video.pause();video.webkitEnterFullScreen()},0)}else{video.webkitEnterFullScreen()}};_proto.exitFullScreen=function exitFullScreen(){this.el_.webkitExitFullScreen()};_proto.requestPictureInPicture=function requestPictureInPicture(){return this.el_.requestPictureInPicture()};_proto.src=function src(_src){if(_src===undefined){return this.el_.src}
1374this.setSrc(_src)};_proto.reset=function reset(){Html5.resetMediaElement(this.el_)};_proto.currentSrc=function currentSrc(){if(this.currentSource_){return this.currentSource_.src}
1375return this.el_.currentSrc};_proto.setControls=function setControls(val){this.el_.controls=!!val};_proto.addTextTrack=function addTextTrack(kind,label,language){if(!this.featuresNativeTextTracks){return _Tech.prototype.addTextTrack.call(this,kind,label,language)}
1376return this.el_.addTextTrack(kind,label,language)};_proto.createRemoteTextTrack=function createRemoteTextTrack(options){if(!this.featuresNativeTextTracks){return _Tech.prototype.createRemoteTextTrack.call(this,options)}
1377var htmlTrackElement=document.createElement('track');if(options.kind){htmlTrackElement.kind=options.kind}
1378if(options.label){htmlTrackElement.label=options.label}
1379if(options.language||options.srclang){htmlTrackElement.srclang=options.language||options.srclang}
1380if(options["default"]){htmlTrackElement["default"]=options["default"]}
1381if(options.id){htmlTrackElement.id=options.id}
1382if(options.src){htmlTrackElement.src=options.src}
1383return htmlTrackElement};_proto.addRemoteTextTrack=function addRemoteTextTrack(options,manualCleanup){var htmlTrackElement=_Tech.prototype.addRemoteTextTrack.call(this,options,manualCleanup);if(this.featuresNativeTextTracks){this.el().appendChild(htmlTrackElement)}
1384return htmlTrackElement};_proto.removeRemoteTextTrack=function removeRemoteTextTrack(track){_Tech.prototype.removeRemoteTextTrack.call(this,track);if(this.featuresNativeTextTracks){var tracks=this.$$('track');var i=tracks.length;while(i--){if(track===tracks[i]||track===tracks[i].track){this.el().removeChild(tracks[i])}}}};_proto.getVideoPlaybackQuality=function getVideoPlaybackQuality(){if(typeof this.el().getVideoPlaybackQuality==='function'){return this.el().getVideoPlaybackQuality()}
1385var videoPlaybackQuality={};if(typeof this.el().webkitDroppedFrameCount!=='undefined'&&typeof this.el().webkitDecodedFrameCount!=='undefined'){videoPlaybackQuality.droppedVideoFrames=this.el().webkitDroppedFrameCount;videoPlaybackQuality.totalVideoFrames=this.el().webkitDecodedFrameCount}
1386if(window$1.performance&&typeof window$1.performance.now==='function'){videoPlaybackQuality.creationTime=window$1.performance.now()}else if(window$1.performance&&window$1.performance.timing&&typeof window$1.performance.timing.navigationStart==='number'){videoPlaybackQuality.creationTime=window$1.Date.now()-window$1.performance.timing.navigationStart}
1387return videoPlaybackQuality};return Html5}(Tech);defineLazyProperty(Html5,'TEST_VID',function(){if(!isReal()){return}
1388var video=document.createElement('video');var track=document.createElement('track');track.kind='captions';track.srclang='en';track.label='English';video.appendChild(track);return video});
1388Html5.isSupported=function(){try{Html5.TEST_VID.volume=0.5}catch(e){return!1}
1389return!!(Html5.TEST_VID&&Html5.TEST_VID.canPlayType)};Html5.canPlayType=function(type){return Html5.TEST_VID.canPlayType(type)};Html5.canPlaySource=function(srcObj,options){return Html5.canPlayType(srcObj.type)};Html5.canControlVolume=function(){try{var volume=Html5.TEST_VID.volume;Html5.TEST_VID.volume=volume/2+0.1;return volume!==Html5.TEST_VID.volume}catch(e){return!1}};Html5.canMuteVolume=function(){try{var muted=Html5.TEST_VID.muted;Html5.TEST_VID.muted=!muted;if(Html5.TEST_VID.muted){setAttribute(Html5.TEST_VID,'muted','muted')}else{removeAttribute(Html5.TEST_VID,'muted','muted')}
1390return muted!==Html5.TEST_VID.muted}catch(e){return!1}};Html5.canControlPlaybackRate=function(){if(IS_ANDROID&&IS_CHROME&&CHROME_VERSION<58){return!1}
1391try{var playbackRate=Html5.TEST_VID.playbackRate;Html5.TEST_VID.playbackRate=playbackRate/2+0.1;return playbackRate!==Html5.TEST_VID.playbackRate}catch(e){return!1}};Html5.canOverrideAttributes=function(){try{var noop=function noop(){};Object.defineProperty(document.createElement('video'),'src',{get:noop,set:noop});Object.defineProperty(document.createElement('audio'),'src',{get:noop,set:noop});Object.defineProperty(document.createElement('video'),'innerHTML',{get:noop,set:noop});Object.defineProperty(document.createElement('audio'),'innerHTML',{get:noop,set:noop})}catch(e){return!1}
1392return!0};Html5.supportsNativeTextTracks=function(){return IS_ANY_SAFARI||IS_IOS&&IS_CHROME};Html5.supportsNativeVideoTracks=function(){return!!(Html5.TEST_VID&&Html5.TEST_VID.videoTracks)};Html5.supportsNativeAudioTracks=function(){return!!(Html5.TEST_VID&&Html5.TEST_VID.audioTracks)};Html5.Events=['loadstart','suspend','abort','error','emptied','stalled','loadedmetadata','loadeddata','canplay','canplaythrough','playing','waiting','seeking','seeked','ended','durationchange','timeupdate','progress','play','pause','ratechange','resize','volumechange'];[['featuresVolumeControl','canControlVolume'],['featuresMuteControl','canMuteVolume'],['featuresPlaybackRate','canControlPlaybackRate'],['featuresSourceset','canOverrideAttributes'],['featuresNativeTextTracks','supportsNativeTextTracks'],['featuresNativeVideoTracks','supportsNativeVideoTracks'],['featuresNativeAudioTracks','supportsNativeAudioTracks']].forEach(function(_ref){var key=_ref[0],fn=_ref[1];defineLazyProperty(Html5.prototype,key,function(){return Html5[fn]()},!0)});Html5.prototype.movingMediaElementInDOM=!IS_IOS;Html5.prototype.featuresFullscreenResize=!0;Html5.prototype.featuresProgressEvents=!0;Html5.prototype.featuresTimeupdateEvents=!0;var canPlayType;Html5.patchCanPlayType=function(){if(ANDROID_VERSION>
1392=4.0&&!IS_FIREFOX&&!IS_CHROME){canPlayType=Html5.TEST_VID&&Html5.TEST_VID.constructor.prototype.canPlayType;Html5.TEST_VID.constructor.prototype.canPlayType=function(type){var mpegurlRE=/^application\/(?:x-|vnd\.apple\.)mpegurl/i;if(type&&mpegurlRE.test(type)){return'maybe'}
1393return canPlayType.call(this,type)}}};Html5.unpatchCanPlayType=function(){var r=Html5.TEST_VID.constructor.prototype.canPlayType;if(canPlayType){Html5.TEST_VID.constructor.prototype.canPlayType=canPlayType}
1394return r};Html5.patchCanPlayType();Html5.disposeMediaElement=function(el){if(!el){return}
1395if(el.parentNode){el.parentNode.removeChild(el)}
1396while(el.hasChildNodes()){el.removeChild(el.firstChild)}
1397el.removeAttribute('src');if(typeof el.load==='function'){(function(){try{el.load()}catch(e){}})()}};Html5.resetMediaElement=function(el){if(!el){return}
1398var sources=el.querySelectorAll('source');var i=sources.length;while(i--){el.removeChild(sources[i])}
1399el.removeAttribute('src');if(typeof el.load==='function'){(function(){try{el.load()}catch(e){}})()}};['muted','defaultMuted','autoplay','controls','loop','playsinline'].forEach(function(prop){Html5.prototype[prop]=function(){return this.el_[prop]||this.el_.hasAttribute(prop)}});['muted','defaultMuted','autoplay','loop','playsinline'].forEach(function(prop){Html5.prototype['set'+toTitleCase(prop)]=function(v){this.el_[prop]=v;if(v){this.el_.setAttribute(prop,prop)}else{this.el_.removeAttribute(prop)}}});['paused','currentTime','buffered','volume','poster','preload','error','seeking','seekable','ended','playbackRate','defaultPlaybackRate','played','networkState','readyState','videoWidth','videoHeight'].forEach(function(prop){Html5.prototype[prop]=function(){return this.el_[prop]}});['volume','src','poster','preload','playbackRate','defaultPlaybackRate'].forEach(function(prop){Html5.prototype['set'+toTitleCase(prop)]=function(v){this.el_[prop]=v}});['pause','load','play'].forEach(function(prop){Html5.prototype[prop]=function(){return this.el_[prop]()}});Tech.withSourceHandlers(Html5);Html5.nativeSourceHandler={};Html5.nativeSourceHandler.canPlayType=function(type){try{return Html5.TEST_VID.canPlayType(type)}catch(e){return''}};Html5.nativeSourceHandler.canHandleSource=function(source,options){if(source.type){return Html5.nativeSourceHandler.canPlayType(source.type)}else if(source.src){var ext=getFileExtension(source.src);return Html5.nativeSourceHandler.canPlayType("video/"+ext)}
1400return''};Html5.nativeSourceHandler.handleSource=function(source,tech,options){tech.setSrc(source.src)};Html5.nativeSourceHandler.dispose=function(){};Html5.registerSourceHandler(Html5.nativeSourceHandler);Tech.registerTech('Html5',Html5);var TECH_EVENTS_RETRIGGER=['progress','abort','suspend','emptied','stalled','loadedmetadata','loadeddata','timeupdate','resize','volumechange','texttrackchange'];var TECH_EVENTS_QUEUE={canplay:'CanPlay',canplaythrough:'CanPlayThrough',playing:'Playing',seeked:'Seeked'};var BREAKPOINT_ORDER=['tiny','xsmall','small','medium','large','xlarge','huge'];var BREAKPOINT_CLASSES={};BREAKPOINT_ORDER.forEach(function(k){var v=k.charAt(0)==='x'?"x-"+k.substring(1):k;BREAKPOINT_CLASSES[k]="vjs-layout-"+v});var DEFAULT_BREAKPOINTS={tiny:210,xsmall:320,small:425,medium:768,large:1440,xlarge:2560,huge:Infinity};var Player=function(_Component){inheritsLoose(Player,_Component);function Player(tag,options,ready){var _this;tag.id=tag.id||options.id||"vjs_video_"+newGUID();options=assign(Player.getTagSettings(tag),options);options.initChildren=!1;options.createEl=!1;options.evented=!1;options.reportTouchActivity=!1;if(!options.language){if(typeof tag.closest==='function'){var closest=tag.closest('[lang]');if(closest&&closest.getAttribute){options.language=closest.getAttribute('lang')}}else{var element=tag;while(element&&element.nodeType===1){if(getAttributes(element).hasOwnProperty('lang')){options.language=element.getAttribute('lang');break}
1401element=element.parentNode}}}
1402_this=_Component.call(this,null,options,ready)||this;_this.boundDocumentFullscreenChange_=bind(assertThisInitialized(_this),_this.documentFullscreenChange_);_this.boundFullWindowOnEscKey_=bind(assertThisInitialized(_this),_this.fullWindowOnEscKey);_this.log=createLogger$1(_this.id_);_this.fsApi_=FullscreenApi;_this.isPosterFromTech_=!1;_this.queuedCallbacks_=[];_this.isReady_=!1;_this.hasStarted_=!1;_this.userActive_=!1;if(!_this.options_||!_this.options_.techOrder||!_this.options_.techOrder.length){throw new Error('No techOrder specified. Did you overwrite '+'videojs.options instead of just changing the '+'properties you want to override?')}
1403_this.tag=tag;_this.tagAttributes=tag&&getAttributes(tag);_this.language(_this.options_.language);if(options.languages){var languagesToLower={};
1403Object.getOwnPropertyNames(options.languages).forEach(function(name){languagesToLower[name.toLowerCase()]=options.languages[name]});_this.languages_=languagesToLower}else{_this.languages_=Player.prototype.options_.languages}
1404_this.resetCache_();_this.poster_=options.poster||'';_this.controls_=!!options.controls;tag.controls=!1;tag.removeAttribute('controls');_this.changingSrc_=!1;_this.playCallbacks_=[];_this.playTerminatedQueue_=[];if(tag.hasAttribute('autoplay')){_this.autoplay(!0)}else{_this.autoplay(_this.options_.autoplay)}
1405if(options.plugins){Object.keys(options.plugins).forEach(function(name){if(typeof _this[name]!=='function'){throw new Error("plugin \""+name+"\" does not exist")}})}
1406_this.scrubbing_=!1;_this.el_=_this.createEl();evented(assertThisInitialized(_this),{eventBusKey:'el_'});if(_this.fluid_){_this.on('playerreset',_this.updateStyleEl_)}
1407var playerOptionsCopy=mergeOptions(_this.options_);if(options.plugins){Object.keys(options.plugins).forEach(function(name){_this[name](options.plugins[name])})}
1408_this.options_.playerOptions=playerOptionsCopy;_this.middleware_=[];_this.initChildren();_this.isAudio(tag.nodeName.toLowerCase()==='audio');if(_this.controls()){_this.addClass('vjs-controls-enabled')}else{_this.addClass('vjs-controls-disabled')}
1409_this.el_.setAttribute('role','region');if(_this.isAudio()){_this.el_.setAttribute('aria-label',_this.localize('Audio Player'))}else{_this.el_.setAttribute('aria-label',_this.localize('Video Player'))}
1410if(_this.isAudio()){_this.addClass('vjs-audio')}
1411if(_this.flexNotSupported_()){_this.addClass('vjs-no-flex')}
1412if(TOUCH_ENABLED){_this.addClass('vjs-touch-enabled')}
1413if(!IS_IOS){_this.addClass('vjs-workinghover')}
1414Player.players[_this.id_]=assertThisInitialized(_this);var majorVersion=version.split('.')[0];_this.addClass("vjs-v"+majorVersion);_this.userActive(!0);_this.reportUserActivity();_this.one('play',_this.listenForUserActivity_);_this.on('stageclick',_this.handleStageClick_);_this.on('keydown',_this.handleKeyDown);_this.breakpoints(_this.options_.breakpoints);_this.responsive(_this.options_.responsive);return _this}
1415var _proto=Player.prototype;_proto.dispose=function dispose(){var _this2=this;this.trigger('dispose');this.off('dispose');off(document,this.fsApi_.fullscreenchange,this.boundDocumentFullscreenChange_);off(document,'keydown',this.boundFullWindowOnEscKey_);if(this.styleEl_&&this.styleEl_.parentNode){this.styleEl_.parentNode.removeChild(this.styleEl_);this.styleEl_=null}
1416Player.players[this.id_]=null;if(this.tag&&this.tag.player){this.tag.player=null}
1417if(this.el_&&this.el_.player){this.el_.player=null}
1418if(this.tech_){this.tech_.dispose();this.isPosterFromTech_=!1;this.poster_=''}
1419if(this.playerElIngest_){this.playerElIngest_=null}
1420if(this.tag){this.tag=null}
1421clearCacheForPlayer(this);ALL.names.forEach(function(name){var props=ALL[name];var list=_this2[props.getterName]();if(list&&list.off){list.off()}});_Component.prototype.dispose.call(this)};_proto.createEl=function createEl(){var tag=this.tag;var el;var playerElIngest=this.playerElIngest_=tag.parentNode&&tag.parentNode.hasAttribute&&tag.parentNode.hasAttribute('data-vjs-player');var divEmbed=this.tag.tagName.toLowerCase()==='video-js';if(playerElIngest){el=this.el_=tag.parentNode}else if(!divEmbed){el=this.el_=_Component.prototype.createEl.call(this,'div')}
1422var attrs=getAttributes(tag);if(divEmbed){el=this.el_=tag;tag=this.tag=document.createElement('video');while(el.children.length){tag.appendChild(el.firstChild)}
1423if(!hasClass(el,'video-js')){addClass(el,'video-js')}
1424el.appendChild(tag);playerElIngest=this.playerElIngest_=el;Object.keys(el).forEach(function(k){try{tag[k]=el[k]}catch(e){}})}
1425tag.setAttribute('tabindex','-1');attrs.tabindex='-1';if(IE_VERSION||IS_CHROME&&IS_WINDOWS){tag.setAttribute('role','application');attrs.role='application'}
1426tag.removeAttribute('width');tag.removeAttribute('height');if('width' in attrs){delete attrs.width}
1427if('height' in attrs){delete attrs.height}
1428Object.getOwnPropertyNames(attrs).forEach(function(attr){if(!(divEmbed&&attr==='class')){el.setAttribute(attr,attrs[attr])}
1429if(divEmbed){tag.setAttribute(attr,attrs[attr])}});tag.playerId=tag.id;tag.id+='_html5_api';tag.className='vjs-tech';tag.player=el.player=this;this.addClass('vjs-paused');if(window$1.VIDEOJS_NO_DYNAMIC_STYLE!==!0){this.styleEl_=createStyleElement('vjs-styles-dimensions');var defaultsStyleEl=$('.vjs-styles-defaults');var head=$('head');head.insertBefore(this.styleEl_,defaultsStyleEl?defaultsStyleEl.nextSibling:head.firstChild)}
1430this.fill_=!1;this.fluid_=!1;this.width(this.options_.width);this.height(this.options_.height);this.fill(this.options_.fill);this.fluid(this.options_.fluid);this.aspectRatio(this.options_.aspectRatio);var links=tag.getElementsByTagName('a');for(var i=0;i<links.length;i++){var linkEl=links.item(i);addClass(linkEl,'vjs-hidden');linkEl.setAttribute('hidden','hidden')}
1431tag.initNetworkState_=tag.networkState;if(tag.parentNode&&!playerElIngest){tag.parentNode.insertBefore(el,tag)}
1432prependTo(tag,el);this.children_.unshift(tag);this.el_.setAttribute('lang',this.language_);this.el_=el;return el};_proto.width=function width(value){return this.dimension('width',value)};_proto.height=function height(value){return this.dimension('height',value)};_proto.dimension=function dimension(_dimension,value){var privDimension=_dimension+'_';if(value===undefined){return this[privDimension]||0}
1433if(value===''||value==='auto'){this[privDimension]=undefined;this.updateStyleEl_();return}
1434var parsedVal=parseFloat(value);if(isNaN(parsedVal)){log.error("Improper value \""+value+"\" supplied for for "+_dimension);return}
1435this[privDimension]=parsedVal;this.updateStyleEl_()};_proto.fluid=function fluid(bool){if(bool===undefined){return!!this.fluid_}
1436this.fluid_=!!bool;if(isEvented(this)){this.off('playerreset',this.updateStyleEl_)}
1437if(bool){this.addClass('vjs-fluid');this.fill(!1);addEventedCallback(function(){this.on('playerreset',this.updateStyleEl_)})}else{this.removeClass('vjs-fluid')}
1438this.updateStyleEl_()};_proto.fill=function fill(bool){if(bool===undefined){return!!this.fill_}
1439this.fill_=!!bool;if(bool){this.addClass('vjs-fill');this.fluid(!1)}else{this.removeClass('vjs-fill')}};_proto.aspectRatio=function aspectRatio(ratio){if(ratio===undefined){return this.aspectRatio_}
1440if(!/^\d+\:\d+$/.test(ratio)){throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.')}
1441this.aspectRatio_=ratio;this.fluid(!0);this.updateStyleEl_()};_proto.updateStyleEl_=function updateStyleEl_(){if(window$1.VIDEOJS_NO_DYNAMIC_STYLE===!0){var _width=typeof this.width_==='number'?this.width_:this.options_.width;var _height=typeof this.height_==='number'?this.height_:this.options_.height;var techEl=this.tech_&&this.tech_.el();if(techEl){if(_width>=0){techEl.width=_width}
1442if(_height>
1442=0){techEl.height=_height}}
1443return}
1444var width;var height;var aspectRatio;var idClass;if(this.aspectRatio_!==undefined&&this.aspectRatio_!=='auto'){aspectRatio=this.aspectRatio_}else if(this.videoWidth()>0){aspectRatio=this.videoWidth()+':'+this.videoHeight()}else{aspectRatio='16:9'}
1445var ratioParts=aspectRatio.split(':');var ratioMultiplier=ratioParts[1]/ratioParts[0];if(this.width_!==undefined){width=this.width_}else if(this.height_!==undefined){width=this.height_/ratioMultiplier}else{width=this.videoWidth()||300}
1446if(this.height_!==undefined){height=this.height_}else{height=width*ratioMultiplier}
1447if(/^[^a-zA-Z]/.test(this.id())){idClass='dimensions-'+this.id()}else{idClass=this.id()+'-dimensions'}
1448this.addClass(idClass);setTextContent(this.styleEl_,"\n      ."+idClass+" {\n        width: "+width+"px;\n        height: "+height+"px;\n      }\n\n      ."+idClass+".vjs-fluid {\n        padding-top: "+ratioMultiplier*100+"%;\n      }\n    ")};_proto.loadTech_=function loadTech_(techName,source){var _this3=this;if(this.tech_){this.unloadTech_()}
1449var titleTechName=toTitleCase(techName);var camelTechName=techName.charAt(0).toLowerCase()+techName.slice(1);if(titleTechName!=='Html5'&&this.tag){Tech.getTech('Html5').disposeMediaElement(this.tag);this.tag.player=null;this.tag=null}
1450this.techName_=titleTechName;this.isReady_=!1;var autoplay=typeof this.autoplay()==='string'?!1:this.autoplay();var techOptions={source:source,autoplay:autoplay,'nativeControlsForTouch':this.options_.nativeControlsForTouch,'playerId':this.id(),'techId':this.id()+"_"+camelTechName+"_api",'playsinline':this.options_.playsinline,'preload':this.options_.preload,'loop':this.options_.loop,'muted':this.options_.muted,'poster':this.poster(),'language':this.language(),'playerElIngest':this.playerElIngest_||!1,'vtt.js':this.options_['vtt.js'],'canOverridePoster':!!this.options_.techCanOverridePoster,'enableSourceset':this.options_.enableSourceset,'Promise':this.options_.Promise};ALL.names.forEach(function(name){var props=ALL[name];techOptions[props.getterName]=_this3[props.privateName]});assign(techOptions,this.options_[titleTechName]);assign(techOptions,this.options_[camelTechName]);assign(techOptions,this.options_[techName.toLowerCase()]);if(this.tag){techOptions.tag=this.tag}
1451if(source&&source.src===this.cache_.src&&this.cache_.currentTime>0){techOptions.startTime=this.cache_.currentTime}
1452var TechClass=Tech.getTech(techName);if(!TechClass){throw new Error("No Tech named '"+titleTechName+"' exists! '"+titleTechName+"' should be registered using videojs.registerTech()'")}
1453this.tech_=new TechClass(techOptions);this.tech_.ready(bind(this,this.handleTechReady_),!0);textTrackConverter.jsonToTextTracks(this.textTracksJson_||[],this.tech_);TECH_EVENTS_RETRIGGER.forEach(function(event){_this3.on(_this3.tech_,event,_this3["handleTech"+toTitleCase(event)+"_"])});Object.keys(TECH_EVENTS_QUEUE).forEach(function(event){_this3.on(_this3.tech_,event,function(eventObj){if(_this3.tech_.playbackRate()===0&&_this3.tech_.seeking()){_this3.queuedCallbacks_.push({callback:_this3["handleTech"+TECH_EVENTS_QUEUE[event]+"_"].bind(_this3),event:eventObj});return}
1454_this3["handleTech"+TECH_EVENTS_QUEUE[event]+"_"](eventObj)})});this.on(this.tech_,'loadstart',this.handleTechLoadStart_);this.on(this.tech_,'sourceset',this.handleTechSourceset_);this.on(this.tech_,'waiting',this.handleTechWaiting_);this.on(this.tech_,'ended',this.handleTechEnded_);this.on(this.tech_,'seeking',this.handleTechSeeking_);this.on(this.tech_,'play',this.handleTechPlay_);this.on(this.tech_,'firstplay',this.handleTechFirstPlay_);this.on(this.tech_,'pause',this.handleTechPause_);this.on(this.tech_,'durationchange',this.handleTechDurationChange_);this.on(this.tech_,'fullscreenchange',this.handleTechFullscreenChange_);this.on(this.tech_,'enterpictureinpicture',this.handleTechEnterPictureInPicture_);this.on(this.tech_,'leavepictureinpicture',this.handleTechLeavePictureInPicture_);this.on(this.tech_,'error',this.handleTechError_);this.on(this.tech_,'loadedmetadata',this.updateStyleEl_);this.on(this.tech_,'posterchange',this.handleTechPosterChange_);this.on(this.tech_,'textdata',this.handleTechTextData_);this.on(this.tech_,'ratechange',this.handleTechRateChange_);this.usingNativeControls(this.techGet_('controls'));if(this.controls()&&!this.usingNativeControls()){this.addTechControl
1454sListeners_()}
1455if(this.tech_.el().parentNode!==this.el()&&(titleTechName!=='Html5'||!this.tag)){prependTo(this.tech_.el(),this.el())}
1456if(this.tag){this.tag.player=null;this.tag=null}};_proto.unloadTech_=function unloadTech_(){var _this4=this;ALL.names.forEach(function(name){var props=ALL[name];_this4[props.privateName]=_this4[props.getterName]()});this.textTracksJson_=textTrackConverter.textTracksToJson(this.tech_);this.isReady_=!1;this.tech_.dispose();this.tech_=!1;if(this.isPosterFromTech_){this.poster_='';this.trigger('posterchange')}
1457this.isPosterFromTech_=!1};_proto.tech=function tech(safety){if(safety===undefined){log.warn('Using the tech directly can be dangerous. I hope you know what you\'re doing.\n'+'See https://github.com/videojs/video.js/issues/2617 for more info.\n')}
1458return this.tech_};_proto.addTechControlsListeners_=function addTechControlsListeners_(){this.removeTechControlsListeners_();this.on(this.tech_,'mouseup',this.handleTechClick_);this.on(this.tech_,'dblclick',this.handleTechDoubleClick_);this.on(this.tech_,'touchstart',this.handleTechTouchStart_);this.on(this.tech_,'touchmove',this.handleTechTouchMove_);this.on(this.tech_,'touchend',this.handleTechTouchEnd_);this.on(this.tech_,'tap',this.handleTechTap_)};_proto.removeTechControlsListeners_=function removeTechControlsListeners_(){this.off(this.tech_,'tap',this.handleTechTap_);this.off(this.tech_,'touchstart',this.handleTechTouchStart_);this.off(this.tech_,'touchmove',this.handleTechTouchMove_);this.off(this.tech_,'touchend',this.handleTechTouchEnd_);this.off(this.tech_,'mouseup',this.handleTechClick_);this.off(this.tech_,'dblclick',this.handleTechDoubleClick_)};_proto.handleTechReady_=function handleTechReady_(){this.triggerReady();if(this.cache_.volume){this.techCall_('setVolume',this.cache_.volume)}
1459this.handleTechPosterChange_();this.handleTechDurationChange_()};_proto.handleTechLoadStart_=function handleTechLoadStart_(){this.removeClass('vjs-ended');this.removeClass('vjs-seeking');this.error(null);this.handleTechDurationChange_();if(!this.paused()){this.trigger('loadstart');this.trigger('firstplay')}else{this.hasStarted(!1);this.trigger('loadstart')}
1460this.manualAutoplay_(this.autoplay())};_proto.manualAutoplay_=function manualAutoplay_(type){var _this5=this;if(!this.tech_||typeof type!=='string'){return}
1461var muted=function muted(){var previouslyMuted=_this5.muted();_this5.muted(!0);var restoreMuted=function restoreMuted(){_this5.muted(previouslyMuted)};_this5.playTerminatedQueue_.push(restoreMuted);var mutedPromise=_this5.play();if(!isPromise(mutedPromise)){return}
1462return mutedPromise["catch"](restoreMuted)};var promise;if(type==='any'&&this.muted()!==!0){promise=this.play();if(isPromise(promise)){promise=promise["catch"](muted)}}else if(type==='muted'&&this.muted()!==!0){promise=muted()}else{promise=this.play()}
1463if(!isPromise(promise)){return}
1464return promise.then(function(){_this5.trigger({type:'autoplay-success',autoplay:type})})["catch"](function(e){_this5.trigger({type:'autoplay-failure',autoplay:type})})};_proto.updateSourceCaches_=function updateSourceCaches_(srcObj){if(srcObj===void 0){srcObj=''}
1465var src=srcObj;var type='';if(typeof src!=='string'){src=srcObj.src;type=srcObj.type}
1466this.cache_.source=this.cache_.source||{};this.cache_.sources=this.cache_.sources||[];if(src&&!type){type=findMimetype(this,src)}
1467this.cache_.source=mergeOptions({},srcObj,{src:src,type:type});var matchingSources=this.cache_.sources.filter(function(s){return s.src&&s.src===src});var sourceElSources=[];var sourceEls=this.$$('source');var matchingSourceEls=[];for(var i=0;i<sourceEls.length;i++){var sourceObj=getAttributes(sourceEls[i]);sourceElSources.push(sourceObj);if(sourceObj.src&&sourceObj.src===src){matchingSourceEls.push(sourceObj.src)}}
1468if(matchingSourceEls.length&&!matchingSources.length){this.cache_.sources=sourceElSources}else if(!matchingSources.length){this.cache_.sources=[this.cache_.source]}
1469this.cache_.src=src};_proto.handleTechSourceset_=function handleTechSourceset_(event){var _this6=this;if(!this.changingSrc_){var updateSourceCaches=function updateSourceCaches(src){return _this6.updateSourceCaches_(src)};var playerSrc=this.currentSource().src;var eventSrc=event.src;if(playerSrc&&!/^blob:/.test(playerSrc)&&/^blob:/.test(eventSrc)){if(!this.lastSource_||this.lastSource_.tech!==eventSrc&&this.lastSource_.player!==playerSrc){updateSourceCaches=function updateSourceCaches(){}}}
1470updateSourceCaches(eventSrc);if(!event.src){this.tech_.any(['sourceset','loadstart'],function(e){if(e.type==='sourceset'){return}
1471var techSrc=_this6.techGet('currentSrc');_this6.lastSource_.tech=techSrc;_this6.updateSourceCaches_(techSrc)})}}
1472this.lastSource_={player:this.currentSource().src,tech:event.src};this.trigger({src:event.src,type:'sourceset'})};_proto.hasStarted=function hasStarted(request){if(request===undefined){return this.hasStarted_}
1473if(request===this.hasStarted_){return}
1474this.hasStarted_=request;if(this.hasStarted_){this.addClass('vjs-has-started');this.trigger('firstplay')}else{this.removeClass('vjs-has-started')}};_proto.handleTechPlay_=function handleTechPlay_(){this.removeClass('vjs-ended');this.removeClass('vjs-paused');this.addClass('vjs-playing');this.hasStarted(!0);this.trigger('play')};_proto.handleTechRateChange_=function handleTechRateChange_(){if(this.tech_.playbackRate()>0&&this.cache_.lastPlaybackRate===0){this.queuedCallbacks_.forEach(function(queued){return queued.callback(queued.event)});this.queuedCallbacks_=[]}
1475this.cache_.lastPlaybackRate=this.tech_.playbackRate();this.trigger('ratechange')};_proto.handleTechWaiting_=function handleTechWaiting_(){var _this7=this;this.addClass('vjs-waiting');this.trigger('waiting');var timeWhenWaiting=this.currentTime();
1475var timeUpdateListener=function timeUpdateListener(){if(timeWhenWaiting!==_this7.currentTime()){_this7.removeClass('vjs-waiting');_this7.off('timeupdate',timeUpdateListener)}};this.on('timeupdate',timeUpdateListener)};_proto.handleTechCanPlay_=function handleTechCanPlay_(){this.removeClass('vjs-waiting');this.trigger('canplay')};_proto.handleTechCanPlayThrough_=function handleTechCanPlayThrough_(){this.removeClass('vjs-waiting');this.trigger('canplaythrough')};_proto.handleTechPlaying_=function handleTechPlaying_(){this.removeClass('vjs-waiting');this.trigger('playing')};_proto.handleTechSeeking_=function handleTechSeeking_(){this.addClass('vjs-seeking');this.trigger('seeking')};_proto.handleTechSeeked_=function handleTechSeeked_(){this.removeClass('vjs-seeking');this.removeClass('vjs-ended');this.trigger('seeked')};_proto.handleTechFirstPlay_=function handleTechFirstPlay_(){if(this.options_.starttime){log.warn('Passing the `starttime` option to the player will be deprecated in 6.0');this.currentTime(this.options_.starttime)}
1476this.addClass('vjs-has-started');this.trigger('firstplay')};_proto.handleTechPause_=function handleTechPause_(){this.removeClass('vjs-playing');this.addClass('vjs-paused');this.trigger('pause')};_proto.handleTechEnded_=function handleTechEnded_(){this.addClass('vjs-ended');if(this.options_.loop){this.currentTime(0);this.play()}else if(!this.paused()){this.pause()}
1477this.trigger('ended')};_proto.handleTechDurationChange_=function handleTechDurationChange_(){this.duration(this.techGet_('duration'))};_proto.handleTechClick_=function handleTechClick_(event){if(!isSingleLeftClick(event)){return}
1478if(!this.controls_){return}
1479if(this.paused()){silencePromise(this.play())}else{this.pause()}};_proto.handleTechDoubleClick_=function handleTechDoubleClick_(event){if(!this.controls_){return}
1480var inAllowedEls=Array.prototype.some.call(this.$$('.vjs-control-bar, .vjs-modal-dialog'),function(el){return el.contains(event.target)});if(!inAllowedEls){if(this.options_===undefined||this.options_.userActions===undefined||this.options_.userActions.doubleClick===undefined||this.options_.userActions.doubleClick!==!1){if(this.options_!==undefined&&this.options_.userActions!==undefined&&typeof this.options_.userActions.doubleClick==='function'){this.options_.userActions.doubleClick.call(this,event)}else if(this.isFullscreen()){this.exitFullscreen()}else{this.requestFullscreen()}}}};_proto.handleTechTap_=function handleTechTap_(){this.userActive(!this.userActive())};_proto.handleTechTouchStart_=function handleTechTouchStart_(){this.userWasActive=this.userActive()};_proto.handleTechTouchMove_=function handleTechTouchMove_(){if(this.userWasActive){this.reportUserActivity()}};_proto.handleTechTouchEnd_=function handleTechTouchEnd_(event){event.preventDefault()};_proto.handleStageClick_=function handleStageClick_(){this.reportUserActivity()};_proto.toggleFullscreenClass_=function toggleFullscreenClass_(){if(this.isFullscreen()){this.addClass('vjs-fullscreen')}else{this.removeClass('vjs-fullscreen')}};_proto.documentFullscreenChange_=function documentFullscreenChange_(e){var el=this.el();var isFs=document[this.fsApi_.fullscreenElement]===el;
1480if(!isFs&&el.matches){isFs=el.matches(':'+this.fsApi_.fullscreen)}else if(!isFs&&el.msMatchesSelector){isFs=el.msMatchesSelector(':'+this.fsApi_.fullscreen)}
1481this.isFullscreen(isFs);if(this.isFullscreen()===!1){off(document,this.fsApi_.fullscreenchange,this.boundDocumentFullscreenChange_)}
1482if(this.fsApi_.prefixed){this.trigger('fullscreenchange')}};_proto.handleTechFullscreenChange_=function handleTechFullscreenChange_(event,data){if(data){this.isFullscreen(data.isFullscreen)}
1483this.trigger('fullscreenchange')};_proto.togglePictureInPictureClass_=function togglePictureInPictureClass_(){if(this.isInPictureInPicture()){this.addClass('vjs-picture-in-picture')}else{this.removeClass('vjs-picture-in-picture')}};_proto.handleTechEnterPictureInPicture_=function handleTechEnterPictureInPicture_(event){this.isInPictureInPicture(!0)};_proto.handleTechLeavePictureInPicture_=function handleTechLeavePictureInPicture_(event){this.isInPictureInPicture(!1)};_proto.handleTechError_=function handleTechError_(){var error=this.tech_.error();this.error(error)};_proto.handleTechTextData_=function handleTechTextData_(){var data=null;if(arguments.length>1){data=arguments[1]}
1484this.trigger('textdata',data)};_proto.getCache=function getCache(){return this.cache_};_proto.resetCache_=function resetCache_(){this.cache_={currentTime:0,inactivityTimeout:this.options_.inactivityTimeout,duration:NaN,lastVolume:1,lastPlaybackRate:this.defaultPlaybackRate(),media:null,src:'',source:{},sources:[],volume:1}};_proto.techCall_=function techCall_(method,arg){this.ready(function(){if(method in allowedSetters){return set(this.middleware_,this.tech_,method,arg)}else if(method in allowedMediators){return mediate(this.middleware_,this.tech_,method,arg)}
1485try{if(this.tech_){this.tech_[method](arg)}}catch(e){log(e);throw e}},!0)};_proto.techGet_=function techGet_(method){if(!this.tech_||!this.tech_.isReady_){return}
1486if(method in allowedGetters){return get(this.middleware_,this.tech_,method)}else if(method in allowedMediators){return mediate(this.middleware_,this.tech_,method)}
1487try{return this.tech_[method]()}catch(e){if(this.tech_[method]===undefined){log("Video.js: "+method+" method not defined for "+this.techName_+" playback technology.",e);throw e}
1488if(e.name==='TypeError'){log("Video.js: "+method+" unavailable on "+this.techName_+" playback technology element.",e);this.tech_.isReady_=!1;throw e}
1489log(e);throw e}};_proto.play=function play(){var _this8=this;var PromiseClass=this.options_.Promise||window$1.Promise;if(PromiseClass){return new PromiseClass(function(resolve){_this8.play_(resolve)})}
1490return this.play_()};_proto.play_=function play_(callback){var _this9=this;if(callback===void 0){callback=silencePromise}
1491this.playCallbacks_.push(callback);var isSrcReady=Boolean(!this.changingSrc_&&(this.src()||this.currentSrc()));if(this.waitToPlay_){this.off(['ready','loadstart'],this.waitToPlay_);this.waitToPlay_=null}
1492if(!this.isReady_||!isSrcReady){this.waitToPlay_=function(e){_this9.play_()};this.one(['ready','loadstart'],this.waitToPlay_);if(!isSrcReady&&(IS_ANY_SAFARI||IS_IOS)){this.load()}
1493return}
1494var val=this.techGet_('play');if(val===null){this.runPlayTerminatedQueue_()}else{this.runPlayCallbacks_(val)}};_proto.runPlayTerminatedQueue_=function runPlayTerminatedQueue_(){var queue=this.playTerminatedQueue_.slice(0);this.playTerminatedQueue_=[];queue.forEach(function(q){q()})};_proto.runPlayCallbacks_=function runPlayCallbacks_(val){var callbacks=this.playCallbacks_.slice(0);this.playCallbacks_=[];this.playTerminatedQueue_=[];callbacks.forEach(function(cb){cb(val)})};_proto.pause=function pause(){this.techCall_('pause')};_proto.paused=function paused(){return this.techGet_('paused')===!1?!1:!0};_proto.played=function played(){return this.techGet_('played')||createTimeRanges(0,0)};_proto.scrubbing=function scrubbing(isScrubbing){if(typeof isScrubbing==='undefined'){return this.scrubbing_}
1495this.scrubbing_=!!isScrubbing;if(isScrubbing){this.addClass('vjs-scrubbing')}else{this.removeClass('vjs-scrubbing')}};_proto.currentTime=function currentTime(seconds){if(typeof seconds!=='undefined'){if(seconds<0){seconds=0}
1496this.techCall_('setCurrentTime',seconds);return}
1497this.cache_.currentTime=this.techGet_('currentTime')||0;return this.cache_.currentTime};_proto.duration=function duration(seconds){if(seconds===undefined){return this.cache_.duration!==un
1497defined?this.cache_.duration:NaN}
1498seconds=parseFloat(seconds);if(seconds<0){seconds=Infinity}
1499if(seconds!==this.cache_.duration){this.cache_.duration=seconds;if(seconds===Infinity){this.addClass('vjs-live');if(this.options_.liveui&&this.player_.liveTracker){this.addClass('vjs-liveui')}}else{this.removeClass('vjs-live');this.removeClass('vjs-liveui')}
1500if(!isNaN(seconds)){this.trigger('durationchange')}}};_proto.remainingTime=function remainingTime(){return this.duration()-this.currentTime()};_proto.remainingTimeDisplay=function remainingTimeDisplay(){return Math.floor(this.duration())-Math.floor(this.currentTime())};_proto.buffered=function buffered(){var buffered=this.techGet_('buffered');if(!buffered||!buffered.length){buffered=createTimeRanges(0,0)}
1501return buffered};_proto.bufferedPercent=function bufferedPercent$1(){return bufferedPercent(this.buffered(),this.duration())};_proto.bufferedEnd=function bufferedEnd(){var buffered=this.buffered();var duration=this.duration();var end=buffered.end(buffered.length-1);if(end>duration){end=duration}
1502return end};_proto.volume=function volume(percentAsDecimal){var vol;if(percentAsDecimal!==undefined){vol=Math.max(0,Math.min(1,parseFloat(percentAsDecimal)));this.cache_.volume=vol;this.techCall_('setVolume',vol);if(vol>0){this.lastVolume_(vol)}
1503return}
1504vol=parseFloat(this.techGet_('volume'));return isNaN(vol)?1:vol};_proto.muted=function muted(_muted){if(_muted!==undefined){this.techCall_('setMuted',_muted);return}
1505return this.techGet_('muted')||!1};_proto.defaultMuted=function defaultMuted(_defaultMuted){if(_defaultMuted!==undefined){return this.techCall_('setDefaultMuted',_defaultMuted)}
1506return this.techGet_('defaultMuted')||!1};_proto.lastVolume_=function lastVolume_(percentAsDecimal){if(percentAsDecimal!==undefined&&percentAsDecimal!==0){this.cache_.lastVolume=percentAsDecimal;return}
1507return this.cache_.lastVolume};_proto.supportsFullScreen=function supportsFullScreen(){return this.techGet_('supportsFullScreen')||!1};_proto.isFullscreen=function isFullscreen(isFS){if(isFS!==undefined){this.isFullscreen_=!!isFS;this.toggleFullscreenClass_();return}
1508return!!this.isFullscreen_};_proto.requestFullscreen=function requestFullscreen(fullscreenOptions){var fsOptions;this.isFullscreen(!0);if(this.fsApi_.requestFullscreen){on(document,this.fsApi_.fullscreenchange,this.boundDocumentFullscreenChange_);if(!this.fsApi_.prefixed){fsOptions=this.options_.fullscreen&&this.options_.fullscreen.options||{};if(fullscreenOptions!==undefined){fsOptions=fullscreenOptions}}
1509silencePromise(this.el_[this.fsApi_.requestFullscreen](fsOptions))}else if(this.tech_.supportsFullScreen()){this.techCall_('enterFullScreen')}else{this.enterFullWindow();this.trigger('fullscreenchange')}};_proto.exitFullscreen=function exitFullscreen(){this.isFullscreen(!1);if(this.fsApi_.requestFullscreen){silencePromise(document[this.fsApi_.exitFullscreen]())}else if(this.tech_.supportsFullScreen()){this.techCall_('exitFullScreen')}else{this.exitFullWindow();this.trigger('fullscreenchange')}};_proto.enterFullWindow=function enterFullWindow(){this.isFullWindow=!0;this.docOrigOverflow=document.documentElement.style.overflow;on(document,'keydown',this.boundFullWindowOnEscKey_);document.documentElement.style.overflow='hidden';addClass(document.body,'vjs-full-window');this.trigger('enterFullWindow')};_proto.fullWindowOnEscKey=function fullWindowOnEscKey(event){if(keycode.isEventKey(event,'Esc')){if(this.isFullscreen()===!0){this.exitFullscreen()}else{this.exitFullWindow()}}};_proto.exitFullWindow=function exitFullWindow(){this.isFullWindow=!1;off(document,'keydown',this.boundFullWindowOnEscKey_);document.documentElement.style.overflow=this.docOrigOverflow;removeClass(document.body,'vjs-full-window');this.trigger('exitFullWindow')};_proto.isInPictureInPicture=function isInPictureInPicture(isPiP){if(isPiP!==undefined){this.isInPictureInPicture_=!!isPiP;this.togglePictureInPictureClass_();return}
1510return!!this.isInPictureInPicture_};_proto.requestPictureInPicture=function requestPictureInPicture(){if('pictureInPictureEnabled' in document){return this.techGet_('requestPictureInPicture')}};_proto.exitPictureInPicture=function exitPictureInPicture(){if('pictureInPictureEnabled' in document){return document.exitPictureInPicture()}};_proto.handleKeyDown=function handleKeyDown(event){var userActions=this.options_.userActions;if(!userActions||!userActions.hotkeys){return}
1511var excludeElement=function excludeElement(el){var tagName=el.tagName.toLowerCase();if(el.isContentEditable){return!0}
1512var allowedInputTypes=['button','checkbox','hidden','radio','reset','submit'];if(tagName==='input'){return allowedInputTypes.indexOf(el.type)===-1}
1513var excludedTags=['textarea'];return excludedTags.indexOf(tagName)!==-1};if(excludeElement(this.el_.ownerDocument.activeElement)){return}
1514if(typeof userActions.hotkeys==='function'){userActions.hotkeys.call(this,event)}else{this.handleHotkeys(event)}};_proto.handleHotkeys=function handleHotkeys(event){var hotkeys=this.options_.userActions?this.options_.userActions.hotkeys:{};var _hotkeys$fullscreenKe=hotkeys.fullscreenKey,fullscreenKey=_hotkeys$fullscreenKe===void 0?function(keydownEvent){return keycode.isEventKey(keydownEvent,'f')}:_hotkeys$fullscreenKe,_hotkeys$muteKey=hotkeys.muteKey,muteKey=_hotkeys$muteKey===void 0?function(keydownEvent){return keycode.isEventKey(keydownEvent,'m')}:_hotkeys$muteKey,_hotkeys$playPauseKey=hotkeys.playPauseKey,playPauseKey=_hotkeys$playPauseKey===void 0?function(keydownEvent){return keycode.isEventKey(keydownEvent,'k')||keycode.isEventKey(keydownEvent,'Space')}:_hotkeys$playPauseKey;if(fullscreenKey.call(this,event)){event.preventDefault();event.stopPropagation();var FSToggle=Component.getComponent('FullscreenToggle');
1514if(document[this.fsApi_.fullscreenEnabled]!==!1){FSToggle.prototype.handleClick.call(this,event)}}else if(muteKey.call(this,event)){event.preventDefault();event.stopPropagation();var MuteToggle=Component.getComponent('MuteToggle');MuteToggle.prototype.handleClick.call(this,event)}else if(playPauseKey.call(this,event)){event.preventDefault();event.stopPropagation();var PlayToggle=Component.getComponent('PlayToggle');PlayToggle.prototype.handleClick.call(this,event)}};_proto.canPlayType=function canPlayType(type){var can;for(var i=0,j=this.options_.techOrder;i<j.length;i++){var techName=j[i];var tech=Tech.getTech(techName);if(!tech){tech=Component.getComponent(techName)}
1515if(!tech){log.error("The \""+techName+"\" tech is undefined. Skipped browser support check for that tech.");continue}
1516if(tech.isSupported()){can=tech.canPlayType(type);if(can){return can}}}
1517return''};_proto.selectSource=function selectSource(sources){var _this10=this;var techs=this.options_.techOrder.map(function(techName){return[techName,Tech.getTech(techName)]}).filter(function(_ref){var techName=_ref[0],tech=_ref[1];if(tech){return tech.isSupported()}
1518log.error("The \""+techName+"\" tech is undefined. Skipped browser support check for that tech.");return!1});var findFirstPassingTechSourcePair=function findFirstPassingTechSourcePair(outerArray,innerArray,tester){var found;outerArray.some(function(outerChoice){return innerArray.some(function(innerChoice){found=tester(outerChoice,innerChoice);if(found){return!0}})});return found};var foundSourceAndTech;var flip=function flip(fn){return function(a,b){return fn(b,a)}};var finder=function finder(_ref2,source){var techName=_ref2[0],tech=_ref2[1];if(tech.canPlaySource(source,_this10.options_[techName.toLowerCase()])){return{source:source,tech:techName}}};if(this.options_.sourceOrder){foundSourceAndTech=findFirstPassingTechSourcePair(sources,techs,flip(finder))}else{foundSourceAndTech=findFirstPassingTechSourcePair(techs,sources,finder)}
1519return foundSourceAndTech||!1};_proto.src=function src(source){var _this11=this;if(typeof source==='undefined'){return this.cache_.src||''}
1520var sources=filterSource(source);if(!sources.length){this.setTimeout(function(){this.error({code:4,message:this.localize(this.options_.notSupportedMessage)})},0);return}
1521this.changingSrc_=!0;this.cache_.sources=sources;this.updateSourceCaches_(sources[0]);setSource(this,sources[0],function(middlewareSource,mws){_this11.middleware_=mws;_this11.cache_.sources=sources;_this11.updateSourceCaches_(middlewareSource);var err=_this11.src_(middlewareSource);if(err){if(sources.length>1){return _this11.src(sources.slice(1))}
1522_this11.changingSrc_=!1;_this11.setTimeout(function(){this.error({code:4,message:this.localize(this.options_.notSupportedMessage)})},0);_this11.triggerReady();return}
1523setTech(mws,_this11.tech_)})};_proto.src_=function src_(source){var _this12=this;var sourceTech=this.selectSource([source]);if(!sourceTech){return!0}
1524if(!titleCaseEquals(sourceTech.tech,this.techName_)){this.changingSrc_=!0;this.loadTech_(sourceTech.tech,sourceTech.source);this.tech_.ready(function(){_this12.changingSrc_=!1});return!1}
1525this.ready(function(){if(this.tech_.constructor.prototype.hasOwnProperty('setSource')){this.techCall_('setSource',source)}else{this.techCall_('src',source.src)}
1526this.changingSrc_=!1},!0);return!1};_proto.load=function load(){this.techCall_('load')};_proto.reset=function reset(){var _this13=this;var PromiseClass=this.options_.Promise||window$1.Promise;if(this.paused()||!PromiseClass){this.doReset_()}else{var playPromise=this.play();silencePromise(playPromise.then(function(){return _this13.doReset_()}))}};_proto.doReset_=function doReset_(){if(this.tech_){this.tech_.clearTracks('text')}
1527this.resetCache_();this.poster('');this.loadTech_(this.options_.techOrder[0],null);this.techCall_('reset');this.resetControlBarUI_();if(isEvented(this)){this.trigger('playerreset')}};_proto.resetControlBarUI_=function resetControlBarUI_(){this.resetProgressBar_();this.resetPlaybackRate_();this.resetVolumeBar_()};_proto.resetProgressBar_=function resetProgressBar_(){this.currentTime(0);var _this$controlBar=this.controlBar,durationDisplay=_this$controlBar.durationDisplay,remainingTimeDisplay=_this$controlBar.remainingTimeDisplay;
1527if(durationDisplay){durationDisplay.updateContent()}
1528if(remainingTimeDisplay){remainingTimeDisplay.updateContent()}};_proto.resetPlaybackRate_=function resetPlaybackRate_(){this.playbackRate(this.defaultPlaybackRate());this.handleTechRateChange_()};_proto.resetVolumeBar_=function resetVolumeBar_(){this.volume(1.0);this.trigger('volumechange')};_proto.currentSources=function currentSources(){var source=this.currentSource();var sources=[];if(Object.keys(source).length!==0){sources.push(source)}
1529return this.cache_.sources||sources};_proto.currentSource=function currentSource(){return this.cache_.source||{}};_proto.currentSrc=function currentSrc(){return this.currentSource()&&this.currentSource().src||''};_proto.currentType=function currentType(){return this.currentSource()&&this.currentSource().type||''};_proto.preload=function preload(value){if(value!==undefined){this.techCall_('setPreload',value);this.options_.preload=value;return}
1530return this.techGet_('preload')};_proto.autoplay=function autoplay(value){if(value===undefined){return this.options_.autoplay||!1}
1531var techAutoplay;if(typeof value==='string'&&/(any|play|muted)/.test(value)){this.options_.autoplay=value;this.manualAutoplay_(value);techAutoplay=!1}else if(!value){this.options_.autoplay=!1}else{this.options_.autoplay=!0}
1532techAutoplay=typeof techAutoplay==='undefined'?this.options_.autoplay:techAutoplay;if(this.tech_){this.techCall_('setAutoplay',techAutoplay)}};_proto.playsinline=function playsinline(value){if(value!==undefined){this.techCall_('setPlaysinline',value);this.options_.playsinline=value;return this}
1533return this.techGet_('playsinline')};_proto.loop=function loop(value){if(value!==undefined){this.techCall_('setLoop',value);this.options_.loop=value;return}
1534return this.techGet_('loop')};_proto.poster=function poster(src){if(src===undefined){return this.poster_}
1535if(!src){src=''}
1536if(src===this.poster_){return}
1537this.poster_=src;this.techCall_('setPoster',src);this.isPosterFromTech_=!1;this.trigger('posterchange')};_proto.handleTechPosterChange_=function handleTechPosterChange_(){if((!this.poster_||this.options_.techCanOverridePoster)&&this.tech_&&this.tech_.poster){var newPoster=this.tech_.poster()||'';if(newPoster!==this.poster_){this.poster_=newPoster;this.isPosterFromTech_=!0;this.trigger('posterchange')}}};_proto.controls=function controls(bool){if(bool===undefined){return!!this.controls_}
1538bool=!!bool;if(this.controls_===bool){return}
1539this.controls_=bool;if(this.usingNativeControls()){this.techCall_('setControls',bool)}
1540if(this.controls_){this.removeClass('vjs-controls-disabled');this.addClass('vjs-controls-enabled');this.trigger('controlsenabled');if(!this.usingNativeControls()){this.addTechControlsListeners_()}}else{this.removeClass('vjs-controls-enabled');this.addClass('vjs-controls-disabled');this.trigger('controlsdisabled');if(!this.usingNativeControls()){this.removeTechControlsListeners_()}}};_proto.usingNativeControls=function usingNativeControls(bool){if(bool===undefined){return!!this.usingNativeControls_}
1541bool=!!bool;if(this.usingNativeControls_===bool){return}
1542this.usingNativeControls_=bool;if(this.usingNativeControls_){this.addClass('vjs-using-native-controls');this.trigger('usingnativecontrols')}else{this.removeClass('vjs-using-native-controls');this.trigger('usingcustomcontrols')}};_proto.error=function error(err){if(err===undefined){return this.error_||null}
1543if(this.options_.suppressNotSupportedError&&err&&err.code===4){var triggerSuppressedError=function triggerSuppressedError(){this.error(err)};this.options_.suppressNotSupportedError=!1;this.any(['click','touchstart'],triggerSuppressedError);this.one('loadstart',function(){this.off(['click','touchstart'],triggerSuppressedError)});return}
1544if(err===null){this.error_=err;this.removeClass('vjs-error');if(this.errorDisplay){this.errorDisplay.close()}
1545return}
1546this.error_=new MediaError(err);this.addClass('vjs-error');log.error("(CODE:"+this.error_.code+" "+MediaError.errorTypes[this.error_.code]+")",this.error_.message,this.error_);this.trigger('error');return};
1546_proto.reportUserActivity=function reportUserActivity(event){this.userActivity_=!0};_proto.userActive=function userActive(bool){if(bool===undefined){return this.userActive_}
1547bool=!!bool;if(bool===this.userActive_){return}
1548this.userActive_=bool;if(this.userActive_){this.userActivity_=!0;this.removeClass('vjs-user-inactive');this.addClass('vjs-user-active');this.trigger('useractive');return}
1549if(this.tech_){this.tech_.one('mousemove',function(e){e.stopPropagation();e.preventDefault()})}
1550this.userActivity_=!1;this.removeClass('vjs-user-active');this.addClass('vjs-user-inactive');this.trigger('userinactive')};_proto.listenForUserActivity_=function listenForUserActivity_(){var mouseInProgress;var lastMoveX;var lastMoveY;var handleActivity=bind(this,this.reportUserActivity);var handleMouseMove=function handleMouseMove(e){if(e.screenX!==lastMoveX||e.screenY!==lastMoveY){lastMoveX=e.screenX;lastMoveY=e.screenY;handleActivity()}};var handleMouseDown=function handleMouseDown(){handleActivity();this.clearInterval(mouseInProgress);mouseInProgress=this.setInterval(handleActivity,250)};var handleMouseUp=function handleMouseUp(event){handleActivity();this.clearInterval(mouseInProgress)};this.on('mousedown',handleMouseDown);this.on('mousemove',handleMouseMove);this.on('mouseup',handleMouseUp);var controlBar=this.getChild('controlBar');if(controlBar&&!IS_IOS&&!IS_ANDROID){controlBar.on('mouseenter',function(event){this.player().cache_.inactivityTimeout=this.player().options_.inactivityTimeout;this.player().options_.inactivityTimeout=0});controlBar.on('mouseleave',function(event){this.player().options_.inactivityTimeout=this.player().cache_.inactivityTimeout})}
1551this.on('keydown',handleActivity);this.on('keyup',handleActivity);var inactivityTimeout;this.setInterval(function(){if(!this.userActivity_){return}
1552this.userActivity_=!1;this.userActive(!0);this.clearTimeout(inactivityTimeout);var timeout=this.options_.inactivityTimeout;if(timeout<=0){return}
1553inactivityTimeout=this.setTimeout(function(){if(!this.userActivity_){this.userActive(!1)}},timeout)},250)};_proto.playbackRate=function playbackRate(rate){if(rate!==undefined){this.techCall_('setPlaybackRate',rate);return}
1554if(this.tech_&&this.tech_.featuresPlaybackRate){return this.cache_.lastPlaybackRate||this.techGet_('playbackRate')}
1555return 1.0};_proto.defaultPlaybackRate=function defaultPlaybackRate(rate){if(rate!==undefined){return this.techCall_('setDefaultPlaybackRate',rate)}
1556if(this.tech_&&this.tech_.featuresPlaybackRate){return this.techGet_('defaultPlaybackRate')}
1557return 1.0};_proto.isAudio=function isAudio(bool){if(bool!==undefined){this.isAudio_=!!bool;return}
1558return!!this.isAudio_};_proto.addTextTrack=function addTextTrack(kind,label,language){if(this.tech_){return this.tech_.addTextTrack(kind,label,language)}};_proto.addRemoteTextTrack=function addRemoteTextTrack(options,manualCleanup){if(this.tech_){return this.tech_.addRemoteTextTrack(options,manualCleanup)}};_proto.removeRemoteTextTrack=function removeRemoteTextTrack(obj){if(obj===void 0){obj={}}
1559var _obj=obj,track=_obj.track;if(!track){track=obj}
1560if(this.tech_){return this.tech_.removeRemoteTextTrack(track)}};_proto.getVideoPlaybackQuality=function getVideoPlaybackQuality(){return this.techGet_('getVideoPlaybackQuality')};_proto.videoWidth=function videoWidth(){return this.tech_&&this.tech_.videoWidth&&this.tech_.videoWidth()||0};_proto.videoHeight=function videoHeight(){return this.tech_&&this.tech_.videoHeight&&this.tech_.videoHeight()||0};_proto.language=function language(code){if(code===undefined){return this.language_}
1561this.language_=String(code).toLowerCase()};_proto.languages=function languages(){return mergeOptions(Player.prototype.options_.languages,this.languages_)};_proto.toJSON=function toJSON(){var options=mergeOptions(this.options_);var tracks=options.tracks;options.tracks=[];for(var i=0;i<tracks.length;i++){var track=tracks[i];track=mergeOptions(track);track.player=undefined;options.tracks[i]=track}
1562return options};_proto.createModal=function createModal(content,options){var _this14=this;options=options||{};options.content=content||'';var modal=new ModalDialog(this,options);this.addChild(modal);modal.on('dispose',function(){_this14.removeChild(modal)});modal.open();return modal};_proto.updateCurrentBreakpoint_=function updateCurrentBreakpoint_(){if(!this.responsive()){return}
1563var currentBreakpoint=this.currentBreakpoint();var currentWidth=this.currentWidth();for(var i=0;i<BREAKPOINT_ORDER.length;i++){var candidateBreakpoint=BREAKPOINT_ORDER[i];var maxWidth=this.breakpoints_[candidateBreakpoint];if(currentWidth<=maxWidth){if(currentBreakpoint===candidateBreakpoint){return}
1564if(currentBreakpoint){this.removeClass(BREAKPOINT_CLASSES[currentBreakpoint])}
1565this.addClass(BREAKPOINT_CLASSES[candidateBreakpoint]);this.breakpoint_=candidateBreakpoint;break}}};_proto.removeCurrentBreakpoint_=function removeCurrentBreakpoint_(){var className=this.currentBreakpointClass();this.breakpoint_='';if(className){this.removeClass(className)}};_proto.breakpoints=function breakpoints(_breakpoints){if(_breakpoints===undefined){return assign(this.breakpoints_)}
1566this.breakpoint_='';this.breakpoints_=assign({},DEFAULT_BREAKPOINTS,_breakpoints);this.updateCurrentBreakpoint_();return assign(this.breakpoints_)};_proto.responsive=function responsive(value){if(value===undefined){return this.responsive_}
1567value=Boolean(value);var current=this.responsive_;if(value===current){return}
1568this.responsive_=value;if(value){this.on('playerresize',this.updateCurrentBreakpoint_);this.updateCurrentBreakpoint_()}else{this.off('playerresize',this.updateCurrentBreakpoint_);this.removeCurrentBreakpoint_()}
1569return value};_proto.currentBreakpoint=function currentBreakpoint(){return this.breakpoint_};_proto.currentBreakpointClass=function currentBreakpointClass(){return BREAKPOINT_CLASSES[this.breakpoint_]||''};_proto.loadMedia=function loadMedia(media,ready){var _this15=this;if(!media||typeof media!=='object'){return}
1570this.reset();this.cache_.media=mergeOptions(media);var _this$cache_$media=this.cache_.media,artwork=_this$cache_$media.artwork,poster=_this$cache_$media.poster,src=_this$cache_$media.src,textTracks=_this$cache_$media.textTracks;
1570if(!artwork&&poster){this.cache_.media.artwork=[{src:poster,type:getMimetype(poster)}]}
1571if(src){this.src(src)}
1572if(poster){this.poster(poster)}
1573if(Array.isArray(textTracks)){textTracks.forEach(function(tt){return _this15.addRemoteTextTrack(tt,!1)})}
1574this.ready(ready)};_proto.getMedia=function getMedia(){if(!this.cache_.media){var poster=this.poster();var src=this.currentSources();var textTracks=Array.prototype.map.call(this.remoteTextTracks(),function(tt){return{kind:tt.kind,label:tt.label,language:tt.language,src:tt.src}});var media={src:src,textTracks:textTracks};if(poster){media.poster=poster;media.artwork=[{src:media.poster,type:getMimetype(media.poster)}]}
1575return media}
1576return mergeOptions(this.cache_.media)};Player.getTagSettings=function getTagSettings(tag){var baseOptions={sources:[],tracks:[]};var tagOptions=getAttributes(tag);var dataSetup=tagOptions['data-setup'];if(hasClass(tag,'vjs-fill')){tagOptions.fill=!0}
1577if(hasClass(tag,'vjs-fluid')){tagOptions.fluid=!0}
1578if(dataSetup!==null){var _safeParseTuple=tuple(dataSetup||'{}'),err=_safeParseTuple[0],data=_safeParseTuple[1];if(err){log.error(err)}
1579assign(tagOptions,data)}
1580assign(baseOptions,tagOptions);if(tag.hasChildNodes()){var children=tag.childNodes;for(var i=0,j=children.length;i<j;i++){var child=children[i];var childName=child.nodeName.toLowerCase();if(childName==='source'){baseOptions.sources.push(getAttributes(child))}else if(childName==='track'){baseOptions.tracks.push(getAttributes(child))}}}
1581return baseOptions};_proto.flexNotSupported_=function flexNotSupported_(){var elem=document.createElement('i');return!('flexBasis' in elem.style||'webkitFlexBasis' in elem.style||'mozFlexBasis' in elem.style||'msFlexBasis' in elem.style||'msFlexOrder' in elem.style)};return Player}(Component);ALL.names.forEach(function(name){var props=ALL[name];Player.prototype[props.getterName]=function(){if(this.tech_){return this.tech_[props.getterName]()}
1582this[props.privateName]=this[props.privateName]||new props.ListClass();return this[props.privateName]}});Player.players={};var navigator=window$1.navigator;Player.prototype.options_={techOrder:Tech.defaultTechOrder_,html5:{},flash:{},inactivityTimeout:2000,playbackRates:[],liveui:!1,children:['mediaLoader','posterImage','textTrackDisplay','loadingSpinner','bigPlayButton','liveTracker','controlBar','errorDisplay','textTrackSettings','resizeManager'],language:navigator&&(navigator.languages&&navigator.languages[0]||navigator.userLanguage||navigator.language)||'en',languages:{},notSupportedMessage:'No compatible source was found for this media.',fullscreen:{options:{navigationUI:'hide'}},breakpoints:{},responsive:!1};['ended','seeking','seekable','networkState','readyState'].forEach(function(fn){Player.prototype[fn]=function(){return this.techGet_(fn)}});TECH_EVENTS_RETRIGGER.forEach(function(event){Player.prototype["handleTech"+toTitleCase(event)+"_"]=function(){return this.trigger(event)}});Component.registerComponent('Player',Player);var setPrototypeOf=createCommonjsModule(function(module){function _setPrototypeOf(o,p){module.exports=_setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(o,p){o.__proto__=p;return o};return _setPrototypeOf(o,p)}
1583module.exports=_setPrototypeOf});var construct=createCommonjsModule(function(module){function isNativeReflectConstruct(){if(typeof Reflect==="undefined"||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(typeof Proxy==="function")return!0;try{Date.prototype.toString.call(Reflect.construct(Date,[],function(){}));return!0}catch(e){return!1}}
1584function _construct(Parent,args,Class){if(isNativeReflectConstruct()){module.exports=_construct=Reflect.construct}else{module.exports=_construct=function _construct(Parent,args,Class){var a=[null];a.push.apply(a,args);var Constructor=Function.bind.apply(Parent,a);var instance=new Constructor();if(Class)setPrototypeOf(instance,Class.prototype);return instance}}
1585return _construct.apply(null,arguments)}
1586module.exports=_construct});var BASE_PLUGIN_NAME='plugin';var PLUGIN_CACHE_KEY='activePlugins_';var pluginStorage={};var pluginExists=function pluginExists(name){return pluginStorage.hasOwnProperty(name)};var getPlugin=function getPlugin(name){return pluginExists(name)?pluginStorage[name]:un
1586defined};var markPluginAsActive=function markPluginAsActive(player,name){player[PLUGIN_CACHE_KEY]=player[PLUGIN_CACHE_KEY]||{};player[PLUGIN_CACHE_KEY][name]=!0};var triggerSetupEvent=function triggerSetupEvent(player,hash,before){var eventName=(before?'before':'')+'pluginsetup';player.trigger(eventName,hash);player.trigger(eventName+':'+hash.name,hash)};var createBasicPlugin=function createBasicPlugin(name,plugin){var basicPluginWrapper=function basicPluginWrapper(){triggerSetupEvent(this,{name:name,plugin:plugin,instance:null},!0);var instance=plugin.apply(this,arguments);markPluginAsActive(this,name);triggerSetupEvent(this,{name:name,plugin:plugin,instance:instance});return instance};Object.keys(plugin).forEach(function(prop){basicPluginWrapper[prop]=plugin[prop]});return basicPluginWrapper};var createPluginFactory=function createPluginFactory(name,PluginSubClass){PluginSubClass.prototype.name=name;return function(){triggerSetupEvent(this,{name:name,plugin:PluginSubClass,instance:null},!0);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}
1587var instance=construct(PluginSubClass,[this].concat(args));this[name]=function(){return instance};triggerSetupEvent(this,instance.getEventHash());return instance}};var Plugin=function(){function Plugin(player){if(this.constructor===Plugin){throw new Error('Plugin must be sub-classed; not directly instantiated.')}
1588this.player=player;evented(this);delete this.trigger;stateful(this,this.constructor.defaultState);markPluginAsActive(player,this.name);this.dispose=bind(this,this.dispose);player.on('dispose',this.dispose)}
1589var _proto=Plugin.prototype;_proto.version=function version(){return this.constructor.VERSION};_proto.getEventHash=function getEventHash(hash){if(hash===void 0){hash={}}
1590hash.name=this.name;hash.plugin=this.constructor;hash.instance=this;return hash};_proto.trigger=function trigger$1(event,hash){if(hash===void 0){hash={}}
1591return trigger(this.eventBusEl_,event,this.getEventHash(hash))};_proto.handleStateChanged=function handleStateChanged(e){};_proto.dispose=function dispose(){var name=this.name,player=this.player;this.trigger('dispose');this.off();player.off('dispose',this.dispose);player[PLUGIN_CACHE_KEY][name]=!1;this.player=this.state=null;player[name]=createPluginFactory(name,pluginStorage[name])};Plugin.isBasic=function isBasic(plugin){var p=typeof plugin==='string'?getPlugin(plugin):plugin;return typeof p==='function'&&!Plugin.prototype.isPrototypeOf(p.prototype)};Plugin.registerPlugin=function registerPlugin(name,plugin){if(typeof name!=='string'){throw new Error("Illegal plugin name, \""+name+"\", must be a string, was "+typeof name+".")}
1592if(pluginExists(name)){log.warn("A plugin named \""+name+"\" already exists. You may want to avoid re-registering plugins!")}else if(Player.prototype.hasOwnProperty(name)){throw new Error("Illegal plugin name, \""+name+"\", cannot share a name with an existing player method!")}
1593if(typeof plugin!=='function'){throw new Error("Illegal plugin for \""+name+"\", must be a function, was "+typeof plugin+".")}
1594pluginStorage[name]=plugin;if(name!==BASE_PLUGIN_NAME){if(Plugin.isBasic(plugin)){Player.prototype[name]=createBasicPlugin(name,plugin)}else{Player.prototype[name]=createPluginFactory(name,plugin)}}
1595return plugin};Plugin.deregisterPlugin=function deregisterPlugin(name){if(name===BASE_PLUGIN_NAME){throw new Error('Cannot de-register base plugin.')}
1596if(pluginExists(name)){delete pluginStorage[name];delete Player.prototype[name]}};Plugin.getPlugins=function getPlugins(names){if(names===void 0){names=Object.keys(pluginStorage)}
1597var result;names.forEach(function(name){var plugin=getPlugin(name);if(plugin){result=result||{};result[name]=plugin}});return result};Plugin.getPluginVersion=function getPluginVersion(name){var plugin=getPlugin(name);return plugin&&plugin.VERSION||''};return Plugin}();Plugin.getPlugin=getPlugin;Plugin.BASE_PLUGIN_NAME=BASE_PLUGIN_NAME;Plugin.registerPlugin(BASE_PLUGIN_NAME,Plugin);Player.prototype.usingPlugin=function(name){return!!this[PLUGIN_CACHE_KEY]&&this[PLUGIN_CACHE_KEY][name]===!0};Player.prototype.hasPlugin=function(name){return!!pluginExists(name)};function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function")}
1598subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:!0,configurable:!0}});if(superClass)setPrototypeOf(subClass,superClass);}
1599var inherits=_inherits;var extend=function extend(superClass,subClassMethods){if(subClassMethods===void 0){subClassMethods={}}
1600var subClass=function subClass(){superClass.apply(this,arguments)};var methods={};if(typeof subClassMethods==='object'){if(subClassMethods.constructor!==Object.prototype.constructor){subClass=subClassMethods.constructor}
1601methods=subClassMethods}else if(typeof subClassMethods==='function'){subClass=subClassMethods}
1602inherits(subClass,superClass);if(superClass){subClass.super_=superClass}
1603for(var name in methods){if(methods.hasOwnProperty(name)){subClass.prototype[name]=methods[name]}}
1604return subClass};var normalizeId=function normalizeId(id){return id.indexOf('#')===0?id.slice(1):id};function videojs$1(id,options,ready){var player=videojs$1.getPlayer(id);if(player){if(options){log.warn("Player \""+id+"\" is already initialised. Options will not be applied.")}
1605if(ready){player.ready(ready)}
1606return player}
1607var el=typeof id==='string'?$('#'+normalizeId(id)):id;if(!isEl(el)){throw new TypeError('The element or ID supplied is not val
1607id. (videojs)')}
1608if(!el.ownerDocument.defaultView||!el.ownerDocument.body.contains(el)){log.warn('The element supplied is not included in the DOM')}
1609options=options||{};videojs$1.hooks('beforesetup').forEach(function(hookFunction){var opts=hookFunction(el,mergeOptions(options));if(!isObject(opts)||Array.isArray(opts)){log.error('please return an object in beforesetup hooks');return}
1610options=mergeOptions(options,opts)});var PlayerComponent=Component.getComponent('Player');player=new PlayerComponent(el,options,ready);videojs$1.hooks('setup').forEach(function(hookFunction){return hookFunction(player)});return player}
1611videojs$1.hooks_={};videojs$1.hooks=function(type,fn){videojs$1.hooks_[type]=videojs$1.hooks_[type]||[];if(fn){videojs$1.hooks_[type]=videojs$1.hooks_[type].concat(fn)}
1612return videojs$1.hooks_[type]};videojs$1.hook=function(type,fn){videojs$1.hooks(type,fn)};videojs$1.hookOnce=function(type,fn){videojs$1.hooks(type,[].concat(fn).map(function(original){var wrapper=function wrapper(){videojs$1.removeHook(type,wrapper);return original.apply(void 0,arguments)};return wrapper}))};videojs$1.removeHook=function(type,fn){var index=videojs$1.hooks(type).indexOf(fn);if(index<=-1){return!1}
1613videojs$1.hooks_[type]=videojs$1.hooks_[type].slice();videojs$1.hooks_[type].splice(index,1);return!0};if(window$1.VIDEOJS_NO_DYNAMIC_STYLE!==!0&&isReal()){var style=$('.vjs-styles-defaults');if(!style){style=createStyleElement('vjs-styles-defaults');var head=$('head');if(head){head.insertBefore(style,head.firstChild)}
1614setTextContent(style,"\n      .video-js {\n        width: 300px;\n        height: 150px;\n      }\n\n      .vjs-fluid {\n        padding-top: 56.25%\n      }\n    ")}}
1615autoSetupTimeout(1,videojs$1);videojs$1.VERSION=version;videojs$1.options=Player.prototype.options_;videojs$1.getPlayers=function(){return Player.players};videojs$1.getPlayer=function(id){var players=Player.players;var tag;if(typeof id==='string'){var nId=normalizeId(id);var player=players[nId];if(player){return player}
1616tag=$('#'+nId)}else{tag=id}
1617if(isEl(tag)){var _tag=tag,_player=_tag.player,playerId=_tag.playerId;if(_player||players[playerId]){return _player||players[playerId]}}};videojs$1.getAllPlayers=function(){return(Object.keys(Player.players).map(function(k){return Player.players[k]}).filter(Boolean))};videojs$1.players=Player.players;videojs$1.getComponent=Component.getComponent;videojs$1.registerComponent=function(name,comp){if(Tech.isTech(comp)){log.warn("The "+name+" tech was registered as a component. It should instead be registered using videojs.registerTech(name, tech)")}
1618Component.registerComponent.call(Component,name,comp)};videojs$1.getTech=Tech.getTech;videojs$1.registerTech=Tech.registerTech;videojs$1.use=use;Object.defineProperty(videojs$1,'middleware',{value:{},writeable:!1,enumerable:!0});Object.defineProperty(videojs$1.middleware,'TERMINATOR',{value:TERMINATOR,writeable:!1,enumerable:!0});videojs$1.browser=browser;videojs$1.TOUCH_ENABLED=TOUCH_ENABLED;videojs$1.extend=extend;videojs$1.mergeOptions=mergeOptions;videojs$1.bind=bind;videojs$1.registerPlugin=Plugin.registerPlugin;videojs$1.deregisterPlugin=Plugin.deregisterPlugin;videojs$1.plugin=function(name,plugin){log.warn('videojs.plugin() is deprecated; use videojs.registerPlugin() instead');return Plugin.registerPlugin(name,plugin)};videojs$1.getPlugins=Plugin.getPlugins;videojs$1.getPlugin=Plugin.getPlugin;videojs$1.getPluginVersion=Plugin.getPluginVersion;videojs$1.addLanguage=function(code,data){var _mergeOptions;code=(''+code).toLowerCase();videojs$1.options.languages=mergeOptions(videojs$1.options.languages,(_mergeOptions={},_mergeOptions[code]=data,_mergeOptions));return videojs$1.options.languages[code]};videojs$1.log=log;videojs$1.createLogger=createLogger$1;videojs$1.createTimeRange=videojs$1.createTimeRanges=createTimeRanges;videojs$1.formatTime=formatTime;videojs$1.setFormatTime=setFormatTime;videojs$1.resetFormatTime=resetFormatTime;videojs$1.parseUrl=parseUrl;videojs$1.isCrossOrigin=isCrossOrigin;videojs$1.EventTarget=EventTarget;videojs$1.on=on;videojs$1.one=one;videojs$1.off=off;videojs$1.trigger=trigger;videojs$1.xhr=xhr;videojs$1.TextTrack=TextTrack;videojs$1.AudioTrack=AudioTrack;videojs$1.VideoTrack=VideoTrack;['isEl','isTextNode','createEl','hasClass','addClass','removeClass','toggleClass','setAttributes','getAttributes','emptyEl','appendContent','insertContent'].forEach(function(k){videojs$1[k]=function(){log.warn("videojs."+k+"() is deprecated; use videojs.dom."+k+"() instead");return Dom[k].apply(null,arguments)}});videojs$1.computedStyle=computedStyle;videojs$1.dom=Dom;videojs$1.url=Url;videojs$1.defineLazyProperty=defineLazyProperty;var urlToolkit=createCommonjsModule(function(module,exports){(function(root){var URL_REGEX=/^((?:[a-zA-Z0-9+\-.]+:)?)(\/\/[^\/?#]*)?((?:[^\/\?#]*\/)*.*?)??(;.*?)?(\?.*?)?(#.*?)?$/;var FIRST_SEGMENT_REGEX=/^([^\/?#]*)(.*)$/;var SLASH_DOT_REGEX=/(?:\/|^)\.(?=\/)/g;var SLASH_DOT_DOT_REGEX=/(?:\/|^)\.\.\/(?!\.\.\/).*?(?=\/)/g;var URLToolkit={buildAbsoluteURL:function buildAbsoluteURL(baseURL,relativeURL,opts){opts=opts||{};baseURL=baseURL.trim();relativeURL=relativeURL.trim();
1618if(!relativeURL){if(!opts.alwaysNormalize){return baseURL}
1619var basePartsForNormalise=URLToolkit.parseURL(baseURL);if(!basePartsForNormalise){throw new Error('Error trying to parse base URL.')}
1620basePartsForNormalise.path=URLToolkit.normalizePath(basePartsForNormalise.path);return URLToolkit.buildURLFromParts(basePartsForNormalise)}
1621var relativeParts=URLToolkit.parseURL(relativeURL);if(!relativeParts){throw new Error('Error trying to parse relative URL.')}
1622if(relativeParts.scheme){if(!opts.alwaysNormalize){return relativeURL}
1623relativeParts.path=URLToolkit.normalizePath(relativeParts.path);return URLToolkit.buildURLFromParts(relativeParts)}
1624var baseParts=URLToolkit.parseURL(baseURL);if(!baseParts){throw new Error('Error trying to parse base URL.')}
1625if(!baseParts.netLoc&&baseParts.path&&baseParts.path[0]!=='/'){var pathParts=FIRST_SEGMENT_REGEX.exec(baseParts.path);baseParts.netLoc=pathParts[1];baseParts.path=pathParts[2]}
1626if(baseParts.netLoc&&!baseParts.path){baseParts.path='/'}
1627var builtParts={scheme:baseParts.scheme,netLoc:relativeParts.netLoc,path:null,params:relativeParts.params,query:relativeParts.query,fragment:relativeParts.fragment};if(!relativeParts.netLoc){builtParts.netLoc=baseParts.netLoc;if(relativeParts.path[0]!=='/'){if(!relativeParts.path){builtParts.path=baseParts.path;if(!relativeParts.params){builtParts.params=baseParts.params;
1627if(!relativeParts.query){builtParts.query=baseParts.query}}}else{var baseURLPath=baseParts.path;var newPath=baseURLPath.substring(0,baseURLPath.lastIndexOf('/')+1)+relativeParts.path;builtParts.path=URLToolkit.normalizePath(newPath)}}}
1628if(builtParts.path===null){builtParts.path=opts.alwaysNormalize?URLToolkit.normalizePath(relativeParts.path):relativeParts.path}
1629return URLToolkit.buildURLFromParts(builtParts)},parseURL:function parseURL(url){var parts=URL_REGEX.exec(url);if(!parts){return null}
1630return{scheme:parts[1]||'',netLoc:parts[2]||'',path:parts[3]||'',params:parts[4]||'',query:parts[5]||'',fragment:parts[6]||''}},normalizePath:function normalizePath(path){path=path.split('').reverse().join('').replace(SLASH_DOT_REGEX,'');while(path.length!==(path=path.replace(SLASH_DOT_DOT_REGEX,'')).length){}
1631return path.split('').reverse().join('')},buildURLFromParts:function buildURLFromParts(parts){return parts.scheme+parts.netLoc+parts.path+parts.params+parts.query+parts.fragment}};module.exports=URLToolkit})()});/*! @name m3u8-parser @version 4.4.0 @license Apache-2.0 */
1632function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}
1633return target};return _extends.apply(this,arguments)}
1634function _inheritsLoose$1(subClass,superClass){subClass.prototype=Object.create(superClass.prototype);subClass.prototype.constructor=subClass;subClass.__proto__=superClass}
1635function _assertThisInitialized$1(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}
1636return self}
1637var Stream=function(){function Stream(){this.listeners={}}
1638var _proto=Stream.prototype;_proto.on=function on(type,listener){if(!this.listeners[type]){this.listeners[type]=[]}
1639this.listeners[type].push(listener)};_proto.off=function off(type,listener){if(!this.listeners[type]){return!1}
1640var index=this.listeners[type].indexOf(listener);this.listeners[type].splice(index,1);return index>-1};_proto.trigger=function trigger(type){var callbacks=this.listeners[type];var i;var length;var args;if(!callbacks){return}
1641if(arguments.length===2){length=callbacks.length;for(i=0;i<length;++i){callbacks[i].call(this,arguments[1])}}else{args=Array.prototype.slice.call(arguments,1);length=callbacks.length;for(i=0;i<length;++i){callbacks[i].apply(this,args)}}};_proto.dispose=function dispose(){this.listeners={}};_proto.pipe=function pipe(destination){this.on('data',function(data){destination.push(data)})};return Stream}();var LineStream=function(_Stream){_inheritsLoose$1(LineStream,_Stream);function LineStream(){var _this;_this=_Stream.call(this)||this;_this.buffer='';return _this}
1642var _proto=LineStream.prototype;_proto.push=function push(data){var nextNewline;this.buffer+=data;nextNewline=this.buffer.indexOf('\n');for(;nextNewline>-1;nextNewline=this.buffer.indexOf('\n')){this.trigger('data',this.buffer.substring(0,nextNewline));this.buffer=this.buffer.substring(nextNewline+1)}};return LineStream}(Stream);var attributeSeparator=function attributeSeparator(){var key='[^=]*';var value='"[^"]*"|[^,]*';var keyvalue='(?:'+key+')=(?:'+value+')';return new RegExp('(?:^|,)('+keyvalue+')')};var parseAttributes=function parseAttributes(attributes){var attrs=attributes.split(attributeSeparator());var result={};var i=attrs.length;var attr;while(i--){if(attrs[i]===''){continue}
1643attr=/([^=]*)=(.*)/.exec(attrs[i]).slice(1);attr[0]=attr[0].replace(/^\s+|\s+$/g,'');attr[1]=attr[1].replace(/^\s+|\s+$/g,'');attr[1]=attr[1].replace(/^['"](.*)['"]$/g,'$1');result[attr[0]]=attr[1]}
1644return result};var ParseStream=function(_Stream){_inheritsLoose$1(ParseStream,_Stream);function ParseStream(){var _this;_this=_Stream.call(this)||this;_this.customParsers=[];_this.tagMappers=[];return _this}
1645var _proto=ParseStream.prototype;_proto.push=function push(line){var _this2=this;var match;var event;line=line.trim();if(line.length===0){return}
1646if(line[0]!=='#'){this.trigger('data',{type:'uri',uri:line});return}
1647var newLines=this.tagMappers.reduce(function(acc,mapper){var mappedLine=mapper(line);if(mappedLine===line){return acc}
1648return acc.concat([mappedLine])},[line]);
1648newLines.forEach(function(newLine){for(var i=0;i<_this2.customParsers.length;i++){if(_this2.customParsers[i].call(_this2,newLine)){return}}
1649if(newLine.indexOf('#EXT')!==0){_this2.trigger('data',{type:'comment',text:newLine.slice(1)});return}
1650newLine=newLine.replace('\r','');match=/^#EXTM3U/.exec(newLine);if(match){_this2.trigger('data',{type:'tag',tagType:'m3u'});return}
1651match=/^#EXTINF:?([0-9\.]*)?,?(.*)?$/.exec(newLine);if(match){event={type:'tag',tagType:'inf'};if(match[1]){event.duration=parseFloat(match[1])}
1652if(match[2]){event.title=match[2]}
1653_this2.trigger('data',event);return}
1654match=/^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(newLine);if(match){event={type:'tag',tagType:'targetduration'};if(match[1]){event.duration=parseInt(match[1],10)}
1655_this2.trigger('data',event);return}
1656match=/^#ZEN-TOTAL-DURATION:?([0-9.]*)?/.exec(newLine);if(match){event={type:'tag',tagType:'totalduration'};if(match[1]){event.duration=parseInt(match[1],10)}
1657_this2.trigger('data',event);return}
1658match=/^#EXT-X-VERSION:?([0-9.]*)?/.exec(newLine);if(match){event={type:'tag',tagType:'version'};if(match[1]){event.version=parseInt(match[1],10)}
1659_this2.trigger('data',event);return}
1660match=/^#EXT-X-MEDIA-SEQUENCE:?(\-?[0-9.]*)?/.exec(newLine);if(match){event={type:'tag',tagType:'media-sequence'};if(match[1]){event.number=parseInt(match[1],10)}
1661_this2.trigger('data',event);return}
1662match=/^#EXT-X-DISCONTINUITY-SEQUENCE:?(\-?[0-9.]*)?/.exec(newLine);if(match){event={type:'tag',tagType:'discontinuity-sequence'};if(match[1]){event.number=parseInt(match[1],10)}
1663_this2.trigger('data',event);return}
1664match=/^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(newLine);if(match){event={type:'tag',tagType:'playlist-type'};if(match[1]){event.playlistType=match[1]}
1665_this2.trigger('data',event);return}
1666match=/^#EXT-X-BYTERANGE:?([0-9.]*)?@?([0-9.]*)?/.exec(newLine);if(match){event={type:'tag',tagType:'byterange'};if(match[1]){event.length=parseInt(match[1],10)}
1667if(match[2]){event.offset=parseInt(match[2],10)}
1668_this2.trigger('data',event);return}
1669match=/^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(newLine);if(match){event={type:'tag',tagType:'allow-cache'};if(match[1]){event.allowed=!/NO/.test(match[1])}
1670_this2.trigger('data',event);return}
1671match=/^#EXT-X-MAP:?(.*)$/.exec(newLine);if(match){event={type:'tag',tagType:'map'};if(match[1]){var attributes=parseAttributes(match[1]);if(attributes.URI){event.uri=attributes.URI}
1672if(attributes.BYTERANGE){var _attributes$BYTERANGE=attributes.BYTERANGE.split('@'),length=_attributes$BYTERANGE[0],offset=_attributes$BYTERANGE[1];event.byterange={};if(length){event.byterange.length=parseInt(length,10)}
1673if(offset){event.byterange.offset=parseInt(offset,10)}}}
1674_this2.trigger('data',event);return}
1675match=/^#EXT-X-STREAM-INF:?(.*)$/.exec(newLine);if(match){event={type:'tag',tagType:'stream-inf'};if(match[1]){event.attributes=parseAttributes(match[1]);if(event.attributes.RESOLUTION){var split=event.attributes.RESOLUTION.split('x');var resolution={};if(split[0]){resolution.width=parseInt(split[0],10)}
1676if(split[1]){resolution.height=parseInt(split[1],10)}
1677event.attributes.RESOLUTION=resolution}
1678if(event.attributes.BANDWIDTH){event.attributes.BANDWIDTH=parseInt(event.attributes.BANDWIDTH,10)}
1679if(event.attributes['PROGRAM-ID']){event.attributes['PROGRAM-ID']=parseInt(event.attributes['PROGRAM-ID'],10)}}
1680_this2.trigger('data',event);return}
1681match=/^#EXT-X-MEDIA:?(.*)$/.exec(newLine);if(match){event={type:'tag',tagType:'media'};if(match[1]){event.attributes=parseAttributes(match[1])}
1682_this2.trigger('data',event);return}
1683match=/^#EXT-X-ENDLIST/.exec(newLine);if(match){_this2.trigger('data',{type:'tag',tagType:'endlist'});return}
1684match=/^#EXT-X-DISCONTINUITY/.exec(newLine);if(match){_this2.trigger('data',{type:'tag',tagType:'discontinuity'});return}
1685match=/^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/.exec(newLine);if(match){event={type:'tag',tagType:'program-date-time'};if(match[1]){event.dateTimeString=match[1];event.dateTimeObject=new Date(match[1])}
1686_this2.trigger('data',event);return}
1687match=/^#EXT-X-KEY:?(.*)$/.exec(newLine);if(match){event={type:'tag',tagType:'key'};if(match[1]){event.attributes=parseAttributes(match[1]);if(event.attributes.IV){if(event.attributes.IV.substring(0,2).toLowerCase()==='0x'){event.attributes.IV=event.attributes.IV.substring(2)}
1688event.attributes.IV=event.attributes.IV.match(/.{8}/g);event.attributes.IV[0]=parseInt(event.attributes.IV[0],16);event.attributes.IV[1]=parseInt(event.attributes.IV[1],16);event.attributes.IV[2]=parseInt(event.attributes.IV[2],16);event.attributes.IV[3]=parseInt(event.attributes.IV[3],16);event.attributes.IV=new Uint32Array(event.attributes.IV)}}
1689_this2.trigger('data',event);return}
1690match=/^#EXT-X-START:?(.*)$/.exec(newLine);if(match){event={type:'tag',tagType:'start'};if(match[1]){event.attributes=parseAttributes(match[1]);event.attributes['TIME-OFFSET']=parseFloat(event.attributes['TIME-OFFSET']);event.attributes.PRECISE=/YES/.test(event.attributes.PRECISE)}
1691_this2.trigger('data',event);return}
1692match=/^#EXT-X-CUE-OUT-CONT:?(.*)?$/.exec(newLine);if(match){event={type:'tag',tagType:'cue-out-cont'};if(match[1]){event.data=match[1]}else{event.data=''}
1693_this2.trigger('data',event);return}
1694match=/^#EXT-X-CUE-OUT:?(.*)?$/.exec(newLine);if(match){event={type:'tag',tagType:'cue-out'};if(match[1]){event.data=match[1]}else{event.data=''}
1695_this2.trigger('data',event);return}
1696match=/^#EXT-X-CUE-IN:?(.*)?$/.exec(newLine);if(match){event={type:'tag',tagType:'cue-in'};if(match[1]){event.data=match[1]}else{event.data=''}
1697_this2.trigger('data',event);return}
1698_this2.trigger('data',{type:'tag',data:newLine.slice(4)})})};_proto.addParser=function addParser(_ref){var _this3=this;var expression=_ref.expression,customType=_ref.customType,dataParser=_ref.dataParser,segment=_ref.segment;if(typeof dataParser!=='function'){dataParser=function dataParser(line){return line}}
1699this.customParsers.push(function(line){var match=expression.exec(line);if(match){_this3.trigger('data',{type:'custom',data:dataParser(line),customType:customType,segment:segment});return!0}})};_proto.addTagMapper=function addTagMapper(_ref2){var expression=_ref2.expression,map=_ref2.map;var mapFn=function mapFn(line){if(expression.test(line)){return map(line)}
1700return line};this.tagMappers.push(mapFn)};return ParseStream}(Stream);function decodeB64ToUint8Array(b64Text){var decodedString=window$1.atob(b64Text||'');var array=new Uint8Array(decodedString.length);for(var i=0;i<decodedString.length;i++){array[i]=decodedString.charCodeAt(i)}
1701return array}
1702var Parser=function(_Stream){_inheritsLoose$1(Parser,_Stream);function Parser(){var _this;_this=_Stream.call(this)||this;_this.lineStream=new LineStream();_this.parseStream=new ParseStream();_this.lineStream.pipe(_this.parseStream);var self=_assertThisInitialized$1(_this);var uris=[];var currentUri={};var currentMap;var _key;var noop=function noop(){};var defaultMediaGroups={'AUDIO':{},'VIDEO':{},'CLOSED-CAPTIONS':{},'SUBTITLES':{}};var widevineUuid='urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed';var currentTimeline=0;_this.manifest={allowCache:!0,discontinuityStarts:[],segments:[]};_this.parseStream.on('data',function(entry){var mediaGroup;var rendition;({tag:function tag(){(({'allow-cache':function allowCache(){this.manifest.allowCache=entry.allowed;if(!('allowed' in entry)){this.trigger('info',{message:'defaulting allowCache to YES'});this.manifest.allowCache=!0}},byterange:function byterange(){var byterange={};if('length' in entry){currentUri.byterange=byterange;byterange.length=entry.length;if(!('offset' in entry)){this.trigger('info',{message:'defaulting offset to zero'});entry.offset=0}}
1703if('offset' in entry){currentUri.byterange=byterange;byterange.offset=entry.offset}},endlist:function endlist(){this.manifest.endList=!0},inf:function inf(){if(!('mediaSequence' in this.manifest)){this.manifest.mediaSequence=0;this.trigger('info',{message:'defaulting media sequence to zero'})}
1704if(!('discontinuitySequence' in this.manifest)){this.manifest.discontinuitySequence=0;this.trigger('info',{message:'defaulting discontinuity sequence to zero'})}
1705if(entry.duration>0){currentUri.duration=entry.duration}
1706if(entry.duration===0){currentUri.duration=0.01;this.trigger('info',{message:'updating zero segment duration to a small value'})}
1707this.manifest.segments=uris},key:function key(){if(!entry.attributes){this.trigger('warn',{message:'ignoring key declaration without attribute list'});return}
1708if(entry.attributes.METHOD==='NONE'){_key=null;return}
1709if(!entry.attributes.URI){this.trigger('warn',{message:'ignoring key declaration without URI'});return}
1710if(entry.attributes.KEYFORMAT===widevineUuid){var VALID_METHODS=['SAMPLE-AES','SAMPLE-AES-CTR','SAMPLE-AES-CENC'];if(VALID_METHODS.indexOf(entry.attributes.METHOD)===-1){this.trigger('warn',{message:'invalid key method provided for Widevine'});return}
1711if(entry.attributes.METHOD==='SAMPLE-AES-CENC'){this.trigger('warn',{message:'SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead'})}
1712if(entry.attributes.URI.substring(0,23)!=='data:text/plain;base64,'){this.trigger('warn',{message:'invalid key URI provided for Widevine'});return}
1713if(!(entry.attributes.KEYID&&entry.attributes.KEYID.substring(0,2)==='0x')){this.trigger('warn',{message:'invalid key ID provided for Widevine'});return}
1714this.manifest.contentProtection={'com.widevine.alpha':{attributes:{schemeIdUri:entry.attributes.KEYFORMAT,keyId:entry.attributes.KEYID.substring(2)},pssh:decodeB64ToUint8Array(entry.attributes.URI.split(',')[1])}};return}
1715if(!entry.attributes.METHOD){this.trigger('warn',{message:'defaulting key method to AES-128'})}
1716_key={method:entry.attributes.METHOD||'AES-128',uri:entry.attributes.URI};if(typeof entry.attributes.IV!=='undefined'){_key.iv=entry.attributes.IV}},'media-sequence':function mediaSequence(){if(!isFinite(entry.number)){this.trigger('warn',{message:'ignoring invalid media sequence: '+entry.number});return}
1717this.manifest.mediaSequence=entry.number},'discontinuity-sequence':function discontinuitySequence(){if(!isFinite(entry.number)){this.trigger('warn',{message:'ignoring invalid discontinuity sequence: '+entry.number});return}
1718this.manifest.discontinuitySequence=entry.number;currentTimeline=entry.number}
1718,'playlist-type':function playlistType(){if(!/VOD|EVENT/.test(entry.playlistType)){this.trigger('warn',{message:'ignoring unknown playlist type: '+entry.playlist});return}
1719this.manifest.playlistType=entry.playlistType},map:function map(){currentMap={};if(entry.uri){currentMap.uri=entry.uri}
1720if(entry.byterange){currentMap.byterange=entry.byterange}},'stream-inf':function streamInf(){this.manifest.playlists=uris;this.manifest.mediaGroups=this.manifest.mediaGroups||defaultMediaGroups;if(!entry.attributes){this.trigger('warn',{message:'ignoring empty stream-inf attributes'});return}
1721if(!currentUri.attributes){currentUri.attributes={}}
1722_extends(currentUri.attributes,entry.attributes)},media:function media(){this.manifest.mediaGroups=this.manifest.mediaGroups||defaultMediaGroups;if(!(entry.attributes&&entry.attributes.TYPE&&entry.attributes['GROUP-ID']&&entry.attributes.NAME)){this.trigger('warn',{message:'ignoring incomplete or missing media group'});return}
1723var mediaGroupType=this.manifest.mediaGroups[entry.attributes.TYPE];mediaGroupType[entry.attributes['GROUP-ID']]=mediaGroupType[entry.attributes['GROUP-ID']]||{};mediaGroup=mediaGroupType[entry.attributes['GROUP-ID']];rendition={"default":/yes/i.test(entry.attributes.DEFAULT)};if(rendition["default"]){rendition.autoselect=!0}else{rendition.autoselect=/yes/i.test(entry.attributes.AUTOSELECT)}
1724if(entry.attributes.LANGUAGE){rendition.language=entry.attributes.LANGUAGE}
1725if(entry.attributes.URI){rendition.uri=entry.attributes.URI}
1726if(entry.attributes['INSTREAM-ID']){rendition.instreamId=entry.attributes['INSTREAM-ID']}
1727if(entry.attributes.CHARACTERISTICS){rendition.characteristics=entry.attributes.CHARACTERISTICS}
1728if(entry.attributes.FORCED){rendition.forced=/yes/i.test(entry.attributes.FORCED)}
1729mediaGroup[entry.attributes.NAME]=rendition},discontinuity:function discontinuity(){currentTimeline+=1;currentUri.discontinuity=!0;this.manifest.discontinuityStarts.push(uris.length)},'program-date-time':function programDateTime(){if(typeof this.manifest.dateTimeString==='undefined'){this.manifest.dateTimeString=entry.dateTimeString;this.manifest.dateTimeObject=entry.dateTimeObject}
1730currentUri.dateTimeString=entry.dateTimeString;currentUri.dateTimeObject=entry.dateTimeObject},targetduration:function targetduration(){if(!isFinite(entry.duration)||entry.duration<0){this.trigger('warn',{message:'ignoring invalid target duration: '+entry.duration});return}
1731this.manifest.targetDuration=entry.duration},totalduration:function totalduration(){if(!isFinite(entry.duration)||entry.duration<0){this.trigger('warn',{message:'ignoring invalid total duration: '+entry.duration});return}
1732this.manifest.totalDuration=entry.duration},start:function start(){if(!entry.attributes||isNaN(entry.attributes['TIME-OFFSET'])){this.trigger('warn',{message:'ignoring start declaration without appropriate attribute list'});return}
1733this.manifest.start={timeOffset:entry.attributes['TIME-OFFSET'],precise:entry.attributes.PRECISE}},'cue-out':function cueOut(){currentUri.cueOut=entry.data},'cue-out-cont':function cueOutCont(){currentUri.cueOutCont=entry.data},'cue-in':function cueIn(){currentUri.cueIn=entry.data}})[entry.tagType]||noop).call(self)},uri:function uri(){currentUri.uri=entry.uri;uris.push(currentUri);if(this.manifest.targetDuration&&!('duration' in currentUri)){this.trigger('warn',{message:'defaulting segment duration to the target duration'});currentUri.duration=this.manifest.targetDuration}
1734if(_key){currentUri.key=_key}
1735currentUri.timeline=currentTimeline;if(currentMap){currentUri.map=currentMap}
1736currentUri={}},comment:function comment(){},custom:function custom(){if(entry.segment){currentUri.custom=currentUri.custom||{};currentUri.custom[entry.customType]=entry.data}else{this.manifest.custom=this.manifest.custom||{};this.manifest.custom[entry.customType]=entry.data}}})[entry.type].call(self)});return _this}
1737var _proto=Parser.prototype;_proto.push=function push(chunk){this.lineStream.push(chunk)};_proto.end=function end(){this.lineStream.push('\n')};_proto.addParser=function addParser(options){this.parseStream.addParser(options)};_proto.addTagMapper=function addTagMapper(options){this.parseStream.addTagMapper(options)};return Parser}(Stream);
1737/*! @name mpd-parser @version 0.8.1 @license Apache-2.0 */
1738var isObject$1=function isObject(obj){return!!obj&&typeof obj==='object'};var merge=function merge(){for(var _len=arguments.length,objects=new Array(_len),_key=0;_key<_len;_key++){objects[_key]=arguments[_key]}
1739return objects.reduce(function(result,source){Object.keys(source).forEach(function(key){if(Array.isArray(result[key])&&Array.isArray(source[key])){result[key]=result[key].concat(source[key])}else if(isObject$1(result[key])&&isObject$1(source[key])){result[key]=merge(result[key],source[key])}else{result[key]=source[key]}});return result},{})};var values=function values(o){return Object.keys(o).map(function(k){return o[k]})};var range=function range(start,end){var result=[];for(var i=start;i<end;i++){result.push(i)}
1740return result};var flatten=function flatten(lists){return lists.reduce(function(x,y){return x.concat(y)},[])};var from=function from(list){if(!list.length){return[]}
1741var result=[];for(var i=0;i<list.length;i++){result.push(list[i])}
1742return result};var findIndexes=function findIndexes(l,key){return l.reduce(function(a,e,i){if(e[key]){a.push(i)}
1743return a},[])};var errors={INVALID_NUMBER_OF_PERIOD:'INVALID_NUMBER_OF_PERIOD',DASH_EMPTY_MANIFEST:'DASH_EMPTY_MANIFEST',DASH_INVALID_XML:'DASH_INVALID_XML',NO_BASE_URL:'NO_BASE_URL',MISSING_SEGMENT_INFORMATION:'MISSING_SEGMENT_INFORMATION',SEGMENT_TIME_UNSPECIFIED:'SEGMENT_TIME_UNSPECIFIED',UNSUPPORTED_UTC_TIMING_SCHEME:'UNSUPPORTED_UTC_TIMING_SCHEME'};function createCommonjsModule$1(fn,module){return module={exports:{}},fn(module,module.exports),module.exports}
1744var urlToolkit$1=createCommonjsModule$1(function(module,exports){(function(root){var URL_REGEX=/^((?:[a-zA-Z0-9+\-.]+:)?)(\/\/[^\/?#]*)?((?:[^\/\?#]*\/)*.*?)??(;.*?)?(\?.*?)?(#.*?)?$/;var FIRST_SEGMENT_REGEX=/^([^\/?#]*)(.*)$/;var SLASH_DOT_REGEX=/(?:\/|^)\.(?=\/)/g;var SLASH_DOT_DOT_REGEX=/(?:\/|^)\.\.\/(?!\.\.\/).*?(?=\/)/g;var URLToolkit={buildAbsoluteURL:function buildAbsoluteURL(baseURL,relativeURL,opts){opts=opts||{};baseURL=baseURL.trim();relativeURL=relativeURL.trim();if(!relativeURL){if(!opts.alwaysNormalize){return baseURL}
1745var basePartsForNormalise=URLToolkit.parseURL(baseURL);if(!basePartsForNormalise){throw new Error('Error trying to parse base URL.')}
1746basePartsForNormalise.path=URLToolkit.normalizePath(basePartsForNormalise.path);return URLToolkit.buildURLFromParts(basePartsForNormalise)}
1747var relativeParts=URLToolkit.parseURL(relativeURL);if(!relativeParts){throw new Error('Error trying to parse relative URL.')}
1748if(relativeParts.scheme){if(!opts.alwaysNormalize){return relativeURL}
1749relativeParts.path=URLToolkit.normalizePath(relativeParts.path);return URLToolkit.buildURLFromParts(relativeParts)}
1750var baseParts=URLToolkit.parseURL(baseURL);if(!baseParts){throw new Error('Error trying to parse base URL.')}
1751if(!baseParts.netLoc&&baseParts.path&&baseParts.path[0]!=='/'){var pathParts=FIRST_SEGMENT_REGEX.exec(baseParts.path);baseParts.netLoc=pathParts[1];baseParts.path=pathParts[2]}
1752if(baseParts.netLoc&&!baseParts.path){baseParts.path='/'}
1753var builtParts={scheme:baseParts.scheme,netLoc:relativeParts.netLoc,path:null,params:relativeParts.params,query:relativeParts.query,fragment:relativeParts.fragment};if(!relativeParts.netLoc){builtParts.netLoc=baseParts.netLoc;if(relativeParts.path[0]!=='/'){if(!relativeParts.path){builtParts.path=baseParts.path;if(!relativeParts.params){builtParts.params=baseParts.params;
1753if(!relativeParts.query){builtParts.query=baseParts.query}}}else{var baseURLPath=baseParts.path;var newPath=baseURLPath.substring(0,baseURLPath.lastIndexOf('/')+1)+relativeParts.path;builtParts.path=URLToolkit.normalizePath(newPath)}}}
1754if(builtParts.path===null){builtParts.path=opts.alwaysNormalize?URLToolkit.normalizePath(relativeParts.path):relativeParts.path}
1755return URLToolkit.buildURLFromParts(builtParts)},parseURL:function parseURL(url){var parts=URL_REGEX.exec(url);if(!parts){return null}
1756return{scheme:parts[1]||'',netLoc:parts[2]||'',path:parts[3]||'',params:parts[4]||'',query:parts[5]||'',fragment:parts[6]||''}},normalizePath:function normalizePath(path){path=path.split('').reverse().join('').replace(SLASH_DOT_REGEX,'');while(path.length!==(path=path.replace(SLASH_DOT_DOT_REGEX,'')).length){}
1757return path.split('').reverse().join('')},buildURLFromParts:function buildURLFromParts(parts){return parts.scheme+parts.netLoc+parts.path+parts.params+parts.query+parts.fragment}};module.exports=URLToolkit})()});var resolveUrl=function resolveUrl(baseUrl,relativeUrl){if(/^[a-z]+:/i.test(relativeUrl)){return relativeUrl}
1758if(!/\/\//i.test(baseUrl)){baseUrl=urlToolkit$1.buildAbsoluteURL(window$1.location.href,baseUrl)}
1759return urlToolkit$1.buildAbsoluteURL(baseUrl,relativeUrl)};var urlTypeToSegment=function urlTypeToSegment(_ref){var _ref$baseUrl=_ref.baseUrl,baseUrl=_ref$baseUrl===void 0?'':_ref$baseUrl,_ref$source=_ref.source,source=_ref$source===void 0?'':_ref$source,_ref$range=_ref.range,range=_ref$range===void 0?'':_ref$range,_ref$indexRange=_ref.indexRange,indexRange=_ref$indexRange===void 0?'':_ref$indexRange;var segment={uri:source,resolvedUri:resolveUrl(baseUrl||'',source)};if(range||indexRange){var rangeStr=range?range:indexRange;var ranges=rangeStr.split('-');var startRange=parseInt(ranges[0],10);var endRange=parseInt(ranges[1],10);segment.byterange={length:endRange-startRange+1,offset:startRange}}
1760return segment};var byteRangeToString=function byteRangeToString(byterange){var endRange=byterange.offset+byterange.length-1;return byterange.offset+"-"+endRange};var segmentRange={"static":function _static(attributes){var duration=attributes.duration,_attributes$timescale=attributes.timescale,timescale=_attributes$timescale===void 0?1:_attributes$timescale,sourceDuration=attributes.sourceDuration;return{start:0,end:Math.ceil(sourceDuration/(duration/timescale))}},dynamic:function dynamic(attributes){var NOW=attributes.NOW,clientOffset=attributes.clientOffset,availabilityStartTime=attributes.availabilityStartTime,_attributes$timescale2=attributes.timescale,timescale=_attributes$timescale2===void 0?1:_attributes$timescale2,duration=attributes.duration,_attributes$start=attributes.start,start=_attributes$start===void 0?0:_attributes$start,_attributes$minimumUp=attributes.minimumUpdatePeriod,minimumUpdatePeriod=_attributes$minimumUp===void 0?0:_attributes$minimumUp,_attributes$timeShift=attributes.timeShiftBufferDepth,timeShiftBufferDepth=_attributes$timeShift===void 0?Infinity:_attributes$timeShift;var now=(NOW+clientOffset)/1000;var periodStartWC=availabilityStartTime+start;var periodEndWC=now+minimumUpdatePeriod;var periodDuration=periodEndWC-periodStartWC;var segmentCount=Math.ceil(periodDuration*timescale/duration);var availableStart=Math.floor((now-periodStartWC-timeShiftBufferDepth)*timescale/duration);var availableEnd=Math.floor((now-periodStartWC)*timescale/duration);return{start:Math.max(0,availableStart),end:Math.min(segmentCount,availableEnd)}}};var toSegments=function toSegments(attributes){return function(number,index){var duration=attributes.duration,_attributes$timescale3=attributes.timescale,timescale=_attributes$timescale3===void 0?1:_attributes$timescale3,periodIndex=attributes.periodIndex,_attributes$startNumb=attributes.startNumber,startNumber=_attributes$startNumb===void 0?1:_attributes$startNumb;return{number:startNumber+number,duration:duration/timescale,timeline:periodIndex,time:index*duration}}};var parseByDuration=function parseByDuration(attributes){var _attributes$type=attributes.type,type=_attributes$type===void 0?'static':_attributes$type,duration=attributes.duration,_attributes$timescale4=attributes.timescale,timescale=_attributes$timescale4===void 0?1:_attributes$timescale4,sourceDuration=attributes.sourceDuration;var _segmentRange$type=segmentRange[type](attributes),start=_segmentRange$type.start,end=_segmentRange$type.end;var segments=range(start,end).map(toSegments(attributes));if(type==='static'){var index=segments.length-1;segments[index].duration=sourceDuration-duration/timescale*index}
1761return segments};var segmentsFromBase=function segmentsFromBase(attributes){var baseUrl=attributes.baseUrl,_attributes$initializ=attributes.initialization,initialization=_attributes$initializ===void 0?{}:_attributes$initializ,sourceDuration=attributes.sourceDuration,_attributes$timescale=attributes.timescale,timescale=_attributes$timescale===void 0?1:_attributes$timescale,_attributes$indexRang=attributes.indexRange,indexRange=_attributes$indexRang===void 0?'':_attributes$indexRang,duration=attributes.duration;if(!baseUrl){throw new Error(errors.NO_BASE_URL)}
1762var initSegment=urlTypeToSegment({baseUrl:baseUrl,source:initialization.sourceURL,range:initialization.range});var segment=urlTypeToSegment({baseUrl:baseUrl,source:baseUrl,indexRange:indexRange});segment.map=initSegment;if(duration){var segmentTimeInfo=parseByDuration(attributes);if(segmentTimeInfo.length){segment.duration=segmentTimeInfo[0].duration;segment.timeline=segmentTimeInfo[0].timeline}}else if(sourceDuration){segment.duration=sourceDuration/timescale;segment.timeline=0}
1763segment.number=0;return[segment]};var addSegmentsToPlaylist=function addSegmentsToPlaylist(playlist,sidx,baseUrl){var initSegment=playlist.sidx.map?playlist.sidx.map:null;var sourceDuration=playlist.sidx.duration;var timeline=playlist.timeline||0;var sidxByteRange=playlist.sidx.byterange;var sidxEnd=sidxByteRange.offset+sidxByteRange.length;var timescale=sidx.timescale;var mediaReferences=sidx.references.filter(function(r){return r.referenceType!==1});var segments=[];
1763var startIndex=sidxEnd+sidx.firstOffset;for(var i=0;i<mediaReferences.length;i++){var reference=sidx.references[i];var size=reference.referencedSize;var duration=reference.subsegmentDuration;var endIndex=startIndex+size-1;var indexRange=startIndex+"-"+endIndex;var attributes={baseUrl:baseUrl,timescale:timescale,timeline:timeline,periodIndex:timeline,duration:duration,sourceDuration:sourceDuration,indexRange:indexRange};var segment=segmentsFromBase(attributes)[0];if(initSegment){segment.map=initSegment}
1764segments.push(segment);startIndex+=size}
1765playlist.segments=segments;return playlist};var mergeDiscontiguousPlaylists=function mergeDiscontiguousPlaylists(playlists){var mergedPlaylists=values(playlists.reduce(function(acc,playlist){var name=playlist.attributes.id+(playlist.attributes.lang||'');if(acc[name]){var _acc$name$segments;if(playlist.segments[0]){playlist.segments[0].discontinuity=!0}(_acc$name$segments=acc[name].segments).push.apply(_acc$name$segments,playlist.segments);if(playlist.attributes.contentProtection){acc[name].attributes.contentProtection=playlist.attributes.contentProtection}}else{acc[name]=playlist}
1766return acc},{}));return mergedPlaylists.map(function(playlist){playlist.discontinuityStarts=findIndexes(playlist.segments,'discontinuity');return playlist})};var addSegmentInfoFromSidx=function addSegmentInfoFromSidx(playlists,sidxMapping){if(sidxMapping===void 0){sidxMapping={}}
1767if(!Object.keys(sidxMapping).length){return playlists}
1768for(var i in playlists){var playlist=playlists[i];if(!playlist.sidx){continue}
1769var sidxKey=playlist.sidx.uri+'-'+byteRangeToString(playlist.sidx.byterange);var sidxMatch=sidxMapping[sidxKey]&&sidxMapping[sidxKey].sidx;if(playlist.sidx&&sidxMatch){addSegmentsToPlaylist(playlist,sidxMatch,playlist.sidx.resolvedUri)}}
1770return playlists};var formatAudioPlaylist=function formatAudioPlaylist(_ref){var _attributes;var attributes=_ref.attributes,segments=_ref.segments,sidx=_ref.sidx;var playlist={attributes:(_attributes={NAME:attributes.id,BANDWIDTH:attributes.bandwidth,CODECS:attributes.codecs},_attributes['PROGRAM-ID']=1,_attributes),uri:'',endList:(attributes.type||'static')==='static',timeline:attributes.periodIndex,resolvedUri:'',targetDuration:attributes.duration,segments:segments,mediaSequence:segments.length?segments[0].number:1};if(attributes.contentProtection){playlist.contentProtection=attributes.contentProtection}
1771if(sidx){playlist.sidx=sidx}
1772return playlist};var formatVttPlaylist=function formatVttPlaylist(_ref2){var _attributes2;var attributes=_ref2.attributes,segments=_ref2.segments;if(typeof segments==='undefined'){segments=[{uri:attributes.baseUrl,timeline:attributes.periodIndex,resolvedUri:attributes.baseUrl||'',duration:attributes.sourceDuration,number:0}];attributes.duration=attributes.sourceDuration}
1773return{attributes:(_attributes2={NAME:attributes.id,BANDWIDTH:attributes.bandwidth},_attributes2['PROGRAM-ID']=1,_attributes2),uri:'',endList:(attributes.type||'static')==='static',timeline:attributes.periodIndex,resolvedUri:attributes.baseUrl||'',targetDuration:attributes.duration,segments:segments,mediaSequence:segments.length?segments[0].number:1}};var organizeAudioPlaylists=function organizeAudioPlaylists(playlists,sidxMapping){if(sidxMapping===void 0){sidxMapping={}}
1774var mainPlaylist;var formattedPlaylists=playlists.reduce(function(a,playlist){var role=playlist.attributes.role&&playlist.attributes.role.value||'';var language=playlist.attributes.lang||'';var label='main';if(language){var roleLabel=role?" ("+role+")":'';label=""+playlist.attributes.lang+roleLabel}
1775if(a[label]&&a[label].playlists[0].attributes.BANDWIDTH>playlist.attributes.bandwidth){return a}
1776a[label]={language:language,autoselect:!0,"default":role==='main',playlists:addSegmentInfoFromSidx([formatAudioPlaylist(playlist)],sidxMapping),uri:''};if(typeof mainPlaylist==='undefined'&&role==='main'){mainPlaylist=playlist;mainPlaylist["default"]=!0}
1777return a},{});if(!mainPlaylist){var firstLabel=Object.keys(formattedPlaylists)[0];formattedPlaylists[firstLabel]["default"]=!0}
1778return formattedPlaylists};var organizeVttPlaylists=function organizeVttPlaylists(playlists,sidxMapping){if(sidxMapping===void 0){sidxMapping={}}
1779return playlists.reduce(function(a,playlist){var label=playlist.attributes.lang||'text';if(a[label]){return a}
1780a[label]={language:label,"default":!1,autoselect:!1,playlists:addSegmentInfoFromSidx([formatVttPlaylist(playlist)],sidxMapping),uri:''};return a},{})};var formatVideoPlaylist=function formatVideoPlaylist(_ref3){var _attributes3;var attributes=_ref3.attributes,segments=_ref3.segments,sidx=_ref3.sidx;var playlist={attributes:(_attributes3={NAME:attributes.id,AUDIO:'audio',SUBTITLES:'subs',RESOLUTION:{width:attributes.width,height:attributes.height},CODECS:attributes.codecs,BANDWIDTH:attributes.bandwidth},_attributes3['PROGRAM-ID']=1,_attributes3),uri:'',endList:(attributes.type||'static')==='static',timeline:attributes.periodIndex,resolvedUri:'',targetDuration:attributes.duration,segments:segments,mediaSequence:segments.length?segments[0].number:1};if(attributes.contentProtection){playlist.contentProtection=attributes.contentProtection}
1781if(sidx){playlist.sidx=sidx}
1782return playlist};var toM3u8=function toM3u8(dashPlaylists,sidxMapping){var _mediaGroups;if(sidxMapping===void 0){sidxMapping={}}
1783if(!dashPlaylists.length){return{}}
1784var _dashPlaylists$0$attr=dashPlaylists[0].attributes,duration=_dashPlaylists$0$attr.sourceDuration,_dashPlaylists$0$attr2=_dashPlaylists$0$attr.minimumUpdatePeriod,minimumUpdatePeriod=_dashPlaylists$0$attr2===void 0?0:_dashPlaylists$0$attr2;var videoOnly=function videoOnly(_ref4){var attributes=_ref4.attributes;return attributes.mimeType==='video/mp4'||attributes.contentType==='video'};var audioOnly=function audioOnly(_ref5){var attributes=_ref5.attributes;return attributes.mimeType==='audio/mp4'||attributes.contentType==='audio'};var vttOnly=function vttOnly(_ref6){var attributes=_ref6.attributes;return attributes.mimeType==='text/vtt'||attributes.contentType==='text'};var videoPlaylists=mergeDiscontiguousPlaylists(dashPlaylists.filter(videoOnly)).map(formatVideoPlaylist);var audioPlaylists=mergeDiscontiguousPlaylists(dashPlaylists.filter(audioOnly));var vttPlaylists=dashPlaylists.filter(vttOnly);var master={allowCache:!0,discontinuityStarts:[],segments:[],endList:!0,mediaGroups:(_mediaGroups={AUDIO:{},VIDEO:{}},_mediaGroups['CLOSED-CAPTIONS']={},_mediaGroups.SUBTITLES={},_mediaGroups),uri:'',duration:duration,playlists:addSegmentInfoFromSidx(videoPlaylists,sidxMapping),minimumUpdatePeriod:minimumUpdatePeriod*1000};if(audioPlaylists.length){master.mediaGroups.AUDIO.audio=organizeAudioPlaylists(audioPlaylists,sidxMapping)}
1785if(vttPlaylists.length){master.mediaGroups.SUBTITLES.subs=organizeVttPlaylists(vttPlaylists,sidxMapping)}
1786return master};var getLiveRValue=function getLiveRValue(attributes,time,duration){var NOW=attributes.NOW,clientOffset=attributes.clientOffset,availabilityStartTime=attributes.availabilityStartTime,_attributes$timescale=attributes.timescale,timescale=_attributes$timescale===void 0?1:_attributes$timescale,_attributes$start=attributes.start,start=_attributes$start===void 0?0:_attributes$start,_attributes$minimumUp=attributes.minimumUpdatePeriod,minimumUpdatePeriod=_attributes$minimumUp===void 0?0:_attributes$minimumUp;var now=(NOW+clientOffset)/1000;var periodStartWC=availabilityStartTime+start;var periodEndWC=now+minimumUpdatePeriod;var periodDuration=periodEndWC-periodStartWC;return Math.ceil((periodDuration*timescale-time)/duration)};var parseByTimeline=function parseByTimeline(attributes,segmentTimeline){var _attributes$type=attributes.type,type=_attributes$type===void 0?'static':_attributes$type,_attributes$minimumUp2=attributes.minimumUpdatePeriod,minimumUpdatePeriod=_attributes$minimumUp2===void 0?0:_attributes$minimumUp2,_attributes$media=attributes.media,media=_attributes$media===void 0?'':_attributes$media,sourceDuration=attributes.sourceDuration,_attributes$timescale2=attributes.timescale,timescale=_attributes$timescale2===void 0?1:_attributes$timescale2,_attributes$startNumb=attributes.startNumber,startNumber=_attributes$startNumb===void 0?1:_attributes$startNumb,timeline=attributes.periodIndex;var segments=[];var time=-1;for(var sIndex=0;sIndex<segmentTimeline.length;sIndex++){var S=segmentTimeline[sIndex];var duration=S.d;var repeat=S.r||0;var segmentTime=S.t||0;if(time<0){time=segmentTime}
1787if(segmentTime&&segmentTime>time){time=segmentTime}
1788var count=void 0;if(repeat<0){var nextS=sIndex+1;if(nextS===segmentTimeline.length){if(type==='dynamic'&&minimumUpdatePeriod>0&&media.indexOf('$Number$')>0){count=getLiveRValue(attributes,time,duration)}else{count=(sourceDuration*timescale-time)/duration}}else{count=(segmentTimeline[nextS].t-time)/duration}}else{count=repeat+1}
1789var end=startNumber+segments.length+count;var number=startNumber+segments.length;while(number<end){segments.push({number:number,duration:duration/timescale,time:time,timeline:timeline});time+=duration;number++}}
1790return segments};var identifierPattern=/\$([A-z]*)(?:(%0)([0-9]+)d)?\$/g;var identifierReplacement=function identifierReplacement(values){return function(match,identifier,format,width){if(match==='$$'){return'$'}
1791if(typeof values[identifier]==='undefined'){return match}
1792var value=''+values[identifier];if(identifier==='RepresentationID'){return value}
1793if(!format){width=1}else{width=parseInt(width,10)}
1794if(value.length>=width){return value}
1795return""+new Array(width-value.length+1).join('0')+value}};var constructTemplateUrl=function constructTemplateUrl(url,values){return url.replace(identifierPattern,identifierReplacement(values))};var parseTemplateInfo=function parseTemplateInfo(attributes,segmentTimeline){if(!attributes.duration&&!segmentTimeline){return[{number:attributes.startNumber||1,duration:attributes.sourceDuration,time:0,timeline:attributes.periodIndex}]}
1796if(attributes.duration){return parseByDuration(attributes)}
1797return parseByTimeline(attributes,segmentTimeline)};var segmentsFromTemplate=function segmentsFromTemplate(attributes,segmentTimeline){var templateValues={RepresentationID:attributes.id,Bandwidth:attributes.bandwidth||0};var _attributes$initializ=attributes.initialization,initialization=_attributes$initializ===void 0?{sourceURL:'',range:''}:_attributes$initializ;var mapSegment=urlTypeToSegment({baseUrl:attributes.baseUrl,source:constructTemplateUrl(initialization.sourceURL,templateValues),range:initialization.range});var segments=parseTemplateInfo(attributes,segmentTimeline);return segments.map(function(segment){templateValues.Number=segment.number;templateValues.Time=segment.time;var uri=constructTemplateUrl(attributes.media||'',templateValues);return{uri:uri,timeline:segment.timeline,duration:segment.duration,resolvedUri:resolveUrl(attributes.baseUrl||'',uri),map:mapSegment,number:segment.number}})};var SegmentURLToSegmentObject=function SegmentURLToSegmentObject(attributes,segmentUrl){var baseUrl=attributes.baseUrl,_attributes$initializ=attributes.initialization,initialization=_attributes$initializ===void 0?{}:_attributes$initializ;var initSegment=urlTypeToSegment({baseUrl:baseUrl,source:initialization.sourceURL,range:initialization.range});var segment=urlTypeToSegment({baseUrl:baseUrl,source:segmentUrl.media,range:segmentUrl.mediaRange});segment.map=initSegment;return segment};
1797var segmentsFromList=function segmentsFromList(attributes,segmentTimeline){var duration=attributes.duration,_attributes$segmentUr=attributes.segmentUrls,segmentUrls=_attributes$segmentUr===void 0?[]:_attributes$segmentUr;if(!duration&&!segmentTimeline||duration&&segmentTimeline){throw new Error(errors.SEGMENT_TIME_UNSPECIFIED)}
1798var segmentUrlMap=segmentUrls.map(function(segmentUrlObject){return SegmentURLToSegmentObject(attributes,segmentUrlObject)});var segmentTimeInfo;if(duration){segmentTimeInfo=parseByDuration(attributes)}
1799if(segmentTimeline){segmentTimeInfo=parseByTimeline(attributes,segmentTimeline)}
1800var segments=segmentTimeInfo.map(function(segmentTime,index){if(segmentUrlMap[index]){var segment=segmentUrlMap[index];segment.timeline=segmentTime.timeline;segment.duration=segmentTime.duration;segment.number=segmentTime.number;return segment}}).filter(function(segment){return segment});return segments};var generateSegments=function generateSegments(_ref){var attributes=_ref.attributes,segmentInfo=_ref.segmentInfo;var segmentAttributes;var segmentsFn;if(segmentInfo.template){segmentsFn=segmentsFromTemplate;segmentAttributes=merge(attributes,segmentInfo.template)}else if(segmentInfo.base){segmentsFn=segmentsFromBase;segmentAttributes=merge(attributes,segmentInfo.base)}else if(segmentInfo.list){segmentsFn=segmentsFromList;segmentAttributes=merge(attributes,segmentInfo.list)}
1801var segmentsInfo={attributes:attributes};if(!segmentsFn){return segmentsInfo}
1802var segments=segmentsFn(segmentAttributes,segmentInfo.timeline);if(segmentAttributes.duration){var _segmentAttributes=segmentAttributes,duration=_segmentAttributes.duration,_segmentAttributes$ti=_segmentAttributes.timescale,timescale=_segmentAttributes$ti===void 0?1:_segmentAttributes$ti;segmentAttributes.duration=duration/timescale}else if(segments.length){segmentAttributes.duration=segments.reduce(function(max,segment){return Math.max(max,Math.ceil(segment.duration))},0)}else{segmentAttributes.duration=0}
1803segmentsInfo.attributes=segmentAttributes;segmentsInfo.segments=segments;if(segmentInfo.base&&segmentAttributes.indexRange){segmentsInfo.sidx=segments[0];segmentsInfo.segments=[]}
1804return segmentsInfo};var toPlaylists=function toPlaylists(representations){return representations.map(generateSegments)};var findChildren=function findChildren(element,name){return from(element.childNodes).filter(function(_ref){var tagName=_ref.tagName;return tagName===name})};var getContent=function getContent(element){return element.textContent.trim()};var parseDuration=function parseDuration(str){var SECONDS_IN_YEAR=365*24*60*60;var SECONDS_IN_MONTH=30*24*60*60;var SECONDS_IN_DAY=24*60*60;var SECONDS_IN_HOUR=60*60;var SECONDS_IN_MIN=60;var durationRegex=/P(?:(\d*)Y)?(?:(\d*)M)?(?:(\d*)D)?(?:T(?:(\d*)H)?(?:(\d*)M)?(?:([\d.]*)S)?)?/;var match=durationRegex.exec(str);if(!match){return 0}
1805var _match$slice=match.slice(1),year=_match$slice[0],month=_match$slice[1],day=_match$slice[2],hour=_match$slice[3],minute=_match$slice[4],second=_match$slice[5];return parseFloat(year||0)*SECONDS_IN_YEAR+parseFloat(month||0)*SECONDS_IN_MONTH+parseFloat(day||0)*SECONDS_IN_DAY+parseFloat(hour||0)*SECONDS_IN_HOUR+parseFloat(minute||0)*SECONDS_IN_MIN+parseFloat(second||0)};var parseDate=function parseDate(str){var dateRegex=/^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/;if(dateRegex.test(str)){str+='Z'}
1806return Date.parse(str)};var parsers={mediaPresentationDuration:function mediaPresentationDuration(value){return parseDuration(value)},availabilityStartTime:function availabilityStartTime(value){return parseDate(value)/1000},minimumUpdatePeriod:function minimumUpdatePeriod(value){return parseDuration(value)},timeShiftBufferDepth:function timeShiftBufferDepth(value){return parseDuration(value)},start:function start(value){return parseDuration(value)},width:function width(value){return parseInt(value,10)},height:function height(value){return parseInt(value,10)},bandwidth:function bandwidth(value){return parseInt(value,10)},startNumber:function startNumber(value){return parseInt(value,10)},timescale:function timescale(value){return parseInt(value,10)},duration:function duration(value){var parsedValue=parseInt(value,10);if(isNaN(parsedValue)){return parseDuration(value)}
1807return parsedValue},d:function d(value){return parseInt(value,10)},t:function t(value){return parseInt(value,10)},r:function r(value){return parseInt(value,10)},DEFAULT:function DEFAULT(value){return value}};var parseAttributes$1=function parseAttributes(el){if(!(el&&el.attributes)){return{}}
1808return from(el.attributes).reduce(function(a,e){var parseFn=parsers[e.name]||parsers.DEFAULT;a[e.name]=parseFn(e.value);return a},{})};function decodeB64ToUint8Array$1(b64Text){var decodedString=window$1.atob(b64Text);var array=new Uint8Array(decodedString.length);for(var i=0;i<decodedString.length;i++){array[i]=decodedString.charCodeAt(i)}
1809return array}
1810var keySystemsMap={'urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b':'org.w3.clearkey','urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed':'com.widevine.alpha','urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95':'com.microsoft.playready','urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb':'com.adobe.primetime'};var buildBaseUrls=function buildBaseUrls(referenceUrls,baseUrlElements){if(!baseUrlElements.length){return referenceUrls}
1811return flatten(referenceUrls.map(function(reference){return baseUrlElements.map(function(baseUrlElement){return resolveUrl(reference,getContent(baseUrlElement))})}))};var getSegmentInformation=function getSegmentInformation(adaptationSet){var segmentTemplate=findChildren(adaptationSet,'SegmentTemplate')[0];var segmentList=findChildren(adaptationSet,'SegmentList')[0];
1811var segmentUrls=segmentList&&findChildren(segmentList,'SegmentURL').map(function(s){return merge({tag:'SegmentURL'},parseAttributes$1(s))});var segmentBase=findChildren(adaptationSet,'SegmentBase')[0];var segmentTimelineParentNode=segmentList||segmentTemplate;var segmentTimeline=segmentTimelineParentNode&&findChildren(segmentTimelineParentNode,'SegmentTimeline')[0];var segmentInitializationParentNode=segmentList||segmentBase||segmentTemplate;var segmentInitialization=segmentInitializationParentNode&&findChildren(segmentInitializationParentNode,'Initialization')[0];var template=segmentTemplate&&parseAttributes$1(segmentTemplate);if(template&&segmentInitialization){template.initialization=segmentInitialization&&parseAttributes$1(segmentInitialization)}else if(template&&template.initialization){template.initialization={sourceURL:template.initialization}}
1812var segmentInfo={template:template,timeline:segmentTimeline&&findChildren(segmentTimeline,'S').map(function(s){return parseAttributes$1(s)}),list:segmentList&&merge(parseAttributes$1(segmentList),{segmentUrls:segmentUrls,initialization:parseAttributes$1(segmentInitialization)}),base:segmentBase&&merge(parseAttributes$1(segmentBase),{initialization:parseAttributes$1(segmentInitialization)})};Object.keys(segmentInfo).forEach(function(key){if(!segmentInfo[key]){delete segmentInfo[key]}});return segmentInfo};var inheritBaseUrls=function inheritBaseUrls(adaptationSetAttributes,adaptationSetBaseUrls,adaptationSetSegmentInfo){return function(representation){var repBaseUrlElements=findChildren(representation,'BaseURL');var repBaseUrls=buildBaseUrls(adaptationSetBaseUrls,repBaseUrlElements);var attributes=merge(adaptationSetAttributes,parseAttributes$1(representation));var representationSegmentInfo=getSegmentInformation(representation);return repBaseUrls.map(function(baseUrl){return{segmentInfo:merge(adaptationSetSegmentInfo,representationSegmentInfo),attributes:merge(attributes,{baseUrl:baseUrl})}})}};var generateKeySystemInformation=function generateKeySystemInformation(contentProtectionNodes){return contentProtectionNodes.reduce(function(acc,node){var attributes=parseAttributes$1(node);var keySystem=keySystemsMap[attributes.schemeIdUri];if(keySystem){acc[keySystem]={attributes:attributes};var psshNode=findChildren(node,'cenc:pssh')[0];if(psshNode){var pssh=getContent(psshNode);var psshBuffer=pssh&&decodeB64ToUint8Array$1(pssh);acc[keySystem].pssh=psshBuffer}}
1813return acc},{})};var toRepresentations=function toRepresentations(periodAttributes,periodBaseUrls,periodSegmentInfo){return function(adaptationSet){var adaptationSetAttributes=parseAttributes$1(adaptationSet);var adaptationSetBaseUrls=buildBaseUrls(periodBaseUrls,findChildren(adaptationSet,'BaseURL'));var role=findChildren(adaptationSet,'Role')[0];var roleAttributes={role:parseAttributes$1(role)};var attrs=merge(periodAttributes,adaptationSetAttributes,roleAttributes);var contentProtection=generateKeySystemInformation(findChildren(adaptationSet,'ContentProtection'));if(Object.keys(contentProtection).length){attrs=merge(attrs,{contentProtection:contentProtection})}
1814var segmentInfo=getSegmentInformation(adaptationSet);var representations=findChildren(adaptationSet,'Representation');var adaptationSetSegmentInfo=merge(periodSegmentInfo,segmentInfo);return flatten(representations.map(inheritBaseUrls(attrs,adaptationSetBaseUrls,adaptationSetSegmentInfo)))}};var toAdaptationSets=function toAdaptationSets(mpdAttributes,mpdBaseUrls){return function(period,index){var periodBaseUrls=buildBaseUrls(mpdBaseUrls,findChildren(period,'BaseURL'));var periodAtt=parseAttributes$1(period);var parsedPeriodId=parseInt(periodAtt.id,10);var periodIndex=window$1.isNaN(parsedPeriodId)?index:parsedPeriodId;var periodAttributes=merge(mpdAttributes,{periodIndex:periodIndex});var adaptationSets=findChildren(period,'AdaptationSet');var periodSegmentInfo=getSegmentInformation(period);return flatten(adaptationSets.map(toRepresentations(periodAttributes,periodBaseUrls,periodSegmentInfo)))}};var inheritAttributes=function inheritAttributes(mpd,options){if(options===void 0){options={}}
1815var _options=options,_options$manifestUri=_options.manifestUri,manifestUri=_options$manifestUri===void 0?'':_options$manifestUri,_options$NOW=_options.NOW,NOW=_options$NOW===void 0?Date.now():_o
1815ptions$NOW,_options$clientOffset=_options.clientOffset,clientOffset=_options$clientOffset===void 0?0:_options$clientOffset;var periods=findChildren(mpd,'Period');if(!periods.length){throw new Error(errors.INVALID_NUMBER_OF_PERIOD)}
1816var mpdAttributes=parseAttributes$1(mpd);var mpdBaseUrls=buildBaseUrls([manifestUri],findChildren(mpd,'BaseURL'));mpdAttributes.sourceDuration=mpdAttributes.mediaPresentationDuration||0;mpdAttributes.NOW=NOW;mpdAttributes.clientOffset=clientOffset;return flatten(periods.map(toAdaptationSets(mpdAttributes,mpdBaseUrls)))};var stringToMpdXml=function stringToMpdXml(manifestString){if(manifestString===''){throw new Error(errors.DASH_EMPTY_MANIFEST)}
1817var parser=new window$1.DOMParser();var xml=parser.parseFromString(manifestString,'application/xml');var mpd=xml&&xml.documentElement.tagName==='MPD'?xml.documentElement:null;if(!mpd||mpd&&mpd.getElementsByTagName('parsererror').length>0){throw new Error(errors.DASH_INVALID_XML)}
1818return mpd};var parseUTCTimingScheme=function parseUTCTimingScheme(mpd){var UTCTimingNode=findChildren(mpd,'UTCTiming')[0];if(!UTCTimingNode){return null}
1819var attributes=parseAttributes$1(UTCTimingNode);switch(attributes.schemeIdUri){case 'urn:mpeg:dash:utc:http-head:2014':case 'urn:mpeg:dash:utc:http-head:2012':attributes.method='HEAD';break;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':attributes.method='GET';break;case 'urn:mpeg:dash:utc:direct:2014':case 'urn:mpeg:dash:utc:direct:2012':attributes.method='DIRECT';attributes.value=Date.parse(attributes.value);break;case 'urn:mpeg:dash:utc:http-ntp:2014':case 'urn:mpeg:dash:utc:ntp:2014':case 'urn:mpeg:dash:utc:sntp:2014':default:throw new Error(errors.UNSUPPORTED_UTC_TIMING_SCHEME)}
1820return attributes};var parse=function parse(manifestString,options){if(options===void 0){options={}}
1821return toM3u8(toPlaylists(inheritAttributes(stringToMpdXml(manifestString),options)),options.sidxMapping)};var parseUTCTiming=function parseUTCTiming(manifestString){return parseUTCTimingScheme(stringToMpdXml(manifestString))};var toUnsigned=function toUnsigned(value){return value>>>0};var toHexString=function toHexString(value){return('00'+value.toString(16)).slice(-2)};var bin={toUnsigned:toUnsigned,toHexString:toHexString};var inspectMp4,_textifyMp,toUnsigned$1=bin.toUnsigned,parseMp4Date=function parseMp4Date(seconds){return new Date(seconds*1000-2082844800000)},parseSampleFlags=function parseSampleFlags(flags){return{isLeading:(flags[0]&0x0c)>>>2,dependsOn:flags[0]&0x03,isDependedOn:(flags[1]&0xc0)>>>6,hasRedundancy:(flags[1]&0x30)>>>4,paddingValue:(flags[1]&0x0e)>>>1,isNonSyncSample:flags[1]&0x01,degradationPriority:flags[2]<<8|flags[3]}},parseType=function parseType(buffer){var result='';result+=String.fromCharCode(buffer[0]);result+=String.fromCharCode(buffer[1]);result+=String.fromCharCode(buffer[2]);result+=String.fromCharCode(buffer[3]);return result},findBox=function findBox(data,path){var results=[],i,size,type,end,subresults;if(!path.length){return null}
1822for(i=0;i<data.byteLength;){size=toUnsigned$1(data[i]<<24|data[i+1]<<16|data[i+2]<<8|data[i+3]);type=parseType(data.subarray(i+4,i+8));end=size>1?i+size:data.byteLength;if(type===path[0]){if(path.length===1){results.push(data.subarray(i+8,end))}else{subresults=findBox(data.subarray(i+8,end),path.slice(1));if(subresults.length){results=results.concat(subresults)}}}
1823i=end}
1824return results},nalParse=function nalParse(avcStream){var avcView=new DataView(avcStream.buffer,avcStream.byteOffset,avcStream.byteLength),result=[],i,length;for(i=0;i+4<avcStream.length;i+=length){length=avcView.getUint32(i);i+=4;if(length<=0){result.push('<span style=\'color:red;\'>MALFORMED DATA</span>');continue}
1825switch(avcStream[i]&0x1F){case 0x01:result.push('slice_layer_without_partitioning_rbsp');break;case 0x05:result.push('slice_layer_without_partitioning_rbsp_idr');break;case 0x06:result.push('sei_rbsp');break;case 0x07:result.push('seq_parameter_set_rbsp');break;case 0x08:result.push('pic_parameter_set_rbsp');break;case 0x09:result.push('access_unit_delimiter_rbsp');break;default:result.push('UNKNOWN NAL - '+avcStream[i]&0x1F);break}}
1826return result},parse$1={avc1:function avc1(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength);return{dataReferenceIndex:view.getUint16(6),width:view.getUint16(24),height:view.getUint16(26),horizresolution:view.getUint16(28)+view.getUint16(30)/16,vertresolution:view.getUint16(32)+view.getUint16(34)/16,frameCount:view.getUint16(40),depth:view.getUint16(74),config:inspectMp4(data.subarray(78,data.byteLength))}},avcC:function avcC(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength),result={configurationVersion:data[0],avcProfileIndication:data[1],profileCompatibility:data[2],avcLevelIndication:data[3],lengthSizeMinusOne:data[4]&0x03,sps:[],pps:[]},numOfSequenceParameterSets=data[5]&0x1f,numOfPictureParameterSets,nalSize,offset,i;offset=6;for(i=0;i<numOfSequenceParameterSets;i++){nalSize=view.getUint16(offset);offset+=2;result.sps.push(new Uint8Array(data.subarray(offset,offset+nalSize)));
1826offset+=nalSize}
1827numOfPictureParameterSets=data[offset];offset++;for(i=0;i<numOfPictureParameterSets;i++){nalSize=view.getUint16(offset);offset+=2;result.pps.push(new Uint8Array(data.subarray(offset,offset+nalSize)));offset+=nalSize}
1828return result},btrt:function btrt(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength);return{bufferSizeDB:view.getUint32(0),maxBitrate:view.getUint32(4),avgBitrate:view.getUint32(8)}},esds:function esds(data){return{version:data[0],flags:new Uint8Array(data.subarray(1,4)),esId:data[6]<<8|data[7],streamPriority:data[8]&0x1f,decoderConfig:{objectProfileIndication:data[11],streamType:data[12]>>>2&0x3f,bufferSize:data[13]<<16|data[14]<<8|data[15],maxBitrate:data[16]<<24|data[17]<<16|data[18]<<8|data[19],avgBitrate:data[20]<<24|data[21]<<16|data[22]<<8|data[23],decoderConfigDescriptor:{tag:data[24],length:data[25],audioObjectType:data[26]>>>3&0x1f,samplingFrequencyIndex:(data[26]&0x07)<<1|data[27]>>>7&0x01,channelConfiguration:data[27]>>>3&0x0f}}}},ftyp:function ftyp(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength),result={majorBrand:parseType(data.subarray(0,4)),minorVersion:view.getUint32(4),compatibleBrands:[]},i=8;while(i<data.byteLength){result.compatibleBrands.push(parseType(data.subarray(i,i+4)));i+=4}
1829return result},dinf:function dinf(data){return{boxes:inspectMp4(data)}},dref:function dref(data){return{version:data[0],flags:new Uint8Array(data.subarray(1,4)),dataReferences:inspectMp4(data.subarray(8))}},hdlr:function hdlr(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength),result={version:view.getUint8(0),flags:new Uint8Array(data.subarray(1,4)),handlerType:parseType(data.subarray(8,12)),name:''},i=8;for(i=24;i<data.byteLength;i++){if(data[i]===0x00){i++;break}
1830result.name+=String.fromCharCode(data[i])}
1831result.name=decodeURIComponent(escape(result.name));return result},mdat:function mdat(data){return{byteLength:data.byteLength,nals:nalParse(data)}},mdhd:function mdhd(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength),i=4,language,result={version:view.getUint8(0),flags:new Uint8Array(data.subarray(1,4)),language:''};if(result.version===1){i+=4;result.creationTime=parseMp4Date(view.getUint32(i));i+=8;result.modificationTime=parseMp4Date(view.getUint32(i));i+=4;result.timescale=view.getUint32(i);i+=8;result.duration=view.getUint32(i)}else{result.creationTime=parseMp4Date(view.getUint32(i));i+=4;result.modificationTime=parseMp4Date(view.getUint32(i));i+=4;result.timescale=view.getUint32(i);i+=4;result.duration=view.getUint32(i)}
1832i+=4;language=view.getUint16(i);result.language+=String.fromCharCode((language>>10)+0x60);result.language+=String.fromCharCode(((language&0x03e0)>>5)+0x60);result.language+=String.fromCharCode((language&0x1f)+0x60);return result},mdia:function mdia(data){return{boxes:inspectMp4(data)}},mfhd:function mfhd(data){return{version:data[0],flags:new Uint8Array(data.subarray(1,4)),sequenceNumber:data[4]<<24|data[5]<<16|data[6]<<8|data[7]}},minf:function minf(data){return{boxes:inspectMp4(data)}},mp4a:function mp4a(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength),result={dataReferenceIndex:view.getUint16(6),channelcount:view.getUint16(16),samplesize:view.getUint16(18),samplerate:view.getUint16(24)+view.getUint16(26)/65536};if(data.byteLength>28){result.streamDescriptor=inspectMp4(data.subarray(28))[0]}
1833return result},moof:function moof(data){return{boxes:inspectMp4(data)}},moov:function moov(data){return{boxes:inspectMp4(data)}},mvex:function mvex(data){return{boxes:inspectMp4(data)}},mvhd:function mvhd(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength),i=4,result={version:view.getUint8(0),flags:new Uint8Array(data.subarray(1,4))};if(result.version===1){i+=4;result.creationTime=parseMp4Date(view.getUint32(i));i+=8;result.modificationTime=parseMp4Date(view.getUint32(i));i+=4;result.timescale=view.getUint32(i);i+=8;result.duration=view.getUint32(i)}else{result.creationTime=parseMp4Date(view.getUint32(i));i+=4;result.modificationTime=parseMp4Date(view.getUint32(i));i+=4;result.timescale=view.getUint32(i);i+=4;result.duration=view.getUint32(i)}
1834i+=4;result.rate=view.getUint16(i)+view.getUint16(i+2)/16;i+=4;result.volume=view.getUint8(i)+view.getUint8(i+1)/8;i+=2;i+=2;i+=2*4;result.matrix=new Uint32Array(data.subarray(i,i+9*4));i+=9*4;i+=6*4;result.nextTrackId=view.getUint32(i);return result},pdin:function pdin(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength);return{version:view.getUint8(0),flags:new Uint8Array(data.subarray(1,4)),rate:view.getUint32(4),initialDelay:view.getUint32(8)}},sdtp:function sdtp(data){var result={version:data[0],flags:new Uint8Array(data.subarray(1,4)),samples:[]},i;for(i=4;i<data.byteLength;i++){result.samples.push({dependsOn:(data[i]&0x30)>>4,isDependedOn:(data[i]&0x0c)>>2,hasRedundancy:data[i]&0x03})}
1835return result},sidx:function sidx(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength),result={version:data[0],flags:new Uint8Array(data.subarray(1,4)),references:[],referenceId:view.getUint32(4),timescale:view.getUint32(8),earliestPresentationTime:view.getUint32(12),firstOffset:view.getUint32(16)},referenceCount=view.getUint16(22),i;for(i=24;referenceCount;i+=12,referenceCount--){result.references.push({referenceType:(data[i]&0x80)>>>7,referencedSize:view.getUint32(i)&0x7FFFFFFF,subsegmentDuration:view.getUint32(i+4),startsWithSap:!!(data[i+8]&0x80),sapType:(data[i+8]&0x70)>>>4,sapDeltaTime:view.getUint32(i+8)&0x0FFFFFFF})}
1836return result},smhd:function smhd(data){return{version:data[0],flags:new Uint8Array(data.subarray(1,4)),balance:data[4]+data[5]/256}},stbl:function stbl(data){return{boxes:inspectMp4(data)}},stco:function stco(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength),result={version:data[0],flags:new Uint8Array(data.subarray(1,4)),chunkOffsets:[]},entryCount=view.getUint32(4),i;for(i=8;entryCount;i+=4,entryCount--){result.chunkOffsets.push(view.getUint32(i))}
1837return result},stsc:function stsc(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength),entryCount=view.getUint32(4),result={version:data[0],flags:new Uint8Array(data.subarray(1,4)),sampleToChunks:[]},i;for(i=8;entryCount;
1837i+=12,entryCount--){result.sampleToChunks.push({firstChunk:view.getUint32(i),samplesPerChunk:view.getUint32(i+4),sampleDescriptionIndex:view.getUint32(i+8)})}
1838return result},stsd:function stsd(data){return{version:data[0],flags:new Uint8Array(data.subarray(1,4)),sampleDescriptions:inspectMp4(data.subarray(8))}},stsz:function stsz(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength),result={version:data[0],flags:new Uint8Array(data.subarray(1,4)),sampleSize:view.getUint32(4),entries:[]},i;for(i=12;i<data.byteLength;i+=4){result.entries.push(view.getUint32(i))}
1839return result},stts:function stts(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength),result={version:data[0],flags:new Uint8Array(data.subarray(1,4)),timeToSamples:[]},entryCount=view.getUint32(4),i;for(i=8;entryCount;i+=8,entryCount--){result.timeToSamples.push({sampleCount:view.getUint32(i),sampleDelta:view.getUint32(i+4)})}
1840return result},styp:function styp(data){return parse$1.ftyp(data)},tfdt:function tfdt(data){var result={version:data[0],flags:new Uint8Array(data.subarray(1,4)),baseMediaDecodeTime:toUnsigned$1(data[4]<<24|data[5]<<16|data[6]<<8|data[7])};if(result.version===1){result.baseMediaDecodeTime*=Math.pow(2,32);result.baseMediaDecodeTime+=toUnsigned$1(data[8]<<24|data[9]<<16|data[10]<<8|data[11])}
1841return result},tfhd:function tfhd(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength),result={version:data[0],flags:new Uint8Array(data.subarray(1,4)),trackId:view.getUint32(4)},baseDataOffsetPresent=result.flags[2]&0x01,sampleDescriptionIndexPresent=result.flags[2]&0x02,defaultSampleDurationPresent=result.flags[2]&0x08,defaultSampleSizePresent=result.flags[2]&0x10,defaultSampleFlagsPresent=result.flags[2]&0x20,durationIsEmpty=result.flags[0]&0x010000,defaultBaseIsMoof=result.flags[0]&0x020000,i;i=8;if(baseDataOffsetPresent){i+=4;result.baseDataOffset=view.getUint32(12);i+=4}
1842if(sampleDescriptionIndexPresent){result.sampleDescriptionIndex=view.getUint32(i);i+=4}
1843if(defaultSampleDurationPresent){result.defaultSampleDuration=view.getUint32(i);i+=4}
1844if(defaultSampleSizePresent){result.defaultSampleSize=view.getUint32(i);i+=4}
1845if(defaultSampleFlagsPresent){result.defaultSampleFlags=view.getUint32(i)}
1846if(durationIsEmpty){result.durationIsEmpty=!0}
1847if(!baseDataOffsetPresent&&defaultBaseIsMoof){result.baseDataOffsetIsMoof=!0}
1848return result},tkhd:function tkhd(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength),i=4,result={version:view.getUint8(0),flags:new Uint8Array(data.subarray(1,4))};if(result.version===1){i+=4;result.creationTime=parseMp4Date(view.getUint32(i));i+=8;result.modificationTime=parseMp4Date(view.getUint32(i));i+=4;result.trackId=view.getUint32(i);i+=4;i+=8;result.duration=view.getUint32(i)}else{result.creationTime=parseMp4Date(view.getUint32(i));i+=4;result.modificationTime=parseMp4Date(view.getUint32(i));i+=4;result.trackId=view.getUint32(i);i+=4;i+=4;result.duration=view.getUint32(i)}
1849i+=4;i+=2*4;result.layer=view.getUint16(i);i+=2;result.alternateGroup=view.getUint16(i);i+=2;result.volume=view.getUint8(i)+view.getUint8(i+1)/8;i+=2;i+=2;result.matrix=new Uint32Array(data.subarray(i,i+9*4));i+=9*4;result.width=view.getUint16(i)+view.getUint16(i+2)/16;i+=4;result.height=view.getUint16(i)+view.getUint16(i+2)/16;return result},traf:function traf(data){return{boxes:inspectMp4(data)}},trak:function trak(data){return{boxes:inspectMp4(data)}},trex:function trex(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength);return{version:data[0],flags:new Uint8Array(data.subarray(1,4)),trackId:view.getUint32(4),defaultSampleDescriptionIndex:view.getUint32(8),defaultSampleDuration:view.getUint32(12),defaultSampleSize:view.getUint32(16),sampleDependsOn:data[20]&0x03,sampleIsDependedOn:(data[21]&0xc0)>>6,sampleHasRedundancy:(data[21]&0x30)>>4,samplePaddingValue:(data[21]&0x0e)>>1,sampleIsDifferenceSample:!!(data[21]&0x01),sampleDegradationPriority:view.getUint16(22)}},trun:function trun(data){var result={version:data[0],flags:new Uint8Array(data.subarray(1,4)),samples:[]},view=new DataView(data.buffer,data.byteOffset,data.byteLength),dataOffsetPresent=result.flags[2]&0x01,firstSampleFlagsPresent=result.flags[2]&0x04,sampleDurationPresent=result.flags[1]&0x01,sampleSizePresent=result.flags[1]&0x02,sampleFlagsPresent=result.flags[1]&0x04,sampleC
1849ompositionTimeOffsetPresent=result.flags[1]&0x08,sampleCount=view.getUint32(4),offset=8,sample;if(dataOffsetPresent){result.dataOffset=view.getInt32(offset);offset+=4}
1850if(firstSampleFlagsPresent&&sampleCount){sample={flags:parseSampleFlags(data.subarray(offset,offset+4))};offset+=4;if(sampleDurationPresent){sample.duration=view.getUint32(offset);offset+=4}
1851if(sampleSizePresent){sample.size=view.getUint32(offset);offset+=4}
1852if(sampleCompositionTimeOffsetPresent){sample.compositionTimeOffset=view.getUint32(offset);offset+=4}
1853result.samples.push(sample);sampleCount--}
1854while(sampleCount--){sample={};if(sampleDurationPresent){sample.duration=view.getUint32(offset);offset+=4}
1855if(sampleSizePresent){sample.size=view.getUint32(offset);offset+=4}
1856if(sampleFlagsPresent){sample.flags=parseSampleFlags(data.subarray(offset,offset+4));offset+=4}
1857if(sampleCompositionTimeOffsetPresent){sample.compositionTimeOffset=view.getUint32(offset);offset+=4}
1858result.samples.push(sample)}
1859return result},'url ':function url(data){return{version:data[0],flags:new Uint8Array(data.subarray(1,4))}},vmhd:function vmhd(data){var view=new DataView(data.buffer,data.byteOffset,data.byteLength);return{version:data[0],flags:new Uint8Array(data.subarray(1,4)),graphicsmode:view.getUint16(4),opcolor:new Uint16Array([view.getUint16(6),view.getUint16(8),view.getUint16(10)])}}};inspectMp4=function inspectMp4(data){var i=0,result=[],view,size,type,end,box;var ab=new ArrayBuffer(data.length);var v=new Uint8Array(ab);for(var z=0;z<data.length;++z){v[z]=data[z]}
1860view=new DataView(ab);while(i<data.byteLength){size=view.getUint32(i);type=parseType(data.subarray(i+4,i+8));end=size>1?i+size:data.byteLength;box=(parse$1[type]||function(data){return{data:data}})(data.subarray(i+8,end));box.size=size;box.type=type;result.push(box);i=end}
1861return result};_textifyMp=function textifyMp4(inspectedMp4,depth){var indent;depth=depth||0;indent=new Array(depth*2+1).join(' ');return inspectedMp4.map(function(box,index){return indent+box.type+'\n'+Object.keys(box).filter(function(key){return key!=='type'&&key!=='boxes'}).map(function(key){var prefix=indent+'  '+key+': ',value=box[key];if(value instanceof Uint8Array||value instanceof Uint32Array){var bytes=Array.prototype.slice.call(new Uint8Array(value.buffer,value.byteOffset,value.byteLength)).map(function(_byte){return' '+('00'+_byte.toString(16)).slice(-2)}).join('').match(/.{1,24}/g);if(!bytes){return prefix+'<>'}
1862if(bytes.length===1){return prefix+'<'+bytes.join('').slice(1)+'>'}
1863return prefix+'<\n'+bytes.map(function(line){return indent+'  '+line}).join('\n')+'\n'+indent+'  >'}
1864return prefix+JSON.stringify(value,null,2).split('\n').map(function(line,index){if(index===0){return line}
1865return indent+'  '+line}).join('\n')}).join('\n')+(box.boxes?'\n'+_textifyMp(box.boxes,depth+1):'')}).join('\n')};var mp4Inspector={inspect:inspectMp4,textify:_textifyMp,parseType:parseType,f
1865indBox:findBox,parseTraf:parse$1.traf,parseTfdt:parse$1.tfdt,parseHdlr:parse$1.hdlr,parseTfhd:parse$1.tfhd,parseTrun:parse$1.trun,parseSidx:parse$1.sidx};var toUnsigned$2=bin.toUnsigned;var toHexString$1=bin.toHexString;var timescale,startTime,compositionStartTime,getVideoTrackIds,getTracks;timescale=function timescale(init){var result={},traks=mp4Inspector.findBox(init,['moov','trak']);return traks.reduce(function(result,trak){var tkhd,version,index,id,mdhd;tkhd=mp4Inspector.findBox(trak,['tkhd'])[0];if(!tkhd){return null}
1866version=tkhd[0];index=version===0?12:20;id=toUnsigned$2(tkhd[index]<<24|tkhd[index+1]<<16|tkhd[index+2]<<8|tkhd[index+3]);mdhd=mp4Inspector.findBox(trak,['mdia','mdhd'])[0];if(!mdhd){return null}
1867version=mdhd[0];index=version===0?12:20;result[id]=toUnsigned$2(mdhd[index]<<24|mdhd[index+1]<<16|mdhd[index+2]<<8|mdhd[index+3]);return result},result)};startTime=function startTime(timescale,fragment){var trafs,baseTimes,result;trafs=mp4Inspector.findBox(fragment,['moof','traf']);baseTimes=[].concat.apply([],trafs.map(function(traf){return mp4Inspector.findBox(traf,['tfhd']).map(function(tfhd){var id,scale,baseTime;id=toUnsigned$2(tfhd[4]<<24|tfhd[5]<<16|tfhd[6]<<8|tfhd[7]);scale=timescale[id]||90e3;baseTime=mp4Inspector.findBox(traf,['tfdt']).map(function(tfdt){var version,result;version=tfdt[0];result=toUnsigned$2(tfdt[4]<<24|tfdt[5]<<16|tfdt[6]<<8|tfdt[7]);if(version===1){result*=Math.pow(2,32);result+=toUnsigned$2(tfdt[8]<<24|tfdt[9]<<16|tfdt[10]<<8|tfdt[11])}
1868return result})[0];baseTime=baseTime||Infinity;return baseTime/scale})}));result=Math.min.apply(null,baseTimes);return isFinite(result)?result:0};compositionStartTime=function compositionStartTime(timescales,fragment){var trafBoxes=mp4Inspector.findBox(fragment,['moof','traf']);var baseMediaDecodeTime=0;var compositionTimeOffset=0;var trackId;if(trafBoxes&&trafBoxes.length){var parsedTraf=mp4Inspector.parseTraf(trafBoxes[0]);for(var i=0;i<parsedTraf.boxes.length;i++){if(parsedTraf.boxes[i].type==='tfhd'){trackId=parsedTraf.boxes[i].trackId}else if(parsedTraf.boxes[i].type==='tfdt'){baseMediaDecodeTime=parsedTraf.boxes[i].baseMediaDecodeTime}else if(parsedTraf.boxes[i].type==='trun'&&parsedTraf.boxes[i].samples.length){compositionTimeOffset=parsedTraf.boxes[i].samples[0].compositionTimeOffset||0}}}
1869var timescale=timescales[trackId]||90e3;return(baseMediaDecodeTime+compositionTimeOffset)/timescale};getVideoTrackIds=function getVideoTrackIds(init){var traks=mp4Inspector.findBox(init,['moov','trak']);var videoTrackIds=[];traks.forEach(function(trak){var hdlrs=mp4Inspector.findBox(trak,['mdia','hdlr']);var tkhds=mp4Inspector.findBox(trak,['tkhd']);hdlrs.forEach(function(hdlr,index){var handlerType=mp4Inspector.parseType(hdlr.subarray(8,12));var tkhd=tkhds[index];var view;var version;var trackId;if(handlerType==='vide'){view=new DataView(tkhd.buffer,tkhd.byteOffset,tkhd.byteLength);version=view.getUint8(0);trackId=version===0?view.getUint32(12):view.getUint32(20);videoTrackIds.push(trackId)}})});return videoTrackIds};getTracks=function getTracks(init){var traks=mp4Inspector.findBox(init,['moov','trak']);var tracks=[];traks.forEach(function(trak){var track={};var tkhd=mp4Inspector.findBox(trak,['tkhd'])[0];var view,version;if(tkhd){view=new DataView(tkhd.buffer,tkhd.byteOffset,tkhd.byteLength);version=view.getUint8(0);track.id=version===0?view.getUint32(12):view.getUint32(20)}
1870var hdlr=mp4Inspector.findBox(trak,['mdia','hdlr'])[0];if(hdlr){var type=mp4Inspector.parseType(hdlr.subarray(8,12));if(type==='vide'){track.type='video'}else if(type==='soun'){track.type='audio'}else{track.type=type}}
1871var stsd=mp4Inspector.findBox(trak,['mdia','minf','stbl','stsd'])[0];if(stsd){var sampleDescriptions=stsd.subarray(8);track.codec=mp4Inspector.parseType(sampleDescriptions.subarray(4,8));var codecBox=mp4Inspector.findBox(sampleDescriptions,[track.codec])[0];var codecConfig,codecConfigType;if(codecBox){if(/^[a-z]vc[1-9]$/i.test(track.codec)){codecConfig=codecBox.subarray(78);codecConfigType=mp4Inspector.parseType(codecConfig.subarray(4,8));if(codecConfigType==='avcC'&&codecConfig.length>11){track.codec+='.';track.codec+=toHexString$1(codecConfig[9]);track.codec+=toHexString$1(codecConfig[10]);track.codec+=toHexString$1(codecConfig[11])}else{track.codec='avc1.4d400d'}}else if(/^mp4[a,v]$/i.test(track.codec)){codecConfig=codecBox.subarray(28);codecConfigType=mp4Inspector.parseType(codecConfig.subarray(4,8));if(codecConfigType==='esds'&&codecConfig.length>20&&codecConfig[19]!==0){track.codec+='.'+toHexString$1(codecConfig[19]);track.codec+='.'+toHexString$1(codecConfig[20]>>>2&0x3f).replace(/^0/,'')}else{track.codec='mp4a.40.2'}}}}
1872var mdhd=mp4Inspector.findBox(trak,['mdia','mdhd'])[0];if(mdhd&&tkhd){var index=version===0?12:20;track.timescale=toUnsigned$2(mdhd[index]<<24|mdhd[index+1]<<16|mdhd[index+2]<<8|mdhd[index+3])}
1873tracks.push(track)});return tracks};var probe={findBox:mp4Inspector.findBox,parseType:mp4Inspector.parseType,timescale:timescale,startTime:startTime,compositionStartTime:compositionStartTime,videoTrackIds:getVideoTrackIds,tracks:getTracks};var USER_DATA_REGISTERED_ITU_T_T35=4,RBSP_TRAILING_BITS=128;var parseSei=function parseSei(bytes){var i=0,result={payloadType:-1,payloadSize:0},payloadType=0,payloadSize=0;while(i<bytes.byteLength){if(bytes[i]===RBSP_TRAILING_BITS){break}
1874while(bytes[i]===0xFF){payloadType+=255;i++}
1875payloadType+=bytes[i++];
1875while(bytes[i]===0xFF){payloadSize+=255;i++}
1876payloadSize+=bytes[i++];if(!result.payload&&payloadType===USER_DATA_REGISTERED_ITU_T_T35){result.payloadType=payloadType;result.payloadSize=payloadSize;result.payload=bytes.subarray(i,i+payloadSize);break}
1877i+=payloadSize;payloadType=0;payloadSize=0}
1878return result};var parseUserData=function parseUserData(sei){if(sei.payload[0]!==181){return null}
1879if((sei.payload[1]<<8|sei.payload[2])!==49){return null}
1880if(String.fromCharCode(sei.payload[3],sei.payload[4],sei.payload[5],sei.payload[6])!=='GA94'){return null}
1881if(sei.payload[7]!==0x03){return null}
1882return sei.payload.subarray(8,sei.payload.length-1)};var parseCaptionPackets=function parseCaptionPackets(pts,userData){var results=[],i,count,offset,data;if(!(userData[0]&0x40)){return results}
1883count=userData[0]&0x1f;for(i=0;i<count;i++){offset=i*3;data={type:userData[offset+2]&0x03,pts:pts};if(userData[offset+2]&0x04){data.ccData=userData[offset+3]<<8|userData[offset+4];results.push(data)}}
1884return results};var discardEmulationPreventionBytes=function discardEmulationPreventionBytes(data){var length=data.byteLength,emulationPreventionBytesPositions=[],i=1,newLength,newData;while(i<length-2){if(data[i]===0&&data[i+1]===0&&data[i+2]===0x03){emulationPreventionBytesPositions.push(i+2);i+=2}else{i++}}
1885if(emulationPreventionBytesPositions.length===0){return data}
1886newLength=length-emulationPreventionBytesPositions.length;newData=new Uint8Array(newLength);var sourceIndex=0;for(i=0;i<newLength;sourceIndex++,i++){if(sourceIndex===emulationPreventionBytesPositions[0]){sourceIndex++;emulationPreventionBytesPositions.shift()}
1887newData[i]=data[sourceIndex]}
1888return newData};var captionPacketParser={parseSei:parseSei,parseUserData:parseUserData,parseCaptionPackets:parseCaptionPackets,discardEmulationPreventionBytes:discardEmulationPreventionBytes,USER_DATA_REGISTERED_ITU_T_T35:USER_DATA_REGISTERED_ITU_T_T35};var Stream$1=function Stream(){this.init=function(){var listeners={};this.on=function(type,listener){if(!listeners[type]){listeners[type]=[]}
1889listeners[type]=listeners[type].concat(listener)};this.off=function(type,listener){var index;if(!listeners[type]){return!1}
1890index=listeners[type].indexOf(listener);listeners[type]=listeners[type].slice();listeners[type].splice(index,1);return index>-1};this.trigger=function(type){var callbacks,i,length,args;callbacks=listeners[type];if(!callbacks){return}
1891if(arguments.length===2){length=callbacks.length;for(i=0;i<length;++i){callbacks[i].call(this,arguments[1])}}else{args=[];i=arguments.length;for(i=1;i<arguments.length;++i){args.push(arguments[i])}
1892length=callbacks.length;for(i=0;i<length;++i){callbacks[i].apply(this,args)}}};this.dispose=function(){listeners={}}}};Stream$1.prototype.pipe=function(destination){this.on('data',function(data){destination.push(data)});this.on('done',function(flushSource){destination.flush(flushSource)});this.on('partialdone',function(flushSource){destination.partialFlush(flushSource)});this.on('endedtimeline',function(flushSource){destination.endTimeline(flushSource)});this.on('reset',function(flushSource){destination.reset(flushSource)});return destination};Stream$1.prototype.push=function(data){this.trigger('data',data)};Stream$1.prototype.flush=function(flushSource){this.trigger('done',flushSource)};Stream$1.prototype.partialFlush=function(flushSource){this.trigger('partialdone',flushSource)};Stream$1.prototype.endTimeline=function(flushSource){this.trigger('endedtimeline',flushSource)};Stream$1.prototype.reset=function(flushSource){this.trigger('reset',flushSource)};var stream=Stream$1;var CaptionStream=function CaptionStream(){CaptionStream.prototype.init.call(this);this.captionPackets_=[];this.ccStreams_=[new Cea608Stream(0,0),new Cea608Stream(0,1),new Cea608Stream(1,0),new Cea608Stream(1,1)];this.reset();this.ccStreams_.forEach(function(cc){cc.on('data',this.trigger.bind(this,'data'));cc.on('partialdone',this.trigger.bind(this,'partialdone'));cc.on('done',this.trigger.bind(this,'done'))},this)};CaptionStream.prototype=new stream();CaptionStream.prototype.push=function(event){var sei,userData,newCaptionPackets;if(event.nalUnitType!=='sei_rbsp'){return}
1893sei=captionPacketParser.parseSei(event.escapedRBSP);if(sei.payloadType!==captionPacketParser.USER_DATA_REGISTERED_ITU_T_T35){return}
1894userData=captionPacketParser.parseUserData(sei);if(!userData){return}
1895if(event.dts<this.latestDts_){this.ignoreNextEqualDts_=!0;return}else if(event.dts===this.latestDts_&&this.ignoreNextEqualDts_){this.numSameDts_--;if(!this.numSameDts_){this.ignoreNextEqualDts_=!1}
1896return}
1897newCaptionPackets=captionPacketParser.parseCaptionPackets(event.pts,userData);this.captionPackets_=this.captionPackets_.concat(newCaptionPackets);if(this.latestDts_!==event.dts){this.numSameDts_=0}
1898this.numSameDts_++;this.latestDts_=event.dts};
1898CaptionStream.prototype.flushCCStreams=function(flushType){this.ccStreams_.forEach(function(cc){return flushType==='flush'?cc.flush():cc.partialFlush()},this)};CaptionStream.prototype.flushStream=function(flushType){if(!this.captionPackets_.length){this.flushCCStreams(flushType);return}
1899this.captionPackets_.forEach(function(elem,idx){elem.presortIndex=idx});this.captionPackets_.sort(function(a,b){if(a.pts===b.pts){return a.presortIndex-b.presortIndex}
1900return a.pts-b.pts});this.captionPackets_.forEach(function(packet){if(packet.type<2){this.dispatchCea608Packet(packet)}},this);this.captionPackets_.length=0;this.flushCCStreams(flushType)};CaptionStream.prototype.flush=function(){return this.flushStream('flush')};CaptionStream.prototype.partialFlush=function(){return this.flushStream('partialFlush')};CaptionStream.prototype.reset=function(){this.latestDts_=null;this.ignoreNextEqualDts_=!1;this.numSameDts_=0;this.activeCea608Channel_=[null,null];this.ccStreams_.forEach(function(ccStream){ccStream.reset()})};CaptionStream.prototype.dispatchCea608Packet=function(packet){if(this.setsTextOrXDSActive(packet)){this.activeCea608Channel_[packet.type]=null}else if(this.setsChannel1Active(packet)){this.activeCea608Channel_[packet.type]=0}else if(this.setsChannel2Active(packet)){this.activeCea608Channel_[packet.type]=1}
1901if(this.activeCea608Channel_[packet.type]===null){return}
1902this.ccStreams_[(packet.type<<1)+this.activeCea608Channel_[packet.type]].push(packet)};CaptionStream.prototype.setsChannel1Active=function(packet){return(packet.ccData&0x7800)===0x1000};CaptionStream.prototype.setsChannel2Active=function(packet){return(packet.ccData&0x7800)===0x1800};CaptionStream.prototype.setsTextOrXDSActive=function(packet){return(packet.ccData&0x7100)===0x0100||(packet.ccData&0x78fe)===0x102a||(packet.ccData&0x78fe)===0x182a};var CHARACTER_TRANSLATION={0x2a:0xe1,0x5c:0xe9,0x5e:0xed,0x5f:0xf3,0x60:0xfa,0x7b:0xe7,0x7c:0xf7,0x7d:0xd1,0x7e:0xf1,0x7f:0x2588,0x0130:0xae,0x0131:0xb0,0x0132:0xbd,0x0133:0xbf,0x0134:0x2122,0x0135:0xa2,0x0136:0xa3,0x0137:0x266a,0x0138:0xe0,0x0139:0xa0,0x013a:0xe8,0x013b:0xe2,0x013c:0xea,0x013d:0xee,0x013e:0xf4,0x013f:0xfb,0x0220:0xc1,0x0221:0xc9,0x0222:0xd3,0x0223:0xda,0x0224:0xdc,0x0225:0xfc,0x0226:0x2018,0x0227:0xa1,0x0228:0x2a,0x0229:0x27,0x022a:0x2014,0x022b:0xa9,0x022c:0x2120,0x022d:0x2022,0x022e:0x201c,0x022f:0x201d,0x0230:0xc0,0x0231:0xc2,0x0232:0xc7,0x0233:0xc8,0x0234:0xca,0x0235:0xcb,0x0236:0xeb,0x0237:0xce,0x0238:0xcf,0x0239:0xef,0x023a:0xd4,0x023b:0xd9,0x023c:0xf9,0x023d:0xdb,0x023e:0xab,0x023f:0xbb,0x0320:0xc3,0x0321:0xe3,0x0322:0xcd,0x0323:0xcc,0x0324:0xec,0x0325:0xd2,0x0326:0xf2,0x0327:0xd5,0x0328:0xf5,0x0329:0x7b,0x032a:0x7d,0x032b:0x5c,0x032c:0x5e,0x032d:0x5f,0x032e:0x7c,0x032f:0x7e,0x0330:0xc4,0x0331:0xe4,0x0332:0xd6,0x0333:0xf6,0x0334:0xdf,0x0335:0xa5,0x0336:0xa4,0x0337:0x2502,0x0338:0xc5,0x0339:0xe5,0x033a:0xd8,0x033b:0xf8,0x033c:0x250c,0x033d:0x2510,0x033e:0x2514,0x033f:0x2518};var getCharFromCode=function getCharFromCode(code){if(code===null){return''}
1903code=CHARACTER_TRANSLATION[code]||code;return String.fromCharCode(code)};var BOTTOM_ROW=14;var ROWS=[0x1100,0x1120,0x1200,0x1220,0x1500,0x1520,0x1600,0x1620,0x1700,0x1720,0x1000,0x1300,0x1320,0x1400,0x1420];var createDisplayBuffer=function createDisplayBuffer(){var result=[],i=BOTTOM_ROW+1;while(i--){result.push('')}
1904return result};var Cea608Stream=function Cea608Stream(field,dataChannel){Cea608Stream.prototype.init.call(this);this.field_=field||0;this.dataChannel_=dataChannel||0;this.name_='CC'+((this.field_<<1|this.dataChannel_)+1);this.setConstants();this.reset();this.push=function(packet){var data,swap,char0,char1,text;data=packet.ccData&0x7f7f;if(data===this.lastControlCode_){this.lastControlCode_=null;return}
1905if((data&0xf000)===0x1000){this.lastControlCode_=data}else if(data!==this.PADDING_){this.lastControlCode_=null}
1906char0=data>>>8;char1=data&0xff;if(data===this.PADDING_){return}else if(data===this.RESUME_CAPTION_LOADING_){this.mode_='popOn'}else if(data===this.END_OF_CAPTION_){this.mode_='popOn';this.clearFormatting(packet.pts);this.flushDisplayed(packet.pts);swap=this.displayed_;this.displayed_=this.nonDisplayed_;this.nonDisplayed_=swap;this.startPts_=packet.pts}else if(data===this.ROLL_UP_2_ROWS_){this.rollUpRows_=2;this.setRollUp(packet.pts)}else if(data===this.ROLL_UP_3_ROWS_){this.rollUpRows_=3;this.setRollUp(packet.pts)}else if(data===this.ROLL_UP_4_ROWS_){this.rollUpRows_=4;this.setRollUp(packet.pts)}else if(data===this.CARRIAGE_RETURN_){this.clearFormatting(packet.pts);this.flushDisplayed(packet.pts);this.shiftRowsUp_();this.startPts_=packet.pts}else if(data===this.BACKSPACE_){if(this.mode_==='popOn'){this.nonDisplayed_[this.row_]=this.nonDisplayed_[this.row_].slice(0,-1)}else{this.displayed_[this.row_]=this.displayed_[this.row_].slice(0,-1)}}else if(data===this.ERASE_DISPLAYED_MEMORY_){this.flushDisplayed(packet.pts);this.displayed_=createDisplayBuffer()}else if(data===this.ERASE_NON_DISPLAYED_MEMORY_){this.nonDisplayed_=createDisplayBuffer()}else if(data===this.RESUME_DIRECT_CAPTIONING_){if(this.mode_!=='paintOn'){this.flushDisplayed(packet.pts);this.displayed_=createDisplayBuffer()}
1907this.mode_='paintOn';this.startPts_=packet.pts}else if(this.isSpecialCharacter(char0,char1)){char0=(char0&0x03)<<8;text=getCharFromCode(char0|char1);this[this.mode_](packet.pts,text);this.column_++}else if(this.isExtCharacter(char0,char1)){if(this.mode_==='popOn'){this.nonDisplayed_[this.row_]=this.nonDisplayed_[this.row_].slice(0,-1)}else{this.displayed_[this.row_]=this.displayed_[this.row_].slice(0,-1)}
1908char0=(char0&0x03)<<8;text=getCharFromCode(char0|char1);this[this.mode_](packet.pts,text);this.column_++}else if(this.isMidRowCode(char0,char1)){this.clearFormatting(packet.pts);this[this.mode_](packet.pts,' ');this.column_++;if((char1&0xe)===0xe){this.addFormatting(packet.pts,['i'])}
1909if((char1&0x1)===0x1){this.addFormatting(packet.pts,['u'])}}else if(this.isOffsetControlCode(char0,char1)){this.column_+=char1&0x03}else if(this.isPAC(char0,char1)){var row=ROWS.indexOf(data&0x1f20);if(this.mode_==='rollUp'){if(row-this.rollUpRows_+1<0){row=this.rollUpRows_-1}
1910this.setRollUp(packet.pts,row)}
1911if(row!==this.row_){this.clearFormatting(packet.pts);this.row_=row}
1912if(char1&0x1&&this.formatting_.indexOf('u')===-1){this.addFormatting(packet.pts,['u'])}
1913if((data&0x10)===0x10){this.column_=((data&0xe)>>1)*4}
1914if(this.isColorPAC(char1)){if((char1&0xe)===0xe){this.addFormatting(packet.pts,['i'])}}}else if(this.isNormalChar(char0)){if(char1===0x00){char1=null}
1915text=getCharFromCode(char0);text+=getCharFromCode(char1);this[this.mode_](packet.pts,text);this.column_+=text.length}}};Cea608Stream.prototype=new stream();Cea608Stream.prototype.flushDisplayed=function(pts){var content=this.displayed_.map(function(row){try{return row.trim()}catch(e){console.error('Skipping malformed caption.');return''}}).join('\n').replace(/^\n+|\n+$/g,'');if(content.length){this.trigger('data',{startPts:this.startPts_,endPts:pts,text:content,stream
1915:this.name_})}};Cea608Stream.prototype.reset=function(){this.mode_='popOn';this.topRow_=0;this.startPts_=0;this.displayed_=createDisplayBuffer();this.nonDisplayed_=createDisplayBuffer();this.lastControlCode_=null;this.column_=0;this.row_=BOTTOM_ROW;this.rollUpRows_=2;this.formatting_=[]};Cea608Stream.prototype.setConstants=function(){if(this.dataChannel_===0){this.BASE_=0x10;this.EXT_=0x11;this.CONTROL_=(0x14|this.field_)<<8;this.OFFSET_=0x17}else if(this.dataChannel_===1){this.BASE_=0x18;this.EXT_=0x19;this.CONTROL_=(0x1c|this.field_)<<8;this.OFFSET_=0x1f}
1916this.PADDING_=0x0000;this.RESUME_CAPTION_LOADING_=this.CONTROL_|0x20;this.END_OF_CAPTION_=this.CONTROL_|0x2f;this.ROLL_UP_2_ROWS_=this.CONTROL_|0x25;this.ROLL_UP_3_ROWS_=this.CONTROL_|0x26;this.ROLL_UP_4_ROWS_=this.CONTROL_|0x27;this.CARRIAGE_RETURN_=this.CONTROL_|0x2d;this.RESUME_DIRECT_CAPTIONING_=this.CONTROL_|0x29;this.BACKSPACE_=this.CONTROL_|0x21;this.ERASE_DISPLAYED_MEMORY_=this.CONTROL_|0x2c;this.ERASE_NON_DISPLAYED_MEMORY_=this.CONTROL_|0x2e};Cea608Stream.prototype.isSpecialCharacter=function(char0,char1){return char0===this.EXT_&&char1>=0x30&&char1<=0x3f};Cea608Stream.prototype.isExtCharacter=function(char0,char1){return(char0===this.EXT_+1||char0===this.EXT_+2)&&char1>=0x20&&char1<=0x3f};Cea608Stream.prototype.isMidRowCode=function(char0,char1){return char0===this.EXT_&&char1>=0x20&&char1<=0x2f};Cea608Stream.prototype.isOffsetControlCode=function(char0,char1){return char0===this.OFFSET_&&char1>=0x21&&char1<=0x23};Cea608Stream.prototype.isPAC=function(char0,char1){return char0>=this.BASE_&&char0<this.BASE_+8&&char1>=0x40&&char1<=0x7f};Cea608Stream.prototype.isColorPAC=function(char1){return char1>=0x40&&char1<=0x4f||char1>=0x60&&char1<=0x7f};Cea608Stream.prototype.isNormalChar=function(_char){return _char>=0x20&&_char<=0x7f};Cea608Stream.prototype.setRollUp=function(pts,newBaseRow){if(this.mode_!=='rollUp'){this.row_=BOTTOM_ROW;this.mode_='rollUp';this.flushDisplayed(pts);this.nonDisplayed_=createDisplayBuffer();this.displayed_=createDisplayBuffer()}
1917if(newBaseRow!==undefined&&newBaseRow!==this.row_){for(var i=0;i<this.rollUpRows_;i++){this.displayed_[newBaseRow-i]=this.displayed_[this.row_-i];this.displayed_[this.row_-i]=''}}
1918if(newBaseRow===undefined){newBaseRow=this.row_}
1919this.topRow_=newBaseRow-this.rollUpRows_+1};Cea608Stream.prototype.addFormatting=function(pts,format){this.formatting_=this.formatting_.concat(format);var text=format.reduce(function(text,format){return text+'<'+format+'>'},'');this[this.mode_](pts,text)};Cea608Stream.prototype.clearFormatting=function(pts){if(!this.formatting_.length){return}
1920var text=this.formatting_.reverse().reduce(function(text,format){return text+'</'+format+'>'},'');this.formatting_=[];this[this.mode_](pts,text)};Cea608Stream.prototype.popOn=function(pts,text){var baseRow=this.nonDisplayed_[this.row_];baseRow+=text;this.nonDisplayed_[this.row_]=baseRow};Cea608Stream.prototype.rollUp=function(pts,text){var baseRow=this.displayed_[this.row_];baseRow+=text;this.displayed_[this.row_]=baseRow};Cea608Stream.prototype.shiftRowsUp_=function(){var i;for(i=0;i<this.topRow_;i++){this.displayed_[i]=''}
1921for(i=this.row_+1;i<BOTTOM_ROW+1;i++){this.displayed_[i]=''}
1922for(i=this.topRow_;i<this.row_;i++){this.displayed_[i]=this.displayed_[i+1]}
1923this.displayed_[this.row_]=''};Cea608Stream.prototype.paintOn=function(pts,text){var baseRow=this.displayed_[this.row_];baseRow+=text;this.displayed_[this.row_]=baseRow};var captionStream={CaptionStream:CaptionStream,Cea608Stream:Cea608Stream};var discardEmulationPreventionBytes$1=captionPacketParser.discardEmulationPreventionBytes;var CaptionStream$1=captionStream.CaptionStream;var mapToSample=function mapToSample(offset,samples){var approximateOffset=offset;for(var i=0;i<samples.length;i++){var sample=samples[i];if(approximateOffset<sample.size){return sample}
1924approximateOffset-=sample.size}
1925return null};var findSeiNals=function findSeiNals(avcStream,samples,trackId){var avcView=new DataView(avcStream.buffer,avcStream.byteOffset,avcStream.byteLength),result=[],seiNal,i,length,lastMatchedSample;for(i=0;i+4<avcStream.length;i+=length){length=avcView.getUint32(i);i+=4;if(length<=0){continue}
1926switch(avcStream[i]&0x1F){case 0x06:var data=avcStream.subarray(i+1,i+1+length);var matchingSample=mapToSample(i,samples);seiNal={nalUnitType:'sei_rbsp',size:length,data:data,escapedRBSP:discardEmulationPreventionBytes$1(data),trackId:trackId};if(matchingSample){seiNal.pts=matchingSample.pts;seiNal.dts=matchingSample.dts;lastMatchedSample=matchingSample}else{seiNal.pts=lastMatchedSample.pts;seiNal.dts=lastMatchedSample.dts}
1927result.push(seiNal);break;default:break}}
1928return result};var parseSamples=function parseSamples(truns,baseMediaDecodeTime,tfhd){var currentDts=baseMediaDecodeTime;var defaultSampleDuration=tfhd.defaultSampleDuration||0;var defaultSampleSize=tfhd.defaultSampleSize||0;var trackId=tfhd.trackId;var allSamples=[];truns.forEach(function(trun){var trackRun=mp4Inspector.parseTrun(trun);var samples=trackRun.samples;
1928samples.forEach(function(sample){if(sample.duration===undefined){sample.duration=defaultSampleDuration}
1929if(sample.size===undefined){sample.size=defaultSampleSize}
1930sample.trackId=trackId;sample.dts=currentDts;if(sample.compositionTimeOffset===undefined){sample.compositionTimeOffset=0}
1931sample.pts=currentDts+sample.compositionTimeOffset;currentDts+=sample.duration});allSamples=allSamples.concat(samples)});return allSamples};var parseCaptionNals=function parseCaptionNals(segment,videoTrackId){var trafs=probe.findBox(segment,['moof','traf']);var mdats=probe.findBox(segment,['mdat']);var captionNals={};var mdatTrafPairs=[];mdats.forEach(function(mdat,index){var matchingTraf=trafs[index];mdatTrafPairs.push({mdat:mdat,traf:matchingTraf})});mdatTrafPairs.forEach(function(pair){var mdat=pair.mdat;var traf=pair.traf;var tfhd=probe.findBox(traf,['tfhd']);var headerInfo=mp4Inspector.parseTfhd(tfhd[0]);var trackId=headerInfo.trackId;var tfdt=probe.findBox(traf,['tfdt']);var baseMediaDecodeTime=tfdt.length>0?mp4Inspector.parseTfdt(tfdt[0]).baseMediaDecodeTime:0;var truns=probe.findBox(traf,['trun']);var samples;var seiNals;if(videoTrackId===trackId&&truns.length>0){samples=parseSamples(truns,baseMediaDecodeTime,headerInfo);seiNals=findSeiNals(mdat,samples,trackId);if(!captionNals[trackId]){captionNals[trackId]=[]}
1932captionNals[trackId]=captionNals[trackId].concat(seiNals)}});return captionNals};var parseEmbeddedCaptions=function parseEmbeddedCaptions(segment,trackId,timescale){var seiNals;if(trackId===null){return null}
1933seiNals=parseCaptionNals(segment,trackId);return{seiNals:seiNals[trackId],timescale:timescale}};var CaptionParser=function CaptionParser(){var isInitialized=!1;var captionStream;var segmentCache;var trackId;var timescale;var parsedCaptions;var parsingPartial;this.isInitialized=function(){return isInitialized};this.init=function(options){captionStream=new CaptionStream$1();isInitialized=!0;parsingPartial=options?options.isPartial:!1;captionStream.on('data',function(event){event.startTime=event.startPts/timescale;event.endTime=event.endPts/timescale;parsedCaptions.captions.push(event);parsedCaptions.captionStreams[event.stream]=!0})};this.isNewInit=function(videoTrackIds,timescales){if(videoTrackIds&&videoTrackIds.length===0||timescales&&typeof timescales==='object'&&Object.keys(timescales).length===0){return!1}
1934return trackId!==videoTrackIds[0]||timescale!==timescales[trackId]};this.parse=function(segment,videoTrackIds,timescales){var parsedData;if(!this.isInitialized()){return null}else if(!videoTrackIds||!timescales){return null}else if(this.isNewInit(videoTrackIds,timescales)){trackId=videoTrackIds[0];timescale=timescales[trackId]}else if(trackId===null||!timescale){segmentCache.push(segment);return null}
1935while(segmentCache.length>0){var cachedSegment=segmentCache.shift();this.parse(cachedSegment,videoTrackIds,timescales)}
1936parsedData=parseEmbeddedCaptions(segment,trackId,timescale);if(parsedData===null||!parsedData.seiNals){return null}
1937this.pushNals(parsedData.seiNals);this.flushStream();return parsedCaptions};this.pushNals=function(nals){if(!this.isInitialized()||!nals||nals.length===0){return null}
1938nals.forEach(function(nal){captionStream.push(nal)})};this.flushStream=function(){if(!this.isInitialized()){return null}
1939if(!parsingPartial){captionStream.flush()}else{captionStream.partialFlush()}};this.clearParsedCaptions=function(){parsedCaptions.captions=[];parsedCaptions.captionStreams={}};this.resetCaptionStream=function(){if(!this.isInitialized()){return null}
1940captionStream.reset()};this.clearAllCaptions=function(){this.clearParsedCaptions();this.resetCaptionStream()};this.reset=function(){segmentCache=[];trackId=null;timescale=null;if(!parsedCaptions){parsedCaptions={captions:[],captionStreams:{}}}else{this.clearParsedCaptions()}
1941this.resetCaptionStream()};this.reset()};var captionParser=CaptionParser;var streamTypes={H264_STREAM_TYPE:0x1B,ADTS_STREAM_TYPE:0x0F,METADATA_STREAM_TYPE:0x15};var MAX_TS=8589934592;var RO_THRESH=4294967296;var TYPE_SHARED='shared';var handleRollover=function handleRollover(value,reference){var direction=1;if(value>reference){direction=-1}
1942while(Math.abs(reference-value)>RO_THRESH){value+=direction*MAX_TS}
1943return value};var TimestampRolloverStream=function TimestampRolloverStream(type){var lastDTS,referenceDTS;TimestampRolloverStream.prototype.init.call(this);this.type_=type||TYPE_SHARED;
1943this.push=function(data){if(this.type_!==TYPE_SHARED&&data.type!==this.type_){return}
1944if(referenceDTS===undefined){referenceDTS=data.dts}
1945data.dts=handleRollover(data.dts,referenceDTS);data.pts=handleRollover(data.pts,referenceDTS);lastDTS=data.dts;this.trigger('data',data)};this.flush=function(){referenceDTS=lastDTS;this.trigger('done')};this.endTimeline=function(){this.flush();this.trigger('endedtimeline')};this.discontinuity=function(){referenceDTS=void 0;lastDTS=void 0};this.reset=function(){this.discontinuity();this.trigger('reset')}};TimestampRolloverStream.prototype=new stream();var timestampRolloverStream={TimestampRolloverStream:TimestampRolloverStream,handleRollover:handleRollover};var parsePid=function parsePid(packet){var pid=packet[1]&0x1f;pid<<=8;pid|=packet[2];return pid};var parsePayloadUnitStartIndicator=function parsePayloadUnitStartIndicator(packet){return!!(packet[1]&0x40)};var parseAdaptionField=function parseAdaptionField(packet){var offset=0;if((packet[3]&0x30)>>>4>0x01){offset+=packet[4]+1}
1946return offset};var parseType$1=function parseType(packet,pmtPid){var pid=parsePid(packet);if(pid===0){return'pat'}else if(pid===pmtPid){return'pmt'}else if(pmtPid){return'pes'}
1947return null};var parsePat=function parsePat(packet){var pusi=parsePayloadUnitStartIndicator(packet);var offset=4+parseAdaptionField(packet);if(pusi){offset+=packet[offset]+1}
1948return(packet[offset+10]&0x1f)<<8|packet[offset+11]};var parsePmt=function parsePmt(packet){var programMapTable={};var pusi=parsePayloadUnitStartIndicator(packet);var payloadOffset=4+parseAdaptionField(packet);if(pusi){payloadOffset+=packet[payloadOffset]+1}
1949if(!(packet[payloadOffset+5]&0x01)){return}
1950var sectionLength,tableEnd,programInfoLength;sectionLength=(packet[payloadOffset+1]&0x0f)<<8|packet[payloadOffset+2];tableEnd=3+sectionLength-4;programInfoLength=(packet[payloadOffset+10]&0x0f)<<8|packet[payloadOffset+11];var offset=12+programInfoLength;while(offset<tableEnd){var i=payloadOffset+offset;programMapTable[(packet[i+1]&0x1F)<<8|packet[i+2]]=packet[i];offset+=((packet[i+3]&0x0F)<<8|packet[i+4])+5}
1951return programMapTable};var parsePesType=function parsePesType(packet,programMapTable){var pid=parsePid(packet);var type=programMapTable[pid];switch(type){case streamTypes.H264_STREAM_TYPE:return'video';case streamTypes.ADTS_STREAM_TYPE:return'audio';case streamTypes.METADATA_STREAM_TYPE:return'timed-metadata';default:return null}};var parsePesTime=function parsePesTime(packet){var pusi=parsePayloadUnitStartIndicator(packet);if(!pusi){return null}
1952var offset=4+parseAdaptionField(packet);if(offset>=packet.byteLength){return null}
1953var pes=null;var ptsDtsFlags;ptsDtsFlags=packet[offset+7];if(ptsDtsFlags&0xC0){pes={};pes.pts=(packet[offset+9]&0x0E)<<27|(packet[offset+10]&0xFF)<<20|(packet[offset+11]&0xFE)<<12|(packet[offset+12]&0xFF)<<5|(packet[offset+13]&0xFE)>>>3;pes.pts*=4;pes.pts+=(packet[offset+13]&0x06)>>>1;pes.dts=pes.pts;if(ptsDtsFlags&0x40){pes.dts=(packet[offset+14]&0x0E)<<27|(packet[offset+15]&0xFF)<<20|(packet[offset+16]&0xFE)<<12|(packet[offset+17]&0xFF)<<5|(packet[offset+18]&0xFE)>>>3;pes.dts*=4;pes.dts+=(packet[offset+18]&0x06)>>>1}}
1954return pes};var parseNalUnitType=function parseNalUnitType(type){switch(type){case 0x05:return'slice_layer_without_partitioning_rbsp_idr';case 0x06:return'sei_rbsp';case 0x07:return'seq_parameter_set_rbsp';case 0x08:return'pic_parameter_set_rbsp';case 0x09:return'access_unit_delimiter_rbsp';default:return null}};var videoPacketContainsKeyFrame=function videoPacketContainsKeyFrame(packet){var offset=4+parseAdaptionField(packet);var frameBuffer=packet.subarray(offset);var frameI=0;var frameSyncPoint=0;var foundKeyFrame=!1;var nalType;for(;frameSyncPoint<frameBuffer.byteLength-3;frameSyncPoint++){if(frameBuffer[frameSyncPoint+2]===1){frameI=frameSyncPoint+5;break}}
1955while(frameI<frameBuffer.byteLength){switch(frameBuffer[frameI]){case 0:if(frameBuffer[frameI-1]!==0){frameI+=2;break}else if(frameBuffer[frameI-2]!==0){frameI++;break}
1956if(frameSyncPoint+3!==frameI-2){nalType=parseNalUnitType(frameBuffer[frameSyncPoint+3]&0x1f);if(nalType==='slice_layer_without_partitioning_rbsp_idr'){foundKeyFrame=!0}}
1957do{frameI++}while(frameBuffer[frameI]!==1&&frameI<frameBuffer.length);frameSyncPoint=frameI-2;frameI+=3;break;case 1:if(frameBuffer[frameI-1]!==0||frameBuffer[frameI-2]!==0){frameI+=3;break}
1958nalType=parseNalUnitType(frameBuffer[frameSyncPoint+3]&0x1f);if(nalType==='slice_layer_without_partitioning_rbsp_idr'){foundKeyFrame=!0}
1959frameSyncPoint=frameI-2;frameI+=3;break;default:frameI+=3;break}}
1960frameBuffer=frameBuffer.subarray(frameSyncPoint);frameI-=frameSyncPoint;frameSyncPoint=0;if(frameBuffer&&frameBuffer.byteLength>3){nalType=parseNalUnitType(frameBuffer[frameSyncPoint+3]&0x1f);if(nalType==='slice_layer_without_partitioning_rbsp_idr'){foundKeyFrame=!0}}
1961return foundKeyFrame};var probe$1={parseType:parseType$1,parsePat:parsePat,parsePmt:parsePmt,parsePayloadUnitStartIndicator:parsePayloadUnitStartIndicator,parsePesType:parsePesType,parsePesTime:parsePesTime,videoPacketContainsKeyFrame:videoPacketContainsKeyFrame};var ADTS_SAMPLING_FREQUENCIES=[96000,88200,64000,48000,44100,32000,24000,22050,16000,12000,11025,8000,7350];var isLikelyAacData=function isLikelyAacData(data){if(data[0]==='I'.charCodeAt(0)&&data[1]==='D'.charCodeAt(0)&&data[2]==='3'.charCodeAt(0)){return!0}
1962return!1};var parseSyncSafeInteger=function parseSyncSafeInteger(data){return data[0]<<21|data[1]<<14|data[2]<<7|data[3]};var percentEncode=function percentEncode(bytes,start,end){var i,result='';for(i=start;i<end;i++){result+='%'+('00'+bytes[i].toString(16)).slice(-2)}
1963return result};var parseIso88591=function parseIso88591(bytes,start,end){return unescape(percentEncode(bytes,start,end))};var parseId3TagSize=function parseId3TagSize(header,byteIndex){var returnSize=header[byteIndex+6]<<21|header[byteIndex+7]<<14|header[byteIndex+8]<<7|header[byteIndex+9],flags=header[byteIndex+5],footerPresent=(flags&16)>>4;
1963if(footerPresent){return returnSize+20}
1964return returnSize+10};var parseAdtsSize=function parseAdtsSize(header,byteIndex){var lowThree=(header[byteIndex+5]&0xE0)>>5,middle=header[byteIndex+4]<<3,highTwo=header[byteIndex+3]&0x3<<11;return highTwo|middle|lowThree};var parseType$2=function parseType(header,byteIndex){if(header[byteIndex]==='I'.charCodeAt(0)&&header[byteIndex+1]==='D'.charCodeAt(0)&&header[byteIndex+2]==='3'.charCodeAt(0)){return'timed-metadata'}else if(header[byteIndex]&0xff===0xff&&(header[byteIndex+1]&0xf0)===0xf0){return'audio'}
1965return null};var parseSampleRate=function parseSampleRate(packet){var i=0;while(i+5<packet.length){if(packet[i]!==0xFF||(packet[i+1]&0xF6)!==0xF0){i++;continue}
1966return ADTS_SAMPLING_FREQUENCIES[(packet[i+2]&0x3c)>>>2]}
1967return null};var parseAacTimestamp=function parseAacTimestamp(packet){var frameStart,frameSize,frame,frameHeader;frameStart=10;if(packet[5]&0x40){frameStart+=4;frameStart+=parseSyncSafeInteger(packet.subarray(10,14))}
1968do{frameSize=parseSyncSafeInteger(packet.subarray(frameStart+4,frameStart+8));if(frameSize<1){return null}
1969frameHeader=String.fromCharCode(packet[frameStart],packet[frameStart+1],packet[frameStart+2],packet[frameStart+3]);if(frameHeader==='PRIV'){frame=packet.subarray(frameStart+10,frameStart+frameSize+10);for(var i=0;i<frame.byteLength;i++){if(frame[i]===0){var owner=parseIso88591(frame,0,i);if(owner==='com.apple.streaming.transportStreamTimestamp'){var d=frame.subarray(i+1);var size=(d[3]&0x01)<<30|d[4]<<22|d[5]<<14|d[6]<<6|d[7]>>>2;size*=4;size+=d[7]&0x03;return size}
1970break}}}
1971frameStart+=10;frameStart+=frameSize}while(frameStart<packet.byteLength);return null};var utils={isLikelyAacData:isLikelyAacData,parseId3TagSize:parseId3TagSize,parseAdtsSize:parseAdtsSize,parseType:parseType$2,parseSampleRate:parseSampleRate,parseAacTimestamp:parseAacTimestamp};var ONE_SECOND_IN_TS=90000,secondsToVideoTs,secondsToAudioTs,videoTsToSeconds,audioTsToSeconds,audioTsToVideoTs,videoTsToAudioTs,metadataTsToSeconds;secondsToVideoTs=function secondsToVideoTs(seconds){return seconds*ONE_SECOND_IN_TS};secondsToAudioTs=function secondsToAudioTs(seconds,sampleRate){return seconds*sampleRate};videoTsToSeconds=function videoTsToSeconds(timestamp){return timestamp/ONE_SECOND_IN_TS};audioTsToSeconds=function audioTsToSeconds(timestamp,sampleRate){return timestamp/sampleRate};audioTsToVideoTs=function audioTsToVideoTs(timestamp,sampleRate){return secondsToVideoTs(audioTsToSeconds(timestamp,sampleRate))};videoTsToAudioTs=function videoTsToAudioTs(timestamp,sampleRate){return secondsToAudioTs(videoTsToSeconds(timestamp),sampleRate)};metadataTsToSeconds=function metadataTsToSeconds(timestamp,timelineStartPts,keepOriginalTimestamps){return videoTsToSeconds(keepOriginalTimestamps?timestamp:timestamp-timelineStartPts)};var clock={ONE_SECOND_IN_TS:ONE_SECOND_IN_TS,secondsToVideoTs:secondsToVideoTs,secondsToAudioTs:secondsToAudioTs,videoTsToSeconds:videoTsToSeconds,audioTsToSeconds:audioTsToSeconds,audioTsToVideoTs:audioTsToVideoTs,videoTsToAudioTs:videoTsToAudioTs,metadataTsToSeconds:metadataTsToSeconds};var handleRollover$1=timestampRolloverStream.handleRollover;var probe$2={};probe$2.ts=probe$1;probe$2.aac=utils;var ONE_SECOND_IN_TS$1=clock.ONE_SECOND_IN_TS;var MP2T_PACKET_LENGTH=188,SYNC_BYTE=0x47;var parsePsi_=function parsePsi_(bytes,pmt){var startIndex=0,endIndex=MP2T_PACKET_LENGTH,packet,type;while(endIndex<bytes.byteLength){if(bytes[startIndex]===SYNC_BYTE&&bytes[endIndex]===SYNC_BYTE){packet=bytes.subarray(startIndex,endIndex);type=probe$2.ts.parseType(packet,pmt.pid);switch(type){case 'pat':if(!pmt.pid){pmt.pid=probe$2.ts.parsePat(packet)}
1972break;case 'pmt':if(!pmt.table){pmt.table=probe$2.ts.parsePmt(packet)}
1973break;default:break}
1974if(pmt.pid&&pmt.table){return}
1975startIndex+=MP2T_PACKET_LENGTH;endIndex+=MP2T_PACKET_LENGTH;continue}
1976startIndex++;endIndex++}};var parseAudioPes_=function parseAudioPes_(bytes,pmt,result){var startIndex=0,endIndex=MP2T_PACKET_LENGTH,packet,type,pesType,pusi,parsed;var endLoop=!1;while(endIndex<=bytes.byteLength){if(bytes[startIndex]===SYNC_BYTE&&(bytes[endIndex]===SYNC_BYTE||endIndex===bytes.byteLength)){packet=bytes.subarray(startIndex,endIndex);type=probe$2.ts.parseType(packet,pmt.pid);switch(type){case 'pes':pesType=probe$2.ts.parsePesType(packet,pmt.table);pusi=probe$2.ts.parsePayloadUnitStartIndicator(packet);if(pesType==='audio'&&pusi){parsed=probe$2.ts.parsePesTime(packet);if(parsed){parsed.type='audio';result.audio.push(parsed);endLoop=!0}}
1977break;default:break}
1978if(endLoop){break}
1979startIndex+=MP2T_PACKET_LENGTH;endIndex+=MP2T_PACKET_LENGTH;continue}
1980startIndex++;endIndex++}
1981endIndex=bytes.byteLength;startIndex=endIndex-MP2T_PACKET_LENGTH;endLoop=!1;while(startIndex>=0){if(bytes[startIndex]===SYNC_BYTE&&(bytes[endIndex]===SYNC_BYTE||endIndex===bytes.byteLength)){packet=bytes.subarray(startIndex,endIndex);type=probe$2.ts.parseType(packet,pmt.pid);switch(type){case 'pes':pesType=probe$2.ts.parsePesType(packet,pmt.table);pusi=probe$2.ts.parsePayloadUnitStartIndicator(packet);if(pesType==='audio'&&pusi){parsed=probe$2.ts.parsePesTime(packet);if(parsed){parsed.type='audio';result.audio.push(parsed);endLoop=!0}}
1982break;default:break}
1983if(endLoop){break}
1984startIndex-=MP2T_PACKET_LENGTH;endIndex-=MP2T_PACKET_LENGTH;continue}
1985startIndex--;endIndex--}};var parseVideoPes_=function parseVideoPes_(bytes,pmt,result){var startIndex=0,endIndex=MP2T_PACKET_LENGTH,packet,type,pesType,pusi,parsed,frame,i,pes;var endLoop=!1;var currentFrame={data:[],size:0};while(endIndex<bytes.byteLength){if(bytes[startIndex]===SYNC_BYTE&&bytes[endIndex]===SYNC_BYTE){packet=bytes.subarray(startIndex,endIndex);type=probe$2.ts.parseType(packet,pmt.pid);switch(type){case 'pes':pesType=probe$2.ts.parsePesType(packet,pmt.table);pusi=probe$2.ts.parsePayloadUnitStartIndicator(packet);if(pesType==='video'){if(pusi&&!endLoop){parsed=probe$2.ts.parsePesTime(packet);if(parsed){parsed.type='video';result.video.push(parsed);endLoop=!0}}
1986if(!result.firstKeyFrame){if(pusi){if(currentFrame.size!==0){frame=new Uint8Array(currentFrame.size);i=0;while(currentFrame.data.length){pes=currentFrame.data.shift();frame.set(pes,i);i+=pes.byteLength}
1987if(probe$2.ts.videoPacketContainsKeyFrame(frame)){var firstKeyFrame=probe$2.ts.parsePesTime(frame);if(firstKeyFrame){result.firstKeyFrame=firstKeyFrame;result.firstKeyFrame.type='video'}else{console.warn('Failed to extract PTS/DTS from PES at first keyframe. '+'This could be an unusual TS segment, or else mux.js did not '+'parse your TS segment correctly. If you know your TS '+'segments do contain PTS/DTS on keyframes please file a bug '+'report! You can try ffprobe to double check for yourself.')}}
1988currentFrame.size=0}}
1989currentFrame.data.push(packet);currentFrame.size+=packet.byteLength}}
1990break;default:break}
1991if(endLoop&&result.firstKeyFrame){break}
1992startIndex+=MP2T_PACKET_LENGTH;endIndex+=MP2T_PACKET_LENGTH;continue}
1993startIndex++;endIndex++}
1994endIndex=bytes.byteLength;startIndex=endIndex-MP2T_PACKET_LENGTH;endLoop=!1;while(startIndex>=0){if(bytes[startIndex]===SYNC_BYTE&&bytes[endIndex]===SYNC_BYTE){packet=bytes.subarray(startIndex,endIndex);type=probe$2.ts.parseType(packet,pmt.pid);switch(type){case 'pes':pesType=probe$2.ts.parsePesType(packet,pmt.table);pusi=probe$2.ts.parsePayloadUnitStartIndicator(packet);if(pesType==='video'&&pusi){parsed=probe$2.ts.parsePesTime(packet);if(parsed){parsed.type='video';result.video.push(parsed);endLoop=!0}}
1995break;default:break}
1996if(endLoop){break}
1997startIndex-=MP2T_PACKET_LENGTH;endIndex-=MP2T_PACKET_LENGTH;continue}
1998startIndex--;endIndex--}};var adjustTimestamp_=function adjustTimestamp_(segmentInfo,baseTimestamp){if(segmentInfo.audio&&segmentInfo.audio.length){var audioBaseTimestamp=baseTimestamp;if(typeof audioBaseTimestamp==='undefined'){audioBaseTimestamp=segmentInfo.audio[0].dts}
1999segmentInfo.audio.forEach(function(info){info.dts=handleRollover$1(info.dts,audioBaseTimestamp);info.pts=handleRollover$1(info.pts,audioBaseTimestamp);info.dtsTime=info.dts/ONE_SECOND_IN_TS$1;info.ptsTime=info.pts/ONE_SECOND_IN_TS$1})}
2000if(segmentInfo.video&&segmentInfo.video.length){var videoBaseTimestamp=baseTimestamp;if(typeof videoBaseTimestamp==='undefined'){videoBaseTimestamp=segmentInfo.video[0].dts}
2001segmentInfo.video.forEach(function(info){info.dts=handleRollover$1(info.dts,videoBaseTimestamp);info.pts=handleRollover$1(info.pts,videoBaseTimestamp);info.dtsTime=info.dts/ONE_SECOND_IN_TS$1;info.ptsTime=info.pts/ONE_SECOND_IN_TS$1});if(segmentInfo.firstKeyFrame){var frame=segmentInfo.firstKeyFrame;frame.dts=handleRollover$1(frame.dts,videoBaseTimestamp);frame.pts=handleRollover$1(frame.pts,videoBaseTimestamp);frame.dtsTime=frame.dts/ONE_SECOND_IN_TS$1;frame.ptsTime=frame.dts/ONE_SECOND_IN_TS$1}}};var inspectAac_=function inspectAac_(bytes){var endLoop=!1,audioCount=0,sampleRate=null,timestamp=null,frameSize=0,byteIndex=0,packet;while(bytes.length-byteIndex>=3){var type=probe$2.aac.parseType(bytes,byteIndex);switch(type){case 'timed-metadata':if(bytes.length-byteIndex<10){endLoop=!0;break}
2002frameSize=probe$2.aac.parseId3TagSize(bytes,byteIndex);if(frameSize>bytes.length){endLoop=!0;break}
2003if(timestamp===null){packet=bytes.subarray(byteIndex,byteIndex+frameSize);timestamp=probe$2.aac.parseAacTimestamp(packet)}
2004byteIndex+=frameSize;break;case 'audio':if(bytes.length-byteIndex<7){endLoop=!0;break}
2005frameSize=probe$2.aac.parseAdtsSize(bytes,byteIndex);if(frameSize>bytes.length){endLoop=!0;break}
2006if(sampleRate===null){packet=bytes.subarray(byteIndex,byteIndex+frameSize);sampleRate=probe$2.aac.parseSampleRate(packet)}
2007audioCount++;byteIndex+=frameSize;break;default:byteIndex++;break}
2008if(endLoop){return null}}
2009if(sampleRate===null||timestamp===null){return null}
2010var audioTimescale=ONE_SECOND_IN_TS$1/sampleRate;var result={audio:[{type:'audio',dts:timestamp,pts:timestamp},{type:'audio',dts:timestamp+audioCount*1024*audioTimescale,pts:timestamp+audioCount*1024*audioTimescale}]};return result};var inspectTs_=function inspectTs_(bytes){var pmt={pid:null,table:null};var result={};parsePsi_(bytes,pmt);for(var pid in pmt.table){if(pmt.table.hasOwnProperty(pid)){var type=pmt.table[pid];switch(type){case streamTypes.H264_STREAM_TYPE:result.video=[];parseVideoPes_(bytes,pmt,result);if(result.video.length===0){delete result.video}
2011break;case streamTypes.ADTS_STREAM_TYPE:result.audio=[];parseAudioPes_(bytes,pmt,result);if(result.audio.length===0){delete result.audio}
2012break;default:break}}}
2013return result};var inspect=function inspect(bytes,baseTimestamp){var isAacData=probe$2.aac.isLikelyAacData(bytes);var result;if(isAacData){result=inspectAac_(bytes)}else{result=inspectTs_(bytes)}
2014if(!result||!result.audio&&!result.video){return null}
2015adjustTimestamp_(result,baseTimestamp);return result};var tsInspector={inspect:inspect,parseAudioPes_:parseAudioPes_};function unpad(padded){return padded.subarray(0,padded.byteLength-padded[padded.byteLength-1])}
2016var classCallCheck=function classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}};var createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1;descriptor.configurable=!0;if("value" in descriptor)descriptor.writable=!0;Object.defineProperty(target,descriptor.key,descriptor)}}
2017return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var inherits$1=function inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass)}
2018subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass};var possibleConstructorReturn=function possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}
2019return call&&(typeof call==="object"||typeof call==="function")?call:self};var precompute=function precompute(){var tables=[[[],[],[],[],[]],[[],[],[],[],[]]];var encTable=tables[0];var decTable=tables[1];var sbox=encTable[4];var sboxInv=decTable[4];var i=void 0;var x=void 0;var xInv=void 0;var d=[];var th=[];var x2=void 0;var x4=void 0;var x8=void 0;var s=void 0;var tEnc=void 0;var tDec=void 0;for(i=0;i<256;i++){th[(d[i]=i<<1^(i>>7)*283)^i]=i}
2020for(x=xInv=0;!sbox[x];x^=x2||1,xInv=th[xInv]||1){s=xInv^xInv<<1^xInv<<2^xInv<<3^xInv<<4;s=s>>8^s&255^99;sbox[x]=s;sboxInv[s]=x;x8=d[x4=d[x2=d[x]]];tDec=x8*0x1010101^x4*0x10001^x2*0x101^x*0x1010100;tEnc=d[s]*0x101^s*0x1010100;for(i=0;i<4;i++){encTable[i][x]=tEnc=tEnc<<24^tEnc>>>8;decTable[i][s]=tDec=tDec<<24^tDec>>>8}}
2021for(i=0;i<5;i++){encTable[i]=encTable[i].slice(0);decTable[i]=decTable[i].slice(0)}
2022return tables};var aesTables=null;var AES=function(){function AES(key){classCallCheck(this,AES);if(!aesTables){aesTables=precompute()}
2023this._tables=[[aesTables[0][0].slice(),aesTables[0][1].slice(),aesTables[0][2].slice(),aesTables[0][3].slice(),aesTables[0][4].slice()],[aesTables[1][0].slice(),aesTables[1][1].slice(),aesTables[1][2].slice(),aesTables[1][3].slice(),aesTables[1][4].slice()]];var i=void 0;var j=void 0;var tmp=void 0;var encKey=void 0;var decKey=void 0;var sbox=this._tables[0][4];var decTable=this._tables[1];var keyLen=key.length;var rcon=1;if(keyLen!==4&&keyLen!==6&&keyLen!==8){throw new Error('Invalid aes key size')}
2024encKey=key.slice(0);decKey=[];this._key=[encKey,decKey];for(i=keyLen;i<4*keyLen+28;i++){tmp=encKey[i-1];if(i%keyLen===0||keyLen===8&&i%keyLen===4){tmp=sbox[tmp>>>24]<<24^sbox[tmp>>16&255]<<16^sbox[tmp>>8&255]<<8^sbox[tmp&255];if(i%keyLen===0){tmp=tmp<<8^tmp>>>24^rcon<<24;rcon=rcon<<1^(rcon>>7)*283}}
2025encKey[i]=encKey[i-keyLen]^tmp}
2026for(j=0;i;j++,i--){tmp=encKey[j&3?i:i-4];if(i<=4||j<4){decKey[j]=tmp}else{decKey[j]=decTable[0][sbox[tmp>>>24]]^decTable[1][sbox[tmp>>16&255]]^decTable[2][sbox[tmp>>8&255]]^decTable[3][sbox[tmp&255]]}}}
2027AES.prototype.decrypt=function decrypt(encrypted0,encrypted1,encrypted2,encrypted3,out,offset){var key=this._key[1];var a=encrypted0^key[0];var b=encrypted3^key[1];var c=encrypted2^key[2];var d=encrypted1^key[3];var a2=void 0;var b2=void 0;var c2=void 0;var nInnerRounds=key.length/4-2;var i=void 0;var kIndex=4;var table=this._tables[1];var table0=table[0];var table1=table[1];var table2=table[2];var table3=table[3];var sbox=table[4];for(i=0;i<nInnerRounds;i++){a2=table0[a>>>24]^table1[b>>16&255]^table2[c>>8&255]^table3[d&255]^key[kIndex];b2=table0[b>>>24]^table1[c>>16&255]^table2[d>
2027>8&255]^table3[a&255]^key[kIndex+1];c2=table0[c>>>24]^table1[d>>16&255]^table2[a>>8&255]^table3[b&255]^key[kIndex+2];d=table0[d>>>24]^table1[a>>16&255]^table2[b>>8&255]^table3[c&255]^key[kIndex+3];kIndex+=4;a=a2;b=b2;c=c2}
2028for(i=0;i<4;i++){out[(3&-i)+offset]=sbox[a>>>24]<<24^sbox[b>>16&255]<<16^sbox[c>>8&255]<<8^sbox[d&255]^key[kIndex++];a2=a;a=b;b=c;c=d;d=a2}};return AES}();var Stream$2=function(){function Stream(){classCallCheck(this,Stream);this.listeners={}}
2029Stream.prototype.on=function on(type,listener){if(!this.listeners[type]){this.listeners[type]=[]}
2030this.listeners[type].push(listener)};Stream.prototype.off=function off(type,listener){if(!this.listeners[type]){return!1}
2031var index=this.listeners[type].indexOf(listener);this.listeners[type].splice(index,1);return index>-1};Stream.prototype.trigger=function trigger(type){var callbacks=this.listeners[type];if(!callbacks){return}
2032if(arguments.length===2){var length=callbacks.length;for(var i=0;i<length;++i){callbacks[i].call(this,arguments[1])}}else{var args=Array.prototype.slice.call(arguments,1);var _length=callbacks.length;for(var _i=0;_i<_length;++_i){callbacks[_i].apply(this,args)}}};Stream.prototype.dispose=function dispose(){this.listeners={}};Stream.prototype.pipe=function pipe(destination){this.on('data',function(data){destination.push(data)})};return Stream}();var AsyncStream=function(_Stream){inherits$1(AsyncStream,_Stream);function AsyncStream(){classCallCheck(this,AsyncStream);var _this=possibleConstructorReturn(this,_Stream.call(this,Stream$2));_this.jobs=[];_this.delay=1;_this.timeout_=null;return _this}
2033AsyncStream.prototype.processJob_=function processJob_(){this.jobs.shift()();if(this.jobs.length){this.timeout_=setTimeout(this.processJob_.bind(this),this.delay)}else{this.timeout_=null}};AsyncStream.prototype.push=function push(job){this.jobs.push(job);if(!this.timeout_){this.timeout_=setTimeout(this.processJob_.bind(this),this.delay)}};return AsyncStream}(Stream$2);var ntoh=function ntoh(word){return word<<24|(word&0xff00)<<8|(word&0xff0000)>>8|word>>>24};var decrypt=function decrypt(encrypted,key,initVector){var encrypted32=new Int32Array(encrypted.buffer,encrypted.byteOffset,encrypted.byteLength>>2);var decipher=new AES(Array.prototype.slice.call(key));var decrypted=new Uint8Array(encrypted.byteLength);var decrypted32=new Int32Array(decrypted.buffer);var init0=void 0;var init1=void 0;var init2=void 0;var init3=void 0;var encrypted0=void 0;var encrypted1=void 0;var encrypted2=void 0;var encrypted3=void 0;var wordIx=void 0;init0=initVector[0];init1=initVector[1];init2=initVector[2];init3=initVector[3];for(wordIx=0;wordIx<encrypted32.length;wordIx+=4){encrypted0=ntoh(encrypted32[wordIx]);encrypted1=ntoh(encrypted32[wordIx+1]);encrypted2=ntoh(encrypted32[wordIx+2]);encrypted3=ntoh(encrypted32[wordIx+3]);decipher.decrypt(encrypted0,encrypted1,encrypted2,encrypted3,decrypted32,wordIx);decrypted32[wordIx]=ntoh(decrypted32[wordIx]^init0);decrypted32[wordIx+1]=ntoh(decrypted32[wordIx+1]^init1);decrypted32[wordIx+2]=ntoh(decrypted32[wordIx+2]^init2);decrypted32[wordIx+3]=ntoh(decrypted32[wordIx+3]^init3);init0=encrypted0;init1=encrypted1;init2=encrypted2;init3=encrypted3}
2034return decrypted};var Decrypter=function(){function Decrypter(encrypted,key,initVector,done){classCallCheck(this,Decrypter);var step=Decrypter.STEP;var encrypted32=new Int32Array(encrypted.buffer);var decrypted=new Uint8Array(encrypted.byteLength);var i=0;this.asyncStream_=new AsyncStream();this.asyncStream_.push(this.decryptChunk_(encrypted32.subarray(i,i+step),key,initVector,decrypted));for(i=step;i<encrypted32.length;i+=step){initVector=new Uint32Array([ntoh(encrypted32[i-4]),ntoh(encrypted32[i-3]),ntoh(encrypted32[i-2]),ntoh(encrypted32[i-1])]);this.asyncStream_.push(this.decryptChunk_(encrypted32.subarray(i,i+step),key,initVector,decrypted))}
2035this.asyncStream_.push(function(){done(null,unpad(decrypted))})}
2036Decrypter.prototype.decryptChunk_=function decryptChunk_(encrypted,key,initVector,decrypted){return function(){var bytes=decrypt(encrypted,key,initVector);decrypted.set(bytes,encrypted.byteOffset)}};createClass(Decrypter,null,[{key:'STEP',get:function get$$1(){return 32000}}]);return Decrypter}();/**
2037    * @videojs/http-streaming
2038    * @version 1.11.2
2039    * @copyright 2019 Brightcove, Inc
2040    * @license Apache-2.0
2041    */
2042var resolveUrl$1=function resolveUrl(baseURL,relativeURL){if(/^[a-z]+:/i.test(relativeURL)){return relativeURL}
2043if(!/\/\//i.test(baseURL)){baseURL=urlToolkit.buildAbsoluteURL(window$1.location.href,baseURL)}
2044return urlToolkit.buildAbsoluteURL(baseURL,relativeURL)};var resolveManifestRedirect=function resolveManifestRedirect(handleManifestRedirect,url,req){if(handleManifestRedirect&&req.responseURL&&url!==req.responseURL){return req.responseURL}
2045return url};var classCallCheck$1=function classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}};var createClass$1=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1;descriptor.configurable=!0;if("value" in descriptor)descriptor.writable=!0;Object.defineProperty(target,descriptor.key,descriptor)}}
2046return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var get$1=function get(object,property,receiver){if(object===null)object=Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc===undefined){var parent=Object.getPrototypeOf(object);if(parent===null){return undefined}else{return get(parent,property,receiver)}}else if("value" in desc){return desc.value}else{var getter=desc.get;if(getter===undefined){return undefined}
2047return getter.call(receiver)}};var inherits$2=function inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass)}
2048subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass};var possibleConstructorReturn$1=function possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}
2049return call&&(typeof call==="object"||typeof call==="function")?call:self};var slicedToArray=function(){function sliceIterator(arr,i){var _arr=[];var _n=!0;var _d=!1;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=!0){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=!0;_e=err}finally{try{if(!_n&&_i["return"])_i["return"]();}finally{if(_d)throw _e}}
2050return _arr}
2051return function(arr,i){if(Array.isArray(arr)){return arr}else if(Symbol.iterator in Object(arr)){return sliceIterator(arr,i)}
2051else{throw new TypeError("Invalid attempt to destructure non-iterable instance")}}}();var mergeOptions$1=videojs$1.mergeOptions,EventTarget$1=videojs$1.EventTarget,log$1=videojs$1.log;var forEachMediaGroup=function forEachMediaGroup(master,callback){['AUDIO','SUBTITLES'].forEach(function(mediaType){for(var groupKey in master.mediaGroups[mediaType]){for(var labelKey in master.mediaGroups[mediaType][groupKey]){var mediaProperties=master.mediaGroups[mediaType][groupKey][labelKey];callback(mediaProperties,mediaType,groupKey,labelKey)}}})};var updateSegments=function updateSegments(original,update,offset){var result=update.slice();offset=offset||0;var length=Math.min(original.length,update.length+offset);for(var i=offset;i<length;i++){result[i-offset]=mergeOptions$1(original[i],result[i-offset])}
2052return result};var resolveSegmentUris=function resolveSegmentUris(segment,baseUri){if(!segment.resolvedUri){segment.resolvedUri=resolveUrl$1(baseUri,segment.uri)}
2053if(segment.key&&!segment.key.resolvedUri){segment.key.resolvedUri=resolveUrl$1(baseUri,segment.key.uri)}
2054if(segment.map&&!segment.map.resolvedUri){segment.map.resolvedUri=resolveUrl$1(baseUri,segment.map.uri)}};var updateMaster=function updateMaster(master,media){var result=mergeOptions$1(master,{});var playlist=result.playlists[media.uri];if(!playlist){return null}
2055if(playlist.segments&&media.segments&&playlist.segments.length===media.segments.length&&playlist.endList===media.endList&&playlist.mediaSequence===media.mediaSequence){return null}
2056var mergedPlaylist=mergeOptions$1(playlist,media);if(playlist.segments){mergedPlaylist.segments=updateSegments(playlist.segments,media.segments,media.mediaSequence-playlist.mediaSequence)}
2057mergedPlaylist.segments.forEach(function(segment){resolveSegmentUris(segment,mergedPlaylist.resolvedUri)});for(var i=0;i<result.playlists.length;i++){if(result.playlists[i].uri===media.uri){result.playlists[i]=mergedPlaylist}}
2058result.playlists[media.uri]=mergedPlaylist;return result};var setupMediaPlaylists=function setupMediaPlaylists(master){var i=master.playlists.length;while(i--){var playlist=master.playlists[i];master.playlists[playlist.uri]=playlist;playlist.resolvedUri=resolveUrl$1(master.uri,playlist.uri);playlist.id=i;if(!playlist.attributes){playlist.attributes={};log$1.warn('Invalid playlist STREAM-INF detected. Missing BANDWIDTH attribute.')}}};var resolveMediaGroupUris=function resolveMediaGroupUris(master){forEachMediaGroup(master,function(properties){if(properties.uri){properties.resolvedUri=resolveUrl$1(master.uri,properties.uri)}})};var refreshDelay=function refreshDelay(media,update){var lastSegment=media.segments[media.segments.length-1];var delay=void 0;if(update&&lastSegment&&lastSegment.duration){delay=lastSegment.duration*1000}else{delay=(media.targetDuration||10)*500}
2059return delay};var PlaylistLoader=function(_EventTarget){inherits$2(PlaylistLoader,_EventTarget);function PlaylistLoader(srcUrl,hls){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};classCallCheck$1(this,PlaylistLoader);var _this=possibleConstructorReturn$1(this,(PlaylistLoader.__proto__||Object.getPrototypeOf(PlaylistLoader)).call(this));var _options$withCredenti=options.withCredentials,withCredentials=_options$withCredenti===undefined?!1:_options$withCredenti,_options$handleManife=options.handleManifestRedirects,handleManifestRedirects=_options$handleManife===undefined?!1:_options$handleManife;_this.srcUrl=srcUrl;_this.hls_=hls;_this.withCredentials=withCredentials;_this.handleManifestRedirects=handleManifestRedirects;var hlsOptions=hls.options_;_this.customTagParsers=hlsOptions&&hlsOptions.customTagParsers||[];_this.customTagMappers=hlsOptions&&hlsOptions.customTagMappers||[];if(!_this.srcUrl){throw new Error('A non-empty playlist URL is required')}
2060_this.state='HAVE_NOTHING';_this.on('mediaupdatetimeout',function(){if(_this.state!=='HAVE_METADATA'){return}
2061_this.state='HAVE_CURRENT_METADATA';_this.request=_this.hls_.xhr({uri:resolveUrl$1(_this.master.uri,_this.media().uri),withCredentials:_this.withCredentials},function(error,req){if(!_this.request){return}
2062if(error){return _this.playlistRequestError(_this.request,_this.media().uri,'HAVE_METADATA')}
2063_this.haveMetadata(_this.request,_this.media().uri)})});return _this}
2064createClass$1(PlaylistLoader,[{key:'playlistRequestError',value:function playlistRequestError(xhr,url,startingState){this.request=null;if(startingState){this.state=startingState}
2065this.error={playlist:this.master.playlists[url],status:xhr.status,message:'HLS playlist request error at URL: '+url+'.',responseText:xhr.responseText,code:xhr.status>=500?4:2};this.trigger('error')}},{key:'haveMetadata',value:function haveMetadata(xhr,url){var _this2=this;this.request=null;this.state='HAVE_METADATA';var parser=new Parser();
2065this.customTagParsers.forEach(function(customParser){return parser.addParser(customParser)});this.customTagMappers.forEach(function(mapper){return parser.addTagMapper(mapper)});parser.push(xhr.responseText);parser.end();parser.manifest.uri=url;parser.manifest.attributes=parser.manifest.attributes||{};var update=updateMaster(this.master,parser.manifest);this.targetDuration=parser.manifest.targetDuration;if(update){this.master=update;this.media_=this.master.playlists[parser.manifest.uri]}else{this.trigger('playlistunchanged')}
2066if(!this.media().endList){window$1.clearTimeout(this.mediaUpdateTimeout);this.mediaUpdateTimeout=window$1.setTimeout(function(){_this2.trigger('mediaupdatetimeout')},refreshDelay(this.media(),!!update))}
2067this.trigger('loadedplaylist')}},{key:'dispose',value:function dispose(){this.stopRequest();window$1.clearTimeout(this.mediaUpdateTimeout);window$1.clearTimeout(this.finalRenditionTimeout)}},{key:'stopRequest',value:function stopRequest(){if(this.request){var oldRequest=this.request;this.request=null;oldRequest.onreadystatechange=null;oldRequest.abort()}}},{key:'media',value:function media(playlist,isFinalRendition){var _this3=this;if(!playlist){return this.media_}
2068if(this.state==='HAVE_NOTHING'){throw new Error('Cannot switch media playlist from '+this.state)}
2069if(typeof playlist==='string'){if(!this.master.playlists[playlist]){throw new Error('Unknown playlist URI: '+playlist)}
2070playlist=this.master.playlists[playlist]}
2071window$1.clearTimeout(this.finalRenditionTimeout);if(isFinalRendition){var delay=playlist.targetDuration/2*1000||5*1000;this.finalRenditionTimeout=window$1.setTimeout(this.media.bind(this,playlist,!1),delay);return}
2072var startingState=this.state;var mediaChange=!this.media_||playlist.uri!==this.media_.uri;if(this.master.playlists[playlist.uri].endList){if(this.request){this.request.onreadystatechange=null;this.request.abort();this.request=null}
2073this.state='HAVE_METADATA';this.media_=playlist;if(mediaChange){this.trigger('mediachanging');this.trigger('mediachange')}
2074return}
2075if(!mediaChange){return}
2076this.state='SWITCHING_MEDIA';if(this.request){if(playlist.resolvedUri===this.request.url){return}
2077this.request.onreadystatechange=null;this.request.abort();this.request=null}
2078if(this.media_){this.trigger('mediachanging')}
2079this.request=this.hls_.xhr({uri:playlist.resolvedUri,withCredentials:this.withCredentials},function(error,req){if(!_this3.request){return}
2080playlist.resolvedUri=resolveManifestRedirect(_this3.handleManifestRedirects,playlist.resolvedUri,req);if(error){return _this3.playlistRequestError(_this3.request,playlist.uri,startingState)}
2081_this3.haveMetadata(req,playlist.uri);if(startingState==='HAVE_MASTER'){_this3.trigger('loadedmetadata')}else{_this3.trigger('mediachange')}})}},{key:'pause',value:function pause(){this.stopRequest();window$1.clearTimeout(this.mediaUpdateTimeout);if(this.state==='HAVE_NOTHING'){this.started=!1}
2082if(this.state==='SWITCHING_MEDIA'){if(this.media_){this.state='HAVE_METADATA'}else{this.state='HAVE_MASTER'}}else if(this.state==='HAVE_CURRENT_METADATA'){this.state='HAVE_METADATA'}}},{key:'load',value:function load(isFinalRendition){var _this4=this;window$1.clearTimeout(this.mediaUpdateTimeout);var media=this.media();if(isFinalRendition){var delay=media?media.targetDuration/2*1000:5*1000;this.mediaUpdateTimeout=window$1.setTimeout(function(){return _this4.load()},delay);return}
2083if(!this.started){this.start();return}
2084if(media&&!media.endList){this.trigger('mediaupdatetimeout')}else{this.trigger('loadedplaylist')}}},{key:'start',value:function start(){var _this5=this;this.started=!0;this.request=this.hls_.xhr({uri:this.srcUrl,withCredentials:this.withCredentials},function(error,req){if(!_this5.request){return}
2085_this5.request=null;if(error){_this5.error={status:req.status,message:'HLS playlist request error at URL: '+_this5.srcUrl+'.',responseText:req.responseText,code:2};if(_this5.state==='HAVE_NOTHING'){_this5.started=!1}
2086return _this5.trigger('error')}
2087var parser=new Parser();_this5.customTagParsers.forEach(function(customParser){return parser.addParser(customParser)});
2087_this5.customTagMappers.forEach(function(mapper){return parser.addTagMapper(mapper)});parser.push(req.responseText);parser.end();_this5.state='HAVE_MASTER';_this5.srcUrl=resolveManifestRedirect(_this5.handleManifestRedirects,_this5.srcUrl,req);parser.manifest.uri=_this5.srcUrl;if(parser.manifest.playlists){_this5.master=parser.manifest;setupMediaPlaylists(_this5.master);resolveMediaGroupUris(_this5.master);_this5.trigger('loadedplaylist');if(!_this5.request){_this5.media(parser.manifest.playlists[0])}
2088return}
2089_this5.master={mediaGroups:{'AUDIO':{},'VIDEO':{},'CLOSED-CAPTIONS':{},'SUBTITLES':{}},uri:window$1.location.href,playlists:[{uri:_this5.srcUrl,id:0,resolvedUri:_this5.srcUrl,attributes:{}}]};_this5.master.playlists[_this5.srcUrl]=_this5.master.playlists[0];_this5.haveMetadata(req,_this5.srcUrl);return _this5.trigger('loadedmetadata')})}}]);return PlaylistLoader}(EventTarget$1);var createTimeRange=videojs$1.createTimeRange;var backwardDuration=function backwardDuration(playlist,endSequence){var result=0;var i=endSequence-playlist.mediaSequence;var segment=playlist.segments[i];if(segment){if(typeof segment.start!=='undefined'){return{result:segment.start,precise:!0}}
2090if(typeof segment.end!=='undefined'){return{result:segment.end-segment.duration,precise:!0}}}
2091while(i--){segment=playlist.segments[i];if(typeof segment.end!=='undefined'){return{result:result+segment.end,precise:!0}}
2092result+=segment.duration;if(typeof segment.start!=='undefined'){return{result:result+segment.start,precise:!0}}}
2093return{result:result,precise:!1}};var forwardDuration=function forwardDuration(playlist,endSequence){var result=0;var segment=void 0;var i=endSequence-playlist.mediaSequence;for(;i<playlist.segments.length;i++){segment=playlist.segments[i];if(typeof segment.start!=='undefined'){return{result:segment.start-result,precise:!0}}
2094result+=segment.duration;if(typeof segment.end!=='undefined'){return{result:segment.end-result,precise:!0}}}
2095return{result:-1,precise:!1}};var intervalDuration=function intervalDuration(playlist,endSequence,expired){var backward=void 0;var forward=void 0;if(typeof endSequence==='undefined'){endSequence=playlist.mediaSequence+playlist.segments.length}
2096if(endSequence<playlist.mediaSequence){return 0}
2097backward=backwardDuration(playlist,endSequence);if(backward.precise){return backward.result}
2098forward=forwardDuration(playlist,endSequence);if(forward.precise){return forward.result}
2099return backward.result+expired};var duration=function duration(playlist,endSequence,expired){if(!playlist){return 0}
2100if(typeof expired!=='number'){expired=0}
2101if(typeof endSequence==='undefined'){if(playlist.totalDuration){return playlist.totalDuration}
2102if(!playlist.endList){return window$1.Infinity}}
2103return intervalDuration(playlist,endSequence,expired)};var sumDurations=function sumDurations(playlist,startIndex,endIndex){var durations=0;if(startIndex>endIndex){var _ref=[endIndex,startIndex];startIndex=_ref[0];endIndex=_ref[1]}
2104if(startIndex<0){for(var i=startIndex;i<Math.min(0,endIndex);i++){durations+=playlist.targetDuration}
2105startIndex=0}
2106for(var _i=startIndex;_i<endIndex;_i++){durations+=playlist.segments[_i].duration}
2107return durations};var safeLiveIndex=function safeLiveIndex(playlist){if(!playlist.segments.length){return 0}
2108var i=playlist.segments.length-1;var distanceFromEnd=playlist.segments[i].duration||playlist.targetDuration;var safeDistance=distanceFromEnd+playlist.targetDuration*2;while(i--){distanceFromEnd+=playlist.segments[i].duration;if(distanceFromEnd>=safeDistance){break}}
2109return Math.max(0,i)};var playlistEnd=function playlistEnd(playlist,expired,useSafeLiveEnd){if(!playlist||!playlist.segments){return null}
2110if(playlist.endList){return duration(playlist)}
2111if(expired===null){return null}
2112expired=expired||0;var endSequence=useSafeLiveEnd?safeLiveIndex(playlist):playlist.segments.length;return intervalDuration(playlist,playlist.mediaSequence+endSequence,expired)};var seekable=function seekable(playlist,expired){var useSafeLiveEnd=!0;var seekableStart=expired||0;var seekableEnd=playlistEnd(playlist,expired,useSafeLiveEnd);if(seekableEnd===null){return createTimeRange()}
2113return createTimeRange(seekableStart,seekableEnd)};var isWholeNumber=function isWholeNumber(num){return num-Math.floor(num)===0};var roundSignificantDigit=function roundSignificantDigit(increment,num){if(isWholeNumber(num)){return num+increment*0.1}
2114var numDecimalDigits=num.toString().split('.')[1].length;for(var i=1;i<=numDecimalDigits;i++){var scale=Math.pow(10,i);var temp=num*scale;if(isWholeNumber(temp)||i===numDecimalDigits){return(temp+increment)/scale}}};var ceilLeastSignificantDigit=roundSignificantDigit.bind(null,1);var floorLeastSignificantDigit=roundSignificantDigit.bind(null,-1);var getMediaInfoForTime=function getMediaInfoForTime(playlist,currentTime,startIndex,startTime){var i=void 0;var segment=void 0;var numSegments=playlist.segments.length;var time=currentTime-startTime;if(time<0){if(startIndex>0){for(i=startIndex-1;i>=0;i--){segment=playlist.segments[i];time+=floorLeastSignificantDigit(segment.duration);if(time>0){return{mediaIndex:i,startTime:startTime-sumDurations(playlist,startIndex,i)}}}}
2115return{mediaIndex:0,startTime:currentTime}}
2116if(startIndex<0){for(i=startIndex;i<0;i++){time-=playlist.targetDuration;if(time<0){return{mediaIndex:0,startTime:currentTime}}}
2117startIndex=0}
2118for(i=startIndex;i<numSegments;i++){segment=playlist.segments[i];time-=ceilLeastSignificantDigit(segment.duration);if(time<0){return{mediaIndex:i,startTime:startTime+sumDurations(playlist,startIndex,i)}}}
2119return{mediaIndex:numSegments-1,startTime:currentTime}};var isBlacklisted=function isBlacklisted(playlist){return playlist.excludeUntil&&playlist.excludeUntil>Date.now()};var isIncompatible=function isIncompatible(playlist){return playlist.excludeUntil&&playlist.excludeUntil===Infinity};var isEnabled=function isEnabled(playlist){var blacklisted=isBlacklisted(playlist);return!playlist.disabled&&!blacklisted};var isDisabled=function isDisabled(playlist){return playlist.disabled};var isAes=function isAes(media){for(var i=0;i<media.segments.length;i++){if(media.segments[i].key){return!0}}
2120return!1};var isFmp4=function isFmp4(media){for(var i=0;i<media.segments.length;i++){if(media.segments[i].map){return!0}}
2121return!1};var hasAttribute=function hasAttribute(attr,playlist){return playlist.attributes&&playlist.attributes[attr]};var estimateSegmentRequestTime=function estimateSegmentRequestTime(segmentDuration,bandwidth,playlist){var bytesReceived=arguments.length>3&&arguments[3]!==undefined?arguments[3]:0;
2121if(!hasAttribute('BANDWIDTH',playlist)){return NaN}
2122var size=segmentDuration*playlist.attributes.BANDWIDTH;return(size-bytesReceived*8)/bandwidth};var isLowestEnabledRendition=function isLowestEnabledRendition(master,media){if(master.playlists.length===1){return!0}
2123var currentBandwidth=media.attributes.BANDWIDTH||Number.MAX_VALUE;return master.playlists.filter(function(playlist){if(!isEnabled(playlist)){return!1}
2124return(playlist.attributes.BANDWIDTH||0)<currentBandwidth}).length===0};var Playlist={duration:duration,seekable:seekable,safeLiveIndex:safeLiveIndex,getMediaInfoForTime:getMediaInfoForTime,isEnabled:isEnabled,isDisabled:isDisabled,isBlacklisted:isBlacklisted,isIncompatible:isIncompatible,playlistEnd:playlistEnd,isAes:isAes,isFmp4:isFmp4,hasAttribute:hasAttribute,estimateSegmentRequestTime:estimateSegmentRequestTime,isLowestEnabledRendition:isLowestEnabledRendition};var videojsXHR=videojs$1.xhr,mergeOptions$1$1=videojs$1.mergeOptions;var xhrFactory=function xhrFactory(){var xhr=function XhrFunction(options,callback){options=mergeOptions$1$1({timeout:45e3},options);var beforeRequest=XhrFunction.beforeRequest||videojs$1.Hls.xhr.beforeRequest;if(beforeRequest&&typeof beforeRequest==='function'){var newOptions=beforeRequest(options);if(newOptions){options=newOptions}}
2125var request=videojsXHR(options,function(error,response){var reqResponse=request.response;if(!error&&reqResponse){request.responseTime=Date.now();request.roundTripTime=request.responseTime-request.requestTime;request.bytesReceived=reqResponse.byteLength||reqResponse.length;if(!request.bandwidth){request.bandwidth=Math.floor(request.bytesReceived/request.roundTripTime*8*1000)}}
2126if(response.headers){request.responseHeaders=response.headers}
2127if(error&&error.code==='ETIMEDOUT'){request.timedout=!0}
2128if(!error&&!request.aborted&&response.statusCode!==200&&response.statusCode!==206&&response.statusCode!==0){error=new Error('XHR Failed with a response of: '+(request&&(reqResponse||request.responseText)))}
2129callback(error,request)});var originalAbort=request.abort;request.abort=function(){request.aborted=!0;return originalAbort.apply(request,arguments)};request.uri=options.uri;request.requestTime=Date.now();return request};return xhr};var byterangeStr=function byterangeStr(byterange){var byterangeStart=void 0;var byterangeEnd=void 0;byterangeEnd=byterange.offset+byterange.length-1;byterangeStart=byterange.offset;return'bytes='+byterangeStart+'-'+byterangeEnd};var segmentXhrHeaders=function segmentXhrHeaders(segment){var headers={};if(segment.byterange){headers.Range=byterangeStr(segment.byterange)}
2130return headers};var textRange=function textRange(range,i){return range.start(i)+'-'+range.end(i)};var formatHexString=function formatHexString(e,i){var value=e.toString(16);return'00'.substring(0,2-value.length)+value+(i%2?' ':'')};var formatAsciiString=function formatAsciiString(e){if(e>=0x20&&e<0x7e){return String.fromCharCode(e)}
2131return'.'};var createTransferableMessage=function createTransferableMessage(message){var transferable={};Object.keys(message).forEach(function(key){var value=message[key];if(ArrayBuffer.isView(value)){transferable[key]={bytes:value.buffer,byteOffset:value.byteOffset,byteLength:value.byteLength}}else{transferable[key]=value}});return transferable};var initSegmentId=function initSegmentId(initSegment){var byterange=initSegment.byterange||{length:Infinity,offset:0};return[byterange.length,byterange.offset,initSegment.resolvedUri].join(',')};var segmentKeyId=function segmentKeyId(key){return key.resolvedUri};var hexDump=function hexDump(data){var bytes=Array.prototype.slice.call(data);var step=16;var result='';var hex=void 0;var ascii=void 0;for(var j=0;j<bytes.length/step;j++){hex=bytes.slice(j*step,j*step+step).map(formatHexString).join('');ascii=bytes.slice(j*step,j*step+step).map(formatAsciiString).join('');result+=hex+' '+ascii+'\n'}
2132return result};var tagDump=function tagDump(_ref){var bytes=_ref.bytes;return hexDump(bytes)};var textRanges=function textRanges(ranges){var result='';var i=void 0;for(i=0;i<ranges.length;i++){result+=textRange(ranges,i)+' '}
2133return result};var utils$1=Object.freeze({createTransferableMessage:createTransferableMessage,initSegmentId:initSegmentId,segmentKeyId:segmentKeyId,hexDump:hexDump,tagDump:tagDump,textRanges:textRanges});var SEGMENT_END_FUDGE_PERCENT=0.25;var playerTimeToProgramTime=function playerTimeToProgramTime(playerTime,segment){if(!segment.dateTimeObject){return null}
2134var transmuxerPrependedSeconds=segment.videoTimingInfo.transmuxerPrependedSeconds;var transmuxedStart=segment.videoTimingInfo.transmuxedPresentationStart;var startOfSegment=transmuxedStart+transmuxerPrependedSeconds;var offsetFromSegmentStart=playerTime-startOfSegment;return new Date(segment.dateTimeObject.getTime()+offsetFromSegmentStart*1000)};var originalSegmentVideoDuration=function originalSegmentVideoDuration(videoTimingInfo){return videoTimingInfo.transmuxedPresentationEnd-videoTimingInfo.transmuxedPresentationStart-videoTimingInfo.transmuxerPrependedSeconds};var findSegmentForProgramTime=function findSegmentForProgramTime(programTime,playlist){var dateTimeObject=void 0;
2134try{dateTimeObject=new Date(programTime)}catch(e){return null}
2135if(!playlist||!playlist.segments||playlist.segments.length===0){return null}
2136var segment=playlist.segments[0];if(dateTimeObject<segment.dateTimeObject){return null}
2137for(var i=0;i<playlist.segments.length-1;i++){segment=playlist.segments[i];var nextSegmentStart=playlist.segments[i+1].dateTimeObject;if(dateTimeObject<nextSegmentStart){break}}
2138var lastSegment=playlist.segments[playlist.segments.length-1];var lastSegmentStart=lastSegment.dateTimeObject;var lastSegmentDuration=lastSegment.videoTimingInfo?originalSegmentVideoDuration(lastSegment.videoTimingInfo):lastSegment.duration+lastSegment.duration*SEGMENT_END_FUDGE_PERCENT;var lastSegmentEnd=new Date(lastSegmentStart.getTime()+lastSegmentDuration*1000);if(dateTimeObject>lastSegmentEnd){return null}
2139if(dateTimeObject>lastSegmentStart){segment=lastSegment}
2140return{segment:segment,estimatedStart:segment.videoTimingInfo?segment.videoTimingInfo.transmuxedPresentationStart:Playlist.duration(playlist,playlist.mediaSequence+playlist.segments.indexOf(segment)),type:segment.videoTimingInfo?'accurate':'estimate'}};var findSegmentForPlayerTime=function findSegmentForPlayerTime(time,playlist){if(!playlist||!playlist.segments||playlist.segments.length===0){return null}
2141var segmentEnd=0;var segment=void 0;for(var i=0;i<playlist.segments.length;i++){segment=playlist.segments[i];segmentEnd=segment.videoTimingInfo?segment.videoTimingInfo.transmuxedPresentationEnd:segmentEnd+segment.duration;if(time<=segmentEnd){break}}
2142var lastSegment=playlist.segments[playlist.segments.length-1];if(lastSegment.videoTimingInfo&&lastSegment.videoTimingInfo.transmuxedPresentationEnd<time){return null}
2143if(time>segmentEnd){if(time>segmentEnd+lastSegment.duration*SEGMENT_END_FUDGE_PERCENT){return null}
2144segment=lastSegment}
2145return{segment:segment,estimatedStart:segment.videoTimingInfo?segment.videoTimingInfo.transmuxedPresentationStart:segmentEnd-segment.duration,type:segment.videoTimingInfo?'accurate':'estimate'}};var getOffsetFromTimestamp=function getOffsetFromTimestamp(comparisonTimeStamp,programTime){var segmentDateTime=void 0;var programDateTime=void 0;try{segmentDateTime=new Date(comparisonTimeStamp);programDateTime=new Date(programTime)}catch(e){}
2146var segmentTimeEpoch=segmentDateTime.getTime();var programTimeEpoch=programDateTime.getTime();return(programTimeEpoch-segmentTimeEpoch)/1000};var verifyProgramDateTimeTags=function verifyProgramDateTimeTags(playlist){if(!playlist.segments||playlist.segments.length===0){return!1}
2147for(var i=0;i<playlist.segments.length;i++){var segment=playlist.segments[i];if(!segment.dateTimeObject){return!1}}
2148return!0};var getProgramTime=function getProgramTime(_ref){var playlist=_ref.playlist,_ref$time=_ref.time,time=_ref$time===undefined?undefined:_ref$time,callback=_ref.callback;if(!callback){throw new Error('getProgramTime: callback must be provided')}
2149if(!playlist||time===undefined){return callback({message:'getProgramTime: playlist and time must be provided'})}
2150var matchedSegment=findSegmentForPlayerTime(time,playlist);
2150if(!matchedSegment){return callback({message:'valid programTime was not found'})}
2151if(matchedSegment.type==='estimate'){return callback({message:'Accurate programTime could not be determined.'+' Please seek to e.seekTime and try again',seekTime:matchedSegment.estimatedStart})}
2152var programTimeObject={mediaSeconds:time};var programTime=playerTimeToProgramTime(time,matchedSegment.segment);if(programTime){programTimeObject.programDateTime=programTime.toISOString()}
2153return callback(null,programTimeObject)};var seekToProgramTime=function seekToProgramTime(_ref2){var programTime=_ref2.programTime,playlist=_ref2.playlist,_ref2$retryCount=_ref2.retryCount,retryCount=_ref2$retryCount===undefined?2:_ref2$retryCount,seekTo=_ref2.seekTo,_ref2$pauseAfterSeek=_ref2.pauseAfterSeek,pauseAfterSeek=_ref2$pauseAfterSeek===undefined?!0:_ref2$pauseAfterSeek,tech=_ref2.tech,callback=_ref2.callback;if(!callback){throw new Error('seekToProgramTime: callback must be provided')}
2154if(typeof programTime==='undefined'||!playlist||!seekTo){return callback({message:'seekToProgramTime: programTime, seekTo and playlist must be provided'})}
2155if(!playlist.endList&&!tech.hasStarted_){return callback({message:'player must be playing a live stream to start buffering'})}
2156if(!verifyProgramDateTimeTags(playlist)){return callback({message:'programDateTime tags must be provided in the manifest '+playlist.resolvedUri})}
2157var matchedSegment=findSegmentForProgramTime(programTime,playlist);
2157if(!matchedSegment){return callback({message:programTime+' was not found in the stream'})}
2158var segment=matchedSegment.segment;var mediaOffset=getOffsetFromTimestamp(segment.dateTimeObject,programTime);if(matchedSegment.type==='estimate'){if(retryCount===0){return callback({message:programTime+' is not buffered yet. Try again'})}
2159seekTo(matchedSegment.estimatedStart+mediaOffset);tech.one('seeked',function(){seekToProgramTime({programTime:programTime,playlist:playlist,retryCount:retryCount-1,seekTo:seekTo,pauseAfterSeek:pauseAfterSeek,tech:tech,callback:callback})});return}
2160var seekToTime=segment.start+mediaOffset;var seekedCallback=function seekedCallback(){return callback(null,tech.currentTime())};tech.one('seeked',seekedCallback);if(pauseAfterSeek){tech.pause()}
2161seekTo(seekToTime)};var TIME_FUDGE_FACTOR=1/30;var SAFE_TIME_DELTA=TIME_FUDGE_FACTOR*3;var filterRanges=function filterRanges(timeRanges,predicate){var results=[];var i=void 0;if(timeRanges&&timeRanges.length){for(i=0;i<timeRanges.length;i++){if(predicate(timeRanges.start(i),timeRanges.end(i))){results.push([timeRanges.start(i),timeRanges.end(i)])}}}
2162return videojs$1.createTimeRanges(results)};var findRange=function findRange(buffered,time){return filterRanges(buffered,function(start,end){return start-SAFE_TIME_DELTA<=time&&end+SAFE_TIME_DELTA>=time})};var findNextRange=function findNextRange(timeRanges,time){return filterRanges(timeRanges,function(start){return start-TIME_FUDGE_FACTOR>=time})};var findGaps=function findGaps(buffered){if(buffered.length<2){return videojs$1.createTimeRanges()}
2163var ranges=[];for(var i=1;i<buffered.length;i++){var start=buffered.end(i-1);var end=buffered.start(i);ranges.push([start,end])}
2164return videojs$1.createTimeRanges(ranges)};var printableRange=function printableRange(range){var strArr=[];if(!range||!range.length){return''}
2165for(var i=0;i<range.length;i++){strArr.push(range.start(i)+' => '+range.end(i))}
2166return strArr.join(', ')};var timeUntilRebuffer=function timeUntilRebuffer(buffered,currentTime){var playbackRate=arguments.length>2&&arguments[2]!==undefined?arguments[2]:1;var bufferedEnd=buffered.length?buffered.end(buffered.length-1):0;return(bufferedEnd-currentTime)/playbackRate};var timeRangesToArray=function timeRangesToArray(timeRanges){var timeRangesList=[];for(var i=0;i<timeRanges.length;i++){timeRangesList.push({start:timeRanges.start(i),end:timeRanges.end(i)})}
2167return timeRangesList};var createTextTracksIfNecessary=function createTextTracksIfNecessary(sourceBuffer,mediaSource,segment){var player=mediaSource.player_;if(segment.captions&&segment.captions.length){if(!sourceBuffer.inbandTextTracks_){sourceBuffer.inbandTextTracks_={}}
2168for(var trackId in segment.captionStreams){if(!sourceBuffer.inbandTextTracks_[trackId]){player.tech_.trigger({type:'usage',name:'hls-608'});var track=player.textTracks().getTrackById(trackId);if(track){sourceBuffer.inbandTextTracks_[trackId]=track}else{sourceBuffer.inbandTextTracks_[trackId]=player.addRemoteTextTrack({kind:'captions',id:trackId,label:trackId},!1).track}}}}
2169if(segment.metadata&&segment.metadata.length&&!sourceBuffer.metadataTrack_){sourceBuffer.metadataTrack_=player.addRemoteTextTrack({kind:'metadata',label:'Timed Metadata'},!1).track;sourceBuffer.metadataTrack_.inBandMetadataTrackDispatchType=segment.metadata.dispatchType}};var removeCuesFromTrack=function removeCuesFromTrack(start,end,track){var i=void 0;var cue=void 0;if(!track){return}
2170if(!track.cues){return}
2171i=track.cues.length;while(i--){cue=track.cues[i];if(cue.startTime<=end&&cue.endTime>=start){track.removeCue(cue)}}};var deprecateOldCue=function deprecateOldCue(cue){Object.defineProperties(cue.frame,{id:{get:function get(){videojs$1.log.warn('cue.frame.id is deprecated. Use cue.value.key instead.');return cue.value.key}},value:{get:function get(){videojs$1.log.warn('cue.frame.value is deprecated. Use cue.value.data instead.');return cue.value.data}},privateData:{get:function get(){videojs$1.log.warn('cue.frame.privateData is deprecated. Use cue.value.data instead.');return cue.value.data}}})};var durationOfVideo=function durationOfVideo(duration){var dur=void 0;if(isNaN(duration)||Math.abs(duration)===Infinity){dur=Number.MAX_VALUE}else{dur=duration}
2172return dur};var addTextTrackData=function addTextTrackData(sourceHandler,captionArray,metadataArray){var Cue=window$1.WebKitDataCue||window$1.VTTCue;if(captionArray){captionArray.forEach(function(caption){var track=caption.stream;this.inbandTextTracks_[track].addCue(new Cue(caption.startTime+this.timestampOffset,caption.endTime+this.timestampOffset,caption.text))},sourceHandler)}
2173if(metadataArray){var videoDuration=durationOfVideo(sourceHandler.mediaSource_.duration);metadataArray.forEach(function(metadata){var time=metadata.cueTime+this.timestampOffset;if(typeof time!=='number'||window$1.isNaN(time)||time<0||!(time<Infinity)){return}
2174metadata.frames.forEach(function(frame){var cue=new Cue(time,time,frame.value||frame.url||frame.data||'');cue.frame=frame;cue.value=frame;deprecateOldCue(cue);this.metadataTrack_.addCue(cue)},this)},sourceHandler);if(sourceHandler.metadataTrack_&&sourceHandler.metadataTrack_.cues&&sourceHandler.metadataTrack_.cues.length){var cues=sourceHandler.metadataTrack_.cues;var cuesArray=[];for(var i=0;i<cues.length;i++){if(cues[i]){cuesArray.push(cues[i])}}
2175var cuesGroupedByStartTime=cuesArray.reduce(function(obj,cue){var timeSlot=obj[cue.startTime]||[];timeSlot.push(cue);obj[cue.startTime]=timeSlot;return obj},{});var sortedStartTimes=Object.keys(cuesGroupedByStartTime).sort(function(a,b){return Number(a)-Number(b)});sortedStartTimes.forEach(function(startTime,idx){var cueGroup=cuesGroupedByStartTime[startTime];var nextTime=Number(sortedStartTimes[idx+1])||videoDuration;cueGroup.forEach(function(cue){cue.endTime=nextTime})})}}};var win=typeof window!=='undefined'?window:{},TARGET=typeof Symbol==='undefined'?'__target':Symbol(),SCRIPT_TYPE='application/javascript',BlobBuilder=win.BlobBuilder||win.WebKitBlobBuilder||win.MozBlobBuilder||win.MSBlobBuilder,URL=win.URL||win.webkitURL||URL&&URL.msURL,Worker=win.Worker;function shimWorker(filename,fn){return function ShimWorker(forceFallback){var o=this;if(!fn){return new Worker(filename)}else if(Worker&&!forceFallback){var source=fn.toString().replace(/^function.+?{/,'').slice(0,-1),objURL=createSourceObject(source);this[TARGET]=new Worker(objURL);wrapTerminate(this[TARGET],objURL);return this[TARGET]}else{var selfShim={postMessage:function postMessage(m){if(o.onmessage){setTimeout(function(){o.onmessage({data:m,target:selfShim})})}}};fn.call(selfShim);this.postMessage=function(m){setTimeout(function(){selfShim.onmessage({data:m,target:o})})};this.isThisThread=!0}}}
2176if(Worker){var testWorker,objURL=createSourceObject('self.onmessage = function () {}'),testArray=new Uint8Array(1);try{testWorker=new Worker(objURL);testWorker.postMessage(testArray,[testArray.buffer])}catch(e){Worker=null}finally{URL.revokeObjectURL(objURL);if(testWorker){testWorker.terminate()}}}
2177function createSourceObject(str){try{return URL.createObjectURL(new Blob([str],{type:SCRIPT_TYPE}))}catch(e){var blob=new BlobBuilder();blob.append(str);return URL.createObjectURL(blob.getBlob(type))}}
2178function wrapTerminate(worker,objURL){if(!worker||!objURL)return;var term=worker.terminate;worker.objURL=objURL;worker.terminate=function(){if(worker.objURL)URL.revokeObjectURL(worker.objURL);term.call(worker)}}
2179var TransmuxWorker=new shimWorker("./transmuxer-worker.worker.js",function(window,document$$1){var self=this;var transmuxerWorker=function(){var Stream=function Stream(){this.init=function(){var listeners={};this.on=function(type,listener){if(!listeners[type]){listeners[type]=[]}
2180listeners[type]=listeners[type].concat(listener)};this.off=function(type,listener){var index;if(!listeners[type]){return!1}
2181index=listeners[type].indexOf(listener);listeners[type]=listeners[type].slice();listeners[type].splice(index,1);return index>-1};this.trigger=function(type){var callbacks,i,length,args;callbacks=listeners[type];if(!callbacks){return}
2182if(arguments.length===2){length=callbacks.length;for(i=0;i<length;++i){callbacks[i].call(this,arguments[1])}}else{args=[];i=arguments.length;for(i=1;i<arguments.length;++i){args.push(arguments[i])}
2183length=callbacks.length;for(i=0;i<length;++i){callbacks[i].apply(this,args)}}};this.dispose=function(){listeners={}}}};Stream.prototype.pipe=function(destination){this.on('data',function(data){destination.push(data)});this.on('done',function(flushSource){destination.flush(flushSource)});this.on('partialdone',function(flushSource){destination.partialFlush(flushSource)});this.on('endedtimeline',function(flushSource){destination.endTimeline(flushSource)});this.on('reset',function(flushSource){destination.reset(flushSource)});return destination};Stream.prototype.push=function(data){this.trigger('data',data)};Stream.prototype.flush=function(flushSource){this.trigger('done',flushSource)};Stream.prototype.partialFlush=function(flushSource){this.trigger('partialdone',flushSource)};Stream.prototype.endTimeline=function(flushSource){this.trigger('endedtimeline',flushSource)};Stream.prototype.reset=function(flushSource){this.trigger('reset',flushSource)};var stream=Stream;var UINT32_MAX=Math.pow(2,32)-1;var box,dinf,esds,ftyp,mdat,mfhd,minf,moof,moov,mvex,mvhd,trak,tkhd,mdia,mdhd,hdlr,sdtp,stbl,stsd,traf,trex,trun,types,MAJOR_BRAND,MINOR_VERSION,AVC1_BRAND,VIDEO_HDLR,AUDIO_HDLR,HDLR_TYPES,VMHD,SMHD,DREF,STCO,STSC,STSZ,STTS;(function(){var i;types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],pasp:[],sdtp:[],smhd:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],styp:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[]};if(typeof Uint8Array==='undefined'){return}
2184for(i in types){if(types.hasOwnProperty(i)){types[i]=[i.charCodeAt(0),i.charCodeAt(1),i.charCodeAt(2),i.charCodeAt(3)]}}
2185MAJOR_BRAND=new Uint8Array(['i'.charCodeAt(0),'s'.charCodeAt(0),'o'.charCodeAt(0),'m'.charCodeAt(0)]);AVC1_BRAND=new Uint8Array(['a'.charCodeAt(0),'v'.charCodeAt(0),'c'.charCodeAt(0),'1'.charCodeAt(0)]);MINOR_VERSION=new Uint8Array([0,0,0,1]);VIDEO_HDLR=new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0x69,0x64,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x69,0x64,0x65,0x6f,0x48,0x61,0x6e,0x64,0x6c,0x65,0x72,0x00]);AUDIO_HDLR=new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x6f,0x75,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x53,0x6f,0x75,0x6e,0x64,0x48,0x61,0x6e,0x64,0x6c,0x65,0x72,0x00]);HDLR_TYPES={video:VIDEO_HDLR,audio:AUDIO_HDLR};DREF=new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0c,0x75,0x72,0x6c,0x20,0x00,0x00,0x00,0x01]);SMHD=new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]);STCO=new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]);STSC=STCO;STSZ=new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]);STTS=STCO;VMHD=new Uint8Array([0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])})();box=function box(type){var payload=[],size=0,i,result,view;for(i=1;i<arguments.length;i++){payload.push(arguments[i])}
2186i=payload.length;while(i--){size+=payload[i].byteLength}
2187result=new Uint8Array(size+8);view=new DataView(result.buffer,result.byteOffset,result.byteLength);view.setUint32(0,result.byteLength);result.set(type,4);for(i=0,size=8;i<payload.length;i++){result.set(payload[i],size);size+=payload[i].byteLength}
2188return result};dinf=function dinf(){return box(types.dinf,box(types.dref,DREF))};esds=function esds(track){return box(types.esds,new Uint8Array([0x00,0x00,0x00,0x00,0x03,0x19,0x00,0x00,0x00,0x04,0x11,0x40,0x15,0x00,0x06,0x00,0x00,0x00,0xda,0xc0,0x00,0x00,0xda,0xc0,0x05,0x02,track.audioobjecttype<<3|track.samplingfrequencyindex>>>1,track.samplingfrequencyindex<<7|track.channelcount<<3,0x06,0x01,0x02]))};ftyp=function ftyp(){return box(types.ftyp,MAJOR_BRAND,MINOR_VERSION,MAJOR_BRAND,AVC1_BRAND)};hdlr=function hdlr(type){return box(types.hdlr,HDLR_TYPES[type])};mdat=function mdat(data){return box(types.mdat,data)};mdhd=function mdhd(track){var result=new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x01,0x5f,0x90,track.duration>>>24&0xFF,track.duration>>>16&0xFF,track.duration>>>8&0xFF,track.duration&0xFF,0x55,0xc4,0x00,0x00]);if(track.samplerate){result[12]=track.samplerate>>>24&0xFF;result[13]=track.samplerate>>>16&0xFF;result[14]=track.samplerate>>>8&0xFF;result[15]=track.samplerate&0xFF}
2189return box(types.mdhd,result)};mdia=function mdia(track){return box(types.mdia,mdhd(track),hdlr(track.type),minf(track))};mfhd=function mfhd(sequenceNumber){return box(types.mfhd,new Uint8Array([0x00,0x00,0x00,0x00,(sequenceNumber&0xFF000000)>>24,(sequenceNumber&0xFF0000)>>16,(sequenceNumber&0xFF00)>>8,sequenceNumber&0xFF]))};minf=function minf(track){return box(types.minf,track.type==='video'?box(types.vmhd,VMHD):box(types.smhd,SMHD),dinf(),stbl(track))};moof=function moof(sequenceNumber,tracks){var trackFragments=[],i=tracks.length;while(i--){trackFragments[i]=traf(tracks[i])}
2190return box.apply(null,[types.moof,mfhd(sequenceNumber)].concat(trackFragments))};moov=function moov(tracks){var i=tracks.length,boxes=[];while(i--){boxes[i]=trak(tracks[i])}
2191return box.apply(null,[types.moov,mvhd(0xffffffff)].concat(boxes).concat(mvex(tracks)))};mvex=function mvex(tracks){var i=tracks.length,boxes=[];while(i--){boxes[i]=trex(tracks[i])}
2192return box.apply(null,[types.mvex].concat(boxes))};mvhd=function mvhd(duration){var bytes=new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x01,0x5f,0x90,(duration&0xFF000000)>>24,(duration&0xFF0000)>>16,(duration&0xFF00)>>8,duration&0xFF,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff]);return box(types.mvhd,bytes)};sdtp=function sdtp(track){var samples=track.samples||[],bytes=new Uint8Array(4+samples.length),flags,i;for(i=0;i<samples.length;i++){flags=samples[i].flags;bytes[i+4]=flags.dependsOn<<4|flags.isDependedOn<<2|flags.hasRedundancy}
2193return box(types.sdtp,bytes)};stbl=function stbl(track){return box(types.stbl,stsd(track),box(types.stts,STTS),box(types.stsc,STSC),box(types.stsz,STSZ),box(types.stco,STCO))};(function(){var videoSample,audioSample;stsd=function stsd(track){return box(types.stsd,new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01]
2193),track.type==='video'?videoSample(track):audioSample(track))};videoSample=function videoSample(track){var sps=track.sps||[],pps=track.pps||[],sequenceParameterSets=[],pictureParameterSets=[],i,avc1Box;for(i=0;i<sps.length;i++){sequenceParameterSets.push((sps[i].byteLength&0xFF00)>>>8);sequenceParameterSets.push(sps[i].byteLength&0xFF);sequenceParameterSets=sequenceParameterSets.concat(Array.prototype.slice.call(sps[i]))}
2194for(i=0;i<pps.length;i++){pictureParameterSets.push((pps[i].byteLength&0xFF00)>>>8);pictureParameterSets.push(pps[i].byteLength&0xFF);pictureParameterSets=pictureParameterSets.concat(Array.prototype.slice.call(pps[i]))}
2195avc1Box=[types.avc1,new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,(track.width&0xff00)>>8,track.width&0xff,(track.height&0xff00)>>8,track.height&0xff,0x00,0x48,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x13,0x76,0x69,0x64,0x65,0x6f,0x6a,0x73,0x2d,0x63,0x6f,0x6e,0x74,0x72,0x69,0x62,0x2d,0x68,0x6c,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x11,0x11]),box(types.avcC,new Uint8Array([0x01,track.profileIdc,track.profileCompatibility,track.levelIdc,0xff].concat([sps.length],sequenceParameterSets,[pps.length],pictureParameterSets))),box(types.btrt,new Uint8Array([0x00,0x1c,0x9c,0x80,0x00,0x2d,0xc6,0xc0,0x00,0x2d,0xc6,0xc0]))];if(track.sarRatio){var hSpacing=track.sarRatio[0],vSpacing=track.sarRatio[1];avc1Box.push(box(types.pasp,new Uint8Array([(hSpacing&0xFF000000)>>24,(hSpacing&0xFF0000)>>16,(hSpacing&0xFF00)>>8,hSpacing&0xFF,(vSpacing&0xFF000000)>>24,(vSpacing&0xFF0000)>>16,(vSpacing&0xFF00)>>8,vSpacing&0xFF])))}
2196return box.apply(null,avc1Box)};audioSample=function audioSample(track){return box(types.mp4a,new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,(track.channelcount&0xff00)>>8,track.channelcount&0xff,(track.samplesize&0xff00)>>8,track.samplesize&0xff,0x00,0x00,0x00,0x00,(track.samplerate&0xff00)>>8,track.samplerate&0xff,0x00,0x00]),esds(track))}})();tkhd=function tkhd(track){var result=new Uint8Array([0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,(track.id&0xFF000000)>>24,(track.id&0xFF0000)>>16,(track.id&0xFF00)>>8,track.id&0xFF,0x00,0x00,0x00,0x00,(track.duration&0xFF000000)>>24,(track.duration&0xFF0000)>>16,(track.duration&0xFF00)>>8,track.duration&0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,(track.width&0xFF00)>>8,track.width&0xFF,0x00,0x00,(track.height&0xFF00)>>8,track.height&0xFF,0x00,0x00]);return box(types.tkhd,result)};traf=function traf(track){var trackFragmentHeader,trackFragmentDecodeTime,trackFragmentRun,sampleDependencyTable,dataOffset,upperWordBaseMediaDecodeTime,lowerWordBaseMediaDecodeTime;trackFragmentHeader=box(types.tfhd,new Uint8Array([0x00,0x00,0x00,0x3a,(track.id&0xFF000000)>>24,(track.id&0xFF0000)>>16,(track.id&0xFF00)>>8,track.id&0xFF,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]));upperWordBaseMediaDecodeTime=Math.floor(track.baseMediaDecodeTime/(UINT32_MAX+1));lowerWordBaseMediaDecodeTime=Math.floor(track.baseMediaDecodeTime%(UINT32_MAX+1));trackFragmentDecodeTime=box(types.tfdt,new Uint8Array([0x01,0x00,0x00,0x00,upperWordBaseMediaDecodeTime>>>24&0xFF,upperWordBaseMediaDecodeTime>>>16&0xFF,upperWordBaseMediaDecodeTime>>>8&0xFF,upperWordBaseMediaDecodeTime&0xFF,lowerWordBaseMediaDecodeTime>>>24&0xFF,lowerWordBaseMediaDecodeTime>>>16&0xFF,lowerWordBaseMediaDecodeTime>>>8&0xFF,lowerWordBaseMediaDecodeTime&0xFF]));dataOffset=32+20+8+16+8+8;if(track.type==='audio'){trackFragmentRun=trun(track,dataOffset);return box(types.traf,trackFragmentHeader,trackFragmentDecodeTime,trackFragmentRun)}
2197sampleDependencyTable=sdtp(track);trackFragmentRun=trun(track,sampleDependencyTable.length+dataOffset);return box(types.traf,trackFragmentHeader,trackFragmentDecodeTime,trackFragmentRun,sampleDependencyTable)};trak=function trak(track){track.duration=track.duration||0xffffffff;return box(types.trak,tkhd(track),mdia(track))};trex=function trex(track){var result=new Uint8Array([0x00,0x00,0x00,0x00,(track.id&0xFF000000)>>24,(track.id&0xFF0000)>>16,(track.id&0xFF00)>>8,track.id&0xFF,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01]
2197);if(track.type!=='video'){result[result.length-1]=0x00}
2198return box(types.trex,result)};(function(){var audioTrun,videoTrun,trunHeader;trunHeader=function trunHeader(samples,offset){var durationPresent=0,sizePresent=0,flagsPresent=0,compositionTimeOffset=0;if(samples.length){if(samples[0].duration!==undefined){durationPresent=0x1}
2199if(samples[0].size!==undefined){sizePresent=0x2}
2200if(samples[0].flags!==undefined){flagsPresent=0x4}
2201if(samples[0].compositionTimeOffset!==undefined){compositionTimeOffset=0x8}}
2202return[0x00,0x00,durationPresent|sizePresent|flagsPresent|compositionTimeOffset,0x01,(samples.length&0xFF000000)>>>24,(samples.length&0xFF0000)>>>16,(samples.length&0xFF00)>>>8,samples.length&0xFF,(offset&0xFF000000)>>>24,(offset&0xFF0000)>>>16,(offset&0xFF00)>>>8,offset&0xFF]};videoTrun=function videoTrun(track,offset){var bytes,samples,sample,i;samples=track.samples||[];offset+=8+12+16*samples.length;bytes=trunHeader(samples,offset);for(i=0;i<samples.length;i++){sample=samples[i];bytes=bytes.concat([(sample.duration&0xFF000000)>>>24,(sample.duration&0xFF0000)>>>16,(sample.duration&0xFF00)>>>8,sample.duration&0xFF,(sample.size&0xFF000000)>>>24,(sample.size&0xFF0000)>>>16,(sample.size&0xFF00)>>>8,sample.size&0xFF,sample.flags.isLeading<<2|sample.flags.dependsOn,sample.flags.isDependedOn<<6|sample.flags.hasRedundancy<<4|sample.flags.paddingValue<<1|sample.flags.isNonSyncSample,sample.flags.degradationPriority&0xF0<<8,sample.flags.degradationPriority&0x0F,(sample.compositionTimeOffset&0xFF000000)>>>24,(sample.compositionTimeOffset&0xFF0000)>>>16,(sample.compositionTimeOffset&0xFF00)>>>8,sample.compositionTimeOffset&0xFF])}
2203return box(types.trun,new Uint8Array(bytes))};audioTrun=function audioTrun(track,offset){var bytes,samples,sample,i;samples=track.samples||[];offset+=8+12+8*samples.length;bytes=trunHeader(samples,offset);for(i=0;i<samples.length;i++){sample=samples[i];bytes=bytes.concat([(sample.duration&0xFF000000)>>>24,(sample.duration&0xFF0000)>>>16,(sample.duration&0xFF00)>>>8,sample.duration&0xFF,(sample.size&0xFF000000)>>>24,(sample.size&0xFF0000)>>>16,(sample.size&0xFF00)>>>8,sample.size&0xFF])}
2204return box(types.trun,new Uint8Array(bytes))};trun=function trun(track,offset){if(track.type==='audio'){return audioTrun(track,offset)}
2205return videoTrun(track,offset)}})();var mp4Generator={ftyp:ftyp,mdat:mdat,moof:moof,moov:moov,initSegment:function initSegment(tracks){var fileType=ftyp(),movie=moov(tracks),result;result=new Uint8Array(fileType.byteLength+movie.byteLength);result.set(fileType);result.set(movie,fileType.byteLength);return result}};var groupNalsIntoFrames=function groupNalsIntoFrames(nalUnits){var i,currentNal,currentFrame=[],frames=[];frames.byteLength=0;frames.nalCount=0;frames.duration=0;currentFrame.byteLength=0;for(i=0;i<nalUnits.length;i++){currentNal=nalUnits[i];if(currentNal.nalUnitType==='access_unit_delimiter_rbsp'){if(currentFrame.length){currentFrame.duration=currentNal.dts-currentFrame.dts;frames.byteLength+=currentFrame.byteLength;frames.nalCount+=currentFrame.length;frames.duration+=currentFrame.duration;frames.push(currentFrame)}
2206currentFrame=[currentNal];currentFrame.byteLength=currentNal.data.byteLength;currentFrame.pts=currentNal.pts;currentFrame.dts=currentNal.dts}else{if(currentNal.nalUnitType==='slice_layer_without_partitioning_rbsp_idr'){currentFrame.keyFrame=!0}
2207currentFrame.duration=currentNal.dts-currentFrame.dts;currentFrame.byteLength+=currentNal.data.byteLength;currentFrame.push(currentNal)}}
2208if(frames.length&&(!currentFrame.duration||currentFrame.duration<=0)){currentFrame.duration=frames[frames.length-1].duration}
2209frames.byteLength+=currentFrame.byteLength;frames.nalCount+=currentFrame.length;frames.duration+=currentFrame.duration;frames.push(currentFrame);return frames};var groupFramesIntoGops=function groupFramesIntoGops(frames){var i,currentFrame,currentGop=[],gops=[];currentGop.byteLength=0;currentGop.nalCount=0;currentGop.duration=0;currentGop.pts=frames[0].pts;currentGop.dts=frames[0].dts;gops.byteLength=0;gops.nalCount=0;gops.duration=0;gops.pts=frames[0].pts;gops.dts=frames[0].dts;for(i=0;i<frames.length;i++){currentFrame=frames[i];if(currentFrame.keyFrame){if(currentGop.length){gops.push(currentGop);gops.byteLength+=currentGop.byteLength;gops.nalCount+=currentGop.nalCount;gops.duration+=currentGop.duration}
2210currentGop=[currentFrame];currentGop.nalCount=currentFrame.length;currentGop.byteLength=currentFrame.byteLength;currentGop.pts=currentFrame.pts;currentGop.dts=currentFrame.dts;currentGop.duration=currentFrame.duration}else{currentGop.duration+=currentFrame.duration;currentGop.nalCount+=currentFrame.length;currentGop.byteLength+=currentFrame.byteLength;currentGop.push(currentFrame)}}
2211if(gops.length&&currentGop.duration<=0){currentGop.duration=gops[gops.length-1].duration}
2212gops.byteLength+=currentGop.byteLength;gops.nalCount+=currentGop.nalCount;gops.duration+=currentGop.duration;gops.push(currentGop);return gops};var extendFirstKeyFrame=function extendFirstKeyFrame(gops){var currentGop;if(!gops[0][0].keyFrame&&gops.length>1){currentGop=gops.shift();gops.byteLength-=currentGop.byteLength;gops.nalCount-=currentGop.nalCount;gops[0][0].dts=currentGop.dts;gops[0][0].pts=currentGop.pts;gops[0][0].duration+=currentGop.duration}
2213return gops};var createDefaultSample=function createDefaultSample(){return{size:0,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0,degradationPriority:0,isNonSyncSample:1}}};var sampleForFrame=function sampleForFrame(frame,dataOffset){var sample=createDefaultSample();sample.dataOffset=dataOffset;sample.compositionTimeOffset=frame.pts-frame.dts;sample.duration=frame.duration;sample.size=4*frame.length;sample.size+=frame.byteLength;if(frame.keyFrame){sample.flags.dependsOn=2;sample.flags.isNonSyncSample=0}
2214return sample};var generateSampleTable=function generateSampleTable(gops,baseDataOffset){var h,i,sample,currentGop,currentFrame,dataOffset=baseDataOffset||0,samples=[];for(h=0;h<gops.length;h++){currentGop=gops[h];for(i=0;i<currentGop.length;i++){currentFrame=currentGop[i];sample=sampleForFrame(currentFrame,dataOffset);dataOffset+=sample.size;samples.push(sample)}}
2215return samples};var concatenateNalData=function concatenateNalData(gops){var h,i,j,currentGop,currentFrame,currentNal,dataOffset=0,nalsByteLength=gops.byteLength,numberOfNals=gops.nalCount,totalByteLength=nalsByteLength+4*numberOfNals,data=new Uint8Array(totalByteLength),view=new DataView(data.buffer);for(h=0;h<gops.length;h++){currentGop=gops[h];for(i=0;i<currentGop.length;i++){currentFrame=currentGop[i];for(j=0;j<currentFrame.length;j++){currentNal=currentFrame[j];
2215view.setUint32(dataOffset,currentNal.data.byteLength);dataOffset+=4;data.set(currentNal.data,dataOffset);dataOffset+=currentNal.data.byteLength}}}
2216return data};var generateSampleTableForFrame=function generateSampleTableForFrame(frame,baseDataOffset){var sample,dataOffset=baseDataOffset||0,samples=[];sample=sampleForFrame(frame,dataOffset);samples.push(sample);return samples};var concatenateNalDataForFrame=function concatenateNalDataForFrame(frame){var i,currentNal,dataOffset=0,nalsByteLength=frame.byteLength,numberOfNals=frame.length,totalByteLength=nalsByteLength+4*numberOfNals,data=new Uint8Array(totalByteLength),view=new DataView(data.buffer);for(i=0;i<frame.length;i++){currentNal=frame[i];view.setUint32(dataOffset,currentNal.data.byteLength);dataOffset+=4;data.set(currentNal.data,dataOffset);dataOffset+=currentNal.data.byteLength}
2217return data};var frameUtils={groupNalsIntoFrames:groupNalsIntoFrames,groupFramesIntoGops:groupFramesIntoGops,extendFirstKeyFrame:extendFirstKeyFrame,generateSampleTable:generateSampleTable,concatenateNalData:concatenateNalData,generateSampleTableForFrame:generateSampleTableForFrame,concatenateNalDataForFrame:concatenateNalDataForFrame};var highPrefix=[33,16,5,32,164,27];var lowPrefix=[33,65,108,84,1,2,4,8,168,2,4,8,17,191,252];var zeroFill=function zeroFill(count){var a=[];while(count--){a.push(0)}
2218return a};var makeTable=function makeTable(metaTable){return Object.keys(metaTable).reduce(function(obj,key){obj[key]=new Uint8Array(metaTable[key].reduce(function(arr,part){return arr.concat(part)},[]));return obj},{})};var coneOfSilence={96000:[highPrefix,[227,64],zeroFill(154),[56]],88200:[highPrefix,[231],zeroFill(170),[56]],64000:[highPrefix,[248,192],zeroFill(240),[56]],48000:[highPrefix,[255,192],zeroFill(268),[55,148,128],zeroFill(54),[112]],44100:[highPrefix,[255,192],zeroFill(268),[55,163,128],zeroFill(84),[112]],32000:[highPrefix,[255,192],zeroFill(268),[55,234],zeroFill(226),[112]],24000:[highPrefix,[255,192],zeroFill(268),[55,255,128],zeroFill(268),[111,112],zeroFill(126),[224]],16000:[highPrefix,[255,192],zeroFill(268),[55,255,128],zeroFill(268),[111,255],zeroFill(269),[223,108],zeroFill(195),[1,192]],12000:[lowPrefix,zeroFill(268),[3,127,248],zeroFill(268),[6,255,240],zeroFill(268),[13,255,224],zeroFill(268),[27,253,128],zeroFill(259),[56]],11025:[lowPrefix,zeroFill(268),[3,127,248],zeroFill(268),[6,255,240],zeroFill(268),[13,255,224],zeroFill(268),[27,255,192],zeroFill(268),[55,175,128],zeroFill(108),[112]],8000:[lowPrefix,zeroFill(268),[3,121,16],zeroFill(47),[7]]};var silence=makeTable(coneOfSilence);var ONE_SECOND_IN_TS=90000,secondsToVideoTs,secondsToAudioTs,videoTsToSeconds,audioTsToSeconds,audioTsToVideoTs,videoTsToAudioTs,metadataTsToSeconds;secondsToVideoTs=function secondsToVideoTs(seconds){return seconds*ONE_SECOND_IN_TS};secondsToAudioTs=function secondsToAudioTs(seconds,sampleRate){return seconds*sampleRate};videoTsToSeconds=function videoTsToSeconds(timestamp){return timestamp/ONE_SECOND_IN_TS};audioTsToSeconds=function audioTsToSeconds(timestamp,sampleRate){return timestamp/sampleRate};audioTsToVideoTs=function audioTsToVideoTs(timestamp,sampleRate){return secondsToVideoTs(audioTsToSeconds(timestamp,sampleRate))};videoTsToAudioTs=function videoTsToAudioTs(timestamp,sampleRate){return secondsToAudioTs(videoTsToSeconds(timestamp),sampleRate)};metadataTsToSeconds=function metadataTsToSeconds(timestamp,timelineStartPts,keepOriginalTimestamps){return videoTsToSeconds(keepOriginalTimestamps?timestamp:timestamp-timelineStartPts)};var clock={ONE_SECOND_IN_TS:ONE_SECOND_IN_TS,secondsToVideoTs:secondsToVideoTs,secondsToAudioTs:secondsToAudioTs,videoTsToSeconds:videoTsToSeconds,audioTsToSeconds:audioTsToSeconds,audioTsToVideoTs:audioTsToVideoTs,videoTsToAudioTs:videoTsToAudioTs,metadataTsToSeconds:metadataTsToSeconds};var sumFrameByteLengths=function sumFrameByteLengths(array){var i,currentObj,sum=0;for(i=0;i<array.length;i++){currentObj=array[i];sum+=currentObj.data.byteLength}
2219return sum};var prefixWithSilence=function prefixWithSilence(track,frames,audioAppendStartTs,videoBaseMediaDecodeTime){var baseMediaDecodeTimeTs,frameDuration=0,audioGapDuration=0,audioFillFrameCount=0,audioFillDuration=0,silentFrame,i,firstFrame;if(!frames.length){return}
2220baseMediaDecodeTimeTs=clock.audioTsToVideoTs(track.baseMediaDecodeTime,track.samplerate);frameDuration=Math.ceil(clock.ONE_SECOND_IN_TS/(track.samplerate/1024));if(audioAppendStartTs&&videoBaseMediaDecodeTime){audioGapDuration=baseMediaDecodeTimeTs-Math.max(audioAppendStartTs,videoBaseMediaDecodeTime);audioFillFrameCount=Math.floor(audioGapDuration/frameDuration);audioFillDuration=audioFillFrameCount*frameDuration}
2221if(audioFillFrameCount<1||audioFillDuration>clock.ONE_SECOND_IN_TS/2){return}
2222silentFrame=silence[track.samplerate];if(!silentFrame){silentFrame=frames[0].data}
2223for(i=0;i<audioFillFrameCount;i++){firstFrame=frames[0];frames.splice(0,0,{data:silentFrame,dts:firstFrame.dts-frameDuration,pts:firstFrame.pts-frameDuration})}
2224track.baseMediaDecodeTime-=Math.floor(clock.videoTsToAudioTs(audioFillDuration,track.samplerate))};var trimAdtsFramesByEarliestDts=function trimAdtsFramesByEarliestDts(adtsFrames,track,earliestAllowedDts){if(track.minSegmentDts>=earliestAllowedDts){return adtsFrames}
2225track.minSegmentDts=Infinity;return adtsFrames.filter(function(currentFrame){if(currentFrame.dts>=earliestAllowedDts){track.minSegmentDts=Math.min(track.minSegmentDts,currentFrame.dts);track.minSegmentPts=track.minSegmentDts;return!0}
2226return!1})};var generateSampleTable$1=function generateSampleTable(frames){var i,currentFrame,samples=[];for(i=0;i<frames.length;i++){currentFrame=frames[i];samples.push({size:currentFrame.data.byteLength,duration:1024})}
2227return samples};var concatenateFrameData=function concatenateFrameData(frames){var i,currentFrame,dataOffset=0,data=new Uint8Array(sumFrameByteLengths(frames));for(i=0;i<frames.length;i++){currentFrame=frames[i];data.set(currentFrame.data,dataOffset);dataOffset+=currentFrame.data.byteLength}
2228return data};var audioFrameUtils={prefixWithSilence:prefixWithSilence,trimAdtsFramesByEarliestDts:trimAdtsFramesByEarliestDts,generateSampleTable:generateSampleTable$1,concatenateFrameData:concatenateFrameData};var ONE_SECOND_IN_TS$1=clock.ONE_SECOND_IN_TS;var collectDtsInfo=function collectDtsInfo(track,data){if(typeof data.pts==='number'){if(track.timelineStartInfo.pts===undefined){track.timelineStartInfo.pts=data.pts}
2229if(track.minSegmentPts===undefined){track.minSegmentPts=data.pts}else{track.minSegmentPts=Math.min(track.minSegmentPts,data.pts)}
2230if(track.maxSegmentPts===undefined){track.maxSegmentPts=data.pts}else{track.maxSegmentPts=Math.max(track.maxSegmentPts,data.pts)}}
2231if(typeof data.dts==='number'){if(track.timelineStartInfo.dts===undefined){track.timelineStartInfo.dts=data.dts}
2232if(track.minSegmentDts===undefined){track.minSegmentDts=data.dts}else{track.minSegmentDts=Math.min(track.minSegmentDts,data.dts)}
2233if(track.maxSegmentDts===undefined){track.maxSegmentDts=data.dts}else{track.maxSegmentDts=Math.max(track.maxSegmentDts,data.dts)}}};var clearDtsInfo=function clearDtsInfo(track){delete track.minSegmentDts;delete track.maxSegmentDts;delete track.minSegmentPts;delete track.maxSegmentPts};var calculateTrackBaseMediaDecodeTime=function calculateTrackBaseMediaDecodeTime(track,keepOriginalTimestamps){var baseMediaDecodeTime,scale,minSegmentDts=track.minSegmentDts;if(!keepOriginalTimestamps){minSegmentDts-=track.timelineStartInfo.dts}
2234baseMediaDecodeTime=track.timelineStartInfo.baseMediaDecodeTime;baseMediaDecodeTime+=minSegmentDts;baseMediaDecodeTime=Math.max(0,baseMediaDecodeTime);if(track.type==='audio'){scale=track.samplerate/ONE_SECOND_IN_TS$1;baseMediaDecodeTime*=scale;baseMediaDecodeTime=Math.floor(baseMediaDecodeTime)}
2235return baseMediaDecodeTime};var trackDecodeInfo={clearDtsInfo:clearDtsInfo,calculateTrackBaseMediaDecodeTime:calculateTrackBaseMediaDecodeTime,collectDtsInfo:collectDtsInfo};var USER_DATA_REGISTERED_ITU_T_T35=4,RBSP_TRAILING_BITS=128;var parseSei=function parseSei(bytes){var i=0,result={payloadType:-1,payloadSize:0},payloadType=0,payloadSize=0;while(i<bytes.byteLength){if(bytes[i]===RBSP_TRAILING_BITS){break}
2236while(bytes[i]===0xFF){payloadType+=255;i++}
2237payloadType+=bytes[i++];
2237while(bytes[i]===0xFF){payloadSize+=255;i++}
2238payloadSize+=bytes[i++];if(!result.payload&&payloadType===USER_DATA_REGISTERED_ITU_T_T35){result.payloadType=payloadType;result.payloadSize=payloadSize;result.payload=bytes.subarray(i,i+payloadSize);break}
2239i+=payloadSize;payloadType=0;payloadSize=0}
2240return result};var parseUserData=function parseUserData(sei){if(sei.payload[0]!==181){return null}
2241if((sei.payload[1]<<8|sei.payload[2])!==49){return null}
2242if(String.fromCharCode(sei.payload[3],sei.payload[4],sei.payload[5],sei.payload[6])!=='GA94'){return null}
2243if(sei.payload[7]!==0x03){return null}
2244return sei.payload.subarray(8,sei.payload.length-1)};var parseCaptionPackets=function parseCaptionPackets(pts,userData){var results=[],i,count,offset,data;if(!(userData[0]&0x40)){return results}
2245count=userData[0]&0x1f;for(i=0;i<count;i++){offset=i*3;data={type:userData[offset+2]&0x03,pts:pts};if(userData[offset+2]&0x04){data.ccData=userData[offset+3]<<8|userData[offset+4];results.push(data)}}
2246return results};var discardEmulationPreventionBytes=function discardEmulationPreventionBytes(data){var length=data.byteLength,emulationPreventionBytesPositions=[],i=1,newLength,newData;while(i<length-2){if(data[i]===0&&data[i+1]===0&&data[i+2]===0x03){emulationPreventionBytesPositions.push(i+2);i+=2}else{i++}}
2247if(emulationPreventionBytesPositions.length===0){return data}
2248newLength=length-emulationPreventionBytesPositions.length;newData=new Uint8Array(newLength);var sourceIndex=0;for(i=0;i<newLength;sourceIndex++,i++){if(sourceIndex===emulationPreventionBytesPositions[0]){sourceIndex++;emulationPreventionBytesPositions.shift()}
2249newData[i]=data[sourceIndex]}
2250return newData};var captionPacketParser={parseSei:parseSei,parseUserData:parseUserData,parseCaptionPackets:parseCaptionPackets,discardEmulationPreventionBytes:discardEmulationPreventionBytes,USER_DATA_REGISTERED_ITU_T_T35:USER_DATA_REGISTERED_ITU_T_T35};var CaptionStream=function CaptionStream(){CaptionStream.prototype.init.call(this);this.captionPackets_=[];this.ccStreams_=[new Cea608Stream(0,0),new Cea608Stream(0,1),new Cea608Stream(1,0),new Cea608Stream(1,1)];this.reset();this.ccStreams_.forEach(function(cc){cc.on('data',this.trigger.bind(this,'data'));cc.on('partialdone',this.trigger.bind(this,'partialdone'));cc.on('done',this.trigger.bind(this,'done'))},this)};CaptionStream.prototype=new stream();CaptionStream.prototype.push=function(event){var sei,userData,newCaptionPackets;if(event.nalUnitType!=='sei_rbsp'){return}
2251sei=captionPacketParser.parseSei(event.escapedRBSP);if(sei.payloadType!==captionPacketParser.USER_DATA_REGISTERED_ITU_T_T35){return}
2252userData=captionPacketParser.parseUserData(sei);if(!userData){return}
2253if(event.dts<this.latestDts_){this.ignoreNextEqualDts_=!0;return}else if(event.dts===this.latestDts_&&this.ignoreNextEqualDts_){this.numSameDts_--;if(!this.numSameDts_){this.ignoreNextEqualDts_=!1}
2254return}
2255newCaptionPackets=captionPacketParser.parseCaptionPackets(event.pts,userData);this.captionPackets_=this.captionPackets_.concat(newCaptionPackets);if(this.latestDts_!==event.dts){this.numSameDts_=0}
2256this.numSameDts_++;this.latestDts_=event.dts};CaptionStream.prototype.flushCCStreams=function(flushType){this.ccStreams_.forEach(function(cc){return flushType==='flush'?cc.flush():cc.partialFlush()},this)};CaptionStream.prototype.flushStream=function(flushType){if(!this.captionPackets_.length){this.flushCCStreams(flushType);return}
2257this.captionPackets_.forEach(function(elem,idx){elem.presortIndex=idx});this.captionPackets_.sort(function(a,b){if(a.pts===b.pts){return a.presortIndex-b.presortIndex}
2258return a.pts-b.pts});this.captionPackets_.forEach(function(packet){if(packet.type<2){this.dispatchCea608Packet(packet)}},this);this.captionPackets_.length=0;this.flushCCStreams(flushType)};CaptionStream.prototype.flush=function(){return this.flushStream('flush')};CaptionStream.prototype.partialFlush=function(){return this.flushStream('partialFlush')};CaptionStream.prototype.reset=function(){this.latestDts_=null;this.ignoreNextEqualDts_=!1;this.numSameDts_=0;this.activeCea608Channel_=[null,null];this.ccStreams_.forEach(function(ccStream){ccStream.reset()})};CaptionStream.prototype.dispatchCea608Packet=function(packet){if(this.setsTextOrXDSActive(packet)){this.activeCea608Channel_[packet.type]=null}else if(this.setsChannel1Active(packet)){this.activeCea608Channel_[packet.type]=0}else if(this.setsChannel2Active(packet)){this.activeCea608Channel_[packet.type]=1}
2259if(this.activeCea608Channel_[packet.type]===null){return}
2260this.ccStreams_[(packet.type<<1)+this.activeCea608Channel_[packet.type]].push(packet)};CaptionStream.prototype.setsChannel1Active=function(packet){return(packet.ccData&0x7800)===0x1000};CaptionStream.prototype.setsChannel2Active=function(packet){return(packet.ccData&0x7800)===0x1800};CaptionStream.prototype.setsTextOrXDSActive=function(packet){return(packet.ccData&0x7100)===0x0100||(packet.ccData&0x78fe)===0x102a||(packet.ccData&0x78fe)===0x182a};var CHARACTER_TRANSLATION={0x2a:0xe1,0x5c:0xe9,0x5e:0xed,0x5f:0xf3,0x60:0xfa,0x7b:0xe7,0x7c:0xf7,0x7d:0xd1,0x7e:0xf1,0x7f:0x2588,0x0130:0xae,0x0131:0xb0,0x0132:0xbd,0x0133:0xbf,0x0134:0x2122,0x0135:0xa2,0x0136:0xa3,0x0137:0x266a,0x0138:0xe0,0x0139:0xa0,0x013a:0xe8,0x013b:0xe2,0x013c:0xea,0x013d:0xee,0x013e:0xf4,0x013f:0xfb,0x0220:0xc1,0x0221:0xc9,0x0222:0xd3,0x0223:0xda,0x0224:0xdc,0x0225:0xfc,0x0226:0x2018,0x0227:0xa1,0x0228:0x2a,0x0229:0x27,0x022a:0x2014,0x022b:0xa9,0x022c:0x2120,0x022d:0x2022,0x022e:0x201c,0x022f:0x201d,0x0230:0xc0,0x0231:0xc2,0x0232:0xc7,0x0233:0xc8,0x0234:0xca,0x0235:0xcb,0x0236:0xeb,0x0237:0xce,0x0238:0xcf,0x0239:0xef,0x023a:0xd4,0x023b:0xd9,0x023c:0xf9,0x023d:0xdb,0
2260x023e:0xab,0x023f:0xbb,0x0320:0xc3,0x0321:0xe3,0x0322:0xcd,0x0323:0xcc,0x0324:0xec,0x0325:0xd2,0x0326:0xf2,0x0327:0xd5,0x0328:0xf5,0x0329:0x7b,0x032a:0x7d,0x032b:0x5c,0x032c:0x5e,0x032d:0x5f,0x032e:0x7c,0x032f:0x7e,0x0330:0xc4,0x0331:0xe4,0x0332:0xd6,0x0333:0xf6,0x0334:0xdf,0x0335:0xa5,0x0336:0xa4,0x0337:0x2502,0x0338:0xc5,0x0339:0xe5,0x033a:0xd8,0x033b:0xf8,0x033c:0x250c,0x033d:0x2510,0x033e:0x2514,0x033f:0x2518};var getCharFromCode=function getCharFromCode(code){if(code===null){return''}
2261code=CHARACTER_TRANSLATION[code]||code;return String.fromCharCode(code)};var BOTTOM_ROW=14;var ROWS=[0x1100,0x1120,0x1200,0x1220,0x1500,0x1520,0x1600,0x1620,0x1700,0x1720,0x1000,0x1300,0x1320,0x1400,0x1420];var createDisplayBuffer=function createDisplayBuffer(){var result=[],i=BOTTOM_ROW+1;while(i--){result.push('')}
2262return result};var Cea608Stream=function Cea608Stream(field,dataChannel){Cea608Stream.prototype.init.call(this);this.field_=field||0;this.dataChannel_=dataChannel||0;this.name_='CC'+((this.field_<<1|this.dataChannel_)+1);this.setConstants();this.reset();this.push=function(packet){var data,swap,char0,char1,text;data=packet.ccData&0x7f7f;if(data===this.lastControlCode_){this.lastControlCode_=null;return}
2263if((data&0xf000)===0x1000){this.lastControlCode_=data}else if(data!==this.PADDING_){this.lastControlCode_=null}
2264char0=data>>>8;char1=data&0xff;if(data===this.PADDING_){return}else if(data===this.RESUME_CAPTION_LOADING_){this.mode_='popOn'}else if(data===this.END_OF_CAPTION_){this.mode_='popOn';this.clearFormatting(packet.pts);this.flushDisplayed(packet.pts);swap=this.displayed_;this.displayed_=this.nonDisplayed_;this.nonDisplayed_=swap;this.startPts_=packet.pts}else if(data===this.ROLL_UP_2_ROWS_){this.rollUpRows_=2;this.setRollUp(packet.pts)}else if(data===this.ROLL_UP_3_ROWS_){this.rollUpRows_=3;this.setRollUp(packet.pts)}else if(data===this.ROLL_UP_4_ROWS_){this.rollUpRows_=4;this.setRollUp(packet.pts)}else if(data===this.CARRIAGE_RETURN_){this.clearFormatting(packet.pts);this.flushDisplayed(packet.pts);this.shiftRowsUp_();this.startPts_=packet.pts}else if(data===this.BACKSPACE_){if(this.mode_==='popOn'){this.nonDisplayed_[this.row_]=this.nonDisplayed_[this.row_].slice(0,-1)}else{this.displayed_[this.row_]=this.displayed_[this.row_].slice(0,-1)}}else if(data===this.ERASE_DISPLAYED_MEMORY_){this.flushDisplayed(packet.pts);this.displayed_=createDisplayBuffer()}else if(data===this.ERASE_NON_DISPLAYED_MEMORY_){this.nonDisplayed_=createDisplayBuffer()}else if(data===this.RESUME_DIRECT_CAPTIONING_){if(this.mode_!=='paintOn'){this.flushDisplayed(packet.pts);this.displayed_=createDisplayBuffer()}
2265this.mode_='paintOn';this.startPts_=packet.pts}else if(this.isSpecialCharacter(char0,char1)){char0=(char0&0x03)<<8;text=getCharFromCode(char0|char1);this[this.mode_](packet.pts,text);this.column_++}else if(this.isExtCharacter(char0,char1)){if(this.mode_==='popOn'){this.nonDisplayed_[this.row_]=this.nonDisplayed_[this.row_].slice(0,-1)}else{this.displayed_[this.row_]=this.displayed_[this.row_].slice(0,-1)}
2266char0=(char0&0x03)<<8;text=getCharFromCode(char0|char1);this[this.mode_](packet.pts,text);this.column_++}else if(this.isMidRowCode(char0,char1)){this.clearFormatting(packet.pts);this[this.mode_](packet.pts,' ');this.column_++;if((char1&0xe)===0xe){this.addFormatting(packet.pts,['i'])}
2267if((char1&0x1)===0x1){this.addFormatting(packet.pts,['u'])}}else if(this.isOffsetControlCode(char0,char1)){this.column_+=char1&0x03}else if(this.isPAC(char0,char1)){var row=ROWS.indexOf(data&0x1f20);if(this.mode_==='rollUp'){if(row-this.rollUpRows_+1<0){row=this.rollUpRows_-1}
2268this.setRollUp(packet.pts,row)}
2269if(row!==this.row_){this.clearFormatting(packet.pts);this.row_=row}
2270if(char1&0x1&&this.formatting_.indexOf('u')===-1){this.addFormatting(packet.pts,['u'])}
2271if((data&0x10)===0x10){this.column_=((data&0xe)>>1)*4}
2272if(this.isColorPAC(char1)){if((char1&0xe)===0xe){this.addFormatting(packet.pts,['i'])}}}else if(this.isNormalChar(char0)){if(char1===0x00){char1=null}
2273text=getCharFromCode(char0);text+=getCharFromCode(char1);this[this.mode_](packet.pts,text);this.column_+=text.length}}};Cea608Stream.prototype=new stream();Cea608Stream.prototype.flushDisplayed=function(pts){var content=this.displayed_.map(function(row){try{return row.trim()}catch(e){console.error('Skipping malformed caption.');return''}}).join('\n').replace(/^\n+|\n+$/g,'');if(content.length){this.trigger('data',{startPts:this.startPts_,endPts:pts,text:content,stream
2273:this.name_})}};Cea608Stream.prototype.reset=function(){this.mode_='popOn';this.topRow_=0;this.startPts_=0;this.displayed_=createDisplayBuffer();this.nonDisplayed_=createDisplayBuffer();this.lastControlCode_=null;this.column_=0;this.row_=BOTTOM_ROW;this.rollUpRows_=2;this.formatting_=[]};Cea608Stream.prototype.setConstants=function(){if(this.dataChannel_===0){this.BASE_=0x10;this.EXT_=0x11;this.CONTROL_=(0x14|this.field_)<<8;this.OFFSET_=0x17}else if(this.dataChannel_===1){this.BASE_=0x18;this.EXT_=0x19;this.CONTROL_=(0x1c|this.field_)<<8;this.OFFSET_=0x1f}
2274this.PADDING_=0x0000;this.RESUME_CAPTION_LOADING_=this.CONTROL_|0x20;this.END_OF_CAPTION_=this.CONTROL_|0x2f;this.ROLL_UP_2_ROWS_=this.CONTROL_|0x25;this.ROLL_UP_3_ROWS_=this.CONTROL_|0x26;this.ROLL_UP_4_ROWS_=this.CONTROL_|0x27;this.CARRIAGE_RETURN_=this.CONTROL_|0x2d;this.RESUME_DIRECT_CAPTIONING_=this.CONTROL_|0x29;this.BACKSPACE_=this.CONTROL_|0x21;this.ERASE_DISPLAYED_MEMORY_=this.CONTROL_|0x2c;this.ERASE_NON_DISPLAYED_MEMORY_=this.CONTROL_|0x2e};Cea608Stream.prototype.isSpecialCharacter=function(char0,char1){return char0===this.EXT_&&char1>=0x30&&char1<=0x3f};Cea608Stream.prototype.isExtCharacter=function(char0,char1){return(char0===this.EXT_+1||char0===this.EXT_+2)&&char1>=0x20&&char1<=0x3f};Cea608Stream.prototype.isMidRowCode=function(char0,char1){return char0===this.EXT_&&char1>=0x20&&char1<=0x2f};Cea608Stream.prototype.isOffsetControlCode=function(char0,char1){return char0===this.OFFSET_&&char1>=0x21&&char1<=0x23};Cea608Stream.prototype.isPAC=function(char0,char1){return char0>=this.BASE_&&char0<this.BASE_+8&&char1>=0x40&&char1<=0x7f};Cea608Stream.prototype.isColorPAC=function(char1){return char1>=0x40&&char1<=0x4f||char1>=0x60&&char1<=0x7f};Cea608Stream.prototype.isNormalChar=function(_char){return _char>=0x20&&_char<=0x7f};Cea608Stream.prototype.setRollUp=function(pts,newBaseRow){if(this.mode_!=='rollUp'){this.row_=BOTTOM_ROW;this.mode_='rollUp';this.flushDisplayed(pts);this.nonDisplayed_=createDisplayBuffer();this.displayed_=createDisplayBuffer()}
2275if(newBaseRow!==undefined&&newBaseRow!==this.row_){for(var i=0;i<this.rollUpRows_;i++){this.displayed_[newBaseRow-i]=this.displayed_[this.row_-i];this.displayed_[this.row_-i]=''}}
2276if(newBaseRow===undefined){newBaseRow=this.row_}
2277this.topRow_=newBaseRow-this.rollUpRows_+1};Cea608Stream.prototype.addFormatting=function(pts,format){this.formatting_=this.formatting_.concat(format);var text=format.reduce(function(text,format){return text+'<'+format+'>'},'');this[this.mode_](pts,text)};Cea608Stream.prototype.clearFormatting=function(pts){if(!this.formatting_.length){return}
2278var text=this.formatting_.reverse().reduce(function(text,format){return text+'</'+format+'>'},'');this.formatting_=[];this[this.mode_](pts,text)};Cea608Stream.prototype.popOn=function(pts,text){var baseRow=this.nonDisplayed_[this.row_];baseRow+=text;this.nonDisplayed_[this.row_]=baseRow};Cea608Stream.prototype.rollUp=function(pts,text){var baseRow=this.displayed_[this.row_];baseRow+=text;this.displayed_[this.row_]=baseRow};Cea608Stream.prototype.shiftRowsUp_=function(){var i;for(i=0;i<this.topRow_;i++){this.displayed_[i]=''}
2279for(i=this.row_+1;i<BOTTOM_ROW+1;i++){this.displayed_[i]=''}
2280for(i=this.topRow_;i<this.row_;i++){this.displayed_[i]=this.displayed_[i+1]}
2281this.displayed_[this.row_]=''};Cea608Stream.prototype.paintOn=function(pts,text){var baseRow=this.displayed_[this.row_];baseRow+=text;this.displayed_[this.row_]=baseRow};var captionStream={CaptionStream:CaptionStream,Cea608Stream:Cea608Stream};var streamTypes={H264_STREAM_TYPE:0x1B,ADTS_STREAM_TYPE:0x0F,METADATA_STREAM_TYPE:0x15};var MAX_TS=8589934592;var RO_THRESH=4294967296;var TYPE_SHARED='shared';var handleRollover=function handleRollover(value,reference){var direction=1;if(value>reference){direction=-1}
2282while(Math.abs(reference-value)>RO_THRESH){value+=direction*MAX_TS}
2283return value};var TimestampRolloverStream=function TimestampRolloverStream(type){var lastDTS,referenceDTS;TimestampRolloverStream.prototype.init.call(this);this.type_=type||TYPE_SHARED;this.push=function(data){if(this.type_!==TYPE_SHARED&&data.type!==this.type_){return}
2284if(referenceDTS===undefined){referenceDTS=data.dts}
2285data.dts=handleRollover(data.dts,referenceDTS);data.pts=handleRollover(data.pts,referenceDTS);lastDTS=data.dts;this.trigger('data',data)};this.flush=function(){referenceDTS=lastDTS;this.trigger('done')};this.endTimeline=function(){this.flush();this.trigger('endedtimeline')};this.discontinuity=function(){referenceDTS=void 0;lastDTS=void 0};this.reset=function(){this.discontinuity();this.trigger('reset')}};TimestampRolloverStream.prototype=new stream();var timestampRolloverStream={TimestampRolloverStream:TimestampRolloverStream,handleRollover:handleRollover};var percentEncode=function percentEncode(bytes,start,end){var i,result='';for(i=start;i<end;i++){result+='%'+('00'+bytes[i].toString(16)).slice(-2)}
2286return result},parseUtf8=function parseUtf8(bytes,start,end){return decodeURIComponent(percentEncode(bytes,start,end))},parseIso88591=function parseIso88591(bytes,start,end){return unescape(percentEncode(bytes,start,end))},parseSyncSafeInteger=function parseSyncSafeInteger(data){return data[0]<<21|data[1]<<14|data[2]<<7|data[3]},tagParsers={TXXX:function TXXX(tag){var i;if(tag.data[0]!==3){return}
2287for(i=1;i<tag.data.length;i++){if(tag.data[i]===0){tag.description=parseUtf8(tag.data,1,i);tag.value=parseUtf8(tag.data,i+1,tag.data.length).replace(/\0*$/,'');break}}
2288tag.data=tag.value},WXXX:function WXXX(tag){var i;if(tag.data[0]!==3){return}
2289for(i=1;i<tag.data.length;i++){if(tag.data[i]===0){tag.description=parseUtf8(tag.data,1,i);tag.url=parseUtf8(tag.data,i+1,tag.data.length);break}}},PRIV:function PRIV(tag){var i;for(i=0;i<tag.data.length;i++){if(tag.data[i]===0){tag.owner=parseIso88591(tag.data,0,i);break}}
2290tag.privateData=tag.data.subarray(i+1);tag.data=tag.privateData}},_MetadataStream;_MetadataStream=function MetadataStream(options){var settings={debug:!!(options&&options.debug),descriptor:options&&options.descriptor},tagSize=0,buffer=[],bufferSize=0,i;_MetadataStream.prototype.init.call(this);this.dispatchType=streamTypes.METADATA_STREAM_TYPE.toString(16);if(settings.descriptor){for(i=0;i<settings.descriptor.length;i++){this.dispatchType+=('00'+settings.descriptor[i].toString(16)).slice(-2)}}
2291this.push=function(chunk){var tag,frameStart,frameSize,frame,i,frameHeader;if(chunk.type!=='timed-metadata'){return}
2292if(chunk.dataAlignmentIndicator){bufferSize=0;buffer.length=0}
2293if(buffer.length===0&&(chunk.data.length<10||chunk.data[0]!=='I'.charCodeAt(0)||chunk.data[1]!=='D'.charCodeAt(0)||chunk.data[2]!=='3'.charCodeAt(0))){if(settings.debug){console.log('Skipping unrecognized metadata packet')}
2294return}
2295buffer.push(chunk);bufferSize+=chunk.data.byteLength;if(buffer.length===1){tagSize=parseSyncSafeInteger(chunk.data.subarray(6,10));tagSize+=10}
2296if(bufferSize<tagSize){return}
2297tag={data:new Uint8Array(tagSize),frames:[],pts:buffer[0].pts,dts:buffer[0].dts};for(i=0;i<tagSize;){tag.data.set(buffer[0].data.subarray(0,tagSize-i),i);i+=buffer[0].data.byteLength;bufferSize-=buffer[0].data.byteLength;buffer.shift()}
2298frameStart=10;if(tag.data[5]&0x40){frameStart+=4;frameStart+=parseSyncSafeInteger(tag.data.subarray(10,14));tagSize-=parseSyncSafeInteger(tag.data.subarray(16,20))}
2299do{frameSize=parseSyncSafeInteger(tag.data.subarray(frameStart+4,frameStart+8));if(frameSize<1){return console.log('Malformed ID3 frame encountered. Skipping metadata parsing.')}
2300frameHeader=String.fromCharCode(tag.data[frameStart],tag.data[frameStart+1],tag.data[frameStart+2],tag.data[frameStart+3]);frame={id:frameHeader,data:tag.data.subarray(frameStart+10,frameStart+frameSize+10)};frame.key=frame.id;if(tagParsers[frame.id]){tagParsers[frame.id](frame);if(frame.owner==='com.apple.streaming.transportStreamTimestamp'){var d=frame.data,size=(d[3]&0x01)<<30|d[4]<<22|d[5]<<14|d[6]<<6|d[7]>>>2;size*=4;size+=d[7]&0x03;frame.timeStamp=size;if(tag.pts===undefined&&tag.dts===undefined){tag.pts=frame.timeStamp;tag.dts=frame.timeStamp}
2301this.trigger('timestamp',frame)}}
2302tag.frames.push(frame);frameStart+=10;frameStart+=frameSize}while(frameStart<tagSize);this.trigger('data',tag)}};_MetadataStream.prototype=new stream();var metadataStream=_MetadataStream;var TimestampRolloverStream$1=timestampRolloverStream.TimestampRolloverStream;
2302var _TransportPacketStream,_TransportParseStream,_ElementaryStream;var MP2T_PACKET_LENGTH=188,SYNC_BYTE=0x47;_TransportPacketStream=function TransportPacketStream(){var buffer=new Uint8Array(MP2T_PACKET_LENGTH),bytesInBuffer=0;_TransportPacketStream.prototype.init.call(this);this.push=function(bytes){var startIndex=0,endIndex=MP2T_PACKET_LENGTH,everything;if(bytesInBuffer){everything=new Uint8Array(bytes.byteLength+bytesInBuffer);everything.set(buffer.subarray(0,bytesInBuffer));everything.set(bytes,bytesInBuffer);bytesInBuffer=0}else{everything=bytes}
2303while(endIndex<everything.byteLength){if(everything[startIndex]===SYNC_BYTE&&everything[endIndex]===SYNC_BYTE){this.trigger('data',everything.subarray(startIndex,endIndex));startIndex+=MP2T_PACKET_LENGTH;endIndex+=MP2T_PACKET_LENGTH;continue}
2304startIndex++;endIndex++}
2305if(startIndex<everything.byteLength){buffer.set(everything.subarray(startIndex),0);bytesInBuffer=everything.byteLength-startIndex}};this.flush=function(){if(bytesInBuffer===MP2T_PACKET_LENGTH&&buffer[0]===SYNC_BYTE){this.trigger('data',buffer);bytesInBuffer=0}
2306this.trigger('done')};this.endTimeline=function(){this.flush();this.trigger('endedtimeline')};this.reset=function(){bytesInBuffer=0;this.trigger('reset')}};_TransportPacketStream.prototype=new stream();_TransportParseStream=function TransportParseStream(){var parsePsi,parsePat,parsePmt,self;_TransportParseStream.prototype.init.call(this);self=this;this.packetsWaitingForPmt=[];this.programMapTable=undefined;parsePsi=function parsePsi(payload,psi){var offset=0;if(psi.payloadUnitStartIndicator){offset+=payload[offset]+1}
2307if(psi.type==='pat'){parsePat(payload.subarray(offset),psi)}else{parsePmt(payload.subarray(offset),psi)}};parsePat=function parsePat(payload,pat){pat.section_number=payload[7];pat.last_section_number=payload[8];self.pmtPid=(payload[10]&0x1F)<<8|payload[11];pat.pmtPid=self.pmtPid};parsePmt=function parsePmt(payload,pmt){var sectionLength,tableEnd,programInfoLength,offset;if(!(payload[5]&0x01)){return}
2308self.programMapTable={video:null,audio:null,'timed-metadata':{}};sectionLength=(payload[1]&0x0f)<<8|payload[2];tableEnd=3+sectionLength-4;programInfoLength=(payload[10]&0x0f)<<8|payload[11];offset=12+programInfoLength;while(offset<tableEnd){var streamType=payload[offset];var pid=(payload[offset+1]&0x1F)<<8|payload[offset+2];if(streamType===streamTypes.H264_STREAM_TYPE&&self.programMapTable.video===null){self.programMapTable.video=pid}else if(streamType===streamTypes.ADTS_STREAM_TYPE&&self.programMapTable.audio===null){self.programMapTable.audio=pid}else if(streamType===streamTypes.METADATA_STREAM_TYPE){self.programMapTable['timed-metadata'][pid]=streamType}
2309offset+=((payload[offset+3]&0x0F)<<8|payload[offset+4])+5}
2310pmt.programMapTable=self.programMapTable};this.push=function(packet){var result={},offset=4;result.payloadUnitStartIndicator=!!(packet[1]&0x40);result.pid=packet[1]&0x1f;result.pid<<=8;result.pid|=packet[2];if((packet[3]&0x30)>>>4>0x01){offset+=packet[offset]+1}
2311if(result.pid===0){result.type='pat';parsePsi(packet.subarray(offset),result);this.trigger('data',result)}else if(result.pid===this.pmtPid){result.type='pmt';parsePsi(packet.subarray(offset),result);this.trigger('data',result);while(this.packetsWaitingForPmt.length){this.processPes_.apply(this,this.packetsWaitingForPmt.shift())}}else if(this.programMapTable===undefined){this.packetsWaitingForPmt.push([packet,offset,result])}else{this.processPes_(packet,offset,result)}};this.processPes_=function(packet,offset,result){if(result.pid===this.programMapTable.video){result.streamType=streamTypes.H264_STREAM_TYPE}else if(result.pid===this.programMapTable.audio){result.streamType=streamTypes.ADTS_STREAM_TYPE}else{result.streamType=this.programMapTable['timed-metadata'][result.pid]}
2312result.type='pes';result.data=packet.subarray(offset);this.trigger('data',result)}};
2312_TransportParseStream.prototype=new stream();_TransportParseStream.STREAM_TYPES={h264:0x1b,adts:0x0f};_ElementaryStream=function ElementaryStream(){var self=this,video={data:[],size:0},audio={data:[],size:0},timedMetadata={data:[],size:0},programMapTable,parsePes=function parsePes(payload,pes){var ptsDtsFlags;pes.packetLength=6+(payload[4]<<8|payload[5]);pes.dataAlignmentIndicator=(payload[6]&0x04)!==0;ptsDtsFlags=payload[7];if(ptsDtsFlags&0xC0){pes.pts=(payload[9]&0x0E)<<27|(payload[10]&0xFF)<<20|(payload[11]&0xFE)<<12|(payload[12]&0xFF)<<5|(payload[13]&0xFE)>>>3;pes.pts*=4;pes.pts+=(payload[13]&0x06)>>>1;pes.dts=pes.pts;if(ptsDtsFlags&0x40){pes.dts=(payload[14]&0x0E)<<27|(payload[15]&0xFF)<<20|(payload[16]&0xFE)<<12|(payload[17]&0xFF)<<5|(payload[18]&0xFE)>>>3;pes.dts*=4;pes.dts+=(payload[18]&0x06)>>>1}}
2313pes.data=payload.subarray(9+payload[8])},flushStream=function flushStream(stream$$1,type,forceFlush){var packetData=new Uint8Array(stream$$1.size),event={type:type},i=0,offset=0,packetFlushable=!1,fragment;if(!stream$$1.data.length||stream$$1.size<9){return}
2314event.trackId=stream$$1.data[0].pid;for(i=0;i<stream$$1.data.length;i++){fragment=stream$$1.data[i];packetData.set(fragment.data,offset);offset+=fragment.data.byteLength}
2315parsePes(packetData,event);packetFlushable=type==='video'||event.packetLength<=stream$$1.size;if(forceFlush||packetFlushable){stream$$1.size=0;stream$$1.data.length=0}
2316if(packetFlushable){self.trigger('data',event)}};_ElementaryStream.prototype.init.call(this);this.push=function(data){({pat:function pat(){},pes:function pes(){var stream$$1,streamType;switch(data.streamType){case streamTypes.H264_STREAM_TYPE:case streamTypes.H264_STREAM_TYPE:stream$$1=video;streamType='video';break;case streamTypes.ADTS_STREAM_TYPE:stream$$1=audio;streamType='audio';break;case streamTypes.METADATA_STREAM_TYPE:stream$$1=timedMetadata;streamType='timed-metadata';break;default:return}
2317if(data.payloadUnitStartIndicator){flushStream(stream$$1,streamType,!0)}
2318stream$$1.data.push(data);stream$$1.size+=data.data.byteLength},pmt:function pmt(){var event={type:'metadata',tracks:[]};programMapTable=data.programMapTable;if(programMapTable.video!==null){event.tracks.push({timelineStartInfo:{baseMediaDecodeTime:0},id:+programMapTable.video,codec:'avc',type:'video'})}
2319if(programMapTable.audio!==null){event.tracks.push({timelineStartInfo:{baseMediaDecodeTime:0},id:+programMapTable.audio,codec:'adts',type:'audio'})}
2320self.trigger('data',event)}})[data.type]()};this.reset=function(){video.size=0;video.data.length=0;audio.size=0;audio.data.length=0;this.trigger('reset')};this.flushStreams_=function(){flushStream(video,'video');flushStream(audio,'audio');flushStream(timedMetadata,'timed-metadata')};this.flush=function(){this.flushStreams_();this.trigger('done')}};_ElementaryStream.prototype=new stream();var m2ts={PAT_PID:0x0000,MP2T_PACKET_LENGTH:MP2T_PACKET_LENGTH,TransportPacketStream:_TransportPacketStream,TransportParseStream:_TransportParseStream,ElementaryStream:_ElementaryStream,TimestampRolloverStream:TimestampRolloverStream$1,CaptionStream:captionStream.CaptionStream,Cea608Stream:captionStream.Cea608Stream,MetadataStream:metadataStream};for(var type in streamTypes){if(streamTypes.hasOwnProperty(type)){m2ts[type]=streamTypes[type]}}
2321var m2ts_1=m2ts;var ONE_SECOND_IN_TS$2=clock.ONE_SECOND_IN_TS;var _AdtsStream;var ADTS_SAMPLING_FREQUENCIES=[96000,88200,64000,48000,44100,32000,24000,22050,16000,12000,11025,8000,7350];_AdtsStream=function AdtsStream(handlePartialSegments){var buffer,frameNum=0;_AdtsStream.prototype.init.call(this);this.push=function(packet){var i=0,frameLength,protectionSkipBytes,frameEnd,oldBuffer,sampleCount,adtsFrameDuration;if(!handlePartialSegments){frameNum=0}
2322if(packet.type!=='audio'){return}
2323if(buffer){oldBuffer=buffer;buffer=new Uint8Array(oldBuffer.byteLength+packet.data.byteLength);buffer.set(oldBuffer);buffer.set(packet.data,oldBuffer.byteLength)}else{buffer=packet.data}
2324while(i+5<buffer.length){if(buffer[i]!==0xFF||(buffer[i+1]&0xF6)!==0xF0){i++;continue}
2325protectionSkipBytes=(~buffer[i+1]&0x01)*2;frameLength=(buffer[i+3]&0x03)<<11|buffer[i+4]<<3|(buffer[i+5]&0xe0)>>5;
2325sampleCount=((buffer[i+6]&0x03)+1)*1024;adtsFrameDuration=sampleCount*ONE_SECOND_IN_TS$2/ADTS_SAMPLING_FREQUENCIES[(buffer[i+2]&0x3c)>>>2];frameEnd=i+frameLength;if(buffer.byteLength<frameEnd){return}
2326this.trigger('data',{pts:packet.pts+frameNum*adtsFrameDuration,dts:packet.dts+frameNum*adtsFrameDuration,sampleCount:sampleCount,audioobjecttype:(buffer[i+2]>>>6&0x03)+1,channelcount:(buffer[i+2]&1)<<2|(buffer[i+3]&0xc0)>>>6,samplerate:ADTS_SAMPLING_FREQUENCIES[(buffer[i+2]&0x3c)>>>2],samplingfrequencyindex:(buffer[i+2]&0x3c)>>>2,samplesize:16,data:buffer.subarray(i+7+protectionSkipBytes,frameEnd)});frameNum++;if(buffer.byteLength===frameEnd){buffer=undefined;return}
2327buffer=buffer.subarray(frameEnd)}};this.flush=function(){frameNum=0;this.trigger('done')};this.reset=function(){buffer=void 0;this.trigger('reset')};this.endTimeline=function(){buffer=void 0;this.trigger('endedtimeline')}};_AdtsStream.prototype=new stream();var adts=_AdtsStream;var ExpGolomb;ExpGolomb=function ExpGolomb(workingData){var
2328workingBytesAvailable=workingData.byteLength,workingWord=0,workingBitsAvailable=0;this.length=function(){return 8*workingBytesAvailable};this.bitsAvailable=function(){return 8*workingBytesAvailable+workingBitsAvailable};this.loadWord=function(){var position=workingData.byteLength-workingBytesAvailable,workingBytes=new Uint8Array(4),availableBytes=Math.min(4,workingBytesAvailable);if(availableBytes===0){throw new Error('no bytes available')}
2329workingBytes.set(workingData.subarray(position,position+availableBytes));workingWord=new DataView(workingBytes.buffer).getUint32(0);workingBitsAvailable=availableBytes*8;workingBytesAvailable-=availableBytes};this.skipBits=function(count){var skipBytes;if(workingBitsAvailable>count){workingWord<<=count;workingBitsAvailable-=count}else{count-=workingBitsAvailable;skipBytes=Math.floor(count/8);count-=skipBytes*8;workingBytesAvailable-=skipBytes;this.loadWord();workingWord<<=count;workingBitsAvailable-=count}};this.readBits=function(size){var bits=Math.min(workingBitsAvailable,size),valu=workingWord>>>32-bits;workingBitsAvailable-=bits;if(workingBitsAvailable>0){workingWord<<=bits}else if(workingBytesAvailable>0){this.loadWord()}
2330bits=size-bits;if(bits>0){return valu<<bits|this.readBits(bits)}
2331return valu};this.skipLeadingZeros=function(){var leadingZeroCount;for(leadingZeroCount=0;leadingZeroCount<workingBitsAvailable;++leadingZeroCount){if((workingWord&0x80000000>>>leadingZeroCount)!==0){workingWord<<=leadingZeroCount;workingBitsAvailable-=leadingZeroCount;return leadingZeroCount}}
2332this.loadWord();return leadingZeroCount+this.skipLeadingZeros()};this.skipUnsignedExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros())};this.skipExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros())};this.readUnsignedExpGolomb=function(){var clz=this.skipLeadingZeros();return this.readBits(clz+1)-1};this.readExpGolomb=function(){var valu=this.readUnsignedExpGolomb();if(0x01&valu){return 1+valu>>>1}
2333return-1*(valu>>>1)};this.readBoolean=function(){return this.readBits(1)===1};this.readUnsignedByte=function(){return this.readBits(8)};this.loadWord()};var expGolomb=ExpGolomb;var _H264Stream,_NalByteStream;var PROFILES_WITH_OPTIONAL_SPS_DATA;_NalByteStream=function NalByteStream(){var syncPoint=0,i,buffer;_NalByteStream.prototype.init.call(this);this.push=function(data){var swapBuffer;if(!buffer){buffer=data.data}else{swapBuffer=new Uint8Array(buffer.byteLength+data.data.byteLength);swapBuffer.set(buffer);swapBuffer.set(data.data,buffer.byteLength);buffer=swapBuffer}
2334var len=buffer.byteLength;for(;syncPoint<len-3;syncPoint++){if(buffer[syncPoint+2]===1){i=syncPoint+5;break}}
2335while(i<len){switch(buffer[i]){case 0:if(buffer[i-1]!==0){i+=2;break}else if(buffer[i-2]!==0){i++;break}
2336if(syncPoint+3!==i-2){this.trigger('data',buffer.subarray(syncPoint+3,i-2))}
2337do{i++}while(buffer[i]!==1&&i<len);syncPoint=i-2;i+=3;break;case 1:if(buffer[i-1]!==0||buffer[i-2]!==0){i+=3;break}
2338this.trigger('data',buffer.subarray(syncPoint+3,i-2));syncPoint=i-2;i+=3;break;default:i+=3;break}}
2339buffer=buffer.subarray(syncPoint);i-=syncPoint;syncPoint=0};this.reset=function(){buffer=null;syncPoint=0;this.trigger('reset')};this.flush=function(){if(buffer&&buffer.byteLength>3){this.trigger('data',buffer.subarray(syncPoint+3))}
2340buffer=null;syncPoint=0;this.trigger('done')};this.endTimeline=function(){this.flush();this.trigger('endedtimeline')}};_NalByteStream.prototype=new stream();PROFILES_WITH_OPTIONAL_SPS_DATA={100:!0,110:!0,122:!0,244:!0,44:!0,83:!0,86:!0,118:!0,128:!0,138:!0,139:!0,134:!0};_H264Stream=function H264Stream(){var nalByteStream=new _NalByteStream(),self,trackId,currentPt
2340s,currentDts,discardEmulationPreventionBytes,readSequenceParameterSet,skipScalingList;_H264Stream.prototype.init.call(this);self=this;this.push=function(packet){if(packet.type!=='video'){return}
2341trackId=packet.trackId;currentPts=packet.pts;currentDts=packet.dts;nalByteStream.push(packet)};nalByteStream.on('data',function(data){var event={trackId:trackId,pts:currentPts,dts:currentDts,data:data};switch(data[0]&0x1f){case 0x05:event.nalUnitType='slice_layer_without_partitioning_rbsp_idr';break;case 0x06:event.nalUnitType='sei_rbsp';event.escapedRBSP=discardEmulationPreventionBytes(data.subarray(1));break;case 0x07:event.nalUnitType='seq_parameter_set_rbsp';event.escapedRBSP=discardEmulationPreventionBytes(data.subarray(1));event.config=readSequenceParameterSet(event.escapedRBSP);break;case 0x08:event.nalUnitType='pic_parameter_set_rbsp';break;case 0x09:event.nalUnitType='access_unit_delimiter_rbsp';break;default:break}
2342self.trigger('data',event)});nalByteStream.on('done',function(){self.trigger('done')});nalByteStream.on('partialdone',function(){self.trigger('partialdone')});nalByteStream.on('reset',function(){self.trigger('reset')});nalByteStream.on('endedtimeline',function(){self.trigger('endedtimeline')});this.flush=function(){nalByteStream.flush()};this.partialFlush=function(){nalByteStream.partialFlush()};this.reset=function(){nalByteStream.reset()};this.endTimeline=function(){nalByteStream.endTimeline()};skipScalingList=function skipScalingList(count,expGolombDecoder){var lastScale=8,nextScale=8,j,deltaScale;for(j=0;j<count;j++){if(nextScale!==0){deltaScale=expGolombDecoder.readExpGolomb();nextScale=(lastScale+deltaScale+256)%256}
2343lastScale=nextScale===0?lastScale:nextScale}};discardEmulationPreventionBytes=function discardEmulationPreventionBytes(data){var length=data.byteLength,emulationPreventionBytesPositions=[],i=1,newLength,newData;while(i<length-2){if(data[i]===0&&data[i+1]===0&&data[i+2]===0x03){emulationPreventionBytesPositions.push(i+2);i+=2}else{i++}}
2344if(emulationPreventionBytesPositions.length===0){return data}
2345newLength=length-emulationPreventionBytesPositions.length;newData=new Uint8Array(newLength);var sourceIndex=0;for(i=0;i<newLength;sourceIndex++,i++){if(sourceIndex===emulationPreventionBytesPositions[0]){sourceIndex++;emulationPreventionBytesPositions.shift()}
2346newData[i]=data[sourceIndex]}
2347return newData};readSequenceParameterSet=function readSequenceParameterSet(data){var frameCropLeftOffset=0,frameCropRightOffset=0,frameCropTopOffset=0,frameCropBottomOffset=0,sarScale=1,expGolombDecoder,profileIdc,levelIdc,profileCompatibility,chromaFormatIdc,picOrderCntType,numRefFramesInPicOrderCntCycle,picWidthInMbsMinus1,picHeightInMapUnitsMinus1,frameMbsOnlyFlag,scalingListCount,sarRatio,aspectRatioIdc,i;expGolombDecoder=new expGolomb(data);profileIdc=expGolombDecoder.readUnsignedByte();profileCompatibility=expGolombDecoder.readUnsignedByte();levelIdc=expGolombDecoder.readUnsignedByte();expGolombDecoder.skipUnsignedExpGolomb();if(PROFILES_WITH_OPTIONAL_SPS_DATA[profileIdc]){chromaFormatIdc=expGolombDecoder.readUnsignedExpGolomb();if(chromaFormatIdc===3){expGolombDecoder.skipBits(1)}
2348expGolombDecoder.skipUnsignedExpGolomb();expGolombDecoder.skipUnsignedExpGolomb();expGolombDecoder.skipBits(1);if(expGolombDecoder.readBoolean()){scalingListCount=chromaFormatIdc!==3?8:12;for(i=0;i<scalingListCount;i++){if(expGolombDecoder.readBoolean()){if(i<6){skipScalingList(16,expGolombDecoder)}else{skipScalingList(64,expGolombDecoder)}}}}}
2349expGolombDecoder.skipUnsignedExpGolomb();picOrderCntType=expGolombDecoder.readUnsignedExpGolomb();if(picOrderCntType===0){expGolombDecoder.readUnsignedExpGolomb()}else if(picOrderCntType===1){expGolombDecoder.skipBits(1);expGolombDecoder.skipExpGolomb();expGolombDecoder.skipExpGolomb();numRefFramesInPicOrderCntCycle=expGolombDecoder.readUnsignedExpGolomb();for(i=0;i<numRefFramesInPicOrderCntCycle;i++){expGolombDecoder.skipExpGolomb()}}
2350expGolombDecoder.skipUnsignedExpGolomb();expGolombDecoder.skipBits(1);picWidthInMbsMinus1=expGolombDecoder.readUnsignedExpGolomb();picHeightInMapUnitsMinus1=expGolombDecoder.readUnsignedExpGolomb();frameMbsOnlyFlag=expGolombDecoder.readBits(1);if(frameMbsOnlyFlag===0){expGolombDecoder.skipBits(1)}
2351expGolombDecoder.skipBits(1);if(expGolombDecoder.readBoolean()){frameCropLeftOffset=expGolombDecoder.readUnsignedExpGolomb();frameCropRightOffset=expGolombDecoder.readUnsignedExpGolomb();frameCropTopOffset=expGolombDecoder.readUnsignedExpGolomb();frameCropBottomOffset=expGolombDecoder.readUnsignedExpGolomb()}
2352if(expGolombDecoder.readBoolean()){if(expGolombDecoder.readBoolean()){aspectRatioIdc=expGolombDecoder.readUnsignedByte();switch(aspectRatioIdc){case 1:sarRatio=[1,1];break;case 2:sarRatio=[12,11];break;case 3:sarRatio=[10,11];break;case 4:sarRatio=[16,11];break;case 5:sarRatio=[40,33];break;case 6:sarRatio=[24,11];break;case 7:sarRatio=[20,11];break;case 8:sarRatio=[32,11];break;case 9:sarRatio=[80,33];break;case 10:sarRatio=[18,11];break;case 11:sarRatio=[15,11];break;case 12:sarRatio=[64,33];break;case 13:sarRatio=[160,99];break;case 14:sarRatio=[4,3];break;case 15:sarRatio=[3,2];break;case 16:sarRatio=[2,1];break;case 255:{sarRatio=[expGolombDecoder.readUnsignedByte()<<8|expGolombDecoder.readUnsignedByte(),expGolombDecoder.readUnsignedByte()<<8|expGolombDecoder.readUnsignedByte()];break}}
2353if(sarRatio){sarScale=sarRatio[0]/sarRatio[1]}}}
2354return{profileIdc:profileIdc,levelIdc:levelIdc,profileCompatibility:profileCompatibility,width:Math.ceil(((picWidthInMbsMinus1+1)*16-frameCropLeftOffset*2-frameCropRightOffset*2)*sarScale),height:(2-frameMbsOnlyFlag)*(picHeightInMapUnitsMinus1+1)*16-frameCropTopOffset*2-frameCropBottomOffset*2,
2354sarRatio:sarRatio}}};_H264Stream.prototype=new stream();var h264={H264Stream:_H264Stream,NalByteStream:_NalByteStream};var ADTS_SAMPLING_FREQUENCIES$1=[96000,88200,64000,48000,44100,32000,24000,22050,16000,12000,11025,8000,7350];var isLikelyAacData=function isLikelyAacData(data){if(data[0]==='I'.charCodeAt(0)&&data[1]==='D'.charCodeAt(0)&&data[2]==='3'.charCodeAt(0)){return!0}
2355return!1};var parseSyncSafeInteger$1=function parseSyncSafeInteger(data){return data[0]<<21|data[1]<<14|data[2]<<7|data[3]};var percentEncode$1=function percentEncode(bytes,start,end){var i,result='';for(i=start;i<end;i++){result+='%'+('00'+bytes[i].toString(16)).slice(-2)}
2356return result};var parseIso88591$1=function parseIso88591(bytes,start,end){return unescape(percentEncode$1(bytes,start,end))};var parseId3TagSize=function parseId3TagSize(header,byteIndex){var returnSize=header[byteIndex+6]<<21|header[byteIndex+7]<<14|header[byteIndex+8]<<7|header[byteIndex+9],flags=header[byteIndex+5],footerPresent=(flags&16)>>4;if(footerPresent){return returnSize+20}
2357return returnSize+10};var parseAdtsSize=function parseAdtsSize(header,byteIndex){var lowThree=(header[byteIndex+5]&0xE0)>>5,middle=header[byteIndex+4]<<3,highTwo=header[byteIndex+3]&0x3<<11;return highTwo|middle|lowThree};var parseType=function parseType(header,byteIndex){if(header[byteIndex]==='I'.charCodeAt(0)&&header[byteIndex+1]==='D'.charCodeAt(0)&&header[byteIndex+2]==='3'.charCodeAt(0)){return'timed-metadata'}else if(header[byteIndex]&0xff===0xff&&(header[byteIndex+1]&0xf0)===0xf0){return'audio'}
2358return null};var parseSampleRate=function parseSampleRate(packet){var i=0;while(i+5<packet.length){if(packet[i]!==0xFF||(packet[i+1]&0xF6)!==0xF0){i++;continue}
2359return ADTS_SAMPLING_FREQUENCIES$1[(packet[i+2]&0x3c)>>>2]}
2360return null};var parseAacTimestamp=function parseAacTimestamp(packet){var frameStart,frameSize,frame,frameHeader;frameStart=10;if(packet[5]&0x40){frameStart+=4;frameStart+=parseSyncSafeInteger$1(packet.subarray(10,14))}
2361do{frameSize=parseSyncSafeInteger$1(packet.subarray(frameStart+4,frameStart+8));if(frameSize<1){return null}
2362frameHeader=String.fromCharCode(packet[frameStart],packet[frameStart+1],packet[frameStart+2],packet[frameStart+3]);if(frameHeader==='PRIV'){frame=packet.subarray(frameStart+10,frameStart+frameSize+10);for(var i=0;i<frame.byteLength;i++){if(frame[i]===0){var owner=parseIso88591$1(frame,0,i);if(owner==='com.apple.streaming.transportStreamTimestamp'){var d=frame.subarray(i+1);var size=(d[3]&0x01)<<30|d[4]<<22|d[5]<<14|d[6]<<6|d[7]>>>2;size*=4;size+=d[7]&0x03;return size}
2363break}}}
2364frameStart+=10;frameStart+=frameSize}while(frameStart<packet.byteLength);return null};var utils={isLikelyAacData:isLikelyAacData,parseId3TagSize:parseId3TagSize,parseAdtsSize:parseAdtsSize,parseType:parseType,parseSampleRate:parseSampleRate,parseAacTimestamp:parseAacTimestamp};var _AacStream;_AacStream=function AacStream(){var everything=new Uint8Array(),timeStamp=0;_AacStream.prototype.init.call(this);this.setTimestamp=function(timestamp){timeStamp=timestamp};this.push=function(bytes){var frameSize=0,byteIndex=0,bytesLeft,chunk,packet,tempLength;if(everything.length){tempLength=everything.length;everything=new Uint8Array(bytes.byteLength+tempLength);everything.set(everything.subarray(0,tempLength));everything.set(bytes,tempLength)}else{everything=bytes}
2365while(everything.length-byteIndex>=3){if(everything[byteIndex]==='I'.charCodeAt(0)&&everything[byteIndex+1]==='D'.charCodeAt(0)&&everything[byteIndex+2]==='3'.charCodeAt(0)){if(everything.length-byteIndex<10){break}
2366frameSize=utils.parseId3TagSize(everything,byteIndex);if(byteIndex+frameSize>everything.length){break}
2367chunk={type:'timed-metadata',data:everything.subarray(byteIndex,byteIndex+frameSize)};this.trigger('data',chunk);byteIndex+=frameSize;continue}else if((everything[byteIndex]&0xff)===0xff&&(everything[byteIndex+1]&0xf0)===0xf0){if(everything.length-byteIndex<7){break}
2368frameSize=utils.parseAdtsSize(everything,byteIndex);if(byteIndex+frameSize>everything.length){break}
2369packet={type:'audio',data:everything.subarray(byteIndex,byteIndex+frameSize),pts:timeStamp,dts:timeStamp};this.trigger('data',packet);byteIndex+=frameSize;continue}
2370byteIndex++}
2371bytesLeft=everything.length-byteIndex;if(bytesLeft>0){everything=everything.subarray(byteIndex)}else{everything=new Uint8Array()}};this.reset=function(){everything=new Uint8Array();this.trigger('reset')};this.endTimeline=function(){everything=new Uint8Array();this.trigger('endedtimeline')}};_AacStream.prototype=new stream();var aac=_AacStream;var H264Stream=h264.H264Stream;var isLikelyAacData$1=utils.isLikelyAacData;var ONE_SECOND_IN_TS$3=clock.ONE_SECOND_IN_TS;var AUDIO_PROPERTIES=['audioobjecttype','channelcount','samplerate','samplingfrequencyindex','samplesize'];var VIDEO_PROPERTIES=['width','height','profileIdc','levelIdc','profileCompatibility','sarRatio'];var _VideoSegmentStream,_AudioSegmentStream,_Transmuxer,_CoalesceStream;var arrayEquals=function arrayEquals(a,b){var i;if(a.length!==b.length){return!1}
2372for(i=0;i<a.length;i++){if(a[i]!==b[i]){return!1}}
2373return!0};var generateVideoSegmentTimingInfo=function generateVideoSegmentTimingInfo(baseMediaDecodeTime,startDts,startPts,endDts,endPts,prependedContentDuration){var ptsOffsetFromDts=startPts-startDts,decodeDuration=endDts-startDts,presentationDuration=endPts-startPts;return{start:{dts:baseMediaDecodeTime,pts:baseMediaDecodeTime+ptsOffsetFromDts},end:{dts:baseMediaDecodeTime+decodeDuration,pts:baseMediaDecodeTime+presentationDuration},prependedContentDuration:prependedContentDuration,baseMediaDecodeTime:baseMediaDecodeTime}};_AudioSegmentStream=function AudioSegmentStream(track,options){var adtsFrames=[],sequenceNumber=0,earliestAllowedDts=0,audioAppendStartTs=0,videoBaseMediaDecodeTime=Infinity;options=options||{};_AudioSegmentStream.prototype.init.call(this);this.push=function(data){trackDecodeInfo.collectDtsInfo(track,data);if(track){AUDIO_PROPERTIES.forEach(function(prop){track[prop]=data[prop]})}
2374adtsFrames.push(data)};this.setEarliestDts=function(earliestDts){earliestAllowedDts=earliestDts-track.timelineStartInfo.baseMediaDecodeTime};this.setVideoBaseMediaDecodeTime=function(baseMediaDecodeTime){videoBaseMediaDecodeTime=baseMediaDecodeTime};this.setAudioAppendStart=function(timestamp){audioAppendStartTs=timestamp};this.flush=function(){var frames,moof,mdat,boxes,frameDuration;if(adtsFrames.length===0){this.trigger('done','AudioSegmentStream');return}
2375frames=audioFrameUtils.trimAdtsFramesByEarliestDts(adtsFrames,track,earliestAllowedDts);track.baseMediaDecodeTime=trackDecodeInfo.calculateTrackBaseMediaDecodeTime(track,options.keepOriginalTimestamps);audioFrameUtils.prefixWithSilence(track,frames,audioAppendStartTs,videoBaseMediaDecodeTime);track.samples=audioFrameUtils.generateSampleTable(frames);mdat=mp4Generator.mdat(audioFrameUtils.concatenateFrameData(frames));adtsFrames=[];moof=mp4Generator.moof(sequenceNumber,[track]);boxes=new Uint8Array(moof.byteLength+mdat.byteLength);sequenceNumber++;boxes.set(moof);boxes.set(mdat,moof.byteLength);trackDecodeInfo.clearDtsInfo(track);frameDuration=Math.ceil(ONE_SECOND_IN_TS$3*1024/track.samplerate);if(frames.length){this.trigger('timingInfo',{start:frames[0].dts,end:frames[0].dts+frames.length*frameDuration})}
2376this.trigger('data',{track:track,boxes:boxes});this.trigger('done','AudioSegmentStream')};this.reset=function(){trackDecodeInfo.clearDtsInfo(track);adtsFrames=[];this.trigger('reset')}};_AudioSegmentStream.prototype=new stream();_VideoSegmentStream=function VideoSegmentStream(track,options){var sequenceNumber=0,nalUnits=[],gopsToAlignWith=[],config,pps;options=options||{};_VideoSegmentStream.prototype.init.call(this);delete track.minPTS;this.gopCache_=[];this.push=function(nalUnit){trackDecodeInfo.collectDtsInfo(track,nalUnit);if(nalUnit.nalUnitType==='seq_parameter_set_rbsp'&&!config){config=nalUnit.config;track.sps=[nalUnit.data];VIDEO_PROPERTIES.forEach(function(prop){track[prop]=config[prop]},this)}
2377if(nalUnit.nalUnitType==='pic_parameter_set_rbsp'&&!pps){pps=nalUnit.data;track.pps=[nalUnit.data]}
2378nalUnits.push(nalUnit)};this.flush=function(){var frames,gopForFusion,gops,moof,mdat,boxes,prependedContentDuration=0,firstGop,lastGop;while(nalUnits.length){if(nalUnits[0].nalUnitType==='access_unit_delimiter_rbsp'){break}
2379nalUnits.shift()}
2380if(nalUnits.length===0){this.resetStream_();this.trigger('done','VideoSegmentStream');return}
2381frames=frameUtils.groupNalsIntoFrames(nalUnits);gops=frameUtils.groupFramesIntoGops(frames);if(!gops[0][0].keyFrame){gopForFusion=this.getGopForFusion_(nalUnits[0],track);if(gopForFusion){prependedContentDuration=gopForFusion.duration;gops.unshift(gopForFusion);gops.byteLength+=gopForFusion.byteLength;gops.nalCount+=gopForFusion.nalCount;gops.pts=gopForFusion.pts;gops.dts=gopForFusion.dts;gops.duration+=gopForFusion.duration}else{gops=frameUtils.extendFirstKeyFrame(gops)}}
2382if(gopsToAlignWith.length){var alignedGops;if(options.alignGopsAtEnd){alignedGops=this.alignGopsAtEnd_(gops)}else{alignedGops=this.alignGopsAtStart_(gops)}
2383if(!alignedGops){this.gopCache_.unshift({gop:gops.pop(),pps:track.pps,sps:track.sps});this.gopCache_.length=Math.min(6,this.gopCache_.length);nalUnits=[];this.resetStream_();this.trigger('done','VideoSegmentStream');return}
2384trackDecodeInfo.clearDtsInfo(track);gops=alignedGops}
2385trackDecodeInfo.collectDtsInfo(track,gops);track.samples=frameUtils.generateSampleTable(gops);mdat=mp4Generator.mdat(frameUtils.concatenateNalData(gops));track.baseMediaDecodeTime=trackDecodeInfo.calculateTrackBaseMediaDecodeTime(track,options.keepOriginalTimestamps);this.trigger('processedGopsInfo',gops.map(function(gop){return{pts:gop.pts,dts:gop.dts,byteLength:gop.byteLength}}));firstGop=gops[0];lastGop=gops[gops.length-1];this.trigger('segmentTimingInfo',generateVideoSegmentTimingInfo(track.baseMediaDecodeTime,firstGop.dts,firstGop.pts,lastGop.dts+lastGop.duration,lastGop.pts+lastGop.duration,prependedContentDuration));this.trigger('timingInfo',{start:gops[0].dts,end:gops[gops.length-1].dts+gops[gops.length-1].duration});this.gopCache_.unshift({gop:gops.pop(),pps:track.pps,sps:track.sps});this.gopCache_.length=Math.min(6,this.gopCache_.length);nalUnits=[];this.trigger('baseMediaDecodeTime',track.baseMediaDecodeTime);this.trigger('timelineStartInfo',track.timelineStartInfo);moof=mp4Generator.moof(sequenceNumber,[track]);boxes=new Uint8Array(moof.byteLength+mdat.byteLength);sequenceNumber++;boxes.set(moof);boxes.set(mdat,moof.byteLength);this.trigger('data',{track:track,boxes:boxes});this.resetStream_();this.trigger('done','VideoSegmentStream')};this.reset=function(){this.resetStream_();nalUnits=[];this.gopCache_.length=0;gopsToAlignWith.length=0;this.trigger('reset')};this.resetStream_=function(){trackDecodeInfo.clearDtsInfo(track);config=undefined;pps=undefined};this.getGopForFusion_=function(nalUnit){var halfSecond=45000,allowableOverlap=10000,nearestDistance=Infinity,dtsDistance,nearestGopObj,currentGop,currentGopObj,i;for(i=0;i<this.gopCache_.length;i++){currentGopObj=this.gopCache_[i];currentGop=currentGopObj.gop;if(!(track.pps&&arrayEquals(track.pps[0],currentGopObj.pps[0]))||!(track.sps&&arrayEquals(track.sps[0],currentGopObj.sps[0]))){continue}
2386if(currentGop.dts<track.timelineStartInfo.dts){continue}
2387dtsDistance=nalUnit.dts-currentGop.dts-currentGop.duration;if(dtsDistance>=-allowableOverlap&&dtsDistance<=halfSecond){if(!nearestGopObj||nearestDistance>dtsDistance){nearestGopObj=currentGopObj;nearestDistance=dtsDistance}}}
2388if(nearestGopObj){return nearestGopObj.gop}
2389return null};this.alignGopsAtStart_=function(gops){var alignIndex,gopIndex,align,gop,byteLength,nalCount,duration,alignedGops;byteLength=gops.byteLength;nalCount=gops.nalCount;duration=gops.duration;alignIndex=gopIndex=0;while(alignIndex<gopsToAlignWith.length&&gopIndex<gops.length){align=gopsToAlignWith[alignIndex];gop=gops[gopIndex];if(align.pts===gop.pts){break}
2390if(gop.pts>align.pts){alignIndex++;continue}
2391gopIndex++;byteLength-=gop.byteLength;nalCount-=gop.nalCount;duration-=gop.duration}
2392if(gopIndex===0){return gops}
2393if(gopIndex===gops.length){return null}
2394alignedGops=gops.slice(gopIndex);alignedGops.byteLength=byteLength;alignedGops.duration=duration;alignedGops.nalCount=nalCount;alignedGops.pts=alignedGops[0].pts;alignedGops.dts=alignedGops[0].dts;return alignedGops};this.alignGopsAtEnd_=function(gops){var alignIndex,gopIndex,align,gop,alignEndIndex,matchFound;alignIndex=gopsToAlignWith.length-1;gopIndex=gops.length-1;alignEndIndex=null;matchFound=!1;while(alignIndex>=0&&gopIndex>
2394=0){align=gopsToAlignWith[alignIndex];gop=gops[gopIndex];if(align.pts===gop.pts){matchFound=!0;break}
2395if(align.pts>gop.pts){alignIndex--;continue}
2396if(alignIndex===gopsToAlignWith.length-1){alignEndIndex=gopIndex}
2397gopIndex--}
2398if(!matchFound&&alignEndIndex===null){return null}
2399var trimIndex;if(matchFound){trimIndex=gopIndex}else{trimIndex=alignEndIndex}
2400if(trimIndex===0){return gops}
2401var alignedGops=gops.slice(trimIndex);var metadata=alignedGops.reduce(function(total,gop){total.byteLength+=gop.byteLength;total.duration+=gop.duration;total.nalCount+=gop.nalCount;return total},{byteLength:0,duration:0,nalCount:0});alignedGops.byteLength=metadata.byteLength;alignedGops.duration=metadata.duration;alignedGops.nalCount=metadata.nalCount;alignedGops.pts=alignedGops[0].pts;alignedGops.dts=alignedGops[0].dts;return alignedGops};this.alignGopsWith=function(newGopsToAlignWith){gopsToAlignWith=newGopsToAlignWith}};_VideoSegmentStream.prototype=new stream();_CoalesceStream=function CoalesceStream(options,metadataStream){this.numberOfTracks=0;this.metadataStream=metadataStream;options=options||{};if(typeof options.remux!=='undefined'){this.remuxTracks=!!options.remux}else{this.remuxTracks=!0}
2402if(typeof options.keepOriginalTimestamps==='boolean'){this.keepOriginalTimestamps=options.keepOriginalTimestamps}else{this.keepOriginalTimestamps=!1}
2403this.pendingTracks=[];this.videoTrack=null;this.pendingBoxes=[];this.pendingCaptions=[];this.pendingMetadata=[];this.pendingBytes=0;this.emittedTracks=0;_CoalesceStream.prototype.init.call(this);this.push=function(output){if(output.text){return this.pendingCaptions.push(output)}
2404if(output.frames){return this.pendingMetadata.push(output)}
2405this.pendingTracks.push(output.track);this.pendingBytes+=output.boxes.byteLength;if(output.track.type==='video'){this.videoTrack=output.track;this.pendingBoxes.push(output.boxes)}
2406if(output.track.type==='audio'){this.audioTrack=output.track;this.pendingBoxes.unshift(output.boxes)}}};_CoalesceStream.prototype=new stream();_CoalesceStream.prototype.flush=function(flushSource){var offset=0,event={captions:[],captionStreams:{},metadata:[],info:{}},caption,id3,initSegment,timelineStartPts=0,i;if(this.pendingTracks.length<this.numberOfTracks){if(flushSource!=='VideoSegmentStream'&&flushSource!=='AudioSegmentStream'){return}else if(this.remuxTracks){return}else if(this.pendingTracks.length===0){this.emittedTracks++;if(this.emittedTracks>=this.numberOfTracks){this.trigger('done');this.emittedTracks=0}
2407return}}
2408if(this.videoTrack){timelineStartPts=this.videoTrack.timelineStartInfo.pts;VIDEO_PROPERTIES.forEach(function(prop){event.info[prop]=this.videoTrack[prop]},this)}else if(this.audioTrack){timelineStartPts=this.audioTrack.timelineStartInfo.pts;AUDIO_PROPERTIES.forEach(function(prop){event.info[prop]=this.audioTrack[prop]},this)}
2409if(this.videoTrack||this.audioTrack){if(this.pendingTracks.length===1){event.type=this.pendingTracks[0].type}else{event.type='combined'}
2410this.emittedTracks+=this.pendingTracks.length;initSegment=mp4Generator.initSegment(this.pendingTracks);event.initSegment=new Uint8Array(initSegment.byteLength);event.initSegment.set(initSegment);event.data=new Uint8Array(this.pendingBytes);for(i=0;i<this.pendingBoxes.length;i++){event.data.set(this.pendingBoxes[i],offset);offset+=this.pendingBoxes[i].byteLength}
2411for(i=0;i<this.pendingCaptions.length;i++){caption=this.pendingCaptions[i];caption.startTime=clock.metadataTsToSeconds(caption.startPts,timelineStartPts,this.keepOriginalTimestamps);caption.endTime=clock.metadataTsToSeconds(caption.endPts,timelineStartPts,this.keepOriginalTimestamps);event.captionStreams[caption.stream]=!0;event.captions.push(caption)}
2412for(i=0;i<this.pendingMetadata.length;i++){id3=this.pendingMetadata[i];id3.cueTime=clock.metadataTsToSeconds(id3.pts,timelineStartPts,this.keepOriginalTimestamps);event.metadata.push(id3)}
2413event.metadata.dispatchType=this.metadataStream.dispatchType;this.pendingTracks.length=0;this.videoTrack=null;this.pendingBoxes.length=0;this.pendingCaptions.length=0;this.pendingBytes=0;this.pendingMetadata.length=0;this.trigger('data',event);for(i=0;i<event.captions.length;i++){caption=event.captions[i];this.trigger('caption',caption)}
2414for(i=0;i<event.metadata.length;i++){id3=event.metadata[i];this.trigger('id3Frame',id3)}}
2415if(this.emittedTracks>=this.numberOfTracks){this.trigger('done');this.emittedTracks=0}};_CoalesceStream.prototype.setRemux=function(val){this.remuxTracks=val};_Transmuxer=function Transmuxer(options){var self=this,hasFlushed=!0,videoTrack,audioTrack;_Transmuxer.prototype.init.call(this);options=options||{};this.baseMediaDecodeTime=options.baseMediaDecodeTime||0;this.transmuxPipeline_={};this.setupAacPipeline=function(){var pipeline={};this.transmuxPipeline_=pipeline;pipeline.type='aac';pipeline.metadataStream=new m2ts_1.MetadataStream();
2415pipeline.aacStream=new aac();pipeline.audioTimestampRolloverStream=new m2ts_1.TimestampRolloverStream('audio');pipeline.timedMetadataTimestampRolloverStream=new m2ts_1.TimestampRolloverStream('timed-metadata');pipeline.adtsStream=new adts();pipeline.coalesceStream=new _CoalesceStream(options,pipeline.metadataStream);pipeline.headOfPipeline=pipeline.aacStream;pipeline.aacStream.pipe(pipeline.audioTimestampRolloverStream).pipe(pipeline.adtsStream);pipeline.aacStream.pipe(pipeline.timedMetadataTimestampRolloverStream).pipe(pipeline.metadataStream).pipe(pipeline.coalesceStream);pipeline.metadataStream.on('timestamp',function(frame){pipeline.aacStream.setTimestamp(frame.timeStamp)});pipeline.aacStream.on('data',function(data){if(data.type==='timed-metadata'&&!pipeline.audioSegmentStream){audioTrack=audioTrack||{timelineStartInfo:{baseMediaDecodeTime:self.baseMediaDecodeTime},codec:'adts',type:'audio'};pipeline.coalesceStream.numberOfTracks++;pipeline.audioSegmentStream=new _AudioSegmentStream(audioTrack,options);pipeline.audioSegmentStream.on('timingInfo',self.trigger.bind(self,'audioTimingInfo'));pipeline.adtsStream.pipe(pipeline.audioSegmentStream).pipe(pipeline.coalesceStream)}
2416self.trigger('trackinfo',{hasAudio:!!audioTrack,hasVideo:!!videoTrack})});pipeline.coalesceStream.on('data',this.trigger.bind(this,'data'));pipeline.coalesceStream.on('done',this.trigger.bind(this,'done'))};this.setupTsPipeline=function(){var pipeline={};this.transmuxPipeline_=pipeline;pipeline.type='ts';pipeline.metadataStream=new m2ts_1.MetadataStream();pipeline.packetStream=new m2ts_1.TransportPacketStream();pipeline.parseStream=new m2ts_1.TransportParseStream();pipeline.elementaryStream=new m2ts_1.ElementaryStream();pipeline.timestampRolloverStream=new m2ts_1.TimestampRolloverStream();pipeline.adtsStream=new adts();pipeline.h264Stream=new H264Stream();pipeline.captionStream=new m2ts_1.CaptionStream();pipeline.coalesceStream=new _CoalesceStream(options,pipeline.metadataStream);pipeline.headOfPipeline=pipeline.packetStream;pipeline.packetStream.pipe(pipeline.parseStream).pipe(pipeline.elementaryStream).pipe(pipeline.timestampRolloverStream);pipeline.timestampRolloverStream.pipe(pipeline.h264Stream);pipeline.timestampRolloverStream.pipe(pipeline.adtsStream);pipeline.timestampRolloverStream.pipe(pipeline.metadataStream).pipe(pipeline.coalesceStream);pipeline.h264Stream.pipe(pipeline.captionStream).pipe(pipeline.coalesceStream);pipeline.elementaryStream.on('data',function(data){var i;if(data.type==='metadata'){i=data.tracks.length;while(i--){if(!videoTrack&&data.tracks[i].type==='video'){videoTrack=data.tracks[i];videoTrack.timelineStartInfo.baseMediaDecodeTime=self.baseMediaDecodeTime}else if(!audioTrack&&data.tracks[i].type==='audio'){audioTrack=data.tracks[i];audioTrack.timelineStartInfo.baseMediaDecodeTime=self.baseMediaDecodeTime}}
2417if(videoTrack&&!pipeline.videoSegmentStream){pipeline.coalesceStream.numberOfTracks++;pipeline.videoSegmentStream=new _VideoSegmentStream(videoTrack,options);pipeline.videoSegmentStream.on('timelineStartInfo',function(timelineStartInfo){if(audioTrack){audioTrack.timelineStartInfo=timelineStartInfo;pipeline.audioSegmentStream.setEarliestDts(timelineStartInfo.dts)}});pipeline.videoSegmentStream.on('processedGopsInfo',self.trigger.bind(self,'gopInfo'));pipeline.videoSegmentStream.on('segmentTimingInfo',self.trigger.bind(self,'videoSegmentTimingInfo'));pipeline.videoSegmentStream.on('baseMediaDecodeTime',function(baseMediaDecodeTime){if(audioTrack){pipeline.audioSegmentStream.setVideoBaseMediaDecodeTime(baseMediaDecodeTime)}});pipeline.videoSegmentStream.on('timingInfo',self.trigger.bind(self,'videoTimingInfo'));pipeline.h264Stream.pipe(pipeline.videoSegmentStream).pipe(pipeline.coalesceStream)}
2418if(audioTrack&&!pipeline.audioSegmentStream){pipeline.coalesceStream.numberOfTracks++;pipeline.audioSegmentStream=new _AudioSegmentStream(audioTrack,options);pipeline.audioSegmentStream.on('timingInfo',self.trigger.bind(self,'audioTimingInfo'));pipeline.adtsStream.pipe(pipeline.audioSegmentStream).pipe(pipeline.coalesceStream)}
2419self.trigger('trackinfo',{hasAudio:!!audioTrack,hasVideo:!!videoTrack})}});pipeline.coalesceStream.on('data',this.trigger.bind(this,'data'));pipeline.coalesceStream.on('id3Frame',function(id3Frame){id3Frame.dispatchType=pipeline.metadataStream.dispatchType;self.trigger('id3Frame',id3Frame)});pipeline.coalesceStream.on('caption',this.trigger.bind(this,'caption'));pipeline.coalesceStream.on('done',this.trigger.bind(this,'done'))};this.setBaseMediaDecodeTime=function(baseMediaDecodeTime){var pipeline=this.transmuxPipeline_;if(!options.keepOriginalTimestamps){this.baseMediaDecodeTime=baseMediaDecodeTime}
2420if(audioTrack){audioTrack.timelineStartInfo.dts=undefined;
2420audioTrack.timelineStartInfo.pts=undefined;trackDecodeInfo.clearDtsInfo(audioTrack);if(!options.keepOriginalTimestamps){audioTrack.timelineStartInfo.baseMediaDecodeTime=baseMediaDecodeTime}
2421if(pipeline.audioTimestampRolloverStream){pipeline.audioTimestampRolloverStream.discontinuity()}}
2422if(videoTrack){if(pipeline.videoSegmentStream){pipeline.videoSegmentStream.gopCache_=[]}
2423videoTrack.timelineStartInfo.dts=undefined;videoTrack.timelineStartInfo.pts=undefined;trackDecodeInfo.clearDtsInfo(videoTrack);pipeline.captionStream.reset();if(!options.keepOriginalTimestamps){videoTrack.timelineStartInfo.baseMediaDecodeTime=baseMediaDecodeTime}}
2424if(pipeline.timestampRolloverStream){pipeline.timestampRolloverStream.discontinuity()}};this.setAudioAppendStart=function(timestamp){if(audioTrack){this.transmuxPipeline_.audioSegmentStream.setAudioAppendStart(timestamp)}};this.setRemux=function(val){var pipeline=this.transmuxPipeline_;options.remux=val;if(pipeline&&pipeline.coalesceStream){pipeline.coalesceStream.setRemux(val)}};this.alignGopsWith=function(gopsToAlignWith){if(videoTrack&&this.transmuxPipeline_.videoSegmentStream){this.transmuxPipeline_.videoSegmentStream.alignGopsWith(gopsToAlignWith)}};this.push=function(data){if(hasFlushed){var isAac=isLikelyAacData$1(data);if(isAac&&this.transmuxPipeline_.type!=='aac'){this.setupAacPipeline()}else if(!isAac&&this.transmuxPipeline_.type!=='ts'){this.setupTsPipeline()}
2425hasFlushed=!1}
2426this.transmuxPipeline_.headOfPipeline.push(data)};this.flush=function(){hasFlushed=!0;this.transmuxPipeline_.headOfPipeline.flush()};this.endTimeline=function(){this.transmuxPipeline_.headOfPipeline.endTimeline()};this.reset=function(){if(this.transmuxPipeline_.headOfPipeline){this.transmuxPipeline_.headOfPipeline.reset()}};this.resetCaptions=function(){if(this.transmuxPipeline_.captionStream){this.transmuxPipeline_.captionStream.reset()}}};_Transmuxer.prototype=new stream();var transmuxer={Transmuxer:_Transmuxer,VideoSegmentStream:_VideoSegmentStream,AudioSegmentStream:_AudioSegmentStream,AUDIO_PROPERTIES:AUDIO_PROPERTIES,VIDEO_PROPERTIES:VIDEO_PROPERTIES,generateVideoSegmentTimingInfo:generateVideoSegmentTimingInfo};var classCallCheck=function classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}};var createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1;descriptor.configurable=!0;if("value" in descriptor)descriptor.writable=!0;Object.defineProperty(target,descriptor.key,descriptor)}}
2427return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var wireTransmuxerEvents=function wireTransmuxerEvents(self,transmuxer$$1){transmuxer$$1.on('data',function(segment){var initArray=segment.initSegment;segment.initSegment={data:initArray.buffer,byteOffset:initArray.byteOffset,byteLength:initArray.byteLength};var typedArray=segment.data;segment.data=typedArray.buffer;self.postMessage({action:'data',segment:segment,byteOffset:typedArray.byteOffset,byteLength:typedArray.byteLength},[segment.data])});if(transmuxer$$1.captionStream){transmuxer$$1.captionStream.on('data',function(caption){self.postMessage({action:'caption',data:caption})})}
2428transmuxer$$1.on('done',function(data){self.postMessage({action:'done'})});transmuxer$$1.on('gopInfo',function(gopInfo){self.postMessage({action:'gopInfo',gopInfo:gopInfo})});transmuxer$$1.on('videoSegmentTimingInfo',function(videoSegmentTimingInfo){self.postMessage({action:'videoSegmentTimingInfo',videoSegmentTimingInfo:videoSegmentTimingInfo})})};var MessageHandlers=function(){function MessageHandlers(self,options){classCallCheck(this,MessageHandlers);this.options=options||{};this.self=self;this.init()}
2429createClass(MessageHandlers,[{key:'init',value:function init(){if(this.transmuxer){this.transmuxer.dispose()}
2430this.transmuxer=new transmuxer.Transmuxer(this.options);wireTransmuxerEvents(this.self,this.transmuxer)}},{key:'push',value:function push(data){var segment=new Uint8Array(data.data,data.byteOffset,data.byteLength);this.transmuxer.push(segment)}},{key:'reset',value:function reset(){this.init()}},{key:'setTimestampOffset',value:function setTimestampOffset(data){var timestampOffset=data.timestampOffset||0;this.transmuxer.setBaseMediaDecodeTime(Math.round(timestampOffset*90000))}},{key:'setAudioAppendStart',value:function setAudioAppendStart(data){this.transmuxer.setAudioAppendStart(Math.ceil(data.appendStart*90000))}},{key:'flush',value:function flush(data){this.transmuxer.flush()}},{key:'resetCaptions',value:function resetCaptions(){this.transmuxer.resetCaptions()}},{key:'alignGopsWith',value:function alignGopsWith(data){this.transmuxer.alignGopsWith(data.gopsToAlignWith.slice())}}]);return MessageHandlers}();var TransmuxerWorker=function TransmuxerWorker(self){self.onmessage=function(event){if(event.data.action==='init'&&event.data.options){this.messageHandlers=new MessageHandlers(self,event.data.options);return}
2431if(!this.messageHandlers){this.messageHandlers=new MessageHandlers(self)}
2432if(event.data&&event.data.action&&event.data.action!=='init'){if(this.messageHandlers[event.data.action]){this.messageHandlers[event.data.action](event.data)}}}};var transmuxerWorker=new TransmuxerWorker(self);return transmuxerWorker}()});var defaultCodecs={videoCodec:'avc1',videoObjectTypeIndicator:'.4d400d',audioProfile:'2'};var translateLegacyCodecs=function translateLegacyCodecs(codecs){return codecs.map(function(codec){return codec.replace(/avc1\.(\d+)\.(\d+)/i,function(orig,profile,avcLevel){var profileHex=('00'+Number(profile).toString(16)).slice(-2);var avcLevelHex=('00'+Number(avcLevel).toString(16)).slice(-2);return'avc1.'+profileHex+'00'+avcLevelHex})})};var parseCodecs=function parseCodecs(){var codecs=arguments.length>0&&arguments[0]!==undefined?arguments[0]:'';var result={codecCount:0};var parsed=void 0;result.codecCount=codecs.split(',').length;result.codecCount=result.codecCount||2;parsed=/(^|\s|,)+(avc[13])([^ ,]*)/i.exec(codecs);if(parsed){result.videoCodec=parsed[2];result.videoObjectTypeIndicator=parsed[3]}
2433result.audioProfile=/(^|\s|,)+mp4a.[0-9A-Fa-f]+\.([0-9A-Fa-f]+)/i.exec(codecs);result.audioProfile=result.audioProfile&&result.audioProfile[2];return result};var mapLegacyAvcCodecs=function mapLegacyAvcCodecs(codecString){return codecString.replace(/avc1\.(\d+)\.(\d+)/i,function(match){return translateLegacyCodecs([match])[0]})};var makeMimeTypeString=function makeMimeTypeString(type,container,codecs){return type+'/'+container+'; codecs="'+codecs.filter(function(c){return!!c}).join(', ')+'"'};var getContainerType=function getContainerType(media){if(media.segments&&media.segments.length&&media.segments[0].map){return'mp4'}
2434return'mp2t'};var getCodecs=function getCodecs(media){var mediaAttributes=media.attributes||{};if(mediaAttributes.CODECS){return parseCodecs(mediaAttributes.CODECS)}
2435return defaultCodecs};var audioProfileFromDefault=function audioProfileFromDefault(master,audioGroupId){if(!master.mediaGroups.AUDIO||!audioGroupId){return null}
2436var audioGroup=master.mediaGroups.AUDIO[audioGroupId];if(!audioGroup){return null}
2437for(var name in audioGroup){var audioType=audioGroup[name];if(audioType["default"]&&audioType.playlists){return parseCodecs(audioType.playlists[0].attributes.CODECS).audioProfile}}
2438return null};var mimeTypesForPlaylist=function mimeTypesForPlaylist(master,media){var containerType=getContainerType(media);var codecInfo=getCodecs(media);var mediaAttributes=media.attributes||{};var isMuxed=!0;var isMaat=!1;if(!media){return[]}
2439if(master.mediaGroups.AUDIO&&mediaAttributes.AUDIO){var audioGroup=master.mediaGroups.AUDIO[mediaAttributes.AUDIO];if(audioGroup){isMaat=!0;isMuxed=!1;for(var groupId in audioGroup){if(!audioGroup[groupId].uri&&!audioGroup[groupId].playlists){isMuxed=!0;break}}}}
2440if(isMaat&&!codecInfo.audioProfile){if(!isMuxed){codecInfo.audioProfile=audioProfileFromDefault(master,mediaAttributes.AUDIO)}
2441if(!codecInfo.audioProfile){videojs$1.log.warn('Multiple audio tracks present but no audio codec string is specified. '+'Attempting to use the default audio codec (mp4a.40.2)');codecInfo.audioProfile=defaultCodecs.audioProfile}}
2442var codecStrings={};if(codecInfo.videoCodec){codecStrings.video=''+codecInfo.videoCodec+codecInfo.videoObjectTypeIndicator}
2443if(codecInfo.audioProfile){codecStrings.audio='mp4a.40.'+codecInfo.audioProfile}
2444var justAudio=makeMimeTypeString('audio',containerType,[codecStrings.audio]);var justVideo=makeMimeTypeString('video',containerType,[codecStrings.video]);var bothVideoAudio=makeMimeTypeString('video',containerType,[codecStrings.video,codecStrings.audio]);
2444if(isMaat){if(!isMuxed&&codecStrings.video){return[justVideo,justAudio]}
2445if(!isMuxed&&!codecStrings.video){return[justAudio,justAudio]}
2446return[bothVideoAudio,justAudio]}
2447if(!codecStrings.video){return[justAudio]}
2448return[bothVideoAudio]};var parseContentType=function parseContentType(type){var object={type:'',parameters:{}};var parameters=type.trim().split(';');object.type=parameters.shift().trim();parameters.forEach(function(parameter){var pair=parameter.trim().split('=');if(pair.length>1){var name=pair[0].replace(/"/g,'').trim();var value=pair[1].replace(/"/g,'').trim();object.parameters[name]=value}});return object};var isAudioCodec=function isAudioCodec(codec){return/mp4a\.\d+.\d+/i.test(codec)};var isVideoCodec=function isVideoCodec(codec){return/avc1\.[\da-f]+/i.test(codec)};var gopsSafeToAlignWith=function gopsSafeToAlignWith(buffer,currentTime,mapping){if(typeof currentTime==='undefined'||currentTime===null||!buffer.length){return[]}
2449var currentTimePts=Math.ceil((currentTime-mapping+3)*90000);var i=void 0;for(i=0;i<buffer.length;i++){if(buffer[i].pts>currentTimePts){break}}
2450return buffer.slice(i)};var updateGopBuffer=function updateGopBuffer(buffer,gops,replace){if(!gops.length){return buffer}
2451if(replace){return gops.slice()}
2452var start=gops[0].pts;var i=0;for(i;i<buffer.length;i++){if(buffer[i].pts>=start){break}}
2453return buffer.slice(0,i).concat(gops)};var removeGopBuffer=function removeGopBuffer(buffer,start,end,mapping){var startPts=Math.ceil((start-mapping)*90000);var endPts=Math.ceil((end-mapping)*90000);var updatedBuffer=buffer.slice();var i=buffer.length;while(i--){if(buffer[i].pts<=endPts){break}}
2454if(i===-1){return updatedBuffer}
2455var j=i+1;while(j--){if(buffer[j].pts<=startPts){break}}
2456j=Math.max(j,0);updatedBuffer.splice(j,i-j+1);return updatedBuffer};var buffered=function buffered(videoBuffer,audioBuffer,audioDisabled){var start=null;var end=null;var arity=0;var extents=[];var ranges=[];if(!videoBuffer&&!audioBuffer){return videojs$1.createTimeRange()}
2457if(!videoBuffer){return audioBuffer.buffered}
2458if(!audioBuffer){return videoBuffer.buffered}
2459if(audioDisabled){return videoBuffer.buffered}
2460if(videoBuffer.buffered.length===0&&audioBuffer.buffered.length===0){return videojs$1.createTimeRange()}
2461var videoBuffered=videoBuffer.buffered;var audioBuffered=audioBuffer.buffered;var count=videoBuffered.length;while(count--){extents.push({time:videoBuffered.start(count),type:'start'});extents.push({time:videoBuffered.end(count),type:'end'})}
2462count=audioBuffered.length;while(count--){extents.push({time:audioBuffered.start(count),type:'start'});extents.push({time:audioBuffered.end(count),type:'end'})}
2463extents.sort(function(a,b){return a.time-b.time});for(count=0;count<extents.length;count++){if(extents[count].type==='start'){arity++;if(arity===2){start=extents[count].time}}else if(extents[count].type==='end'){arity--;if(arity===1){end=extents[count].time}}
2464if(start!==null&&end!==null){ranges.push([start,end]);start=null;end=null}}
2465return videojs$1.createTimeRanges(ranges)};var ONE_SECOND_IN_TS$2=90000;var makeWrappedSourceBuffer=function makeWrappedSourceBuffer(mediaSource,mimeType){var sourceBuffer=mediaSource.addSourceBuffer(mimeType);var wrapper=Object.create(null);wrapper.updating=!1;wrapper.realBuffer_=sourceBuffer;var _loop=function _loop(key){if(typeof sourceBuffer[key]==='function'){wrapper[key]=function(){return sourceBuffer[key].apply(sourceBuffer,arguments)}}else if(typeof wrapper[key]==='undefined'){Object.defineProperty(wrapper,key,{get:function get$$1(){return sourceBuffer[key]},set:function set$$1(v){return sourceBuffer[key]=v}})}};for(var key in sourceBuffer){_loop(key)}
2466return wrapper};var VirtualSourceBuffer=function(_videojs$EventTarget){inherits$2(VirtualSourceBuffer,_videojs$EventTarget);function VirtualSourceBuffer(mediaSource,codecs){classCallCheck$1(this,VirtualSourceBuffer);var _this=possibleConstructorReturn$1(this,(VirtualSourceBuffer.__proto__||Object.getPrototypeOf(VirtualSourceBuffer)).call(this,videojs$1.EventTarget));_this.timestampOffset_=0;_this.pendingBuffers_=[];_this.bufferUpdating_=!1;_this.mediaSource_=mediaSource;_this.codecs_=codecs;_this.audioCodec_=null;_this.videoCodec_=null;_this.audioDisabled_=!1;_this.appendAudioInitSegment_=!0;_this.gopBuffer_=[];_this.timeMapping_=0;_this.safeAppend_=videojs$1.browser.IE_VERSION>=11;var options={remux:!1,alignGopsAtEnd:_this.safeAppend_};
2466_this.codecs_.forEach(function(codec){if(isAudioCodec(codec)){_this.audioCodec_=codec}else if(isVideoCodec(codec)){_this.videoCodec_=codec}});_this.transmuxer_=new TransmuxWorker();_this.transmuxer_.postMessage({action:'init',options:options});_this.transmuxer_.onmessage=function(event){if(event.data.action==='data'){return _this.data_(event)}
2467if(event.data.action==='done'){return _this.done_(event)}
2468if(event.data.action==='gopInfo'){return _this.appendGopInfo_(event)}
2469if(event.data.action==='videoSegmentTimingInfo'){return _this.videoSegmentTimingInfo_(event.data.videoSegmentTimingInfo)}};Object.defineProperty(_this,'timestampOffset',{get:function get$$1(){return this.timestampOffset_},set:function set$$1(val){if(typeof val==='number'&&val>=0){this.timestampOffset_=val;this.appendAudioInitSegment_=!0;this.gopBuffer_.length=0;this.timeMapping_=0;this.transmuxer_.postMessage({action:'setTimestampOffset',timestampOffset:val})}}});Object.defineProperty(_this,'appendWindowStart',{get:function get$$1(){return(this.videoBuffer_||this.audioBuffer_).appendWindowStart},set:function set$$1(start){if(this.videoBuffer_){this.videoBuffer_.appendWindowStart=start}
2470if(this.audioBuffer_){this.audioBuffer_.appendWindowStart=start}}});Object.defineProperty(_this,'updating',{get:function get$$1(){return!!(this.bufferUpdating_||!this.audioDisabled_&&this.audioBuffer_&&this.audioBuffer_.updating||this.videoBuffer_&&this.videoBuffer_.updating)}});Object.defineProperty(_this,'buffered',{get:function get$$1(){return buffered(this.videoBuffer_,this.audioBuffer_,this.audioDisabled_)}});return _this}
2471createClass$1(VirtualSourceBuffer,[{key:'data_',value:function data_(event){var segment=event.data.segment;segment.data=new Uint8Array(segment.data,event.data.byteOffset,event.data.byteLength);segment.initSegment=new Uint8Array(segment.initSegment.data,segment.initSegment.byteOffset,segment.initSegment.byteLength);createTextTracksIfNecessary(this,this.mediaSource_,segment);this.pendingBuffers_.push(segment);return}},{key:'done_',value:function done_(event){if(this.mediaSource_.readyState==='closed'){this.pendingBuffers_.length=0;return}
2472this.processPendingSegments_();return}},{key:'videoSegmentTimingInfo_',value:function videoSegmentTimingInfo_(timingInfo){var timingInfoInSeconds={start:{decode:timingInfo.start.dts/ONE_SECOND_IN_TS$2,presentation:timingInfo.start.pts/ONE_SECOND_IN_TS$2},end:{decode:timingInfo.end.dts/ONE_SECOND_IN_TS$2,presentation:timingInfo.end.pts/ONE_SECOND_IN_TS$2},baseMediaDecodeTime:timingInfo.baseMediaDecodeTime/ONE_SECOND_IN_TS$2};if(timingInfo.prependedContentDuration){timingInfoInSeconds.prependedContentDuration=timingInfo.prependedContentDuration/ONE_SECOND_IN_TS$2}
2473this.trigger({type:'videoSegmentTimingInfo',videoSegmentTimingInfo:timingInfoInSeconds})}},{key:'createRealSourceBuffers_',value:function createRealSourceBuffers_(){var _this2=this;var types=['audio','video'];types.forEach(function(type){if(!_this2[type+'Codec_']){return}
2474if(_this2[type+'Buffer_']){return}
2475var buffer=null;if(_this2.mediaSource_[type+'Buffer_']){buffer=_this2.mediaSource_[type+'Buffer_'];buffer.updating=!1}else{var codecProperty=type+'Codec_';var mimeType=type+'/mp4;codecs="'+_this2[codecProperty]+'"';buffer=makeWrappedSourceBuffer(_this2.mediaSource_.nativeMediaSource_,mimeType);_this2.mediaSource_[type+'Buffer_']=buffer}
2476_this2[type+'Buffer_']=buffer;['update','updatestart','updateend'].forEach(function(event){buffer.addEventListener(event,function(){if(type==='audio'&&_this2.audioDisabled_){return}
2477if(event==='updateend'){_this2[type+'Buffer_'].updating=!1}
2478var shouldTrigger=types.every(function(t){if(t==='audio'&&_this2.audioDisabled_){return!0}
2479if(type!==t&&_this2[t+'Buffer_']&&_this2[t+'Buffer_'].updating){return!1}
2480return!0});if(shouldTrigger){return _this2.trigger(event)}})})})}},{key:'appendBuffer',value:function appendBuffer(segment){this.bufferUpdating_=!0;if(this.audioBuffer_&&this.audioBuffer_.buffered.length){var audioBuffered=this.audioBuffer_.buffered;this.transmuxer_.postMessage({action:'setAudioAppendStart',appendStart:audioBuffered.end(audioBuffered.length-1)})}
2481if(this.videoBuffer_){this.transmuxer_.postMessage({action:'alignGopsWith',gopsToAlignWith:gopsSafeToAlignWith(this.gopBuffer_,this.mediaSource_.player_?this.mediaSource_.player_.currentTime():null,this.timeMapping_)})}
2482this.transmuxer_.postMessage({action:'push',data:segment.buffer,byteOffset:segment.byteOffset,byteLength:segment.byteLength},[segment.buffer]);this.transmuxer_.postMessage({action:'flush'})}},{key:'appendGopInfo_',value:function appendGopInfo_(event){this.gopBuffer_=updateGopBuffer(this.gopBuffer_,event.data.gopInfo,this.safeAppend_)}},{key:'remove',value:function remove(start,end){if(this.videoBuffer_){this.videoBuffer_.updating=!0;this.videoBuffer_.remove(start,end);this.gopBuffer_=removeGopBuffer(this.gopBuffer_,start,end,this.timeMapping_)}
2483if(!this.audioDisabled_&&this.audioBuffer_){this.audioBuffer_.updating=!0;this.audioBuffer_.remove(start,end)}
2484removeCuesFromTrack(start,end,this.metadataTrack_);if(this.inbandTextTracks_){for(var track in this.inbandTextTracks_){removeCuesFromTrack(start,end,this.inbandTextTracks_[track])}}}},{key:'processPendingSegments_',value:function processPendingSegments_(){var sortedSegments={video:{segments:[],bytes:0},audio:{segments:[],bytes:0},captions:[],metadata:[]};if(!this.pendingBuffers_.length){this.trigger('updateend');this.bufferUpdating_=!1;return}
2485sortedSegments=this.pendingBuffers_.reduce(function(segmentObj,segment){var type=segment.type;var data=segment.data;var initSegment=segment.initSegment;segmentObj[type].segments.push(data);segmentObj[type].bytes+=data.byteLength;segmentObj[type].initSegment=initSegment;if(segment.captions){segmentObj.captions=segmentObj.captions.concat(segment.captions)}
2486if(segment.info){segmentObj[type].info=segment.info}
2487if(segment.metadata){segmentObj.metadata=segmentObj.metadata.concat(segment.metadata)}
2488return segmentObj},sortedSegments);if(!this.videoBuffer_&&!this.audioBuffer_){if(sortedSegments.video.bytes===0){this.videoCodec_=null}
2489if(sortedSegments.audio.bytes===0){this.audioCodec_=null}
2490this.createRealSourceBuffers_()}
2491if(sortedSegments.audio.info){this.mediaSource_.trigger({type:'audioinfo',info:sortedSegments.audio.info})}
2492if(sortedSegments.video.info){this.mediaSource_.trigger({type:'videoinfo',info:sortedSegments.video.info})}
2493if(this.appendAudioInitSegment_){if(!this.audioDisabled_&&this.audioBuffer_){sortedSegments.audio.segments.unshift(sortedSegments.audio.initSegment);sortedSegments.audio.bytes+=sortedSegments.audio.initSegment.byteLength}
2494this.appendAudioInitSegment_=!1}
2495var triggerUpdateend=!1;if(this.videoBuffer_&&sortedSegments.video.bytes){sortedSegments.video.segments.unshift(sortedSegments.video.initSegment);sortedSegments.video.bytes+=sortedSegments.video.initSegment.byteLength;this.concatAndAppendSegments_(sortedSegments.video,this.videoBuffer_)}else if(this.videoBuffer_&&(this.audioDisabled_||!this.audioBuffer_)){triggerUpdateend=!0}
2496addTextTrackData(this,sortedSegments.captions,sortedSegments.metadata);if(!this.audioDisabled_&&this.audioBuffer_){this.concatAndAppendSegments_(sortedSegments.audio,this.audioBuffer_)}
2497this.pendingBuffers_.length=0;if(triggerUpdateend){this.trigger('updateend')}
2498this.bufferUpdating_=!1}},{key:'concatAndAppendSegments_',value:function concatAndAppendSegments_(segmentObj,destinationBuffer){var offset=0;var tempBuffer=void 0;if(segmentObj.bytes){tempBuffer=new Uint8Array(segmentObj.bytes);
2498segmentObj.segments.forEach(function(segment){tempBuffer.set(segment,offset);offset+=segment.byteLength});try{destinationBuffer.updating=!0;destinationBuffer.appendBuffer(tempBuffer)}catch(error){if(this.mediaSource_.player_){this.mediaSource_.player_.error({code:-3,type:'APPEND_BUFFER_ERR',message:error.message,originalError:error})}}}}},{key:'abort',value:function abort(){if(this.videoBuffer_){this.videoBuffer_.abort()}
2499if(!this.audioDisabled_&&this.audioBuffer_){this.audioBuffer_.abort()}
2500if(this.transmuxer_){this.transmuxer_.postMessage({action:'reset'})}
2501this.pendingBuffers_.length=0;this.bufferUpdating_=!1}}]);return VirtualSourceBuffer}(videojs$1.EventTarget);var HtmlMediaSource=function(_videojs$EventTarget){inherits$2(HtmlMediaSource,_videojs$EventTarget);function HtmlMediaSource(){classCallCheck$1(this,HtmlMediaSource);var _this=possibleConstructorReturn$1(this,(HtmlMediaSource.__proto__||Object.getPrototypeOf(HtmlMediaSource)).call(this));var property=void 0;_this.nativeMediaSource_=new window$1.MediaSource();for(property in _this.nativeMediaSource_){if(!(property in HtmlMediaSource.prototype)&&typeof _this.nativeMediaSource_[property]==='function'){_this[property]=_this.nativeMediaSource_[property].bind(_this.nativeMediaSource_)}}
2502_this.duration_=NaN;Object.defineProperty(_this,'duration',{get:function get$$1(){if(this.duration_===Infinity){return this.duration_}
2503return this.nativeMediaSource_.duration},set:function set$$1(duration){this.duration_=duration;if(duration!==Infinity){this.nativeMediaSource_.duration=duration;return}}});Object.defineProperty(_this,'seekable',{get:function get$$1(){if(this.duration_===Infinity){return videojs$1.createTimeRanges([[0,this.nativeMediaSource_.duration]])}
2504return this.nativeMediaSource_.seekable}});Object.defineProperty(_this,'readyState',{get:function get$$1(){return this.nativeMediaSource_.readyState}});Object.defineProperty(_this,'activeSourceBuffers',{get:function get$$1(){return this.activeSourceBuffers_}});_this.sourceBuffers=[];_this.activeSourceBuffers_=[];_this.updateActiveSourceBuffers_=function(){_this.activeSourceBuffers_.length=0;if(_this.sourceBuffers.length===1){var sourceBuffer=_this.sourceBuffers[0];sourceBuffer.appendAudioInitSegment_=!0;sourceBuffer.audioDisabled_=!sourceBuffer.audioCodec_;_this.activeSourceBuffers_.push(sourceBuffer);return}
2505var disableCombined=!1;var disableAudioOnly=!0;for(var i=0;i<_this.player_.audioTracks().length;i++){var track=_this.player_.audioTracks()[i];if(track.enabled&&track.kind!=='main'){disableCombined=!0;disableAudioOnly=!1;break}}
2506_this.sourceBuffers.forEach(function(sourceBuffer,index){sourceBuffer.appendAudioInitSegment_=!0;if(sourceBuffer.videoCodec_&&sourceBuffer.audioCodec_){sourceBuffer.audioDisabled_=disableCombined}else if(sourceBuffer.videoCodec_&&!sourceBuffer.audioCodec_){sourceBuffer.audioDisabled_=!0;disableAudioOnly=!1}else if(!sourceBuffer.videoCodec_&&sourceBuffer.audioCodec_){sourceBuffer.audioDisabled_=index?disableAudioOnly:!disableAudioOnly;if(sourceBuffer.audioDisabled_){return}}
2507_this.activeSourceBuffers_.push(sourceBuffer)})};_this.onPlayerMediachange_=function(){_this.sourceBuffers.forEach(function(sourceBuffer){sourceBuffer.appendAudioInitSegment_=!0})};_this.onHlsReset_=function(){_this.sourceBuffers.forEach(function(sourceBuffer){if(sourceBuffer.transmuxer_){sourceBuffer.transmuxer_.postMessage({action:'resetCaptions'})}})};_this.onHlsSegmentTimeMapping_=function(event){_this.sourceBuffers.forEach(function(buffer){return buffer.timeMapping_=event.mapping})};['sourceopen','sourceclose','sourceended'].forEach(function(eventName){this.nativeMediaSource_.addEventListener(eventName,this.trigger.bind(this))},_this);_this.on('sourceopen',function(event){var video=document.querySelector('[src="'+_this.url_+'"]');if(!video){return}
2508_this.player_=videojs$1(video.parentNode);if(!_this.player_){return}
2509_this.player_.tech_.on('hls-reset',_this.onHlsReset_);_this.player_.tech_.on('hls-segment-time-mapping',_this.onHlsSegmentTimeMapping_);if(_this.player_.audioTracks&&_this.player_.audioTracks()){_this.player_.audioTracks().on('change',_this.updateActiveSourceBuffers_);_this.player_.audioTracks().on('addtrack',_this.updateActiveSourceBuffers_);_this.player_.audioTracks().on('removetrack',_this.updateActiveSourceBuffers_)}
2510_this.player_.on('mediachange',_this.onPlayerMediachange_)});_this.on('sourceended',function(event){var duration=durationOfVideo(_this.duration);for(var i=0;i<_this.sourceBuffers.length;i++){var sourcebuffer=_this.sourceBuffers[i];var cues=sourcebuffer.metadataTrack_&&sourcebuffer.metadataTrack_.cues;if(cues&&cues.length){cues[cues.length-1].endTime=duration}}});_this.on('sourceclose',function(event){this.sourceBuffers.forEac
2510h(function(sourceBuffer){if(sourceBuffer.transmuxer_){sourceBuffer.transmuxer_.terminate()}});this.sourceBuffers.length=0;if(!this.player_){return}
2511if(this.player_.audioTracks&&this.player_.audioTracks()){this.player_.audioTracks().off('change',this.updateActiveSourceBuffers_);this.player_.audioTracks().off('addtrack',this.updateActiveSourceBuffers_);this.player_.audioTracks().off('removetrack',this.updateActiveSourceBuffers_)}
2512if(this.player_.el_){this.player_.off('mediachange',this.onPlayerMediachange_)}
2513if(this.player_.tech_&&this.player_.tech_.el_){this.player_.tech_.off('hls-reset',this.onHlsReset_);this.player_.tech_.off('hls-segment-time-mapping',this.onHlsSegmentTimeMapping_)}});return _this}
2514createClass$1(HtmlMediaSource,[{key:'addSeekableRange_',value:function addSeekableRange_(start,end){var error=void 0;if(this.duration!==Infinity){error=new Error('MediaSource.addSeekableRange() can only be invoked '+'when the duration is Infinity');error.name='InvalidStateError';error.code=11;throw error}
2515if(end>this.nativeMediaSource_.duration||isNaN(this.nativeMediaSource_.duration)){this.nativeMediaSource_.duration=end}}},{key:'addSourceBuffer',value:function addSourceBuffer(type){var buffer=void 0;var parsedType=parseContentType(type);if(/^(video|audio)\/mp2t$/i.test(parsedType.type)){var codecs=[];if(parsedType.parameters&&parsedType.parameters.codecs){codecs=parsedType.parameters.codecs.split(',');codecs=translateLegacyCodecs(codecs);codecs=codecs.filter(function(codec){return isAudioCodec(codec)||isVideoCodec(codec)})}
2516if(codecs.length===0){codecs=['avc1.4d400d','mp4a.40.2']}
2517buffer=new VirtualSourceBuffer(this,codecs);if(this.sourceBuffers.length!==0){this.sourceBuffers[0].createRealSourceBuffers_();buffer.createRealSourceBuffers_();this.sourceBuffers[0].audioDisabled_=!0}}else{buffer=this.nativeMediaSource_.addSourceBuffer(type)}
2518this.sourceBuffers.push(buffer);return buffer}}]);return HtmlMediaSource}(videojs$1.EventTarget);var urlCount=0;videojs$1.mediaSources={};var open=function open(msObjectURL,swfId){var mediaSource=videojs$1.mediaSources[msObjectURL];if(mediaSource){mediaSource.trigger({type:'sourceopen',swfId:swfId})}else{throw new Error('Media Source not found (Video.js)')}};var supportsNativeMediaSources=function supportsNativeMediaSources(){return!!window$1.MediaSource&&!!window$1.MediaSource.isTypeSupported&&window$1.MediaSource.isTypeSupported('video/mp4;codecs="avc1.4d400d,mp4a.40.2"')};var MediaSource=function MediaSource(){this.MediaSource={open:open,supportsNativeMediaSources:supportsNativeMediaSources};if(supportsNativeMediaSources()){return new HtmlMediaSource()}
2519throw new Error('Cannot use create a virtual MediaSource for this video')};MediaSource.open=open;MediaSource.supportsNativeMediaSources=supportsNativeMediaSources;var URL$1={createObjectURL:function createObjectURL(object){var objectUrlPrefix='blob:vjs-media-source/';var url=void 0;if(object instanceof HtmlMediaSource){url=window$1.URL.createObjectURL(object.nativeMediaSource_);object.url_=url;return url}
2520if(!(object instanceof HtmlMediaSource)){url=window$1.URL.createObjectURL(object);object.url_=url;return url}
2521url=objectUrlPrefix+urlCount;urlCount++;videojs$1.mediaSources[url]=object;return url}};videojs$1.MediaSource=MediaSource;videojs$1.URL=URL$1;var EventTarget$1$1=videojs$1.EventTarget,mergeOptions$2=videojs$1.mergeOptions;var updateMaster$1=function updateMaster$$1(oldMaster,newMaster){var noChanges=void 0;var update=mergeOptions$2(oldMaster,{duration:newMaster.duration,minimumUpdatePeriod:newMaster.minimumUpdatePeriod});for(var i=0;i<newMaster.playlists.length;i++){var playlistUpdate=updateMaster(update,newMaster.playlists[i]);if(playlistUpdate){update=playlistUpdate}else{noChanges=!0}}
2522forEachMediaGroup(newMaster,function(properties,type,group,label){if(properties.playlists&&properties.playlists.length){var uri=properties.playlists[0].uri;var _playlistUpdate=updateMaster(update,properties.playlists[0]);if(_playlistUpdate){update=_playlistUpdate;update.mediaGroups[type][group][label].playlists[0]=update.playlists[uri];noChanges=!1}}});if(noChanges){return null}
2523return update};var generateSidxKey=function generateSidxKey(sidxInfo){var sidxByteRangeEnd=sidxInfo.byterange.offset+sidxInfo.byterange.length-1;return sidxInfo.uri+'-'+sidxInfo.byterange.offset+'-'+sidxByteRangeEnd};var equivalentSidx=function equivalentSidx(a,b){var neitherMap=Boolean(!a.map&&!b.map);var equivalentMap=neitherMap||Boolean(a.map&&b.map&&a.map.byterange.offset===b.map.byterange.offset&&a.map.byterange.length===b.map.byterange.length);return equivalentMap&&a.uri===b.uri&&a.byterange.offset===b.byterange.offset&&a.byterange.length===b.byterange.length};var compareSidxEntry=function compareSidxEntry(playlists,oldSidxMapping){var newSidxMapping={};for(var uri in playlists){var playlist=playlists[uri];var currentSidxInfo=playlist.sidx;if(currentSidxInfo){var key=generateSidxKey(currentSidxInfo);if(!oldSidxMapping[key]){break}
2524var savedSidxInfo=oldSidxMapping[key].sidxInfo;
2524if(equivalentSidx(savedSidxInfo,currentSidxInfo)){newSidxMapping[key]=oldSidxMapping[key]}}}
2525return newSidxMapping};var filterChangedSidxMappings=function filterChangedSidxMappings(masterXml,srcUrl,clientOffset,oldSidxMapping){var master=parse(masterXml,{manifestUri:srcUrl,clientOffset:clientOffset});var videoSidx=compareSidxEntry(master.playlists,oldSidxMapping);var mediaGroupSidx=videoSidx;forEachMediaGroup(master,function(properties,mediaType,groupKey,labelKey){if(properties.playlists&&properties.playlists.length){var playlists=properties.playlists;mediaGroupSidx=mergeOptions$2(mediaGroupSidx,compareSidxEntry(playlists,oldSidxMapping))}});return mediaGroupSidx};var requestSidx_=function requestSidx_(sidxRange,playlist,xhr,options,finishProcessingFn){var sidxInfo={uri:resolveManifestRedirect(options.handleManifestRedirects,sidxRange.resolvedUri),byterange:sidxRange.byterange,playlist:playlist};var sidxRequestOptions=videojs$1.mergeOptions(sidxInfo,{responseType:'arraybuffer',headers:segmentXhrHeaders(sidxInfo)});return xhr(sidxRequestOptions,finishProcessingFn)};var DashPlaylistLoader=function(_EventTarget){inherits$2(DashPlaylistLoader,_EventTarget);function DashPlaylistLoader(srcUrlOrPlaylist,hls){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var masterPlaylistLoader=arguments[3];classCallCheck$1(this,DashPlaylistLoader);var _this=possibleConstructorReturn$1(this,(DashPlaylistLoader.__proto__||Object.getPrototypeOf(DashPlaylistLoader)).call(this));var _options$withCredenti=options.withCredentials,withCredentials=_options$withCredenti===undefined?!1:_options$withCredenti,_options$handleManife=options.handleManifestRedirects,handleManifestRedirects=_options$handleManife===undefined?!1:_options$handleManife;_this.hls_=hls;_this.withCredentials=withCredentials;_this.handleManifestRedirects=handleManifestRedirects;if(!srcUrlOrPlaylist){throw new Error('A non-empty playlist URL or playlist is required')}
2526_this.on('minimumUpdatePeriod',function(){_this.refreshXml_()});_this.on('mediaupdatetimeout',function(){_this.refreshMedia_(_this.media().uri)});_this.state='HAVE_NOTHING';_this.loadedPlaylists_={};if(typeof srcUrlOrPlaylist==='string'){_this.srcUrl=srcUrlOrPlaylist;_this.sidxMapping_={};return possibleConstructorReturn$1(_this)}
2527_this.setupChildLoader(masterPlaylistLoader,srcUrlOrPlaylist);return _this}
2528createClass$1(DashPlaylistLoader,[{key:'setupChildLoader',value:function setupChildLoader(masterPlaylistLoader,playlist){this.masterPlaylistLoader_=masterPlaylistLoader;this.childPlaylist_=playlist}},{key:'dispose',value:function dispose(){this.stopRequest();this.loadedPlaylists_={};window$1.clearTimeout(this.minimumUpdatePeriodTimeout_);window$1.clearTimeout(this.mediaRequest_);window$1.clearTimeout(this.mediaUpdateTimeout)}},{key:'hasPendingRequest',value:function hasPendingRequest(){return this.request||this.mediaRequest_}},{key:'stopRequest',value:function stopRequest(){if(this.request){var oldRequest=this.request;this.request=null;oldRequest.onreadystatechange=null;oldRequest.abort()}}},{key:'sidxRequestFinished_',value:function sidxRequestFinished_(playlist,master,startingState,doneFn){var _this2=this;return function(err,request){if(!_this2.request){return}
2529_this2.request=null;if(err){_this2.error={status:request.status,message:'DASH playlist request error at URL: '+playlist.uri,response:request.response,code:2};if(startingState){_this2.state=startingState}
2530_this2.trigger('error');return doneFn(master,null)}
2531var bytes=new Uint8Array(request.response);var sidx=mp4Inspector.parseSidx(bytes.subarray(8));return doneFn(master,sidx)}}},{key:'media',value:function media(playlist){var _this3=this;if(!playlist){return this.media_}
2532if(this.state==='HAVE_NOTHING'){throw new Error('Cannot switch media playlist from '+this.state)}
2533var startingState=this.state;if(typeof playlist==='string'){if(!this.master.playlists[playlist]){throw new Error('Unknown playlist URI: '+playlist)}
2534playlist=this.master.playlists[playlist]}
2535var mediaChange=!this.media_||playlist.uri!==this.media_.uri;if(mediaChange&&this.loadedPlaylists_[playlist.uri]&&this.loadedPlaylists_[playlist.uri].endList){this.state='HAVE_METADATA';this.media_=playlist;if(mediaChange){this.trigger('mediachanging');this.trigger('mediachange')}
2536return}
2537if(!mediaChange){return}
2538if(this.media_){this.trigger('mediachanging')}
2539if(!playlist.sidx){this.mediaRequest_=window$1.setTimeout(this.haveMetadata.bind(this,{startingState:startingState,playlist:playlist}),0);return}
2540var oldMaster=void 0;var sidxMapping=void 0;if(this.masterPlaylistLoader_){oldMaster=this.masterPlaylistLoader_.master;sidxMapping=this.masterPlaylistLoader_.sidxMapping_}else{oldMaster=this.master;sidxMapping=this.sidxMapping_}
2541var sidxKey=generateSidxKey(playlist.sidx);sidxMapping[sidxKey]={sidxInfo:playlist.sidx};this.request=requestSidx_(playlist.sidx,playlist,this.hls_.xhr,{handleManifestRedirects:this.handleManifestRedirects},this.sidxRequestFinished_(playlist,oldMaster,startingState,function(newMaster,sidx){if(!newMaster||!sidx){throw new Error('failed to request sidx')}
2541
2542sidxMapping[sidxKey].sidx=sidx;_this3.haveMetadata({startingState:startingState,playlist:newMaster.playlists[playlist.uri]})}))}},{key:'haveMetadata',value:function haveMetadata(_ref){var startingState=_ref.startingState,playlist=_ref.playlist;this.state='HAVE_METADATA';this.loadedPlaylists_[playlist.uri]=playlist;this.mediaRequest_=null;this.refreshMedia_(playlist.uri);if(startingState==='HAVE_MASTER'){this.trigger('loadedmetadata')}else{this.trigger('mediachange')}}},{key:'pause',value:function pause(){this.stopRequest();window$1.clearTimeout(this.mediaUpdateTimeout);window$1.clearTimeout(this.minimumUpdatePeriodTimeout_);if(this.state==='HAVE_NOTHING'){this.started=!1}}},{key:'load',value:function load(isFinalRendition){var _this4=this;window$1.clearTimeout(this.mediaUpdateTimeout);window$1.clearTimeout(this.minimumUpdatePeriodTimeout_);var media=this.media();if(isFinalRendition){var delay=media?media.targetDuration/2*1000:5*1000;this.mediaUpdateTimeout=window$1.setTimeout(function(){return _this4.load()},delay);return}
2543if(!this.started){this.start();return}
2544this.trigger('loadedplaylist')}},{key:'parseMasterXml',value:function parseMasterXml(){var master=parse(this.masterXml_,{manifestUri:this.srcUrl,clientOffset:this.clientOffset_,sidxMapping:this.sidxMapping_});master.uri=this.srcUrl;for(var i=0;i<master.playlists.length;i++){var phonyUri='placeholder-uri-'+i;master.playlists[i].uri=phonyUri;master.playlists[phonyUri]=master.playlists[i]}
2545forEachMediaGroup(master,function(properties,mediaType,groupKey,labelKey){if(properties.playlists&&properties.playlists.length){var _phonyUri='placeholder-uri-'+mediaType+'-'+groupKey+'-'+labelKey;properties.playlists[0].uri=_phonyUri;master.playlists[_phonyUri]=properties.playlists[0]}});setupMediaPlaylists(master);resolveMediaGroupUris(master);return master}},{key:'start',value:function start(){var _this5=this;this.started=!0;if(this.masterPlaylistLoader_){this.mediaRequest_=window$1.setTimeout(this.haveMaster_.bind(this),0);return}
2546this.request=this.hls_.xhr({uri:this.srcUrl,withCredentials:this.withCredentials},function(error,req){if(!_this5.request){return}
2547_this5.request=null;if(error){_this5.error={status:req.status,message:'DASH playlist request error at URL: '+_this5.srcUrl,responseText:req.responseText,code:2};if(_this5.state==='HAVE_NOTHING'){_this5.started=!1}
2548return _this5.trigger('error')}
2549_this5.masterXml_=req.responseText;if(req.responseHeaders&&req.responseHeaders.date){_this5.masterLoaded_=Date.parse(req.responseHeaders.date)}else{_this5.masterLoaded_=Date.now()}
2550_this5.srcUrl=resolveManifestRedirect(_this5.handleManifestRedirects,_this5.srcUrl,req);_this5.syncClientServerClock_(_this5.onClientServerClockSync_.bind(_this5))})}},{key:'syncClientServerClock_',value:function syncClientServerClock_(done){var _this6=this;var utcTiming=parseUTCTiming(this.masterXml_);if(utcTiming===null){this.clientOffset_=this.masterLoaded_-Date.now();return done()}
2551if(utcTiming.method==='DIRECT'){this.clientOffset_=utcTiming.value-Date.now();return done()}
2552this.request=this.hls_.xhr({uri:resolveUrl$1(this.srcUrl,utcTiming.value),method:utcTiming.method,withCredentials:this.withCredentials},function(error,req){if(!_this6.request){return}
2553if(error){_this6.clientOffset_=_this6.masterLoaded_-Date.now();return done()}
2554var serverTime=void 0;if(utcTiming.method==='HEAD'){if(!req.responseHeaders||!req.responseHeaders.date){serverTime=_this6.masterLoaded_}else{serverTime=Date.parse(req.responseHeaders.date)}}else{serverTime=Date.parse(req.responseText)}
2555_this6.clientOffset_=serverTime-Date.now();done()})}},{key:'haveMaster_',value:function haveMaster_(){this.state='HAVE_MASTER';this.mediaRequest_=null;if(!this.masterPlaylistLoader_){this.master=this.parseMasterXml();this.trigger('loadedplaylist')}else if(!this.media_){this.media(this.childPlaylist_)}}},{key:'onClientServerClockSync_',value:function onClientServerClockSync_(){var _this7=this;this.haveMaster_();if(!this.hasPendingRequest()&&!this.media_){this.media(this.master.playlists[0])}
2556if(this.master&&this.master.minimumUpdatePeriod){this.minimumUpdatePeriodTimeout_=window$1.setTimeout(function(){_this7.trigger('minimumUpdatePeriod')},this.master.minimumUpdatePeriod)}}},{key:'refreshXml_',value:function refreshXml_(){var _this8=this;this.request=this.hls_.xhr({uri:this.srcUrl,withCredentials:this.withCredentials},function(error,req){if(!_this8.request){return}
2557_this8.request=null;if(error){_this8.error={status:req.status,message:'DASH playlist request error at URL: '+_this8.srcUrl,responseText:req.responseText,code:2};if(_this8.state==='HAVE_NOTHING'){_this8.started=!1}
2558return _this8.trigger('error')}
2559_this8.masterXml_=req.responseText;
2559_this8.sidxMapping_=filterChangedSidxMappings(_this8.masterXml_,_this8.srcUrl,_this8.clientOffset_,_this8.sidxMapping_);var master=_this8.parseMasterXml();var updatedMaster=updateMaster$1(_this8.master,master);var currentSidxInfo=_this8.media().sidx;if(updatedMaster){if(currentSidxInfo){var sidxKey=generateSidxKey(currentSidxInfo);if(!_this8.sidxMapping_[sidxKey]){var playlist=_this8.media();_this8.request=requestSidx_(playlist.sidx,playlist,_this8.hls_.xhr,{handleManifestRedirects:_this8.handleManifestRedirects},_this8.sidxRequestFinished_(playlist,master,_this8.state,function(newMaster,sidx){if(!newMaster||!sidx){throw new Error('failed to request sidx on minimumUpdatePeriod')}
2560_this8.sidxMapping_[sidxKey].sidx=sidx;_this8.minimumUpdatePeriodTimeout_=window$1.setTimeout(function(){_this8.trigger('minimumUpdatePeriod')},_this8.master.minimumUpdatePeriod);_this8.refreshMedia_(_this8.media().uri);return}))}}else{_this8.master=updatedMaster}}
2561_this8.minimumUpdatePeriodTimeout_=window$1.setTimeout(function(){_this8.trigger('minimumUpdatePeriod')},_this8.master.minimumUpdatePeriod)})}},{key:'refreshMedia_',value:function refreshMedia_(mediaUri){var _this9=this;if(!mediaUri){throw new Error('refreshMedia_ must take a media uri')}
2562var oldMaster=void 0;var newMaster=void 0;if(this.masterPlaylistLoader_){oldMaster=this.masterPlaylistLoader_.master;newMaster=this.masterPlaylistLoader_.parseMasterXml()}else{oldMaster=this.master;newMaster=this.parseMasterXml()}
2563var updatedMaster=updateMaster$1(oldMaster,newMaster);if(updatedMaster){if(this.masterPlaylistLoader_){this.masterPlaylistLoader_.master=updatedMaster}else{this.master=updatedMaster}
2564this.media_=updatedMaster.playlists[mediaUri]}else{this.media_=newMaster.playlists[mediaUri];this.trigger('playlistunchanged')}
2565if(!this.media().endList){this.mediaUpdateTimeout=window$1.setTimeout(function(){_this9.trigger('mediaupdatetimeout')},refreshDelay(this.media(),!!updatedMaster))}
2566this.trigger('loadedplaylist')}}]);return DashPlaylistLoader}(EventTarget$1$1);var logger=function logger(source){if(videojs$1.log.debug){return videojs$1.log.debug.bind(videojs$1,'VHS:',source+' >')}
2567return function(){}};function noop$1(){}
2568var SourceUpdater=function(){function SourceUpdater(mediaSource,mimeType,type,sourceBufferEmitter){classCallCheck$1(this,SourceUpdater);this.callbacks_=[];this.pendingCallback_=null;this.timestampOffset_=0;this.mediaSource=mediaSource;this.processedAppend_=!1;this.type_=type;this.mimeType_=mimeType;this.logger_=logger('SourceUpdater['+type+']['+mimeType+']');if(mediaSource.readyState==='closed'){mediaSource.addEventListener('sourceopen',this.createSourceBuffer_.bind(this,mimeType,sourceBufferEmitter))}else{this.createSourceBuffer_(mimeType,sourceBufferEmitter)}}
2569createClass$1(SourceUpdater,[{key:'createSourceBuffer_',value:function createSourceBuffer_(mimeType,sourceBufferEmitter){var _this=this;this.sourceBuffer_=this.mediaSource.addSourceBuffer(mimeType);this.logger_('created SourceBuffer');if(sourceBufferEmitter){sourceBufferEmitter.trigger('sourcebufferadded');if(this.mediaSource.sourceBuffers.length<2){sourceBufferEmitter.on('sourcebufferadded',function(){_this.start_()});return}}
2570this.start_()}},{key:'start_',value:function start_(){var _this2=this;this.started_=!0;this.onUpdateendCallback_=function(){var pendingCallback=_this2.pendingCallback_;_this2.pendingCallback_=null;_this2.sourceBuffer_.removing=!1;_this2.logger_('buffered ['+printableRange(_this2.buffered())+']');if(pendingCallback){pendingCallback()}
2571_this2.runCallback_()};this.sourceBuffer_.addEventListener('updateend',this.onUpdateendCallback_);this.runCallback_()}},{key:'abort',value:function abort(done){var _this3=this;if(this.processedAppend_){this.queueCallback_(function(){_this3.sourceBuffer_.abort()},done)}}},{key:'appendBuffer',value:function appendBuffer(config,done){var _this4=this;this.processedAppend_=!0;this.queueCallback_(function(){if(config.videoSegmentTimingInfoCallback){_this4.sourceBuffer_.addEventListener('videoSegmentTimingInfo',config.videoSegmentTimingInfoCallback)}
2572_this4.sourceBuffer_.appendBuffer(config.bytes)},function(){if(config.videoSegmentTimingInfoCallback){_this4.sourceBuffer_.removeEventListener('videoSegmentTimingInfo',config.videoSegmentTimingInfoCallback)}
2573done()})}},{key:'buffered',value:function buffered(){if(!this.sourceBuffer_){return videojs$1.createTimeRanges()}
2574return this.sourceBuffer_.buffered}},{key:'remove',value:function remove(start,end){var _this5=this;var done=arguments.length>2&&arguments[2]!==undefined?arguments[2]:noop$1;if(this.processedAppend_){this.queueCallback_(function(){_this5.logger_('remove ['+start+' => '+end+']');_this5.sourceBuffer_.removing=!0;_this5.sourceBuffer_.remove(start,end)},done)}}},{key:'updating',value:function updating(){return!this.sourceBuffer_||this.sourceBuffer_.updating||!!this.pendingCallback_&&this.pendingCallback_!==noop$1}},{key:'timestampOffset',value:function timestampOffset(offset){var _this6=this;if(typeof offset!=='undefined'){this.queueCallback_(function(){_this6.sourceBuffer_.timestampOffset=offset;_this6.runCallback_()});this.timestampOffset_=offset}
2575return this.timestampOffset_}},{key:'queueCallback_',value:function queueCallback_(callback,done){this.callbacks_.push([callback.bind(this),done]);this.runCallback_()}},{key:'runCallback_',value:function runCallback_(){var callbacks=void 0;if(!this.updating()&&this.callbacks_.length&&this.started_){callbacks=this.callbacks_.shift();this.pendingCallback_=callbacks[1];callbacks[0]()}}},{key:'dispose',value:function dispose(){var _this7=this;var disposeFn=function disposeFn(){if(_this7.sourceBuffer_&&_this7.mediaSource.readyState==='open'){_this7.sourceBuffer_.abort()}
2576_this7.sourceBuffer_.removeEventListener('updateend',disposeFn)};this.sourceBuffer_.removeEventListener('updateend',this.onUpdateendCallback_);if(this.sourceBuffer_.removing){this.sourceBuffer_.addEventListener('updateend',disposeFn)}else{disposeFn()}}}]);return SourceUpdater}();var Config={GOAL_BUFFER_LENGTH:30,MAX_GOAL_BUFFER_LENGTH:60,GOAL_BUFFER_LENGTH_RATE:1,INITIAL_BANDWIDTH:4194304,BANDWIDTH_VARIANCE:1.2,BUFFER_LOW_WATER_LINE:0,MAX_BUFFER_LOW_WATER_LINE:30,BUFFER_LOW_WATER_LINE_RATE:1};var REQUEST_ERRORS={FAILURE:2,TIMEOUT:-101,ABORTED:-102};
2576var abortAll=function abortAll(activeXhrs){activeXhrs.forEach(function(xhr){xhr.abort()})};var getRequestStats=function getRequestStats(request){return{bandwidth:request.bandwidth,bytesReceived:request.bytesReceived||0,roundTripTime:request.roundTripTime||0}};var getProgressStats=function getProgressStats(progressEvent){var request=progressEvent.target;var roundTripTime=Date.now()-request.requestTime;var stats={bandwidth:Infinity,bytesReceived:0,roundTripTime:roundTripTime||0};stats.bytesReceived=progressEvent.loaded;stats.bandwidth=Math.floor(stats.bytesReceived/stats.roundTripTime*8*1000);return stats};var handleErrors=function handleErrors(error,request){if(request.timedout){return{status:request.status,message:'HLS request timed-out at URL: '+request.uri,code:REQUEST_ERRORS.TIMEOUT,xhr:request}}
2577if(request.aborted){return{status:request.status,message:'HLS request aborted at URL: '+request.uri,code:REQUEST_ERRORS.ABORTED,xhr:request}}
2578if(error){return{status:request.status,message:'HLS request errored at URL: '+request.uri,code:REQUEST_ERRORS.FAILURE,xhr:request}}
2579return null};var handleKeyResponse=function handleKeyResponse(segment,finishProcessingFn){return function(error,request){var response=request.response;var errorObj=handleErrors(error,request);if(errorObj){return finishProcessingFn(errorObj,segment)}
2580if(response.byteLength!==16){return finishProcessingFn({status:request.status,message:'Invalid HLS key at URL: '+request.uri,code:REQUEST_ERRORS.FAILURE,xhr:request},segment)}
2581var view=new DataView(response);segment.key.bytes=new Uint32Array([view.getUint32(0),view.getUint32(4),view.getUint32(8),view.getUint32(12)]);return finishProcessingFn(null,segment)}};var handleInitSegmentResponse=function handleInitSegmentResponse(segment,captionParser,finishProcessingFn){return function(error,request){var response=request.response;var errorObj=handleErrors(error,request);if(errorObj){return finishProcessingFn(errorObj,segment)}
2582if(response.byteLength===0){return finishProcessingFn({status:request.status,message:'Empty HLS segment content at URL: '+request.uri,code:REQUEST_ERRORS.FAILURE,xhr:request},segment)}
2583segment.map.bytes=new Uint8Array(request.response);if(captionParser&&!captionParser.isInitialized()){captionParser.init()}
2584segment.map.timescales=probe.timescale(segment.map.bytes);segment.map.videoTrackIds=probe.videoTrackIds(segment.map.bytes);return finishProcessingFn(null,segment)}};var handleSegmentResponse=function handleSegmentResponse(segment,captionParser,finishProcessingFn){return function(error,request){var response=request.response;var errorObj=handleErrors(error,request);var parsed=void 0;if(errorObj){return finishProcessingFn(errorObj,segment)}
2585if(response.byteLength===0){return finishProcessingFn({status:request.status,message:'Empty HLS segment content at URL: '+request.uri,code:REQUEST_ERRORS.FAILURE,xhr:request},segment)}
2586segment.stats=getRequestStats(request);if(segment.key){segment.encryptedBytes=new Uint8Array(request.response)}else{segment.bytes=new Uint8Array(request.response)}
2587if(captionParser&&segment.map&&segment.map.bytes){if(!captionParser.isInitialized()){captionParser.init()}
2588parsed=captionParser.parse(segment.bytes,segment.map.videoTrackIds,segment.map.timescales);if(parsed&&parsed.captions){segment.captionStreams=parsed.captionStreams;segment.fmp4Captions=parsed.captions}}
2589return finishProcessingFn(null,segment)}};var decryptSegment=function decryptSegment(decrypter,segment,doneFn){var decryptionHandler=function decryptionHandler(event){if(event.data.source===segment.requestId){decrypter.removeEventListener('message',decryptionHandler);var decrypted=event.data.decrypted;segment.bytes=new Uint8Array(decrypted.bytes,decrypted.byteOffset,decrypted.byteLength);return doneFn(null,segment)}};decrypter.addEventListener('message',decryptionHandler);var keyBytes=void 0;if(segment.key.bytes.slice){keyBytes=segment.key.bytes.slice()}else{keyBytes=new Uint32Array(Array.prototype.slice.call(segment.key.bytes))}
2590decrypter.postMessage(createTransferableMessage({source:segment.requestId,encrypted:segment.encryptedBytes,key:keyBytes,iv:segment.key.iv}),[segment.encryptedBytes.buffer,keyBytes.buffer])};var waitForCompletion=function waitForCompletion(activeXhrs,decrypter,doneFn){var count=0;var didError=!1;return function(error,segment){if(didError){return}
2591if(error){didError=!0;abortAll(activeXhrs);return doneFn(error,segment)}
2592count+=1;if(count===activeXhrs.length){segment.endOfAllRequests=Date.now();if(segment.encryptedBytes){return decryptSegment(decrypter,segment,doneFn)}
2593return doneFn(null,segment)}}};var handleProgress=function handleProgress(segment,progressFn){return function(event){segment.stats=videojs$1.mergeOptions(segment.stats,getProgressStats(event));if(!segment.stats.firstBytesReceivedAt&&segment.stats.bytesReceived){segment.stats.firstBytesReceivedAt=Date.now()}
2594return progressFn(event,segment)}};var mediaSegmentRequest=function mediaSegmentRequest(xhr,xhrOptions,decryptionWorker,captionParser,segment,progressFn,doneFn){var activeXhrs=[];var finishProcessingFn=waitForCompletion(activeXhrs,decryptionWorker,doneFn);if(segment.key&&!segment.key.bytes){var keyRequestOptions=videojs$1.mergeOptions(xhrOptions,{uri:segment.key.resolvedUri,responseType:'arraybuffer'});var keyRequestCallback=handleKeyResponse(segment,finishProcessingFn);var keyXhr=xhr(keyRequestOptions,keyRequestCallback);activeXhrs.push(keyXhr)}
2595if(segment.map&&!segment.map.bytes){var initSegmentOptions=videojs$1.mergeOptions(xhrOptions,{uri:segment.map.resolvedUri,responseType:'arraybuffer',headers:segmentXhrHeaders(segment.map)});var initSegmentRequestCallback=handleInitSegmentResponse(segment,captionParser,finishProcessingFn);var initSegmentXhr=xhr(initSegmentOptions,initSegmentRequestCallback);activeXhrs.push(initSegmentXhr)}
2596var segmentRequestOptions=videojs$1.mergeOptions(xhrOptions,{uri:segment.resolvedUri,responseType:'arraybuffer',headers:segmentXhrHeaders(segment)});var segmentRequestCallback=handleSegmentResponse(segment,captionParser,finishProcessingFn);var segmentXhr=xhr(segmentRequestOptions,segmentRequestCallback);segmentXhr.addEventListener('progress',handleProgress(segment,progressFn));activeXhrs.push(segmentXhr);return function(){return abortAll(activeXhrs)}};var safeGetComputedStyle=function safeGetComputedStyle(el,property){var result=void 0;if(!el){return''}
2597result=window$1.getComputedStyle(el);if(!result){return''}
2598return result[property]};var stableSort=function stableSort(array,sortFn){var newArray=array.slice();array.sort(function(left,right){var cmp=sortFn(left,right);if(cmp===0){return newArray.indexOf(left)-newArray.indexOf(right)}
2599return cmp})};var comparePlaylistBandwidth=function comparePlaylistBandwidth(left,right){var leftBandwidth=void 0;var rightBandwidth=void 0;if(left.attributes.BANDWIDTH){leftBandwidth=left.attributes.BANDWIDTH}
2600leftBandwidth=leftBandwidth||window$1.Number.MAX_VALUE;if(right.attributes.BANDWIDTH){rightBandwidth=right.attributes.BANDWIDTH}
2601rightBandwidth=rightBandwidth||window$1.Number.MAX_VALUE;return leftBandwidth-rightBandwidth};var comparePlaylistResolution=function comparePlaylistResolution(left,right){var leftWi
2601dth=void 0;var rightWidth=void 0;if(left.attributes.RESOLUTION&&left.attributes.RESOLUTION.width){leftWidth=left.attributes.RESOLUTION.width}
2602leftWidth=leftWidth||window$1.Number.MAX_VALUE;if(right.attributes.RESOLUTION&&right.attributes.RESOLUTION.width){rightWidth=right.attributes.RESOLUTION.width}
2603rightWidth=rightWidth||window$1.Number.MAX_VALUE;if(leftWidth===rightWidth&&left.attributes.BANDWIDTH&&right.attributes.BANDWIDTH){return left.attributes.BANDWIDTH-right.attributes.BANDWIDTH}
2604return leftWidth-rightWidth};var simpleSelector=function simpleSelector(master,playerBandwidth,playerWidth,playerHeight,limitRenditionByPlayerDimensions){var sortedPlaylistReps=master.playlists.map(function(playlist){var width=void 0;var height=void 0;var bandwidth=void 0;width=playlist.attributes.RESOLUTION&&playlist.attributes.RESOLUTION.width;height=playlist.attributes.RESOLUTION&&playlist.attributes.RESOLUTION.height;bandwidth=playlist.attributes.BANDWIDTH;bandwidth=bandwidth||window$1.Number.MAX_VALUE;return{bandwidth:bandwidth,width:width,height:height,playlist:playlist}});stableSort(sortedPlaylistReps,function(left,right){return left.bandwidth-right.bandwidth});sortedPlaylistReps=sortedPlaylistReps.filter(function(rep){return!Playlist.isIncompatible(rep.playlist)});var enabledPlaylistReps=sortedPlaylistReps.filter(function(rep){return Playlist.isEnabled(rep.playlist)});if(!enabledPlaylistReps.length){enabledPlaylistReps=sortedPlaylistReps.filter(function(rep){return!Playlist.isDisabled(rep.playlist)})}
2605var bandwidthPlaylistReps=enabledPlaylistReps.filter(function(rep){return rep.bandwidth*Config.BANDWIDTH_VARIANCE<playerBandwidth});var highestRemainingBandwidthRep=bandwidthPlaylistReps[bandwidthPlaylistReps.length-1];var bandwidthBestRep=bandwidthPlaylistReps.filter(function(rep){return rep.bandwidth===highestRemainingBandwidthRep.bandwidth})[0];if(limitRenditionByPlayerDimensions===!1){var _chosenRep=bandwidthBestRep||enabledPlaylistReps[0]||sortedPlaylistReps[0];return _chosenRep?_chosenRep.playlist:null}
2606var haveResolution=bandwidthPlaylistReps.filter(function(rep){return rep.width&&rep.height});stableSort(haveResolution,function(left,right){return left.width-right.width});var resolutionBestRepList=haveResolution.filter(function(rep){return rep.width===playerWidth&&rep.height===playerHeight});highestRemainingBandwidthRep=resolutionBestRepList[resolutionBestRepList.length-1];var resolutionBestRep=resolutionBestRepList.filter(function(rep){return rep.bandwidth===highestRemainingBandwidthRep.bandwidth})[0];var resolutionPlusOneList=void 0;var resolutionPlusOneSmallest=void 0;var resolutionPlusOneRep=void 0;if(!resolutionBestRep){resolutionPlusOneList=haveResolution.filter(function(rep){return rep.width>playerWidth||rep.height>playerHeight});resolutionPlusOneSmallest=resolutionPlusOneList.filter(function(rep){return rep.width===resolutionPlusOneList[0].width&&rep.height===resolutionPlusOneList[0].height});highestRemainingBandwidthRep=resolutionPlusOneSmallest[resolutionPlusOneSmallest.length-1];resolutionPlusOneRep=resolutionPlusOneSmallest.filter(function(rep){return rep.bandwidth===highestRemainingBandwidthRep.bandwidth})[0]}
2607var chosenRep=resolutionPlusOneRep||resolutionBestRep||bandwidthBestRep||enabledPlaylistReps[0]||sortedPlaylistReps[0];return chosenRep?chosenRep.playlist:null};var lastBandwidthSelector=function lastBandwidthSelector(){return simpleSelector(this.playlists.master,this.systemBandwidth,parseInt(safeGetComputedStyle(this.tech_.el(),'width'),10),parseInt(safeGetComputedStyle(this.tech_.el(),'height'),10),this.limitRenditionByPlayerDimensions)};var minRebufferMaxBandwidthSelector=function minRebufferMaxBandwidthSelector(settings){var master=settings.master,currentTime=settings.currentTime,bandwidth=settings.bandwidth,duration$$1=settings.duration,segmentDuration=settings.segmentDuration,timeUntilRebuffer=settings.timeUntilRebuffer,currentTimeline=settings.currentTimeline,syncController=settings.syncController;var compatiblePlaylists=master.playlists.filter(function(playlist){return!Playlist.isIncompatible(playlist)});var enabledPlaylists=compatiblePlaylists.filter(Playlist.isEnabled);if(!enabledPlaylists.length){enabledPlaylists=compatiblePlaylists.filter(function(playlist){return!Playlist.isDisabled(playlist)})}
2608var bandwidthPlaylists=enabledPlaylists.filter(Playlist.hasAttribute.bind(null,'BANDWIDTH'));var rebufferingEstimates=bandwidthPlaylists.map(function(playlist){var syncPoint=syncController.getSyncPoint(playlist,duration$$1,currentTimeline,currentTime);var numRequests=syncPoint?1:2;var requestTimeEstimate=Playlist.estimateSegmentRequestTime(segmentDuration,bandwidth,playlist);var rebufferingImpact=requestTimeEstimate*numRequests-timeUntilRebuffer;return{playlist:playlist,rebufferingImpact:rebufferingImpact}});var noRebufferingPlaylists=rebufferingEstimates.filter(function(estimate){return estimate.rebufferingImpact<=0});stableSort(noRebufferingPlaylists,function(a,b){return comparePlaylistBandwidth(b.playlist,a.playlist)});if(noRebufferingPlaylists.length){return noRebufferingPlaylists[0]}
2609stableSort(rebufferingEstimates,function(a,b){return a.rebufferingImpact-b.rebufferingImpact});return rebufferingEstimates[0]||null};var lowestBitrateCompatibleVariantSelector=function lowestBitrateCompatibleVariantSelector(){var playlists=this.playlists.master.playlists.filter(Playlist.isEnabled);stableSort(playlists,function(a,b){return comparePlaylistBandwidth(a,b)});var playlistsWithVideo=playlists.filter(function(playlist){return parseCodecs(playlist.attributes.CODECS).videoCodec});return playlistsWithVideo[0]||null};var createCaptionsTrackIfNotExists=function createCaptionsTrackIfNotExists(inbandTextTracks,tech,captionStream
2609s){for(var trackId in captionStreams){if(!inbandTextTracks[trackId]){tech.trigger({type:'usage',name:'hls-608'});var track=tech.textTracks().getTrackById(trackId);if(track){inbandTextTracks[trackId]=track}else{inbandTextTracks[trackId]=tech.addRemoteTextTrack({kind:'captions',id:trackId,label:trackId},!1).track}}}};var addCaptionData=function addCaptionData(_ref){var inbandTextTracks=_ref.inbandTextTracks,captionArray=_ref.captionArray,timestampOffset=_ref.timestampOffset;if(!captionArray){return}
2610var Cue=window.WebKitDataCue||window.VTTCue;captionArray.forEach(function(caption){var track=caption.stream;var startTime=caption.startTime;var endTime=caption.endTime;if(!inbandTextTracks[track]){return}
2611startTime+=timestampOffset;endTime+=timestampOffset;inbandTextTracks[track].addCue(new Cue(startTime,endTime,caption.text))})};var CHECK_BUFFER_DELAY=500;var detectEndOfStream=function detectEndOfStream(playlist,mediaSource,segmentIndex){if(!playlist||!mediaSource){return!1}
2612var segments=playlist.segments;var appendedLastSegment=segmentIndex===segments.length;return playlist.endList&&mediaSource.readyState==='open'&&appendedLastSegment};var finite=function finite(num){return typeof num==='number'&&isFinite(num)};var illegalMediaSwitch=function illegalMediaSwitch(loaderType,startingMedia,newSegmentMedia){if(loaderType!=='main'||!startingMedia||!newSegmentMedia){return null}
2613if(!newSegmentMedia.containsAudio&&!newSegmentMedia.containsVideo){return'Neither audio nor video found in segment.'}
2614if(startingMedia.containsVideo&&!newSegmentMedia.containsVideo){return'Only audio found in segment when we expected video.'+' We can\'t switch to audio only from a stream that had video.'+' To get rid of this message, please add codec information to the manifest.'}
2615if(!startingMedia.containsVideo&&newSegmentMedia.containsVideo){return'Video found in segment when we expected only audio.'+' We can\'t switch to a stream with video from an audio only stream.'+' To get rid of this message, please add codec information to the manifest.'}
2616return null};var safeBackBufferTrimTime=function safeBackBufferTrimTime(seekable$$1,currentTime,targetDuration){var removeToTime=void 0;if(seekable$$1.length&&seekable$$1.start(0)>0&&seekable$$1.start(0)<currentTime){removeToTime=seekable$$1.start(0)}else{removeToTime=currentTime-30}
2617return Math.min(removeToTime,currentTime-targetDuration)};var segmentInfoString=function segmentInfoString(segmentInfo){var _segmentInfo$segment=segmentInfo.segment,start=_segmentInfo$segment.start,end=_segmentInfo$segment.end,_segmentInfo$playlist=segmentInfo.playlist,seq=_segmentInfo$playlist.mediaSequence,id=_segmentInfo$playlist.id,_segmentInfo$playlist2=_segmentInfo$playlist.segments,segments=_segmentInfo$playlist2===undefined?[]:_segmentInfo$playlist2,index=segmentInfo.mediaIndex,timeline=segmentInfo.timeline;return['appending ['+index+'] of ['+seq+', '+(seq+segments.length)+'] from playlist ['+id+']','['+start+' => '+end+'] in timeline ['+timeline+']'].join(' ')};var SegmentLoader=function(_videojs$EventTarget){inherits$2(SegmentLoader,_videojs$EventTarget);function SegmentLoader(settings){classCallCheck$1(this,SegmentLoader);var _this=possibleConstructorReturn$1(this,(SegmentLoader.__proto__||Object.getPrototypeOf(SegmentLoader)).call(this));if(!settings){throw new TypeError('Initialization settings are required')}
2618if(typeof settings.currentTime!=='function'){throw new TypeError('No currentTime getter specified')}
2619if(!settings.mediaSource){throw new TypeError('No MediaSource specified')}
2620_this.bandwidth=settings.bandwidth;_this.throughput={rate:0,count:0};_this.roundTrip=NaN;_this.resetStats_();_this.mediaIndex=null;_this.hasPlayed_=settings.hasPlayed;_this.currentTime_=settings.currentTime;_this.seekable_=settings.seekable;_this.seeking_=settings.seeking;_this.duration_=settings.duration;_this.mediaSource_=settings.mediaSource;_this.hls_=settings.hls;_this.loaderType_=settings.loaderType;_this.startingMedia_=void 0;_this.segmentMetadataTrack_=settings.segmentMetadataTrack;_this.goalBufferLength_=settings.goalBufferLength;_this.sourceType_=settings.sourceType;_this.inbandTextTracks_=settings.inbandTextTracks;_this.state_='INIT';_this.checkBufferTimeout_=null;_this.error_=void 0;_this.currentTimeline_=-1;_this.pendingSegment_=null;_this.mimeType_=null;_this.sourceUpdater_=null;_this.xhrOptions_=null;_this.activeInitSegmentId_=null;_this.initSegments_={};_this.cacheEncryptionKeys_=settings.cacheEncryptionKeys;_this.keyCache_={};
2620if(_this.loaderType_==='main'){_this.captionParser_=new captionParser()}else{_this.captionParser_=null}
2621_this.decrypter_=settings.decrypter;_this.syncController_=settings.syncController;_this.syncPoint_={segmentIndex:0,time:0};_this.syncController_.on('syncinfoupdate',function(){return _this.trigger('syncinfoupdate')});_this.mediaSource_.addEventListener('sourceopen',function(){return _this.ended_=!1});_this.fetchAtBuffer_=!1;_this.logger_=logger('SegmentLoader['+_this.loaderType_+']');Object.defineProperty(_this,'state',{get:function get$$1(){return this.state_},set:function set$$1(newState){if(newState!==this.state_){this.logger_(this.state_+' -> '+newState);this.state_=newState}}});return _this}
2622createClass$1(SegmentLoader,[{key:'resetStats_',value:function resetStats_(){this.mediaBytesTransferred=0;this.mediaRequests=0;this.mediaRequestsAborted=0;this.mediaRequestsTimedout=0;this.mediaRequestsErrored=0;this.mediaTransferDuration=0;this.mediaSecondsLoaded=0}},{key:'dispose',value:function dispose(){this.state='DISPOSED';this.pause();this.abort_();if(this.sourceUpdater_){this.sourceUpdater_.dispose()}
2623this.resetStats_();if(this.captionParser_){this.captionParser_.reset()}}},{key:'abort',value:function abort(){if(this.state!=='WAITING'){if(this.pendingSegment_){this.pendingSegment_=null}
2624return}
2625this.abort_();this.state='READY';if(!this.paused()){this.monitorBuffer_()}}},{key:'abort_',value:function abort_(){if(this.pendingSegment_){this.pendingSegment_.abortRequests()}
2626this.pendingSegment_=null}},{key:'error',value:function error(_error){if(typeof _error!=='undefined'){this.error_=_error}
2627this.pendingSegment_=null;return this.error_}},{key:'endOfStream',value:function endOfStream(){this.ended_=!0;this.pause();this.trigger('ended')}},{key:'buffered_',value:function buffered_(){if(!this.sourceUpdater_){return videojs$1.createTimeRanges()}
2628return this.sourceUpdater_.buffered()}},{key:'initSegment',value:function initSegment(map){var set$$1=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!1;if(!map){return null}
2629var id=initSegmentId(map);var storedMap=this.initSegments_[id];if(set$$1&&!storedMap&&map.bytes){this.initSegments_[id]=storedMap={resolvedUri:map.resolvedUri,byterange:map.byterange,bytes:map.bytes,timescales:map.timescales,videoTrackIds:map.videoTrackIds}}
2630return storedMap||map}},{key:'segmentKey',value:function segmentKey(key){var set$$1=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!1;if(!key){return null}
2631var id=segmentKeyId(key);var storedKey=this.keyCache_[id];if(this.cacheEncryptionKeys_&&set$$1&&!storedKey&&key.bytes){this.keyCache_[id]=storedKey={resolvedUri:key.resolvedUri,bytes:key.bytes}}
2632var result={resolvedUri:(storedKey||key).resolvedUri};if(storedKey){result.bytes=storedKey.bytes}
2633return result}},{key:'couldBeginLoading_',value:function couldBeginLoading_(){return this.playlist_&&(this.sourceUpdater_||this.mimeType_&&this.state==='INIT')&&!this.paused()}},{key:'load',value:function load(){this.monitorBuffer_();if(!this.playlist_){return}
2634this.syncController_.setDateTimeMapping(this.playlist_);if(this.state==='INIT'&&this.couldBeginLoading_()){return this.init_()}
2635if(!this.couldBeginLoading_()||this.state!=='READY'&&this.state!=='INIT'){return}
2636this.state='READY'}},{key:'init_',value:function init_(){this.state='READY';this.sourceUpdater_=new SourceUpdater(this.mediaSource_,this.mimeType_,this.loaderType_,this.sourceBufferEmitter_);this.resetEverything();return this.monitorBuffer_()}},{key:'playlist',value:function playlist(newPlaylist){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(!newPlaylist){return}
2637var oldPlaylist=this.playlist_;var segmentInfo=this.pendingSegment_;this.playlist_=newPlaylist;this.xhrOptions_=options;if(!this.hasPlayed_()){newPlaylist.syncInfo={mediaSequence:newPlaylist.mediaSequence,time:0}}
2638var oldId=null;if(oldPlaylist){if(oldPlaylist.id){oldId=oldPlaylist.id}else if(oldPlaylist.uri){oldId=oldPlaylist.uri}}
2639this.logger_('playlist update ['+oldId+' => '+(newPlaylist.id||newPlaylist.uri)+']');this.trigger('syncinfoupdate');if(this.state==='INIT'&&this.couldBeginLoading_()){return this.init_()}
2640if(!oldPlaylist||oldPlaylist.uri!==newPlaylist.uri){if(this.mediaIndex!==null){this.resyncLoader()}
2641return}
2642var mediaSequenceDiff=newPlaylist.mediaSequence-oldPlaylist.mediaSequence;this.logger_('live window shift ['+mediaSequenceDiff+']');if(this.mediaIndex!==null){this.mediaIndex-=mediaSequenceDiff}
2643if(segmentInfo){segmentInfo.mediaIndex-=mediaSequenceDiff;if(segmentInfo.mediaIndex>=0){segmentInfo.segment=newPlaylist.segments[segmentInfo.mediaIndex]}}
2644this.syncController_.saveExpiredSegmentInfo(oldPlaylist,newPlaylist)}},{key:'pause',value:function pause(){if(this.checkBufferTimeout_){window$1.clearTimeout(this.checkBufferTimeout_);this.checkBufferTimeout_=null}}},{key:'paused',value:function paused(){return this.checkBufferTimeout_===null}},{key:'mimeType',value:function mimeType(_mimeType,sourceBufferEmitter){if(this.mimeType_){return}
2645this.mimeType_=_mimeType;this.sourceBufferEmitter_=sourceBufferEmitter;if(this.state==='INIT'&&this.couldBeginLoading_()){this.init_()}}},{key:'resetEverything',value:function resetEverything(done){this.ended_=!1;this.resetLoader();this.remove(0,this.duration_(),done);if(this.captionParser_){this.captionParser_.clearAllCaptions()}
2646this.trigger('reseteverything')}},{key:'resetLoader',value:function resetLoader(){this.fetchAtBuffer_=!1;this.resyncLoader()}},{key:'resyncLoader',value:function resyncLoader(){this.mediaIndex=null;this.syncPoint_=null;this.abort()}},{key:'remove',value:function remove(start,end,done){if(this.sourceUpdater_){this.sourceUpdater_.remove(start,end,done)}
2647removeCuesFromTrack(start,end,this.segmentMetadataTrack_);if(this.inbandTextTracks_){for(var id in this.inbandTextTracks_){removeCuesFromTrack(start,end,this.inbandTextTracks_[id])}}}},{key:'monitorBuffer_',value:function monitorBuffer_(){if(this.checkBufferTimeout_){window$1.clearTimeout(this.checkBufferTimeout_)}
2648this.checkBufferTimeout_=window$1.setTimeout(this.monitorBufferTick_.bind(this),1)}},{key:'monitorBufferTick_',value:function monitorBufferTick_(){if(this.state==='READY'){this.fillBuffer_()}
2649if(this.checkBufferTimeout_){window$1.clearTimeout(this.checkBufferTimeout_)}
2650this.checkBufferTimeout_=window$1.setTimeout(this.monitorBufferTick_.bind(this),CHECK_BUFFER_DELAY)}},{key:'fillBuffer_',value:function fillBuffer_(){if(this.sourceUpdater_.updating()){return}
2651if(!this.syncPoint_){this.syncPoint_=this.syncController_.getSyncPoint(this.playlist_,this.duration_(),this.currentTimeline_,this.currentTime_())}
2652var segmentInfo=this.checkBuffer_(this.buffered_(),this.playlist_,this.mediaIndex,this.hasPlayed_(),this.currentTime_(),this.syncPoint_);if(!segmentInfo){return}
2653if(this.isEndOfStream_(segmentInfo.mediaIndex)){this.endOfStream();return}
2654if(segmentInfo.mediaIndex===this.playlist_.segments.length-1&&this.mediaSource_.readyState==='ended'&&!this.seeking_()){return}
2655if(segmentInfo.timeline!==this.currentTimeline_){this.syncController_.reset();segmentInfo.timestampOffset=segmentInfo.startOfSegment;if(this.captionParser_){this.captionParser_.clearAllCaptions()}}
2656this.loadSegment_(segmentInfo)}},{key:'isEndOfStream_',value:function isEndOfStream_(mediaIndex){var playlist=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.playlist_;return detectEndOfStream(playlist,this.mediaSource_,mediaIndex)&&!this.sourceUpdater_.updating()}},{key:'checkBuffer_',value:function checkBuffer_(buffered,playlist,mediaIndex,hasPlayed,currentTime,syncPoint){var lastBufferedEnd=0;var startOfSegment=void 0;if(buffered.length){lastBufferedEnd=buffered.end(buffered.length-1)}
2657var bufferedTime=Math.max(0,lastBufferedEnd-currentTime);if(!playlist.segments.length){return null}
2658if(bufferedTime>=this.goalBufferLength_()){return null}
2659if(!hasPlayed&&bufferedTime>=1){return null}
2660if(syncPoint===null){mediaIndex=this.getSyncSegmentCandidate_(playlist);return this.generateSegmentInfo_(playlist,mediaIndex,null,!0)}
2661if(mediaIndex!==null){var segment=playlist.segments[mediaIndex];startOfSegment=lastBufferedEnd;return this.generateSegmentInfo_(playlist,mediaIndex+1,startOfSegment,!1)}
2662if(this.fetchAtBuffer_){var mediaSourceInfo=Playlist.getMediaInfoForTime(playlist,lastBufferedEnd,syncPoint.segmentIndex,syncPoint.time);mediaIndex=mediaSourceInfo.mediaIndex;startOfSegment=mediaSourceInfo.startTime}else{var _mediaSourceInfo=Playlist.getMediaInfoForTime(playlist,currentTime,syncPoint.segmentIndex,syncPoint.time);mediaIndex=_mediaSourceInfo.mediaIndex;startOfSegment=_mediaSourceInfo.startTime}
2663return this.generateSegmentInfo_(playlist,mediaIndex,startOfSegment,!1)}},{key:'getSyncSegmentCandidate_',value:function getSyncSegmentCandidate_(playlist){var _this2=this;if(this.currentTimeline_===-1){return 0}
2664var segmentIndexArray=playlist.segments.map(function(s,i){return{timeline:s.timeline,segmentIndex:i}}).filter(function(s){return s.timeline===_this2.currentTimeline_});if(segmentIndexArray.length){return segmentIndexArray[Math.min(segmentIndexArray.length-1,1)].segmentIndex}
2665return Math.max(playlist.segments.length-1,0)}},{key:'generateSegmentInfo_',value:function generateSegmentInfo_(playlist,mediaIndex,startOfSegment,isSyncRequest){if(mediaIndex<0||mediaIndex>=playlist.segments.length){return null}
2666var segment=playlist.segments[mediaIndex];return{requestId:'segment-loader-'+Math.random(),uri:segment.resolvedUri,mediaIndex:mediaIndex,isSyncRequest:isSyncRequest,startOfSegment:startOfSegment,playlist:playlist,bytes:null,encryptedBytes:null,timestampOffset:null,timeline:segment.timeline,duration:segment.duration,segment:segment}}},{key:'abortRequestEarly_',value:function abortRequestEarly_(stats){if(this.hls_.tech_.paused()||!this.xhrOptions_.timeout||!this.playlist_.attributes.BANDWIDTH){return!1}
2667if(Date.now()-(stats.firstBytesReceivedAt||Date.now())<1000){return!1}
2668var currentTime=this.currentTime_();var measuredBandwidth=stats.bandwidth;var segmentDuration=this.pendingSegment_.duration;var requestTimeRemaining=Playlist.estimateSegmentRequestTime(segmentDuration,measuredBandwidth,this.playlist_,stats.bytesReceived);var timeUntilRebuffer$$1=timeUntilRebuffer(this.buffered_(),currentTime,this.hls_.tech_.playbackRate())-1;if(requestTimeRemaining<=timeUntilRebuffer$$1){return!1}
2669var switchCandidate=minRebufferMaxBandwidthSelector({master:this.hls_.playlists.master,currentTime:currentTime,bandwidth:measuredBandwidth,duration:this.duration_(),segmentDuration:segmentDuration,timeUntilRebuffer:timeUntilRebuffer$$1,currentTimeline:this.currentTimeline_,syncController:this.syncController_});if(!switchCandidate){return}
2670var rebufferingImpact=requestTimeRemaining-timeUntilRebuffer$$1;var timeSavedBySwitching=rebufferingImpact-switchCandidate.rebufferingImpact;var minimumTimeSaving=0.5;if(timeUntilRebuffer$$1<=TIME_FUDGE_FACTOR){minimumTimeSaving=1}
2671if(!switchCandidate.playlist||switchCandidate.playlist.uri===this.playlist_.uri||timeSavedBySwitching<minimumTimeSaving){return!1}
2672this.bandwidth=switchCandidate.playlist.attributes.BANDWIDTH*Config.BANDWIDTH_VARIANCE+1;this.abort();this.trigger('earlyabort');return!0}},{key:'handleProgress_',value:function handleProgress_(event,simpleSegment){if(!this.pendingSegment_||simpleSegment.requestId!==this.pendingSegment_.requestId||this.abortRequestEarly_(simpleSegment.stats)){return}
2673this.trigger('progress')}},{key:'loadSegment_',value:function loadSegment_(segmentInfo){this.state='WAITING';this.pendingSegment_=segmentInfo;this.trimBackBuffer_(segmentInfo);segmentInfo.abortRequests=mediaSegmentRequest(this.hls_.xhr,this.xhrOptions_,this.decrypter_,this.captionParser_,this.createSimplifiedSegmentObj_(segmentInfo),this.handleProgress_.bind(this),this.segmentRequestFinished_.bind(this))}},{key:'trimBackBuffer_',value:function trimBackBuffer_(segmentInfo){var removeToTime=safeBackBufferTrimTime(this.seekable_(),this.currentTime_(),this.playlist_.targetDuration||10);if(removeToTime>0){this.remove(0,removeToTime)}}},{key:'createSimplifiedSegmentObj_',value:function createSimplifiedSegmentObj_(segmentInfo){var segment=segmentInfo.segment;var simpleSegment={resolvedUri:segment.resolvedUri,byterange:segment.byterange,requestId:segmentInfo.requestId};if(segment.key){var iv=segment.key.iv||new Uint32Array([0,0,0,segmentInfo.mediaIndex+segmentInfo.playlist.mediaSequence]);simpleSegment.key=this.segmentKey(segment.key);simpleSegment.key.iv=iv}
2674if(segment.map){simpleSegment.map=this.initSegment(segment.map)}
2675return simpleSegment}},{key:'segmentRequestFinished_',value:function segmentRequestFinished_(error,simpleSegment){this.mediaRequests+=1;if(simpleSegment.stats){this.mediaBytesTransferred+=simpleSegment.stats.bytesReceived;this.mediaTransferDuration+=simpleSegment.stats.roundTripTime}
2676if(!this.pendingSegment_){this.mediaRequestsAborted+=1;return}
2677if(simpleSegment.requestId!==this.pendingSegment_.requestId){return}
2678if(error){this.pendingSegment_=null;this.state='READY';if(error.code===REQUEST_ERRORS.ABORTED){this.mediaRequestsAborted+=1;return}
2679this.pause();if(error.code===REQUEST_ERRORS.TIMEOUT){this.mediaRequestsTimedout+=1;this.bandwidth=1;this.roundTrip=NaN;this.trigger('bandwidthupdate');return}
2680this.mediaRequestsErrored+=1;this.error(error);this.trigger('error');return}
2681this.bandwidth=simpleSegment.stats.bandwidth;this.roundTrip=simpleSegment.stats.roundTripTime;if(simpleSegment.map){simpleSegment.map=this.initSegment(simpleSegment.map,!0)}
2682if(simpleSegment.key){this.segmentKey(simpleSegment.key,!0)}
2683this.processSegmentResponse_(simpleSegment)}},{key:'processSegmentResponse_',value:function processSegmentResponse_(simpleSegment){var segmentInfo=this.pendingSegment_;segmentInfo.bytes=simpleSegment.bytes;if(simpleSegment.map){segmentInfo.segment.map.bytes=simpleSegment.map.bytes}
2684segmentInfo.endOfAllRequests=simpleSegment.endOfAllRequests;if(simpleSegment.fmp4Captions){createCaptionsTrackIfNotExists(this.inbandTextTracks_,this.hls_.tech_,simpleSegment.captionStream
2684s);addCaptionData({inbandTextTracks:this.inbandTextTracks_,captionArray:simpleSegment.fmp4Captions,timestampOffset:0});if(this.captionParser_){this.captionParser_.clearParsedCaptions()}}
2685this.handleSegment_()}},{key:'handleSegment_',value:function handleSegment_(){var _this3=this;if(!this.pendingSegment_){this.state='READY';return}
2686var segmentInfo=this.pendingSegment_;var segment=segmentInfo.segment;var timingInfo=this.syncController_.probeSegmentInfo(segmentInfo);if(typeof this.startingMedia_==='undefined'&&timingInfo&&(timingInfo.containsAudio||timingInfo.containsVideo)){this.startingMedia_={containsAudio:timingInfo.containsAudio,containsVideo:timingInfo.containsVideo}}
2687var illegalMediaSwitchError=illegalMediaSwitch(this.loaderType_,this.startingMedia_,timingInfo);if(illegalMediaSwitchError){this.error({message:illegalMediaSwitchError,blacklistDuration:Infinity});this.trigger('error');return}
2688if(segmentInfo.isSyncRequest){this.trigger('syncinfoupdate');this.pendingSegment_=null;this.state='READY';return}
2689if(segmentInfo.timestampOffset!==null&&segmentInfo.timestampOffset!==this.sourceUpdater_.timestampOffset()){if(timingInfo&&timingInfo.segmentTimestampInfo){var ptsStartTime=timingInfo.segmentTimestampInfo[0].ptsTime;var dtsStartTime=timingInfo.segmentTimestampInfo[0].dtsTime;segmentInfo.timestampOffset-=ptsStartTime-dtsStartTime}
2690this.sourceUpdater_.timestampOffset(segmentInfo.timestampOffset);this.trigger('timestampoffset')}
2691var timelineMapping=this.syncController_.mappingForTimeline(segmentInfo.timeline);if(timelineMapping!==null){this.trigger({type:'segmenttimemapping',mapping:timelineMapping})}
2692this.state='APPENDING';if(segment.map){var initId=initSegmentId(segment.map);if(!this.activeInitSegmentId_||this.activeInitSegmentId_!==initId){var initSegment=this.initSegment(segment.map);this.sourceUpdater_.appendBuffer({bytes:initSegment.bytes},function(){_this3.activeInitSegmentId_=initId})}}
2693segmentInfo.byteLength=segmentInfo.bytes.byteLength;if(typeof segment.start==='number'&&typeof segment.end==='number'){this.mediaSecondsLoaded+=segment.end-segment.start}else{this.mediaSecondsLoaded+=segment.duration}
2694this.logger_(segmentInfoString(segmentInfo));this.sourceUpdater_.appendBuffer({bytes:segmentInfo.bytes,videoSegmentTimingInfoCallback:this.handleVideoSegmentTimingInfo_.bind(this,segmentInfo.requestId)},this.handleUpdateEnd_.bind(this))}},{key:'handleVideoSegmentTimingInfo_',value:function handleVideoSegmentTimingInfo_(requestId,event){if(!this.pendingSegment_||requestId!==this.pendingSegment_.requestId){return}
2695var segment=this.pendingSegment_.segment;if(!segment.videoTimingInfo){segment.videoTimingInfo={}}
2696segment.videoTimingInfo.transmuxerPrependedSeconds=event.videoSegmentTimingInfo.prependedContentDuration||0;segment.videoTimingInfo.transmuxedPresentationStart=event.videoSegmentTimingInfo.start.presentation;segment.videoTimingInfo.transmuxedPresentationEnd=event.videoSegmentTimingInfo.end.presentation;segment.videoTimingInfo.baseMediaDecodeTime=event.videoSegmentTimingInfo.baseMediaDecodeTime}},{key:'handleUpdateEnd_',value:function handleUpdateEnd_(){if(!this.pendingSegment_){this.state='READY';if(!this.paused()){this.monitorBuffer_()}
2697return}
2698var segmentInfo=this.pendingSegment_;var segment=segmentInfo.segment;var isWalkingForward=this.mediaIndex!==null;this.pendingSegment_=null;this.recordThroughput_(segmentInfo);this.addSegmentMetadataCue_(segmentInfo);this.state='READY';this.mediaIndex=segmentInfo.mediaIndex;this.fetchAtBuffer_=!0;this.currentTimeline_=segmentInfo.timeline;this.trigger('syncinfoupdate');if(segment.end&&this.currentTime_()-segment.end>segmentInfo.playlist.targetDuration*3){this.resetEverything();return}
2699if(isWalkingForward){this.trigger('bandwidthupdate')}
2700this.trigger('progress');if(this.isEndOfStream_(segmentInfo.mediaIndex+1,segmentInfo.playlist)){this.endOfStream()}
2701if(!this.paused()){this.monitorBuffer_()}}},{key:'recordThroughput_',value:function recordThroughput_(segmentInfo){var rate=this.throughput.rate;var segmentProcessingTime=Date.now()-segmentInfo.endOfAllRequests+1;var segmentProcessingThroughput=Math.floor(segmentInfo.byteLength/segmentProcessingTime*8*1000);this.throughput.rate+=(segmentProcessingThroughput-rate)/++this.throughput.count}},{key:'addSegmentMetadataCue_',value:function addSegmentMetadataCue_(segmentInfo){if(!this.segmentMetadataTrack_){return}
2702var segment=segmentInfo.segment;var start=segment.start;var end=segment.end;if(!finite(start)||!finite(end)){return}
2703removeCuesFromTrack(start,end,this.segmentMetadataTrack_);var Cue=window$1.WebKitDataCue||window$1.VTTCue;var value={custom:segment.custom,dateTimeObject:segment.dateTimeObject,dateTimeString:segment.dateTimeString,bandwidth:segmentInfo.playlist.attributes.BANDWIDTH,resolution:segmentInfo.playlist.attributes.RESOLUTION,codecs:segmentInfo.playlist.attributes.CODECS,byteLength:segmentInfo.byteLength,uri:segmentInfo.uri,timeline:segmentInfo.timeline,playlist:segmentInfo.playlist.uri,start:start,end:end};var data=JSON.stringify(value);var cue=new Cue(start,end,data);cue.value=value;this.segmentMetadataTrack_.addCue(cue)}}]);return SegmentLoader}(videojs$1.EventTarget);var uint8ToUtf8=function uint8ToUtf8(uintArray){return decodeURIComponent(escape(String.fromCharCode.apply(null,uintArray)))};
2703var VTT_LINE_TERMINATORS=new Uint8Array('\n\n'.split('').map(function(_char2){return _char2.charCodeAt(0)}));var VTTSegmentLoader=function(_SegmentLoader){inherits$2(VTTSegmentLoader,_SegmentLoader);function VTTSegmentLoader(settings){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};classCallCheck$1(this,VTTSegmentLoader);var _this=possibleConstructorReturn$1(this,(VTTSegmentLoader.__proto__||Object.getPrototypeOf(VTTSegmentLoader)).call(this,settings,options));_this.mediaSource_=null;_this.subtitlesTrack_=null;return _this}
2704createClass$1(VTTSegmentLoader,[{key:'buffered_',value:function buffered_(){if(!this.subtitlesTrack_||!this.subtitlesTrack_.cues.length){return videojs$1.createTimeRanges()}
2705var cues=this.subtitlesTrack_.cues;var start=cues[0].startTime;var end=cues[cues.length-1].startTime;return videojs$1.createTimeRanges([[start,end]])}},{key:'initSegment',value:function initSegment(map){var set$$1=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!1;if(!map){return null}
2706var id=initSegmentId(map);var storedMap=this.initSegments_[id];if(set$$1&&!storedMap&&map.bytes){var combinedByteLength=VTT_LINE_TERMINATORS.byteLength+map.bytes.byteLength;var combinedSegment=new Uint8Array(combinedByteLength);combinedSegment.set(map.bytes);combinedSegment.set(VTT_LINE_TERMINATORS,map.bytes.byteLength);this.initSegments_[id]=storedMap={resolvedUri:map.resolvedUri,byterange:map.byterange,bytes:combinedSegment}}
2707return storedMap||map}},{key:'couldBeginLoading_',value:function couldBeginLoading_(){return this.playlist_&&this.subtitlesTrack_&&!this.paused()}},{key:'init_',value:function init_(){this.state='READY';this.resetEverything();return this.monitorBuffer_()}},{key:'track',value:function track(_track){if(typeof _track==='undefined'){return this.subtitlesTrack_}
2708this.subtitlesTrack_=_track;if(this.state==='INIT'&&this.couldBeginLoading_()){this.init_()}
2709return this.subtitlesTrack_}},{key:'remove',value:function remove(start,end){removeCuesFromTrack(start,end,this.subtitlesTrack_)}},{key:'fillBuffer_',value:function fillBuffer_(){var _this2=this;if(!this.syncPoint_){this.syncPoint_=this.syncController_.getSyncPoint(this.playlist_,this.duration_(),this.currentTimeline_,this.currentTime_())}
2710var segmentInfo=this.checkBuffer_(this.buffered_(),this.playlist_,this.mediaIndex,this.hasPlayed_(),this.currentTime_(),this.syncPoint_);segmentInfo=this.skipEmptySegments_(segmentInfo);if(!segmentInfo){return}
2711if(this.syncController_.timestampOffsetForTimeline(segmentInfo.timeline)===null){var checkTimestampOffset=function checkTimestampOffset(){_this2.state='READY';if(!_this2.paused()){_this2.monitorBuffer_()}};this.syncController_.one('timestampoffset',checkTimestampOffset);this.state='WAITING_ON_TIMELINE';return}
2712this.loadSegment_(segmentInfo)}},{key:'skipEmptySegments_',value:function skipEmptySegments_(segmentInfo){while(segmentInfo&&segmentInfo.segment.empty){segmentInfo=this.generateSegmentInfo_(segmentInfo.playlist,segmentInfo.mediaIndex+1,segmentInfo.startOfSegment+segmentInfo.duration,segmentInfo.isSyncRequest)}
2713return segmentInfo}},{key:'handleSegment_',value:function handleSegment_(){var _this3=this;if(!this.pendingSegment_||!this.subtitlesTrack_){this.state='READY';return}
2714this.state='APPENDING';var segmentInfo=this.pendingSegment_;var segment=segmentInfo.segment;if(typeof window$1.WebVTT!=='function'&&this.subtitlesTrack_&&this.subtitlesTrack_.tech_){var loadHandler=void 0;var errorHandler=function errorHandler(){_this3.subtitlesTrack_.tech_.off('vttjsloaded',loadHandler);_this3.error({message:'Error loading vtt.js'});_this3.state='READY';_this3.pause();_this3.trigger('error')};loadHandler=function loadHandler(){_this3.subtitlesTrack_.tech_.off('vttjserror',errorHandler);_this3.handleSegment_()};this.state='WAITING_ON_VTTJS';this.subtitlesTrack_.tech_.one('vttjsloaded',loadHandler);this.subtitlesTrack_.tech_.one('vttjserror',errorHandler);return}
2715segment.requested=!0;try{this.parseVTTCues_(segmentInfo)}catch(e){this.error({message:e.message});this.state='READY';this.pause();return this.trigger('error')}
2716this.updateTimeMapping_(segmentInfo,this.syncController_.timelines[segmentInfo.timeline],this.playlist_);if(segmentInfo.isSyncRequest){this.trigger('syncinfoupdate');this.pendingSegment_=null;this.state='READY';return}
2717segmentInfo.byteLength=segmentInfo.bytes.byteLength;this.mediaSecondsLoaded+=segment.duration;if(segmentInfo.cues.length){this.remove(segmentInfo.cues[0].endTime,segmentInfo.cues[segmentInfo.cues.length-1].endTime)}
2718segmentInfo.cues.forEach(function(cue){_this3.subtitlesTrack_.addCue(cue)});this.handleUpdateEnd_()}},{key:'parseVTTCues_',value:function parseVTTCues_(segmentInfo){var decoder=void 0;var decodeBytesToString=!1;if(typeof window$1.TextDecoder==='function'){decoder=new window$1.TextDecoder('utf8')}else{decoder=window$1.WebVTT.StringDecoder();decodeBytesToString=!0}
2719var parser=new window$1.WebVTT.Parser(window$1,window$1.vttjs,decoder);segmentInfo.cues=[];segmentInfo.timestampmap={MPEGTS:0,LOCAL:0};parser.oncue=segmentInfo.cues.push.bind(segmentInfo.cues);parser.ontimestampmap=function(map){return segmentInfo.timestampmap=map};parser.onparsingerror=function(error){videojs$1.log.warn('Error encountered when parsing cues: '+error.message)};if(segmentInfo.segment.map){var mapData=segmentInfo.segment.map.bytes;if(decodeBytesToString){mapData=uint8ToUtf8(mapData)}
2720parser.parse(mapData)}
2721var segmentData=segmentInfo.bytes;if(decodeBytesToString){segmentData=uint8ToUtf8(segmentData)}
2722parser.parse(segmentData);parser.flush()}},{key:'updateTimeMapping_',value:function updateTimeMapping_(segmentInfo,mappingObj,playlist){var segment=segmentInfo.segment;if(!mappingObj){return}
2723if(!segmentInfo.cues.length){segment.empty=!0;return}
2724var timestampmap=segmentInfo.timestampmap;var diff=timestampmap.MPEGTS/90000-timestampmap.LOCAL+mappingObj.mapping;segmentInfo.cues.forEach(function(cue){cue.startTime+=diff;cue.endTime+=diff});if(!playlist.syncInfo){var firstStart=segmentInfo.cues[0].startTime;var lastStart=segmentInfo.cues[segmentInfo.cues.length-1].startTime;playlist.syncInfo={mediaSequence:playlist.mediaSequence+segmentInfo.mediaIndex,time:Math.min(firstStart,lastStart-segment.duration)}}}}]);return VTTSegmentLoader}(SegmentLoader);var findAdCue=function findAdCue(track,mediaTime){var cues=track.cues;for(var i=0;i<cues.length;i++){var cue=cues[i];if(mediaTime>=cue.adStartTime&&mediaTime<=cue.adEndTime){return cue}}
2725return null};var updateAdCues=function updateAdCues(media,track){var offset=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;if(!media.segments){return}
2726var mediaTime=offset;var cue=void 0;for(var i=0;i<media.segments.length;i++){var segment=media.segments[i];if(!cue){cue=findAdCue(track,mediaTime+segment.duration/2)}
2727if(cue){if('cueIn' in segment){cue.endTime=mediaTime;cue.adEndTime=mediaTime;mediaTime+=segment.duration;cue=null;continue}
2728if(mediaTime<cue.endTime){mediaTime+=segment.duration;continue}
2729cue.endTime+=segment.duration}else{if('cueOut' in segment){cue=new window$1.VTTCue(mediaTime,mediaTime+segment.duration,segment.cueOut);cue.adStartTime=mediaTime;cue.adEndTime=mediaTime+parseFloat(segment.cueOut);track.addCue(cue)}
2730if('cueOutCont' in segment){var adOffset=void 0;var adTotal=void 0;var _segment$cueOutCont$s=segment.cueOutCont.split('/').map(parseFloat);var _segment$cueOutCont$s2=slicedToArray(_segment$cueOutCont$s,2);adOffset=_segment$cueOutCont$s2[0];adTotal=_segment$cueOutCont$s2[1];cue=new window$1.VTTCue(mediaTime,mediaTime+segment.duration,'');cue.adStartTime=mediaTime-adOffset;cue.adEndTime=cue.adStartTime+adTotal;track.addCue(cue)}}
2731mediaTime+=segment.duration}};var tsprobe=tsInspector.inspect;var syncPointStrategies=[{name:'VOD',run:function run(syncController,playlist,duration$$1,currentTimeline,currentTime){if(duration$$1!==Infinity){var syncPoint={time:0,segmentIndex:0};return syncPoint}
2732return null}},{name:'ProgramDateTime',run:function run(syncController,playlist,duration$$1,currentTimeline,currentTime){if(!syncController.datetimeToDisplayTime){return null}
2733var segments=playlist.segments||[];var syncPoint=null;var lastDistance=null;currentTime=currentTime||0;for(var i=0;i<segments.length;i++){var segment=segments[i];if(segment.dateTimeObject){var segmentTime=segment.dateTimeObject.getTime()/1000;var segmentStart=segmentTime+syncController.datetimeToDisplayTime;var distance=Math.abs(currentTime-segmentStart);if(lastDistance!==null&&(distance===0||lastDistance<distance)){break}
2734lastDistance=distance;syncPoint={time:segmentStart,segmentIndex:i}}}
2735return syncPoint}},{name:'Segment',run:function run(syncController,playlist,duration$$1,currentTimeline,currentTime){var segments=playlist.segments||[];var syncPoint=null;var lastDistance=null;currentTime=currentTime||0;for(var i=0;i<segments.length;i++){var segment=segments[i];if(segment.timeline===currentTimeline&&typeof segment.start!=='undefined'){var distance=Math.abs(currentTime-segment.start);if(lastDistance!==null&&lastDistance<distance){break}
2736if(!syncPoint||lastDistance===null||lastDistance>=distance){lastDistance=distance;syncPoint={time:segment.start,segmentIndex:i}}}}
2737return syncPoint}},{name:'Discontinuity',run:function run(syncController,playlist,duration$$1,currentTimeline,currentTime){var syncPoint=null;currentTime=currentTime||0;if(playlist.discontinuityStarts&&playlist.discontinuityStarts.length){var lastDistance=null;for(var i=0;i<playlist.discontinuityStarts.length;i++){var segmentIndex=playlist.discontinuityStarts[i];var discontinuity=playlist.discontinuitySequence+i+1;var discontinuitySync=syncController.discontinuities[discontinuity];if(discontinuitySync){var distance=Math.abs(currentTime-discontinuitySync.time);if(lastDistance!==null&&lastDistance<distance){break}
2738if(!syncPoint||lastDistance===null||lastDistance>=distance){lastDistance=distance;syncPoint={time:discontinuitySync.time,segmentIndex:segmentIndex}}}}}
2739return syncPoint}},{name:'Playlist',run:function run(syncController,playlist,duration$$1,currentTimeline,currentTime){if(playlist.syncInfo){var syncPoint={time:playlist.syncInfo.time,segmentIndex:playlist.syncInfo.mediaSequence-playlist.mediaSequence};return syncPoint}
2740return null}}];var SyncController=function(_videojs$EventTarget){inherits$2(SyncController,_videojs$EventTarget);function SyncController(){classCallCheck$1(this,SyncController);var _this=possibleConstructorReturn$1(this,(SyncController.__proto__||Object.getPrototypeOf(SyncController)).call(this));_this.inspectCache_=undefined;_this.timelines=[];_this.discontinuities=[];_this.datetimeToDisplayTime=null;_this.logger_=logger('SyncController');return _this}
2741createClass$1(SyncController,[{key:'getSyncPoint',value:function getSyncPoint(playlist,duration$$1,currentTimeline,currentTime){var syncPoints=this.runStrategies_(playlist,duration$$1,currentTimeline,currentTime);if(!syncPoints.length){return null}
2742return this.selectSyncPoint_(syncPoints,{key:'time',value:currentTime})}},{key:'getExpiredTime',value:function getExpiredTime(playlist,duration$$1){if
2742(!playlist||!playlist.segments){return null}
2743var syncPoints=this.runStrategies_(playlist,duration$$1,playlist.discontinuitySequence,0);if(!syncPoints.length){return null}
2744var syncPoint=this.selectSyncPoint_(syncPoints,{key:'segmentIndex',value:0});if(syncPoint.segmentIndex>0){syncPoint.time*=-1}
2745return Math.abs(syncPoint.time+sumDurations(playlist,syncPoint.segmentIndex,0))}},{key:'runStrategies_',value:function runStrategies_(playlist,duration$$1,currentTimeline,currentTime){var syncPoints=[];for(var i=0;i<syncPointStrategies.length;i++){var strategy=syncPointStrategies[i];var syncPoint=strategy.run(this,playlist,duration$$1,currentTimeline,currentTime);if(syncPoint){syncPoint.strategy=strategy.name;syncPoints.push({strategy:strategy.name,syncPoint:syncPoint})}}
2746return syncPoints}},{key:'selectSyncPoint_',value:function selectSyncPoint_(syncPoints,target){var bestSyncPoint=syncPoints[0].syncPoint;var bestDistance=Math.abs(syncPoints[0].syncPoint[target.key]-target.value);var bestStrategy=syncPoints[0].strategy;for(var i=1;i<syncPoints.length;i++){var newDistance=Math.abs(syncPoints[i].syncPoint[target.key]-target.value);if(newDistance<bestDistance){bestDistance=newDistance;bestSyncPoint=syncPoints[i].syncPoint;bestStrategy=syncPoints[i].strategy}}
2747this.logger_('syncPoint for ['+target.key+': '+target.value+'] chosen with strategy'+(' ['+bestStrategy+']: [time:'+bestSyncPoint.time+',')+(' segmentIndex:'+bestSyncPoint.segmentIndex+']'));return bestSyncPoint}},{key:'saveExpiredSegmentInfo',value:function saveExpiredSegmentInfo(oldPlaylist,newPlaylist){var mediaSequenceDiff=newPlaylist.mediaSequence-oldPlaylist.mediaSequence;for(var i=mediaSequenceDiff-1;i>=0;i--){var lastRemovedSegment=oldPlaylist.segments[i];if(lastRemovedSegment&&typeof lastRemovedSegment.start!=='undefined'){newPlaylist.syncInfo={mediaSequence:oldPlaylist.mediaSequence+i,time:lastRemovedSegment.start};this.logger_('playlist refresh sync: [time:'+newPlaylist.syncInfo.time+','+(' mediaSequence: '+newPlaylist.syncInfo.mediaSequence+']'));this.trigger('syncinfoupdate');break}}}},{key:'setDateTimeMapping',value:function setDateTimeMapping(playlist){if(!this.datetimeToDisplayTime&&playlist.segments&&playlist.segments.length&&playlist.segments[0].dateTimeObject){var playlistTimestamp=playlist.segments[0].dateTimeObject.getTime()/1000;this.datetimeToDisplayTime=-playlistTimestamp}}},{key:'reset',value:function reset(){this.inspectCache_=undefined}},{key:'probeSegmentInfo',value:function probeSegmentInfo(segmentInfo){var segment=segmentInfo.segment;var playlist=segmentInfo.playlist;var timingInfo=void 0;if(segment.map){timingInfo=this.probeMp4Segment_(segmentInfo)}else{timingInfo=this.probeTsSegment_(segmentInfo)}
2748if(timingInfo){if(this.calculateSegmentTimeMapping_(segmentInfo,timingInfo)){this.saveDiscontinuitySyncInfo_(segmentInfo);if(!playlist.syncInfo){playlist.syncInfo={mediaSequence:playlist.mediaSequence+segmentInfo.mediaIndex,time:segment.start}}}}
2749return timingInfo}},{key:'probeMp4Segment_',value:function probeMp4Segment_(segmentInfo){var segment=segmentInfo.segment;var timescales=probe.timescale(segment.map.bytes);var compositionStartTime=probe.compositionStartTime(timescales,segmentInfo.bytes);if(segmentInfo.timestampOffset!==null){segmentInfo.timestampOffset-=compositionStartTime}
2750return{start:compositionStartTime,end:compositionStartTime+segment.duration}}},{key:'probeTsSegment_',value:function probeTsSegment_(segmentInfo){var timeInfo=tsprobe(segmentInfo.bytes,this.inspectCache_);var segmentStartTime=void 0;var segmentEndTime=void 0;var segmentTimestampInfo=void 0;if(!timeInfo){return null}
2751if(timeInfo.video&&timeInfo.video.length===2){this.inspectCache_=timeInfo.video[1].dts;segmentStartTime=timeInfo.video[0].dtsTime;segmentEndTime=timeInfo.video[1].dtsTime;segmentTimestampInfo=timeInfo.video}else if(timeInfo.audio&&timeInfo.audio.length===2){this.inspectCache_=timeInfo.audio[1].dts;segmentStartTime=timeInfo.audio[0].dtsTime;segmentEndTime=timeInfo.audio[1].dtsTime;segmentTimestampInfo=timeInfo.audio}
2752var probedInfo={segmentTimestampInfo:segmentTimestampInfo,start:segmentStartTime,end:segmentEndTime,containsVideo:timeInfo.video&&timeInfo.video.length===2,containsAudio:timeInfo.audio&&timeInfo.audio.length===2};return probedInfo}},{key:'timestampOffsetForTimeline',value:function timestampOffsetForTimeline(timeline){if(typeof this.timelines[timeline]==='undefined'){return null}
2753return this.timelines[timeline].time}},{key:'mappingForTimeline',value:function mappingForTimeline(timeline){if(typeof this.timelines[timeline]==='undefined'){return null}
2754return this.timelines[timeline].mapping}},{key:'calculateSegmentTimeMapping_',value:function calculateSegmentTimeMapping_(segmentInfo,timingInfo){var segment=segmentInfo.segment;var mappingObj=this.timelines[segmentInfo.timeline];if(segmentInfo.timestampOffset!==null){mappingObj={time:segmentInfo.startOfSegment,mapping:segmentInfo.startOfSegment-timingInfo.start};this.timelines[segmentInfo.timeline]=mappingObj;this.trigger('timestampoffset');this.logger_('time mapping for timeline '+segmentInfo.timeline+': '+('[time: '+mappingObj.time+'] [mapping: '+mappingObj.mapping+']'));segment.start=segmentInfo.startOfSegment;segment.end=timingInfo.end+mappingObj.mapping}else if(mappingObj){segment.start=timingInfo.start+mappingObj.mapping;segment.end=timingInfo.end+mappingObj.mapping}else{return!1}
2755return!0}},{key:'saveDiscontinuitySyncInfo_',value:function saveDiscontinuitySyncInfo_(segmentInfo){var playlist=segmentInfo.playlist;var segment=segmentInfo.segment;if(segment.discontinuity){this.discontinuities[segment.timeline]={time:segment.start,accuracy:0}}else if(playlist.discontinuityStarts&&playlist.discontinuityStarts.length){for(var i=0;i<playlist.discontinuityStarts.length;i++){var segmentIndex=playlist.discontinuityStarts[i];var discontinuity=playlist.discontinuitySequence+i+1;var mediaIndexDiff=segmentIndex-segmentInfo.mediaIndex;var accuracy=Math.abs(mediaIndexDiff);if(!this.discontinuities[discontinuity]||this.discontinuities[discontinuity].accuracy>accuracy){var time=void 0;if(mediaIndexDiff<0){time=segment.start-sumDurations(playlist,segmentInfo.mediaIndex,segmentIndex)}else{time=segment.end+sumDurations(playlist,segmentInfo.mediaIndex+1,segmentIndex)}
2756this.discontinuities[discontinuity]={time:time,accuracy:accuracy}}}}}}]);return SyncController}(videojs$1.EventTarget);var Decrypter$1=new shimWorker("./decrypter-worker.worker.js",function(window,document$$1){var self=this;var decrypterWorker=function(){function unpad(padded){return padded.subarray(0,padded.byteLength-padded[padded.byteLength-1])}
2757var classCallCheck=function classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}};var createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1;descriptor.configurable=!0;if("value" in descriptor)descriptor.writable=!0;Object.defineProperty(target,descriptor.key,descriptor)}}
2758return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var inherits=function inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass)}
2759subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass};var possibleConstructorReturn=function possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}
2760return call&&(typeof call==="object"||typeof call==="function")?call:self};var precompute=function precompute(){var tables=[[[],[],[],[],[]],[[],[],[],[],[]]];var encTable=tables[0];var decTable=tables[1];var sbox=encTable[4];var sboxInv=decTable[4];var i=void 0;var x=void 0;var xInv=void 0;var d=[];var th=[];var x2=void 0;var x4=void 0;var x8=void 0;var s=void 0;var tEnc=void 0;var tDec=void 0;for(i=0;i<256;i++){th[(d[i]=i<<1^(i>>7)*283)^i]=i}
2761for(x=xInv=0;!sbox[x];x^=x2||1,xInv=th[xInv]||1){s=xInv^xInv<<1^xInv<<2^xInv<<3^xInv<<4;s=s>>8^s&255^99;sbox[x]=s;sboxInv[s]=x;x8=d[x4=d[x2=d[x]]];tDec=x8*0x1010101^x4*0x10001^x2*0x101^x*0x1010100;tEnc=d[s]*0x101^s*0x1010100;for(i=0;i<4;i++){encTable[i][x]=tEnc=tEnc<<24^tEnc>>>8;decTable[i][s]=tDec=tDec<<24^tDec>>>8}}
2762for(i=0;i<5;i++){encTable[i]=encTable[i].slice(0);decTable[i]=decTable[i].slice(0)}
2763return tables};var aesTables=null;var AES=function(){function AES(key){classCallCheck(this,AES);if(!aesTables){aesTables=precompute()}
2764this._tables=[[aesTables[0][0].slice(),aesTables[0][1].slice(),aesTables[0][2].slice(),aesTables[0][3].slice(),aesTables[0][4].slice()],[aesTables[1][0].slice(),aesTables[1][1].slice(),aesTables[1][2].slice(),aesTables[1][3].slice(),aesTables[1][4].slice()]];var i=void 0;var j=void 0;var tmp=void 0;var encKey=void 0;var decKey=void 0;var sbox=this._tables[0][4];var decTable=this._tables[1];var keyLen=key.length;var rcon=1;if(keyLen!==4&&keyLen!==6&&keyLen!==8){throw new Error('Invalid aes key size')}
2765encKey=key.slice(0);decKey=[];this._key=[encKey,decKey];for(i=keyLen;i<4*keyLen+28;i++){tmp=encKey[i-1];if(i%keyLen===0||keyLen===8&&i%keyLen===4){tmp=sbox[tmp>>>24]<<24^sbox[tmp>>16&255]<<16^sbox[tmp>>8&255]<<8^sbox[tmp&255];if(i%keyLen===0){tmp=tmp<<8^tmp>>>24^rcon<<24;rcon=rcon<<1^(rcon>>7)*283}}
2766encKey[i]=encKey[i-keyLen]^tmp}
2767for(j=0;i;j++,i--){tmp=encKey[j&3?i:i-4];if(i<=4||j<4){decKey[j]=tmp}else{decKey[j]=decTable[0][sbox[tmp>>>24]]^decTable[1][sbox[tmp>>16&255]]^decTable[2][sbox[tmp>>8&255]]^decTable[3][sbox[tmp&255]]}}}
2768AES.prototype.decrypt=function decrypt$$1(encrypted0,encrypted1,encrypted2,encrypted3,out,offset){var key=this._key[1];var a=encrypted0^key[0];var b=encrypted3^key[1];var c=encrypted2^key[2];var d=encrypted1^key[3];var a2=void 0;var b2=void 0;var c2=void 0;var nInnerRounds=key.length/4-2;var i=void 0;var kIndex=4;var table=this._tables[1];var table0=table[0];var table1=table[1];var table2=table[2];var table3=table[3];var sbox=table[4];for(i=0;i<nInnerRounds;i++){a2=table0[a>>>24]^table1[b>>16&255]^table2[c>>8&255]^table3[d&255]^key[kIndex];b2=table0[b>>>24]^table1[c>>16&255]^table2[d>
2768>8&255]^table3[a&255]^key[kIndex+1];c2=table0[c>>>24]^table1[d>>16&255]^table2[a>>8&255]^table3[b&255]^key[kIndex+2];d=table0[d>>>24]^table1[a>>16&255]^table2[b>>8&255]^table3[c&255]^key[kIndex+3];kIndex+=4;a=a2;b=b2;c=c2}
2769for(i=0;i<4;i++){out[(3&-i)+offset]=sbox[a>>>24]<<24^sbox[b>>16&255]<<16^sbox[c>>8&255]<<8^sbox[d&255]^key[kIndex++];a2=a;a=b;b=c;c=d;d=a2}};return AES}();var Stream=function(){function Stream(){classCallCheck(this,Stream);this.listeners={}}
2770Stream.prototype.on=function on(type,listener){if(!this.listeners[type]){this.listeners[type]=[]}
2771this.listeners[type].push(listener)};Stream.prototype.off=function off(type,listener){if(!this.listeners[type]){return!1}
2772var index=this.listeners[type].indexOf(listener);this.listeners[type].splice(index,1);return index>-1};Stream.prototype.trigger=function trigger(type){var callbacks=this.listeners[type];if(!callbacks){return}
2773if(arguments.length===2){var length=callbacks.length;for(var i=0;i<length;++i){callbacks[i].call(this,arguments[1])}}else{var args=Array.prototype.slice.call(arguments,1);var _length=callbacks.length;for(var _i=0;_i<_length;++_i){callbacks[_i].apply(this,args)}}};Stream.prototype.dispose=function dispose(){this.listeners={}};Stream.prototype.pipe=function pipe(destination){this.on('data',function(data){destination.push(data)})};return Stream}();var AsyncStream$$1=function(_Stream){inherits(AsyncStream$$1,_Stream);function AsyncStream$$1(){classCallCheck(this,AsyncStream$$1);var _this=possibleConstructorReturn(this,_Stream.call(this,Stream));_this.jobs=[];_this.delay=1;_this.timeout_=null;return _this}
2774AsyncStream$$1.prototype.processJob_=function processJob_(){this.jobs.shift()();if(this.jobs.length){this.timeout_=setTimeout(this.processJob_.bind(this),this.delay)}else{this.timeout_=null}};AsyncStream$$1.prototype.push=function push(job){this.jobs.push(job);if(!this.timeout_){this.timeout_=setTimeout(this.processJob_.bind(this),this.delay)}};return AsyncStream$$1}(Stream);var ntoh=function ntoh(word){return word<<24|(word&0xff00)<<8|(word&0xff0000)>>8|word>>>24};var decrypt$$1=function decrypt$$1(encrypted,key,initVector){var encrypted32=new Int32Array(encrypted.buffer,encrypted.byteOffset,encrypted.byteLength>>2);var decipher=new AES(Array.prototype.slice.call(key));var decrypted=new Uint8Array(encrypted.byteLength);var decrypted32=new Int32Array(decrypted.buffer);var init0=void 0;var init1=void 0;var init2=void 0;var init3=void 0;var encrypted0=void 0;var encrypted1=void 0;var encrypted2=void 0;var encrypted3=void 0;var wordIx=void 0;init0=initVector[0];init1=initVector[1];init2=initVector[2];init3=initVector[3];for(wordIx=0;wordIx<encrypted32.length;wordIx+=4){encrypted0=ntoh(encrypted32[wordIx]);encrypted1=ntoh(encrypted32[wordIx+1]);encrypted2=ntoh(encrypted32[wordIx+2]);encrypted3=ntoh(encrypted32[wordIx+3]);decipher.decrypt(encrypted0,encrypted1,encrypted2,encrypted3,decrypted32,wordIx);decrypted32[wordIx]=ntoh(decrypted32[wordIx]^init0);decrypted32[wordIx+1]=ntoh(decrypted32[wordIx+1]^init1);decrypted32[wordIx+2]=ntoh(decrypted32[wordIx+2]^init2);decrypted32[wordIx+3]=ntoh(decrypted32[wordIx+3]^init3);init0=encrypted0;init1=encrypted1;init2=encrypted2;init3=encrypted3}
2775return decrypted};var Decrypter$$1=function(){function Decrypter$$1(encrypted,key,initVector,done){classCallCheck(this,Decrypter$$1);var step=Decrypter$$1.STEP;var encrypted32=new Int32Array(encrypted.buffer);var decrypted=new Uint8Array(encrypted.byteLength);var i=0;this.asyncStream_=new AsyncStream$$1();this.asyncStream_.push(this.decryptChunk_(encrypted32.subarray(i,i+step),key,initVector,decrypted));for(i=step;i<encrypted32.length;i+=step){initVector=new Uint32Array([ntoh(encrypted32[i-4]),ntoh(encrypted32[i-3]),ntoh(encrypted32[i-2]),ntoh(encrypted32[i-1])]);this.asyncStream_.push(this.decryptChunk_(encrypted32.subarray(i,i+step),key,initVector,decrypted))}
2776this.asyncStream_.push(function(){done(null,unpad(decrypted))})}
2777Decrypter$$1.prototype.decryptChunk_=function decryptChunk_(encrypted,key,initVector,decrypted){return function(){var bytes=decrypt$$1(encrypted,key,initVector);decrypted.set(bytes,encrypted.byteOffset)}};createClass(Decrypter$$1,null,[{key:'STEP',get:function get$$1(){return 32000}}]);return Decrypter$$1}();var createTransferableMessage=function createTransferableMessage(message){var transferable={};Object.keys(message).forEach(function(key){var value=message[key];if(ArrayBuffer.isView(value)){transferable[key]={bytes:value.buffer,byteOffset:value.byteOffset,byteLength:value.byteLength}}else{transferable[key]=value}});return transferable};var DecrypterWorker=function DecrypterWorker(self){self.onmessage=function(event){var data=event.data;var encrypted=new Uint8Array(data.encrypted.bytes,data.encrypted.byteOffset,data.encrypted.byteLength);var key=new Uint32Array(data.key.bytes,data.key.byteOffset,data.key.byteLength/4);var iv=new Uint32Array(data.iv.bytes,data.iv.byteOffset,data.iv.byteLength/4);new Decrypter$$1(encrypted,key,iv,function(err,bytes){self.postMessage(createTransferableMessage({source:data.source,decrypted:bytes}),[bytes.buffer])})}};var decrypterWorker=new DecrypterWorker(self);return decrypterWorker}()});var audioTrackKind_=function audioTrackKind_(properties){var kind=properties["default"]?'main':'alternative';if(properties.characteristics&&properties.characteristics.indexOf('public.accessibility.describes-video')>=0){kind='main-desc'}
2778return kind};var stopLoaders=function stopLoaders(segmentLoader,mediaType){segmentLoader.abort();segmentLoader.pause();if(mediaType&&mediaType.activePlaylistLoader){mediaType.activePlaylistLoader.pause();mediaType.activePlaylistLoader=null}};var startLoaders=function startLoaders(playlistLoader,mediaType){mediaType.activePlaylistLoader=playlistLoader;playlistLoader.load()};var onGroupChanged=function onGroupChanged(type,settings){return function(){var _settings$segmentLoad=settings.segmentLoaders,segmentLoader=_settings$segmentLoad[type],mainSegmentLoader=_settings$segmentLoad.main,mediaType=sett
2778ings.mediaTypes[type];var activeTrack=mediaType.activeTrack();var activeGroup=mediaType.activeGroup(activeTrack);var previousActiveLoader=mediaType.activePlaylistLoader;stopLoaders(segmentLoader,mediaType);if(!activeGroup){return}
2779if(!activeGroup.playlistLoader){if(previousActiveLoader){mainSegmentLoader.resetEverything()}
2780return}
2781segmentLoader.resyncLoader();startLoaders(activeGroup.playlistLoader,mediaType)}};var onTrackChanged=function onTrackChanged(type,settings){return function(){var _settings$segmentLoad2=settings.segmentLoaders,segmentLoader=_settings$segmentLoad2[type],mainSegmentLoader=_settings$segmentLoad2.main,mediaType=settings.mediaTypes[type];var activeTrack=mediaType.activeTrack();var activeGroup=mediaType.activeGroup(activeTrack);var previousActiveLoader=mediaType.activePlaylistLoader;stopLoaders(segmentLoader,mediaType);if(!activeGroup){return}
2782if(!activeGroup.playlistLoader){mainSegmentLoader.resetEverything();return}
2783if(previousActiveLoader===activeGroup.playlistLoader){startLoaders(activeGroup.playlistLoader,mediaType);return}
2784if(segmentLoader.track){segmentLoader.track(activeTrack)}
2785segmentLoader.resetEverything();startLoaders(activeGroup.playlistLoader,mediaType)}};var onError={AUDIO:function AUDIO(type,settings){return function(){var segmentLoader=settings.segmentLoaders[type],mediaType=settings.mediaTypes[type],blacklistCurrentPlaylist=settings.blacklistCurrentPlaylist;stopLoaders(segmentLoader,mediaType);var activeTrack=mediaType.activeTrack();var activeGroup=mediaType.activeGroup();var id=(activeGroup.filter(function(group){return group["default"]})[0]||activeGroup[0]).id;var defaultTrack=mediaType.tracks[id];if(activeTrack===defaultTrack){blacklistCurrentPlaylist({message:'Problem encountered loading the default audio track.'});return}
2786videojs$1.log.warn('Problem encountered loading the alternate audio track.'+'Switching back to default.');for(var trackId in mediaType.tracks){mediaType.tracks[trackId].enabled=mediaType.tracks[trackId]===defaultTrack}
2787mediaType.onTrackChanged()}},SUBTITLES:function SUBTITLES(type,settings){return function(){var segmentLoader=settings.segmentLoaders[type],mediaType=settings.mediaTypes[type];videojs$1.log.warn('Problem encountered loading the subtitle track.'+'Disabling subtitle track.');stopLoaders(segmentLoader,mediaType);var track=mediaType.activeTrack();if(track){track.mode='disabled'}
2788mediaType.onTrackChanged()}}};var setupListeners={AUDIO:function AUDIO(type,playlistLoader,settings){if(!playlistLoader){return}
2789var tech=settings.tech,requestOptions=settings.requestOptions,segmentLoader=settings.segmentLoaders[type];playlistLoader.on('loadedmetadata',function(){var media=playlistLoader.media();segmentLoader.playlist(media,requestOptions);if(!tech.paused()||media.endList&&tech.preload()!=='none'){segmentLoader.load()}});playlistLoader.on('loadedplaylist',function(){segmentLoader.playlist(playlistLoader.media(),requestOptions);if(!tech.paused()){segmentLoader.load()}});playlistLoader.on('error',onError[type](type,settings))},SUBTITLES:function SUBTITLES(type,playlistLoader,settings){var tech=settings.tech,requestOptions=settings.requestOptions,segmentLoader=settings.segmentLoaders[type],mediaType=settings.mediaTypes[type];playlistLoader.on('loadedmetadata',function(){var media=playlistLoader.media();segmentLoader.playlist(media,requestOptions);segmentLoader.track(mediaType.activeTrack());if(!tech.paused()||media.endList&&tech.preload()!=='none'){segmentLoader.load()}});playlistLoader.on('loadedplaylist',function(){segmentLoader.playlist(playlistLoader.media(),requestOptions);if(!tech.paused()){segmentLoader.load()}});playlistLoader.on('error',onError[type](type,settings))}};var initialize={'AUDIO':function AUDIO(type,settings){var hls=settings.hls,sourceType=settings.sourceType,segmentLoader=settings.segmentLoaders[type],requestOptions=settings.requestOptions,mediaGroups=settings.master.mediaGroups,_settings$mediaTypes$=settings.mediaTypes[type],groups=_settings$mediaTypes$.groups,tracks=_settings$mediaTypes$.tracks,masterPlaylistLoader=settings.masterPlaylistLoader;if(!mediaGroups[type]||Object.keys(mediaGroups[type]).length===0){mediaGroups[type]={main:{"default":{"default":!0}}}}
2790for(var groupId in mediaGroups[type]){if(!groups[groupId]){groups[groupId]=[]}
2791for(var variantLabel in mediaGroups[type][groupId]){var properties=mediaGroups[type][groupId][variantLabel];var playlistLoader=void 0;if(properties.resolvedUri){playlistLoader=new PlaylistLoader(properties.resolvedUri,hls,requestOptions)}else if(properties.playlists&&sourceType==='dash'){playlistLoader=new DashPlaylistLoader(properties.playlists[0],hls,requestOptions,masterPlaylistLoader)}else{playlistLoader=null}
2792properties=videojs$1.mergeOptions({id:variantLabel,playlistLoader:playlistLoader},properties);setupListeners[type](type,properties.playlistLoader,settings);groups[groupId].push(properties);if(typeof tracks[variantLabel]==='undefined'){var track=new videojs$1.AudioTrack({id:variantLabel,kind:audioTrackKind_(properties),enabled:!1,language:properties.language,"default":properties["default"],label:variantLabel});tracks[variantLabel]=track}}}
2793segmentLoader.on('error',onError[type](type,settings))},'SUBTITLES':function SUBTITLES(type,settings){var tech=settings.tech,hls=settings.hls,sourceType=sett
2793ings.sourceType,segmentLoader=settings.segmentLoaders[type],requestOptions=settings.requestOptions,mediaGroups=settings.master.mediaGroups,_settings$mediaTypes$2=settings.mediaTypes[type],groups=_settings$mediaTypes$2.groups,tracks=_settings$mediaTypes$2.tracks,masterPlaylistLoader=settings.masterPlaylistLoader;for(var groupId in mediaGroups[type]){if(!groups[groupId]){groups[groupId]=[]}
2794for(var variantLabel in mediaGroups[type][groupId]){if(mediaGroups[type][groupId][variantLabel].forced){continue}
2795var properties=mediaGroups[type][groupId][variantLabel];var playlistLoader=void 0;if(sourceType==='hls'){playlistLoader=new PlaylistLoader(properties.resolvedUri,hls,requestOptions)}else if(sourceType==='dash'){playlistLoader=new DashPlaylistLoader(properties.playlists[0],hls,requestOptions,masterPlaylistLoader)}
2796properties=videojs$1.mergeOptions({id:variantLabel,playlistLoader:playlistLoader},properties);setupListeners[type](type,properties.playlistLoader,settings);groups[groupId].push(properties);if(typeof tracks[variantLabel]==='undefined'){var track=tech.addRemoteTextTrack({id:variantLabel,kind:'subtitles',"default":properties["default"]&&properties.autoselect,language:properties.language,label:variantLabel},!1).track;tracks[variantLabel]=track}}}
2797segmentLoader.on('error',onError[type](type,settings))},'CLOSED-CAPTIONS':function CLOSEDCAPTIONS(type,settings){var tech=settings.tech,mediaGroups=settings.master.mediaGroups,_settings$mediaTypes$3=settings.mediaTypes[type],groups=_settings$mediaTypes$3.groups,tracks=_settings$mediaTypes$3.tracks;for(var groupId in mediaGroups[type]){if(!groups[groupId]){groups[groupId]=[]}
2798for(var variantLabel in mediaGroups[type][groupId]){var properties=mediaGroups[type][groupId][variantLabel];if(!properties.instreamId.match(/CC\d/)){continue}
2799groups[groupId].push(videojs$1.mergeOptions({id:variantLabel},properties));if(typeof tracks[variantLabel]==='undefined'){var track=tech.addRemoteTextTrack({id:properties.instreamId,
2799kind:'captions',"default":properties["default"]&&properties.autoselect,language:properties.language,label:variantLabel},!1).track;tracks[variantLabel]=track}}}}};var activeGroup=function activeGroup(type,settings){return function(track){var masterPlaylistLoader=settings.masterPlaylistLoader,groups=settings.mediaTypes[type].groups;var media=masterPlaylistLoader.media();if(!media){return null}
2800var variants=null;if(media.attributes[type]){variants=groups[media.attributes[type]]}
2801variants=variants||groups.main;if(typeof track==='undefined'){return variants}
2802if(track===null){return null}
2803return variants.filter(function(props){return props.id===track.id})[0]||null}};var activeTrack={AUDIO:function AUDIO(type,settings){return function(){var tracks=settings.mediaTypes[type].tracks;for(var id in tracks){if(tracks[id].enabled){return tracks[id]}}
2804return null}},SUBTITLES:function SUBTITLES(type,settings){return function(){var tracks=settings.mediaTypes[type].tracks;for(var id in tracks){if(tracks[id].mode==='showing'){return tracks[id]}}
2805return null}}};var setupMediaGroups=function setupMediaGroups(settings){['AUDIO','SUBTITLES','CLOSED-CAPTIONS'].forEach(function(type){initialize[type](type,settings)});var mediaTypes=settings.mediaTypes,masterPlaylistLoader=settings.masterPlaylistLoader,tech=settings.tech,hls=settings.hls;['AUDIO','SUBTITLES'].forEach(function(type){mediaTypes[type].activeGroup=activeGroup(type,settings);mediaTypes[type].activeTrack=activeTrack[type](type,settings);mediaTypes[type].onGroupChanged=onGroupChanged(type,settings);mediaTypes[type].onTrackChanged=onTrackChanged(type,settings)});var audioGroup=mediaTypes.AUDIO.activeGroup();var groupId=(audioGroup.filter(function(group){return group["default"]})[0]||audioGroup[0]).id;mediaTypes.AUDIO.tracks[groupId].enabled=!0;mediaTypes.AUDIO.onTrackChanged();masterPlaylistLoader.on('mediachange',function(){['AUDIO','SUBTITLES'].forEach(function(type){return mediaTypes[type].onGroupChanged()})});var onAudioTrackChanged=function onAudioTrackChanged(){mediaTypes.AUDIO.onTrackChanged();tech.trigger({type:'usage',name:'hls-audio-change'})};tech.audioTracks().addEventListener('change',onAudioTrackChanged);tech.remoteTextTracks().addEventListener('change',mediaTypes.SUBTITLES.onTrackChanged);hls.on('dispose',function(){tech.audioTracks().removeEventListener('change',onAudioTrackChanged);tech.remoteTextTracks().removeEventListener('change',mediaTypes.SUBTITLES.onTrackChanged)});tech.clearTracks('audio');for(var id in mediaTypes.AUDIO.tracks){tech.audioTracks().addTrack(mediaTypes.AUDIO.tracks[id])}};var createMediaTypes=function createMediaTypes(){var mediaTypes={};['AUDIO','SUBTITLES','CLOSED-CAPTIONS'].forEach(function(type){mediaTypes[type]={groups:{},tracks:{},activePlaylistLoader:null,activeGroup:noop$1,activeTrack:noop$1,onGroupChanged:noop$1,onTrackChanged:noop$1}});return mediaTypes};var ABORT_EARLY_BLACKLIST_SECONDS=60*2;var Hls=void 0;var loaderStats=['mediaRequests','mediaRequestsAborted','mediaRequestsTimedout','mediaRequestsErrored','mediaTransferDuration','mediaBytesTransferred'];var sumLoaderStat=function sumLoaderStat(stat){return this.audioSegmentLoader_[stat]+this.mainSegmentLoader_[stat]};var MasterPlaylistController=function(_videojs$EventTarget){inherits$2(MasterPlaylistController,_videojs$EventTarget);function MasterPlaylistController(options){classCallCheck$1(this,MasterPlaylistController);var _this=possibleConstructorReturn$1(this,(MasterPlaylistController.__proto__||Object.getPrototypeOf(MasterPlaylistController)).call(this));var url=options.url,handleManifestRedirects=options.handleManifestRedirects,withCredentials=options.withCredentials,tech=options.tech,bandwidth=options.bandwidth,externHls=options.externHls,useCueTags=options.useCueTags,blacklistDuration=options.blacklistDuration,enableLowInitialPlaylist=options.enableLowInitialPlaylist,sourceType=options.sourceType,seekTo=options.seekTo,cacheEncryptionKeys=options.cacheEncryptionKeys;if(!url){throw new Error('A non-empty playlist URL is required')}
2806Hls=externHls;_this.withCredentials=withCredentials;_this.tech_=tech;_this.hls_=tech.hls;_this.seekTo_=seekTo;_this.sourceType_=sourceType;_this.useCueTags_=useCueTags;
2806_this.blacklistDuration=blacklistDuration;_this.enableLowInitialPlaylist=enableLowInitialPlaylist;if(_this.useCueTags_){_this.cueTagsTrack_=_this.tech_.addTextTrack('metadata','ad-cues');_this.cueTagsTrack_.inBandMetadataTrackDispatchType=''}
2807_this.requestOptions_={withCredentials:withCredentials,handleManifestRedirects:handleManifestRedirects,timeout:null};_this.mediaTypes_=createMediaTypes();_this.mediaSource=new videojs$1.MediaSource();_this.mediaSource.addEventListener('sourceopen',_this.handleSourceOpen_.bind(_this));_this.seekable_=videojs$1.createTimeRanges();_this.hasPlayed_=function(){return!1};_this.syncController_=new SyncController(options);_this.segmentMetadataTrack_=tech.addRemoteTextTrack({kind:'metadata',label:'segment-metadata'},!1).track;_this.decrypter_=new Decrypter$1();_this.inbandTextTracks_={};var segmentLoaderSettings={hls:_this.hls_,mediaSource:_this.mediaSource,currentTime:_this.tech_.currentTime.bind(_this.tech_),seekable:function seekable$$1(){return _this.seekable()},seeking:function seeking(){return _this.tech_.seeking()},duration:function duration$$1(){return _this.mediaSource.duration},hasPlayed:function hasPlayed(){return _this.hasPlayed_()},goalBufferLength:function goalBufferLength(){return _this.goalBufferLength()},bandwidth:bandwidth,syncController:_this.syncController_,decrypter:_this.decrypter_,sourceType:_this.sourceType_,inbandTextTracks:_this.inbandTextTracks_,cacheEncryptionKeys:cacheEncryptionKeys};_this.masterPlaylistLoader_=_this.sourceType_==='dash'?new DashPlaylistLoader(url,_this.hls_,_this.requestOptions_):new PlaylistLoader(url,_this.hls_,_this.requestOptions_);_this.setupMasterPlaylistLoaderListeners_();_this.mainSegmentLoader_=new SegmentLoader(videojs$1.mergeOptions(segmentLoaderSettings,{segmentMetadataTrack:_this.segmentMetadataTrack_,loaderType:'main'}),options);_this.audioSegmentLoader_=new SegmentLoader(videojs$1.mergeOptions(segmentLoaderSettings,{loaderType:'audio'}),options);_this.subtitleSegmentLoader_=new VTTSegmentLoader(videojs$1.mergeOptions(segmentLoaderSettings,{loaderType:'vtt'}),options);_this.setupSegmentLoaderListeners_();
2807loaderStats.forEach(function(stat){_this[stat+'_']=sumLoaderStat.bind(_this,stat)});_this.logger_=logger('MPC');_this.masterPlaylistLoader_.load();return _this}
2808createClass$1(MasterPlaylistController,[{key:'setupMasterPlaylistLoaderListeners_',value:function setupMasterPlaylistLoaderListeners_(){var _this2=this;this.masterPlaylistLoader_.on('loadedmetadata',function(){var media=_this2.masterPlaylistLoader_.media();var requestTimeout=media.targetDuration*1.5*1000;if(isLowestEnabledRendition(_this2.masterPlaylistLoader_.master,_this2.masterPlaylistLoader_.media())){_this2.requestOptions_.timeout=0}else{_this2.requestOptions_.timeout=requestTimeout}
2809if(media.endList&&_this2.tech_.preload()!=='none'){_this2.mainSegmentLoader_.playlist(media,_this2.requestOptions_);_this2.mainSegmentLoader_.load()}
2810setupMediaGroups({sourceType:_this2.sourceType_,segmentLoaders:{AUDIO:_this2.audioSegmentLoader_,SUBTITLES:_this2.subtitleSegmentLoader_,main:_this2.mainSegmentLoader_},tech:_this2.tech_,requestOptions:_this2.requestOptions_,masterPlaylistLoader:_this2.masterPlaylistLoader_,hls:_this2.hls_,master:_this2.master(),mediaTypes:_this2.mediaTypes_,blacklistCurrentPlaylist:_this2.blacklistCurrentPlaylist.bind(_this2)});_this2.triggerPresenceUsage_(_this2.master(),media);try{_this2.setupSourceBuffers_()}catch(e){videojs$1.log.warn('Failed to create SourceBuffers',e);return _this2.mediaSource.endOfStream('decode')}
2811_this2.setupFirstPlay();if(!_this2.mediaTypes_.AUDIO.activePlaylistLoader||_this2.mediaTypes_.AUDIO.activePlaylistLoader.media()){_this2.trigger('selectedinitialmedia')}else{_this2.mediaTypes_.AUDIO.activePlaylistLoader.one('loadedmetadata',function(){_this2.trigger('selectedinitialmedia')})}});this.masterPlaylistLoader_.on('loadedplaylist',function(){var updatedPlaylist=_this2.masterPlaylistLoader_.media();if(!updatedPlaylist){_this2.excludeUnsupportedVariants_();var selectedMedia=void 0;if(_this2.enableLowInitialPlaylist){selectedMedia=_this2.selectInitialPlaylist()}
2812if(!selectedMedia){selectedMedia=_this2.selectPlaylist()}
2813_this2.initialMedia_=selectedMedia;_this2.masterPlaylistLoader_.media(_this2.initialMedia_);return}
2814if(_this2.useCueTags_){_this2.updateAdCues_(updatedPlaylist)}
2815_this2.mainSegmentLoader_.playlist(updatedPlaylist,_this2.requestOptions_);_this2.updateDuration();if(!_this2.tech_.paused()){_this2.mainSegmentLoader_.load();if(_this2.audioSegmentLoader_){_this2.audioSegmentLoader_.load()}}
2816if(!updatedPlaylist.endList){var addSeekableRange=function addSeekableRange(){var seekable$$1=_this2.seekable();if(seekable$$1.length!==0){_this2.mediaSource.addSeekableRange_(seekable$$1.start(0),seekable$$1.end(0))}};if(_this2.duration()!==Infinity){var onDurationchange=function onDurationchange(){if(_this2.duration()===Infinity){addSeekableRange()}else{_this2.tech_.one('durationchange',onDurationchange)}};_this2.tech_.one('durationchange',onDurationchange)}else{addSeekableRange()}}});this.masterPlaylistLoader_.on('error',function(){_this2.blacklistCurrentPlaylist(_this2.masterPlaylistLoader_.error)});this.masterPlaylistLoader_.on('mediachanging',function(){_this2.mainSegmentLoader_.abort();_this2.mainSegmentLoader_.pause()});this.masterPlaylistLoader_.on('mediachange',function(){var media=_this2.masterPlaylistLoader_.media();var requestTimeout=media.targetDuration*1.5*1000;if(isLowestEnabledRendition(_this2.masterPlaylistLoader_.master,_this2.masterPlaylistLoader_.media())){_this2.requestOptions_.timeout=0}else{_this2.requestOptions_.timeout=requestTimeout}
2817_this2.mainSegmentLoader_.playlist(media,_this2.requestOptions_);_this2.mainSegmentLoader_.load();_this2.tech_.trigger({type:'mediachange',bubbles:!0})});this.masterPlaylistLoader_.on('playlistunchanged',function(){var updatedPlaylist=_this2.masterPlaylistLoader_.media();var playlistOutdated=_this2.stuckAtPlaylistEnd_(updatedPlaylist);if(playlistOutdated){_this2.blacklistCurrentPlaylist({message:'Playlist no longer updating.'});_this2.tech_.trigger('playliststuck')}});this.masterPlaylistLoader_.on('renditiondisabled',function(){_this2.tech_.trigger({type:'usage',name:'hls-rendition-disabled'})});this.masterPlaylistLoader_.on('renditionenabled',function(){_this2.tech_.trigger({type:'usage',name:'hls-rendition-enabled'})})}},{key:'triggerPresenceUsage_',value:function triggerPresenceUsage_(master,media){var mediaGroups=master.mediaGroups||{};var defaultDemuxed=!0;var audioGroupKeys=Object.keys(mediaGroups.AUDIO);for(var mediaGroup in mediaGroups.AUDIO){for(var label in mediaGroups.AUDIO[mediaGroup]){var properties=mediaGroups.AUDIO[mediaGroup][label];if(!properties.uri){defaultDemuxed=!1}}}
2818if(defaultDemuxed){this.tech_.trigger({type:'usage',name:'hls-demuxed'})}
2819if(Object.keys(mediaGroups.SUBTITLES).length){this.tech_.trigger({type:'usage',name:'hls-webvtt'})}
2820if(Hls.Playlist.isAes(media)){this.tech_.trigger({type:'usage',name:'hls-aes'})}
2821if(Hls.Playlist.isFmp4(media)){this.tech_.trigger({type:'usage',name:'hls-fmp4'})}
2822if(audioGroupKeys.length&&Object.keys(mediaGroups.AUDIO[audioGroupKeys[0]]).length>1){this.tech_.trigger({type:'usage',name:'hls-alternate-audio'})}
2823if(this.useCueTags_){this.tech_.trigger({type:'usage',name:'hls-playlist-cue-tags'})}}},{key:'setupSegmentLoaderListeners_',value:function setupSegmentLoaderListeners_(){var _this3=this;this.mainSegmentLoader_.on('bandwidthupdate',function(){var nextPlaylist=_this3.selectPlaylist();var currentPlaylist=_this3.masterPlaylistLoader_.media();var buffered=_this3.tech_.buffered();var forwardBuffer=buffered.length?buffered.end(buffered.length-1)-_this3.tech_.currentTime():0;var bufferLowWaterLine=_this3.bufferLowWaterLine();if(!currentPlaylist.endList||_this3.duration()<Config.MAX_BUFFER_LOW_WATER_LINE||nextPlaylist.attributes.BANDWIDTH<currentPlaylist.attributes.BANDWIDTH||forwardBuffer>=bufferLowWaterLine){_this3.masterPlaylistLoader_.media(nextPlaylist)}
2824_this3.tech_.trigger('bandwidthupdate')});this.mainSegmentLoader_.on('progress',function(){_this3.trigger('progress')});this.mainSegmentLoader_.on('error',function(){_this3.blacklistCurrentPlaylist(_this3.mainSegmentLoader_.error())});this.mainSegmentLoader_.on('syncinfoupdate',function(){_this3.onSyncInfoUpdate_()});this.mainSegmentLoader_.on('timestampoffset',function(){_this3.tech_.trigger({type:'usage',name:'hls-timestamp-offset'})});this.audioSegmentLoader_.on('syncinfoupdate',function(){_this3.onSyncInfoUpdate_()});this.mainSegmentLoader_.on('ended',function(){_this3.onEndOfStream()});this.mainSegmentLoader_.on('earlyabort',function(){_this3.blacklistCurrentPlaylist({message:'Aborted early because there isn\'t enough bandwidth to complete the '+'request without rebuffering.'},ABORT_EARLY_BLACKLIST_SECONDS)});this.mainSegmentLoader_.on('reseteverything',function(){_this3.tech_.trigger('hls-reset')});this.mainSegmentLoader_.on('segmenttimemapping',function(event){_this3.tech_.trigger({type:'hls-segment-time-mapping',mapping:event.mapping})});this.audioSegmentLoader_.on('ended',function(){_this3.onEndOfStream()})}},{key:'mediaSecondsLoaded_',value:function mediaSecondsLoaded_(){return Math.max(this.audioSegmentLoader_.mediaSecondsLoaded+this.mainSegmentLoader_.mediaSecondsLoaded)}},{key:'load',value:function load(){this.mainSegmentLoader_.load();if(this.mediaTypes_.AUDIO.activePlaylistLoader){this.audioSegmentLoader_.load()}
2825if(this.mediaTypes_.SUBTITLES.activePlaylistLoader){this.subtitleSegmentLoader_.load()}}},{key:'smoothQualityChange_',value:function smoothQualityChange_(){var media=this.selectPlaylist();if(media!==this.masterPlaylistLoader_.media()){this.masterPlaylistLoader_.media(media);this.mainSegmentLoader_.resetLoader()}}},{key:'fastQualityChange_',value:function fastQualityChange_(){var _this4=this;var media=this.selectPlaylist();if(media===this.masterPlaylistLoader_.media()){return}
2826this.masterPlaylistLoader_.media(media);this.mainSegmentLoader_.resetEverything(function(){if(videojs$1.browser.IE_VERSION||videojs$1.browser.IS_EDGE){_this4.tech_.setCurrentTime(_this4.tech_.currentTime()+0.04)}else{_this4.tech_.setCurrentTime(_this4.tech_.currentTime())}})}},{key:'play',value:function play(){if(this.setupFirstPlay()){return}
2827if(this.tech_.ended()){this.seekTo_(0)}
2828if(this.hasPlayed_()){this.load()}
2829var seekable$$1=this.tech_.seekable();if(this.tech_.duration()===Infinity){if(this.tech_.currentTime()<seekable$$1.start(0)){return this.seekTo_(seekable$$1.end(seekable$$1.length-1))}}}},{key:'setupFirstPlay',value:function setupFirstPlay(){var _this5=this;var media=this.masterPlaylistLoader_.media();if(!media||this.tech_.paused()||this.hasPlayed_()){return!1}
2830if(!media.endList){var seekable$$1=this.seekable();if(!seekable$$1.length){return!1}
2831if(videojs$1.browser.IE_VERSION&&this.tech_.readyState()===0){this.tech_.one('loadedmetadata',function(){_this5.trigger('firstplay');_this5.seekTo_(seekable$$1.end(0));_this5.hasPlayed_=function(){return!0}});return!1}
2832this.trigger('firstplay');this.seekTo_(seekable$$1.end(0))}
2833this.hasPlayed_=function(){return!0};this.load();return!0}},{key:'handleSourceOpen_',value:function handleSourceOpen_(){try{this.setupSourceBuffers_()}catch(e){videojs$1.log.warn('Failed to create Source Buffers',e);return this.mediaSource.endOfStream('decode')}
2834if(this.tech_.autoplay()){var playPromise=this.tech_.play();if(typeof playPromise!=='undefined'&&typeof playPromise.then==='function'){playPromise.then(null,function(e){})}}
2835this.trigger('sourceopen')}},{key:'onEndOfStream',value:function onEndOfStream(){var isEndOfStream=this.mainSegmentLoader_.ended_;if(this.mediaTypes_.AUDIO.activePlaylistLoader){if(!this.mainSegmentLoader_.startingMedia_||this.mainSegmentLoader_.startingMedia_.containsVideo){isEndOfStream=isEndOfStream&&this.audioSegmentLoader_.ended_}else{isEndOfStream=this.audioSegmentLoader_.ended_}}
2836if(!isEndOfStream){return}
2837this.logger_('calling mediaSource.endOfStream()');try{this.mediaSource.endOfStream()}catch(e){videojs$1.log.warn('Failed to call media source endOfStream',e)}}},{key:'stuckAtPlaylistEnd_',value:function stuckAtPlaylistEnd_(playlist){var seekable$$1=this.seekable();if(!seekable$$1.length){return!1}
2838var expired=this.syncController_.getExpiredTime(playlist,this.mediaSource.duration);if(expired===null){return!1}
2839var absolutePlaylistEnd=Hls.Playlist.playlistEnd(playlist,expired);var currentTime=this.tech_.currentTime();var buffered=this.tech_.buffered();if(!buffered.length){return absolutePlaylistEnd-currentTime<=SAFE_TIME_DELTA}
2840var bufferedEnd=buffered.end(buffered.length-1);return bufferedEnd-currentTime<=SAFE_TIME_DELTA&&absolutePlaylistEnd-bufferedEnd<=SAFE_TIME_DELTA}},{key:'blacklistCurrentPlaylist',value:function blacklistCurrentPlaylist(){var error=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var blacklistDuration=arguments[1];var currentPlaylist=void 0;var nextPlaylist=void 0;currentPlaylist=error.playlist||this.masterPlaylistLoader_.media();blacklistDuration=blacklistDuration||error.blacklistDuration||this.blackl
2840istDuration;if(!currentPlaylist){this.error=error;try{return this.mediaSource.endOfStream('network')}catch(e){return this.trigger('error')}}
2841var isFinalRendition=this.masterPlaylistLoader_.master.playlists.filter(isEnabled).length===1;var playlists=this.masterPlaylistLoader_.master.playlists;if(playlists.length===1){videojs$1.log.warn('Problem encountered with the current '+'HLS playlist. Trying again since it is the only playlist.');this.tech_.trigger('retryplaylist');return this.masterPlaylistLoader_.load(isFinalRendition)}
2842if(isFinalRendition){videojs$1.log.warn('Removing all playlists from the blacklist because the last '+'rendition is about to be blacklisted.');playlists.forEach(function(playlist){if(playlist.excludeUntil!==Infinity){delete playlist.excludeUntil}});this.tech_.trigger('retryplaylist')}
2843currentPlaylist.excludeUntil=Date.now()+blacklistDuration*1000;this.tech_.trigger('blacklistplaylist');this.tech_.trigger({type:'usage',name:'hls-rendition-blacklisted'});nextPlaylist=this.selectPlaylist();videojs$1.log.warn('Problem encountered with the current HLS playlist.'+(error.message?' '+error.message:'')+' Switching to another playlist.');return this.masterPlaylistLoader_.media(nextPlaylist,isFinalRendition)}},{key:'pauseLoading',value:function pauseLoading(){this.mainSegmentLoader_.pause();if(this.mediaTypes_.AUDIO.activePlaylistLoader){this.audioSegmentLoader_.pause()}
2844if(this.mediaTypes_.SUBTITLES.activePlaylistLoader){this.subtitleSegmentLoader_.pause()}}},{key:'setCurrentTime',value:function setCurrentTime(currentTime){var buffered=findRange(this.tech_.buffered(),currentTime);if(!(this.masterPlaylistLoader_&&this.masterPlaylistLoader_.media())){return 0}
2845if(!this.masterPlaylistLoader_.media().segments){return 0}
2846if(buffered&&buffered.length){return currentTime}
2847this.mainSegmentLoader_.resetEverything();this.mainSegmentLoader_.abort();if(this.mediaTypes_.AUDIO.activePlaylistLoader){this.audioSegmentLoader_.resetEverything();this.audioSegmentLoader_.abort()}
2848if(this.mediaTypes_.SUBTITLES.activePlaylistLoader){this.subtitleSegmentLoader_.resetEverything();this.subtitleSegmentLoader_.abort()}
2849this.load()}},{key:'duration',value:function duration$$1(){if(!this.masterPlaylistLoader_){return 0}
2850if(this.mediaSource){return this.mediaSource.duration}
2851return Hls.Playlist.duration(this.masterPlaylistLoader_.media())}},{key:'seekable',value:function seekable$$1(){return this.seekable_}},{key:'onSyncInfoUpdate_',value:function onSyncInfoUpdate_(){var mainSeekable=void 0;var audioSeekable=void 0;if(!this.masterPlaylistLoader_){return}
2852var media=this.masterPlaylistLoader_.media();if(!media){return}
2853var expired=this.syncController_.getExpiredTime(media,this.mediaSource.duration);if(expired===null){return}
2854mainSeekable=Hls.Playlist.seekable(media,expired);if(mainSeekable.length===0){return}
2855if(this.mediaTypes_.AUDIO.activePlaylistLoader){media=this.mediaTypes_.AUDIO.activePlaylistLoader.media();expired=this.syncController_.getExpiredTime(media,this.mediaSource.duration);if(expired===null){return}
2856audioSeekable=Hls.Playlist.seekable(media,expired);if(audioSeekable.length===0){return}}
2857var oldEnd=void 0;var oldStart=void 0;if(this.seekable_&&this.seekable_.length){oldEnd=this.seekable_.end(0);oldStart=this.seekable_.start(0)}
2858if(!audioSeekable){this.seekable_=mainSeekable}else if(audioSeekable.start(0)>mainSeekable.end(0)||mainSeekable.start(0)>audioSeekable.end(0)){this.seekable_=mainSeekable}else{this.seekable_=videojs$1.createTimeRanges([[audioSeekable.start(0)>mainSeekable.start(0)?audioSeekable.start(0):mainSeekable.start(0),audioSeekable.end(0)<mainSeekable.end(0)?audioSeekable.end(0):mainSeekable.end(0)]])}
2859if(this.seekable_&&this.seekable_.length){if(this.seekable_.end(0)===oldEnd&&this.seekable_.start(0)===oldStart){return}}
2860this.logger_('seekable updated ['+printableRange(this.seekable_)+']');this.tech_.trigger('seekablechanged')}},{key:'updateDuration',value:function updateDuration(){var _this6=this;var oldDuration=this.mediaSource.duration;var newDuration=Hls.Playlist.duration(this.masterPlaylistLoader_.media());var buffered=this.tech_.buffered();var setDuration=function setDuration(){_this6.logger_('Setting duration from '+_this6.mediaSource.duration+' =>
2860 '+newDuration);try{_this6.mediaSource.duration=newDuration}catch(e){videojs$1.log.warn('Failed to set media source duration',e)}
2861_this6.tech_.trigger('durationchange');_this6.mediaSource.removeEventListener('sourceopen',setDuration)};if(buffered.length>0){newDuration=Math.max(newDuration,buffered.end(buffered.length-1))}
2862if(oldDuration!==newDuration){if(this.mediaSource.readyState!=='open'){this.mediaSource.addEventListener('sourceopen',setDuration)}else{setDuration()}}}},{key:'dispose',value:function dispose(){var _this7=this;this.decrypter_.terminate();this.masterPlaylistLoader_.dispose();this.mainSegmentLoader_.dispose();['AUDIO','SUBTITLES'].forEach(function(type){var groups=_this7.mediaTypes_[type].groups;for(var id in groups){groups[id].forEach(function(group){if(group.playlistLoader){group.playlistLoader.dispose()}})}});this.audioSegmentLoader_.dispose();this.subtitleSegmentLoader_.dispose()}},{key:'master',value:function master(){return this.masterPlaylistLoader_.master}},{key:'media',value:function media(){return this.masterPlaylistLoader_.media()||this.initialMedia_}},{key:'setupSourceBuffers_',value:function setupSourceBuffers_(){var media=this.masterPlaylistLoader_.media();var mimeTypes=void 0;if(!media||this.mediaSource.readyState!=='open'){return}
2863mimeTypes=mimeTypesForPlaylist(this.masterPlaylistLoader_.master,media);if(mimeTypes.length<1){this.error='No compatible SourceBuffer configuration for the variant stream:'+media.resolvedUri;return this.mediaSource.endOfStream('decode')}
2864this.configureLoaderMimeTypes_(mimeTypes);this.excludeIncompatibleVariants_(media)}},{key:'configureLoaderMimeTypes_',value:function configureLoaderMimeTypes_(mimeTypes){var sourceBufferEmitter=mimeTypes.length>1&&mimeTypes[0].indexOf(',')===-1&&mimeTypes[0]!==mimeTypes[1]?new videojs$1.EventTarget():null;this.mainSegmentLoader_.mimeType(mimeTypes[0],sourceBufferEmitter);if(mimeTypes[1]){this.audioSegmentLoader_.mimeType(mimeTypes[1],sourceBufferEmitter)}}},{key:'excludeUnsupportedVariants_',value:function excludeUnsupportedVariants_(){this.master().playlists.forEac
2864h(function(variant){if(variant.attributes.CODECS&&window$1.MediaSource&&window$1.MediaSource.isTypeSupported&&!window$1.MediaSource.isTypeSupported('video/mp4; codecs="'+mapLegacyAvcCodecs(variant.attributes.CODECS)+'"')){variant.excludeUntil=Infinity}})}},{key:'excludeIncompatibleVariants_',value:function excludeIncompatibleVariants_(media){var codecCount=2;var videoCodec=null;var codecs=void 0;if(media.attributes.CODECS){codecs=parseCodecs(media.attributes.CODECS);videoCodec=codecs.videoCodec;codecCount=codecs.codecCount}
2865this.master().playlists.forEach(function(variant){var variantCodecs={codecCount:2,videoCodec:null};if(variant.attributes.CODECS){variantCodecs=parseCodecs(variant.attributes.CODECS)}
2866if(variantCodecs.codecCount!==codecCount){variant.excludeUntil=Infinity}
2867if(variantCodecs.videoCodec!==videoCodec){variant.excludeUntil=Infinity}})}},{key:'updateAdCues_',value:function updateAdCues_(media){var offset=0;var seekable$$1=this.seekable();if(seekable$$1.length){offset=seekable$$1.start(0)}
2868updateAdCues(media,this.cueTagsTrack_,offset)}},{key:'goalBufferLength',value:function goalBufferLength(){var currentTime=this.tech_.currentTime();var initial=Config.GOAL_BUFFER_LENGTH;var rate=Config.GOAL_BUFFER_LENGTH_RATE;var max=Math.max(initial,Config.MAX_GOAL_BUFFER_LENGTH);return Math.min(initial+currentTime*rate,max)}},{key:'bufferLowWaterLine',value:function bufferLowWaterLine(){var currentTime=this.tech_.currentTime();var initial=Config.BUFFER_LOW_WATER_LINE;var rate=Config.BUFFER_LOW_WATER_LINE_RATE;var max=Math.max(initial,Config.MAX_BUFFER_LOW_WATER_LINE);return Math.min(initial+currentTime*rate,max)}}]);return MasterPlaylistController}(videojs$1.EventTarget);var enableFunction=function enableFunction(loader,playlistUri,changePlaylistFn){return function(enable){var playlist=loader.master.playlists[playlistUri];var incompatible=isIncompatible(playlist);var currentlyEnabled=isEnabled(playlist);if(typeof enable==='undefined'){return currentlyEnabled}
2869if(enable){delete playlist.disabled}else{playlist.disabled=!0}
2870if(enable!==currentlyEnabled&&!incompatible){changePlaylistFn();if(enable){loader.trigger('renditionenabled')}else{loader.trigger('renditiondisabled')}}
2871return enable}};var Representation=function Representation(hlsHandler,playlist,id){classCallCheck$1(this,Representation);var mpc=hlsHandler.masterPlaylistController_,smoothQualityChange=hlsHandler.options_.smoothQualityChange;var changeType=smoothQualityChange?'smooth':'fast';var qualityChangeFunction=mpc[changeType+'QualityChange_'].bind(mpc);if(playlist.attributes.RESOLUTION){var resolution=playlist.attributes.RESOLUTION;this.width=resolution.width;this.height=resolution.height}
2872this.bandwidth=playlist.attributes.BANDWIDTH;this.id=id;this.enabled=enableFunction(hlsHandler.playlists,playlist.uri,qualityChangeFunction)};var renditionSelectionMixin=function renditionSelectionMixin(hlsHandler){var playlists=hlsHandler.playlists;hlsHandler.representations=function(){return playlists.master.playlists.filter(function(media){return!isIncompatible(media)}).map(function(e,i){return new Representation(hlsHandler,e,e.uri)})}};var timerCancelEvents=['seeking','seeked','pause','playing','error'];var PlaybackWatcher=function(){function PlaybackWatcher(options){var _this=this;classCallCheck$1(this,PlaybackWatcher);this.tech_=options.tech;this.seekable=options.seekable;this.seekTo=options.seekTo;this.allowSeeksWithinUnsafeLiveWindow=options.allowSeeksWithinUnsafeLiveWindow;this.media=options.media;this.consecutiveUpdates=0;this.lastRecordedTime=null;this.timer_=null;this.checkCurrentTimeTimeout_=null;this.logger_=logger('PlaybackWatcher');this.logger_('initialize');var canPlayHandler=function canPlayHandler(){return _this.monitorCurrentTime_()};var waitingHandler=function waitingHandler(){return _this.techWaiting_()};var cancelTimerHandler=function cancelTimerHandler(){return _this.cancelTimer_()};var fixesBadSeeksHandler=function fixesBadSeeksHandler(){return _this.fixesBadSeeks_()};this.tech_.on('seekablechanged',fixesBadSeeksHandler);this.tech_.on('waiting',waitingHandler);this.tech_.on(timerCancelEvents,cancelTimerHandler);this.tech_.on('canplay',canPlayHandler);this.dispose=function(){_this.logger_('dispose');_this.tech_.off('seekablechanged',fixesBadSeeksHandler);_this.tech_.off('waiting',waitingHandler);_this.tech_.off(timerCancelEvents,cancelTimerHandler);_this.tech_.off('canplay',canPlayHandler);if(_this.checkCurrentTimeTimeout_){window$1.clearTimeout(_this.checkCurrentTimeTimeout_)}
2873_this.cancelTimer_()}}
2874createClass$1(PlaybackWatcher,[{key:'monitorCurrentTime_',value:function monitorCurrentTime_(){this.checkCurrentTime_();if(this.checkCurrentTimeTimeout_){window$1.clearTimeout(this.checkCurrentTimeTimeout_)}
2875this.checkCurrentTimeTimeout_=window$1.setTimeout(this.monitorCurrentTime_.bind(this),250)}},{key:'checkCurrentTime_',value:function checkCurrentTime_(){if(this.tech_.seeking()&&this.fixesBadSeeks_()){this.consecutiveUpdates=0;this.lastRecordedTime=this.tech_.currentTime();return}
2876if(this.tech_.paused()||this.tech_.seeking()){return}
2877var currentTime=this.tech_.currentTime();var buffered=this.tech_.buffered();if(this.lastRecordedTime===currentTime&&(!buffered.length||currentTime+SAFE_TIME_DELTA>=buffered.end(buffered.length-1))){return this.techWaiting_()}
2878if(this.consecutiveUpdates>=5&&currentTime===this.lastRecordedTime){this.consecutiveUpdates++;this.waiting_()}else if(currentTime===this.lastRecordedTime){this.consecutiveUpdates++}else{this.consecutiveUpdates=0;this.lastRecordedTime=currentTime}}},{key:'cancelTimer_',value:function cancelTimer_(){this.consecutiveUpdates=0;if(this.timer_){this.logger_('cancelTimer_');clearTimeout(this.timer_)}
2879this.timer_=null}},{key:'fixesBadSeeks_',value:function fixesBadSeeks_(){var seeking=this.tech_.seeking();if(!seeking){return!1}
2880var seekable=this.seekable();var currentTime=this.tech_.currentTime();var isAfterSeekableRange=this.afterSeekableWindow_(seekable,currentTime,this.media(),this.allowSeeksWithinUnsafeLiveWindow);var seekTo=void 0;if(isAfterSeekableRange){var seekableEnd=seekable.end(seekable.length-1);seekTo=seekableEnd}
2881if(this.beforeSeekableWindow_(seekable,currentTime)){var seekableStart=seekable.start(0);seekTo=seekableStart+SAFE_TIME_DELTA}
2882if(typeof seekTo!=='undefined'){this.logger_('Trying to seek outside of seekable at time '+currentTime+' with '+('seekable range '+printableRange(seekable)+'. Seeking to ')+(seekTo+'.'));this.seekTo(seekTo);return!0}
2883return!1}},{key:'waiting_',value:function waiting_(){if(this.techWaiting_()){return}
2884var currentTime=this.tech_.currentTime();var buffered=this.tech_.buffered();var currentRange=findRange(buffered,currentTime);if(currentRange.length&&currentTime+3<=currentRange.end(0)){this.cancelTimer_();this.seekTo(currentTime);this.logger_('Stopped at '+currentTime+' while inside a buffered region '+('['+currentRange.start(0)+' -> '+currentRange.end(0)+']. Attempting to resume ')+'playback by seeking to the current time.');this.tech_.trigger({type:'usage',name:'hls-unknown-waiting'});return}}},{key:'techWaiting_',value:function techWaiting_(){var seekable=this.seekable();var currentTime=this.tech_.currentTime();if(this.tech_.seeking()&&this.fixesBadSeeks_()){return!0}
2885if(this.tech_.seeking()||this.timer_!==null){return!0}
2886if(this.beforeSeekableWindow_(seekable,currentTime)){var livePoint=seekable.end(seekable.length-1);this.logger_('Fell out of live window at time '+currentTime+'. Seeking to '+('live point (seekable end) '+livePoint));this.cancelTimer_();this.seekTo(livePoint);this.tech_.trigger({type:'usage',name:'hls-live-resync'});return!0}
2887var buffered=this.tech_.buffered();var nextRange=findNextRange(buffered,currentTime);if(this.videoUnderflow_(nextRange,buffered,currentTime)){this.cancelTimer_();this.seekTo(currentTime);this.tech_.trigger({type:'usage',name:'hls-video-underflow'});return!0}
2888if(nextRange.length>0){var difference=nextRange.start(0)-currentTime;this.logger_('Stopped at '+currentTime+', setting timer for '+difference+', seeking '+('to '+nextRange.start(0)));this.timer_=setTimeout(this.skipTheGap_.bind(this),difference*1000,currentTime);return!0}
2889return!1}},{key:'afterSeekableWindow_',value:function afterSeekableWindow_(seekable,currentTime,playlist){var allowSeeksWithinUnsafeLiveWindow=arguments.length>3&&arguments[3]!==undefined?arguments[3]:!1;if(!seekable.length){return!1}
2890var allowedEnd=seekable.end(seekable.length-1)+SAFE_TIME_DELTA;var isLive=!playlist.endList;if(isLive&&allowSeeksWithinUnsafeLiveWindow){allowedEnd=seekable.end(seekable.length-1)+playlist.targetDuration*3}
2891if(currentTime>allowedEnd){return!0}
2892return!1}},{key:'beforeSeekableWindow_',value:function beforeSeekableWindow_(seekable,currentTime){if(seekable.length&&seekable.start(0)>0&&currentTime<seekable.start(0)-SAFE_TIME_DELTA){return!0}
2893return!1}},{key:'videoUnderflow_',value:function videoUnderflow_(nextRange,buffered,currentTime){if(nextRange.length===0){var gap=this.gapFromVideoUnderflow_(buffered,currentTime);if(gap){this.logger_('Encountered a gap in video from '+gap.start+' to '+gap.end+'. '+('Seeking to current time '+currentTime));return!0}}
2894return!1}},{key:'skipTheGap_',value:function skipTheGap_(scheduledCurrentTime){var buffered=this.tech_.buffered();var currentTime=this.tech_.currentTime();var nextRange=findNextRange(buffered,currentTime);this.cancelTimer_();if(nextRange.length===0||currentTime!==scheduledCurrentTime){return}
2895this.logger_('skipTheGap_:','currentTime:',currentTime,'scheduled currentTime:',scheduledCurrentTime,'nextRange start:',nextRange.start(0));this.seekTo(nextRange.start(0)+TIME_FUDGE_FACTOR);this.tech_.trigger({type:'usage',name:'hls-gap-skip'})}},{key:'gapFromVideoUnderflow_',value:function gapFromVideoUnderflow_(buffered,currentTime){var gaps=findGaps(buffered);for(var i=0;i<gaps.length;i++){var start=gaps.start(i);var end=gaps.end(i);if(currentTime-start<4&&currentTime-start>2){return{start:start,end:end}}}
2896return null}}]);return PlaybackWatcher}();var defaultOptions={errorInterval:30,getSource:function getSource(next){var tech=this.tech({IWillNotUseThisInPlugins:!0});var sourceObj=tech.currentSource_;return next(sourceObj)}};var initPlugin=function initPlugin(player,options){var lastCalled=0;var seekTo=0;var localOptions=videojs$1.mergeOptions(defaultOptions,options);player.ready(function(){player.trigger({type:'usage',name:'hls-error-reload-initialized'})});var loadedMetadataHandler=function loadedMetadataHandler(){if(seekTo){player.currentTime(seekTo)}};var setSource=function setSource(sourceObj){if(sourceObj===null||sourceObj===undefined){return}
2897seekTo=player.duration()!==Infinity&&player.currentTime()||0;player.one('loadedmetadata',loadedMetadataHandler);player.src(sourceObj);player.trigger({type:'usage',name:'hls-error-reload'});player.play()};var errorHandler=function errorHandler(){if(Date.now()-lastCalled<localOptions.errorInterval*1000){player.trigger({type:'usage',name:'hls-error-reload-canceled'});return}
2898if(!localOptions.getSource||typeof localOptions.getSource!=='function'){videojs$1.log.error('ERROR: reloadSourceOnError - The option getSource must be a function!');return}
2899lastCalled=Date.now();return localOptions.getSource.call(player,setSource)};var cleanupEvents=function cleanupEvents(){player.off('loadedmetadata',loadedMetadataHandler);player.off('error',errorHandler);player.off('dispose',cleanupEvents)};var reinitPlugin=function reinitPlugin(newOptions){cleanupEvents();initPlugin(player,newOptions)};player.on('error',errorHandler);player.on('dispose',cleanupEvents);player.reloadSourceOnError=reinitPlugin};var reloadSourceOnError=function reloadSourceOnError(options){initPlugin(this,options)};var version$1="1.11.2";videojs$1.use('*',function(player){return{setSource:function setSource(srcObj,next){next(null,srcObj)},setCurrentTime:function setCurrentTime(time){if(player.vhs&&player.currentSource().src===player.vhs.source_.src){player.vhs.setCurrentTime(time)}
2900return time},play:function play(){if(player.vhs&&player.currentSource().src===player.vhs.source_.src){player.vhs.setCurrentTime(player.tech_.currentTime())}}}});var Hls$1={PlaylistLoader:PlaylistLoader,Playlist:Playlist,Decrypter:Decrypter,AsyncStream:AsyncStream,decrypt:decrypt,utils:utils$1,STANDARD_PLAYLIST_SELECTOR:lastBandwidthSelector,INITIAL_PLAYLIST_SELECTOR:lowestBitrateCompatibleVariantSelector,comparePlaylistBandwidth:comparePlaylistBandwidth,comparePlaylistResolution:comparePlaylistResolution,xhr:xhrFactory()};['GOAL_BUFFER_LENGTH','MAX_GOAL_BUFFER_LENGTH','GOAL_BUFFER_LENGTH_RATE','BUFFER_LOW_WATER_LINE','MAX_BUFFER_LOW_WATER_LINE','BUFFER_LOW_WATER_LINE_RATE','BANDWIDTH_VARIANCE'].forEach(function(prop){Object.defineProperty(Hls$1,prop,{get:function get$$1(){videojs$1.log.warn('using Hls.'+prop+' is UNSAFE be sure you know 
2900what you are doing');return Config[prop]},set:function set$$1(value){videojs$1.log.warn('using Hls.'+prop+' is UNSAFE be sure you know what you are doing');if(typeof value!=='number'||value<0){videojs$1.log.warn('value of Hls.'+prop+' must be greater than or equal to 0');return}
2901Config[prop]=value}})});var LOCAL_STORAGE_KEY$1='videojs-vhs';var simpleTypeFromSourceType=function simpleTypeFromSourceType(type){var mpegurlRE=/^(audio|video|application)\/(x-|vnd\.apple\.)?mpegurl/i;if(mpegurlRE.test(type)){return'hls'}
2902var dashRE=/^application\/dash\+xml/i;if(dashRE.test(type)){return'dash'}
2903return null};var handleHlsMediaChange=function handleHlsMediaChange(qualityLevels,playlistLoader){var newPlaylist=playlistLoader.media();var selectedIndex=-1;for(var i=0;i<qualityLevels.length;i++){if(qualityLevels[i].id===newPlaylist.uri){selectedIndex=i;break}}
2904qualityLevels.selectedIndex_=selectedIndex;qualityLevels.trigger({selectedIndex:selectedIndex,type:'change'})};var handleHlsLoadedMetadata=function handleHlsLoadedMetadata(qualityLevels,hls){hls.representations().forEach(function(rep){qualityLevels.addQualityLevel(rep)});handleHlsMediaChange(qualityLevels,hls.playlists)};Hls$1.canPlaySource=function(){return videojs$1.log.warn('HLS is no longer a tech. Please remove it from '+'your player\'s techOrder.')};var emeKeySystems=function emeKeySystems(keySystemOptions,mainSegmentLoader,audioSegmentLoader){if(!keySystemOptions){return keySystemOptions}
2905var videoMimeType=void 0;var audioMimeType=void 0;if(audioSegmentLoader.mimeType_){videoMimeType=mainSegmentLoader.mimeType_;audioMimeType=audioSegmentLoader.mimeType_}else{var parsedMimeType=parseContentType(mainSegmentLoader.mimeType_);var codecs=parsedMimeType.parameters.codecs.split(',');var audioCodec=void 0;var videoCodec=void 0;codecs.forEach(function(codec){codec=codec.trim();if(isAudioCodec(codec)){audioCodec=codec}else if(isVideoCodec(codec)){videoCodec=codec}});videoMimeType=parsedMimeType.type+'; codecs="'+videoCodec+'"';audioMimeType=parsedMimeType.type.replace('video','audio')+'; codecs="'+audioCodec+'"'}
2906var keySystemContentTypes={};var videoPlaylist=mainSegmentLoader.playlist_;for(var keySystem in keySystemOptions){keySystemContentTypes[keySystem]={audioContentType:audioMimeType,videoContentType:videoMimeType};if(videoPlaylist.contentProtection&&videoPlaylist.contentProtection[keySystem]&&videoPlaylist.contentProtection[keySystem].pssh){keySystemContentTypes[keySystem].pssh=videoPlaylist.contentProtection[keySystem].pssh}
2907if(typeof keySystemOptions[keySystem]==='string'){keySystemContentTypes[keySystem].url=keySystemOptions[keySystem]}}
2908return videojs$1.mergeOptions(keySystemOptions,keySystemContentTypes)};var setupEmeOptions=function setupEmeOptions(hlsHandler){var mainSegmentLoader=hlsHandler.masterPlaylistController_.mainSegmentLoader_;var audioSegmentLoader=hlsHandler.masterPlaylistController_.audioSegmentLoader_;var player=videojs$1.players[hlsHandler.tech_.options_.playerId];if(player.eme){var sourceOptions=emeKeySystems(hlsHandler.source_.keySystems,mainSegmentLoader,audioSegmentLoader);if(sourceOptions){player.currentSource().keySystems=sourceOptions;if(!(videojs$1.browser.IE_VERSION===11)&&player.eme.initializeMediaKeys){player.eme.initializeMediaKeys()}}}};var getVhsLocalStorage=function getVhsLocalStorage(){if(!window.localStorage){return null}
2909var storedObject=window.localStorage.getItem(LOCAL_STORAGE_KEY$1);if(!storedObject){return null}
2910try{return JSON.parse(storedObject)}catch(e){return null}};var updateVhsLocalStorage=function updateVhsLocalStorage(options){if(!window.localStorage){return!1}
2911var objectToStore=getVhsLocalStorage();objectToStore=objectToStore?videojs$1.mergeOptions(objectToStore,options):options;try{window.localStorage.setItem(LOCAL_STORAGE_KEY$1,JSON.stringify(objectToStore))}catch(e){return!1}
2912return objectToStore};Hls$1.supportsNativeHls=function(){var video=document.createElement('video');if(!videojs$1.getTech('Html5').isSupported()){return!1}
2913var canPlay=['application/vnd.apple.mpegurl','audio/mpegurl','audio/x-mpegurl','application/x-mpegurl','video/x-mpegurl','video/mpegurl','application/mpegurl'];return canPlay.some(function(canItPlay){return/maybe|probably/i.test(video.canPlayType(canItPlay))})}();Hls$1.supportsNativeDash=function(){if(!videojs$1.getTech('Html5').isSupported()){return!1}
2914return/maybe|probably/i.test(document.createElement('video').canPlayType('application/d
2914ash+xml'))}();Hls$1.supportsTypeNatively=function(type){if(type==='hls'){return Hls$1.supportsNativeHls}
2915if(type==='dash'){return Hls$1.supportsNativeDash}
2916return!1};Hls$1.isSupported=function(){return videojs$1.log.warn('HLS is no longer a tech. Please remove it from '+'your player\'s techOrder.')};var Component$1=videojs$1.getComponent('Component');var HlsHandler=function(_Component){inherits$2(HlsHandler,_Component);function HlsHandler(source,tech,options){classCallCheck$1(this,HlsHandler);var _this=possibleConstructorReturn$1(this,(HlsHandler.__proto__||Object.getPrototypeOf(HlsHandler)).call(this,tech,options.hls));if(tech.options_&&tech.options_.playerId){var _player=videojs$1(tech.options_.playerId);if(!_player.hasOwnProperty('hls')){Object.defineProperty(_player,'hls',{get:function get$$1(){videojs$1.log.warn('player.hls is deprecated. Use player.tech().hls instead.');tech.trigger({type:'usage',name:'hls-player-access'});return _this},configurable:!0})}
2917_player.vhs=_this;_player.dash=_this;_this.player_=_player}
2918_this.tech_=tech;_this.source_=source;_this.stats={};_this.setOptions_();if(_this.options_.overrideNative&&tech.overrideNativeAudioTracks&&tech.overrideNativeVideoTracks){tech.overrideNativeAudioTracks(!0);tech.overrideNativeVideoTracks(!0)}else if(_this.options_.overrideNative&&(tech.featuresNativeVideoTracks||tech.featuresNativeAudioTracks)){throw new Error('Overriding native HLS requires emulated tracks. '+'See https://git.io/vMpjB')}
2919_this.on(document,['fullscreenchange','webkitfullscreenchange','mozfullscreenchange','MSFullscreenChange'],function(event){var fullscreenElement=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;if(fullscreenElement&&fullscreenElement.contains(_this.tech_.el())){_this.masterPlaylistController_.smoothQualityChange_()}});_this.on(_this.tech_,'seeking',function(){if(this.tech_.currentTime()===0&&this.tech_.player_.loop()){this.setCurrentTime(0)}});_this.on(_this.tech_,'error',function(){if(this.masterPlaylistController_){this.masterPlaylistController_.pauseLoading()}});_this.on(_this.tech_,'play',_this.play);return _this}
2920createClass$1(HlsHandler,[{key:'setOptions_',value:function setOptions_(){var _this2=this;this.options_.withCredentials=this.options_.withCredentials||!1;this.options_.handleManifestRedirects=this.options_.handleManifestRedirects||!1;this.options_.limitRenditionByPlayerDimensions=this.options_.limitRenditionByPlayerDimensions===!1?!1:!0;this.options_.smoothQualityChange=this.options_.smoothQualityChange||!1;this.options_.useBandwidthFromLocalStorage=typeof this.source_.useBandwidthFromLocalStorage!=='undefined'?this.source_.useBandwidthFromLocalStorage:this.options_.useBandwidthFromLocalStorage||!1;this.options_.customTagParsers=this.options_.customTagParsers||[];this.options_.customTagMappers=this.options_.customTagMappers||[];this.options_.cacheEncryptionKeys=this.options_.cacheEncryptionKeys||!1;if(typeof this.options_.blacklistDuration!=='number'){this.options_.blacklistDuration=5*60}
2921if(typeof this.options_.bandwidth!=='number'){if(this.options_.useBandwidthFromLocalStorage){var storedObject=getVhsLocalStorage();if(storedObject&&storedObject.bandwidth){this.options_.bandwidth=storedObject.bandwidth;this.tech_.trigger({type:'usage',name:'hls-bandwidth-from-local-storage'})}
2922if(storedObject&&storedObject.throughput){this.options_.throughput=storedObject.throughput;this.tech_.trigger({type:'usage',name:'hls-throughput-from-local-storage'})}}}
2923if(typeof this.options_.bandwidth!=='number'){this.options_.bandwidth=Config.INITIAL_BANDWIDTH}
2924this.options_.enableLowInitialPlaylist=this.options_.enableLowInitialPlaylist&&this.options_.bandwidth===Config.INITIAL_BANDWIDTH;['withCredentials','limitRenditionByPlayerDimensions','bandwidth','smoothQualityChange','customTagParsers','customTagMappers','handleManifestRedirects','cacheEncryptionKeys'].forEach(function(option){if(typeof _this2.source_[option]!=='undefined'){_this2.options_[option]=_this2.source_[option]}});this.limitRenditionByPlayerDimensions=this.options_.limitRenditionByPlayerDimensions}},{key:'src',value:function src(_src,type){var _this3=this;if(!_src){return}
2925this.setOptions_();this.options_.url=this.source_.src;this.options_.tech=this.tech_;this.options_.externHls=Hls$1;this.options_.sourceType=simpleTypeFromSourceType(type);this.options_.seekTo=function(time){_this3.tech_.setCurrentTime(time);_this3.setCurrentTime(time)};this.masterPlaylistController_=new MasterPlaylistController(this.options_);this.playbackWatcher_=new PlaybackWatcher(videojs$1.mergeOptions(this.options_,{seekable:function seekable$$1(){return _this3.seekable()},media:function media(){return _this3.masterPlaylistController_.media()}}));this.masterPlaylistController_.on('error',function(){var player=videojs$1.players[_this3.tech_.options_.playerId];player.error(_this3.masterPlaylistController_.error)});this.masterPlaylistController_.selectPlaylist=this.selectPlaylist?this.selectPlaylist.bind(this):Hls$1.STANDARD_PLAYLIST_SELECTOR.bind(this);this.masterPlaylistController_.selectInitialPlaylist=Hls$1.INITIAL_PLAYLIST_SELECTOR.bind(this);this.playlists=this.masterPlaylistController_.masterPlaylistLoader_;this.mediaSource=this.masterPlaylistController_.mediaSource;Object.defineProperties(this,{selectPlaylist:{get:function get$$1(){return this.masterPlaylistController_.selectPlaylist},set:function set$$1(selectPlaylist){this.masterPlaylistController_.selectPlaylist=selectPlaylist.bind(this)}},throughput:{get:function get$$1(){return this.masterPlaylistController_.mainSegmentLoader_.throughput.rate},set:function set$$1(throughput){this.masterPlaylistController_.mainSegmentLoader_.throughput.rate=throughput;this.masterPlaylistController_.mainSegmentLoader_.throughput.count=1}},bandwidth:{get:function get$$1(){return this.masterPlaylistController_.mainSegmentLoader_.bandwidth}
2925,set:function set$$1(bandwidth){this.masterPlaylistController_.mainSegmentLoader_.bandwidth=bandwidth;this.masterPlaylistController_.mainSegmentLoader_.throughput={rate:0,count:0}}},systemBandwidth:{get:function get$$1(){var invBandwidth=1/(this.bandwidth||1);var invThroughput=void 0;if(this.throughput>0){invThroughput=1/this.throughput}else{invThroughput=0}
2926var systemBitrate=Math.floor(1/(invBandwidth+invThroughput));return systemBitrate},set:function set$$1(){videojs$1.log.error('The "systemBandwidth" property is read-only')}}});if(this.options_.bandwidth){this.bandwidth=this.options_.bandwidth}
2927if(this.options_.throughput){this.throughput=this.options_.throughput}
2928Object.defineProperties(this.stats,{bandwidth:{get:function get$$1(){return _this3.bandwidth||0},enumerable:!0},mediaRequests:{get:function get$$1(){return _this3.masterPlaylistController_.mediaRequests_()||0},enumerable:!0},mediaRequestsAborted:{get:function get$$1(){return _this3.masterPlaylistController_.mediaRequestsAborted_()||0},enumerable:!0},mediaRequestsTimedout:{get:function get$$1(){return _this3.masterPlaylistController_.mediaRequestsTimedout_()||0},enumerable:!0},mediaRequestsErrored:{get:function get$$1(){return _this3.masterPlaylistController_.mediaRequestsErrored_()||0},enumerable:!0},mediaTransferDuration:{get:function get$$1(){return _this3.masterPlaylistController_.mediaTransferDuration_()||0},enumerable:!0},mediaBytesTransferred:{get:function get$$1(){return _this3.masterPlaylistController_.mediaBytesTransferred_()||0},enumerable:!0},mediaSecondsLoaded:{get:function get$$1(){return _this3.masterPlaylistController_.mediaSecondsLoaded_()||0},enumerable:!0},buffered:{get:function get$$1(){return timeRangesToArray(_this3.tech_.buffered())},enumerable:!0},currentTime:{get:function get$$1(){return _this3.tech_.currentTime()},enumerable:!0},currentSource:{get:function get$$1(){return _this3.tech_.currentSource_},enumerable:!0},currentTech:{get:function get$$1(){return _this3.tech_.name_},enumerable:!0},duration:{get:function get$$1(){return _this3.tech_.duration()},enumerable:!0},master:{get:function get$$1(){return _this3.playlists.master},enumerable:!0},playerDimensions:{get:function get$$1(){return _this3.tech_.currentDimensions()},enumerable:!0},seekable:{get:function get$$1(){return timeRangesToArray(_this3.tech_.seekable())},enumerable:!0},timestamp:{get:function get$$1(){return Date.now()},enumerable:!0},videoPlaybackQuality:{get:function get$$1(){return _this3.tech_.getVideoPlaybackQuality()},enumerable:!0}});this.tech_.one('canplay',this.masterPlaylistController_.setupFirstPlay.bind(this.masterPlaylistController_));this.tech_.on('bandwidthupdate',function(){if(_this3.options_.useBandwidthFromLocalStorage){updateVhsLocalStorage({bandwidth:_this3.bandwidth,throughput:Math.round(_this3.throughput)})}});this.masterPlaylistController_.on('selectedinitialmedia',function(){renditionSelectionMixin(_this3);setupEmeOptions(_this3)});this.on(this.masterPlaylistController_,'progress',function(){this.tech_.trigger('progress')});this.tech_.ready(function(){return _this3.setupQualityLevels_()});if(!this.tech_.el()){return}
2929this.tech_.src(videojs$1.URL.createObjectURL(this.masterPlaylistController_.mediaSource))}},{key:'setupQualityLevels_',value:function setupQualityLevels_(){var _this4=this;var player=videojs$1.players[this.tech_.options_.playerId];if(player&&player.qualityLevels){this.qualityLevels_=player.qualityLevels();this.masterPlaylistController_.on('selectedinitialmedia',function(){handleHlsLoadedMetadata(_this4.qualityLevels_,_this4)});this.playlists.on('mediachange',function(){handleHlsMediaChange(_this4.qualityLevels_,_this4.playlists)})}}},{key:'play',value:function play(){this.masterPlaylistController_.play()}},{key:'setCurrentTime',value:function setCurrentTime(currentTime){this.masterPlaylistController_.setCurrentTime(currentTime)}},{key:'duration',value:function duration$$1(){return this.masterPlaylistController_.duration()}},{key:'seekable',value:function seekable$$1(){return this.masterPlaylistController_.seekable()}},{key:'dispose',value:function dispose(){if(this.playbackWatcher_){this.playbackWatcher_.dispose()}
2930if(this.masterPlaylistController_){this.masterPlaylistController_.dispose()}
2931if(this.qualityLevels_){this.qualityLevels_.dispose()}
2932if(this.player_){delete this.player_.vhs;delete this.player_.dash;delete this.player_.hls}
2933if(this.tech_&&this.tech_.hls){delete this.tech_.hls}
2934get$1(HlsHandler.prototype.__proto__||Object.getPrototypeOf(HlsHandler.prototype),'dispose',this).call(this)}},{key:'convertToProgramTime',value:function convertToProgramTime(time,callback){return getProgramTime({playlist:this.masterPlaylistController_.media(),time:time,callback:callback})}},{key:'seekToProgramTime',value:function seekToProgramTime$$1(programTime,callback){var pauseAfterSeek=arguments.length>2&&arguments[2]!==undefined?arguments[2]:!0;var retryCount=arguments.length>3&&arguments[3]!==undefined?arguments[3]:2;return seekToProgramTime({programTime:programTime,playlist:this.masterPlaylistController_.media(),retryCount:retryCount,pauseAfterSeek:pauseAfterSeek,seekTo:this.options_.seekTo,tech:this.options_.tech,callback:callback})}}]);return HlsHandler}(Component$1);var HlsSourceHandler={name:'videojs-http-streaming',VERSION:version$1,canHandleSource:function canHandleSource(srcObj){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var localOptions=videojs$1.mergeOptions(videojs$1.options,options);return HlsSourceHandler.canPlayType(srcObj.type,localOptions)},handleSource:function handleSource(source,tech){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var localOptions=videojs$1.mergeOptions(videojs$1.options,options);tech.hls=new HlsHandler(source,tech,localOptions);tech.hls.xhr=xhrFactory();tech.hls.src(source.src,source.type);return tech.hls},canPlayType:function canPlayType(type){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var _videojs$mergeOptions=videojs$1.mergeOptions(videojs$1.options,options),overrideNative=_videojs$mergeOptions.hls.overrideNative;var supportedType=simpleTypeFromSourceType(type);var canUseMsePlayback=supportedType&&(!Hls$1.supportsTypeNatively(supportedType)||overrideNative);return canUseMsePlayback?'maybe':''}};if(typeof videojs$1.MediaSource==='undefined'||typeof videojs$1.URL==='undefined'){videojs$1.MediaSource=MediaSource;videojs$1.URL=URL$1}
2935if(MediaSource.supportsNativeMediaSources()){videojs$1.getTech('Html5').registerSourceHandler(HlsSourceHandler,0)}
2936videojs$1.HlsHandler=HlsHandler;videojs$1.HlsSourceHandler=HlsSourceHandler;videojs$1.Hls=Hls$1;if(!videojs$1.use){videojs$1.registerComponent('Hls',Hls$1)}
2937videojs$1.options.hls=videojs$1.options.hls||{};if(videojs$1.registerPlugin){videojs$1.registerPlugin('reloadSourceOnError',reloadSourceOnError)}else{videojs$1.plugin('reloadSourceOnError',reloadSourceOnError)}
2938return videojs$1}));
2939
2940
2941
2942/*! @name videojs-vr @version 1.7.2 @license Apache-2.0 */
2943(function(global,factory){typeof exports==='object'&&typeof module!=='undefined'?module.exports=factory(require('global/window'),require('global/document'),require('video.js')):typeof define==='function'&&define.amd?define(['global/window','global/document','video.js'],factory):(global=global||self,global.videojsVr=factory(global.window,global.document,global.videojs))}(this,(function(window$1,document$1,videojs){'use strict';window$1=window$1&&window$1.hasOwnProperty('default')?window$1['default']:window$1;document$1=document$1&&document$1.hasOwnProperty('default')?document$1['default']:document$1;
2943videojs=videojs&&videojs.hasOwnProperty('default')?videojs['default']:videojs;function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}
2944return self}
2945var assertThisInitialized=_assertThisInitialized;function _inheritsLoose(subClass,superClass){subClass.prototype=Object.create(superClass.prototype);subClass.prototype.constructor=subClass;subClass.__proto__=superClass}
2946var inheritsLoose=_inheritsLoose;var version="1.7.2";var commonjsGlobal=typeof globalThis!=='undefined'?globalThis:typeof window!=='undefined'?window:typeof global!=='undefined'?global:typeof self!=='undefined'?self:{};function unwrapExports(x){return x&&x.__esModule&&Object.prototype.hasOwnProperty.call(x,'default')?x['default']:x}
2947function createCommonjsModule(fn,module){return module={exports:{}},fn(module,module.exports),module.exports}
2948var webvrPolyfill=createCommonjsModule(function(module,exports){/**
2949	 * @license
2950	 * webvr-polyfill
2951	 * Copyright (c) 2015-2017 Google
2952	 * Licensed under the Apache License, Version 2.0 (the "License");
2953	 * you may not use this file except in compliance with the License.
2954	 * You may obtain a copy of the License at
2955	 *
2956	 * http://www.apache.org/licenses/LICENSE-2.0
2957	 *
2958	 * Unless required by applicable law or agreed to in writing, software
2959	 * distributed under the License is distributed on an "AS IS" BASIS,
2960	 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2961	 * See the License for the specific language governing permissions and
2962	 * limitations under the License.
2963	 */
2964/**
2965	 * @license
2966	 * cardboard-vr-display
2967	 * Copyright (c) 2015-2017 Google
2968	 * Licensed under the Apache License, Version 2.0 (the "License");
2969	 * you may not use this file except in compliance with the License.
2970	 * You may obtain a copy of the License at
2971	 *
2972	 * http://www.apache.org/licenses/LICENSE-2.0
2973	 *
2974	 * Unless required by applicable law or agreed to in writing, software
2975	 * distributed under the License is distributed on an "AS IS" BASIS,
2976	 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2977	 * See the License for the specific language governing permissions and
2978	 * limitations under the License.
2979	 */
2980/**
2981	 * @license
2982	 * webvr-polyfill-dpdb 
2983	 * Copyright (c) 2017 Google
2984	 * Licensed under the Apache License, Version 2.0 (the "License");
2985	 * you may not use this file except in compliance with the License.
2986	 * You may obtain a copy of the License at
2987	 *
2988	 * http://www.apache.org/licenses/LICENSE-2.0
2989	 *
2990	 * Unless required by applicable law or agreed to in writing, software
2991	 * distributed under the License is distributed on an "AS IS" BASIS,
2992	 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2993	 * See the License for the specific language governing permissions and
2994	 * limitations under the License.
2995	 */
2996/**
2997	 * @license
2998	 * wglu-preserve-state
2999	 * Copyright (c) 2016, Brandon Jones.
3000	 *
3001	 * Permission is hereby granted, free of charge, to any person obtaining a copy
3002	 * of this software and associated documentation files (the "Software"), to deal
3003	 * in the Software without restriction, including without limitation the rights
3004	 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
3005	 * copies of the Software, and to permit persons to whom the Software is
3006	 * furnished to do so, subject to the following conditions:
3007	 *
3008	 * The above copyright notice and this permission notice shall be included in
3009	 * all copies or substantial portions of the Software.
3010	 *
3011	 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
3012	 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3013	 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
3014	 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3015	 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
3016	 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
3017	 * THE SOFTWARE.
3018	 */
3019/**
3020	 * @license
3021	 * nosleep.js
3022	 * Copyright (c) 2017, Rich Tibbett
3023	 *
3024	 * Permission is hereby granted, free of charge, to any person obtaining a copy
3025	 * of this software and associated documentation files (the "Software"), to deal
3026	 * in the Software without restriction, including without limitation the rights
3027	 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
3028	 * copies of the Software, and to permit persons to whom the Software is
3029	 * furnished to do so, subject to the following conditions:
3030	 *
3031	 * The above copyright notice and this permission notice shall be included in
3032	 * all copies or substantial portions of the Software.
3033	 *
3034	 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
3035	 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3036	 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
3037	 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3038	 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
3039	 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
3040	 * THE SOFTWARE.
3041	 */
3042(function(global,factory){module.exports=factory()}(commonjsGlobal,(function(){var commonjsGlobal$1=typeof window!=='undefined'?window:typeof commonjsGlobal!=='undefined'?commonjsGlobal:typeof self!=='undefined'?self:{};function unwrapExports(x){return x&&x.__esModule&&Object.prototype.hasOwnProperty.call(x,'default')?x['default']:x}
3043function createCommonjsModule(fn,module){return module={exports:{}},fn(module,module.exports),module.exports}
3044var race=function race(promises){if(Promise.race){return Promise.race(promises)}
3045return new Promise(function(resolve,reject){for(var i=0;i<promises.length;i++){promises[i].then(resolve,reject)}})};var isMobile=function isMobile(){return(/Android/i.test(navigator.userAgent)||/iPhone|iPad|iPod/i.test(navigator.userAgent))};var copyArray=function copyArray(source,dest){for(var i=0,n=source.length;i<n;i++){dest[i]=source[i]}};var extend=function extend(dest,src){for(var key in src){if(src.hasOwnProperty(key)){dest[key]=src[key]}}
3046return dest};var cardboardVrDisplay=createCommonjsModule(function(module,exports){/**
3047	 * @license
3048	 * cardboard-vr-display
3049	 * Copyright (c) 2015-2017 Google
3050	 * Licensed under the Apache License, Version 2.0 (the "License");
3051	 * you may not use this file except in compliance with the License.
3052	 * You may obtain a copy of the License at
3053	 *
3054	 * http://www.apache.org/licenses/LICENSE-2.0
3055	 *
3056	 * Unless required by applicable law or agreed to in writing, software
3057	 * distributed under the License is distributed on an "AS IS" BASIS,
3058	 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3059	 * See the License for the specific language governing permissions and
3060	 * limitations under the License.
3061	 */
3062/**
3063	 * @license
3064	 * gl-preserve-state
3065	 * Copyright (c) 2016, Brandon Jones.
3066	 *
3067	 * Permission is hereby granted, free of charge, to any person obtaining a copy
3068	 * of this software and associated documentation files (the "Software"), to deal
3069	 * in the Software without restriction, including without limitation the rights
3070	 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
3071	 * copies of the Software, and to permit persons to whom the Software is
3072	 * furnished to do so, subject to the following conditions:
3073	 *
3074	 * The above copyright notice and this permission notice shall be included in
3075	 * all copies or substantial portions of the Software.
3076	 *
3077	 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
3078	 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3079	 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
3080	 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3081	 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
3082	 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
3083	 * THE SOFTWARE.
3084	 */
3085/**
3086	 * @license
3087	 * webvr-polyfill-dpdb
3088	 * Copyright (c) 2015-2017 Google
3089	 * Licensed under the Apache License, Version 2.0 (the "License");
3090	 * you may not use this file except in compliance with the License.
3091	 * You may obtain a copy of the License at
3092	 *
3093	 * http://www.apache.org/licenses/LICENSE-2.0
3094	 *
3095	 * Unless required by applicable law or agreed to in writing, software
3096	 * distributed under the License is distributed on an "AS IS" BASIS,
3097	 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3098	 * See the License for the specific language governing permissions and
3099	 * limitations under the License.
3100	 */
3101/**
3102	 * @license
3103	 * nosleep.js
3104	 * Copyright (c) 2017, Rich Tibbett
3105	 *
3106	 * Permission is hereby granted, free of charge, to any person obtaining a copy
3107	 * of this software and associated documentation files (the "Software"), to deal
3108	 * in the Software without restriction, including without limitation the rights
3109	 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
3110	 * copies of the Software, and to permit persons to whom the Software is
3111	 * furnished to do so, subject to the following conditions:
3112	 *
3113	 * The above copyright notice and this permission notice shall be included in
3114	 * all copies or substantial portions of the Software.
3115	 *
3116	 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
3117	 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3118	 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
3119	 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3120	 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
3121	 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
3122	 * THE SOFTWARE.
3123	 */
3124(function(global,factory){module.exports=factory()}(commonjsGlobal$1,(function(){var classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}};var createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1;descriptor.configurable=!0;if("value" in descriptor)descriptor.writable=!0;Object.defineProperty(target,descriptor.key,descriptor)}}
3125return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var slicedToArray=function(){function sliceIterator(arr,i){var _arr=[];var _n=!0;var _d=!1;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=!0){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=!0;_e=err}finally{try{if(!_n&&_i["return"])_i["return"]();}finally{if(_d)throw _e}}
3126return _arr}
3127return function(arr,i){if(Array.isArray(arr)){return arr}else if(Symbol.iterator in Object(arr)){return sliceIterator(arr,i)}
3127else{throw new TypeError("Invalid attempt to destructure non-iterable instance")}}}();var MIN_TIMESTEP=0.001;var MAX_TIMESTEP=1;var base64=function base64(mimeType,_base){return'data:'+mimeType+';base64,'+_base};var lerp=function lerp(a,b,t){return a+(b-a)*t};var isIOS=function(){var isIOS=/iPad|iPhone|iPod/.test(navigator.platform);return function(){return isIOS}}();var isWebViewAndroid=function(){var isWebViewAndroid=navigator.userAgent.indexOf('Version')!==-1&&navigator.userAgent.indexOf('Android')!==-1&&navigator.userAgent.indexOf('Chrome')!==-1;return function(){return isWebViewAndroid}}();var isSafari=function(){var isSafari=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);return function(){return isSafari}}();var isFirefoxAndroid=function(){var isFirefoxAndroid=navigator.userAgent.indexOf('Firefox')!==-1&&navigator.userAgent.indexOf('Android')!==-1;return function(){return isFirefoxAndroid}}();var getChromeVersion=function(){var match=navigator.userAgent.match(/.*Chrome\/([0-9]+)/);var value=match?parseInt(match[1],10):null;return function(){return value}}();var isChromeWithoutDeviceMotion=function(){var value=!1;if(getChromeVersion()===65){var match=navigator.userAgent.match(/.*Chrome\/([0-9\.]*)/);if(match){var _match$1$split=match[1].split('.'),_match$1$split2=slicedToArray(_match$1$split,4),major=_match$1$split2[0],minor=_match$1$split2[1],branch=_match$1$split2[2],build=_match$1$split2[3];value=parseInt(branch,10)===3325&&parseInt(build,10)<148}}
3128return function(){return value}}();var isR7=function(){var isR7=navigator.userAgent.indexOf('R7 Build')!==-1;return function(){return isR7}}();var isLandscapeMode=function isLandscapeMode(){var rtn=window.orientation==90||window.orientation==-90;return isR7()?!rtn:rtn};var isTimestampDeltaValid=function isTimestampDeltaValid(timestampDeltaS){if(isNaN(timestampDeltaS)){return!1}
3129if(timestampDeltaS<=MIN_TIMESTEP){return!1}
3130if(timestampDeltaS>MAX_TIMESTEP){return!1}
3131return!0};var getScreenWidth=function getScreenWidth(){return Math.max(window.screen.width,window.screen.height)*window.devicePixelRatio};var getScreenHeight=function getScreenHeight(){return Math.min(window.screen.width,window.screen.height)*window.devicePixelRatio};var requestFullscreen=function requestFullscreen(element){if(isWebViewAndroid()){return!1}
3132if(element.requestFullscreen){element.requestFullscreen()}else if(element.webkitRequestFullscreen){element.webkitRequestFullscreen()}else if(element.mozRequestFullScreen){element.mozRequestFullScreen()}else if(element.msRequestFullscreen){element.msRequestFullscreen()}else{return!1}
3133return!0};var exitFullscreen=function exitFullscreen(){if(document.exitFullscreen){document.exitFullscreen()}else if(document.webkitExitFullscreen){document.webkitExitFullscreen()}else if(document.mozCancelFullScreen){document.mozCancelFullScreen()}else if(document.msExitFullscreen){document.msExitFullscreen()}else{return!1}
3134return!0};var getFullscreenElement=function getFullscreenElement(){return document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement};var linkProgram=function linkProgram(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)}gl.linkProgram(program);gl.deleteShader(vertexShader);gl.deleteShader(fragmentShader);return program};var getProgramUniforms=function getProgramUniforms(gl,program){var uniforms={};var uniformCount=gl.getProgramParameter(program,gl.ACTIVE_UNIFORMS);var uniformName='';for(var i=0;i<uniformCount;i++){var uniformInfo=gl.getActiveUniform(program,i);uniformName=uniformInfo.name.replace('[0]','');uniforms[uniformName]=gl.getUniformLocation(program,uniformName)}
3135return uniforms};var orthoMatrix=function orthoMatrix(out,left,right,bottom,top,near,far){var lr=1/(left-right),bt=1/(bottom-top),nf=1/(near-far);out[0]=-2*lr;out[1]=0;out[2]=0;out[3]=0;out[4]=0;out[5]=-2*bt;out[6]=0;out[7]=0;out[8]=0;out[9]=0;out[10]=2*nf;out[11]=0;out[12]=(left+right)*lr;out[13]=(top+bottom)*bt;out[14]=(far+near)*nf;out[15]=1;return out};var isMobile=function isMobile(){var check=!1;
vendor: 4,853 bytes, lines 3135-3142
3135(function(a){if(/(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);return check};var extend=function extend(dest,src){for(var key in src){if(src.hasOwnProperty(key)){dest[key]=src[key]}}
3136return dest};var safariCssSizeWorkaround=function safariCssSizeWorkaround(canvas){if(isIOS()){var width=canvas.style.width;var height=canvas.style.height;canvas.style.width=parseInt(width)+1+'px';canvas.style.height=parseInt(height)+'px';setTimeout(function(){canvas.style.width=width;canvas.style.height=height},100)}
3137window.canvas=canvas};var frameDataFromPose=function(){var piOver180=Math.PI/180.0;var rad45=Math.PI*0.25;function mat4_perspectiveFromFieldOfView(out,fov,near,far){var upTan=Math.tan(fov?fov.upDegrees*piOver180:rad45),downTan=Math.tan(fov?fov.downDegrees*piOver180:rad45),leftTan=Math.tan(fov?fov.leftDegrees*piOver180:rad45),rightTan=Math.tan(fov?fov.rightDegrees*piOver180:rad45),xScale=2.0/(leftTan+rightTan),yScale=2.0/(upTan+downTan);out[0]=xScale;out[1]=0.0;out[2]=0.0;out[3]=0.0;out[4]=0.0;out[5]=yScale;out[6]=0.0;out[7]=0.0;out[8]=-((leftTan-rightTan)*xScale*0.5);out[9]=(upTan-downTan)*yScale*0.5;out[10]=far/(near-far);out[11]=-1.0;out[12]=0.0;out[13]=0.0;out[14]=far*near/(near-far);out[15]=0.0;return out}
3138function mat4_fromRotationTranslation(out,q,v){var x=q[0],y=q[1],z=q[2],w=q[3],x2=x+x,y2=y+y,z2=z+z,xx=x*x2,xy=x*y2,xz=x*z2,yy=y*y2,yz=y*z2,zz=z*z2,wx=w*x2,wy=w*y2,wz=w*z2;out[0]=1-(yy+zz);out[1]=xy+wz;out[2]=xz-wy;out[3]=0;out[4]=xy-wz;out[5]=1-(xx+zz);out[6]=yz+wx;out[7]=0;out[8]=xz+wy;out[9]=yz-wx;out[10]=1-(xx+yy);out[11]=0;out[12]=v[0];out[13]=v[1];out[14]=v[2];out[15]=1;return out}
3139function mat4_translate(out,a,v){var x=v[0],y=v[1],z=v[2],a00,a01,a02,a03,a10,a11,a12,a13,a20,a21,a22,a23;if(a===out){out[12]=a[0]*x+a[4]*y+a[8]*z+a[12];out[13]=a[1]*x+a[5]*y+a[9]*z+a[13];out[14]=a[2]*x+a[6]*y+a[10]*z+a[14];out[15]=a[3]*x+a[7]*y+a[11]*z+a[15]}else{a00=a[0];a01=a[1];a02=a[2];a03=a[3];a10=a[4];a11=a[5];a12=a[6];a13=a[7];a20=a[8];a21=a[9];a22=a[10];a23=a[11];out[0]=a00;out[1]=a01;out[2]=a02;out[3]=a03;out[4]=a10;out[5]=a11;out[6]=a12;out[7]=a13;out[8]=a20;out[9]=a21;out[10]=a22;out[11]=a23;out[12]=a00*x+a10*y+a20*z+a[12];out[13]=a01*x+a11*y+a21*z+a[13];out[14]=a02*x+a12*y+a22*z+a[14];out[15]=a03*x+a13*y+a23*z+a[15]}
3140return out}
3141function mat4_invert(out,a){var a00=a[0],a01=a[1],a02=a[2],a03=a[3],a10=a[4],a11=a[5],a12=a[6],a13=a[7],a20=a[8],a21=a[9],a22=a[10],a23=a[11],a30=a[12],a31=a[13],a32=a[14],a33=a[15],b00=a00*a11-a01*a10,b01=a00*a12-a02*a10,b02=a00*a13-a03*a10,b03=a01*a12-a02*a11,b04=a01*a13-a03*a11,b05=a02*a13-a03*a12,b06=a20*a31-a21*a30,b07=a20*a32-a22*a30,b08=a20*a33-a23*a30,b09=a21*a32-a22*a31,b10=a21*a33-a23*a31,b11=a22*a33-a23*a32,det=b00*b11-b01*b10+b02*b09+b03*b08-b04*b07+b05*b06;if(!det){return null}
3142det=1.0/det;out[0]=(a11*b11-a12*b10+a13*b09)*det;out[1]=(a02*b10-a01*b11-a03*b09)*det;out[2]=(a31*b05-a32*b04+a33*b03)*det;
3142out[3]=(a22*b04-a21*b05-a23*b03)*det;out[4]=(a12*b08-a10*b11-a13*b07)*det;out[5]=(a00*b11-a02*b08+a03*b07)*det;out[6]=(a32*b02-a30*b05-a33*b01)*det;out[7]=(a20*b05-a22*b02+a23*b01)*det;out[8]=(a10*b10-a11*b08+a13*b06)*det;out[9]=(a01*b08-a00*b10-a03*b06)*det;out[10]=(a30*b04-a31*b02+a33*b00)*det;out[11]=(a21*b02-a20*b04-a23*b00)*det;out[12]=(a11*b07-a10*b09-a12*b06)*det;out[13]=(a00*b09-a01*b07+a02*b06)*det;out[14]=(a31*b01-a30*b03-a32*b00)*det;out[15]=(a20*b03-a21*b01+a22*b00)*det;return out}
3143var defaultOrientation=new Float32Array([0,0,0,1]);var defaultPosition=new Float32Array([0,0,0]);function updateEyeMatrices(projection,view,pose,fov,offset,vrDisplay){mat4_perspectiveFromFieldOfView(projection,fov||null,vrDisplay.depthNear,vrDisplay.depthFar);var orientation=pose.orientation||defaultOrientation;var position=pose.position||defaultPosition;mat4_fromRotationTranslation(view,orientation,position);if(offset)mat4_translate(view,view,offset);mat4_invert(view,view)}
3144return function(frameData,pose,vrDisplay){if(!frameData||!pose)return!1;frameData.pose=pose;frameData.timestamp=pose.timestamp;updateEyeMatrices(frameData.leftProjectionMatrix,frameData.leftViewMatrix,pose,vrDisplay._getFieldOfView("left"),vrDisplay._getEyeOffset("left"),vrDisplay);updateEyeMatrices(frameData.rightProjectionMatrix,frameData.rightViewMatrix,pose,vrDisplay._getFieldOfView("right"),vrDisplay._getEyeOffset("right"),vrDisplay);return!0}}();var isInsideCrossOriginIFrame=function isInsideCrossOriginIFrame(){var isFramed=window.self!==window.top;var refOrigin=getOriginFromUrl(document.referrer);var thisOrigin=getOriginFromUrl(window.location.href);return isFramed&&refOrigin!==thisOrigin};var getOriginFromUrl=function getOriginFromUrl(url){var domainIdx;var protoSepIdx=url.indexOf("://");if(protoSepIdx!==-1){domainIdx=protoSepIdx+3}else{domainIdx=0}
3145var domainEndIdx=url.indexOf('/',domainIdx);if(domainEndIdx===-1){domainEndIdx=url.length}
3146return url.substring(0,domainEndIdx)};var getQuaternionAngle=function getQuaternionAngle(quat){if(quat.w>1){console.warn('getQuaternionAngle: w > 1');return 0}
3147var angle=2*Math.acos(quat.w);return angle};var warnOnce=function(){var observedWarnings={};return function(key,message){if(observedWarnings[key]===undefined){console.warn('webvr-polyfill: '+message);observedWarnings[key]=!0}}}();var deprecateWarning=function deprecateWarning(deprecated,suggested){var alternative=suggested?'Please use '+suggested+' instead.':'';warnOnce(deprecated,deprecated+' has been deprecated. '+'This may not work on native WebVR displays. '+alternative)};function WGLUPreserveGLState(gl,bindings,callback){if(!bindings){callback(gl);return}
3148var boundValues=[];var activeTexture=null;for(var i=0;i<bindings.length;++i){var binding=bindings[i];switch(binding){case gl.TEXTURE_BINDING_2D:case gl.TEXTURE_BINDING_CUBE_MAP:var textureUnit=bindings[++i];if(textureUnit<gl.TEXTURE0||textureUnit>gl.TEXTURE31){console.error("TEXTURE_BINDING_2D or TEXTURE_BINDING_CUBE_MAP must be followed by a valid texture unit");boundValues.push(null,null);break}
3149if(!activeTexture){activeTexture=gl.getParameter(gl.ACTIVE_TEXTURE)}
3150gl.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));break}}
3151callback(gl);for(var i=0;i<bindings.length;++i){var binding=bindings[i];var boundValue=boundValues[i];switch(binding){case gl.ACTIVE_TEXTURE:break;case gl.ARRAY_BUFFER_BINDING:gl.bindBuffer(gl.ARRAY_BUFFER,boundValue);break;case gl.COLOR_CLEAR_VALUE:gl.clearColor(boundValue[0],boundValue[1],boundValue[2],boundValue[3]);break;case gl.COLOR_WRITEMASK:gl.colorMask(boundValue[0],boundValue[1],boundValue[2],boundValue[3]);break;case gl.CURRENT_PROGRAM:gl.useProgram(boundValue);break;case gl.ELEMENT_ARRAY_BUFFER_BINDING:gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,boundValue);break;case gl.FRAMEBUFFER_BINDING:gl.bindFramebuffer(gl.FRAMEBUFFER,boundValue);break;case gl.RENDERBUFFER_BINDING:gl.bindRenderbuffer(gl.RENDERBUFFER,boundValue);break;case gl.TEXTURE_BINDING_2D:var textureUnit=bindings[++i];if(textureUnit<gl.TEXTURE0||textureUnit>gl.TEXTURE31)
3152break;gl.activeTexture(textureUnit);gl.bindTexture(gl.TEXTURE_2D,boundValue);break;case gl.TEXTURE_BINDING_CUBE_MAP:var textureUnit=bindings[++i];if(textureUnit<gl.TEXTURE0||textureUnit>gl.TEXTURE31)
3153break;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:if(boundValue){gl.enable(binding)}else{gl.disable(binding)}
3154break;default:console.log("No GL restore behavior for 0x"+binding.toString(16));break}
3155if(activeTexture){gl.activeTexture(activeTexture)}}}
3156var glPreserveState=WGLUPreserveGLState;var distortionVS=['attribute vec2 position;','attribute vec3 texCoord;','varying vec2 vTexCoord;','uniform vec4 viewportOffsetScale[2];','void main() {','  vec4 viewport = viewportOffsetScale[int(texCoord.z)
3156];','  vTexCoord = (texCoord.xy * viewport.zw) + viewport.xy;','  gl_Position = vec4( position, 1.0, 1.0 );','}'].join('\n');var distortionFS=['precision mediump float;','uniform sampler2D diffuse;','varying vec2 vTexCoord;','void main() {','  gl_FragColor = texture2D(diffuse, vTexCoord);','}'].join('\n');function CardboardDistorter(gl,cardboardUI,bufferScale,dirtySubmitFrameBindings){this.gl=gl;this.cardboardUI=cardboardUI;this.bufferScale=bufferScale;this.dirtySubmitFrameBindings=dirtySubmitFrameBindings;this.ctxAttribs=gl.getContextAttributes();this.meshWidth=20;this.meshHeight=20;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;if(!isIOS()){this.realCanvasWidth=Object.getOwnPropertyDescriptor(gl.canvas.__proto__,'width');this.realCanvasHeight=Object.getOwnPropertyDescriptor(gl.canvas.__proto__,'height')}
3157this.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=linkProgram(gl,distortionVS,distortionFS,this.attribs);this.uniforms=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;if(this.ctxAttribs.depth&&this.ctxAttribs.stencil){this.depthStencilBuffer=gl.createRenderbuffer()}else if(this.ctxAttribs.depth){this.depthBuffer=gl.createRenderbuffer()}else if(this.ctxAttribs.stencil){this.stencilBuffer=gl.createRenderbuffer()}
3158this.patch();this.onResize()}
3159CardboardDistorter.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);if(this.depthStencilBuffer){gl.deleteRenderbuffer(this.depthStencilBuffer)}
3160if(this.depthBuffer){gl.deleteRenderbuffer(this.depthBuffer)}
3161if(this.stencilBuffer){gl.deleteRenderbuffer(this.stencilBuffer)}
3162if(this.cardboardUI){this.cardboardUI.destroy()}};CardboardDistorter.prototype.onResize=function(){var gl=this.gl;var self=this;var glState=[gl.RENDERBUFFER_BINDING,gl.TEXTURE_BINDING_2D,gl.TEXTURE0];glPreserveState(gl,glState,function(gl){self.realBindFramebuffer.call(gl,gl.FRAMEBUFFER,null);if(self.scissorTest){self.realDisable.call(gl,gl.SCISSOR_TEST)}
3163self.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);if(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)}else if(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)}else if(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)}
3164if(!gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE){console.error('Framebuffer incomplete!')}
3165self.realBindFramebuffer.call(gl,gl.FRAMEBUFFER,self.lastBoundFramebuffer);if(self.scissorTest){self.realEnable.call(gl,gl.SCISSOR_TEST)}
3166self.realColorMask.apply(gl,self.colorMask);self.realViewport.apply(gl,self.viewport);self.realClearColor.apply(gl,self.clearColor)});if(this.cardboardUI){this.cardboardUI.onResize()}};CardboardDistorter.prototype.patch=function(){if(this.isPatched){return}
3167var self=this;var canvas=this.gl.canvas;var gl=this.gl;if(!isIOS()){canvas.width=getScreenWidth()*this.bufferScale;canvas.height=getScreenHeight()*this.bufferScale;Object.defineProperty(canvas,'width',{configurable:!0,enumerable:!0,get:function get(){return self.bufferWidth}
3167,set:function set(value){self.bufferWidth=value;self.realCanvasWidth.set.call(canvas,value);self.onResize()}});Object.defineProperty(canvas,'height',{configurable:!0,enumerable:!0,get:function get(){return self.bufferHeight},set:function set(value){self.bufferHeight=value;self.realCanvasHeight.set.call(canvas,value);self.onResize()}})}
3168this.lastBoundFramebuffer=gl.getParameter(gl.FRAMEBUFFER_BINDING);if(this.lastBoundFramebuffer==null){this.lastBoundFramebuffer=this.framebuffer;this.gl.bindFramebuffer(gl.FRAMEBUFFER,this.framebuffer)}
3169this.gl.bindFramebuffer=function(target,framebuffer){self.lastBoundFramebuffer=framebuffer?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;break}
3170self.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;break}
3171self.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;safariCssSizeWorkaround(canvas)};CardboardDistorter.prototype.unpatch=function(){if(!this.isPatched){return}
3172var gl=this.gl;var canvas=this.gl.canvas;if(!isIOS()){Object.defineProperty(canvas,'width',this.realCanvasWidth);Object.defineProperty(canvas,'height',this.realCanvasHeight)}
3173canvas.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;if(this.lastBoundFramebuffer==this.framebuffer){gl.bindFramebuffer(gl.FRAMEBUFFER,null)}
3174this.isPatched=!1;setTimeout(function(){safariCssSizeWorkaround(canvas)},1)};CardboardDistorter.prototype.setTextureBounds=function(leftBounds,rightBounds){if(!leftBounds){leftBounds=[0,0,0.5,1]}
3175if(!rightBounds){rightBounds=[0.5,0,0.5,1]}
3176this.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;var self=this;var glState=[];if(!this.dirtySubmitFrameBindings){glState.push(gl.CURRENT_PROGRAM,gl.ARRAY_BUFFER_BINDING,gl.ELEMENT_ARRAY_BUFFER_BINDING,gl.TEXTURE_BINDING_2D,gl.TEXTURE0)}
3177glPreserveState(gl,glState,function(gl){self.realBindFramebuffer.call(gl,gl.FRAMEBUFFER,null);if(self.cullFace){self.realDisable.call(gl,gl.CULL_FACE)}
3178if(self.depthTest){self.realDisable.call(gl,gl.DEPTH_TEST)}
3179if(self.blend){self.realDisable.call(gl,gl.BLEND)}
3180if(self.scissorTest){self.realDisable.call(gl,gl.SCISSOR_TEST)}
3181if(self.stencilTest){self.realDisable.call(gl,gl.STENCIL_TEST)}
3182self.realColorMask.call(gl,!0,!0,!0,!0);self.realViewport.call(gl,0,0,gl.drawingBufferWidth,gl.drawingBufferHeight);if(self.ctxAttribs.alpha||isIOS()){self.realClearColor.call(gl,0,0,0,1);gl.clear(gl.COLOR_BUFFER_BIT)}
3183gl.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);if(self.cardboardUI){self.cardboardUI.renderNoState()}
3184self.realBindFramebuffer.call(self.gl,gl.FRAMEBUFFER,self.framebuffer);if(!self.ctxAttribs.preserveDrawingBuffer){self.realClearColor.call(gl,0,0,0,0);gl.clear(gl.COLOR_BUFFER_BIT)}
3185if(!self.dirtySubmitFrameBindings){self.realBindFramebuffer.call(gl,gl.FRAMEBUFFER,self.lastBoundFramebuffer)}
3186if(self.cullFace){self.realEnable.call(gl,gl.CULL_FACE)}
3187if(self.depthTest){self.realEnable.call(gl,gl.DEPTH_TEST)}
3188if(self.blend){self.realEnable.call(gl,gl.BLEND)}
3189if(self.scissorTest){self.realEnable.call(gl,gl.SCISSOR_TEST)}
3190if(self.stencilTest){self.realEnable.call(gl,gl.STENCIL_TEST)}
3191self.realColorMask.apply(gl,self.colorMask);self.realViewport.apply(gl,self.viewport);if(self.ctxAttribs.alpha||!self.ctxAttribs.preserveDrawingBuffer){self.realClearColor.apply(gl,self.clearColor)}});if(isIOS()){var canvas=gl.canvas;if(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;var self=this;var glState=[gl.ARRAY_BUFFER_BINDING,gl.ELEMENT_ARRAY_BUFFER_BINDING];glPreserveState(gl,glState,function(gl){var vertices=self.computeMeshVertices_(self.meshWidth,self.meshHeight,deviceInfo);gl.bindBuffer(gl.ARRAY_BUFFER,self.vertexBuffer);gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW);if(!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){var vertices=new Float32Array(2*width*height*5);var lensFrustum=deviceInfo.getLeftEyeVisibleTanAngles();var noLensFrustum=deviceInfo.getLeftEyeNoLensTanAngles();var viewport=deviceInfo.getLeftEyeVisibleScreenRect(noLensFrustum);var vidx=0;for(var e=0;e<2;e++){for(var j=0;j<height;j++){for(var i=0;i<width;i++,vidx++){var u=i/(width-1);var v=j/(height-1);var s=u;var t=v;var x=lerp(lensFrustum[0],lensFrustum[2],u);var y=lerp(lensFrustum[3],lensFrustum[1],v);var d=Math.sqrt(x*x+y*y);var r=deviceInfo.distortion.distortInverse(d);var p=x*r/d;var q=y*r/d;u=(p-noLensFrustum[0])/(noLensFrustum[2]-noLensFrustum[0]);v=(q-noLensFrustum[3])/(noLensFrustum[1]-noLensFrustum[3]);u=(viewport.x+u*viewport.width-0.5)*2.0;v=(viewport.y+v*viewport.height-0.5)*2.0;vertices[vidx*5+0]=u;vertices[vidx*5+1]=v;vertices[vidx*5+2]=s;vertices[vidx*5+3]=t;vertices[vidx*5+4]=e}}
3192var w=lensFrustum[2]-lensFrustum[0];lensFrustum[0]=-(w+lensFrustum[0]);lensFrustum[2]=w-lensFrustum[2];w=noLensFrustum[2]-noLensFrustum[0];noLensFrustum[0]=-(w+noLensFrustum[0]);noLensFrustum[2]=w-noLensFrustum[2];viewport.x=1-(viewport.x+viewport.width)}
3193return vertices};CardboardDistorter.prototype.computeMeshIndices_=function(width,height){var indices=new Uint16Array(2*(width-1)*(height-1)*6);var halfwidth=width/2;var halfheight=height/2;var vidx=0;var iidx=0;for(var e=0;e<2;e++){for(var j=0;j<height;j++){for(var i=0;i<width;i++,vidx++){if(i==0||j==0)continue;if(i<=halfwidth==j<=halfheight){indices[iidx++]=vidx;indices[iidx++]=vidx-width-1;indices[iidx++]=vidx-width;indices[iidx++]=vidx-width-1;indices[iidx++]=vidx;indices[iidx++]=vidx-1}else{indices[iidx++]=vidx-1;indices[iidx++]=vidx-width;indices[iidx++]=vidx;indices[iidx++]=vidx-width;indices[iidx++]=vidx-1;indices[iidx++]=vidx-width-1}}}}
3194return indices};CardboardDistorter.prototype.getOwnPropertyDescriptor_=function(proto,attrName){var descriptor=Object.getOwnPropertyDescriptor(proto,attrName);if(descriptor.get===undefined||descriptor.set===undefined){descriptor.configurable=!0;descriptor.enumerable=!0;descriptor.get=function(){return this.getAttribute(attrName)};descriptor.set=function(val){this.setAttribute(attrName,val)}}
3195return descriptor};var uiVS=['attribute vec2 position;','uniform mat4 projectionMat;','void main() {','  gl_Position = projectionMat * vec4( position, -1.0, 1.0 );','}'].join('\n');var uiFS=['precision mediump float;','uniform vec4 color;','void main() {','  gl_FragColor = color;','}'].join('\n');var DEG2RAD=Math.PI/180.0;var kAnglePerGearSection=60;var kOuterRimEndAngle=12;var kInnerRimBeginAngle=20;var kOuterRadius=1;var kMiddleRadius=0.75;var kInnerRadius=0.3125;var kCenterLineThicknessDp=4;var kButtonWidthDp=28;var kTouchSlopFactor=1.5;function CardboardUI(gl){this.gl=gl;this.attribs={position:0};this.program=linkProgram(gl,uiVS,uiFS,this.attribs);this.uniforms=getProgramUniforms(gl,this.program);this.vertexBuffer=gl.createBuffer();this.gearOffset=0;this.gearVertexCount=0;this.arrowOffset=0;this.arrowVertexCount=0;this.projMat=new Float32Array(16);this.listener=null;this.onResize()}
3196CardboardUI.prototype.destroy=function(){var gl=this.gl;if(this.listener){gl.canvas.removeEventListener('click',this.listener,!1)}
3197gl.deleteProgram(this.program);gl.deleteBuffer(this.vertexBuffer)};CardboardUI.prototype.listen=function(optionsCallback,backCallback){var canvas=this.gl.canvas;this.listener=function(event){var midline=canvas.clientWidth/2;var buttonSize=kButtonWidthDp*kTouchSlopFactor;if(event.clientX>midline-buttonSize&&event.clientX<midline+buttonSize&&event.clientY>canvas.clientHeight-buttonSize){optionsCallback(event)}
3197else if(event.clientX<buttonSize&&event.clientY<buttonSize){backCallback(event)}};canvas.addEventListener('click',this.listener,!1)};CardboardUI.prototype.onResize=function(){var gl=this.gl;var self=this;var glState=[gl.ARRAY_BUFFER_BINDING];glPreserveState(gl,glState,function(gl){var vertices=[];var midline=gl.drawingBufferWidth/2;var physicalPixels=Math.max(screen.width,screen.height)*window.devicePixelRatio;var scalingRatio=gl.drawingBufferWidth/physicalPixels;var dps=scalingRatio*window.devicePixelRatio;var lineWidth=kCenterLineThicknessDp*dps/2;var buttonSize=kButtonWidthDp*kTouchSlopFactor*dps;var buttonScale=kButtonWidthDp*dps/2;var buttonBorder=(kButtonWidthDp*kTouchSlopFactor-kButtonWidthDp)*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;function addGearSegment(theta,r){var angle=(90-theta)*DEG2RAD;var x=Math.cos(angle);var y=Math.sin(angle);vertices.push(kInnerRadius*x*buttonScale+midline,kInnerRadius*y*buttonScale+buttonScale);vertices.push(r*x*buttonScale+midline,r*y*buttonScale+buttonScale)}
3198for(var i=0;i<=6;i++){var segmentTheta=i*kAnglePerGearSection;addGearSegment(segmentTheta,kOuterRadius);addGearSegment(segmentTheta+kOuterRimEndAngle,kOuterRadius);addGearSegment(segmentTheta+kInnerRimBeginAngle,kMiddleRadius);addGearSegment(segmentTheta+(kAnglePerGearSection-kInnerRimBeginAngle),kMiddleRadius);addGearSegment(segmentTheta+(kAnglePerGearSection-kOuterRimEndAngle),kOuterRadius)}
3199self.gearVertexCount=vertices.length/2-self.gearOffset;self.arrowOffset=vertices.length/2;function addArrowVertex(x,y){vertices.push(buttonBorder+x,gl.drawingBufferHeight-buttonBorder-y)}
3200var 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,buttonScale*2);addArrowVertex(buttonScale+angledLineWidth,buttonScale*2-angledLineWidth);addArrowVertex(angledLineWidth,buttonScale-angledLineWidth);addArrowVertex(0,buttonScale);addArrowVertex(angledLineWidth,buttonScale-lineWidth);addArrowVertex(kButtonWidthDp*dps,buttonScale-lineWidth);addArrowVertex(angledLineWidth,buttonScale+lineWidth);addArrowVertex(kButtonWidthDp*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;var self=this;var 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];glPreserveState(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.0,1.0,1.0,1.0);orthoMatrix(this.projMat,0,gl.drawingBufferWidth,0,gl.drawingBufferHeight,0.1,1024.0);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)};function Distortion(coefficients){this.coefficients=coefficients}
3201Distortion.prototype.distortInverse=function(radius){var r0=0;var r1=1;var dr0=radius-this.distort(r0);while(Math.abs(r1-r0)>0.0001){var dr1=radius-this.distort(r1);var r2=r1-dr1*((r1-r0)/(dr1-dr0));r0=r1;r1=r2;dr0=dr1}
3202return r1};Distortion.prototype.distort=function(radius){var r2=radius*radius;var ret=0;for(var i=0;i<this.coefficients.length;i++){ret=r2*(ret+this.coefficients[i])}
3203return(ret+1)*radius};var degToRad=Math.PI/180;var radToDeg=180/Math.PI;var Vector3=function Vector3(x,y,z){this.x=x||0;
3203this.y=y||0;this.z=z||0};Vector3.prototype={constructor:Vector3,set:function set(x,y,z){this.x=x;this.y=y;this.z=z;return this},copy:function copy(v){this.x=v.x;this.y=v.y;this.z=v.z;return this},length:function length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},normalize:function normalize(){var scalar=this.length();if(scalar!==0){var invScalar=1/scalar;this.multiplyScalar(invScalar)}else{this.x=0;this.y=0;this.z=0}
3204return this},multiplyScalar:function multiplyScalar(scalar){this.x*=scalar;this.y*=scalar;this.z*=scalar},applyQuaternion:function applyQuaternion(q){var x=this.x;var y=this.y;var z=this.z;var qx=q.x;var qy=q.y;var qz=q.z;var qw=q.w;var ix=qw*x+qy*z-qz*y;var iy=qw*y+qz*x-qx*z;var iz=qw*z+qx*y-qy*x;var iw=-qx*x-qy*y-qz*z;this.x=ix*qw+iw*-qx+iy*-qz-iz*-qy;this.y=iy*qw+iw*-qy+iz*-qx-ix*-qz;this.z=iz*qw+iw*-qz+ix*-qy-iy*-qx;return this},dot:function dot(v){return this.x*v.x+this.y*v.y+this.z*v.z},crossVectors:function crossVectors(a,b){var ax=a.x,ay=a.y,az=a.z;var bx=b.x,by=b.y,bz=b.z;this.x=ay*bz-az*by;this.y=az*bx-ax*bz;this.z=ax*by-ay*bx;return this}};var Quaternion=function Quaternion(x,y,z,w){this.x=x||0;this.y=y||0;this.z=z||0;this.w=w!==undefined?w:1};Quaternion.prototype={constructor:Quaternion,set:function set(x,y,z,w){this.x=x;this.y=y;this.z=z;this.w=w;return this},copy:function copy(quaternion){this.x=quaternion.x;this.y=quaternion.y;this.z=quaternion.z;this.w=quaternion.w;return this},setFromEulerXYZ:function setFromEulerXYZ(x,y,z){var c1=Math.cos(x/2);var c2=Math.cos(y/2);var c3=Math.cos(z/2);var s1=Math.sin(x/2);var s2=Math.sin(y/2);var s3=Math.sin(z/2);this.x=s1*c2*c3+c1*s2*s3;this.y=c1*s2*c3-s1*c2*s3;this.z=c1*c2*s3+s1*s2*c3;this.w=c1*c2*c3-s1*s2*s3;return this},setFromEulerYXZ:function setFromEulerYXZ(x,y,z){var c1=Math.cos(x/2);var c2=Math.cos(y/2);var c3=Math.cos(z/2);var s1=Math.sin(x/2);var s2=Math.sin(y/2);var s3=Math.sin(z/2);this.x=s1*c2*c3+c1*s2*s3;this.y=c1*s2*c3-s1*c2*s3;this.z=c1*c2*s3-s1*s2*c3;this.w=c1*c2*c3+s1*s2*s3;return this},setFromAxisAngle:function setFromAxisAngle(axis,angle){var halfAngle=angle/2,s=Math.sin(halfAngle);this.x=axis.x*s;this.y=axis.y*s;this.z=axis.z*s;this.w=Math.cos(halfAngle);return this},multiply:function multiply(q){return this.multiplyQuaternions(this,q)},multiplyQuaternions:function multiplyQuaternions(a,b){var qax=a.x,qay=a.y,qaz=a.z,qaw=a.w;var qbx=b.x,qby=b.y,qbz=b.z,qbw=b.w;this.x=qax*qbw+qaw*qbx+qay*qbz-qaz*qby;this.y=qay*qbw+qaw*qby+qaz*qbx-qax*qbz;this.z=qaz*qbw+qaw*qbz+qax*qby-qay*qbx;this.w=qaw*qbw-qax*qbx-qay*qby-qaz*qbz;return this},inverse:function inverse(){this.x*=-1;this.y*=-1;this.z*=-1;this.normalize();return this},normalize:function normalize(){var l=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);if(l===0){this.x=0;this.y=0;this.z=0;this.w=1}else{l=1/l;this.x=this.x*l;this.y=this.y*l;this.z=this.z*l;this.w=this.w*l}
3205return this},slerp:function slerp(qb,t){if(t===0)return this;if(t===1)return this.copy(qb);var x=this.x,y=this.y,z=this.z,w=this.w;var cosHalfTheta=w*qb.w+x*qb.x+y*qb.y+z*qb.z;if(cosHalfTheta<0){this.w=-qb.w;this.x=-qb.x;this.y=-qb.y;this.z=-qb.z;cosHalfTheta=-cosHalfTheta}else{this.copy(qb)}
3206if(cosHalfTheta>=1.0){this.w=w;this.x=x;this.y=y;this.z=z;return this}
3207var halfTheta=Math.acos(cosHalfTheta);var sinHalfTheta=Math.sqrt(1.0-cosHalfTheta*cosHalfTheta);if(Math.abs(sinHalfTheta)<0.001){this.w=0.5*(w+this.w);this.x=0.5*(x+this.x);this.y=0.5*(y+this.y);this.z=0.5*(z+this.z);return this}
3208var ratioA=Math.sin((1-t)*halfTheta)/sinHalfTheta,ratioB=Math.sin(t*halfTheta)/sinHalfTheta;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;return this},setFromUnitVectors:function(){var v1,r;var EPS=0.000001;return function(vFrom,vTo){if(v1===undefined)v1=new Vector3();r=vFrom.dot(vTo)+1;if(r<EPS){r=0;if(Math.abs(vFrom.x)>Math.abs(vFrom.z)){v1.set(-vFrom.y,vFrom.x,0)}else{v1.set(0,-vFrom.z,vFrom.y)}}else{v1.crossVectors(vFrom,vTo)}
3209this.x=v1.x;this.y=v1.y;this.z=v1.z;this.w=r;this.normalize();return this}}()};
3209function Device(params){this.width=params.width||getScreenWidth();this.height=params.height||getScreenHeight();this.widthMeters=params.widthMeters;this.heightMeters=params.heightMeters;this.bevelMeters=params.bevelMeters}
3210var DEFAULT_ANDROID=new Device({widthMeters:0.110,heightMeters:0.062,bevelMeters:0.004});var DEFAULT_IOS=new Device({widthMeters:0.1038,heightMeters:0.0584,bevelMeters:0.004});var Viewers={CardboardV1:new CardboardViewer({id:'CardboardV1',label:'Cardboard I/O 2014',fov:40,interLensDistance:0.060,baselineLensDistance:0.035,screenLensDistance:0.042,distortionCoefficients:[0.441,0.156],inverseCoefficients:[-0.4410035,0.42756155,-0.4804439,0.5460139,-0.58821183,0.5733938,-0.48303202,0.33299083,-0.17573841,0.0651772,-0.01488963,0.001559834]}),CardboardV2:new CardboardViewer({id:'CardboardV2',label:'Cardboard I/O 2015',fov:60,interLensDistance:0.064,baselineLensDistance:0.035,screenLensDistance:0.039,distortionCoefficients:[0.34,0.55],inverseCoefficients:[-0.33836704,-0.18162185,0.862655,-1.2462051,1.0560602,-0.58208317,0.21609078,-0.05444823,0.009177956,-9.904169E-4,6.183535E-5,-1.6981803E-6]})};function DeviceInfo(deviceParams,additionalViewers){this.viewer=Viewers.CardboardV2;this.updateDeviceParams(deviceParams);this.distortion=new Distortion(this.viewer.distortionCoefficients);for(var i=0;i<additionalViewers.length;i++){var viewer=additionalViewers[i];Viewers[viewer.id]=new CardboardViewer(viewer)}}
3211DeviceInfo.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){if(isIOS()){console.warn('Using fallback iOS device measurements.');return DEFAULT_IOS}else{console.warn('Using fallback Android device measurements.');return DEFAULT_ANDROID}}
3212var METERS_PER_INCH=0.0254;var metersPerPixelX=METERS_PER_INCH/deviceParams.xdpi;var metersPerPixelY=METERS_PER_INCH/deviceParams.ydpi;var width=getScreenWidth();var height=getScreenHeight();return new Device({widthMeters:metersPerPixelX*width,heightMeters:metersPerPixelY*height,bevelMeters:deviceParams.bevelMm*0.001})};DeviceInfo.prototype.getDistortedFieldOfViewLeftEye=function(){var viewer=this.viewer;var device=this.device;var distortion=this.distortion;var eyeToScreenDistance=viewer.screenLensDistance;var outerDist=(device.widthMeters-viewer.interLensDistance)/2;var innerDist=viewer.interLensDistance/2;var bottomDist=viewer.baselineLensDistance-device.bevelMeters;var topDist=device.heightMeters-bottomDist;var outerAngle=radToDeg*Math.atan(distortion.distort(outerDist/eyeToScreenDistance));var innerAngle=radToDeg*Math.atan(distortion.distort(innerDist/eyeToScreenDistance));var bottomAngle=radToDeg*Math.atan(distortion.distort(bottomDist/eyeToScreenDistance));var topAngle=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;var device=this.device;var distortion=this.distortion;var fovLeft=Math.tan(-degToRad*viewer.fov);var fovTop=Math.tan(degToRad*viewer.fov);var fovRight=Math.tan(degToRad*viewer.fov);var fovBottom=Math.tan(-degToRad*viewer.fov);var halfWidth=device.widthMeters/4;var halfHeight=device.heightMeters/2;var verticalLensOffset=viewer.baselineLensDistance-device.bevelMeters-halfHeight;var centerX=viewer.interLensDistance/2-halfWidth;var centerY=-verticalLensOffset;var centerZ=viewer.screenLensDistance;var screenLeft=distortion.distort((centerX-halfWidth)/centerZ);var screenTop=distortion.distort((centerY+halfHeight)/centerZ);var screenRight=distortion.distort((centerX+halfWidth)/centerZ);var screenBottom=distortion.distort((centerY-halfHeight)/centerZ);var result=new Float32Array(4);result[0]=Math.max(fovLeft,screenLeft);result[1]=Math.min(fovTop,screenTop);result[2]=Math.min(fovRight,screenRight);result[3]=Math.max(fovBottom,screenBottom);return result};DeviceInfo.prototype.getLeftEyeNoLensTanAngles=function(){var viewer=this.viewer;var device=this.device;var distortion=this.distortion;var result=new Float32Array(4);var fovLeft=distortion.distortInverse(Math.tan(-degToRad*viewer.fov));var fovTop=distortion.distortInverse(Math.tan(degToRad*viewer.fov));var fovRight=distortion.distortInverse(Math.tan(degToRad*viewer.fov));var fovBottom=distortion.distortInverse(Math.tan(-degToRad*viewer.fov));var halfWidth=device.widthMeters/4;var halfHeight=device.heightMeters/2;var verticalLensOffset=viewer.baselineLensDistance-device.bevelMeters-halfHeight;var centerX=viewer.interLensDistance/2-halfWidth;
vendor: 4,090 bytes, lines 3212-3213
3212var centerY=-verticalLensOffset;var centerZ=viewer.screenLensDistance;var screenLeft=(centerX-halfWidth)/centerZ;var screenTop=(centerY+halfHeight)/centerZ;var screenRight=(centerX+halfWidth)/centerZ;var screenBottom=(centerY-halfHeight)/centerZ;result[0]=Math.max(fovLeft,screenLeft);result[1]=Math.min(fovTop,screenTop);result[2]=Math.min(fovRight,screenRight);result[3]=Math.max(fovBottom,screenBottom);return result};DeviceInfo.prototype.getLeftEyeVisibleScreenRect=function(undistortedFrustum){var viewer=this.viewer;var device=this.device;var dist=viewer.screenLensDistance;var eyeX=(device.widthMeters-viewer.interLensDistance)/2;var eyeY=viewer.baselineLensDistance-device.bevelMeters;var left=(undistortedFrustum[0]*dist+eyeX)/device.widthMeters;var top=(undistortedFrustum[1]*dist+eyeY)/device.heightMeters;var right=(undistortedFrustum[2]*dist+eyeX)/device.widthMeters;var 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:radToDeg*Math.atan(p.outerDist),rightDegrees:radToDeg*Math.atan(p.innerDist),downDegrees:radToDeg*Math.atan(p.bottomDist),upDegrees:radToDeg*Math.atan(p.topDist)}};DeviceInfo.prototype.getUndistortedViewportLeftEye=function(){var p=this.getUndistortedParams_();var viewer=this.viewer;var device=this.device;var eyeToScreenDistance=viewer.screenLensDistance;var screenWidth=device.widthMeters/eyeToScreenDistance;var screenHeight=device.heightMeters/eyeToScreenDistance;var xPxPerTanAngle=device.width/screenWidth;var yPxPerTanAngle=device.height/screenHeight;var x=Math.round((p.eyePosX-p.outerDist)*xPxPerTanAngle);var 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;var device=this.device;var distortion=this.distortion;var eyeToScreenDistance=viewer.screenLensDistance;var halfLensDistance=viewer.interLensDistance/2/eyeToScreenDistance;var screenWidth=device.widthMeters/eyeToScreenDistance;var screenHeight=device.heightMeters/eyeToScreenDistance;var eyePosX=screenWidth/2-halfLensDistance;var eyePosY=(viewer.baselineLensDistance-device.bevelMeters)/eyeToScreenDistance;var maxFov=viewer.fov;var viewerMax=distortion.distortInverse(Math.tan(degToRad*maxFov));var outerDist=Math.min(eyePosX,viewerMax);var innerDist=Math.min(halfLensDistance,viewerMax);var bottomDist=Math.min(eyePosY,viewerMax);var topDist=Math.min(screenHeight-eyePosY,viewerMax);return{outerDist:outerDist,innerDist:innerDist,topDist:topDist,bottomDist:bottomDist,eyePosX:eyePosX,eyePosY:eyePosY}};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}
3213DeviceInfo.Viewers=Viewers;var format=1;var last_updated="2018-02-20T22:55:10Z";var devices=[{"type":"android","rules":[{"mdmh":"asus/*/Nexus 7/*"},{"ua":"Nexus 7"}],"dpi":[320.8,323],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"asus/*/ASUS_Z00AD/*"},{"ua":"ASUS_Z00AD"}],"dpi":[403,404.6],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"Google/*/Pixel XL/*"},{"ua":"Pixel XL"}],"dpi":[537.9,533],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"Google/*/Pixel/*"},{"ua":"Pixel"}
3213],"dpi":[432.6,436.7],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"HTC/*/HTC6435LVW/*"},{"ua":"HTC6435LVW"}],"dpi":[449.7,443.3],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"HTC/*/HTC One XL/*"},{"ua":"HTC One XL"}],"dpi":[315.3,314.6],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"htc/*/Nexus 9/*"},{"ua":"Nexus 9"}],"dpi":289,"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"HTC/*/HTC One M9/*"},{"ua":"HTC One M9"}],"dpi":[442.5,443.3],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"HTC/*/HTC One_M8/*"},{"ua":"HTC One_M8"}],"dpi":[449.7,447.4],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"HTC/*/HTC One/*"},{"ua":"HTC One"}],"dpi":472.8,"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"Huawei/*/Nexus 6P/*"},{"ua":"Nexus 6P"}],"dpi":[515.1,518],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"LENOVO/*/Lenovo PB2-690Y/*"},{"ua":"Lenovo PB2-690Y"}],"dpi":[457.2,454.713],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"LGE/*/Nexus 5X/*"},{"ua":"Nexus 5X"}],"dpi":[422,419.9],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"LGE/*/LGMS345/*"},{"ua":"LGMS345"}],"dpi":[221.7,219.1],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"LGE/*/LG-D800/*"},{"ua":"LG-D800"}],"dpi":[422,424.1],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"LGE/*/LG-D850/*"},{"ua":"LG-D850"}],"dpi":[537.9,541.9],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"LGE/*/VS985 4G/*"},{"ua":"VS985 4G"}],"dpi":[537.9,535.6],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"LGE/*/Nexus 5/*"},{"ua":"Nexus 5 B"}],"dpi":[442.4,444.8],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"LGE/*/Nexus 4/*"},{"ua":"Nexus 4"}],"dpi":[319.8,318.4],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"LGE/*/LG-P769/*"},{"ua":"LG-P769"}],"dpi":[240.6,247.5],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"LGE/*/LGMS323/*"},{"ua":"LGMS323"}],"dpi":[206.6,204.6],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"LGE/*/LGLS996/*"},{"ua":"LGLS996"}],"dpi":[403.4,401.5],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"Micromax/*/4560MMX/*"},{"ua":"4560MMX"}],"dpi":[240,219.4],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"Micromax/*/A250/*"},{"ua":"Micromax A250"}],"dpi":[480,446.4],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"Micromax/*/Micromax AQ4501/*"},{"ua":"Micromax AQ4501"}],"dpi":240,"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"motorola/*/G5/*"},{"ua":"Moto G (5) Plus"}],"dpi":[403.4,403],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"motorola/*/DROID RAZR/*"},{"ua":"DROID RAZR"}],"dpi":[368.1,256.7],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"motorola/*/XT830C/*"},{"ua":"XT830C"}],"dpi":[254,255.9],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"motorola/*/XT1021/*"},{"ua":"XT1021"}],"dpi":[254,256.7],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"motorola/*/XT1023/*"},{"ua":"XT1023"}],"dpi":[254,256.7],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"motorola/*/XT1028/*"},{"ua":"XT1028"}],"dpi":[326.6,327.6],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"motorola/*/XT1034/*"},{"ua":"XT1034"}],"dpi":[326.6,328.4],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"motorola/*/XT1053/*"},{"ua":"XT1053"}],"dpi":[315.3,316.1],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"motorola/*/XT1562/*"},{"ua":"XT1562"}],"dpi":[403.4,402.7],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"motorola/*/Nexus 6/*"},{"ua":"Nexus 6 B"}],"dpi":[494.3,489.7],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"motorola/*/XT1063/*"},{"ua":"XT1063"}
3213],"dpi":[295,296.6],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"motorola/*/XT1064/*"},{"ua":"XT1064"}],"dpi":[295,295.6],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"motorola/*/XT1092/*"},{"ua":"XT1092"}],"dpi":[422,424.1],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"motorola/*/XT1095/*"},{"ua":"XT1095"}],"dpi":[422,423.4],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"motorola/*/G4/*"},{"ua":"Moto G (4)"}],"dpi":401,"bw":4,"ac":1000},{"type":"android","rules":[{"mdmh":"OnePlus/*/A0001/*"},{"ua":"A0001"}],"dpi":[403.4,401],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"OnePlus/*/ONE E1005/*"},{"ua":"ONE E1005"}],"dpi":[442.4,441.4],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"OnePlus/*/ONE A2005/*"},{"ua":"ONE A2005"}],"dpi":[391.9,405.4],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"OnePlus/*/ONEPLUS A5000/*"},{"ua":"ONEPLUS A5000 "}],"dpi":[403.411,399.737],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"OnePlus/*/ONE A5010/*"},{"ua":"ONEPLUS A5010"}],"dpi":[403,400],"bw":2,"ac":1000},{"type":"android","rules":[{"mdmh":"OPPO/*/X909/*"},{"ua":"X909"}],"dpi":[442.4,444.1],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/GT-I9082/*"},{"ua":"GT-I9082"}],"dpi":[184.7,185.4],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SM-G360P/*"},{"ua":"SM-G360P"}],"dpi":[196.7,205.4],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/Nexus S/*"},{"ua":"Nexus S"}],"dpi":[234.5,229.8],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/GT-I9300/*"},{"ua":"GT-I9300"}],"dpi":[304.8,303.9],"bw":5,"ac":500},{"type":"android","rules":[{"mdmh":"samsung/*/SM-T230NU/*"},{"ua":"SM-T230NU"}],"dpi":216,"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"samsung/*/SGH-T399/*"},{"ua":"SGH-T399"}],"dpi":[217.7,231.4],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SGH-M919/*"},{"ua":"SGH-M919"}],"dpi":[440.8,437.7],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SM-N9005/*"},{"ua":"SM-N9005"}],"dpi":[386.4,387],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"samsung/*/SAMSUNG-SM-N900A/*"},{"ua":"SAMSUNG-SM-N900A"}],"dpi":[386.4,387.7],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/GT-I9500/*"},{"ua":"GT-I9500"}],"dpi":[442.5,443.3],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"samsung/*/GT-I9505/*"},{"ua":"GT-I9505"}],"dpi":439.4,"bw":4,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SM-G900F/*"},{"ua":"SM-G900F"}],"dpi":[415.6,431.6],"bw":5,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SM-G900M/*"},{"ua":"SM-G900M"}],"dpi":[415.6,431.6],"bw":5,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SM-G800F/*"},{"ua":"SM-G800F"}],"dpi":326.8,"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SM-G906S/*"},{"ua":"SM-G906S"}],"dpi":[562.7,572.4],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/GT-I9300/*"},{"ua":"GT-I9300"}],"dpi":[306.7,304.8],"bw":5,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SM-T535/*"},{"ua":"SM-T535"}],"dpi":[142.6,136.4],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"samsung/*/SM-N920C/*"},{"ua":"SM-N920C"}],"dpi":[515.1,518.4],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SM-N920P/*"},{"ua":"SM-N920P"}],"dpi":[386.3655,390.144],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SM-N920W8/*"},{"ua":"SM-N920W8"}],"dpi":[515.1,518.4],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/GT-I9300I/*"},{"ua":"GT-I9300I"}],"dpi":[304.8,305.8],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/GT-I9195/*"},{"ua":"GT-I9195"}],"dpi":[249.4,256.7],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"samsung/*/SPH-L520/*"},{"ua":"SPH-L520"}],"dpi":[249.4,255.9],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SAMSUNG-SGH-I717/*"},{"ua":"SAMSUNG-SGH-I717"}],"dpi":285.8,"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SPH-D710/*"},{"ua":"SPH-D710"}],"dpi":[217.7,204.2],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/GT-N7100/*"},{"ua":"GT-N7100"}],"dpi":265.1,"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SCH-I605/*"},{"ua":"SCH-I605"}],"dpi":265.1,"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/Galaxy Nexus/*"},{"ua":"Galaxy Nexus"}],"dpi":[315.3,314.2],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SM-N910H/*"},{"ua":"SM-N910H"}],"dpi":[515.1,518],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SM-N910C/*"},{"ua":"SM-N910C"}],"dpi":[515.2,520.2],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"samsung/*/SM-G130M/*"},{"ua":"SM-G130M"}],"dpi":[165.9,164.8],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"samsung/*/SM-G928I/*"},{"ua":"SM-G928I"}],"dpi":[515.1,518.4],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SM-G920F/*"},{"ua":"SM-G920F"}],"dpi":580.6,"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"samsung/*/SM-G920P/*"},{"ua":"SM-G920P"}],"dpi":[522.5,577],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SM-G925F/*"},{"ua":"SM-G925F"}],"dpi":580.6,"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"samsung/*/SM-G925V/*"},{"ua":"SM-G925V"}],"dpi":[522.5,576.6],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SM-G930F/*"},{"ua":"SM-G930F"}],"dpi":576.6,"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"samsung/*/SM-G935F/*"},{"ua":"SM-G935F"}],"dpi":533,"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"samsung/*/SM-G950F/*"},{"ua":"SM-G950F"}],"dpi":[562.707,565.293],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"samsung/*/SM-G955U/*"},{"ua":"SM-G955U"}],"dpi":[522.514,525.762],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"Sony/*/C6903/*"},{"ua":"C6903"}],"dpi":[442.5,443.3],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"Sony/*/D6653/*"},{"ua":"D6653"}],"dpi":[428.6,427.6],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"Sony/*/E6653/*"},{"ua":"E6653"}],"dpi":[428.6,425.7],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"Sony/*/E6853/*"},{"ua":"E6853"}],"dpi":[403.4,401.9],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"Sony/*/SGP321/*"},{"ua":"SGP321"}],"dpi":[224.7,224.1],"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"TCT/*/ALCATEL ONE TOUCH Fierce/*"},{"ua":"ALCATEL ONE TOUCH Fierce"}],"dpi":[240,247.5],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"THL/*/thl 5000/*"},{"ua":"thl 5000"}],"dpi":[480,443.3],"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"Fly/*/IQ4412/*"},{"ua":"IQ4412"}],"dpi":307.9,"bw":3,"ac":1000},{"type":"android","rules":[{"mdmh":"ZTE/*/ZTE Blade L2/*"},{"ua":"ZTE Blade L2"}],"dpi":240,"bw":3,"ac":500},{"type":"android","rules":[{"mdmh":"BENEVE/*/VR518/*"},{"ua":"VR518"}],"dpi":480,"bw":3,"ac":500}
3213,{"type":"ios","rules":[{"res":[640,960]}],"dpi":[325.1,328.4],"bw":4,"ac":1000},{"type":"ios","rules":[{"res":[640,1136]}],"dpi":[317.1,320.2],"bw":3,"ac":1000},{"type":"ios","rules":[{"res":[750,1334]}],"dpi":326.4,"bw":4,"ac":1000},{"type":"ios","rules":[{"res":[1242,2208]}],"dpi":[453.6,458.4],"bw":4,"ac":1000},{"type":"ios","rules":[{"res":[1125,2001]}],"dpi":[410.9,415.4],"bw":4,"ac":1000},{"type":"ios","rules":[{"res":[1125,2436]}],"dpi":458,"bw":4,"ac":1000}];var DPDB_CACHE={format:format,last_updated:last_updated,devices:devices};function Dpdb(url,onDeviceParamsUpdated){this.dpdb=DPDB_CACHE;this.recalculateDeviceParams_();if(url){this.onDeviceParamsUpdated=onDeviceParamsUpdated;var xhr=new XMLHttpRequest();var obj=this;xhr.open('GET',url,!0);xhr.addEventListener('load',function(){obj.loading=!1;if(xhr.status>=200&&xhr.status<=299){obj.dpdb=JSON.parse(xhr.response);obj.recalculateDeviceParams_()}else{console.error('Error loading online DPDB!')}});xhr.send()}}
3214Dpdb.prototype.getDeviceParams=function(){return this.deviceParams};Dpdb.prototype.recalculateDeviceParams_=function(){var newDeviceParams=this.calcDeviceParams_();if(newDeviceParams){this.deviceParams=newDeviceParams;if(this.onDeviceParamsUpdated){this.onDeviceParamsUpdated(this.deviceParams)}}else{console.error('Failed to recalculate device parameters.')}};Dpdb.prototype.calcDeviceParams_=function(){var db=this.dpdb;if(!db){console.error('DPDB not available.');return null}
3215if(db.format!=1){console.error('DPDB has unexpected format version.');return null}
3216if(!db.devices||!db.devices.length){console.error('DPDB does not have a devices section.');return null}
3217var userAgent=navigator.userAgent||navigator.vendor||window.opera;var width=getScreenWidth();var height=getScreenHeight();if(!db.devices){console.error('DPDB has no devices section.');return null}
3218for(var i=0;i<db.devices.length;i++){var device=db.devices[i];if(!device.rules){console.warn('Device['+i+'] has no rules section.');continue}
3219if(device.type!='ios'&&device.type!='android'){console.warn('Device['+i+'] has invalid type.');continue}
3220if(isIOS()!=(device.type=='ios'))continue;var matched=!1;for(var j=0;j<device.rules.length;j++){var rule=device.rules[j];if(this.matchRule_(rule,userAgent,width,height)){matched=!0;break}}
3221if(!matched)continue;var xdpi=device.dpi[0]||device.dpi;var ydpi=device.dpi[1]||device.dpi;return new DeviceParams({xdpi:xdpi,ydpi:ydpi,bevelMm:device.bw})}
3222console.warn('No DPDB device match.');return null};Dpdb.prototype.matchRule_=function(rule,ua,screenWidth,screenHeight){if(!rule.ua&&!rule.res)return!1;if(rule.ua&&ua.indexOf(rule.ua)<0)return!1;if(rule.res){if(!rule.res[0]||!rule.res[1])return!1;var resX=rule.res[0];var resY=rule.res[1];if(Math.min(screenWidth,screenHeight)!=Math.min(resX,resY)||Math.max(screenWidth,screenHeight)!=Math.max(resX,resY)){return!1}}
3223return!0};function DeviceParams(params){this.xdpi=params.xdpi;this.ydpi=params.ydpi;this.bevelMm=params.bevelMm}
3224function SensorSample(sample,timestampS){this.set(sample,timestampS)}
3225SensorSample.prototype.set=function(sample,timestampS){this.sample=sample;this.timestampS=timestampS};SensorSample.prototype.copy=function(sensorSample){this.set(sensorSample.sample,sensorSample.timestampS)};function ComplementaryFilter(kFilter,isDebug){this.kFilter=kFilter;this.isDebug=isDebug;this.currentAccelMeasurement=new SensorSample();this.currentGyroMeasurement=new SensorSample();this.previousGyroMeasurement=new SensorSample();if(isIOS()){this.filterQ=new Quaternion(-1,0,0,1)}else{this.filterQ=new Quaternion(1,0,0,1)}
3226this.previousFilterQ=new Quaternion();this.previousFilterQ.copy(this.filterQ);this.accelQ=new Quaternion();this.isOrientationInitialized=!1;this.estimatedGravity=new Vector3();this.measuredGravity=new Vector3();this.gyroIntegralQ=new Quaternion()}
3227ComplementaryFilter.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;if(isTimestampDeltaValid(deltaT)){this.run_()}
3228this.previousGyroMeasurement.copy(this.currentGyroMeasurement)};ComplementaryFilter.prototype.run_=function(){if(!this.isOrientationInitialized){this.accelQ=this.accelToQuaternion_(this.currentAccelMeasurement.sample);this.previousFilterQ.copy(this.accelQ);this.isOrientationInitialized=!0;return}
3229var deltaT=this.currentGyroMeasurement.timestampS-this.previousGyroMeasurement.timestampS;var gyroDeltaQ=this.gyroToQuaternionDelta_(this.currentGyroMeasurement.sample,deltaT);this.gyroIntegralQ.multiply(gyroDeltaQ);this.filterQ.copy(this.previousFilterQ);this.filterQ.multiply(gyroDeltaQ);var invFilterQ=new 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 Quaternion();deltaQ.setFromUnitVectors(this.estimatedGravity,this.measuredGravity);deltaQ.inverse();if(this.isDebug){console.log('Delta: %d deg, G_est: (%s, %s, %s), G_meas: (%s, %s, %s)',radToDeg*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))}
3230var targetQ=new 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 Vector3();normAccel.copy(accel);normAccel.normalize();var quat=new Quaternion();quat.setFromUnitVectors(new Vector3(0,0,-1),normAccel);quat.inverse();return quat};ComplementaryFilter.prototype.gyroToQuaternionDelta_=function(gyro,dt){var quat=new Quaternion();var axis=new Vector3();axis.copy(gyro);axis.normalize();quat.setFromAxisAngle(axis,gyro.length()*dt);return quat};function PosePredictor(predictionTimeS,isDebug){this.predictionTimeS=predictionTimeS;this.isDebug=isDebug;this.previousQ=new Quaternion();this.previousTimestampS=null;this.deltaQ=new Quaternion();this.outQ=new Quaternion()}
3231PosePredictor.prototype.getPrediction=function(currentQ,gyro,timestampS){if(!this.previousTimestampS){this.previousQ.copy(currentQ);this.previousTimestampS=timestampS;return currentQ}
3232var axis=new Vector3();axis.copy(gyro);axis.normalize();var angularSpeed=gyro.length();if(angularSpeed<degToRad*20){if(this.isDebug){console.log('Moving slowly, at %s deg/s: no prediction',(radToDeg*angularSpeed).toFixed(1))}
3233this.outQ.copy(currentQ);this.previousQ.copy(currentQ);return this.outQ}
3234var predictAngle=angularSpeed*this.predictionTimeS;this.deltaQ.setFromAxisAngle(axis,predictAngle);this.outQ.copy(this.previousQ);this.outQ.multiply(this.deltaQ);this.previousQ.copy(currentQ);this.previousTimestampS=timestampS;return this.outQ};function FusionPoseSensor(kFilter,predictionTime,yawOnly,isDebug){this.yawOnly=yawOnly;this.accelerometer=new Vector3();this.gyroscope=new Vector3();this.filter=new ComplementaryFilter(kFilter,isDebug);this.posePredictor=new PosePredictor(predictionTime,isDebug);this.isFirefoxAndroid=isFirefoxAndroid();this.isIOS=isIOS();var chromeVersion=getChromeVersion();this.isDeviceMotionInRadians=!this.isIOS&&chromeVersion&&chromeVersion<66;this.isWithoutDeviceMotion=isChromeWithoutDeviceMotion();this.filterToWorldQ=new Quaternion();if(isIOS()){this.filterToWorldQ.setFromAxisAngle(new Vector3(1,0,0),Math.PI/2)}else{this.filterToWorldQ.setFromAxisAngle(new Vector3(1,0,0),-Math.PI/2)}
3235this.inverseWorldToScreenQ=new Quaternion();this.worldToScreenQ=new Quaternion();this.originalPoseAdjustQ=new Quaternion();this.originalPoseAdjustQ.setFromAxisAngle(new Vector3(0,0,1),-window.orientation*Math.PI/180);this.setScreenTransform_();if(isLandscapeMode()){this.filterToWorldQ.multiply(this.inverseWorldToScreenQ)}
3236this.resetQ=new Quaternion();this.orientationOut_=new Float32Array(4);this.start()}
3237FusionPoseSensor.prototype.getPosition=function(){return null};FusionPoseSensor.prototype.getOrientation=function(){var orientation=void 0;if(this.isWithoutDeviceMotion&&this._deviceOrientationQ){this.deviceOrientationFixQ=this.deviceOrientationFixQ||function(){var z=new Quaternion().setFromAxisAngle(new Vector3(0,0,-1),0);var y=new Quaternion();if(window.orientation===-90){y.setFromAxisAngle(new Vector3(0,1,0),Math.PI/-2)}else{y.setFromAxisAngle(new Vector3(0,1,0),Math.PI/2)}
3238return z.multiply(y)}();this.deviceOrientationFilterToWorldQ=this.deviceOrientationFilterToWorldQ||function(){var q=new Quaternion();q.setFromAxisAngle(new Vector3(1,0,0),-Math.PI/2);return q}();orientation=this._deviceOrientationQ;var out=new Quaternion();out.copy(orientation);out.multiply(this.deviceOrientationFilterToWorldQ);out.multiply(this.resetQ);out.multiply(this.worldToScreenQ);out.multiplyQuaternions(this.deviceOrientationFixQ,out);if(this.yawOnly){out.x=0;out.z=0;out.normalize()}
3239this.orientationOut_[0]=out.x;this.orientationOut_[1]=out.y;this.orientationOut_[2]=out.z;this.orientationOut_[3]=out.w;return this.orientationOut_}else{var filterOrientation=this.filter.getOrientation();orientation=this.posePredictor.getPrediction(filterOrientation,this.gyroscope,this.previousTimestampS)}
3240var out=new Quaternion();out.copy(this.filterToWorldQ);out.multiply(this.resetQ);out.multiply(orientation);out.multiply(this.worldToScreenQ);if(this.yawOnly){out.x=0;out.z=0;out.normalize()}
3241this.orientationOut_[0]=out.x;this.orientationOut_[1]=out.y;this.orientationOut_[2]=out.z;this.orientationOut_[3]=out.w;return this.orientationOut_};
3241FusionPoseSensor.prototype.resetPose=function(){this.resetQ.copy(this.filter.getOrientation());this.resetQ.x=0;this.resetQ.y=0;this.resetQ.z*=-1;this.resetQ.normalize();if(isLandscapeMode()){this.resetQ.multiply(this.inverseWorldToScreenQ)}
3242this.resetQ.multiply(this.originalPoseAdjustQ)};FusionPoseSensor.prototype.onDeviceOrientation_=function(e){this._deviceOrientationQ=this._deviceOrientationQ||new Quaternion();var alpha=e.alpha,beta=e.beta,gamma=e.gamma;alpha=(alpha||0)*Math.PI/180;beta=(beta||0)*Math.PI/180;gamma=(gamma||0)*Math.PI/180;this._deviceOrientationQ.setFromEulerYXZ(beta,alpha,-gamma)};FusionPoseSensor.prototype.onDeviceMotion_=function(deviceMotion){this.updateDeviceMotion_(deviceMotion)};FusionPoseSensor.prototype.updateDeviceMotion_=function(deviceMotion){var accGravity=deviceMotion.accelerationIncludingGravity;var rotRate=deviceMotion.rotationRate;var timestampS=deviceMotion.timeStamp/1000;var deltaS=timestampS-this.previousTimestampS;if(deltaS<0){warnOnce('fusion-pose-sensor:invalid:non-monotonic','Invalid timestamps detected: non-monotonic timestamp from devicemotion');this.previousTimestampS=timestampS;return}else if(deltaS<=MIN_TIMESTEP||deltaS>MAX_TIMESTEP){warnOnce('fusion-pose-sensor:invalid:outside-threshold','Invalid timestamps detected: Timestamp from devicemotion outside expected range.');this.previousTimestampS=timestampS;return}
3243this.accelerometer.set(-accGravity.x,-accGravity.y,-accGravity.z);if(isR7()){this.gyroscope.set(-rotRate.beta,rotRate.alpha,rotRate.gamma)}else{this.gyroscope.set(rotRate.alpha,rotRate.beta,rotRate.gamma)}
3244if(!this.isDeviceMotionInRadians){this.gyroscope.multiplyScalar(Math.PI/180)}
3245this.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;if(!message||!message.type){return}
3246var type=message.type.toLowerCase();if(type!=='devicemotion'){return}
3247this.updateDeviceMotion_(message.deviceMotionEvent)};FusionPoseSensor.prototype.setScreenTransform_=function(){this.worldToScreenQ.set(0,0,0,1);switch(window.orientation){case 0:break;case 90:this.worldToScreenQ.setFromAxisAngle(new Vector3(0,0,1),-Math.PI/2);break;case-90:this.worldToScreenQ.setFromAxisAngle(new Vector3(0,0,1),Math.PI/2);break}
3248this.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);this.onDeviceOrientationCallback_=this.onDeviceOrientation_.bind(this);if(isIOS()&&isInsideCrossOriginIFrame()){window.addEventListener('message',this.onMessageCallback_)}
3249window.addEventListener('orientationchange',this.onOrientationChangeCallback_);if(this.isWithoutDeviceMotion){window.addEventListener('deviceorientation',this.onDeviceOrientationCallback_)}else{window.addEventListener('devicemotion',this.onDeviceMotionCallback_)}};FusionPoseSensor.prototype.stop=function(){window.removeEventListener('devicemotion',this.onDeviceMotionCallback_);window.removeEventListener('deviceorientation',this.onDeviceOrientationCallback_);window.removeEventListener('orientationchange',this.onOrientationChangeCallback_);window.removeEventListener('message',this.onMessageCallback_)};var SENSOR_FREQUENCY=60;var X_AXIS=new Vector3(1,0,0);var Z_AXIS=new Vector3(0,0,1);var orientation={};if(screen.orientation){orientation=screen.orientation}else if(screen.msOrientation){orientation=screen.msOrientation}else{Object.defineProperty(orientation,'angle',{get:function get$$1(){return window.orientation||0}})}
3250var SENSOR_TO_VR=new Quaternion();SENSOR_TO_VR.setFromAxisAngle(X_AXIS,-Math.PI/2);SENSOR_TO_VR.multiply(new Quaternion().setFromAxisAngle(Z_AXIS,Math.PI/2));var PoseSensor=function(){function PoseSensor(config){classCallCheck(this,PoseSensor);this.config=config;this.sensor=null;this.fusionSensor=null;this._out=new Float32Array(4);this.api=null;this.errors=[];this._sensorQ=new Quaternion();this._worldToScreenQ=new Quaternion();this._outQ=new Quaternion();this._onSensorRead=this._onSensorRead.bind(this);this._onSensorError=this._onSensorError.bind(this);this._onOrientationChange=this._onOrientationChange.bind(this);this._onOrientationChange();this.init()}
3251createClass(PoseSensor,[{key:'init',value:function init(){var sensor=null;try{sensor=new RelativeOrientationSensor({frequency:SENSOR_FREQUENCY});sensor.addEventListener('error',this._onSensorError)}catch(error){this.errors.push(error);if(error.name==='SecurityError'){console.error('Cannot construct sensors due to the Feature Policy');console.warn('Attempting to fall back using "devicemotion"; however this will '+'fail in the future without correct permissions.');this.useDeviceMotion()}else if(error.name==='ReferenceError'){this.useDeviceMotion()}else{console.error(error)}}
3252if(sensor){this.api='sensor';this.sensor=sensor;this.sensor.addEventListener('reading',this._onSensorRead);this.sensor.start()}
3253window.addEventListener('orientationchange',this._onOrientationChange)}},{key:'useDeviceMotion',value:function useDeviceMotion(){this.api='devicemotion';this.fusionSensor=new FusionPoseSensor(this.config.K_FILTER,this.config.PREDICTION_TIME_S,this.config.YAW_ONLY,this.config.DEBUG);if(this.sensor){this.sensor.removeEventListener('reading',this._onSensorRead);this.sensor.removeEventListener('error',this._onSensorError);this.sensor=null}}},{key:'getOrientation',value:function getOrientation(){if(this.fusionSensor){return this.fusionSensor.getOrientation()}
3254if(!this.sensor||!this.sensor.quaternion){this._out[0]=this._out[1]=this._out[2]=0;this._out[3]=1;return this._out}
3255var q=this.sensor.quaternion;this._sensorQ.set(q[0],q[1],q[2],q[3]);var out=this._outQ;out.copy(SENSOR_TO_VR);out.multiply(this._sensorQ);out.multiply(this._worldToScreenQ);if(this.config.YAW_ONLY){out.x=out.z=0;out.normalize()}
3256this._out[0]=out.x;this._out[1]=out.y;this._out[2]=out.z;this._out[3]=out.w;return this._out}},{key:'_onSensorError',value:function _onSensorError(event){this.errors.push(event.error);if(event.error.name==='NotAllowedError'){console.error('Permission to access sensor was denied')}else if(event.error.name==='NotReadableError'){console.error('Sensor could not be read')}else{console.error(event.error)}
3257this.useDeviceMotion()}},{key:'_onSensorRead',value:function _onSensorRead(){}},{key:'_onOrientationChange',value:function _onOrientationChange(){var angle=-orientation.angle*Math.PI/180;this._worldToScreenQ.setFromAxisAngle(Z_AXIS,angle)}}]);return PoseSensor}();var rotateInstructionsAsset='PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjE5OHB4IiBoZWlnaHQ9IjI0MHB4IiB2aWV3Qm94PSIwIDAgMTk4IDI0MCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczpza2V0Y2g9Imh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaC9ucyI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDMuMy4zICgxMjA4MSkgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+dHJhbnNpdGlvbjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHNrZXRjaDp0eXBlPSJNU1BhZ2UiPgogICAgICAgIDxnIGlkPSJ0cmFuc2l0aW9uIiBza2V0Y2g6dHlwZT0iTVNBcnRib2FyZEdyb3VwIj4KICAgICAgICAgICAgPGcgaWQ9IkltcG9ydGVkLUxheWVycy1Db3B5LTQtKy1JbXBvcnRlZC1MYXllcnMtQ29weS0rLUltcG9ydGVkLUxheWVycy1Db3B5LTItQ29weSIgc2tldGNoOnR5cGU9Ik1TTGF5ZXJHcm91cCI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iSW1wb3J0ZWQtTGF5ZXJzLUNvcHktNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDEwNy4wMDAwMDApIiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTQ5LjYyNSwyLjUyNyBDMTQ5LjYyNSwyLjUyNyAxNTUuODA1LDYuMDk2IDE1Ni4zNjIsNi40MTggTDE1Ni4zNjIsNy4zMDQgQzE1Ni4zNjIsNy40ODEgMTU2LjM3NSw3LjY2NCAxNTYuNCw3Ljg1MyBDMTU2LjQxLDcuOTM0IDE1Ni40Miw4LjAxNSAxNTYuNDI3LDguMDk1IEMxNTYuNTY3LDkuNTEgMTU3LjQwMSwxMS4wOTMgMTU4LjUzMiwxMi4wOTQgTDE2NC4yNTIsMTcuMTU2IEwxNjQuMzMzLDE3LjA2NiBDMTY0LjMzMywxNy4wNjYgMTY4LjcxNSwxNC41MzYgMTY5LjU2OCwxNC4wNDIgQzE3MS4wMjUsMTQuODgzIDE5NS41MzgsMjkuMDM1IDE5NS41MzgsMjkuMDM1IEwxOTUuNTM4LDgzLjAzNiBDMTk1LjUzOCw4My44MDcgMTk1LjE1Miw4NC4yNTMgMTk0LjU5LDg0LjI1MyBDMTk0LjM1Nyw4NC4yNTMgMTk0LjA5NSw4NC4xNzcgMTkzLjgxOCw4NC4wMTcgTDE2OS44NTEsNzAuMTc5IEwxNjkuODM3LDcwLjIwMyBMMTQyLjUxNSw4NS45NzggTDE0MS42NjUsODQuNjU1IEMxMzYuOTM0LDgzLjEyNiAxMzEuOTE3LDgxLjkxNSAxMjYuNzE0LDgxLjA0NSBDMTI2LjcwOSw4MS4wNiAxMjYuNzA3LDgxLjA2OSAxMjYuNzA3LDgxLjA2OSBMMTIxLjY0LDk4LjAzIEwxMTMuNzQ5LDEwMi41ODYgTDExMy43MTIsMTAyLjUyMyBMMTEzLjcxMiwxMzAuMTEzIEMxMTMuNzEyLDEzMC44ODUgMTEzLjMyNiwxMzEuMzMgMTEyLjc2NCwxMzEuMzMgQzExMi41MzIsMTMxLjMzIDExMi4yNjksMTMxLjI1NCAxMTEuOTkyLDEzMS4wOTQgTDY5LjUxOSwxMDYuNTcyIEM2OC41NjksMTA2LjAyMyA2Ny43OTksMTA0LjY5NSA2Ny43OTksMTAzLjYwNSBMNjcuNzk5LDEwMi41NyBMNjcuNzc4LDEwMi42MTcgQzY3LjI3LDEwMi4zOTMgNjYuNjQ4LDEwMi4yNDkgNjUuOTYyLDEwMi4yMTggQzY1Ljg3NSwxMDIuMjE0IDY1Ljc4OCwxMDIuMjEyIDY1LjcwMSwxMDIuMjEyIEM2NS42MDYsMTAyLjIxMiA2NS41MTEsMTAyLjIxNSA2NS40MTYsMTAyLjIxOSBDNjUuMTk1LDEwMi4yMjkgNjQuOTc0LDEwMi4yMzUgNjQuNzU0LDEwMi4yMzUgQzY0LjMzMSwxMDIuMjM1IDYzLjkxMSwxMDIuMjE2IDYzLjQ5OCwxMDIuMTc4IEM2MS44NDMsMTAyLjAyNSA2MC4yOTgsMTAxLjU3OCA1OS4wOTQsMTAwLjg4MiBMMTIuNTE4LDczLjk5MiBMMTIuNTIzLDc0LjAwNCBMMi4yNDUsNTUuMjU0IEMxLjI0NCw1My40MjcgMi4wMDQsNTEuMDM4IDMuOTQzLDQ5LjkxOCBMNTkuOTU0LDE3LjU3MyB
3257DNjAuNjI2LDE3LjE4NSA2MS4zNSwxNy4wMDEgNjIuMDUzLDE3LjAwMSBDNjMuMzc5LDE3LjAwMSA2NC42MjUsMTcuNjYgNjUuMjgsMTguODU0IEw2NS4yODUsMTguODUxIEw2NS41MTIsMTkuMjY0IEw2NS41MDYsMTkuMjY4IEM2NS45MDksMjAuMDAzIDY2LjQwNSwyMC42OCA2Ni45ODMsMjEuMjg2IEw2Ny4yNiwyMS41NTYgQzY5LjE3NCwyMy40MDYgNzEuNzI4LDI0LjM1NyA3NC4zNzMsMjQuMzU3IEM3Ni4zMjIsMjQuMzU3IDc4LjMyMSwyMy44NCA4MC4xNDgsMjIuNzg1IEM4MC4xNjEsMjIuNzg1IDg3LjQ2NywxOC41NjYgODcuNDY3LDE4LjU2NiBDODguMTM5LDE4LjE3OCA4OC44NjMsMTcuOTk0IDg5LjU2NiwxNy45OTQgQzkwLjg5MiwxNy45OTQgOTIuMTM4LDE4LjY1MiA5Mi43OTIsMTkuODQ3IEw5Ni4wNDIsMjUuNzc1IEw5Ni4wNjQsMjUuNzU3IEwxMDIuODQ5LDI5LjY3NCBMMTAyLjc0NCwyOS40OTIgTDE0OS42MjUsMi41MjcgTTE0OS42MjUsMC44OTIgQzE0OS4zNDMsMC44OTIgMTQ5LjA2MiwwLjk2NSAxNDguODEsMS4xMSBMMTAyLjY0MSwyNy42NjYgTDk3LjIzMSwyNC41NDIgTDk0LjIyNiwxOS4wNjEgQzkzLjMxMywxNy4zOTQgOTEuNTI3LDE2LjM1OSA4OS41NjYsMTYuMzU4IEM4OC41NTUsMTYuMzU4IDg3LjU0NiwxNi42MzIgODYuNjQ5LDE3LjE1IEM4My44NzgsMTguNzUgNzkuNjg3LDIxLjE2OSA3OS4zNzQsMjEuMzQ1IEM3OS4zNTksMjEuMzUzIDc5LjM0NSwyMS4zNjEgNzkuMzMsMjEuMzY5IEM3Ny43OTgsMjIuMjU0IDc2LjA4NCwyMi43MjIgNzQuMzczLDIyLjcyMiBDNzIuMDgxLDIyLjcyMiA2OS45NTksMjEuODkgNjguMzk3LDIwLjM4IEw2OC4xNDUsMjAuMTM1IEM2Ny43MDYsMTkuNjcyIDY3LjMyMywxOS4xNTYgNjcuMDA2LDE4LjYwMSBDNjYuOTg4LDE4LjU1OSA2Ni45NjgsMTguNTE5IDY2Ljk0NiwxOC40NzkgTDY2LjcxOSwxOC4wNjUgQzY2LjY5LDE4LjAxMiA2Ni42NTgsMTcuOTYgNjYuNjI0LDE3LjkxMSBDNjUuNjg2LDE2LjMzNyA2My45NTEsMTUuMzY2IDYyLjA1MywxNS4zNjYgQzYxLjA0MiwxNS4zNjYgNjAuMDMzLDE1LjY0IDU5LjEzNiwxNi4xNTggTDMuMTI1LDQ4LjUwMiBDMC40MjYsNTAuMDYxIC0wLjYxMyw1My40NDIgMC44MTEsNTYuMDQgTDExLjA4OSw3NC43OSBDMTEuMjY2LDc1LjExMyAxMS41MzcsNzUuMzUzIDExLjg1LDc1LjQ5NCBMNTguMjc2LDEwMi4yOTggQzU5LjY3OSwxMDMuMTA4IDYxLjQzMywxMDMuNjMgNjMuMzQ4LDEwMy44MDYgQzYzLjgxMiwxMDMuODQ4IDY0LjI4NSwxMDMuODcgNjQuNzU0LDEwMy44NyBDNjUsMTAzLjg3IDY1LjI0OSwxMDMuODY0IDY1LjQ5NCwxMDMuODUyIEM2NS41NjMsMTAzLjg0OSA2NS42MzIsMTAzLjg0NyA2NS43MDEsMTAzLjg0NyBDNjUuNzY0LDEwMy44NDcgNjUuODI4LDEwMy44NDkgNjUuODksMTAzLjg1MiBDNjUuOTg2LDEwMy44NTYgNjYuMDgsMTAzLjg2MyA2Ni4xNzMsMTAzLjg3NCBDNjYuMjgyLDEwNS40NjcgNjcuMzMyLDEwNy4xOTcgNjguNzAyLDEwNy45ODggTDExMS4xNzQsMTMyLjUxIEMxMTEuNjk4LDEzMi44MTIgMTEyLjIzMiwxMzIuOTY1IDExMi43NjQsMTMyLjk2NSBDMTE0LjI2MSwxMzIuOTY1IDExNS4zNDcsMTMxLjc2NSAxMTUuMzQ3LDEzMC4xMTMgTDExNS4zNDcsMTAzLjU1MSBMMTIyLjQ1OCw5OS40NDYgQzEyMi44MTksOTkuMjM3IDEyMy4wODcsOTguODk4IDEyMy4yMDcsOTguNDk4IEwxMjcuODY1LDgyLjkwNSBDMTMyLjI3OSw4My43MDIgMTM2LjU1Nyw4NC43NTMgMTQwLjYwNyw4Ni4wMzMgTDE0MS4xNCw4Ni44NjIgQzE0MS40NTEsODcuMzQ2IDE0MS45NzcsODcuNjEzIDE0Mi41MTYsODcuNjEzIEMxNDIuNzk0LDg3LjYxMyAxNDMuMDc2LDg3LjU0MiAxNDMuMzMzLDg3LjM5MyBMMTY5Ljg2NSw3Mi4wNzYgTDE5Myw4NS40MzMgQzE5My41MjMsODUuNzM1IDE5NC4wNTgsODUuODg4IDE5NC41OSw4NS44ODggQzE5Ni4wODcsODUuODg4IDE5Ny4xNzMsODQuNjg5IDE5Ny4xNzMsODMuMDM2IEwxOTcuMTczLDI5LjAzNSBDMTk3LjE3MywyOC40NTEgMTk2Ljg2MSwyNy45MTEgMTk2LjM1NSwyNy42MTkgQzE5Ni4zNTUsMjcuNjE5IDE3MS44NDMsMTMuNDY3IDE3MC4zODUsMTIuNjI2IEMxNzAuMTMyLDEyLjQ4IDE2OS44NSwxMi40MDcgMTY5LjU2OCwxMi40MDcgQzE2OS4yODUsMTIuNDA3IDE2OS4wMDIsMTIuNDgxIDE2OC43NDksMTIuNjI3IEMxNjguMTQzLDEyLjk3OCAxNjUuNzU2LDE0LjM1NyAxNjQuNDI0LDE1LjEyNSBMMTU5LjYxNSwxMC44NyBDMTU4Ljc5NiwxMC4xNDUgMTU4LjE1NCw4LjkzNyAxNTguMDU0LDcuOTM0IEMxNTguMDQ1LDcuODM3IDE1OC4wMzQsNy43MzkgMTU4LjAyMSw3LjY0IEMxNTguMDA1LDcuNTIzIDE1Ny45OTgsNy40MSAxNTcuOTk4LDcuMzA0IEwxNTcuOTk4LDYuNDE4IEMxNTcuOTk4LDUuODM0IDE1Ny42ODYsNS4yOTUgMTU3LjE4MSw1LjAwMiBDMTU2LjYyNCw0LjY4IDE1MC40NDIsMS4xMTEgMTUwLjQ0MiwxLjExMSBDMTUwLjE4OSwwLjk2NSAxNDkuOTA3LDAuODkyIDE0OS42MjUsMC44OTIiIGlkPSJGaWxsLTEiIGZpbGw9IiM0NTVBNjQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTYuMDI3LDI1LjYzNiBMMTQyLjYwMyw1Mi41MjcgQzE0My44MDcsNTMuMjIyIDE0NC41ODIsNTQuMTE0IDE0NC44NDUsNTUuMDY4IEwxNDQuODM1LDU1LjA3NSBMNjMuNDYxLDEwMi4wNTcgTDYzLjQ2LDEwMi4wNTcgQzYxLjgwNiwxMDEuOTA1IDYwLjI2MSwxMDEuNDU3IDU5LjA1NywxMDAuNzYyIEwxMi40ODEsNzMuODcxIEw5Ni4wMjcsMjUuNjM2IiBpZD0iRmlsbC0yIiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTYzLjQ2MSwxMDIuMTc0IEM2My40NTMsMTAyLjE3NCA2My40NDYsMTAyLjE3NCA2My40MzksMTAyLjE3MiBDNjEuNzQ2LDEwMi4wMTYgNjAuMjExLDEwMS41NjMgNTguOTk4LDEwMC44NjMgTDEyLjQyMiw3My45NzMgQzEyLjM4Niw3My45NTIgMTIuMzY0LDczLjkxNCAxMi4zNjQsNzMuODcxIEMxMi4zNjQsNzMuODMgMTIuMzg2LDczLjc5MSAxMi40MjIsNzMuNzcgTDk1Ljk2OCwyNS41MzUgQzk2LjAwNCwyNS41MTQgOTYuMDQ5LDI1LjUxNCA5Ni4wODUsMjUuNTM1IEwxNDIuNjYxLDUyLjQyNiBDMTQzLjg4OCw1My4xMzQgMTQ0LjY4Miw1NC4wMzggMTQ0Ljk1Nyw1NS4wMzcgQzE0NC45Nyw1NS4wODMgMTQ0Ljk1Myw1NS4xMzMgMTQ0LjkxNSw1NS4xNjEgQzE0NC45MTEsNTUuMTY1IDE0NC44OTgsNTUuMTc0IDE0NC44OTQsNTUuMTc3IEw2My41MTksMTAyLjE1OCBDNjMuNTAxLDEwMi4xNjkgNjMuNDgxLDEwMi4xNzQgNjMuNDYxLDEwMi4xNzQgTDYzLjQ2MSwxMDIuMTc0IFogTTEyLjcxNCw3My44NzEgTDU5LjExNSwxMDAuNjYxIEM2MC4yOTMsMTAxLjM0MSA2MS43ODYsMTAxLjc4MiA2My40MzUsMTAxLjkzNyBMMTQ0LjcwNyw1NS4wMTUgQzE0NC40MjgsNTQuMTA4IDE0My42ODIsNTMuMjg1IDE0Mi41NDQsNTIuNjI4IEw5Ni4wMjcsMjUuNzcxIEwxMi43MTQsNzMuODcxIEwxMi43MTQsNzMuODcxIFoiIGlkPSJGaWxsLTMiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTQ4LjMyNyw1OC40NzEgQzE0OC4xNDUsNTguNDggMTQ3Ljk2Miw1OC40OCAxNDcuNzgxLDU4LjQ3MiBDMTQ1Ljg4Nyw1OC4zODkgMTQ0LjQ3OSw1Ny40MzQgMTQ0LjYzNiw1Ni4zNCB
3257DMTQ0LjY4OSw1NS45NjcgMTQ0LjY2NCw1NS41OTcgMTQ0LjU2NCw1NS4yMzUgTDYzLjQ2MSwxMDIuMDU3IEM2NC4wODksMTAyLjExNSA2NC43MzMsMTAyLjEzIDY1LjM3OSwxMDIuMDk5IEM2NS41NjEsMTAyLjA5IDY1Ljc0MywxMDIuMDkgNjUuOTI1LDEwMi4wOTggQzY3LjgxOSwxMDIuMTgxIDY5LjIyNywxMDMuMTM2IDY5LjA3LDEwNC4yMyBMMTQ4LjMyNyw1OC40NzEiIGlkPSJGaWxsLTQiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNjkuMDcsMTA0LjM0NyBDNjkuMDQ4LDEwNC4zNDcgNjkuMDI1LDEwNC4zNCA2OS4wMDUsMTA0LjMyNyBDNjguOTY4LDEwNC4zMDEgNjguOTQ4LDEwNC4yNTcgNjguOTU1LDEwNC4yMTMgQzY5LDEwMy44OTYgNjguODk4LDEwMy41NzYgNjguNjU4LDEwMy4yODggQzY4LjE1MywxMDIuNjc4IDY3LjEwMywxMDIuMjY2IDY1LjkyLDEwMi4yMTQgQzY1Ljc0MiwxMDIuMjA2IDY1LjU2MywxMDIuMjA3IDY1LjM4NSwxMDIuMjE1IEM2NC43NDIsMTAyLjI0NiA2NC4wODcsMTAyLjIzMiA2My40NSwxMDIuMTc0IEM2My4zOTksMTAyLjE2OSA2My4zNTgsMTAyLjEzMiA2My4zNDcsMTAyLjA4MiBDNjMuMzM2LDEwMi4wMzMgNjMuMzU4LDEwMS45ODEgNjMuNDAyLDEwMS45NTYgTDE0NC41MDYsNTUuMTM0IEMxNDQuNTM3LDU1LjExNiAxNDQuNTc1LDU1LjExMyAxNDQuNjA5LDU1LjEyNyBDMTQ0LjY0Miw1NS4xNDEgMTQ0LjY2OCw1NS4xNyAxNDQuNjc3LDU1LjIwNCBDMTQ0Ljc4MSw1NS41ODUgMTQ0LjgwNiw1NS45NzIgMTQ0Ljc1MSw1Ni4zNTcgQzE0NC43MDYsNTYuNjczIDE0NC44MDgsNTYuOTk0IDE0NS4wNDcsNTcuMjgyIEMxNDUuNTUzLDU3Ljg5MiAxNDYuNjAyLDU4LjMwMyAxNDcuNzg2LDU4LjM1NSBDMTQ3Ljk2NCw1OC4zNjMgMTQ4LjE0Myw1OC4zNjMgMTQ4LjMyMSw1OC4zNTQgQzE0OC4zNzcsNTguMzUyIDE0OC40MjQsNTguMzg3IDE0OC40MzksNTguNDM4IEMxNDguNDU0LDU4LjQ5IDE0OC40MzIsNTguNTQ1IDE0OC4zODUsNTguNTcyIEw2OS4xMjksMTA0LjMzMSBDNjkuMTExLDEwNC4zNDIgNjkuMDksMTA0LjM0NyA2OS4wNywxMDQuMzQ3IEw2OS4wNywxMDQuMzQ3IFogTTY1LjY2NSwxMDEuOTc1IEM2NS43NTQsMTAxLjk3NSA2NS44NDIsMTAxLjk3NyA2NS45MywxMDEuOTgxIEM2Ny4xOTYsMTAyLjAzNyA2OC4yODMsMTAyLjQ2OSA2OC44MzgsMTAzLjEzOSBDNjkuMDY1LDEwMy40MTMgNjkuMTg4LDEwMy43MTQgNjkuMTk4LDEwNC4wMjEgTDE0Ny44ODMsNTguNTkyIEMxNDcuODQ3LDU4LjU5MiAxNDcuODExLDU4LjU5MSAxNDcuNzc2LDU4LjU4OSBDMTQ2LjUwOSw1OC41MzMgMTQ1LjQyMiw1OC4xIDE0NC44NjcsNTcuNDMxIEMxNDQuNTg1LDU3LjA5MSAxNDQuNDY1LDU2LjcwNyAxNDQuNTIsNTYuMzI0IEMxNDQuNTYzLDU2LjAyMSAxNDQuNTUyLDU1LjcxNiAxNDQuNDg4LDU1LjQxNCBMNjMuODQ2LDEwMS45NyBDNjQuMzUzLDEwMi4wMDIgNjQuODY3LDEwMi4wMDYgNjUuMzc0LDEwMS45ODIgQzY1LjQ3MSwxMDEuOTc3IDY1LjU2OCwxMDEuOTc1IDY1LjY2NSwxMDEuOTc1IEw2NS42NjUsMTAxLjk3NSBaIiBpZD0iRmlsbC01IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIuMjA4LDU1LjEzNCBDMS4yMDcsNTMuMzA3IDEuOTY3LDUwLjkxNyAzLjkwNiw0OS43OTcgTDU5LjkxNywxNy40NTMgQzYxLjg1NiwxNi4zMzMgNjQuMjQxLDE2LjkwNyA2NS4yNDMsMTguNzM0IEw2NS40NzUsMTkuMTQ0IEM2NS44NzIsMTkuODgyIDY2LjM2OCwyMC41NiA2Ni45NDUsMjEuMTY1IEw2Ny4yMjMsMjEuNDM1IEM3MC41NDgsMjQuNjQ5IDc1LjgwNiwyNS4xNTEgODAuMTExLDIyLjY2NSBMODcuNDMsMTguNDQ1IEM4OS4zNywxNy4zMjYgOTEuNzU0LDE3Ljg5OSA5Mi43NTUsMTkuNzI3IEw5Ni4wMDUsMjUuNjU1IEwxMi40ODYsNzMuODg0IEwyLjIwOCw1NS4xMzQgWiIgaWQ9IkZpbGwtNiIgZmlsbD0iI0ZBRkFGQSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi40ODYsNzQuMDAxIEMxMi40NzYsNzQuMDAxIDEyLjQ2NSw3My45OTkgMTIuNDU1LDczLjk5NiBDMTIuNDI0LDczLjk4OCAxMi4zOTksNzMuOTY3IDEyLjM4NCw3My45NCBMMi4xMDYsNTUuMTkgQzEuMDc1LDUzLjMxIDEuODU3LDUwLjg0NSAzLjg0OCw0OS42OTYgTDU5Ljg1OCwxNy4zNTIgQzYwLjUyNSwxNi45NjcgNjEuMjcxLDE2Ljc2NCA2Mi4wMTYsMTYuNzY0IEM2My40MzEsMTYuNzY0IDY0LjY2NiwxNy40NjYgNjUuMzI3LDE4LjY0NiBDNjUuMzM3LDE4LjY1NCA2NS4zNDUsMTguNjYzIDY1LjM1MSwxOC42NzQgTDY1LjU3OCwxOS4wODggQzY1LjU4NCwxOS4xIDY1LjU4OSwxOS4xMTIgNjUuNTkxLDE5LjEyNiBDNjUuOTg1LDE5LjgzOCA2Ni40NjksMjAuNDk3IDY3LjAzLDIxLjA4NSBMNjcuMzA1LDIxLjM1MSBDNjkuMTUxLDIzLjEzNyA3MS42NDksMjQuMTIgNzQuMzM2LDI0LjEyIEM3Ni4zMTMsMjQuMTIgNzguMjksMjMuNTgyIDgwLjA1MywyMi41NjMgQzgwLjA2NCwyMi41NTcgODAuMDc2LDIyLjU1MyA4MC4wODgsMjIuNTUgTDg3LjM3MiwxOC4zNDQgQzg4LjAzOCwxNy45NTkgODguNzg0LDE3Ljc1NiA4OS41MjksMTcuNzU2IEM5MC45NTYsMTcuNzU2IDkyLjIwMSwxOC40NzIgOTIuODU4LDE5LjY3IEw5Ni4xMDcsMjUuNTk5IEM5Ni4xMzgsMjUuNjU0IDk2LjExOCwyNS43MjQgOTYuMDYzLDI1Ljc1NiBMMTIuNTQ1LDczLjk4NSBDMTIuNTI2LDczLjk5NiAxMi41MDYsNzQuMDAxIDEyLjQ4Niw3NC4wMDEgTDEyLjQ4Niw3NC4wMDEgWiBNNjIuMDE2LDE2Ljk5NyBDNjEuMzEyLDE2Ljk5NyA2MC42MDYsMTcuMTkgNTkuOTc1LDE3LjU1NCBMMy45NjUsNDkuODk5IEMyLjA4Myw1MC45ODUgMS4zNDEsNTMuMzA4IDIuMzEsNTUuMDc4IEwxMi41MzEsNzMuNzIzIEw5NS44NDgsMjUuNjExIEw5Mi42NTMsMTkuNzgyIEM5Mi4wMzgsMTguNjYgOTAuODcsMTcuOTkgODkuNTI5LDE3Ljk5IEM4OC44MjUsMTcuOTkgODguMTE5LDE4LjE4MiA4Ny40ODksMTguNTQ3IEw4MC4xNzIsMjIuNzcyIEM4MC4xNjEsMjIuNzc4IDgwLjE0OSwyMi43ODIgODAuMTM3LDIyLjc4NSBDNzguMzQ2LDIzLjgxMSA3Ni4zNDEsMjQuMzU0IDc0LjMzNiwyNC4zNTQgQzcxLjU4OCwyNC4zNTQgNjkuMDMzLDIzLjM0NyA2Ny4xNDIsMjEuNTE5IEw2Ni44NjQsMjEuMjQ5IEM2Ni4yNzcsMjAuNjM0IDY1Ljc3NCwxOS45NDcgNjUuMzY3LDE5LjIwMyBDNjUuMzYsMTkuMTkyIDY1LjM1NiwxOS4xNzkgNjUuMzU0LDE5LjE2NiBMNjUuMTYzLDE4LjgxOSBDNjUuMTU0LDE4LjgxMSA2NS4xNDYsMTguODAxIDY1LjE0LDE4Ljc5IEM2NC41MjUsMTcuNjY3IDYzLjM1NywxNi45OTcgNjIuMDE2LDE2Ljk5NyBMNjIuMDE2LDE2Ljk5NyBaIiBpZD0iRmlsbC03IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQyLjQzNCw0OC44MDggTDQyLjQzNCw0OC44MDggQzM5LjkyNCw0OC44MDcgMzcuNzM3LDQ3LjU1IDM2LjU4Miw0NS40NDMgQzM0Ljc3MSw0Mi4xMzkgMzYuMTQ0LDM3LjgwOSAzOS42NDEsMzUuNzg5IEw1MS45MzIsMjguNjkxIEM1My4xMDMsMjguMDE1IDU0LjQxMywyNy42NTggNTUuNzIxLDI3LjY1OCBDNTguMjMxLDI3LjY1OCA2MC40MTgsMjguOTE2IDYxLjU3MywzMS4wMjMgQzYzLjM4NCwzNC4zMjcgNjIuMDEyLDM4LjY1NyA1OC41MTQsNDAuNjc3IEw0Ni4yMjMsNDcuNzc1IEM0NS4wNTMsNDguNDUgNDMuNzQyLDQ4LjgwOCA0Mi40MzQsNDguODA4IEw0Mi40MzQsNDguODA4IFogTTU1LjcyMSwyOC4xMjUgQzU0LjQ5NSwyOC4xMjUgNTMuMjY1LDI4LjQ2MSA1Mi4xNjYsMjkuMDk2IEwzOS44NzUsMzYuMTk0IEMzNi41OTYsMzguMDg3IDM1LjMwMiw0Mi4xMzYgMzYuOTkyLDQ1LjIxOCBDMzguMDYzLDQ3LjE3MyA0MC4wOTgsNDguMzQgNDIuNDM0LDQ4LjM0IEM0My42NjEsNDguMzQgNDQuODksNDguMDA1IDQ1Ljk5LDQ3LjM3IEw1OC4yODEsNDAuMjcyIEM2MS41NiwzOC4zNzkgNjIuODUzLDM0LjMzIDYxLjE2NCwzMS4yNDggQzYwLjA5MiwyOS4yOTMgNTguMDU4LDI4LjEyNSA1NS43MjEsMjguMTI1IEw1NS43MjEsMjguMTI1IFoiIGlkPSJGaWxsLTgiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTQ5LjU4OCwyLjQwNyBDMTQ5LjU4OCwyLjQwNyAxNTUuNzY4LDUuOTc1IDE1Ni4zMjUsNi4yOTcgTDE1Ni4zMjUsNy4xODQgQzE1Ni4zMjUsNy4zNiAxNTYuMzM4LDcuNTQ0IDE1Ni4zNjIsNy43MzMgQzE1Ni4zNzMsNy44MTQgMTU2LjM4Miw3Ljg5NCAxNTYuMzksNy45NzUgQzE1Ni41Myw5LjM5IDE1Ny4zNjMsMTAuOTczIDE1OC40OTUsMTEuOTc0IEwxNjUuODkxLDE4LjUxOSBDMTY2LjA2OCwxOC42NzUgMTY2LjI0OSwxOC44MTQgMTY2LjQzMiwxOC45MzQgQzE2OC4wMTEsMTkuOTc0IDE2OS4zODIsMTkuNCAxNjkuNDk0LDE3LjY1MiBDMTY5LjU0MywxNi44NjggMTY5LjU1MSwxNi4wNTcgMTY5LjUxNywxNS4yMjMgTDE2OS41MTQsMTUuMDYzIEwxNjkuNTE0LDEzLjkxMiBDMTcwLjc4LDE0LjY0MiAxOTUuNTAxLDI4LjkxNSAxOTUuNTAxLDI4LjkxNSBMMTk1LjUwMSw4Mi45MTUgQzE5NS41MDEsODQuMDA1IDE5NC43MzEsODQuNDQ1IDE5My43ODEsODMuODk3IEwxNTEuMzA4LDU5LjM3NCBDMTUwLjM1OCw1OC44MjYgMTQ5LjU4OCw1Ny40OTcgMTQ5LjU4OCw1Ni40MDggTDE0OS41ODgsMjIuMzc1IiBpZD0iRmlsbC05IiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE5NC41NTMsODQuMjUgQzE5NC4yOTYsODQuMjUgMTk0LjAxMyw4NC4xNjUgMTkzLjcyMiw4My45OTcgTDE1MS4yNSw1OS40NzYgQzE1MC4yNjksNTguOTA5IDE0OS40NzEsNTcuNTMzIDE0OS40NzEsNTYuNDA4IEwxNDkuNDcxLDIyLjM3NSBMMTQ5LjcwNSwyMi4zNzUgTDE0OS43MDUsNTYuNDA4IEMxNDkuNzA1LDU3LjQ1OSAxNTAuNDUsNTguNzQ0IDE1MS4zNjYsNTkuMjc0IEwxOTMuODM5LDgzLjc5NSBDMTk0LjI2Myw4NC4wNCAxOTQuNjU1LDg0LjA4MyAxOTQuOTQyLDgzLjkxNyBDMTk1LjIyNyw4My43NTMgMTk1LjM4NCw4My4zOTcgMTk1LjM4NCw4Mi45MTUgTDE5NS4zODQsMjguOTgyIEMxOTQuMTAyLDI4LjI0MiAxNzIuMTA0LDE1LjU0MiAxNjkuNjMxLDE0LjExNCBMMTY5LjYzNCwxNS4yMiBDMTY5LjY2OCwxNi4wNTIgMTY5LjY2LDE2Ljg3NCAxNjkuNjEsMTcuNjU5IEMxNjkuNTU2LDE4LjUwMyAxNjkuMjE0LDE
32575LjEyMyAxNjguNjQ3LDE5LjQwNSBDMTY4LjAyOCwxOS43MTQgMTY3LjE5NywxOS41NzggMTY2LjM2NywxOS4wMzIgQzE2Ni4xODEsMTguOTA5IDE2NS45OTUsMTguNzY2IDE2NS44MTQsMTguNjA2IEwxNTguNDE3LDEyLjA2MiBDMTU3LjI1OSwxMS4wMzYgMTU2LjQxOCw5LjQzNyAxNTYuMjc0LDcuOTg2IEMxNTYuMjY2LDcuOTA3IDE1Ni4yNTcsNy44MjcgMTU2LjI0Nyw3Ljc0OCBDMTU2LjIyMSw3LjU1NSAxNTYuMjA5LDcuMzY1IDE1Ni4yMDksNy4xODQgTDE1Ni4yMDksNi4zNjQgQzE1NS4zNzUsNS44ODMgMTQ5LjUyOSwyLjUwOCAxNDkuNTI5LDIuNTA4IEwxNDkuNjQ2LDIuMzA2IEMxNDkuNjQ2LDIuMzA2IDE1NS44MjcsNS44NzQgMTU2LjM4NCw2LjE5NiBMMTU2LjQ0Miw2LjIzIEwxNTYuNDQyLDcuMTg0IEMxNTYuNDQyLDcuMzU1IDE1Ni40NTQsNy41MzUgMTU2LjQ3OCw3LjcxNyBDMTU2LjQ4OSw3LjggMTU2LjQ5OSw3Ljg4MiAxNTYuNTA3LDcuOTYzIEMxNTYuNjQ1LDkuMzU4IDE1Ny40NTUsMTAuODk4IDE1OC41NzIsMTEuODg2IEwxNjUuOTY5LDE4LjQzMSBDMTY2LjE0MiwxOC41ODQgMTY2LjMxOSwxOC43MiAxNjYuNDk2LDE4LjgzNyBDMTY3LjI1NCwxOS4zMzYgMTY4LDE5LjQ2NyAxNjguNTQzLDE5LjE5NiBDMTY5LjAzMywxOC45NTMgMTY5LjMyOSwxOC40MDEgMTY5LjM3NywxNy42NDUgQzE2OS40MjcsMTYuODY3IDE2OS40MzQsMTYuMDU0IDE2OS40MDEsMTUuMjI4IEwxNjkuMzk3LDE1LjA2NSBMMTY5LjM5NywxMy43MSBMMTY5LjU3MiwxMy44MSBDMTcwLjgzOSwxNC41NDEgMTk1LjU1OSwyOC44MTQgMTk1LjU1OSwyOC44MTQgTDE5NS42MTgsMjguODQ3IEwxOTUuNjE4LDgyLjkxNSBDMTk1LjYxOCw4My40ODQgMTk1LjQyLDgzLjkxMSAxOTUuMDU5LDg0LjExOSBDMTk0LjkwOCw4NC4yMDYgMTk0LjczNyw4NC4yNSAxOTQuNTUzLDg0LjI1IiBpZD0iRmlsbC0xMCIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDUuNjg1LDU2LjE2MSBMMTY5LjgsNzAuMDgzIEwxNDMuODIyLDg1LjA4MSBMMTQyLjM2LDg0Ljc3NCBDMTM1LjgyNiw4Mi42MDQgMTI4LjczMiw4MS4wNDYgMTIxLjM0MSw4MC4xNTggQzExNi45NzYsNzkuNjM0IDExMi42NzgsODEuMjU0IDExMS43NDMsODMuNzc4IEMxMTEuNTA2LDg0LjQxNCAxMTEuNTAzLDg1LjA3MSAxMTEuNzMyLDg1LjcwNiBDMTEzLjI3LDg5Ljk3MyAxMTUuOTY4LDk0LjA2OSAxMTkuNzI3LDk3Ljg0MSBMMTIwLjI1OSw5OC42ODYgQzEyMC4yNiw5OC42ODUgOTQuMjgyLDExMy42ODMgOTQuMjgyLDExMy42ODMgTDcwLjE2Nyw5OS43NjEgTDE0NS42ODUsNTYuMTYxIiBpZD0iRmlsbC0xMSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik05NC4yODIsMTEzLjgxOCBMOTQuMjIzLDExMy43ODUgTDY5LjkzMyw5OS43NjEgTDcwLjEwOCw5OS42NiBMMTQ1LjY4NSw1Ni4wMjYgTDE0NS43NDMsNTYuMDU5IEwxNzAuMDMzLDcwLjA4MyBMMTQzLjg0Miw4NS4yMDUgTDE0My43OTcsODUuMTk1IEMxNDMuNzcyLDg1LjE5IDE0Mi4zMzYsODQuODg4IDE0Mi4zMzYsODQuODg4IEMxMzUuNzg3LDgyLjcxNCAxMjguNzIzLDgxLjE2MyAxMjEuMzI3LDgwLjI3NCBDMTIwLjc4OCw4MC4yMDkgMTIwLjIzNiw4MC4xNzcgMTE5LjY4OSw4MC4xNzcgQzExNS45MzEsODAuMTc3IDExMi42MzUsODEuNzA4IDExMS44NTIsODMuODE5IEMxMTEuNjI0LDg0LjQzMiAxMTEuNjIxLDg1LjA1MyAxMTEuODQyLDg1LjY2NyBDMTEzLjM3Nyw4OS45MjUgMTE2LjA1OCw5My45OTMgMTE5LjgxLDk3Ljc1OCBMMTE5LjgyNiw5Ny43NzkgTDEyMC4zNTIsOTguNjE0IEMxMjAuMzU0LDk4LjYxNyAxMjAuMzU2LDk4LjYyIDEyMC4zNTgsOTguNjI0IEwxMjAuNDIyLDk4LjcyNiBMMTIwLjMxNyw5OC43ODcgQzEyMC4yNjQsOTguODE4IDk0LjU5OSwxMTMuNjM1IDk0LjM0LDExMy43ODUgTDk0LjI4MiwxMTMuODE4IEw5NC4yODIsMTEzLjgxOCBaIE03MC40MDEsOTkuNzYxIEw5NC4yODIsMTEzLjU0OSBMMTE5LjA4NCw5OS4yMjkgQzExOS42Myw5OC45MTQgMTE5LjkzLDk4Ljc0IDEyMC4xMDEsOTguNjU0IEwxMTkuNjM1LDk3LjkxNCBDMTE1Ljg2NCw5NC4xMjcgMTEzLjE2OCw5MC4wMzMgMTExLjYyMiw4NS43NDYgQzExMS4zODIsODUuMDc5IDExMS4zODYsODQuNDA0IDExMS42MzMsODMuNzM4IEMxMTIuNDQ4LDgxLjUzOSAxMTUuODM2LDc5Ljk0MyAxMTkuNjg5LDc5Ljk0MyBDMTIwLjI0Niw3OS45NDMgMTIwLjgwNiw3OS45NzYgMTIxLjM1NSw4MC4wNDIgQzEyOC43NjcsODAuOTMzIDEzNS44NDYsODIuNDg3IDE0Mi4zOTYsODQuNjYzIEMxNDMuMjMyLDg0LjgzOCAxNDMuNjExLDg0LjkxNyAxNDMuNzg2LDg0Ljk2NyBMMTY5LjU2Niw3MC4wODMgTDE0NS42ODUsNTYuMjk1IEw3MC40MDEsOTkuNzYxIEw3MC40MDEsOTkuNzYxIFoiIGlkPSJGaWxsLTEyIiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2Ny4yMywxOC45NzkgTDE2Ny4yMyw2OS44NSBMMTM5LjkwOSw4NS42MjMgTDEzMy40NDgsNzEuNDU2IEMxMzIuNTM4LDY5LjQ2IDEzMC4wMiw2OS43MTggMTI3LjgyNCw3Mi4wMyBDMTI2Ljc2OSw3My4xNCAxMjUuOTMxLDc0LjU4NSAxMjUuNDk0LDc2LjA0OCBMMTE5LjAzNCw5Ny42NzYgTDkxLjcxMiwxMTMuNDUgTDkxLjcxMiw2Mi41NzkgTDE2Ny4yMywxOC45NzkiIGlkPSJGaWxsLTEzIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTkxLjcxMiwxMTMuNTY3IEM5MS42OTIsMTEzLjU2NyA5MS42NzIsMTEzLjU2MSA5MS42NTMsMTEzLjU1MSBDOTEuNjE4LDExMy41MyA5MS41OTUsMTEzLjQ5MiA5MS41OTUsMTEzLjQ1IEw5MS41OTUsNjIuNTc5IEM5MS41OTUsNjIuNTM3IDkxLjYxOCw2Mi40OTkgOTEuNjUzLDYyLjQ3OCBMMTY3LjE3MiwxOC44NzggQzE2Ny4yMDgsMTguODU3IDE2Ny4yNTIsMTguODU3IDE2Ny4yODgsMTguODc4IEMxNjcuMzI0LDE4Ljg5OSAxNjcuMzQ3LDE4LjkzNyAxNjcuMzQ3LDE4Ljk3OSBMMTY3LjM0Nyw2OS44NSBDMTY3LjM0Nyw2OS44OTEgMTY3LjMyNCw2OS45MyAxNjcuMjg4LDY5Ljk1IEwxMzkuOTY3LDg1LjcyNSBDMTM5LjkzOSw4NS43NDEgMTM5LjkwNSw4NS43NDUgMTM5Ljg3Myw4NS43MzUgQzEzOS44NDIsODUuNzI1IDEzOS44MTYsODUuNzAyIDEzOS44MDIsODUuNjcyIEwxMzMuMzQyLDcxLjUwNCBDMTMyLjk2Nyw3MC42ODIgMTMyLjI4LDcwLjIyOSAxMzEuNDA4LDcwLjIyOSBDMTMwLjMxOSw3MC4yMjkgMTI5LjA0NCw3MC45MTUgMTI3LjkwOCw3Mi4xMSBDMTI2Ljg3NCw3My4yIDEyNi4wMzQsNzQuNjQ3IDEyNS42MDYsNzYuMDgyIEwxMTkuMTQ2LDk3LjcwOSBDMTE5LjEzNyw5Ny43MzggMTE5LjExOCw5Ny43NjIgMTE5LjA5Miw5Ny43NzcgTDkxLjc3LDExMy41NTEgQzkxLjc1MiwxMTMuNTYxIDkxLjczMiwxMTMuNTY3IDkxLjcxMiwxMTMuNTY3IEw5MS43MTIsMTEzLjU2NyBaIE05MS44MjksNjIuNjQ3IEw5MS44MjksMTEzLjI0OCBMMTE4LjkzNSw5Ny41OTggTDEyNS4zODIsNzYuMDE1IEMxMjUuODI3LDc0LjUyNSAxMjYuNjY0LDczLjA4MSAxMjcuNzM5LDcxLjk1IEM
3257xMjguOTE5LDcwLjcwOCAxMzAuMjU2LDY5Ljk5NiAxMzEuNDA4LDY5Ljk5NiBDMTMyLjM3Nyw2OS45OTYgMTMzLjEzOSw3MC40OTcgMTMzLjU1NCw3MS40MDcgTDEzOS45NjEsODUuNDU4IEwxNjcuMTEzLDY5Ljc4MiBMMTY3LjExMywxOS4xODEgTDkxLjgyOSw2Mi42NDcgTDkxLjgyOSw2Mi42NDcgWiIgaWQ9IkZpbGwtMTQiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTY4LjU0MywxOS4yMTMgTDE2OC41NDMsNzAuMDgzIEwxNDEuMjIxLDg1Ljg1NyBMMTM0Ljc2MSw3MS42ODkgQzEzMy44NTEsNjkuNjk0IDEzMS4zMzMsNjkuOTUxIDEyOS4xMzcsNzIuMjYzIEMxMjguMDgyLDczLjM3NCAxMjcuMjQ0LDc0LjgxOSAxMjYuODA3LDc2LjI4MiBMMTIwLjM0Niw5Ny45MDkgTDkzLjAyNSwxMTMuNjgzIEw5My4wMjUsNjIuODEzIEwxNjguNTQzLDE5LjIxMyIgaWQ9IkZpbGwtMTUiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTMuMDI1LDExMy44IEM5My4wMDUsMTEzLjggOTIuOTg0LDExMy43OTUgOTIuOTY2LDExMy43ODUgQzkyLjkzMSwxMTMuNzY0IDkyLjkwOCwxMTMuNzI1IDkyLjkwOCwxMTMuNjg0IEw5Mi45MDgsNjIuODEzIEM5Mi45MDgsNjIuNzcxIDkyLjkzMSw2Mi43MzMgOTIuOTY2LDYyLjcxMiBMMTY4LjQ4NCwxOS4xMTIgQzE2OC41MiwxOS4wOSAxNjguNTY1LDE5LjA5IDE2OC42MDEsMTkuMTEyIEMxNjguNjM3LDE5LjEzMiAxNjguNjYsMTkuMTcxIDE2OC42NiwxOS4yMTIgTDE2OC42Niw3MC4wODMgQzE2OC42Niw3MC4xMjUgMTY4LjYzNyw3MC4xNjQgMTY4LjYwMSw3MC4xODQgTDE0MS4yOCw4NS45NTggQzE0MS4yNTEsODUuOTc1IDE0MS4yMTcsODUuOTc5IDE0MS4xODYsODUuOTY4IEMxNDEuMTU0LDg1Ljk1OCAxNDEuMTI5LDg1LjkzNiAxNDEuMTE1LDg1LjkwNiBMMTM0LjY1NSw3MS43MzggQzEzNC4yOCw3MC45MTUgMTMzLjU5Myw3MC40NjMgMTMyLjcyLDcwLjQ2MyBDMTMxLjYzMiw3MC40NjMgMTMwLjM1Nyw3MS4xNDggMTI5LjIyMSw3Mi4zNDQgQzEyOC4xODYsNzMuNDMzIDEyNy4zNDcsNzQuODgxIDEyNi45MTksNzYuMzE1IEwxMjAuNDU4LDk3Ljk0MyBDMTIwLjQ1LDk3Ljk3MiAxMjAuNDMxLDk3Ljk5NiAxMjAuNDA1LDk4LjAxIEw5My4wODMsMTEzLjc4NSBDOTMuMDY1LDExMy43OTUgOTMuMDQ1LDExMy44IDkzLjAyNSwxMTMuOCBMOTMuMDI1LDExMy44IFogTTkzLjE0Miw2Mi44ODEgTDkzLjE0MiwxMTMuNDgxIEwxMjAuMjQ4LDk3LjgzMiBMMTI2LjY5NSw3Ni4yNDggQzEyNy4xNCw3NC43NTggMTI3Ljk3Nyw3My4zMTUgMTI5LjA1Miw3Mi4xODMgQzEzMC4yMzEsNzAuOTQyIDEzMS41NjgsNzAuMjI5IDEzMi43Miw3MC4yMjkgQzEzMy42ODksNzAuMjI5IDEzNC40NTIsNzAuNzMxIDEzNC44NjcsNzEuNjQxIEwxNDEuMjc0LDg1LjY5MiBMMTY4LjQyNiw3MC4wMTYgTDE2OC40MjYsMTkuNDE1IEw5My4xNDIsNjIuODgxIEw5My4xNDIsNjIuODgxIFoiIGlkPSJGaWxsLTE2IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2OS44LDcwLjA4MyBMMTQyLjQ3OCw4NS44NTcgTDEzNi4wMTgsNzEuNjg5IEMxMzUuMTA4LDY5LjY5NCAxMzIuNTksNjkuOTUxIDEzMC4zOTMsNzIuMjYzIEMxMjkuMzM5LDczLjM3NCAxMjguNSw3NC44MTkgMTI4LjA2NCw3Ni4yODIgTDEyMS42MDMsOTcuOTA5IEw5NC4yODIsMTEzLjY4MyBMOTQuMjgyLDYyLjgxMyBMMTY5LjgsMTkuMjEzIEwxNjkuOCw3MC4wODMgWiIgaWQ9IkZpbGwtMTciIGZpbGw9IiNGQUZBRkEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTQuMjgyLDExMy45MTcgQzk0LjI0MSwxMTMuOTE3IDk0LjIwMSwxMTMuOTA3IDk0LjE2NSwxMTMuODg2IEM5NC4wOTMsMTEzLjg0NSA5NC4wNDgsMTEzLjc2NyA5NC4wNDgsMTEzLjY4NCBMOTQuMDQ4LDYyLjgxMyBDOTQuMDQ4LDYyLjczIDk0LjA5Myw2Mi42NTIgOTQuMTY1LDYyLjYxMSBMMTY5LjY4MywxOS4wMSBDMTY5Ljc1NSwxOC45NjkgMTY5Ljg0NCwxOC45NjkgMTY5LjkxNywxOS4wMSBDMTY5Ljk4OSwxOS4wNTIgMTcwLjAzMywxOS4xMjkgMTcwLjAzMywxOS4yMTIgTDE3MC4wMzMsNzAuMDgzIEMxNzAuMDMzLDcwLjE2NiAxNjkuOTg5LDcwLjI0NCAxNjkuOTE3LDcwLjI4NSBMMTQyLjU5NSw4Ni4wNiBDMTQyLjUzOCw4Ni4wOTIgMTQyLjQ2OSw4Ni4xIDE0Mi40MDcsODYuMDggQzE0Mi4zNDQsODYuMDYgMTQyLjI5Myw4Ni4wMTQgMTQyLjI2Niw4NS45NTQgTDEzNS44MDUsNzEuNzg2IEMxMzUuNDQ1LDcwLjk5NyAxMzQuODEzLDcwLjU4IDEzMy45NzcsNzAuNTggQzEzMi45MjEsNzAuNTggMTMxLjY3Niw3MS4yNTIgMTMwLjU2Miw3Mi40MjQgQzEyOS41NCw3My41MDEgMTI4LjcxMSw3NC45MzEgMTI4LjI4Nyw3Ni4zNDggTDEyMS44MjcsOTcuOTc2IEMxMjEuODEsOTguMDM0IDEyMS43NzEsOTguMDgyIDEyMS43Miw5OC4xMTIgTDk0LjM5OCwxMTMuODg2IEM5NC4zNjIsMTEzLjkwNyA5NC4zMjIsMTEzLjkxNyA5NC4yODIsMTEzLjkxNyBMOTQuMjgyLDExMy45MTcgWiBNOTQuNTE1LDYyLjk0OCBMOTQuNTE1LDExMy4yNzkgTDEyMS40MDYsOTcuNzU0IEwxMjcuODQsNzYuMjE1IEMxMjguMjksNzQuNzA4IDEyOS4xMzcsNzMuMjQ3IDEzMC4yMjQsNzIuMTAzIEMxMzEuNDI1LDcwLjgzOCAxMzIuNzkzLDcwLjExMiAxMzMuOTc3LDcwLjExMiBDMTM0Ljk5NSw3MC4xMTIgMTM1Ljc5NSw3MC42MzggMTM2LjIzLDcxLjU5MiBMMTQyLjU4NCw4NS41MjYgTDE2OS41NjYsNjkuOTQ4IEwxNjkuNTY2LDE5LjYxNyBMOTQuNTE1LDYyLjk0OCBMOTQuNTE1LDYyLjk0OCBaIiBpZD0iRmlsbC0xOCIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMDkuODk0LDkyLjk0MyBMMTA5Ljg5NCw5Mi45NDMgQzEwOC4xMiw5Mi45NDMgMTA2LjY1Myw5Mi4yMTggMTA1LjY1LDkwLjgyMyBDMTA1LjU4Myw5MC43MzEgMTA1LjU5Myw5MC42MSAxMDUuNjczLDkwLjUyOSBDMTA1Ljc1Myw5MC40NDggMTA1Ljg4LDkwLjQ0IDEwNS45NzQsOTAuNTA2IEMxMDYuNzU0LDkxLjA1MyAxMDcuNjc5LDkxLjMzMyAxMDguNzI0LDkxLjMzMyBDMTEwLjA0Nyw5MS4zMzMgMTExLjQ3OCw5MC44OTQgMTEyLjk4LDkwLjAyNyBDMTE4LjI5MSw4Ni45NiAxMjIuNjExLDc5LjUwOSAxMjIuNjExLDczLjQxNiBDMTIyLjYxMSw3MS40ODkgMTIyLjE2OSw2OS44NTYgMTIxLjMzMyw2OC42OTIgQzEyMS4yNjYsNjguNiAxMjEuMjc2LDY4LjQ3MyAxMjEuMzU2LDY4LjM5MiBDMTIxLjQzNiw2OC4zMTEgMTIxLjU2Myw2OC4yOTkgMTIxLjY1Niw2OC4zNjUgQzEyMy4zMjcsNjkuNTM3IDEyNC4yNDcsNzEuNzQ2IDEyNC4yNDcsNzQuNTg0IEMxMjQuMjQ3LDgwLjgyNiAxMTkuODIxLDg4LjQ0NyAxMTQuMzgyLDkxLjU4NyBDMTEyLjgwOCw5Mi40OTUgMTExLjI5OCw5Mi45NDMgMTA5Ljg5NCw5Mi45NDMgTDEwOS44OTQsOTIuOTQzIFogTTEwNi45MjUsOTEuNDAxIEMxMDcuNzM4LDkyLjA1MiAxMDguNzQ1LDkyLjI3OCAxMDkuODkzLDkyLjI3OCBMMTA5Ljg5NCw5Mi4yNzggQzExMS4y
3257MTUsOTIuMjc4IDExMi42NDcsOTEuOTUxIDExNC4xNDgsOTEuMDg0IEMxMTkuNDU5LDg4LjAxNyAxMjMuNzgsODAuNjIxIDEyMy43OCw3NC41MjggQzEyMy43OCw3Mi41NDkgMTIzLjMxNyw3MC45MjkgMTIyLjQ1NCw2OS43NjcgQzEyMi44NjUsNzAuODAyIDEyMy4wNzksNzIuMDQyIDEyMy4wNzksNzMuNDAyIEMxMjMuMDc5LDc5LjY0NSAxMTguNjUzLDg3LjI4NSAxMTMuMjE0LDkwLjQyNSBDMTExLjY0LDkxLjMzNCAxMTAuMTMsOTEuNzQyIDEwOC43MjQsOTEuNzQyIEMxMDguMDgzLDkxLjc0MiAxMDcuNDgxLDkxLjU5MyAxMDYuOTI1LDkxLjQwMSBMMTA2LjkyNSw5MS40MDEgWiIgaWQ9IkZpbGwtMTkiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEzLjA5Nyw5MC4yMyBDMTE4LjQ4MSw4Ny4xMjIgMTIyLjg0NSw3OS41OTQgMTIyLjg0NSw3My40MTYgQzEyMi44NDUsNzEuMzY1IDEyMi4zNjIsNjkuNzI0IDEyMS41MjIsNjguNTU2IEMxMTkuNzM4LDY3LjMwNCAxMTcuMTQ4LDY3LjM2MiAxMTQuMjY1LDY5LjAyNiBDMTA4Ljg4MSw3Mi4xMzQgMTA0LjUxNyw3OS42NjIgMTA0LjUxNyw4NS44NCBDMTA0LjUxNyw4Ny44OTEgMTA1LDg5LjUzMiAxMDUuODQsOTAuNyBDMTA3LjYyNCw5MS45NTIgMTEwLjIxNCw5MS44OTQgMTEzLjA5Nyw5MC4yMyIgaWQ9IkZpbGwtMjAiIGZpbGw9IiNGQUZBRkEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA4LjcyNCw5MS42MTQgTDEwOC43MjQsOTEuNjE0IEMxMDcuNTgyLDkxLjYxNCAxMDYuNTY2LDkxLjQwMSAxMDUuNzA1LDkwLjc5NyBDMTA1LjY4NCw5MC43ODMgMTA1LjY2NSw5MC44MTEgMTA1LjY1LDkwLjc5IEMxMDQuNzU2LDg5LjU0NiAxMDQuMjgzLDg3Ljg0MiAxMDQuMjgzLDg1LjgxNyBDMTA0LjI4Myw3OS41NzUgMTA4LjcwOSw3MS45NTMgMTE0LjE0OCw2OC44MTIgQzExNS43MjIsNjcuOTA0IDExNy4yMzIsNjcuNDQ5IDExOC42MzgsNjcuNDQ5IEMxMTkuNzgsNjcuNDQ5IDEyMC43OTYsNjcuNzU4IDEyMS42NTYsNjguMzYyIEMxMjEuNjc4LDY4LjM3NyAxMjEuNjk3LDY4LjM5NyAxMjEuNzEyLDY4LjQxOCBDMTIyLjYwNiw2OS42NjIgMTIzLjA3OSw3MS4zOSAxMjMuMDc5LDczLjQxNSBDMTIzLjA3OSw3OS42NTggMTE4LjY1Myw4Ny4xOTggMTEzLjIxNCw5MC4zMzggQzExMS42NCw5MS4yNDcgMTEwLjEzLDkxLjYxNCAxMDguNzI0LDkxLjYxNCBMMTA4LjcyNCw5MS42MTQgWiBNMTA2LjAwNiw5MC41MDUgQzEwNi43OCw5MS4wMzcgMTA3LjY5NCw5MS4yODEgMTA4LjcyNCw5MS4yODEgQzExMC4wNDcsOTEuMjgxIDExMS40NzgsOTAuODY4IDExMi45OCw5MC4wMDEgQzExOC4yOTEsODYuOTM1IDEyMi42MTEsNzkuNDk2IDEyMi42MTEsNzMuNDAzIEMxMjIuNjExLDcxLjQ5NCAxMjIuMTc3LDY5Ljg4IDEyMS4zNTYsNjguNzE4IEMxMjAuNTgyLDY4LjE4NSAxMTkuNjY4LDY3LjkxOSAxMTguNjM4LDY3LjkxOSBDMTE3LjMxNSw2Ny45MTkgMTE1Ljg4Myw2OC4zNiAxMTQuMzgyLDY5LjIyNyBDMTA5LjA3MSw3Mi4yOTMgMTA0Ljc1MSw3OS43MzMgMTA0Ljc1MSw4NS44MjYgQzEwNC43NTEsODcuNzM1IDEwNS4xODUsODkuMzQzIDEwNi4wMDYsOTAuNTA1IEwxMDYuMDA2LDkwLjUwNSBaIiBpZD0iRmlsbC0yMSIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDkuMzE4LDcuMjYyIEwxMzkuMzM0LDE2LjE0IEwxNTUuMjI3LDI3LjE3MSBMMTYwLjgxNiwyMS4wNTkgTDE0OS4zMTgsNy4yNjIiIGlkPSJGaWxsLTIyIiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2OS42NzYsMTMuODQgTDE1OS45MjgsMTkuNDY3IEMxNTYuMjg2LDIxLjU3IDE1MC40LDIxLjU4IDE0Ni43ODEsMTkuNDkxIEMxNDMuMTYxLDE3LjQwMiAxNDMuMTgsMTQuMDAzIDE0Ni44MjIsMTEuOSBMMTU2LjMxNyw2LjI5MiBMMTQ5LjU4OCwyLjQwNyBMNjcuNzUyLDQ5LjQ3OCBMMTEzLjY3NSw3NS45OTIgTDExNi43NTYsNzQuMjEzIEMxMTcuMzg3LDczLjg0OCAxMTcuNjI1LDczLjMxNSAxMTcuMzc0LDcyLjgyMyBDMTE1LjAxNyw2OC4xOTEgMTE0Ljc4MSw2My4yNzcgMTE2LjY5MSw1OC41NjEgQzEyMi4zMjksNDQuNjQxIDE0MS4yLDMzLjc0NiAxNjUuMzA5LDMwLjQ5MSBDMTczLjQ3OCwyOS4zODggMTgxLjk4OSwyOS41MjQgMTkwLjAxMywzMC44ODUgQzE5MC44NjUsMzEuMDMgMTkxLjc4OSwzMC44OTMgMTkyLjQyLDMwLjUyOCBMMTk1LjUwMSwyOC43NSBMMTY5LjY3NiwxMy44NCIgaWQ9IkZpbGwtMjMiIGZpbGw9IiNGQUZBRkEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEzLjY3NSw3Ni40NTkgQzExMy41OTQsNzYuNDU5IDExMy41MTQsNzYuNDM4IDExMy40NDIsNzYuMzk3IEw2Ny41MTgsNDkuODgyIEM2Ny4zNzQsNDkuNzk5IDY3LjI4NCw0OS42NDUgNjcuMjg1LDQ5LjQ3OCBDNjcuMjg1LDQ5LjMxMSA2Ny4zNzQsNDkuMTU3IDY3LjUxOSw0OS4wNzMgTDE0OS4zNTUsMi4wMDIgQzE0OS40OTksMS45MTkgMTQ5LjY3NywxLjkxOSAxNDkuODIxLDIuMDAyIEwxNTYuNTUsNS44ODcgQzE1Ni43NzQsNi4wMTcgMTU2Ljg1LDYuMzAyIDE1Ni43MjIsNi41MjYgQzE1Ni41OTIsNi43NDkgMTU2LjMwNyw2LjgyNiAxNTYuMDgzLDYuNjk2IEwxNDkuNTg3LDIuOTQ2IEw2OC42ODcsNDkuNDc5IEwxMTMuNjc1LDc1LjQ1MiBMMTE2LjUyMyw3My44MDggQzExNi43MTUsNzMuNjk3IDExNy4xNDMsNzMuMzk5IDExNi45NTgsNzMuMDM1IEMxMTQuNTQyLDY4LjI4NyAxMTQuMyw2My4yMjEgMTE2LjI1OCw1OC4zODUgQzExOS4wNjQsNTEuNDU4IDEyNS4xNDMsNDUuMTQzIDEzMy44NCw0MC4xMjIgQzE0Mi40OTcsMzUuMTI0IDE1My4zNTgsMzEuNjMzIDE2NS4yNDcsMzAuMDI4IEMxNzMuNDQ1LDI4LjkyMSAxODIuMDM3LDI5LjA1OCAxOTAuMDkxLDMwLjQyNSBDMTkwLjgzLDMwLjU1IDE5MS42NTIsMzAuNDMyIDE5Mi4xODYsMzAuMTI0IEwxOTQuNTY3LDI4Ljc1IEwxNjkuNDQyLDE0LjI0NCBDMTY5LjIxOSwxNC4xMTUgMTY5LjE0MiwxMy44MjkgMTY5LjI3MSwxMy42MDYgQzE2OS40LDEzLjM4MiAxNjkuNjg1LDEzLjMwNiAxNjkuOTA5LDEzLjQzNSBMMTk1LjczNCwyOC4zNDUgQzE5NS44NzksMjguNDI4IDE5NS45NjgsMjguNTgzIDE5NS45NjgsMjguNzUgQzE5NS45NjgsMjguOTE2IDE5NS44NzksMjkuMDcxIDE5NS43MzQsMjkuMTU0IEwxOTIuNjUzLDMwLjkzMyBDMTkxLjkzMiwzMS4zNSAxOTAuODksMzEuNTA4IDE4OS45MzUsMzEuMzQ2IEMxODEuOTcyLDI5Ljk5NSAxNzMuNDc4LDI5Ljg2IDE2NS4zNzIsMzAuOTU0IEMxNTMuNjAyLDMyLjU0MyAxNDIuODYsMzUuOTkzIDEzNC4zMDcsNDAuOTMxIEMxMjUuNzkzLDQ1Ljg0NyAxMTkuODUxLDUyLjAwNCAxMTcuMTI0LDU4LjczNiBDMTE1LjI3LDYzLjMxNCAxMTUuNTAxLDY4LjExMiAxMTcuNzksNzIuNjExIEMxMTguMTYsNzMuMzM2IDExNy44NDUsNzQuMTI0IDExNi45OSw3NC42MTcgTDExMy45MDksNzYuMzk3IEMxMTMuODM2LDc2LjQzOCAxMTMuNzU2LDc2LjQ1OSAxMTMuNjc1LDc2LjQ1OSIgaWQ9IkZpbGwtMjQiIGZpbGw9IiM0NTVBNjQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTUzLjMxNiwyMS4yNzkgQzE1MC45MDMsMjEuMjc5IDE0OC40OTUsMjAuNzUxIDE0Ni42NjQsMTkuNjkzIEMxNDQuODQ2LDE4LjY0NCAxNDMuODQ0LDE3LjIzMiAxNDMuODQ0LDE1LjcxOCBDMTQzLjg0NCwxNC4xOTEgMTQ0Ljg2LDEyLjc2MyAxNDYuNzA1LDExLjY5OCBMMTU2LjE5OCw2LjA5MSBDMTU2LjMwOSw2LjAyNSAxNTYuNDUyLDYuMDYyIDE1Ni41MTgsNi4xNzMgQzE1Ni41ODMsNi4yODQgMTU2LjU0Nyw2LjQyNyAxNTYuNDM2LDYuNDkzIEwxNDYuOTQsMTIuMTAyIEMxNDUuMjQ0LDEzLjA4MSAxNDQuMzEyLDE0LjM2NSAxNDQuMzEyLDE1LjcxOCBDMTQ0LjMxMiwxNy4wNTggMTQ1LjIzL
3257DE4LjMyNiAxNDYuODk3LDE5LjI4OSBDMTUwLjQ0NiwyMS4zMzggMTU2LjI0LDIxLjMyNyAxNTkuODExLDE5LjI2NSBMMTY5LjU1OSwxMy42MzcgQzE2OS42NywxMy41NzMgMTY5LjgxMywxMy42MTEgMTY5Ljg3OCwxMy43MjMgQzE2OS45NDMsMTMuODM0IDE2OS45MDQsMTMuOTc3IDE2OS43OTMsMTQuMDQyIEwxNjAuMDQ1LDE5LjY3IEMxNTguMTg3LDIwLjc0MiAxNTUuNzQ5LDIxLjI3OSAxNTMuMzE2LDIxLjI3OSIgaWQ9IkZpbGwtMjUiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEzLjY3NSw3NS45OTIgTDY3Ljc2Miw0OS40ODQiIGlkPSJGaWxsLTI2IiBmaWxsPSIjNDU1QTY0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTExMy42NzUsNzYuMzQyIEMxMTMuNjE1LDc2LjM0MiAxMTMuNTU1LDc2LjMyNyAxMTMuNSw3Ni4yOTUgTDY3LjU4Nyw0OS43ODcgQzY3LjQxOSw0OS42OSA2Ny4zNjIsNDkuNDc2IDY3LjQ1OSw0OS4zMDkgQzY3LjU1Niw0OS4xNDEgNjcuNzcsNDkuMDgzIDY3LjkzNyw0OS4xOCBMMTEzLjg1LDc1LjY4OCBDMTE0LjAxOCw3NS43ODUgMTE0LjA3NSw3NiAxMTMuOTc4LDc2LjE2NyBDMTEzLjkxNCw3Ni4yNzkgMTEzLjc5Niw3Ni4zNDIgMTEzLjY3NSw3Ni4zNDIiIGlkPSJGaWxsLTI3IiBmaWxsPSIjNDU1QTY0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTY3Ljc2Miw0OS40ODQgTDY3Ljc2MiwxMDMuNDg1IEM2Ny43NjIsMTA0LjU3NSA2OC41MzIsMTA1LjkwMyA2OS40ODIsMTA2LjQ1MiBMMTExLjk1NSwxMzAuOTczIEMxMTIuOTA1LDEzMS41MjIgMTEzLjY3NSwxMzEuMDgzIDExMy42NzUsMTI5Ljk5MyBMMTEzLjY3NSw3NS45OTIiIGlkPSJGaWxsLTI4IiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTExMi43MjcsMTMxLjU2MSBDMTEyLjQzLDEzMS41NjEgMTEyLjEwNywxMzEuNDY2IDExMS43OCwxMzEuMjc2IEw2OS4zMDcsMTA2Ljc1NSBDNjguMjQ0LDEwNi4xNDIgNjcuNDEyLDEwNC43MDUgNjcuNDEyLDEwMy40ODUgTDY3LjQxMiw0OS40ODQgQzY3LjQxMiw0OS4yOSA2Ny41NjksNDkuMTM0IDY3Ljc2Miw0OS4xMzQgQzY3Ljk1Niw0OS4xMzQgNjguMTEzLDQ5LjI5IDY4LjExMyw0OS40ODQgTDY4LjExMywxMDMuNDg1IEM2OC4xMTMsMTA0LjQ0NSA2OC44MiwxMDUuNjY1IDY5LjY1NywxMDYuMTQ4IEwxMTIuMTMsMTMwLjY3IEMxMTIuNDc0LDEzMC44NjggMTEyLjc5MSwxMzAuOTEzIDExMywxMzAuNzkyIEMxMTMuMjA2LDEzMC42NzMgMTEzLjMyNSwxMzAuMzgxIDExMy4zMjUsMTI5Ljk5MyBMMTEzLjMyNSw3NS45OTIgQzExMy4zMjUsNzUuNzk4IDExMy40ODIsNzUuNjQxIDExMy42NzUsNzUuNjQxIEMxMTMuODY5LDc1LjY0MSAxMTQuMDI1LDc1Ljc5OCAxMTQuMDI1LDc1Ljk5MiBMMTE0LjAyNSwxMjkuOTkzIEMxMTQuMDI1LDEzMC42NDggMTEzLjc4NiwxMzEuMTQ3IDExMy4zNSwxMzEuMzk5IEMxMTMuMTYyLDEzMS41MDcgMTEyLjk1MiwxMzEuNTYxIDExMi43MjcsMTMxLjU2MSIgaWQ9IkZpbGwtMjkiIGZpbGw9IiM0NTVBNjQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEyLjg2LDQwLjUxMiBDMTEyLjg2LDQwLjUxMiAxMTIuODYsNDAuNTEyIDExMi44NTksNDAuNTEyIEMxMTAuNTQxLDQwLjUxMiAxMDguMzYsMzkuOTkgMTA2LjcxNywzOS4wNDEgQzEwNS4wMTIsMzguMDU3IDEwNC4wNzQsMzYuNzI2IDEwNC4wNzQsMzUuMjkyIEMxMDQuMDc0LDMzLjg0NyAxMDUuMDI2LDMyLjUwMSAxMDYuNzU0LDMxLjUwNCBMMTE4Ljc5NSwyNC41NTEgQzEyMC40NjMsMjMuNTg5IDEyMi42NjksMjMuMDU4IDEyNS4wMDcsMjMuMDU4IEMxMjcuMzI1LDIzLjA1OCAxMjkuNTA2LDIzLjU4MSAxMzEuMTUsMjQuNTMgQzEzMi44NTQsMjUuNTE0IDEzMy43OTMsMjYuODQ1IDEzMy43OTMsMjguMjc4IEMxMzMuNzkzLDI5LjcyNCAxMzIuODQxLDMxLjA2OSAxMzEuMTEzLDMyLjA2NyBMMTE5LjA3MSwzOS4wMTkgQzExNy40MDMsMzkuOTgyIDExNS4xOTcsNDAuNTEyIDExMi44Niw0MC41MTIgTDExMi44Niw0MC41MTIgWiBNMTI1LjAwNywyMy43NTkgQzEyMi43OSwyMy43NTkgMTIwLjcwOSwyNC4yNTYgMTE5LjE0NiwyNS4xNTggTDEwNy4xMDQsMzIuMTEgQzEwNS42MDIsMzIuOTc4IDEwNC43NzQsMzQuMTA4IDEwNC43NzQsMzUuMjkyIEMxMDQuNzc0LDM2LjQ2NSAxMDUuNTg5LDM3LjU4MSAxMDcuMDY3LDM4LjQzNCBDMTA4LjYwNSwzOS4zMjMgMTEwLjY2MywzOS44MTIgMTEyLjg1OSwzOS44MTIgTDExMi44NiwzOS44MTIgQzExNS4wNzYsMzkuODEyIDExNy4xNTgsMzkuMzE1IDExOC43MjEsMzguNDEzIEwxMzAuNzYyLDMxLjQ2IEMxMzIuMjY0LDMwLjU5MyAxMzMuMDkyLDI5LjQ2MyAxMzMuMDkyLDI4LjI3OCBDMTMzLjA5MiwyNy4xMDYgMTMyLjI3OCwyNS45OSAxMzAuOCwyNS4xMzYgQzEyOS4yNjEsMjQuMjQ4IDEyNy4yMDQsMjMuNzU5IDEyNS4wMDcsMjMuNzU5IEwxMjUuMDA3LDIzLjc1OSBaIiBpZD0iRmlsbC0zMCIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNjUuNjMsMTYuMjE5IEwxNTkuODk2LDE5LjUzIEMxNTYuNzI5LDIxLjM1OCAxNTEuNjEsMjEuMzY3IDE0OC40NjMsMTkuNTUgQzE0NS4zMTYsMTcuNzMzIDE0NS4zMzIsMTQuNzc4IDE0OC40OTksMTIuOTQ5IEwxNTQuMjMzLDkuNjM5IEwxNjUuNjMsMTYuMjE5IiBpZD0iRmlsbC0zMSIgZmlsbD0iI0ZBRkFGQSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNTQuMjMzLDEwLjQ0OCBMMTY0LjIyOCwxNi4yMTkgTDE1OS41NDYsMTguOTIzIEMxNTguMTEyLDE
32575Ljc1IDE1Ni4xOTQsMjAuMjA2IDE1NC4xNDcsMjAuMjA2IEMxNTIuMTE4LDIwLjIwNiAxNTAuMjI0LDE5Ljc1NyAxNDguODE0LDE4Ljk0MyBDMTQ3LjUyNCwxOC4xOTkgMTQ2LjgxNCwxNy4yNDkgMTQ2LjgxNCwxNi4yNjkgQzE0Ni44MTQsMTUuMjc4IDE0Ny41MzcsMTQuMzE0IDE0OC44NSwxMy41NTYgTDE1NC4yMzMsMTAuNDQ4IE0xNTQuMjMzLDkuNjM5IEwxNDguNDk5LDEyLjk0OSBDMTQ1LjMzMiwxNC43NzggMTQ1LjMxNiwxNy43MzMgMTQ4LjQ2MywxOS41NSBDMTUwLjAzMSwyMC40NTUgMTUyLjA4NiwyMC45MDcgMTU0LjE0NywyMC45MDcgQzE1Ni4yMjQsMjAuOTA3IDE1OC4zMDYsMjAuNDQ3IDE1OS44OTYsMTkuNTMgTDE2NS42MywxNi4yMTkgTDE1NC4yMzMsOS42MzkiIGlkPSJGaWxsLTMyIiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE0NS40NDUsNzIuNjY3IEwxNDUuNDQ1LDcyLjY2NyBDMTQzLjY3Miw3Mi42NjcgMTQyLjIwNCw3MS44MTcgMTQxLjIwMiw3MC40MjIgQzE0MS4xMzUsNzAuMzMgMTQxLjE0NSw3MC4xNDcgMTQxLjIyNSw3MC4wNjYgQzE0MS4zMDUsNjkuOTg1IDE0MS40MzIsNjkuOTQ2IDE0MS41MjUsNzAuMDExIEMxNDIuMzA2LDcwLjU1OSAxNDMuMjMxLDcwLjgyMyAxNDQuMjc2LDcwLjgyMiBDMTQ1LjU5OCw3MC44MjIgMTQ3LjAzLDcwLjM3NiAxNDguNTMyLDY5LjUwOSBDMTUzLjg0Miw2Ni40NDMgMTU4LjE2Myw1OC45ODcgMTU4LjE2Myw1Mi44OTQgQzE1OC4xNjMsNTAuOTY3IDE1Ny43MjEsNDkuMzMyIDE1Ni44ODQsNDguMTY4IEMxNTYuODE4LDQ4LjA3NiAxNTYuODI4LDQ3Ljk0OCAxNTYuOTA4LDQ3Ljg2NyBDMTU2Ljk4OCw0Ny43ODYgMTU3LjExNCw0Ny43NzQgMTU3LjIwOCw0Ny44NCBDMTU4Ljg3OCw0OS4wMTIgMTU5Ljc5OCw1MS4yMiAxNTkuNzk4LDU0LjA1OSBDMTU5Ljc5OCw2MC4zMDEgMTU1LjM3Myw2OC4wNDYgMTQ5LjkzMyw3MS4xODYgQzE0OC4zNiw3Mi4wOTQgMTQ2Ljg1LDcyLjY2NyAxNDUuNDQ1LDcyLjY2NyBMMTQ1LjQ0NSw3Mi42NjcgWiBNMTQyLjQ3Niw3MSBDMTQzLjI5LDcxLjY1MSAxNDQuMjk2LDcyLjAwMiAxNDUuNDQ1LDcyLjAwMiBDMTQ2Ljc2Nyw3Mi4wMDIgMTQ4LjE5OCw3MS41NSAxNDkuNyw3MC42ODIgQzE1NS4wMSw2Ny42MTcgMTU5LjMzMSw2MC4xNTkgMTU5LjMzMSw1NC4wNjUgQzE1OS4zMzEsNTIuMDg1IDE1OC44NjgsNTAuNDM1IDE1OC4wMDYsNDkuMjcyIEMxNTguNDE3LDUwLjMwNyAxNTguNjMsNTEuNTMyIDE1OC42Myw1Mi44OTIgQzE1OC42Myw1OS4xMzQgMTU0LjIwNSw2Ni43NjcgMTQ4Ljc2NSw2OS45MDcgQzE0Ny4xOTIsNzAuODE2IDE0NS42ODEsNzEuMjgzIDE0NC4yNzYsNzEuMjgzIEMxNDMuNjM0LDcxLjI4MyAxNDMuMDMzLDcxLjE5MiAxNDIuNDc2LDcxIEwxNDIuNDc2LDcxIFoiIGlkPSJGaWxsLTMzIiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE0OC42NDgsNjkuNzA0IEMxNTQuMDMyLDY2LjU5NiAxNTguMzk2LDU5LjA2OCAxNTguMzk2LDUyLjg5MSBDMTU4LjM5Niw1MC44MzkgMTU3LjkxMyw0OS4xOTggMTU3LjA3NCw0OC4wMyBDMTU1LjI4OSw0Ni43NzggMTUyLjY5OSw0Ni44MzYgMTQ5LjgxNiw0OC41MDEgQzE0NC40MzMsNTEuNjA5IDE0MC4wNjgsNTkuMTM3IDE0MC4wNjgsNjUuMzE0IEMxNDAuMDY4LDY3LjM2NSAxNDAuNTUyLDY5LjAwNiAxNDEuMzkxLDcwLjE3NCBDMTQzLjE3Niw3MS40MjcgMTQ1Ljc2NSw3MS4zNjkgMTQ4LjY0OCw2OS43MDQiIGlkPSJGaWxsLTM0IiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE0NC4yNzYsNzEuMjc2IEwxNDQuMjc2LDcxLjI3NiBDMTQzLjEzMyw3MS4yNzYgMTQyLjExOCw3MC45NjkgMTQxLjI1Nyw3MC4zNjUgQzE0MS4yMzYsNzAuMzUxIDE0MS4yMTcsNzAuMzMyIDE0MS4yMDIsNzAuMzExIEMxNDAuMzA3LDY5LjA2NyAxMzkuODM1LDY3LjMzOSAxMzkuODM1LDY1LjMxNCBDMTM5LjgzNSw1OS4wNzMgMTQ0LjI2LDUxLjQzOSAxNDkuNyw0OC4yOTggQzE1MS4yNzMsNDcuMzkgMTUyLjc4NCw0Ni45MjkgMTU0LjE4OSw0Ni45MjkgQzE1NS4zMzIsNDYuOTI5IDE1Ni4zNDcsNDcuMjM2IDE1Ny4yMDgsNDcuODM5IEMxNTcuMjI5LDQ3Ljg1NCAxNTcuMjQ4LDQ3Ljg3MyAxNTcuMjYzLDQ3Ljg5NCBDMTU4LjE1Nyw0OS4xMzggMTU4LjYzLDUwLjg2NSAxNTguNjMsNTIuODkxIEMxNTguNjMsNTkuMTMyIDE1NC4yMDUsNjYuNzY2IDE0OC43NjUsNjkuOTA3IEMxNDcuMTkyLDcwLjgxNSAxNDUuNjgxLDcxLjI3NiAxNDQuMjc2LDcxLjI3NiBMMTQ0LjI3Niw3MS4yNzYgWiBNMTQxLjU1OCw3MC4xMDQgQzE0Mi4zMzEsNzAuNjM3IDE0My4yNDUsNzEuMDA1IDE0NC4yNzYsNzEuMDA1IEMxNDUuNTk4LDcxLjAwNSAxNDcuMDMsNzAuNDY3IDE0OC41MzIsNjkuNiBDMTUzLjg0Miw2Ni41MzQgMTU4LjE2Myw1OS4wMzMgMTU4LjE2Myw1Mi45MzkgQzE1OC4xNjMsNTEuMDMxIDE1Ny43MjksNDkuMzg1IDE1Ni45MDcsNDguMjIzIEMxNTYuMTMzLDQ3LjY5MSAxNTUuMjE5LDQ3LjQwOSAxNTQuMTg5LDQ3LjQwOSBDMTUyLjg2Nyw0Ny40MDkgMTUxLjQzNSw0Ny44NDIgMTQ5LjkzMyw0OC43MDkgQzE0NC42MjMsNTEuNzc1IDE0MC4zMDIsNTkuMjczIDE0MC4zMDIsNjUuMzY2IEMxNDAuMzAyLDY3LjI3NiAxNDAuNzM2LDY4Ljk0MiAxNDEuNTU4LDcwLjEwNCBMMTQxLjU1OCw3MC4xMDQgWiIgaWQ9IkZpbGwtMzUiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTUwLjcyLDY1LjM2MSBMMTUwLjM1Nyw2NS4wNjYgQzE1MS4xNDcsNjQuMDkyIDE1MS44NjksNjMuMDQgMTUyLjUwNSw2MS45MzggQzE1My4zMTMsNjAuNTM5IDE1My45NzgsNTkuMDY3IDE1NC40ODIsNTcuNTYzIEwxNTQuOTI1LDU3LjcxMiBDMTU0LjQxMiw1OS4yNDUgMTUzLjczMyw2MC43NDUgMTUyLjkxLDYyLjE3MiBDMTUyLjI2Miw2My4yOTUgMTUxLjUyNSw2NC4zNjggMTUwLjcyLDY1LjM2MSIgaWQ9IkZpbGwtMzYiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTE1LjkxNyw4NC41MTQgTDExNS41NTQsODQuMjIgQzExNi4zNDQsODMuMjQ1IDExNy4wNjYsODIuMTk0IDExNy43MDIsODEuMDkyIEMxMTguNTEsNzkuNjkyIDExOS4xNzUsNzguMjIgMTE5LjY3OCw3Ni43MTcgTDEyMC4xMjEsNzYuODY1IEMxMTkuNjA4LDc4LjM5OCAxMTguOTMsNzkuODk5IDExOC4xMDYsODEuMzI2IEMxMTcuNDU4LDgyLjQ0OCAxMTYuNzIyLDgzLjUyMSAxMTUuOTE3LDg0LjUxNCIgaWQ9IkZpbGwtMzciIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTE0LDEzMC40NzYgTDExNCwxMzAuMDA4IEwxMTQsNzYuMDUyIEwxMTQsNzUuNTg0IEwxMTQsNzYuMDUyIEwxMTQsMTMwLjAwOCBMMTE0LDEzMC40NzYiIGlkPSJGaWxsLTM4IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8ZyBpZD0iSW1wb3J0ZWQtTGF5ZXJzLUNvcHkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYyLjAwMDAwMCwgMC4wMDAwMDApIiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTkuODIyLDM3LjQ3NCBDMTkuODM5LDM3LjMzOSAxOS43NDcsMzcuMTk0IDE5LjU1NSwzNy4wODIgQzE5LjIyOCwzNi44OTQgMTguNzI5LDM2Ljg3MiAxOC40NDYsMzcuMDM3IEwxMi40MzQsNDAuNTA4IEMxMi4zMDMsNDAuNTg0IDEyLjI0LDQwLjY4NiAxMi4yNDMsNDAuNzkzIEMxMi4yNDUsNDAuOTI1IDEyLjI0NSw0MS4yNTQgMTIuMjQ1LDQxLjM3MSBMMTIuMjQ1LDQxLjQxNCBMMTIuMjM4LDQxLjU0MiBDOC4xNDgsNDMuODg3IDUuNjQ3LDQ1LjMyMSA1LjY0Nyw0NS4zMjEgQzUuNjQ2LDQ1LjMyMSAzLjU3LDQ2LjM2NyAyLjg2LDUwLjUxMyBDMi44Niw1MC41MTMgMS45NDgsNTcuNDc0IDEuOTYyLDcwLjI1OCBDMS45NzcsODIuODI4IDIuNTY4LDg3LjMyOCAzLjEyOSw5MS42MDkgQzMuMzQ5LDkzLjI5MyA2LjEzLDkzLjczNCA2LjEzLDkzLjczNCBDNi40NjEsOTMuNzc0IDYuODI4LDkzLjcwNyA3LjIxLDkzLjQ4NiBMODIuNDgzLDQ5LjkzNSBDODQuMjkxLDQ4Ljg2NiA4NS4xNSw0Ni4yMTYgODUuNTM5LDQzLjY1MSBDODYuNzUyLDM1LjY2MSA4Ny4yMTQsMTAuNjczIDg1LjI2NCwzLjc3MyBDODUuMDY4LDMuMDggODQuNzU0LDIuNjkgODQuMzk2LDIuNDkxIEw4Mi4zMSwxLjcwMSBDODEuNTgzLDEuNzI5IDgwLjg5NCwyLjE2OCA4MC43NzYsMi4yMzYgQzgwLjYzNiwyLjMxNyA0MS44MDcsMjQuNTg1IDIwLjAzMiwzNy4wNzIgTDE5LjgyMiwzNy40NzQiIGlkPSJGaWxsLTEiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNODIuMzExLDEuNzAxIEw4NC4zOTYsMi40OTEgQzg0Ljc1NCwyLjY5IDg1LjA2OCwzLjA4IDg1LjI2NCwzLjc3MyBDODcuMjEzLDEwLjY3MyA4Ni43NTEsMzUuNjYgODUuNTM5LDQzLjY1MSBDODUuMTQ5LDQ2LjIxNiA4NC4yOSw0OC44NjYgODIuNDgzLDQ5LjkzNSB
3257MNy4yMSw5My40ODYgQzYuODk3LDkzLjY2NyA2LjU5NSw5My43NDQgNi4zMTQsOTMuNzQ0IEw2LjEzMSw5My43MzMgQzYuMTMxLDkzLjczNCAzLjM0OSw5My4yOTMgMy4xMjgsOTEuNjA5IEMyLjU2OCw4Ny4zMjcgMS45NzcsODIuODI4IDEuOTYzLDcwLjI1OCBDMS45NDgsNTcuNDc0IDIuODYsNTAuNTEzIDIuODYsNTAuNTEzIEMzLjU3LDQ2LjM2NyA1LjY0Nyw0NS4zMjEgNS42NDcsNDUuMzIxIEM1LjY0Nyw0NS4zMjEgOC4xNDgsNDMuODg3IDEyLjIzOCw0MS41NDIgTDEyLjI0NSw0MS40MTQgTDEyLjI0NSw0MS4zNzEgQzEyLjI0NSw0MS4yNTQgMTIuMjQ1LDQwLjkyNSAxMi4yNDMsNDAuNzkzIEMxMi4yNCw0MC42ODYgMTIuMzAyLDQwLjU4MyAxMi40MzQsNDAuNTA4IEwxOC40NDYsMzcuMDM2IEMxOC41NzQsMzYuOTYyIDE4Ljc0NiwzNi45MjYgMTguOTI3LDM2LjkyNiBDMTkuMTQ1LDM2LjkyNiAxOS4zNzYsMzYuOTc5IDE5LjU1NCwzNy4wODIgQzE5Ljc0NywzNy4xOTQgMTkuODM5LDM3LjM0IDE5LjgyMiwzNy40NzQgTDIwLjAzMywzNy4wNzIgQzQxLjgwNiwyNC41ODUgODAuNjM2LDIuMzE4IDgwLjc3NywyLjIzNiBDODAuODk0LDIuMTY4IDgxLjU4MywxLjcyOSA4Mi4zMTEsMS43MDEgTTgyLjMxMSwwLjcwNCBMODIuMjcyLDAuNzA1IEM4MS42NTQsMC43MjggODAuOTg5LDAuOTQ5IDgwLjI5OCwxLjM2MSBMODAuMjc3LDEuMzczIEM4MC4xMjksMS40NTggNTkuNzY4LDEzLjEzNSAxOS43NTgsMzYuMDc5IEMxOS41LDM1Ljk4MSAxOS4yMTQsMzUuOTI5IDE4LjkyNywzNS45MjkgQzE4LjU2MiwzNS45MjkgMTguMjIzLDM2LjAxMyAxNy45NDcsMzYuMTczIEwxMS45MzUsMzkuNjQ0IEMxMS40OTMsMzkuODk5IDExLjIzNiw0MC4zMzQgMTEuMjQ2LDQwLjgxIEwxMS4yNDcsNDAuOTYgTDUuMTY3LDQ0LjQ0NyBDNC43OTQsNDQuNjQ2IDIuNjI1LDQ1Ljk3OCAxLjg3Nyw1MC4zNDUgTDEuODcxLDUwLjM4NCBDMS44NjIsNTAuNDU0IDAuOTUxLDU3LjU1NyAwLjk2NSw3MC4yNTkgQzAuOTc5LDgyLjg3OSAxLjU2OCw4Ny4zNzUgMi4xMzcsOTEuNzI0IEwyLjEzOSw5MS43MzkgQzIuNDQ3LDk0LjA5NCA1LjYxNCw5NC42NjIgNS45NzUsOTQuNzE5IEw2LjAwOSw5NC43MjMgQzYuMTEsOTQuNzM2IDYuMjEzLDk0Ljc0MiA2LjMxNCw5NC43NDIgQzYuNzksOTQuNzQyIDcuMjYsOTQuNjEgNy43MSw5NC4zNSBMODIuOTgzLDUwLjc5OCBDODQuNzk0LDQ5LjcyNyA4NS45ODIsNDcuMzc1IDg2LjUyNSw0My44MDEgQzg3LjcxMSwzNS45ODcgODguMjU5LDEwLjcwNSA4Ni4yMjQsMy41MDIgQzg1Ljk3MSwyLjYwOSA4NS41MiwxLjk3NSA4NC44ODEsMS42MiBMODQuNzQ5LDEuNTU4IEw4Mi42NjQsMC43NjkgQzgyLjU1MSwwLjcyNSA4Mi40MzEsMC43MDQgODIuMzExLDAuNzA0IiBpZD0iRmlsbC0yIiBmaWxsPSIjNDU1QTY0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTY2LjI2NywxMS41NjUgTDY3Ljc2MiwxMS45OTkgTDExLjQyMyw0NC4zMjUiIGlkPSJGaWxsLTMiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuMjAyLDkwLjU0NSBDMTIuMDI5LDkwLjU0NSAxMS44NjIsOTAuNDU1IDExLjc2OSw5MC4yOTUgQzExLjYzMiw5MC4wNTcgMTEuNzEzLDg5Ljc1MiAxMS45NTIsODkuNjE0IEwzMC4zODksNzguOTY5IEMzMC42MjgsNzguODMxIDMwLjkzMyw3OC45MTMgMzEuMDcxLDc5LjE1MiBDMzEuMjA4LDc5LjM5IDMxLjEyNyw3OS42OTYgMzAuODg4LDc5LjgzMyBMMTIuNDUxLDkwLjQ3OCBMMTIuMjAyLDkwLjU0NSIgaWQ9IkZpbGwtNCIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy43NjQsNDIuNjU0IEwxMy42NTYsNDIuNTkyIEwxMy43MDIsNDIuNDIxIEwxOC44MzcsMzkuNDU3IEwxOS4wMDcsMzkuNTAyIEwxOC45NjIsMzkuNjczIEwxMy44MjcsNDIuNjM3IEwxMy43NjQsNDIuNjU0IiBpZD0iRmlsbC01IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTguNTIsOTAuMzc1IEw4LjUyLDQ2LjQyMSBMOC41ODMsNDYuMzg1IEw3NS44NCw3LjU1NCBMNzUuODQsNTEuNTA4IEw3NS43NzgsNTEuNTQ0IEw4LjUyLDkwLjM3NSBMOC41Miw5MC4zNzUgWiBNOC43Nyw0Ni41NjQgTDguNzcsODkuOTQ0IEw3NS41OTEsNTEuMzY1IEw3NS41OTEsNy45ODUgTDguNzcsNDYuNTY0IEw4Ljc3LDQ2LjU2NCBaIiBpZD0iRmlsbC02IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTI0Ljk4Niw4My4xODIgQzI0Ljc1Niw4My4zMzEgMjQuMzc0LDgzLjU2NiAyNC4xMzcsODMuNzA1IEwxMi42MzIsOTAuNDA2IEMxMi4zOTUsOTAuNTQ1IDEyLjQyNiw5MC42NTggMTIuNyw5MC42NTggTDEzLjI2NSw5MC42NTggQzEzLjU0LDkwLjY1OCAxMy45NTgsOTAuNTQ1IDE0LjE5NSw5MC40MDYgTDI1LjcsODMuNzA1IEMyNS45MzcsODMuNTY2IDI2LjEyOCw4My40NTIgMjYuMTI1LDgzLjQ0OSBDMjYuMTIyLDgzLjQ0NyAyNi4xMTksODMuMjIgMjYuMTE5LDgyLjk0NiBDMjYuMTE5LDgyLjY3MiAyNS45MzEsODIuNTY5IDI1LjcwMSw4Mi43MTkgTDI0Ljk4Niw4My4xODIiIGlkPSJGaWxsLTciIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTMuMjY2LDkwLjc4MiBMMTIuNyw5MC43ODIgQzEyLjUsOTAuNzgyIDEyLjM4NCw5MC43MjYgMTIuMzU0LDkwLjYxNiBDMTIuMzI0LDkwLjUwNiAxMi4zOTcsOTAuMzk5IDEyLjU2OSw5MC4yOTkgTDI0LjA3NCw4My41OTcgQzI0LjMxLDgzLjQ1OSAyNC42ODksODMuMjI2IDI0LjkxOCw4My4wNzggTDI1LjYzMyw4Mi42MTQgQzI1LjcyMyw4Mi41NTUgMjUuODEzLDgyLjUyNSAyNS44OTksODIuNTI1IEMyNi4wNzEsODIuNTI1IDI2LjI0NCw4Mi42NTUgMjYuMjQ0LDgyLjk0NiBDMjYuMjQ0LDgzLjE2IDI2LjI0NSw4My4zMDkgMjYuMjQ3LDgzLjM4MyBMMjYuMjUzLDgzLjM4NyBMMjYuMjQ5LDgzLjQ1NiBDMjYuMjQ2LDgzLjUzMSAyNi4yNDYsODMuNTMxIDI1Ljc2Myw4My44MTIgTDE0LjI1OCw5MC41MTQgQzE0LDkwLjY2NSAxMy41NjQsOTAuNzgyIDEzLjI2Niw5MC43ODIgTDEzLjI2Niw5MC43ODIgWiBNMTIuNjY2LDkwLjUzMiBMMTIuNyw5MC41MzMgTDEzLjI2Niw5MC41MzMgQzEzLjUxOCw5MC41MzMgMTMuOTE1LDkwLjQyNSAxNC4xMzIsOTAuMjk5IEwyNS42MzcsODMuNTk3IEMyNS44MDUsODMuNDk5IDI1LjkzMSw4My40MjQgMjUuOTk4LDgzLjM4MyBDMjUuOTk0LDgzLjI5OSAyNS45OTQsODMuMTY1IDI1Ljk5NCw4Mi45NDYgTDI1Ljg5OSw4Mi43NzUgTDI1Ljc2OCw4Mi44MjQgTDI1LjA1NCw4My4yODcgQzI0LjgyMiw4My40MzcgMjQuNDM4LDgzLjY3MyAyNC4yLDgzLjgxMiBMMTIuNjk1LDkwLjUxNCBMMTIuNjY2LDkwLjUzMiBMMTIuNjY2LDkwLjUzMiBaIiBpZD0iRmlsbC04IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEzLjI2Niw4OS44NzEgTDEyLjcsODkuODcxIEMxMi41LDg5Ljg3MSAxMi4zODQsODkuODE1IDEyLjM1NCw4OS43MDUgQzEyLjMyNCw4OS41OTUgMTIuMzk3LDg5LjQ4OCAxMi41NjksODkuMzg4IEwyNC4wNzQsODIuNjg2IEMyNC4zMzIsODIuNTM1IDI0Ljc2OCw4Mi40MTggMjUuMDY3LDgyLjQxOCBMMjUuNjMyLDgyLjQxOCBDMjUuODMyLDgyLjQxOCAyNS45NDgsODIuNDc0IDI1Ljk3OCw4Mi41ODQgQzI2LjAwOCw4Mi42OTQgMjUuOTM1LDgyLjgwMSAyNS43NjMsODIuOTAxIEwxNC4yNTgsODkuNjAzIEMxNCw4OS43NTQgMTMuNTY0LDg5Ljg3MSAxMy4yNjYsODkuODcxIEwxMy4yNjYsODkuODcxIFogTTEyLjY2Niw4OS42MjEgTDEyLjcsODkuNjIyIEwxMy4yNjYsODkuNjIyIEMxMy41MTgsODkuNjIyIDEzLjkxNSw4OS41MTUgMTQuMTMyLDg5LjM4OCBMMjUuNjM3LDgyLjY4NiB
3257MMjUuNjY3LDgyLjY2OCBMMjUuNjMyLDgyLjY2NyBMMjUuMDY3LDgyLjY2NyBDMjQuODE1LDgyLjY2NyAyNC40MTgsODIuNzc1IDI0LjIsODIuOTAxIEwxMi42OTUsODkuNjAzIEwxMi42NjYsODkuNjIxIEwxMi42NjYsODkuNjIxIFoiIGlkPSJGaWxsLTkiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuMzcsOTAuODAxIEwxMi4zNyw4OS41NTQgTDEyLjM3LDkwLjgwMSIgaWQ9IkZpbGwtMTAiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNi4xMyw5My45MDEgQzUuMzc5LDkzLjgwOCA0LjgxNiw5My4xNjQgNC42OTEsOTIuNTI1IEMzLjg2LDg4LjI4NyAzLjU0LDgzLjc0MyAzLjUyNiw3MS4xNzMgQzMuNTExLDU4LjM4OSA0LjQyMyw1MS40MjggNC40MjMsNTEuNDI4IEM1LjEzNCw0Ny4yODIgNy4yMSw0Ni4yMzYgNy4yMSw0Ni4yMzYgQzcuMjEsNDYuMjM2IDgxLjY2NywzLjI1IDgyLjA2OSwzLjAxNyBDODIuMjkyLDIuODg4IDg0LjU1NiwxLjQzMyA4NS4yNjQsMy45NCBDODcuMjE0LDEwLjg0IDg2Ljc1MiwzNS44MjcgODUuNTM5LDQzLjgxOCBDODUuMTUsNDYuMzgzIDg0LjI5MSw0OS4wMzMgODIuNDgzLDUwLjEwMSBMNy4yMSw5My42NTMgQzYuODI4LDkzLjg3NCA2LjQ2MSw5My45NDEgNi4xMyw5My45MDEgQzYuMTMsOTMuOTAxIDMuMzQ5LDkzLjQ2IDMuMTI5LDkxLjc3NiBDMi41NjgsODcuNDk1IDEuOTc3LDgyLjk5NSAxLjk2Miw3MC40MjUgQzEuOTQ4LDU3LjY0MSAyLjg2LDUwLjY4IDIuODYsNTAuNjggQzMuNTcsNDYuNTM0IDUuNjQ3LDQ1LjQ4OSA1LjY0Nyw0NS40ODkgQzUuNjQ2LDQ1LjQ4OSA4LjA2NSw0NC4wOTIgMTIuMjQ1LDQxLjY3OSBMMTMuMTE2LDQxLjU2IEwxOS43MTUsMzcuNzMgTDE5Ljc2MSwzNy4yNjkgTDYuMTMsOTMuOTAxIiBpZD0iRmlsbC0xMSIgZmlsbD0iI0ZBRkFGQSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02LjMxNyw5NC4xNjEgTDYuMTAyLDk0LjE0OCBMNi4xMDEsOTQuMTQ4IEw1Ljg1Nyw5NC4xMDEgQzUuMTM4LDkzLjk0NSAzLjA4NSw5My4zNjUgMi44ODEsOTEuODA5IEMyLjMxMyw4Ny40NjkgMS43MjcsODIuOTk2IDEuNzEzLDcwLjQyNSBDMS42OTksNTcuNzcxIDIuNjA0LDUwLjcxOCAyLjYxMyw1MC42NDggQzMuMzM4LDQ2LjQxNyA1LjQ0NSw0NS4zMSA1LjUzNSw0NS4yNjYgTDEyLjE2Myw0MS40MzkgTDEzLjAzMyw0MS4zMiBMMTkuNDc5LDM3LjU3OCBMMTkuNTEzLDM3LjI0NCBDMTkuNTI2LDM3LjEwNyAxOS42NDcsMzcuMDA4IDE5Ljc4NiwzNy4wMjEgQzE5LjkyMiwzNy4wMzQgMjAuMDIzLDM3LjE1NiAyMC4wMDksMzcuMjkzIEwxOS45NSwzNy44ODIgTDEzLjE5OCw0MS44MDEgTDEyLjMyOCw0MS45MTkgTDUuNzcyLDQ1LjcwNCBDNS43NDEsNDUuNzIgMy43ODIsNDYuNzcyIDMuMTA2LDUwLjcyMiBDMy4wOTksNTAuNzgyIDIuMTk4LDU3LjgwOCAyLjIxMiw3MC40MjQgQzIuMjI2LDgyLjk2MyAyLjgwOSw4Ny40MiAzLjM3Myw5MS43MjkgQzMuNDY0LDkyLjQyIDQuMDYyLDkyLjg4MyA0LjY4Miw5My4xODEgQzQuNTY2LDkyLjk4NCA0LjQ4Niw5Mi43NzYgNC40NDYsOTIuNTcyIEMzLjY2NSw4OC41ODggMy4yOTEsODQuMzcgMy4yNzYsNzEuMTczIEMzLjI2Miw1OC41MiA0LjE2Nyw1MS40NjYgNC4xNzYsNTEuMzk2IEM0LjkwMSw0Ny4xNjUgNy4wMDgsNDYuMDU5IDcuMDk4LDQ2LjAxNCBDNy4wOTQsNDYuMDE1IDgxLjU0MiwzLjAzNCA4MS45NDQsMi44MDIgTDgxLjk3MiwyLjc4NSBDODIuODc2LDIuMjQ3IDgzLjY5MiwyLjA5NyA4NC4zMzIsMi4zNTIgQzg0Ljg4NywyLjU3MyA4NS4yODEsMy4wODUgODUuNTA0LDMuODcyIEM4Ny41MTgsMTEgODYuOTY0LDM2LjA5MSA4NS43ODUsNDMuODU1IEM4NS4yNzgsNDcuMTk2IDg0LjIxLDQ5LjM3IDgyLjYxLDUwLjMxNyBMNy4zMzUsOTMuODY5IEM2Ljk5OSw5NC4wNjMgNi42NTgsOTQuMTYxIDYuMzE3LDk0LjE2MSBMNi4zMTcsOTQuMTYxIFogTTYuMTcsOTMuNjU0IEM2LjQ2Myw5My42OSA2Ljc3NCw5My42MTcgNy4wODUsOTMuNDM3IEw4Mi4zNTgsNDkuODg2IEM4NC4xODEsNDguODA4IDg0Ljk2LDQ1Ljk3MSA4NS4yOTIsNDMuNzggQzg2LjQ2NiwzNi4wNDkgODcuMDIzLDExLjA4NSA4NS4wMjQsNC4wMDggQzg0Ljg0NiwzLjM3NyA4NC41NTEsMi45NzYgODQuMTQ4LDIuODE2IEM4My42NjQsMi42MjMgODIuOTgyLDIuNzY0IDgyLjIyNywzLjIxMyBMODIuMTkzLDMuMjM0IEM4MS43OTEsMy40NjYgNy4zMzUsNDYuNDUyIDcuMzM1LDQ2LjQ1MiBDNy4zMDQsNDYuNDY5IDUuMzQ2LDQ3LjUyMSA0LjY2OSw1MS40NzEgQzQuNjYyLDUxLjUzIDMuNzYxLDU4LjU1NiAzLjc3NSw3MS4xNzMgQzMuNzksODQuMzI4IDQuMTYxLDg4LjUyNCA0LjkzNiw5Mi40NzYgQzUuMDI2LDkyLjkzNyA1LjQxMiw5My40NTkgNS45NzMsOTMuNjE1IEM2LjA4Nyw5My42NCA2LjE1OCw5My42NTIgNi4xNjksOTMuNjU0IEw2LjE3LDkzLjY1NCBMNi4xNyw5My42NTQgWiIgaWQ9IkZpbGwtMTIiIGZpbGw9IiM0NTVBNjQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNy4zMTcsNjguOTgyIEM3LjgwNiw2OC43MDEgOC4yMDIsNjguOTI2IDguMjAyLDY5LjQ4NyBDOC4yMDIsNzAuMDQ3IDcuODA2LDcwLjczIDcuMzE3LDcxLjAxMiBDNi44MjksNzEuMjk0IDYuNDMzLDcxLjA2OSA2LjQzMyw3MC41MDggQzYuNDMzLDY5Ljk0OCA2LjgyOSw2OS4yNjUgNy4zMTcsNjguOTgyIiBpZD0iRmlsbC0xMyIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02LjkyLDcxLjEzMyBDNi42MzEsNzEuMTMzIDYuNDMzLDcwLjkwNSA2LjQzMyw3MC41MDggQzYuNDMzLDY5Ljk0OCA2LjgyOSw2OS4yNjUgNy4zMTcsNjguOTgyIEM3LjQ2LDY4LjkgNy41OTUsNjguODYxIDcuNzE0LDY4Ljg2MSBDOC4wMDMsNjguODYxIDguMjAyLDY5LjA5IDguMjAyLDY5LjQ4NyBDOC4yMDIsNzAuMDQ3IDcuODA2LDcwLjczIDcuMzE3LDcxLjAxMiBDNy4xNzQsNzEuMDk0IDcuMDM5LDcxLjEzMyA2LjkyLDcxLjEzMyBNNy43MTQsNjguNjc0IEM3LjU1Nyw2OC42NzQgNy4zOTIsNjguNzIzIDcuMjI0LDY4LjgyMSBDNi42NzYsNjkuMTM4IDYuMjQ2L
3257DY5Ljg3OSA2LjI0Niw3MC41MDggQzYuMjQ2LDcwLjk5NCA2LjUxNyw3MS4zMiA2LjkyLDcxLjMyIEM3LjA3OCw3MS4zMiA3LjI0Myw3MS4yNzEgNy40MTEsNzEuMTc0IEM3Ljk1OSw3MC44NTcgOC4zODksNzAuMTE3IDguMzg5LDY5LjQ4NyBDOC4zODksNjkuMDAxIDguMTE3LDY4LjY3NCA3LjcxNCw2OC42NzQiIGlkPSJGaWxsLTE0IiBmaWxsPSIjODA5N0EyIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTYuOTIsNzAuOTQ3IEM2LjY0OSw3MC45NDcgNi42MjEsNzAuNjQgNi42MjEsNzAuNTA4IEM2LjYyMSw3MC4wMTcgNi45ODIsNjkuMzkyIDcuNDExLDY5LjE0NSBDNy41MjEsNjkuMDgyIDcuNjI1LDY5LjA0OSA3LjcxNCw2OS4wNDkgQzcuOTg2LDY5LjA0OSA4LjAxNSw2OS4zNTUgOC4wMTUsNjkuNDg3IEM4LjAxNSw2OS45NzggNy42NTIsNzAuNjAzIDcuMjI0LDcwLjg1MSBDNy4xMTUsNzAuOTE0IDcuMDEsNzAuOTQ3IDYuOTIsNzAuOTQ3IE03LjcxNCw2OC44NjEgQzcuNTk1LDY4Ljg2MSA3LjQ2LDY4LjkgNy4zMTcsNjguOTgyIEM2LjgyOSw2OS4yNjUgNi40MzMsNjkuOTQ4IDYuNDMzLDcwLjUwOCBDNi40MzMsNzAuOTA1IDYuNjMxLDcxLjEzMyA2LjkyLDcxLjEzMyBDNy4wMzksNzEuMTMzIDcuMTc0LDcxLjA5NCA3LjMxNyw3MS4wMTIgQzcuODA2LDcwLjczIDguMjAyLDcwLjA0NyA4LjIwMiw2OS40ODcgQzguMjAyLDY5LjA5IDguMDAzLDY4Ljg2MSA3LjcxNCw2OC44NjEiIGlkPSJGaWxsLTE1IiBmaWxsPSIjODA5N0EyIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTcuNDQ0LDg1LjM1IEM3LjcwOCw4NS4xOTggNy45MjEsODUuMzE5IDcuOTIxLDg1LjYyMiBDNy45MjEsODUuOTI1IDcuNzA4LDg2LjI5MiA3LjQ0NCw4Ni40NDQgQzcuMTgxLDg2LjU5NyA2Ljk2Nyw4Ni40NzUgNi45NjcsODYuMTczIEM2Ljk2Nyw4NS44NzEgNy4xODEsODUuNTAyIDcuNDQ0LDg1LjM1IiBpZD0iRmlsbC0xNiIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik03LjIzLDg2LjUxIEM3LjA3NCw4Ni41MSA2Ljk2Nyw4Ni4zODcgNi45NjcsODYuMTczIEM2Ljk2Nyw4NS44NzEgNy4xODEsODUuNTAyIDcuNDQ0LDg1LjM1IEM3LjUyMSw4NS4zMDUgNy41OTQsODUuMjg0IDcuNjU4LDg1LjI4NCBDNy44MTQsODUuMjg0IDcuOTIxLDg1LjQwOCA3LjkyMSw4NS42MjIgQzcuOTIxLDg1LjkyNSA3LjcwOCw4Ni4yOTIgNy40NDQsODYuNDQ0IEM3LjM2Nyw4Ni40ODkgNy4yOTQsODYuNTEgNy4yMyw4Ni41MSBNNy42NTgsODUuMDk4IEM3LjU1OCw4NS4wOTggNy40NTUsODUuMTI3IDcuMzUxLDg1LjE4OCBDNy4wMzEsODUuMzczIDYuNzgxLDg1LjgwNiA2Ljc4MSw4Ni4xNzMgQzYuNzgxLDg2LjQ4MiA2Ljk2Niw4Ni42OTcgNy4yMyw4Ni42OTcgQzcuMzMsODYuNjk3IDcuNDMzLDg2LjY2NiA3LjUzOCw4Ni42MDcgQzcuODU4LDg2LjQyMiA4LjEwOCw4NS45ODkgOC4xMDgsODUuNjIyIEM4LjEwOCw4NS4zMTMgNy45MjMsODUuMDk4IDcuNjU4LDg1LjA5OCIgaWQ9IkZpbGwtMTciIGZpbGw9IiM4MDk3QTIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNy4yMyw4Ni4zMjIgTDcuMTU0LDg2LjE3MyBDNy4xNTQsODUuOTM4IDcuMzMzLDg1LjYyOSA3LjUzOCw4NS41MTIgTDcuNjU4LDg1LjQ3MSBMNy43MzQsODUuNjIyIEM3LjczNCw4NS44NTYgNy41NTUsODYuMTY0IDcuMzUxLDg2LjI4MiBMNy4yMyw4Ni4zMjIgTTcuNjU4LDg1LjI4NCBDNy41OTQsODUuMjg0IDcuNTIxLDg1LjMwNSA3LjQ0NCw4NS4zNSBDNy4xODEsODUuNTAyIDYuOTY3LDg1Ljg3MSA2Ljk2Nyw4Ni4xNzMgQzYuOTY3LDg2LjM4NyA3LjA3NCw4Ni41MSA3LjIzLDg2LjUxIEM3LjI5NCw4Ni41MSA3LjM2Nyw4Ni40ODkgNy40NDQsODYuNDQ0IEM3LjcwOCw4Ni4yOTIgNy45MjEsODUuOTI1IDcuOTIxLDg1LjYyMiBDNy45MjEsODUuNDA4IDcuODE0LDg1LjI4NCA3LjY1OCw4NS4yODQiIGlkPSJGaWxsLTE4IiBmaWxsPSIjODA5N0EyIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTc3LjI3OCw3Ljc2OSBMNzcuMjc4LDUxLjQzNiBMMTAuMjA4LDkwLjE2IEwxMC4yMDgsNDYuNDkzIEw3Ny4yNzgsNy43NjkiIGlkPSJGaWxsLTE5IiBmaWxsPSIjNDU1QTY0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEwLjA4Myw5MC4zNzUgTDEwLjA4Myw0Ni40MjEgTDEwLjE0Niw0Ni4zODUgTDc3LjQwMyw3LjU1NCBMNzcuNDAzLDUxLjUwOCBMNzcuMzQxLDUxLjU0NCBMMTAuMDgzLDkwLjM3NSBMMTAuMDgzLDkwLjM3NSBaIE0xMC4zMzMsNDYuNTY0IEwxMC4zMzMsODkuOTQ0IEw3Ny4xNTQsNTEuMzY1IEw3Ny4xNTQsNy45ODUgTDEwLjMzMyw0Ni41NjQgTDEwLjMzMyw0Ni41NjQgWiIgaWQ9IkZpbGwtMjAiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMjUuNzM3LDg4LjY0NyBMMTE4LjA5OCw5MS45ODEgTDExOC4wOTgsODQgTDEwNi42MzksODguNzEzIEwxMDYuNjM5LDk2Ljk4MiBMOTksMTAwLjMxNSBMMTEyLjM2OSwxMDMuOTYxIEwxMjUuNzM3LDg4LjY0NyIgaWQ9IkltcG9ydGVkLUxheWVycy1Db3B5LTIiIGZpbGw9IiM0NTVBNjQiIHNrZXRjaDp0eXBlPSJNU1NoYXBlR3JvdXAiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+';function RotateInstructions(){this.loadIcon_();var overlay=document.createElement('div');var 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=1000000;var img=document.createElement('img');img.src=this.icon;var s=img.style;s.marginLeft='25%';s.marginTop='25%';s.width='50%';overlay.appendChild(img);var text=document.createElement('div');var s=text.style;s.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');var s=snackbar.style;s.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';var s=snackbarButton.style;s.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()}
3258RotateInstructions.prototype.show=function(parent){if(!parent&&!this.overlay.parentElement){document.body.appendChild(this.overlay)}else if(parent){if(this.overlay.parentElement&&this.overlay.parentElement!=parent)this.overlay.parentElement.removeChild(this.overlay);parent.appendChild(this.overlay)}
3259this.overlay.style.display='block';var img=this.overlay.querySelector('img');var s=img.style;if(isLandscapeMode()){s.width='20%';s.marginLeft='40%';s.marginTop='3%'}else{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();if(!isLandscapeMode()&&isMobile()){this.show()}else{this.hide()}};RotateInstructions.prototype.loadIcon_=function(){this.icon=base64('image/svg+xml',rotateInstructionsAsset)};var DEFAULT_VIEWER='CardboardV1';var VIEWER_KEY='WEBVR_CARDBOARD_VIEWER';var CLASS_NAME='webvr-polyfill-viewer-selector';function ViewerSelector(defaultViewer){try{this.selectedKey=localStorage.getItem(VIEWER_KEY)}catch(error){console.error('Failed to load viewer profile: %s',error)}
3260if(!this.selectedKey){this.selectedKey=defaultViewer||DEFAULT_VIEWER}
3261this.dialog=this.createDialog_(DeviceInfo.Viewers);this.root=null;this.onChangeCallbacks_=[]}
3262ViewerSelector.prototype.show=function(root){this.root=root;root.appendChild(this.dialog);var selected=this.dialog.querySelector('#'+this.selectedKey);selected.checked=!0;this.dialog.style.display='block'};ViewerSelector.prototype.hide=function(){if(this.root&&this.root.contains(this.dialog)){this.root.removeChild(this.dialog)}
3263this.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');if(input){return input.id}
3264return null};ViewerSelector.prototype.onChange=function(cb){this.onChangeCallbacks_.push(cb)};ViewerSelector.prototype.fireOnChange_=function(viewer){for(var i=0;i<this.onChangeCallbacks_.length;i++){this.onChangeCallbacks_[i](viewer)}};ViewerSelector.prototype.onSave_=function(){this.selectedKey=this.getSelectedKey_();if(!this.selectedKey||!DeviceInfo.Viewers[this.selectedKey]){console.error('ViewerSelector.onSave_: this should never happen!');return}
3265this.fireOnChange_(DeviceInfo.Viewers[this.selectedKey]);try{localStorage.setItem(VIEWER_KEY,this.selectedKey)}catch(error){console.error('Failed to save viewer profile: %s',error)}
3266this.hide()};ViewerSelector.prototype.createDialog_=function(options){var container=document.createElement('div');container.classList.add(CLASS_NAME);container.style.display='none';var overlay=document.createElement('div');var s=overlay.style;s.position='fixed';s.left=0;s.top=0;s.width='100%';s.height='100%';s.background='rgba(0, 0, 0, 0.3)';overlay.addEventListener('click',this.hide.bind(this));var width=280;var dialog=document.createElement('div');var s=dialog.style;s.boxSizing='border-box';s.position='fixed';s.top='24px';s.left='50%';s.marginLeft=-width/2+'px';s.width=width+'px';s.padding='24px';s.overflow='hidden';s.background='#fafafa';s.fontFamily="'Roboto', sans-serif";
3266s.boxShadow='0px 5px 20px #666';dialog.appendChild(this.createH1_('Select your viewer'));for(var id in options){dialog.appendChild(this.createChoice_(id,options[id].label))}
3267dialog.appendChild(this.createButton_('Save',this.onSave_.bind(this)));container.appendChild(overlay);container.appendChild(dialog);return container};ViewerSelector.prototype.createH1_=function(name){var h1=document.createElement('h1');var s=h1.style;s.color='black';s.fontSize='20px';s.fontWeight='bold';s.marginTop=0;s.marginBottom='24px';h1.innerHTML=name;return h1};ViewerSelector.prototype.createChoice_=function(id,name){var div=document.createElement('div');div.style.marginTop='8px';div.style.color='black';var input=document.createElement('input');input.style.fontSize='30px';input.setAttribute('id',id);input.setAttribute('type','radio');input.setAttribute('value',id);input.setAttribute('name','field');var label=document.createElement('label');label.style.marginLeft='4px';label.setAttribute('for',id);label.innerHTML=name;div.appendChild(input);div.appendChild(label);return div};ViewerSelector.prototype.createButton_=function(label,onclick){var button=document.createElement('button');button.innerHTML=label;var s=button.style;s.float='right';s.textTransform='uppercase';s.color='#1094f7';s.fontSize='14px';s.letterSpacing=0;s.border=0;s.background='none';s.marginTop='16px';button.addEventListener('click',onclick);return button};var commonjsGlobal$$1=typeof window!=='undefined'?window:typeof commonjsGlobal$1!=='undefined'?commonjsGlobal$1:typeof self!=='undefined'?self:{};function unwrapExports$$1(x){return x&&x.__esModule?x['default']:x}
3268function createCommonjsModule$$1(fn,module){return module={exports:{}},fn(module,module.exports),module.exports}
3269var NoSleep=createCommonjsModule$$1(function(module,exports){(function webpackUniversalModuleDefinition(root,factory){module.exports=factory()})(commonjsGlobal$$1,function(){return(function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports}
3270var module=installedModules[moduleId]={i:moduleId,l:!1,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=!0;return module.exports}
3271__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{configurable:!1,enumerable:!0,get:getter})}};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module['default']}:function getModuleExports(){return module};__webpack_require__.d(getter,'a',getter);return getter};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)};__webpack_require__.p="";return __webpack_require__(__webpack_require__.s=0)})([(function(module,exports,__webpack_require__){var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1;descriptor.configurable=!0;if("value" in descriptor)descriptor.writable=!0;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}
3272var mediaFile=__webpack_require__(1);var oldIOS=typeof navigator!=='undefined'&&parseFloat((''+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,''])[1]).replace('undefined','3_2').replace('_','.').replace('_',''))<10&&!window.MSStream;var NoSleep=function(){function NoSleep(){_classCallCheck(this,NoSleep);if(oldIOS){this.noSleepTimer=null}else{this.noSleepVideo=document.createElement('video');this.noSleepVideo.setAttribute('playsinline','');this.noSleepVideo.setAttribute('src',mediaFile);this.noSleepVideo.addEventListener('timeupdate',function(e){if(this.noSleepVideo.currentTime>0.5){this.noSleepVideo.currentTime=Math.random()}}.bind(this))}}
3273_createClass(NoSleep,[{key:'enable',value:function enable(){if(oldIOS){this.disable();this.noSleepTimer=window.setInterval(function(){window.location.href='/';window.setTimeout(window.stop,0)},15000)}else{this.noSleepVideo.play()}}},{key:'disable',value:function disable(){if(oldIOS){if(this.noSleepTimer){window.clearInterval(this.noSleepTimer);this.noSleepTimer=null}}else{this.noSleepVideo.pause()}}}]);return NoSleep}();module.exports=NoSleep}),(function(module,exports,__webpack_require__){module.exports='data:video/mp4;base64,AAAAIGZ0eXBtcDQyAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAACKBtZGF0AAAC8wYF///v3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0MiByMjQ3OSBkZDc5YTYxIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTEgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MToweDExMSBtZT1oZXggc3VibWU9MiBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0wIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MCA4eDhkY3Q9MCBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0wIHRocmVhZHM9NiBsb29rYWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJhbWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdlaWdodHA9MSBrZXlpbnQ9MzAwIGtleWludF9taW49MzAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD0xMCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIwLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IHZidl9tYXhyYXRlPTIwMDAwIHZidl9idWZzaXplPTI1MDAwIGNyZl9tYXg9MC4wIG5hbF9ocmQ9bm9uZSBmaWxsZXI9MCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAOWWIhAA3//p+C7v8tDDSTjf97w55i3SbRPO4ZY+hkjD5hbkAkL3zpJ6h/LR1CAABzgB1kqqzUorlhQAAAAxBmiQYhn/+qZYADLgAAAAJQZ5CQhX/AAj5IQADQGgcIQADQGgcAAAACQGeYUQn/wALKCEAA0BoHAAAAAkBnmNEJ/8ACykhAANAaBwhAANAaBwAAAANQZpoNExDP/6plgAMuSEAA0BoHAAAAAtBnoZFESwr/wAI+SEAA0BoHCEAA0BoHAAAAAkBnqVEJ/8ACykhAANAaBwAAAAJAZ6nRCf/AAsoIQADQGgcIQADQGgcAAAADUGarDRMQz/+qZYADLghAANAaBwAAAALQZ7KRRUsK/8ACPkhAANAaBwAAAAJAZ7pRCf/AAsoIQADQGgcIQADQGgcAAAACQGe60Qn/wALKCEAA0BoHAAAAA1BmvA0TEM//qmWAAy5IQADQGgcIQADQGgcAAAAC0GfDkUVLCv/AAj5IQADQGgcAAAACQGfLUQn/wALKSEAA0BoHCEAA0BoHAAAAAkBny9EJ/8ACyghAANAaBwAAAANQZs0NExDP/6plgAMuCEAA0BoHAAAAAtBn1JFFSwr/wAI+SEAA0BoHCEAA0BoHAAAAAkBn3FEJ/8ACyghAANAaBwAAAAJAZ9zRCf/AAsoIQADQGgcIQADQGgcAAAADUGbeDRMQz/+qZYADLkhAANAaBwAAAALQZ+WRRUsK/8ACPghAANAaBwhAANAaBwAAAAJAZ+1RCf/AAspIQADQGgcAAAACQGft0Qn/wALKSEAA0BoHCEAA0BoHAAAAA1Bm7w0TEM//qmWAAy4IQADQGgcAAAAC0Gf2kUVLCv/AAj5IQADQGgcAAAACQGf+U
3273Qn/wALKCEAA0BoHCEAA0BoHAAAAAkBn/tEJ/8ACykhAANAaBwAAAANQZvgNExDP/6plgAMuSEAA0BoHCEAA0BoHAAAAAtBnh5FFSwr/wAI+CEAA0BoHAAAAAkBnj1EJ/8ACyghAANAaBwhAANAaBwAAAAJAZ4/RCf/AAspIQADQGgcAAAADUGaJDRMQz/+qZYADLghAANAaBwAAAALQZ5CRRUsK/8ACPkhAANAaBwhAANAaBwAAAAJAZ5hRCf/AAsoIQADQGgcAAAACQGeY0Qn/wALKSEAA0BoHCEAA0BoHAAAAA1Bmmg0TEM//qmWAAy5IQADQGgcAAAAC0GehkUVLCv/AAj5IQADQGgcIQADQGgcAAAACQGepUQn/wALKSEAA0BoHAAAAAkBnqdEJ/8ACyghAANAaBwAAAANQZqsNExDP/6plgAMuCEAA0BoHCEAA0BoHAAAAAtBnspFFSwr/wAI+SEAA0BoHAAAAAkBnulEJ/8ACyghAANAaBwhAANAaBwAAAAJAZ7rRCf/AAsoIQADQGgcAAAADUGa8DRMQz/+qZYADLkhAANAaBwhAANAaBwAAAALQZ8ORRUsK/8ACPkhAANAaBwAAAAJAZ8tRCf/AAspIQADQGgcIQADQGgcAAAACQGfL0Qn/wALKCEAA0BoHAAAAA1BmzQ0TEM//qmWAAy4IQADQGgcAAAAC0GfUkUVLCv/AAj5IQADQGgcIQADQGgcAAAACQGfcUQn/wALKCEAA0BoHAAAAAkBn3NEJ/8ACyghAANAaBwhAANAaBwAAAANQZt4NExC//6plgAMuSEAA0BoHAAAAAtBn5ZFFSwr/wAI+CEAA0BoHCEAA0BoHAAAAAkBn7VEJ/8ACykhAANAaBwAAAAJAZ+3RCf/AAspIQADQGgcAAAADUGbuzRMQn/+nhAAYsAhAANAaBwhAANAaBwAAAAJQZ/aQhP/AAspIQADQGgcAAAACQGf+UQn/wALKCEAA0BoHCEAA0BoHCEAA0BoHCEAA0BoHCEAA0BoHCEAA0BoHAAACiFtb292AAAAbG12aGQAAAAA1YCCX9WAgl8AAAPoAAAH/AABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAGGlvZHMAAAAAEICAgAcAT////v7/AAAF+XRyYWsAAABcdGtoZAAAAAPVgIJf1YCCXwAAAAEAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAygAAAMoAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAB9AAABdwAAEAAAAABXFtZGlhAAAAIG1kaGQAAAAA1YCCX9WAgl8AAV+QAAK/IFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSGFuZGxlcgAAAAUcbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAE3HN0YmwAAACYc3RzZAAAAAAAAAABAAAAiGF2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAygDKAEgAAABIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAyYXZjQwFNQCj/4QAbZ01AKOyho3ySTUBAQFAAAAMAEAAr8gDxgxlgAQAEaO+G8gAAABhzdHRzAAAAAAAAAAEAAAA8AAALuAAAABRzdHNzAAAAAAAAAAEAAAABAAAB8GN0dHMAAAAAAAAAPAAAAAEAABdwAAAAAQAAOpgAAAABAAAXcAAAAAEAAAAAAAAAAQAAC7gAAAABAAA6mAAAAAEAABdwAAAAAQAAAAAAAAABAAALuAAAAAEAADqYAAAAAQAAF3AAAAABAAAAAAAAAAEAAAu4AAAAAQAAOpgAAAABAAAXcAAAAAEAAAAAAAAAAQAAC7gAAAABAAA6mAAAAAEAABdwAAAAAQAAAAAAAAABAAALuAAAAAEAADqYAAAAAQAAF3AAAAABAAAAAAAAAAEAAAu4AAAAAQAAOpgAAAABAAAXcAAAAAEAAAAAAAAAAQAAC7gAAAABAAA6mAAAAAEAABdwAAAAAQAAAAAAAAABAAALuAAAAAEAADqYAAAAAQAAF3AAAAABAAAAAAAAAAEAAAu4AAAAAQAAOpgAAAABAAAXcAAAAAEAAAAAAAAAAQAAC7gAAAABAAA6mAAAAAEAABdwAAAAAQAAAAAAAAABAAALuAAAAAEAADqYAAAAAQAAF3AAAAABAAAAAAAAAAEAAAu4AAAAAQAAOpgAAAABAAAXcAAAAAEAAAAAAAAAAQAAC7gAAAABAAA6mAAAAAEAABdwAAAAAQAAAAAAAAABAAALuAAAAAEAAC7gAAAAAQAAF3AAAAABAAAAAAAAABxzdHNjAAAAAAAAAAEAAAABAAAAAQAAAAEAAAEEc3RzegAAAAAAAAAAAAAAPAAAAzQAAAAQAAAADQAAAA0AAAANAAAAEQAAAA8AAAANAAAADQAAABEAAAAPAAAADQAAAA0AAAARAAAADwAAAA0AAAANAAAAEQAAAA8AAAANAAAADQAAABEAAAAPAAAADQAAAA0AAAARAAAADwAAAA0AAAANAAAAEQAAAA8AAAANAAAADQAAABEAAAAPAAAADQAAAA0AAAARAAAADwAAAA0AAAANAAAAEQAAAA8AAAANAAAADQAAABEAAAAPAAAADQAAAA0AAAARAAAADwAAAA0AAAANAAAAEQAAAA8AAAANAAAADQAAABEAAAANAAAADQAAAQBzdGNvAAAAAAAAADwAAAAwAAADZAAAA3QAAAONAAADoAAAA7kAAAPQAAAD6wAAA/4AAAQXAAAELgAABEMAAARcAAAEbwAABIwAAAShAAAEugAABM0AAATkAAAE/wAABRIAAAUrAAAFQgAABV0AAAVwAAAFiQAABaAAAAW1AAAFzgAABeEAAAX+AAAGEwAABiwAAAY/AAAGVgAABnEAAAaEAAAGnQAABrQAAAbPAAAG4gAABvUAAAcSAAAHJwAAB0AAAAdTAAAHcAAAB4UAAAeeAAAHsQAAB8gAAAfjAAAH9gAACA8AAAgmAAAIQQAACFQAAAhnAAAIhAAACJcAAAMsdHJhawAAAFx0a2hkAAAAA9WAgl/VgIJfAAAAAgAAAAAAAAf8AAAAAAAAAAAAAAABAQAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAACsm1kaWEAAAAgbWRoZAAAAADVgIJf1YCCXwAArEQAAWAAVcQAAAAAACdoZGxyAAAAAAAAAABzb3VuAAAAAAAAAAAAAAAAU3RlcmVvAAAAAmNtaW5mAAAAEHNtaGQAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAidzdGJsAAAAZ3N0c2QAAAAAAAAAAQAAAFdtcDRhAAAAAAAAAAEAAAAAAAAAAAACABAAAAAArEQAAAAAADNlc2RzAAAAAAOAgIAiAAIABICAgBRAFQAAAAADDUAAAAAABYCAgAISEAaAgIABAgAAABhzdHRzAAAAAAAAAAEAAABYAAAEAAAAABxzdHNjAAAAAAAAAAEAAAABAAAAAQAAAAEAAAAUc3RzegAAAAAAAAAGAAAAWAAAAXBzdGNvAAAAAAAAAFgAAAOBAAADhwAAA5oAAAOtAAADswAAA8oAAAPfAAAD5QAAA/gAAAQLAAAEEQAABCgAAAQ9AAAEUAAABFYAAARpAAAEgAAABIYAAASbAAAErgAABLQAAATHAAAE3gAABPMAAAT5AAAFDAAABR8AAAUlAAAFPAAABVEAAAVXAAAFagAABX0AAAWDAAAFmgAABa8AAAXCAAAFyAAABdsAAAXyAAAF+AAABg0AAAYgAAAGJgAABjkAAAZQAAAGZQAABmsAAAZ+AAAGkQAABpcAAAauAAAGwwAABskAAAbcAAAG7wAABwYAAAcMAAAHIQAABzQAAAc6AAAHTQAAB2QAAAdqAAAHfwAAB5IAAAeYAAAHqwAAB8IAAAfXAAAH3QAAB/AAAAgDAAAICQAACCAAAAg1AAAIOwAACE4AAAhhAAAIeAAACH4AAAiRAAAIpAAACKoAAAiwAAAItgAACLwAAAjCAAAAFnVkdGEAAAAObmFtZVN0ZXJlbwAAAHB1ZHRhAAAAaG1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAAO2lsc3QAAAAzqXRvbwAAACtkYXRhAAAAAQAAAABIYW5kQnJha2UgMC4xMC4yIDIwMTUwNjExMDA='})])})});var NoSleep$1=unwrapExports$$1(NoSleep);var nextDisplayId=1000;var defaultLeftBounds=[0,0,0.5,1];var defaultRightBounds=[0.5,0,0.5,1];var raf=window.requestAnimationFrame;var caf=window.cancelAnimationFrame;function VRFrameData(){this.leftProjectionMatrix=new Float32Array(16);
3273this.leftViewMatrix=new Float32Array(16);this.rightProjectionMatrix=new Float32Array(16);this.rightViewMatrix=new Float32Array(16);this.pose=null}
3274function VRDisplayCapabilities(config){Object.defineProperties(this,{hasPosition:{writable:!1,enumerable:!0,value:config.hasPosition},hasExternalDisplay:{writable:!1,enumerable:!0,value:config.hasExternalDisplay},canPresent:{writable:!1,enumerable:!0,value:config.canPresent},maxLayers:{writable:!1,enumerable:!0,value:config.maxLayers},hasOrientation:{enumerable:!0,get:function get(){deprecateWarning('VRDisplayCapabilities.prototype.hasOrientation','VRDisplay.prototype.getFrameData');return config.hasOrientation}}})}
3275function VRDisplay(config){config=config||{};var USE_WAKELOCK='wakelock' in config?config.wakelock:!0;this.isPolyfilled=!0;this.displayId=nextDisplayId++;this.displayName='';this.depthNear=0.01;this.depthFar=10000.0;this.isPresenting=!1;Object.defineProperty(this,'isConnected',{get:function get(){deprecateWarning('VRDisplay.prototype.isConnected','VRDisplayCapabilities.prototype.hasExternalDisplay');return!1}});this.capabilities=new VRDisplayCapabilities({hasPosition:!1,hasOrientation:!1,hasExternalDisplay:!1,canPresent:!1,maxLayers:1});this.stageParameters=null;this.waitingForPresent_=!1;this.layer_=null;this.originalParent_=null;this.fullscreenElement_=null;this.fullscreenWrapper_=null;this.fullscreenElementCachedStyle_=null;this.fullscreenEventTarget_=null;this.fullscreenChangeHandler_=null;this.fullscreenErrorHandler_=null;if(USE_WAKELOCK&&isMobile()){this.wakelock_=new NoSleep$1()}}
3276VRDisplay.prototype.getFrameData=function(frameData){return frameDataFromPose(frameData,this._getPose(),this)};VRDisplay.prototype.getPose=function(){deprecateWarning('VRDisplay.prototype.getPose','VRDisplay.prototype.getFrameData');return this._getPose()};VRDisplay.prototype.resetPose=function(){deprecateWarning('VRDisplay.prototype.resetPose');return this._resetPose()};VRDisplay.prototype.getImmediatePose=function(){deprecateWarning('VRDisplay.prototype.getImmediatePose','VRDisplay.prototype.getFrameData');return this._getPose()};VRDisplay.prototype.requestAnimationFrame=function(callback){return raf(callback)};VRDisplay.prototype.cancelAnimationFrame=function(id){return caf(id)};VRDisplay.prototype.wrapForFullscreen=function(element){if(isIOS()){return element}
3277if(!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')}
3278if(this.fullscreenElement_==element){return this.fullscreenWrapper_}
3279if(this.fullscreenElement_){if(this.originalParent_){this.originalParent_.appendChild(this.fullscreenElement_)}else{this.fullscreenElement_.parentElement.removeChild(this.fullscreenElement_)}}
3280this.fullscreenElement_=element;this.originalParent_=element.parentElement;if(!this.originalParent_){document.body.appendChild(element)}
3281if(!this.fullscreenWrapper_.parentElement){var parent=this.fullscreenElement_.parentElement;parent.insertBefore(this.fullscreenWrapper_,this.fullscreenElement_);parent.removeChild(this.fullscreenElement_)}
3282this.fullscreenWrapper_.insertBefore(this.fullscreenElement_,this.fullscreenWrapper_.firstChild);this.fullscreenElementCachedStyle_=this.fullscreenElement_.getAttribute('style');var self=this;function applyFullscreenElementStyle(){if(!self.fullscreenElement_){return}
3283var 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('; ')+';')}
3284applyFullscreenElementStyle();return this.fullscreenWrapper_};VRDisplay.prototype.removeFullscreenWrapper=function(){if(!this.fullscreenElement_){return}
3285var element=this.fullscreenElement_;if(this.fullscreenElementCachedStyle_){element.setAttribute('style',this.fullscreenElementCachedStyle_)}else{element.removeAttribute('style')}
3286this.fullscreenElement_=null;this.fullscreenElementCachedStyle_=null;var parent=this.fullscreenWrapper_.parentElement;this.fullscreenWrapper_.removeChild(element);if(this.originalParent_===parent){parent.insertBefore(element,this.fullscreenWrapper_)}else if(this.originalParent_){this.originalParent_.appendChild(element)}
3287parent.removeChild(this.fullscreenWrapper_);return element};VRDisplay.prototype.requestPresent=function(layers){var wasPresenting=this.isPresenting;var self=this;if(!(layers instanceof Array)){deprecateWarning('VRDisplay.prototype.requestPresent with non-array argument','an array of VRLayers as the first argument');layers=[layers]}
3288return new Promise(function(resolve,reject){if(!self.capabilities.canPresent){reject(new Error('VRDisplay is not capable of presenting.'));return}
3289if(layers.length==0||layers.length>self.capabilities.maxLayers){reject(new Error('Invalid number of layers.'));return}
3290var incomingLayer=layers[0];if(!incomingLayer.source){resolve();return}
3291var leftBounds=incomingLayer.leftBounds||defaultLeftBounds;var rightBounds=incomingLayer.rightBounds||defaultRightBounds;if(wasPresenting){var layer=self.layer_;if(layer.source!==incomingLayer.source){layer.source=incomingLayer.source}
3292for(var i=0;i<4;i++){layer.leftBounds[i]=leftBounds[i];layer.rightBounds[i]=rightBounds[i]}
3293self.wrapForFullscreen(self.layer_.source);
3293self.updatePresent_();resolve();return}
3294self.layer_={predistorted:incomingLayer.predistorted,source:incomingLayer.source,leftBounds:leftBounds.slice(0),rightBounds:rightBounds.slice(0)};self.waitingForPresent_=!1;if(self.layer_&&self.layer_.source){var fullscreenElement=self.wrapForFullscreen(self.layer_.source);var onFullscreenChange=function onFullscreenChange(){var actualFullscreenElement=getFullscreenElement();self.isPresenting=fullscreenElement===actualFullscreenElement;if(self.isPresenting){if(screen.orientation&&screen.orientation.lock){screen.orientation.lock('landscape-primary').catch(function(error){console.error('screen.orientation.lock() failed due to',error.message)})}
3295self.waitingForPresent_=!1;self.beginPresent_();resolve()}else{if(screen.orientation&&screen.orientation.unlock){screen.orientation.unlock()}
3296self.removeFullscreenWrapper();self.disableWakeLock();self.endPresent_();self.removeFullscreenListeners_()}
3297self.fireVRDisplayPresentChange_()};var onFullscreenError=function onFullscreenError(){if(!self.waitingForPresent_){return}
3298self.removeFullscreenWrapper();self.removeFullscreenListeners_();self.disableWakeLock();self.waitingForPresent_=!1;self.isPresenting=!1;reject(new Error('Unable to present.'))};self.addFullscreenListeners_(fullscreenElement,onFullscreenChange,onFullscreenError);if(requestFullscreen(fullscreenElement)){self.enableWakeLock();self.waitingForPresent_=!0}else if(isIOS()||isWebViewAndroid()){self.enableWakeLock();self.isPresenting=!0;self.beginPresent_();self.fireVRDisplayPresentChange_();resolve()}}
3299if(!self.waitingForPresent_&&!isIOS()){exitFullscreen();reject(new Error('Unable to present.'))}})};VRDisplay.prototype.exitPresent=function(){var wasPresenting=this.isPresenting;var self=this;this.isPresenting=!1;this.layer_=null;this.disableWakeLock();return new Promise(function(resolve,reject){if(wasPresenting){if(!exitFullscreen()&&isIOS()){self.endPresent_();self.fireVRDisplayPresentChange_()}
3300if(isWebViewAndroid()){self.removeFullscreenWrapper();self.removeFullscreenListeners_();self.endPresent_();self.fireVRDisplayPresentChange_()}
3301resolve()}else{reject(new Error('Was not presenting to VRDisplay.'))}})};VRDisplay.prototype.getLayers=function(){if(this.layer_){return[this.layer_]}
3302return[]};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;if(changeHandler){if(document.fullscreenEnabled){element.addEventListener('fullscreenchange',changeHandler,!1)}else if(document.webkitFullscreenEnabled){element.addEventListener('webkitfullscreenchange',changeHandler,!1)}else if(document.mozFullScreenEnabled){document.addEventListener('mozfullscreenchange',changeHandler,!1)}else if(document.msFullscreenEnabled){element.addEventListener('msfullscreenchange',changeHandler,!1)}}
3303if(errorHandler){if(document.fullscreenEnabled){element.addEventListener('fullscreenerror',errorHandler,!1)}else if(document.webkitFullscreenEnabled){element.addEventListener('webkitfullscreenerror',errorHandler,!1)}else if(document.mozFullScreenEnabled){document.addEventListener('mozfullscreenerror',errorHandler,!1)}else if(document.msFullscreenEnabled){element.addEventListener('msfullscreenerror',errorHandler,!1)}}};VRDisplay.prototype.removeFullscreenListeners_=function(){if(!this.fullscreenEventTarget_)return;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)}
3304if(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)}
3305this.fullscreenEventTarget_=null;this.fullscreenChangeHandler_=null;this.fullscreenErrorHandler_=null};VRDisplay.prototype.enableWakeLock=function(){if(this.wakelock_){this.wakelock_.enable()}};VRDisplay.prototype.disableWakeLock=function(){if(this.wakelock_){this.wakelock_.disable()}};VRDisplay.prototype.beginPresent_=function(){};VRDisplay.prototype.endPresent_=function(){};VRDisplay.prototype.submitFrame=function(pose){};VRDisplay.prototype.getEyeParameters=function(whichEye){return null};var config={ADDITIONAL_VIEWERS:[],DEFAULT_VIEWER:'',MOBILE_WAKE_LOCK:!0,DEBUG:!1,DPDB_URL:'https://dpdb.webvr.rocks/dpdb.json',K_FILTER:0.98,PREDICTION_TIME_S:0.040,CARDBOARD_UI_DISABLED:!1,ROTATE_INSTRUCTIONS_DISABLED:!1,YAW_ONLY:!1,BUFFER_SCALE:0.5,DIRTY_SUBMIT_FRAME_BINDINGS:!1};var Eye={LEFT:'left',RIGHT:'right'};function CardboardVRDisplay(config$$1){var defaults=extend({},config);config$$1=extend(defaults,config$$1||{});VRDisplay.call(this,{wakelock:config$$1.MOBILE_WAKE_LOCK});this.config=config$$1;this.displayName='Cardboard VRDisplay';this.capabilities=new VRDisplayCapabilities({hasPosition:!1,hasOrientation:!0,hasExternalDisplay:!1,canPresent:!0,maxLayers:1});this.stageParameters=null;this.bufferScale_=this.config.BUFFER_SCALE;this.poseSensor_=new PoseSensor(this.config);this.distorter_=null;this.cardboardUI_=null;this.dpdb_=new Dpdb(this.config.DPDB_URL,this.onDeviceParamsUpdated_.bind(this));this.deviceInfo_=new DeviceInfo(this.dpdb_.getDeviceParams(),config$$1.ADDITIONAL_VIEWERS);this.viewerSelector_=new ViewerSelector(config$$1.DEFAULT_VIEWER);this.viewerSelector_.onChange(this.onViewerChanged_.bind(this));this.deviceInfo_.setViewer(this.viewerSelector_.getCurrentViewer());if(!this.config.ROTATE_INSTRUCTIONS_DISABLED){this.rotateInstructions_=new RotateInstructions()}
3306if(isIOS()){window.addEventListener('resize',this.onResize_.bind(this))}}
3307CardboardVRDisplay.prototype=Object.create(VRDisplay.prototype);CardboardVRDisplay.prototype._getPose=function(){return{position:null,orientation:this.poseSensor_.getOrientation(),linearVelocity:null,linearAcceleration:null,angularVelocity:null,angularAcceleration:null}};
3307CardboardVRDisplay.prototype._resetPose=function(){if(this.poseSensor_.resetPose){this.poseSensor_.resetPose()}};CardboardVRDisplay.prototype._getFieldOfView=function(whichEye){var fieldOfView;if(whichEye==Eye.LEFT){fieldOfView=this.deviceInfo_.getFieldOfViewLeftEye()}else if(whichEye==Eye.RIGHT){fieldOfView=this.deviceInfo_.getFieldOfViewRightEye()}else{console.error('Invalid eye provided: %s',whichEye);return null}
3308return fieldOfView};CardboardVRDisplay.prototype._getEyeOffset=function(whichEye){var offset;if(whichEye==Eye.LEFT){offset=[-this.deviceInfo_.viewer.interLensDistance*0.5,0.0,0.0]}else if(whichEye==Eye.RIGHT){offset=[this.deviceInfo_.viewer.interLensDistance*0.5,0.0,0.0]}else{console.error('Invalid eye provided: %s',whichEye);return null}
3309return offset};CardboardVRDisplay.prototype.getEyeParameters=function(whichEye){var offset=this._getEyeOffset(whichEye);var fieldOfView=this._getFieldOfView(whichEye);var eyeParams={offset:offset,renderWidth:this.deviceInfo_.device.width*0.5*this.bufferScale_,renderHeight:this.deviceInfo_.device.height*this.bufferScale_};Object.defineProperty(eyeParams,'fieldOfView',{enumerable:!0,get:function get(){deprecateWarning('VRFieldOfView','VRFrameData\'s projection matrices');return fieldOfView}});return eyeParams};CardboardVRDisplay.prototype.onDeviceParamsUpdated_=function(newParams){if(this.config.DEBUG){console.log('DPDB reported that device params were updated.')}
3310this.deviceInfo_.updateDeviceParams(newParams);if(this.distorter_){this.distorter_.updateDeviceInfo(this.deviceInfo_)}};CardboardVRDisplay.prototype.updateBounds_=function(){if(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');if(!gl)gl=this.layer_.source.getContext('experimental-webgl');if(!gl)gl=this.layer_.source.getContext('webgl2');if(!gl)return;if(this.layer_.predistorted){if(!this.config.CARDBOARD_UI_DISABLED){gl.canvas.width=getScreenWidth()*this.bufferScale_;gl.canvas.height=getScreenHeight()*this.bufferScale_;this.cardboardUI_=new CardboardUI(gl)}}else{if(!this.config.CARDBOARD_UI_DISABLED){this.cardboardUI_=new CardboardUI(gl)}
3311this.distorter_=new CardboardDistorter(gl,this.cardboardUI_,this.config.BUFFER_SCALE,this.config.DIRTY_SUBMIT_FRAME_BINDINGS);this.distorter_.updateDeviceInfo(this.deviceInfo_)}
3312if(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))}
3313if(this.rotateInstructions_){if(isLandscapeMode()&&isMobile()){this.rotateInstructions_.showTemporarily(3000,this.layer_.source.parentElement)}else{this.rotateInstructions_.update()}}
3314this.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(){if(this.distorter_){this.distorter_.destroy();this.distorter_=null}
3315if(this.cardboardUI_){this.cardboardUI_.destroy();this.cardboardUI_=null}
3316if(this.rotateInstructions_){this.rotateInstructions_.hide()}
3317this.viewerSelector_.hide();window.removeEventListener('orientationchange',this.orientationHandler);window.removeEventListener('vrdisplaypresentchange',this.vrdisplaypresentchangeHandler)};CardboardVRDisplay.prototype.updatePresent_=function(){this.endPresent_();this.beginPresent_()};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;if(canvas.width!=this.lastWidth||canvas.height!=this.lastHeight){this.cardboardUI_.onResize()}
3318this.lastWidth=canvas.width;this.lastHeight=canvas.height;this.cardboardUI_.render()}};CardboardVRDisplay.prototype.onOrientationChange_=function(e){this.viewerSelector_.hide();
3318if(this.rotateInstructions_){this.rotateInstructions_.update()}
3319this.onResize_()};CardboardVRDisplay.prototype.onResize_=function(e){if(this.layer_){var gl=this.layer_.source.getContext('webgl');var 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('; ')+';');safariCssSizeWorkaround(gl.canvas)}};CardboardVRDisplay.prototype.onViewerChanged_=function(viewer){this.deviceInfo_.setViewer(viewer);if(this.distorter_){this.distorter_.updateDeviceInfo(this.deviceInfo_)}
3320this.fireVRDisplayDeviceParamsChange_()};CardboardVRDisplay.prototype.fireVRDisplayDeviceParamsChange_=function(){var event=new CustomEvent('vrdisplaydeviceparamschange',{detail:{vrdisplay:this,deviceInfo:this.deviceInfo_}});window.dispatchEvent(event)};CardboardVRDisplay.VRFrameData=VRFrameData;CardboardVRDisplay.VRDisplay=VRDisplay;return CardboardVRDisplay})))});var CardboardVRDisplay=unwrapExports(cardboardVrDisplay);var version="0.10.6";var DefaultConfig={ADDITIONAL_VIEWERS:[],DEFAULT_VIEWER:'',PROVIDE_MOBILE_VRDISPLAY:!0,GET_VR_DISPLAYS_TIMEOUT:1000,MOBILE_WAKE_LOCK:!0,DEBUG:!1,DPDB_URL:'https://dpdb.webvr.rocks/dpdb.json',K_FILTER:0.98,PREDICTION_TIME_S:0.040,TOUCH_PANNER_DISABLED:!0,CARDBOARD_UI_DISABLED:!1,ROTATE_INSTRUCTIONS_DISABLED:!1,YAW_ONLY:!1,BUFFER_SCALE:0.5,DIRTY_SUBMIT_FRAME_BINDINGS:!1};function WebVRPolyfill(config){this.config=extend(extend({},DefaultConfig),config);this.polyfillDisplays=[];this.enabled=!1;this.hasNative='getVRDisplays' in navigator;this.native={};this.native.getVRDisplays=navigator.getVRDisplays;this.native.VRFrameData=window.VRFrameData;this.native.VRDisplay=window.VRDisplay;if(!this.hasNative||this.config.PROVIDE_MOBILE_VRDISPLAY&&isMobile()){this.enable();this.getVRDisplays().then(function(displays){if(displays&&displays[0]&&displays[0].fireVRDisplayConnect_){displays[0].fireVRDisplayConnect_()}})}}
3321WebVRPolyfill.prototype.getPolyfillDisplays=function(){if(this._polyfillDisplaysPopulated){return this.polyfillDisplays}
3322if(isMobile()){var vrDisplay=new CardboardVRDisplay({ADDITIONAL_VIEWERS:this.config.ADDITIONAL_VIEWERS,DEFAULT_VIEWER:this.config.DEFAULT_VIEWER,MOBILE_WAKE_LOCK:this.config.MOBILE_WAKE_LOCK,DEBUG:this.config.DEBUG,DPDB_URL:this.config.DPDB_URL,CARDBOARD_UI_DISABLED:this.config.CARDBOARD_UI_DISABLED,K_FILTER:this.config.K_FILTER,PREDICTION_TIME_S:this.config.PREDICTION_TIME_S,TOUCH_PANNER_DISABLED:this.config.TOUCH_PANNER_DISABLED,ROTATE_INSTRUCTIONS_DISABLED:this.config.ROTATE_INSTRUCTIONS_DISABLED,YAW_ONLY:this.config.YAW_ONLY,BUFFER_SCALE:this.config.BUFFER_SCALE,DIRTY_SUBMIT_FRAME_BINDINGS:this.config.DIRTY_SUBMIT_FRAME_BINDINGS});this.polyfillDisplays.push(vrDisplay)}
3323this._polyfillDisplaysPopulated=!0;return this.polyfillDisplays};WebVRPolyfill.prototype.enable=function(){this.enabled=!0;if(this.hasNative&&this.native.VRFrameData){var NativeVRFrameData=this.native.VRFrameData;var nativeFrameData=new this.native.VRFrameData();var nativeGetFrameData=this.native.VRDisplay.prototype.getFrameData;window.VRDisplay.prototype.getFrameData=function(frameData){if(frameData instanceof NativeVRFrameData){nativeGetFrameData.call(this,frameData);return}
3324nativeGetFrameData.call(this,nativeFrameData);frameData.pose=nativeFrameData.pose;copyArray(nativeFrameData.leftProjectionMatrix,frameData.leftProjectionMatrix);copyArray(nativeFrameData.rightProjectionMatrix,frameData.rightProjectionMatrix);copyArray(nativeFrameData.leftViewMatrix,frameData.leftViewMatrix);copyArray(nativeFrameData.rightViewMatrix,frameData.rightViewMatrix)}}
3325navigator.getVRDisplays=this.getVRDisplays.bind(this);window.VRDisplay=CardboardVRDisplay.VRDisplay;window.VRFrameData=CardboardVRDisplay.VRFrameData};WebVRPolyfill.prototype.getVRDisplays=function(){var _this=this;var config=this.config;if(!this.hasNative){return Promise.resolve(this.getPolyfillDisplays())}
3326var timeoutId;var vrDisplaysNative=this.native.getVRDisplays.call(navigator);var timeoutPromise=new Promise(function(resolve){timeoutId=setTimeout(function(){console.warn('Native WebVR implementation detected, but `getVRDisplays()` failed to resolve. Falling back to polyfill.');resolve([])},config.GET_VR_DISPLAYS_TIMEOUT)});return race([vrDisplaysNative,timeoutPromise]).then(function(nativeDisplays){clearTimeout(timeoutId);return nativeDisplays.length>0?nativeDisplays:_this.getPolyfillDisplays()})};WebVRPolyfill.version=version;WebVRPolyfill.VRFrameData=CardboardVRDisplay.VRFrameData;WebVRPolyfill.VRDisplay=CardboardVRDisplay.VRDisplay;var webvrPolyfill=Object.freeze({default:WebVRPolyfill});var require$$0=(webvrPolyfill&&WebVRPolyfill)||webvrPolyfill;if(typeof commonjsGlobal$1!=='undefined'&&commonjsGlobal$1.window){if(!commonjsGlobal$1.document){commonjsGlobal$1.document=commonjsGlobal$1.window.document}
3327if(!commonjsGlobal$1.navigator){commonjsGlobal$1.navigator=commonjsGlobal$1.window.navigator}}
3328var src=require$$0;return src})))});var WebVRPolyfill=unwrapExports(webvrPolyfill);if(Number.EPSILON===undefined){Number.EPSILON=Math.pow(2,-52)}
3329if(Number.isInteger===undefined){Number.isInteger=function(value){return typeof value==='number'&&isFinite(value)&&Math.floor(value)===value}}
3330if(Math.sign===undefined){Math.sign=function(x){return(x<0)?-1:(x>0)?1:+x}}
3331if('name' in Function.prototype===!1){Object.defineProperty(Function.prototype,'name',{get:function(){return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]}})}
3332if(Object.assign===undefined){(function(){Object.assign=function(target){if(target===undefined||target===null){throw new TypeError('Cannot convert undefined or null to object')}
3333var output=Object(target);for(var index=1;index<arguments.length;index ++){var source=arguments[index];if(source!==undefined&&source!==null){for(var nextKey in source){if(Object.prototype.hasOwnProperty.call(source,nextKey)){output[nextKey]=source[nextKey]}}}}
3334return output}})()}
3335function EventDispatcher(){}
3336Object.assign(EventDispatcher.prototype,{addEventListener:function(type,listener){if(this._listeners===undefined)this._listeners={};var listeners=this._listeners;if(listeners[type]===undefined){listeners[type]=[]}
3337if(listeners[type].indexOf(listener)===-1){listeners[type].push(listener)}},hasEventListener:function(type,listener){if(this._listeners===undefined)return!1;var listeners=this._listeners;return listeners[type]!==undefined&&listeners[type].indexOf(listener)!==-1},removeEventListener:function(type,listener){if(this._listeners===undefined)return;var listeners=this._listeners;var listenerArray=listeners[type];if(listenerArray!==undefined){var index=listenerArray.indexOf(listener);if(index!==-1){listenerArray.splice(index,1)}}},dispatchEvent:function(event){if(this._listeners===undefined)return;var listeners=this._listeners;var listenerArray=listeners[event.type];if(listenerArray!==undefined){event.target=this;var array=listenerArray.slice(0);for(var i=0,l=array.length;i<l;i ++){array[i].call(this,event)}}}});var REVISION='93';var MOUSE={LEFT:0,MIDDLE:1,RIGHT:2};var CullFaceNone=0;var CullFaceBack=1;var CullFaceFront=2;var PCFShadowMap=1;var PCFSoftShadowMap=2;var FrontSide=0;var BackSide=1;var DoubleSide=2;var FlatShading=1;var NoColors=0;var FaceColors=1;var VertexColors=2;var NoBlending=0;var NormalBlending=1;var AdditiveBlending=2;var SubtractiveBlending=3;var MultiplyBlending=4;var CustomBlending=5;var AddEquation=100;var SubtractEquation=101;
3337var ReverseSubtractEquation=102;var MinEquation=103;var MaxEquation=104;var ZeroFactor=200;var OneFactor=201;var SrcColorFactor=202;var OneMinusSrcColorFactor=203;var SrcAlphaFactor=204;var OneMinusSrcAlphaFactor=205;var DstAlphaFactor=206;var OneMinusDstAlphaFactor=207;var DstColorFactor=208;var OneMinusDstColorFactor=209;var SrcAlphaSaturateFactor=210;var NeverDepth=0;var AlwaysDepth=1;var LessDepth=2;var LessEqualDepth=3;var EqualDepth=4;var GreaterEqualDepth=5;var GreaterDepth=6;var NotEqualDepth=7;var MultiplyOperation=0;var MixOperation=1;var AddOperation=2;var NoToneMapping=0;var LinearToneMapping=1;var ReinhardToneMapping=2;var Uncharted2ToneMapping=3;var CineonToneMapping=4;var UVMapping=300;var CubeReflectionMapping=301;var CubeRefractionMapping=302;var EquirectangularReflectionMapping=303;var EquirectangularRefractionMapping=304;var SphericalReflectionMapping=305;var CubeUVReflectionMapping=306;var CubeUVRefractionMapping=307;var RepeatWrapping=1000;var ClampToEdgeWrapping=1001;var MirroredRepeatWrapping=1002;var NearestFilter=1003;var NearestMipMapNearestFilter=1004;var NearestMipMapLinearFilter=1005;var LinearFilter=1006;var LinearMipMapNearestFilter=1007;var LinearMipMapLinearFilter=1008;var UnsignedByteType=1009;var ByteType=1010;var ShortType=1011;var UnsignedShortType=1012;var IntType=1013;var UnsignedIntType=1014;var FloatType=1015;var HalfFloatType=1016;var UnsignedShort4444Type=1017;var UnsignedShort5551Type=1018;var UnsignedShort565Type=1019;var UnsignedInt248Type=1020;var AlphaFormat=1021;var RGBFormat=1022;var RGBAFormat=1023;var LuminanceFormat=1024;var LuminanceAlphaFormat=1025;var DepthFormat=1026;var DepthStencilFormat=1027;var RGB_S3TC_DXT1_Format=33776;var RGBA_S3TC_DXT1_Format=33777;var RGBA_S3TC_DXT3_Format=33778;var RGBA_S3TC_DXT5_Format=33779;var RGB_PVRTC_4BPPV1_Format=35840;var RGB_PVRTC_2BPPV1_Format=35841;var RGBA_PVRTC_4BPPV1_Format=35842;var RGBA_PVRTC_2BPPV1_Format=35843;var RGB_ETC1_Format=36196;var RGBA_ASTC_4x4_Format=37808;var RGBA_ASTC_5x4_Format=37809;var RGBA_ASTC_5x5_Format=37810;var RGBA_ASTC_6x5_Format=37811;var RGBA_ASTC_6x6_Format=37812;var RGBA_ASTC_8x5_Format=37813;var RGBA_ASTC_8x6_Format=37814;var RGBA_ASTC_8x8_Format=37815;var RGBA_ASTC_10x5_Format=37816;var RGBA_ASTC_10x6_Format=37817;var RGBA_ASTC_10x8_Format=37818;var RGBA_ASTC_10x10_Format=37819;var RGBA_ASTC_12x10_Format=37820;var RGBA_ASTC_12x12_Format=37821;var LoopOnce=2200;var LoopRepeat=2201;var LoopPingPong=2202;var InterpolateDiscrete=2300;var InterpolateLinear=2301;var InterpolateSmooth=2302;var ZeroCurvatureEnding=2400;var ZeroSlopeEnding=2401;var WrapAroundEnding=2402;var TrianglesDrawMode=0;var TriangleStripDrawMode=1;var TriangleFanDrawMode=2;var LinearEncoding=3000;var sRGBEncoding=3001;var GammaEncoding=3007;var RGBEEncoding=3002;var RGBM7Encoding=3004;var RGBM16Encoding=3005;var RGBDEncoding=3006;var BasicDepthPacking=3200;var RGBADepthPacking=3201;var _Math={DEG2RAD:Math.PI/180,RAD2DEG:180/Math.PI,generateUUID:(function(){var lut=[];for(var i=0;i<256;i ++){lut[i]=(i<16?'0':'')+(i).toString(16)}
3338return function generateUUID(){var d0=Math.random()*0xffffffff|0;var d1=Math.random()*0xffffffff|0;var d2=Math.random()*0xffffffff|0;var d3=Math.random()*0xffffffff|0;var uuid=lut[d0&0xff]+lut[d0>>8&0xff]+lut[d0>>16&0xff]+lut[d0>>24&0xff]+'-'+lut[d1&0xff]+lut[d1>>8&0xff]+'-'+lut[d1>>16&0x0f|0x40]+lut[d1>>24&0xff]+'-'+lut[d2&0x3f|0x80]+lut[d2>>8&0xff]+'-'+lut[d2>>16&0xff]+lut[d2>>24&0xff]+lut[d3&0xff]+lut[d3>>8&0xff]+lut[d3>>16&0xff]+lut[d3>>24&0xff];return uuid.toUpperCase()}})(),clamp:function(value,min,max){return Math.max(min,Math.min(max,value))},euclideanModulo:function(n,m){return((n%m)+m)%m},mapLinear:function(x,a1,a2,b1,b2){return b1+(x-a1)*(b2-b1)/(a2-a1)},lerp:function(x,y,t){return(1-t)*x+t*y},smoothstep:function(x,min,max){if(x<=min)return 0;if(x>=max)return 1;x=(x-min)/(max-min);return x*x*(3-2*x)},smootherstep:function(x,min,max){if(x<=min)return 0;if(x>=max)return 1;x=(x-min)/(max-min);return x*x*x*(x*(x*6-15)+10)},randInt:function(low,high){return low+Math.floor(Math.random()*(high-low+1))},randFloat:function(low,high){return low+Math.random()*(high-low)},randFloatSpread:function(range){return range*(0.5-Math.random())},degToRad:function(degrees){return degrees*_Math.DEG2RAD},radToDeg:function(radians){return radians*_Math.RAD2DEG},isPowerOfTwo:function(value){return(value&(value-1))===0&&value!==0},ceilPowerOfTwo:function(value){return Math.pow(2,Math.ceil(Math.log(value)/Math.LN2))},floorPowerOfTwo:function(value){return Math.pow(2,Math.floor(Math.log(value)/Math.LN2))}};function Vector2(x,y){this.x=x||0;
3338this.y=y||0}
3339Object.defineProperties(Vector2.prototype,{"width":{get:function(){return this.x},set:function(value){this.x=value}},"height":{get:function(){return this.y},set:function(value){this.y=value}}});Object.assign(Vector2.prototype,{isVector2:!0,set:function(x,y){this.x=x;this.y=y;return this},setScalar:function(scalar){this.x=scalar;this.y=scalar;return this},setX:function(x){this.x=x;return this},setY:function(y){this.y=y;return this},setComponent:function(index,value){switch(index){case 0:this.x=value;break;case 1:this.y=value;break;default:throw new Error('index is out of range: '+index)}
3340return this},getComponent:function(index){switch(index){case 0:return this.x;case 1:return this.y;default:throw new Error('index is out of range: '+index)}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(v){this.x=v.x;this.y=v.y;return this},add:function(v,w){if(w!==undefined){console.warn('THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.');return this.addVectors(v,w)}
3341this.x+=v.x;this.y+=v.y;return this},addScalar:function(s){this.x+=s;this.y+=s;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this},addScaledVector:function(v,s){this.x+=v.x*s;this.y+=v.y*s;return this},sub:function(v,w){if(w!==undefined){console.warn('THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.');return this.subVectors(v,w)}
3342this.x-=v.x;this.y-=v.y;return this},subScalar:function(s){this.x-=s;this.y-=s;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},multiply:function(v){this.x*=v.x;this.y*=v.y;return this},multiplyScalar:function(scalar){this.x*=scalar;this.y*=scalar;return this},divide:function(v){this.x/=v.x;this.y/=v.y;return this},divideScalar:function(scalar){return this.multiplyScalar(1/scalar)},applyMatrix3:function(m){var x=this.x,y=this.y;var e=m.elements;this.x=e[0]*x+e[3]*y+e[6];this.y=e[1]*x+e[4]*y+e[7];return this},min:function(v){this.x=Math.min(this.x,v.x);this.y=Math.min(this.y,v.y);return this},max:function(v){this.x=Math.max(this.x,v.x);this.y=Math.max(this.y,v.y);return this},clamp:function(min,max){this.x=Math.max(min.x,Math.min(max.x,this.x));this.y=Math.max(min.y,Math.min(max.y,this.y));return this},clampScalar:function(){var min=new Vector2();var max=new Vector2();return function clampScalar(minVal,maxVal){min.set(minVal,minVal);max.set(maxVal,maxVal);return this.clamp(min,max)}}(),clampLength:function(min,max){var length=this.length();return this.divideScalar(length||1).multiplyScalar(Math.max(min,Math.min(max,length)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this},roundToZero:function(){this.x=(this.x<0)?Math.ceil(this.x):Math.floor(this.x);this.y=(this.y<0)?Math.ceil(this.y):Math.floor(this.y);return this},negate:function(){this.x=-this.x;this.y=-this.y;return this},dot:function(v){return this.x*v.x+this.y*v.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length()||1)},angle:function(){var angle=Math.atan2(this.y,this.x);if(angle<0)angle+=2*Math.PI;return angle},distanceTo:function(v){return Math.sqrt(this.distanceToSquared(v))},distanceToSquared:function(v){var dx=this.x-v.x,dy=this.y-v.y;return dx*dx+dy*dy},manhattanDistanceTo:function(v){return Math.abs(this.x-v.x)+Math.abs(this.y-v.y)},setLength:function(length){return this.normalize().multiplyScalar(length)},lerp:function(v,alpha){this.x+=(v.x-this.x)*alpha;this.y+=(v.y-this.y)*alpha;return this},lerpVectors:function(v1,v2,alpha){return this.subVectors(v2,v1).multiplyScalar(alpha).add(v1)},equals:function(v){return((v.x===this.x)&&(v.y===this.y))},fromArray:function(array,offset){if(offset===undefined)offset=0;this.x=array[offset];this.y=array[offset+1];return this},toArray:function(array,offset){if(array===undefined)array=[];if(offset===undefined)offset=0;array[offset]=this.x;array[offset+1]=this.y;return array},fromBufferAttribute:function(attribute,index,offset){if(offset!==undefined){console.warn('THREE.Vector2: offset has been removed from .fromBufferAttribute().')}
3343this.x=attribute.getX(index);this.y=attribute.getY(index);return this}
3343,rotateAround:function(center,angle){var c=Math.cos(angle),s=Math.sin(angle);var x=this.x-center.x;var y=this.y-center.y;this.x=x*c-y*s+center.x;this.y=x*s+y*c+center.y;return this}});function Matrix4(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];if(arguments.length>0){console.error('THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.')}}
3344Object.assign(Matrix4.prototype,{isMatrix4:!0,set:function(n11,n12,n13,n14,n21,n22,n23,n24,n31,n32,n33,n34,n41,n42,n43,n44){var te=this.elements;te[0]=n11;te[4]=n12;te[8]=n13;te[12]=n14;te[1]=n21;te[5]=n22;te[9]=n23;te[13]=n24;te[2]=n31;te[6]=n32;te[10]=n33;te[14]=n34;te[3]=n41;te[7]=n42;te[11]=n43;te[15]=n44;return this},identity:function(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this},clone:function(){return new Matrix4().fromArray(this.elements)},copy:function(m){var te=this.elements;var me=m.elements;te[0]=me[0];te[1]=me[1];te[2]=me[2];te[3]=me[3];te[4]=me[4];te[5]=me[5];te[6]=me[6];te[7]=me[7];te[8]=me[8];te[9]=me[9];te[10]=me[10];te[11]=me[11];te[12]=me[12];te[13]=me[13];te[14]=me[14];te[15]=me[15];return this},copyPosition:function(m){var te=this.elements,me=m.elements;te[12]=me[12];te[13]=me[13];te[14]=me[14];return this},extractBasis:function(xAxis,yAxis,zAxis){xAxis.setFromMatrixColumn(this,0);yAxis.setFromMatrixColumn(this,1);zAxis.setFromMatrixColumn(this,2);return this},makeBasis:function(xAxis,yAxis,zAxis){this.set(xAxis.x,yAxis.x,zAxis.x,0,xAxis.y,yAxis.y,zAxis.y,0,xAxis.z,yAxis.z,zAxis.z,0,0,0,0,1);return this},extractRotation:function(){var v1=new Vector3();return function extractRotation(m){var te=this.elements;var me=m.elements;var scaleX=1/v1.setFromMatrixColumn(m,0).length();var scaleY=1/v1.setFromMatrixColumn(m,1).length();var scaleZ=1/v1.setFromMatrixColumn(m,2).length();te[0]=me[0]*scaleX;te[1]=me[1]*scaleX;te[2]=me[2]*scaleX;te[3]=0;te[4]=me[4]*scaleY;te[5]=me[5]*scaleY;te[6]=me[6]*scaleY;te[7]=0;te[8]=me[8]*scaleZ;te[9]=me[9]*scaleZ;te[10]=me[10]*scaleZ;te[11]=0;te[12]=0;te[13]=0;te[14]=0;te[15]=1;return this}}(),makeRotationFromEuler:function(euler){if(!(euler&&euler.isEuler)){console.error('THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.')}
3345var te=this.elements;var x=euler.x,y=euler.y,z=euler.z;var a=Math.cos(x),b=Math.sin(x);var c=Math.cos(y),d=Math.sin(y);var e=Math.cos(z),f=Math.sin(z);if(euler.order==='XYZ'){var ae=a*e,af=a*f,be=b*e,bf=b*f;te[0]=c*e;te[4]=-c*f;te[8]=d;te[1]=af+be*d;te[5]=ae-bf*d;te[9]=-b*c;te[2]=bf-ae*d;te[6]=be+af*d;te[10]=a*c}else if(euler.order==='YXZ'){var ce=c*e,cf=c*f,de=d*e,df=d*f;te[0]=ce+df*b;te[4]=de*b-cf;te[8]=a*d;te[1]=a*f;te[5]=a*e;te[9]=-b;te[2]=cf*b-de;te[6]=df+ce*b;te[10]=a*c}else if(euler.order==='ZXY'){var ce=c*e,cf=c*f,de=d*e,df=d*f;te[0]=ce-df*b;te[4]=-a*f;te[8]=de+cf*b;te[1]=cf+de*b;te[5]=a*e;te[9]=df-ce*b;te[2]=-a*d;te[6]=b;te[10]=a*c}else if(euler.order==='ZYX'){var ae=a*e,af=a*f,be=b*e,bf=b*f;te[0]=c*e;te[4]=be*d-af;te[8]=ae*d+bf;te[1]=c*f;te[5]=bf*d+ae;te[9]=af*d-be;te[2]=-d;te[6]=b*c;te[10]=a*c}else if(euler.order==='YZX'){var ac=a*c,ad=a*d,bc=b*c,bd=b*d;te[0]=c*e;te[4]=bd-ac*f;te[8]=bc*f+ad;te[1]=f;te[5]=a*e;te[9]=-b*e;te[2]=-d*e;te[6]=ad*f+bc;te[10]=ac-bd*f}else if(euler.order==='XZY'){var ac=a*c,ad=a*d,bc=b*c,bd=b*d;te[0]=c*e;te[4]=-f;te[8]=d*e;te[1]=ac*f+bd;te[5]=a*e;te[9]=ad*f-bc;te[2]=bc*f-ad;te[6]=b*e;te[10]=bd*f+ac}
3346te[3]=0;te[7]=0;te[11]=0;te[12]=0;te[13]=0;te[14]=0;te[15]=1;return this},makeRotationFromQuaternion:function(){var zero=new Vector3(0,0,0);var one=new Vector3(1,1,1);return function makeRotationFromQuaternion(q){return this.compose(zero,q,one)}}(),lookAt:function(){var x=new Vector3();var y=new Vector3();var z=new Vector3();return function lookAt(eye,target,up){var te=this.elements;z.subVectors(eye,target);if(z.lengthSq()===0){z.z=1}
3347z.normalize();x.crossVectors(up,z);if(x.lengthSq()===0){if(Math.abs(up.z)===1){z.x+=0.0001}else{z.z+=0.0001}
3348z.normalize();x.crossVectors(up,z)}
3349x.normalize();y.crossVectors(z,x);te[0]=x.x;te[4]=y.x;te[8]=z.x;te[1]=x.y;te[5]=y.y;te[9]=z.y;te[2]=x.z;te[6]=y.z;te[10]=z.z;return this}}
3349(),multiply:function(m,n){if(n!==undefined){console.warn('THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.');return this.multiplyMatrices(m,n)}
3350return this.multiplyMatrices(this,m)},premultiply:function(m){return this.multiplyMatrices(m,this)},multiplyMatrices:function(a,b){var ae=a.elements;var be=b.elements;var te=this.elements;var a11=ae[0],a12=ae[4],a13=ae[8],a14=ae[12];var a21=ae[1],a22=ae[5],a23=ae[9],a24=ae[13];var a31=ae[2],a32=ae[6],a33=ae[10],a34=ae[14];var a41=ae[3],a42=ae[7],a43=ae[11],a44=ae[15];var b11=be[0],b12=be[4],b13=be[8],b14=be[12];var b21=be[1],b22=be[5],b23=be[9],b24=be[13];var b31=be[2],b32=be[6],b33=be[10],b34=be[14];var b41=be[3],b42=be[7],b43=be[11],b44=be[15];te[0]=a11*b11+a12*b21+a13*b31+a14*b41;te[4]=a11*b12+a12*b22+a13*b32+a14*b42;te[8]=a11*b13+a12*b23+a13*b33+a14*b43;te[12]=a11*b14+a12*b24+a13*b34+a14*b44;te[1]=a21*b11+a22*b21+a23*b31+a24*b41;te[5]=a21*b12+a22*b22+a23*b32+a24*b42;te[9]=a21*b13+a22*b23+a23*b33+a24*b43;te[13]=a21*b14+a22*b24+a23*b34+a24*b44;te[2]=a31*b11+a32*b21+a33*b31+a34*b41;te[6]=a31*b12+a32*b22+a33*b32+a34*b42;te[10]=a31*b13+a32*b23+a33*b33+a34*b43;te[14]=a31*b14+a32*b24+a33*b34+a34*b44;te[3]=a41*b11+a42*b21+a43*b31+a44*b41;te[7]=a41*b12+a42*b22+a43*b32+a44*b42;te[11]=a41*b13+a42*b23+a43*b33+a44*b43;te[15]=a41*b14+a42*b24+a43*b34+a44*b44;return this},multiplyScalar:function(s){var te=this.elements;te[0]*=s;te[4]*=s;te[8]*=s;te[12]*=s;te[1]*=s;te[5]*=s;te[9]*=s;te[13]*=s;te[2]*=s;te[6]*=s;te[10]*=s;te[14]*=s;te[3]*=s;te[7]*=s;te[11]*=s;te[15]*=s;return this},applyToBufferAttribute:function(){var v1=new Vector3();return function applyToBufferAttribute(attribute){for(var i=0,l=attribute.count;i<l;i ++){v1.x=attribute.getX(i);v1.y=attribute.getY(i);v1.z=attribute.getZ(i);v1.applyMatrix4(this);attribute.setXYZ(i,v1.x,v1.y,v1.z)}
3351return attribute}}(),determinant:function(){var te=this.elements;var n11=te[0],n12=te[4],n13=te[8],n14=te[12];var n21=te[1],n22=te[5],n23=te[9],n24=te[13];var n31=te[2],n32=te[6],n33=te[10],n34=te[14];var n41=te[3],n42=te[7],n43=te[11],n44=te[15];return(n41*(+n14*n23*n32-n13*n24*n32-n14*n22*n33+n12*n24*n33+n13*n22*n34-n12*n23*n34)+n42*(+n11*n23*n34-n11*n24*n33+n14*n21*n33-n13*n21*n34+n13*n24*n31-n14*n23*n31)+n43*(+n11*n24*n32-n11*n22*n34-n14*n21*n32+n12*n21*n34+n14*n22*n31-n12*n24*n31)+n44*(-n13*n22*n31-n11*n23*n32+n11*n22*n33+n13*n21*n32-n12*n21*n33+n12*n23*n31))},transpose:function(){var te=this.elements;var tmp;tmp=te[1];te[1]=te[4];te[4]=tmp;tmp=te[2];te[2]=te[8];te[8]=tmp;tmp=te[6];te[6]=te[9];te[9]=tmp;tmp=te[3];te[3]=te[12];te[12]=tmp;tmp=te[7];te[7]=te[13];te[13]=tmp;tmp=te[11];te[11]=te[14];te[14]=tmp;return this},setPosition:function(v){var te=this.elements;te[12]=v.x;
vendor: 4,562 bytes, lines 3351-3353
3351te[13]=v.y;te[14]=v.z;return this},getInverse:function(m,throwOnDegenerate){var te=this.elements,me=m.elements,n11=me[0],n21=me[1],n31=me[2],n41=me[3],n12=me[4],n22=me[5],n32=me[6],n42=me[7],n13=me[8],n23=me[9],n33=me[10],n43=me[11],n14=me[12],n24=me[13],n34=me[14],n44=me[15],t11=n23*n34*n42-n24*n33*n42+n24*n32*n43-n22*n34*n43-n23*n32*n44+n22*n33*n44,t12=n14*n33*n42-n13*n34*n42-n14*n32*n43+n12*n34*n43+n13*n32*n44-n12*n33*n44,t13=n13*n24*n42-n14*n23*n42+n14*n22*n43-n12*n24*n43-n13*n22*n44+n12*n23*n44,t14=n14*n23*n32-n13*n24*n32-n14*n22*n33+n12*n24*n33+n13*n22*n34-n12*n23*n34;var det=n11*t11+n21*t12+n31*t13+n41*t14;if(det===0){var msg="THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0";if(throwOnDegenerate===!0){throw new Error(msg)}else{console.warn(msg)}
3352return this.identity()}
3353var detInv=1/det;te[0]=t11*detInv;te[1]=(n24*n33*n41-n23*n34*n41-n24*n31*n43+n21*n34*n43+n23*n31*n44-n21*n33*n44)*detInv;te[2]=(n22*n34*n41-n24*n32*n41+n24*n31*n42-n21*n34*n42-n22*n31*n44+n21*n32*n44)*detInv;te[3]=(n23*n32*n41-n22*n33*n41-n23*n31*n42+n21*n33*n42+n22*n31*n43-n21*n32*n43)*detInv;te[4]=t12*detInv;te[5]=(n13*n34*n41-n14*n33*n41+n14*n31*n43-n11*n34*n43-n13*n31*n44+n11*n33*n44)*detInv;te[6]=(n14*n32*n41-n12*n34*n41-n14*n31*n42+n11*n34*n42+n12*n31*n44-n11*n32*n44)*detInv;te[7]=(n12*n33*n41-n13*n32*n41+n13*n31*n42-n11*n33*n42-n12*n31*n43+n11*n32*n43)*detInv;te[8]=t13*detInv;te[9]=(n14*n23*n41-n13*n24*n41-n14*n21*n43+n11*n24*n43+n13*n21*n44-n11*n23*n44)*detInv;te[10]=(n12*n24*n41-n14*n22*n41+n14*n21*n42-n11*n24*n42-n12*n21*n44+n11*n22*n44)*detInv;te[11]=(n13*n22*n41-n12*n23*n41-n13*n21*n42+n11*n23*n42+n12*n21*n43-n11*n22*n43)*detInv;te[12]=t14*detInv;te[13]=(n13*n24*n31-n14*n23*n31+n14*n21*n33-n11*n24*n33-n13*n21*n34+n11*n23*n34)*detInv;te[14]=(n14*n22*n31-n12*n24*n31-n14*n21*n32+n11*n24*n32+n12*n21*n34-n11*n22*n34)*detInv;te[15]=(n12*n23*n31-n13*n22*n31+n13*n21*n32-n11*n23*n32-n12*n21*n33+n11*n22*n33)*detInv;return this},scale:function(v){var te=this.elements;var x=v.x,y=v.y,z=v.z;te[0]*=x;te[4]*=y;te[8]*=z;te[1]*=x;te[5]*=y;te[9]*=z;te[2]*=x;te[6]*=y;te[10]*=z;te[3]*=x;te[7]*=y;te[11]*=z;return this},getMaxScaleOnAxis:function(){var te=this.elements;var scaleXSq=te[0]*te[0]+te[1]*te[1]+te[2]*te[2];var scaleYSq=te[4]*te[4]+te[5]*te[5]+te[6]*te[6];var scaleZSq=te[8]*te[8]+te[9]*te[9]+te[10]*te[10];return Math.sqrt(Math.max(scaleXSq,scaleYSq,scaleZSq))},makeTranslation:function(x,y,z){this.set(1,0,0,x,0,1,0,y,0,0,1,z,0,0,0,1);return this},makeRotationX:function(theta){var c=Math.cos(theta),s=Math.sin(theta);this.set(1,0,0,0,0,c,-s,0,0,s,c,0,0,0,0,1);return this},makeRotationY:function(theta){var c=Math.cos(theta),s=Math.sin(theta);this.set(c,0,s,0,0,1,0,0,-s,0,c,0,0,0,0,1);return this},makeRotationZ:function(theta){var c=Math.cos(theta),s=Math.sin(theta);this.set(c,-s,0,0,s,c,0,0,0,0,1,0,0,0,0,1);return this},makeRotationAxis:function(axis,angle){var c=Math.cos(angle);var s=Math.sin(angle);var t=1-c;var x=axis.x,y=axis.y,z=axis.z;var tx=t*x,ty=t*y;this.set(tx*x+c,tx*y-s*z,tx*z+s*y,0,tx*y+s*z,ty*y+c,ty*z-s*x,0,tx*z-s*y,ty*z+s*x,t*z*z+c,0,0,0,0,1);return this},makeScale:function(x,y,z){this.set(x,0,0,0,0,y,0,0,0,0,z,0,0,0,0,1);return this},makeShear:function(x,y,z){this.set(1,y,z,0,x,1,z,0,x,y,1,0,0,0,0,1);return this},compose:function(position,quaternion,scale){var te=this.elements;var x=quaternion._x,y=quaternion._y,z=quaternion._z,w=quaternion._w;var x2=x+x,y2=y+y,z2=z+z;var xx=x*x2,xy=x*y2,xz=x*z2;var yy=y*y2,yz=y*z2,zz=z*z2;var wx=w*x2,wy=w*y2,wz=w*z2;var sx=scale.x,sy=scale.y,sz=scale.z;te[0]=(1-(yy+zz))*sx;te[1]=(xy+wz)*sx;te[2]=(xz-wy)*sx;te[3]=0;te[4]=(xy-wz)*sy;te[5]=(1-(xx+zz))*sy;te[6]=(yz+wx)*sy;te[7]=0;te[8]=(xz+wy)*sz;te[9]=(yz-wx)*sz;te[10]=(1-(xx+yy))*sz;te[11]=0;te[12]=position.x;te[13]=position.y;te[14]=position.z;te[15]=1;return this},decompose:function(){var vector=new Vector3();var matrix=new Matrix4();return function decompose(position,quaternion,scale){var te=this.elements;var sx=vector.set(te[0],te[1],te[2]).length();var sy=vector.set(te[4],te[5],te[6]).length();var sz=vector.set(te[8],te[9],te[10]).length();var det=this.determinant();if(det<0)sx=-sx;position.x=te[12];position.y=te[13];position.z=te[14];matrix.copy(this);var invSX=1/sx;var invSY=1/sy;var invSZ=1/sz;matrix.elements[0]*=invSX;matrix.elements[1]*=invSX;matrix.elements[2]*=invSX;matrix.elements[4]*=invSY;matrix.elements[5]*=invSY;matrix.elements[6]*=invSY;matrix.elements[8]*=invSZ;matrix.elements[9]*=invSZ;matrix.elements[10]*=invSZ;quaternion.setFromRotationMatrix(matrix);scale.x=sx;scale.y=sy;
3353scale.z=sz;return this}}(),makePerspective:function(left,right,top,bottom,near,far){if(far===undefined){console.warn('THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.')}
3354var te=this.elements;var x=2*near/(right-left);var y=2*near/(top-bottom);var a=(right+left)/(right-left);var b=(top+bottom)/(top-bottom);var c=-(far+near)/(far-near);var d=-2*far*near/(far-near);te[0]=x;te[4]=0;te[8]=a;te[12]=0;te[1]=0;te[5]=y;te[9]=b;te[13]=0;te[2]=0;te[6]=0;te[10]=c;te[14]=d;te[3]=0;te[7]=0;te[11]=-1;te[15]=0;return this},makeOrthographic:function(left,right,top,bottom,near,far){var te=this.elements;var w=1.0/(right-left);var h=1.0/(top-bottom);var p=1.0/(far-near);var x=(right+left)*w;var y=(top+bottom)*h;var z=(far+near)*p;te[0]=2*w;te[4]=0;te[8]=0;te[12]=-x;te[1]=0;te[5]=2*h;te[9]=0;te[13]=-y;te[2]=0;te[6]=0;te[10]=-2*p;te[14]=-z;te[3]=0;te[7]=0;te[11]=0;te[15]=1;return this},equals:function(matrix){var te=this.elements;var me=matrix.elements;for(var i=0;i<16;i ++){if(te[i]!==me[i])return!1}
3355return!0},fromArray:function(array,offset){if(offset===undefined)offset=0;for(var i=0;i<16;i ++){this.elements[i]=array[i+offset]}
3356return this},toArray:function(array,offset){if(array===undefined)array=[];if(offset===undefined)offset=0;var te=this.elements;array[offset]=te[0];array[offset+1]=te[1];array[offset+2]=te[2];array[offset+3]=te[3];array[offset+4]=te[4];array[offset+5]=te[5];array[offset+6]=te[6];array[offset+7]=te[7];array[offset+8]=te[8];array[offset+9]=te[9];array[offset+10]=te[10];array[offset+11]=te[11];array[offset+12]=te[12];array[offset+13]=te[13];array[offset+14]=te[14];array[offset+15]=te[15];return array}});function Quaternion(x,y,z,w){this._x=x||0;this._y=y||0;this._z=z||0;this._w=(w!==undefined)?w:1}
3357Object.assign(Quaternion,{slerp:function(qa,qb,qm,t){return qm.copy(qa).slerp(qb,t)},slerpFlat:function(dst,dstOffset,src0,srcOffset0,src1,srcOffset1,t){var x0=src0[srcOffset0+0],y0=src0[srcOffset0+1],z0=src0[srcOffset0+2],w0=src0[srcOffset0+3],x1=src1[srcOffset1+0],y1=src1[srcOffset1+1],z1=src1[srcOffset1+2],w1=src1[srcOffset1+3];if(w0!==w1||x0!==x1||y0!==y1||z0!==z1){var s=1-t,cos=x0*x1+y0*y1+z0*z1+w0*w1,dir=(cos>=0?1:-1),sqrSin=1-cos*cos;if(sqrSin>Number.EPSILON){var sin=Math.sqrt(sqrSin),len=Math.atan2(sin,cos*dir);s=Math.sin(s*len)/sin;t=Math.sin(t*len)/sin}
3358var tDir=t*dir;x0=x0*s+x1*tDir;y0=y0*s+y1*tDir;z0=z0*s+z1*tDir;w0=w0*s+w1*tDir;if(s===1-t){var f=1/Math.sqrt(x0*x0+y0*y0+z0*z0+w0*w0);x0*=f;y0*=f;z0*=f;w0*=f}}
3359dst[dstOffset]=x0;dst[dstOffset+1]=y0;dst[dstOffset+2]=z0;dst[dstOffset+3]=w0}});Object.defineProperties(Quaternion.prototype,{x:{get:function(){return this._x},set:function(value){this._x=value;this.onChangeCallback()}},y:{get:function(){return this._y},set:function(value){this._y=value;this.onChangeCallback()}},z:{get:function(){return this._z},set:function(value){this._z=value;this.onChangeCallback()}},w:{get:function(){return this._w},set:function(value){this._w=value;this.onChangeCallback()}}});Object.assign(Quaternion.prototype,{set:function(x,y,z,w){this._x=x;this._y=y;this._z=z;this._w=w;this.onChangeCallback();return this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(quaternion){this._x=quaternion.x;this._y=quaternion.y;this._z=quaternion.z;this._w=quaternion.w;this.onChangeCallback();return this},setFromEuler:function(euler,update){if(!(euler&&euler.isEuler)){throw new Error('THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.')}
3360var x=euler._x,y=euler._y,z=euler._z,order=euler.order;var cos=Math.cos;var sin=Math.sin;var c1=cos(x/2);var c2=cos(y/2);var c3=cos(z/2);var s1=sin(x/2);var s2=sin(y/2);var s3=sin(z/2);if(order==='XYZ'){this._x=s1*c2*c3+c1*s2*s3;this._y=c1*s2*c3-s1*c2*s3;this._z=c1*c2*s3+s1*s2*c3;this._w=c1*c2*c3-s1*s2*s3}else if(order==='YXZ'){this._x=s1*c2*c3+c1*s2*s3;this._y=c1*s2*c3-s1*c2*s3;this._z=c1*c2*s3-s1*s2*c3;this._w=c1*c2*c3+s1*s2*s3}else if(order==='ZXY'){this._x=s1*c2*c3-c1*s2*s3;this._y=c1*s2*c3+s1*c2*s3;this._z=c1*c2*s3+s1*s2*c3;this._w=c1*c2*c3-s1*s2*s3}else if(order==='ZYX'){this._x=s1*c2*c3-c1*s2*s3;this._y=c1*s2*c3+s1*c2*s3;this._z=c1*c2*s3-s1*s2*c3;this._w=c1*c2*c3+s1*s2*s3}else if(order==='YZX'){this._x=s1*c2*c3+c1*s2*s3;this._y=c1*s2*c3+s1*c2*s3;this._z=c1*c2*s3-s1*s2*c3;this._w=c1*c2*c3-s1*s2*s3}else if(order==='XZY'){this._x=s1*c2*c3-c1*s2*s3;this._y=c1*s2*c3-s1*c2*s3;this._z=c1*c2*s3+s1*s2*c3;this._w=c1*c2*c3+s1*s2*s3}
3361if(update!==!1)this.onChangeCallback();return this},setFromAxisAngle:function(axis,angle){var halfAngle=angle/2,s=Math.sin(halfAngle);this._x=axis.x*s;this._y=axis.y*s;this._z=axis.z*s;this._w=Math.cos(halfAngle);this.onChangeCallback();return this},setFromRotationMatrix:function(m){var te=m.elements,m11=te[0],m12=te[4],m13=te[8],m21=te[1],m22=te[5],m23=te[9],m31=te[2],m32=te[6],m33=te[10],trace=m11+m22+m33,s;if(trace>0){s=0.5/Math.sqrt(trace+1.0);this._w=0.25/s;this._x=(m32-m23)*s;this._y=(m13-m31)*s;this._z=(m21-m12)*s}else if(m11>m22&&m11>m33){s=2.0*Math.sqrt(1.0+m11-m22-m33);this._w=(m32-m23)/s;this._x=0.25*s;this._y=(m12+m21)/s;this._z=(m13+m31)/s}else if(m22>m33){s=2.0*Math.sqrt(1.0+m22-m11-m33);this._w=(m13-m31)/s;this._x=(m12+m21)/s;this._y=0.25*s;this._z=(m23+m32)/s}else{s=2.0*Math.sqrt(1.0+m33-m11-m22);this._w=(m21-m12)/s;this._x=(m13+m31)/s;this._y=(m23+m32)/s;this._z=0.25*s}
3362this.onChangeCallback();return this},setFromUnitVectors:function(){var v1=new Vector3();var r;var EPS=0.000001;return function setFromUnitVectors(vFrom,vTo){if(v1===undefined)v1=new Vector3();r=vFrom.dot(vTo)+1;
3362if(r<EPS){r=0;if(Math.abs(vFrom.x)>Math.abs(vFrom.z)){v1.set(-vFrom.y,vFrom.x,0)}else{v1.set(0,-vFrom.z,vFrom.y)}}else{v1.crossVectors(vFrom,vTo)}
3363this._x=v1.x;this._y=v1.y;this._z=v1.z;this._w=r;return this.normalize()}}(),inverse:function(){return this.conjugate()},conjugate:function(){this._x*=-1;this._y*=-1;this._z*=-1;this.onChangeCallback();return this},dot:function(v){return this._x*v._x+this._y*v._y+this._z*v._z+this._w*v._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var l=this.length();if(l===0){this._x=0;this._y=0;this._z=0;this._w=1}else{l=1/l;this._x=this._x*l;this._y=this._y*l;this._z=this._z*l;this._w=this._w*l}
3364this.onChangeCallback();return this},multiply:function(q,p){if(p!==undefined){console.warn('THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.');return this.multiplyQuaternions(q,p)}
3365return this.multiplyQuaternions(this,q)},premultiply:function(q){return this.multiplyQuaternions(q,this)},multiplyQuaternions:function(a,b){var qax=a._x,qay=a._y,qaz=a._z,qaw=a._w;var qbx=b._x,qby=b._y,qbz=b._z,qbw=b._w;this._x=qax*qbw+qaw*qbx+qay*qbz-qaz*qby;this._y=qay*qbw+qaw*qby+qaz*qbx-qax*qbz;this._z=qaz*qbw+qaw*qbz+qax*qby-qay*qbx;this._w=qaw*qbw-qax*qbx-qay*qby-qaz*qbz;this.onChangeCallback();return this},slerp:function(qb,t){if(t===0)return this;if(t===1)return this.copy(qb);var x=this._x,y=this._y,z=this._z,w=this._w;var cosHalfTheta=w*qb._w+x*qb._x+y*qb._y+z*qb._z;if(cosHalfTheta<0){this._w=-qb._w;this._x=-qb._x;this._y=-qb._y;this._z=-qb._z;cosHalfTheta=-cosHalfTheta}else{this.copy(qb)}
3366if(cosHalfTheta>=1.0){this._w=w;this._x=x;this._y=y;this._z=z;return this}
3367var sinHalfTheta=Math.sqrt(1.0-cosHalfTheta*cosHalfTheta);if(Math.abs(sinHalfTheta)<0.001){this._w=0.5*(w+this._w);this._x=0.5*(x+this._x);this._y=0.5*(y+this._y);this._z=0.5*(z+this._z);return this}
3368var halfTheta=Math.atan2(sinHalfTheta,cosHalfTheta);var ratioA=Math.sin((1-t)*halfTheta)/sinHalfTheta,ratioB=Math.sin(t*halfTheta)/sinHalfTheta;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.onChangeCallback();return this},equals:function(quaternion){return(quaternion._x===this._x)&&(quaternion._y===this._y)&&(quaternion._z===this._z)&&(quaternion._w===this._w)},fromArray:function(array,offset){if(offset===undefined)offset=0;this._x=array[offset];this._y=array[offset+1];this._z=array[offset+2];this._w=array[offset+3];this.onChangeCallback();return this},toArray:function(array,offset){if(array===undefined)array=[];if(offset===undefined)offset=0;array[offset]=this._x;array[offset+1]=this._y;array[offset+2]=this._z;array[offset+3]=this._w;return array},onChange:function(callback){this.onChangeCallback=callback;return this},onChangeCallback:function(){}});function Vector3(x,y,z){this.x=x||0;this.y=y||0;this.z=z||0}
3369Object.assign(Vector3.prototype,{isVector3:!0,set:function(x,y,z){this.x=x;this.y=y;this.z=z;return this},setScalar:function(scalar){this.x=scalar;this.y=scalar;this.z=scalar;return this},setX:function(x){this.x=x;return this},setY:function(y){this.y=y;return this},setZ:function(z){this.z=z;return this},setComponent:function(index,value){switch(index){case 0:this.x=value;break;case 1:this.y=value;break;case 2:this.z=value;break;default:throw new Error('index is out of range: '+index)}
3370return this},getComponent:function(index){switch(index){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error('index is out of range: '+index)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(v){this.x=v.x;this.y=v.y;this.z=v.z;return this},add:function(v,w){if(w!==undefined){console.warn('THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.');return this.addVectors(v,w)}
3371this.x+=v.x;this.y+=v.y;this.z+=v.z;return this},addScalar:function(s){this.x+=s;this.y+=s;this.z+=s;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},addScaledVector:function(v,s){this.x+=v.x*s;this.y+=v.y*s;this.z+=v.z*s;return this}
3371,sub:function(v,w){if(w!==undefined){console.warn('THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.');return this.subVectors(v,w)}
3372this.x-=v.x;this.y-=v.y;this.z-=v.z;return this},subScalar:function(s){this.x-=s;this.y-=s;this.z-=s;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;return this},multiply:function(v,w){if(w!==undefined){console.warn('THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.');return this.multiplyVectors(v,w)}
3373this.x*=v.x;this.y*=v.y;this.z*=v.z;return this},multiplyScalar:function(scalar){this.x*=scalar;this.y*=scalar;this.z*=scalar;return this},multiplyVectors:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},applyEuler:function(){var quaternion=new Quaternion();return function applyEuler(euler){if(!(euler&&euler.isEuler)){console.error('THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.')}
3374return this.applyQuaternion(quaternion.setFromEuler(euler))}}(),applyAxisAngle:function(){var quaternion=new Quaternion();return function applyAxisAngle(axis,angle){return this.applyQuaternion(quaternion.setFromAxisAngle(axis,angle))}}(),applyMatrix3:function(m){var x=this.x,y=this.y,z=this.z;var e=m.elements;this.x=e[0]*x+e[3]*y+e[6]*z;this.y=e[1]*x+e[4]*y+e[7]*z;this.z=e[2]*x+e[5]*y+e[8]*z;return this},applyMatrix4:function(m){var x=this.x,y=this.y,z=this.z;var e=m.elements;var w=1/(e[3]*x+e[7]*y+e[11]*z+e[15]);this.x=(e[0]*x+e[4]*y+e[8]*z+e[12])*w;this.y=(e[1]*x+e[5]*y+e[9]*z+e[13])*w;this.z=(e[2]*x+e[6]*y+e[10]*z+e[14])*w;return this},applyQuaternion:function(q){var x=this.x,y=this.y,z=this.z;var qx=q.x,qy=q.y,qz=q.z,qw=q.w;var ix=qw*x+qy*z-qz*y;var iy=qw*y+qz*x-qx*z;var iz=qw*z+qx*y-qy*x;var iw=-qx*x-qy*y-qz*z;this.x=ix*qw+iw*-qx+iy*-qz-iz*-qy;this.y=iy*qw+iw*-qy+iz*-qx-ix*-qz;this.z=iz*qw+iw*-qz+ix*-qy-iy*-qx;return this},project:function(){var matrix=new Matrix4();return function project(camera){matrix.multiplyMatrices(camera.projectionMatrix,matrix.getInverse(camera.matrixWorld));return this.applyMatrix4(matrix)}}(),unproject:function(){var matrix=new Matrix4();return function unproject(camera){matrix.multiplyMatrices(camera.matrixWorld,matrix.getInverse(camera.projectionMatrix));return this.applyMatrix4(matrix)}}(),transformDirection:function(m){var x=this.x,y=this.y,z=this.z;var e=m.elements;this.x=e[0]*x+e[4]*y+e[8]*z;this.y=e[1]*x+e[5]*y+e[9]*z;this.z=e[2]*x+e[6]*y+e[10]*z;return this.normalize()},divide:function(v){this.x/=v.x;this.y/=v.y;this.z/=v.z;return this},divideScalar:function(scalar){return this.multiplyScalar(1/scalar)},min:function(v){this.x=Math.min(this.x,v.x);this.y=Math.min(this.y,v.y);this.z=Math.min(this.z,v.z);return this},max:function(v){this.x=Math.max(this.x,v.x);this.y=Math.max(this.y,v.y);this.z=Math.max(this.z,v.z);return this},clamp:function(min,max){this.x=Math.max(min.x,Math.min(max.x,this.x));this.y=Math.max(min.y,Math.min(max.y,this.y));this.z=Math.max(min.z,Math.min(max.z,this.z));return this},clampScalar:function(){var min=new Vector3();var max=new Vector3();return function clampScalar(minVal,maxVal){min.set(minVal,minVal,minVal);max.set(maxVal,maxVal,maxVal);return this.clamp(min,max)}}(),clampLength:function(min,max){var length=this.length();return this.divideScalar(length||1).multiplyScalar(Math.max(min,Math.min(max,length)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);return this},roundToZero:function(){this.x=(this.x<0)?Math.ceil(this.x):Math.floor(this.x);this.y=(this.y<0)?Math.ceil(this.y):Math.floor(this.y);this.z=(this.z<0)?Math.ceil(this.z):Math.floor(this.z);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;return this},dot:function(v){return this.x*v.x+this.y*v.y+this.z*v.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(length){return this.normalize().multiplyScalar(length)},lerp:function(v,alpha){this.x+=(v.x-this.x)*alpha;this.y+=(v.y-this.y)*alpha;this.z+=(v.z-this.z)*alpha;return this},lerpVectors:function(v1,v2,alpha){return this.subVectors(v2,v1).multiplyScalar(alpha).add(v1)}
3374,cross:function(v,w){if(w!==undefined){console.warn('THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.');return this.crossVectors(v,w)}
3375return this.crossVectors(this,v)},crossVectors:function(a,b){var ax=a.x,ay=a.y,az=a.z;var bx=b.x,by=b.y,bz=b.z;this.x=ay*bz-az*by;this.y=az*bx-ax*bz;this.z=ax*by-ay*bx;return this},projectOnVector:function(vector){var scalar=vector.dot(this)/vector.lengthSq();return this.copy(vector).multiplyScalar(scalar)},projectOnPlane:function(){var v1=new Vector3();return function projectOnPlane(planeNormal){v1.copy(this).projectOnVector(planeNormal);return this.sub(v1)}}(),reflect:function(){var v1=new Vector3();return function reflect(normal){return this.sub(v1.copy(normal).multiplyScalar(2*this.dot(normal)))}}(),angleTo:function(v){var theta=this.dot(v)/(Math.sqrt(this.lengthSq()*v.lengthSq()));return Math.acos(_Math.clamp(theta,-1,1))},distanceTo:function(v){return Math.sqrt(this.distanceToSquared(v))},distanceToSquared:function(v){var dx=this.x-v.x,dy=this.y-v.y,dz=this.z-v.z;return dx*dx+dy*dy+dz*dz},manhattanDistanceTo:function(v){return Math.abs(this.x-v.x)+Math.abs(this.y-v.y)+Math.abs(this.z-v.z)},setFromSpherical:function(s){var sinPhiRadius=Math.sin(s.phi)*s.radius;this.x=sinPhiRadius*Math.sin(s.theta);this.y=Math.cos(s.phi)*s.radius;this.z=sinPhiRadius*Math.cos(s.theta);return this},setFromCylindrical:function(c){this.x=c.radius*Math.sin(c.theta);this.y=c.y;this.z=c.radius*Math.cos(c.theta);return this},setFromMatrixPosition:function(m){var e=m.elements;this.x=e[12];this.y=e[13];this.z=e[14];return this},setFromMatrixScale:function(m){var sx=this.setFromMatrixColumn(m,0).length();var sy=this.setFromMatrixColumn(m,1).length();var sz=this.setFromMatrixColumn(m,2).length();this.x=sx;this.y=sy;this.z=sz;return this},setFromMatrixColumn:function(m,index){return this.fromArray(m.elements,index*4)},equals:function(v){return((v.x===this.x)&&(v.y===this.y)&&(v.z===this.z))},fromArray:function(array,offset){if(offset===undefined)offset=0;this.x=array[offset];this.y=array[offset+1];this.z=array[offset+2];return this},toArray:function(array,offset){if(array===undefined)array=[];if(offset===undefined)offset=0;array[offset]=this.x;array[offset+1]=this.y;array[offset+2]=this.z;return array},fromBufferAttribute:function(attribute,index,offset){if(offset!==undefined){console.warn('THREE.Vector3: offset has been removed from .fromBufferAttribute().')}
3376this.x=attribute.getX(index);this.y=attribute.getY(index);this.z=attribute.getZ(index);return this}});function Matrix3(){this.elements=[1,0,0,0,1,0,0,0,1];if(arguments.length>0){console.error('THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.')}}
3377Object.assign(Matrix3.prototype,{isMatrix3:!0,set:function(n11,n12,n13,n21,n22,n23,n31,n32,n33){var te=this.elements;te[0]=n11;te[1]=n21;te[2]=n31;te[3]=n12;te[4]=n22;te[5]=n32;te[6]=n13;te[7]=n23;te[8]=n33;return this},identity:function(){this.set(1,0,0,0,1,0,0,0,1);return this},clone:function(){return new this.constructor().fromArray(this.elements)},copy:function(m){var te=this.elements;var me=m.elements;te[0]=me[0];te[1]=me[1];te[2]=me[2];te[3]=me[3];te[4]=me[4];te[5]=me[5];te[6]=me[6];te[7]=me[7];te[8]=me[8];return this},setFromMatrix4:function(m){var me=m.elements;this.set(me[0],me[4],me[8],me[1],me[5],me[9],me[2],me[6],me[10]);return this},applyToBufferAttribute:function(){var v1=new Vector3();return function applyToBufferAttribute(attribute){for(var i=0,l=attribute.count;i<l;i ++){v1.x=attribute.getX(i);v1.y=attribute.getY(i);v1.z=attribute.getZ(i);v1.applyMatrix3(this);attribute.setXYZ(i,v1.x,v1.y,v1.z)}
3378return attribute}}(),multiply:function(m){return this.multiplyMatrices(this,m)},premultiply:function(m){return this.multiplyMatrices(m,this)},multiplyMatrices:function(a,b){var ae=a.elements;var be=b.elements;var te=this.elements;var a11=ae[0],a12=ae[3],a13=ae[6];var a21=ae[1],a22=ae[4],a23=ae[7];var a31=ae[2],a32=ae[5],a33=ae[8];var b11=be[0],b12=be[3],b13=be[6];var b21=be[1],b22=be[4],b23=be[7];var b31=be[2],b32=be[5],b33=be[8];te[0]=a11*b11+a12*b21+a13*b31;te[3]=a11*b12+a12*b22+a13*b32;te[6]=a11*b13+a12*b23+a13*b33;te[1]=a21*b11+a22*b21+a23*b31;te[4]=a21*b12+a22*b22+a23*b32;te[7]=a21*b13+a22*b23+a23*b33;te[2]=a31*b11+a32*b21+a33*b31;te[5]=a31*b12+a32*b22+a33*b32;te[8]=a31*b13+a32*b23+a33*b33;return this},multiplyScalar:function(s){var te=this.elements;te[0]*=s;te[3]*=s;te[6]*=s;te[1]*=s;te[4]*=s;te[7]*=s;te[2]*=s;te[5]*=s;te[8]*=s;return this},determinant:function(){var te=this.elements;var a=te[0],b=te[1],c=te[2],d=te[3],e=te[4],f=te[5],g=te[6],h=te[7],i=te[8];return a*e*i-a*f*h-b*d*i+b*f*g+c*d*h-c*e*g},getInverse:function(matrix,throwOnDegenerate){if(matrix&&matrix.isMatrix4){console.error("THREE.Matrix3: .getInverse() no longer takes a Matr
3378ix4 argument.")}
3379var me=matrix.elements,te=this.elements,n11=me[0],n21=me[1],n31=me[2],n12=me[3],n22=me[4],n32=me[5],n13=me[6],n23=me[7],n33=me[8],t11=n33*n22-n32*n23,t12=n32*n13-n33*n12,t13=n23*n12-n22*n13,det=n11*t11+n21*t12+n31*t13;if(det===0){var msg="THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0";if(throwOnDegenerate===!0){throw new Error(msg)}else{console.warn(msg)}
3380return this.identity()}
3381var detInv=1/det;te[0]=t11*detInv;te[1]=(n31*n23-n33*n21)*detInv;te[2]=(n32*n21-n31*n22)*detInv;te[3]=t12*detInv;te[4]=(n33*n11-n31*n13)*detInv;te[5]=(n31*n12-n32*n11)*detInv;te[6]=t13*detInv;te[7]=(n21*n13-n23*n11)*detInv;te[8]=(n22*n11-n21*n12)*detInv;return this},transpose:function(){var tmp,m=this.elements;tmp=m[1];m[1]=m[3];m[3]=tmp;tmp=m[2];m[2]=m[6];m[6]=tmp;tmp=m[5];m[5]=m[7];m[7]=tmp;return this},getNormalMatrix:function(matrix4){return this.setFromMatrix4(matrix4).getInverse(this).transpose()},transposeIntoArray:function(r){var m=this.elements;r[0]=m[0];r[1]=m[3];r[2]=m[6];r[3]=m[1];r[4]=m[4];r[5]=m[7];r[6]=m[2];r[7]=m[5];r[8]=m[8];return this},setUvTransform:function(tx,ty,sx,sy,rotation,cx,cy){var c=Math.cos(rotation);var s=Math.sin(rotation);this.set(sx*c,sx*s,-sx*(c*cx+s*cy)+cx+tx,-sy*s,sy*c,-sy*(-s*cx+c*cy)+cy+ty,0,0,1)},scale:function(sx,sy){var te=this.elements;te[0]*=sx;te[3]*=sx;te[6]*=sx;te[1]*=sy;te[4]*=sy;te[7]*=sy;return this},rotate:function(theta){var c=Math.cos(theta);var s=Math.sin(theta);var te=this.elements;var a11=te[0],a12=te[3],a13=te[6];var a21=te[1],a22=te[4],a23=te[7];te[0]=c*a11+s*a21;te[3]=c*a12+s*a22;te[6]=c*a13+s*a23;te[1]=-s*a11+c*a21;te[4]=-s*a12+c*a22;te[7]=-s*a13+c*a23;return this},translate:function(tx,ty){var te=this.elements;te[0]+=tx*te[2];te[3]+=tx*te[5];te[6]+=tx*te[8];te[1]+=ty*te[2];te[4]+=ty*te[5];te[7]+=ty*te[8];return this},equals:function(matrix){var te=this.elements;var me=matrix.elements;for(var i=0;i<9;i ++){if(te[i]!==me[i])return!1}
3382return!0},fromArray:function(array,offset){if(offset===undefined)offset=0;for(var i=0;i<9;i ++){this.elements[i]=array[i+offset]}
3383return this},toArray:function(array,offset){if(array===undefined)array=[];if(offset===undefined)offset=0;var te=this.elements;array[offset]=te[0];array[offset+1]=te[1];array[offset+2]=te[2];array[offset+3]=te[3];array[offset+4]=te[4];array[offset+5]=te[5];array[offset+6]=te[6];array[offset+7]=te[7];array[offset+8]=te[8];return array}});var textureId=0;function Texture(image,mapping,wrapS,wrapT,magFilter,minFilter,format,type,anisotropy,encoding){Object.defineProperty(this,'id',{value:textureId ++});this.uuid=_Math.generateUUID();this.name='';this.image=image!==undefined?image:Texture.DEFAULT_IMAGE;this.mipmaps=[];this.mapping=mapping!==undefined?mapping:Texture.DEFAULT_MAPPING;this.wrapS=wrapS!==undefined?wrapS:ClampToEdgeWrapping;this.wrapT=wrapT!==undefined?wrapT:ClampToEdgeWrapping;this.magFilter=magFilter!==undefined?magFilter:LinearFilter;this.minFilter=minFilter!==undefined?minFilter:LinearMipMapLinearFilter;this.anisotropy=anisotropy!==undefined?anisotropy:1;this.format=format!==undefined?format:RGBAFormat;this.type=type!==undefined?type:UnsignedByteType;this.offset=new Vector2(0,0);this.repeat=new Vector2(1,1);this.center=new Vector2(0,0);this.rotation=0;this.matrixAutoUpdate=!0;this.matrix=new Matrix3();this.generateMipmaps=!0;this.premultiplyAlpha=!1;this.flipY=!0;this.unpackAlignment=4;this.encoding=encoding!==undefined?encoding:LinearEncoding;this.version=0;this.onUpdate=null}
3384Texture.DEFAULT_IMAGE=undefined;Texture.DEFAULT_MAPPING=UVMapping;Texture.prototype=Object.assign(Object.create(EventDispatcher.prototype),{constructor:Texture,isTexture:!0,updateMatrix:function(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)},clone:function(){return new this.constructor().copy(this)},copy:function(source){this.name=source.name;this.image=source.image;this.mipmaps=source.mipmaps.slice(0);this.mapping=source.mapping;this.wrapS=source.wrapS;this.wrapT=source.wrapT;this.magFilter=source.magFilter;this.minFilter=source.minFilter;this.anisotropy=source.anisotropy;this.format=source.format;this.type=source.type;this.offset.copy(source.offset);this.repeat.copy(source.repeat);this.center.copy(source.center);this.rotation=source.rotation;this.matrixAutoUpdate=source.matrixAutoUpdate;this.matrix.copy(source.matrix);this.generateMipmaps=source.generateMipmaps;this.premultiplyAlpha=source.premultiplyAlpha;this.flipY=source.flipY;this.unpackAlignment=source.unpackAlignment;this.encoding=source.encoding;return this}
3384,toJSON:function(meta){var isRootObject=(meta===undefined||typeof meta==='string');if(!isRootObject&&meta.textures[this.uuid]!==undefined){return meta.textures[this.uuid]}
3385function getDataURL(image){var canvas;if(image instanceof HTMLCanvasElement){canvas=image}else{canvas=document.createElementNS('http://www.w3.org/1999/xhtml','canvas');canvas.width=image.width;canvas.height=image.height;var context=canvas.getContext('2d');if(image instanceof ImageData){context.putImageData(image,0,0)}else{context.drawImage(image,0,0,image.width,image.height)}}
3386if(canvas.width>2048||canvas.height>2048){return canvas.toDataURL('image/jpeg',0.6)}else{return canvas.toDataURL('image/png')}}
3387var output={metadata:{version:4.5,type:'Texture',generator:'Texture.toJSON'},uuid:this.uuid,name:this.name,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY};if(this.image!==undefined){var image=this.image;if(image.uuid===undefined){image.uuid=_Math.generateUUID()}
3388if(!isRootObject&&meta.images[image.uuid]===undefined){meta.images[image.uuid]={uuid:image.uuid,url:getDataURL(image)}}
3389output.image=image.uuid}
3390if(!isRootObject){meta.textures[this.uuid]=output}
3391return output},dispose:function(){this.dispatchEvent({type:'dispose'})},transformUv:function(uv){if(this.mapping!==UVMapping)return;uv.applyMatrix3(this.matrix);if(uv.x<0||uv.x>1){switch(this.wrapS){case RepeatWrapping:uv.x=uv.x-Math.floor(uv.x);break;case ClampToEdgeWrapping:uv.x=uv.x<0?0:1;break;case MirroredRepeatWrapping:if(Math.abs(Math.floor(uv.x)%2)===1){uv.x=Math.ceil(uv.x)-uv.x}else{uv.x=uv.x-Math.floor(uv.x)}
3392break}}
3393if(uv.y<0||uv.y>1){switch(this.wrapT){case RepeatWrapping:uv.y=uv.y-Math.floor(uv.y);break;case ClampToEdgeWrapping:uv.y=uv.y<0?0:1;break;case MirroredRepeatWrapping:if(Math.abs(Math.floor(uv.y)%2)===1){uv.y=Math.ceil(uv.y)-uv.y}else{uv.y=uv.y-Math.floor(uv.y)}
3394break}}
3395if(this.flipY){uv.y=1-uv.y}}});Object.defineProperty(Texture.prototype,"needsUpdate",{set:function(value){if(value===!0)this.version ++}});function Vector4(x,y,z,w){this.x=x||0;this.y=y||0;this.z=z||0;this.w=(w!==undefined)?w:1}
3396Object.assign(Vector4.prototype,{isVector4:!0,set:function(x,y,z,w){this.x=x;this.y=y;this.z=z;this.w=w;return this},setScalar:function(scalar){this.x=scalar;this.y=scalar;this.z=scalar;this.w=scalar;return this},setX:function(x){this.x=x;return this},setY:function(y){this.y=y;return this},setZ:function(z){this.z=z;return this},setW:function(w){this.w=w;return this},setComponent:function(index,value){switch(index){case 0:this.x=value;break;case 1:this.y=value;break;case 2:this.z=value;break;case 3:this.w=value;break;default:throw new Error('index is out of range: '+index)}
3397return this},getComponent:function(index){switch(index){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error('index is out of range: '+index)}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(v){this.x=v.x;this.y=v.y;this.z=v.z;this.w=(v.w!==undefined)?v.w:1;return this},add:function(v,w){if(w!==undefined){console.warn('THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.');return this.addVectors(v,w)}
3398this.x+=v.x;this.y+=v.y;this.z+=v.z;this.w+=v.w;return this},addScalar:function(s){this.x+=s;this.y+=s;this.z+=s;this.w+=s;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addScaledVector:function(v,s){this.x+=v.x*s;this.y+=v.y*s;this.z+=v.z*s;this.w+=v.w*s;return this},sub:function(v,w){if(w!==undefined){console.warn('THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.');return this.subVectors(v,w)}
3399this.x-=v.x;this.y-=v.y;this.z-=v.z;this.w-=v.w;return this},subScalar:function(s){this.x-=s;this.y-=s;this.z-=s;this.w-=s;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},multiplyScalar:function(scalar){this.x*=scalar;this.y*=scalar;this.z*=scalar;this.w*=scalar;return this},applyMatrix4:function(m){var x=this.x,y=this.y,z=this.z,w=this.w;var e=m.elements;this.x=e[0]*x+e[4]*y+e[8]*z+e[12]*w;this.y=e[1]*x+e[5]*y+e[9]*z+e[13]*w;this.z=e[2]*x+e[6]*y+e[10]*z+e[14]*w;this.w=e[3]*x+e[7]*y+e[11]*z+e[15]*w;return this},divideScalar:function(scalar){return this.multiplyScalar(1/scalar)},setAxisAngleFromQuaternion:function(q){this.w=2*Math.acos(q.w);var s=Math.sqrt(1-q.w*q.w);if(s<0.0001){this.x=1;this.y=0;this.z=0}else{this.x=q.x/s;this.y=q.y/s;this.z=q.z/s}
3400return this},setAxisAngleFromRotationMatrix:function(m){var angle,x,y,z,epsilon=0.01,epsilon2=0.1,te=m.elements,m11=te[0],m12=te[4],m13=te[8],m21=te[1],m22=te[5],m23=te[9],m31=te[2],m32=te[6],m33=te[10];if((Math.abs(m12-m21)<epsilon)&&(Math.abs(m13-m31)<epsilon)&&(Math.abs(m23-m32)<epsilon)){if((Math.abs(m12+m21)<epsilon2)&&(Math.abs(m13+m31)<epsilon2)&&(Math.abs(m23+m32)<epsilon2)&&(Math.abs(m11+m22+m33-3)<epsilon2)){this.set(1,0,0,0);return this}
3401angle=Math.PI;var xx=(m11+1)/2;var yy=(m22+1)/2;var zz=(m33+1)/2;var xy=(m12+m21)/4;var xz=(m13+m31)/4;var yz=(m23+m32)/4;if((xx>yy)&&(xx>zz)){if(xx<epsilon){x=0;y=0.707106781;z=0.707106781}else{x=Math.sqrt(xx);y=xy/x;z=xz/x}}else if(yy>zz){if(yy<epsilon){x=0.707106781;y=0;z=0.707106781}else{y=Math.sqrt(yy);x=xy/y;z=yz/y}}else{if(zz<epsilon){x=0.707106781;y=0.707106781;z=0}else{z=Math.sqrt(zz);x=xz/z;y=yz/z}}
3402this.set(x,y,z,angle);return this}
3403var s=Math.sqrt((m32-m23)*(m32-m23)+(m13-m31)*(m13-m31)+(m21-m12)*(m21-m12));if(Math.abs(s)<0.001)s=1;this.x=(m32-m23)/s;this.y=(m13-m31)/s;this.z=(m21-m12)/s;this.w=Math.acos((m11+m22+m33-1)/2);return this},min:function(v){this.x=Math.min(this.x,v.x);this.y=Math.min(this.y,v.y);this.z=Math.min(this.z,v.z);this.w=Math.min(this.w,v.w);return this},max:function(v){this.x=Math.max(this.x,v.x);this.y=Math.max(this.y,v.y);this.z=Math.max(this.z,v.z);this.w=Math.max(this.w,v.w);return this},clamp:function(min,max){this.x=Math.max(min.x,Math.min(max.x,this.x));this.y=Math.max(min.y,Math.min(max.y,this.y));this.z=Math.max(min.z,Math.min(max.z,this.z));this.w=Math.max(min.w,Math.min(max.w,this.w));return this},clampScalar:function(){var min,max;return function clampScalar(minVal,maxVal){if(min===undefined){min=new Vector4();max=new Vector4()}
3404min.set(minVal,minVal,minVal,minVal);max.set(maxVal,maxVal,maxVal,maxVal);return this.clamp(min,max)}}(),clampLength:function(min,max){var length=this.length();return this.divideScalar(length||1).multiplyScalar(Math.max(min,Math.min(max,length)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);this.w=Math.floor(this.w);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);this.w=Math.ceil(this.w);return this}
3404,round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);this.w=Math.round(this.w);return this},roundToZero:function(){this.x=(this.x<0)?Math.ceil(this.x):Math.floor(this.x);this.y=(this.y<0)?Math.ceil(this.y):Math.floor(this.y);this.z=(this.z<0)?Math.ceil(this.z):Math.floor(this.z);this.w=(this.w<0)?Math.ceil(this.w):Math.floor(this.w);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;this.w=-this.w;return this},dot:function(v){return this.x*v.x+this.y*v.y+this.z*v.z+this.w*v.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(length){return this.normalize().multiplyScalar(length)},lerp:function(v,alpha){this.x+=(v.x-this.x)*alpha;this.y+=(v.y-this.y)*alpha;this.z+=(v.z-this.z)*alpha;this.w+=(v.w-this.w)*alpha;return this},lerpVectors:function(v1,v2,alpha){return this.subVectors(v2,v1).multiplyScalar(alpha).add(v1)},equals:function(v){return((v.x===this.x)&&(v.y===this.y)&&(v.z===this.z)&&(v.w===this.w))},fromArray:function(array,offset){if(offset===undefined)offset=0;this.x=array[offset];this.y=array[offset+1];this.z=array[offset+2];this.w=array[offset+3];return this},toArray:function(array,offset){if(array===undefined)array=[];if(offset===undefined)offset=0;array[offset]=this.x;array[offset+1]=this.y;array[offset+2]=this.z;array[offset+3]=this.w;return array},fromBufferAttribute:function(attribute,index,offset){if(offset!==undefined){console.warn('THREE.Vector4: offset has been removed from .fromBufferAttribute().')}
3405this.x=attribute.getX(index);this.y=attribute.getY(index);this.z=attribute.getZ(index);this.w=attribute.getW(index);return this}});function WebGLRenderTarget(width,height,options){this.width=width;this.height=height;this.scissor=new Vector4(0,0,width,height);this.scissorTest=!1;this.viewport=new Vector4(0,0,width,height);options=options||{};if(options.minFilter===undefined)options.minFilter=LinearFilter;this.texture=new Texture(undefined,undefined,options.wrapS,options.wrapT,options.magFilter,options.minFilter,options.format,options.type,options.anisotropy,options.encoding);this.texture.generateMipmaps=options.generateMipmaps!==undefined?options.generateMipmaps:!0;this.depthBuffer=options.depthBuffer!==undefined?options.depthBuffer:!0;this.stencilBuffer=options.stencilBuffer!==undefined?options.stencilBuffer:!0;this.depthTexture=options.depthTexture!==undefined?options.depthTexture:null}
3406WebGLRenderTarget.prototype=Object.assign(Object.create(EventDispatcher.prototype),{constructor:WebGLRenderTarget,isWebGLRenderTarget:!0,setSize:function(width,height){if(this.width!==width||this.height!==height){this.width=width;this.height=height;this.dispose()}
3407this.viewport.set(0,0,width,height);this.scissor.set(0,0,width,height)},clone:function(){return new this.constructor().copy(this)},copy:function(source){this.width=source.width;this.height=source.height;this.viewport.copy(source.viewport);this.texture=source.texture.clone();this.depthBuffer=source.depthBuffer;this.stencilBuffer=source.stencilBuffer;this.depthTexture=source.depthTexture;return this},dispose:function(){this.dispatchEvent({type:'dispose'})}});function WebGLRenderTargetCube(width,height,options){WebGLRenderTarget.call(this,width,height,options);this.activeCubeFace=0;this.activeMipMapLevel=0}
3408WebGLRenderTargetCube.prototype=Object.create(WebGLRenderTarget.prototype);WebGLRenderTargetCube.prototype.constructor=WebGLRenderTargetCube;WebGLRenderTargetCube.prototype.isWebGLRenderTargetCube=!0;function DataTexture(data,width,height,format,type,mapping,wrapS,wrapT,magFilter,minFilter,anisotropy,encoding){Texture.call(this,null,mapping,wrapS,wrapT,magFilter,minFilter,format,type,anisotropy,encoding);this.image={data:data,width:width,height:height};this.magFilter=magFilter!==undefined?magFilter:NearestFilter;this.minFilter=minFilter!==undefined?minFilter:NearestFilter;this.generateMipmaps=!1;this.flipY=!1;this.unpackAlignment=1}
3409DataTexture.prototype=Object.create(Texture.prototype);DataTexture.prototype.constructor=DataTexture;DataTexture.prototype.isDataTexture=!0;
3409function Box3(min,max){this.min=(min!==undefined)?min:new Vector3(+Infinity,+Infinity,+Infinity);this.max=(max!==undefined)?max:new Vector3(-Infinity,-Infinity,-Infinity)}
3410Object.assign(Box3.prototype,{isBox3:!0,set:function(min,max){this.min.copy(min);this.max.copy(max);return this},setFromArray:function(array){var minX=+Infinity;var minY=+Infinity;var minZ=+Infinity;var maxX=-Infinity;var maxY=-Infinity;var maxZ=-Infinity;for(var i=0,l=array.length;i<l;i+=3){var x=array[i];var y=array[i+1];var z=array[i+2];if(x<minX)minX=x;if(y<minY)minY=y;if(z<minZ)minZ=z;if(x>maxX)maxX=x;if(y>maxY)maxY=y;if(z>maxZ)maxZ=z}
3411this.min.set(minX,minY,minZ);this.max.set(maxX,maxY,maxZ);return this},setFromBufferAttribute:function(attribute){var minX=+Infinity;var minY=+Infinity;var minZ=+Infinity;var maxX=-Infinity;var maxY=-Infinity;var maxZ=-Infinity;for(var i=0,l=attribute.count;i<l;i ++){var x=attribute.getX(i);var y=attribute.getY(i);var z=attribute.getZ(i);if(x<minX)minX=x;if(y<minY)minY=y;if(z<minZ)minZ=z;if(x>maxX)maxX=x;if(y>maxY)maxY=y;if(z>maxZ)maxZ=z}
3412this.min.set(minX,minY,minZ);this.max.set(maxX,maxY,maxZ);return this},setFromPoints:function(points){this.makeEmpty();for(var i=0,il=points.length;i<il;i ++){this.expandByPoint(points[i])}
3413return this},setFromCenterAndSize:function(){var v1=new Vector3();return function setFromCenterAndSize(center,size){var halfSize=v1.copy(size).multiplyScalar(0.5);this.min.copy(center).sub(halfSize);this.max.copy(center).add(halfSize);return this}}(),setFromObject:function(object){this.makeEmpty();return this.expandByObject(object)},clone:function(){return new this.constructor().copy(this)},copy:function(box){this.min.copy(box.min);this.max.copy(box.max);return this},makeEmpty:function(){this.min.x=this.min.y=this.min.z=+Infinity;this.max.x=this.max.y=this.max.z=-Infinity;return this},isEmpty:function(){return(this.max.x<this.min.x)||(this.max.y<this.min.y)||(this.max.z<this.min.z)},getCenter:function(target){if(target===undefined){console.warn('THREE.Box3: .getCenter() target is now required');target=new Vector3()}
3414return this.isEmpty()?target.set(0,0,0):target.addVectors(this.min,this.max).multiplyScalar(0.5)},getSize:function(target){if(target===undefined){console.warn('THREE.Box3: .getSize() target is now required');target=new Vector3()}
3415return this.isEmpty()?target.set(0,0,0):target.subVectors(this.max,this.min)},expandByPoint:function(point){this.min.min(point);this.max.max(point);return this},expandByVector:function(vector){this.min.sub(vector);this.max.add(vector);return this},expandByScalar:function(scalar){this.min.addScalar(-scalar);this.max.addScalar(scalar);return this},expandByObject:function(){var scope,i,l;var v1=new Vector3();function traverse(node){var geometry=node.geometry;if(geometry!==undefined){if(geometry.isGeometry){var vertices=geometry.vertices;for(i=0,l=vertices.length;i<l;i ++){v1.copy(vertices[i]);v1.applyMatrix4(node.matrixWorld);scope.expandByPoint(v1)}}else if(geometry.isBufferGeometry){var attribute=geometry.attributes.position;if(attribute!==undefined){for(i=0,l=attribute.count;i<l;i ++){v1.fromBufferAttribute(attribute,i).applyMatrix4(node.matrixWorld);scope.expandByPoint(v1)}}}}}
3416return function expandByObject(object){scope=this;object.updateMatrixWorld(!0);object.traverse(traverse);return this}}(),containsPoint:function(point){return point.x<this.min.x||point.x>this.max.x||point.y<this.min.y||point.y>this.max.y||point.z<this.min.z||point.z>this.max.z?!1:!0},containsBox:function(box){return this.min.x<=box.min.x&&box.max.x<=this.max.x&&this.min.y<=box.min.y&&box.max.y<=this.max.y&&this.min.z<=box.min.z&&box.max.z<=this.max.z},getParameter:function(point,target){if(target===undefined){console.warn('THREE.Box3: .getParameter() target is now required');target=new Vector3()}
3417return target.set((point.x-this.min.x)/(this.max.x-this.min.x),(point.y-this.min.y)/(this.max.y-this.min.y),(point.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(box){return box.max.x<this.min.x||box.min.x>this.max.x||box.max.y<this.min.y||box.min.y>this.max.y||box.max.z<this.min.z||box.min.z>this.max.z?!1:!0},intersectsSphere:(function(){var closestPoint=new Vector3();return function intersectsSphere(sphere){this.clampPoint(sphere.center,closestPoint);return closestPoint.distanceToSquared(sphere.center)<=(sphere.radius*sphere.radius)}})(),intersectsPlane:function(plane){var min,max;if(plane.normal.x>0){min=plane.normal.x*this.min.x;max=plane.normal.x*this.max.x}else{min=plane.normal.x*this.max.x;max=plane.normal.x*this.min.x}
3418if(plane.normal.y>0){min+=plane.normal.y*this.min.y;max+=plane.normal.y*this.max.y}else{min+=plane.normal.y*this.max.y;max+=plane.normal.y*this.min.y}
3419if(plane.normal.z>0){min+=plane.normal.z*this.min.z;max+=plane.normal.z*this.max.z}else{min+=plane.normal.z*this.max.z;max+=plane.normal.z*this.min.z}
3420return(min<=plane.constant&&max>=plane.constant)},intersectsTriangle:(function(){var v0=new Vector3();var v1=new Vector3();var v2=new Vector3();var f0=new Vector3();var f1=new Vector3();var f2=new Vector3();var testAxis=new Vector3();var center=new Vector3();var extents=new Vector3();var triangleNormal=new Vector3();function satForAxes(axes){var i,j;for(i=0,j=axes.length-3;i<=j;i+=3){testAxis.fromArray(axes,i);var r=extents.x*Math.abs(testAxis.x)+extents.y*Math.abs(testAxis.y)+extents.z*Math.abs(testAxis.z);var p0=v0.dot(testAxis);var p1=v1.dot(testAxis);var p2=v2.dot(testAxis);
3420if(Math.max(-Math.max(p0,p1,p2),Math.min(p0,p1,p2))>r){return!1}}
3421return!0}
3422return function intersectsTriangle(triangle){if(this.isEmpty()){return!1}
3423this.getCenter(center);extents.subVectors(this.max,center);v0.subVectors(triangle.a,center);v1.subVectors(triangle.b,center);v2.subVectors(triangle.c,center);f0.subVectors(v1,v0);f1.subVectors(v2,v1);f2.subVectors(v0,v2);var axes=[0,-f0.z,f0.y,0,-f1.z,f1.y,0,-f2.z,f2.y,f0.z,0,-f0.x,f1.z,0,-f1.x,f2.z,0,-f2.x,-f0.y,f0.x,0,-f1.y,f1.x,0,-f2.y,f2.x,0];if(!satForAxes(axes)){return!1}
3424axes=[1,0,0,0,1,0,0,0,1];if(!satForAxes(axes)){return!1}
3425triangleNormal.crossVectors(f0,f1);axes=[triangleNormal.x,triangleNormal.y,triangleNormal.z];return satForAxes(axes)}})(),clampPoint:function(point,target){if(target===undefined){console.warn('THREE.Box3: .clampPoint() target is now required');target=new Vector3()}
3426return target.copy(point).clamp(this.min,this.max)},distanceToPoint:function(){var v1=new Vector3();return function distanceToPoint(point){var clampedPoint=v1.copy(point).clamp(this.min,this.max);return clampedPoint.sub(point).length()}}(),getBoundingSphere:function(){var v1=new Vector3();return function getBoundingSphere(target){if(target===undefined){console.warn('THREE.Box3: .getBoundingSphere() target is now required');target=new Sphere()}
3427this.getCenter(target.center);target.radius=this.getSize(v1).length()*0.5;return target}}(),intersect:function(box){this.min.max(box.min);this.max.min(box.max);if(this.isEmpty())this.makeEmpty();return this},union:function(box){this.min.min(box.min);this.max.max(box.max);return this},applyMatrix4:function(matrix){if(this.isEmpty())return this;var m=matrix.elements;var xax=m[0]*this.min.x,xay=m[1]*this.min.x,xaz=m[2]*this.min.x;var xbx=m[0]*this.max.x,xby=m[1]*this.max.x,xbz=m[2]*this.max.x;var yax=m[4]*this.min.y,yay=m[5]*this.min.y,yaz=m[6]*this.min.y;var ybx=m[4]*this.max.y,yby=m[5]*this.max.y,ybz=m[6]*this.max.y;var zax=m[8]*this.min.z,zay=m[9]*this.min.z,zaz=m[10]*this.min.z;var zbx=m[8]*this.max.z,zby=m[9]*this.max.z,zbz=m[10]*this.max.z;this.min.x=Math.min(xax,xbx)+Math.min(yax,ybx)+Math.min(zax,zbx)+m[12];this.min.y=Math.min(xay,xby)+Math.min(yay,yby)+Math.min(zay,zby)+m[13];this.min.z=Math.min(xaz,xbz)+Math.min(yaz,ybz)+Math.min(zaz,zbz)+m[14];this.max.x=Math.max(xax,xbx)+Math.max(yax,ybx)+Math.max(zax,zbx)+m[12];this.max.y=Math.max(xay,xby)+Math.max(yay,yby)+Math.max(zay,zby)+m[13];this.max.z=Math.max(xaz,xbz)+Math.max(yaz,ybz)+Math.max(zaz,zbz)+m[14];return this},translate:function(offset){this.min.add(offset);this.max.add(offset);return this},equals:function(box){return box.min.equals(this.min)&&box.max.equals(this.max)}});function Sphere(center,radius){this.center=(center!==undefined)?center:new Vector3();this.radius=(radius!==undefined)?radius:0}
3428Object.assign(Sphere.prototype,{set:function(center,radius){this.center.copy(center);this.radius=radius;return this},setFromPoints:function(){var box=new Box3();return function setFromPoints(points,optionalCenter){var center=this.center;if(optionalCenter!==undefined){center.copy(optionalCenter)}else{box.setFromPoints(points).getCenter(center)}
3429var maxRadiusSq=0;for(var i=0,il=points.length;i<il;i ++){maxRadiusSq=Math.max(maxRadiusSq,center.distanceToSquared(points[i]))}
3430this.radius=Math.sqrt(maxRadiusSq);return this}}(),clone:function(){return new this.constructor().copy(this)},copy:function(sphere){this.center.copy(sphere.center);this.radius=sphere.radius;return this},empty:function(){return(this.radius<=0)},containsPoint:function(point){return(point.distanceToSquared(this.center)<=(this.radius*this.radius))},distanceToPoint:function(point){return(point.distanceTo(this.center)-this.radius)},intersectsSphere:function(sphere){var radiusSum=this.radius+sphere.radius;return sphere.center.distanceToSquared(this.center)<=(radiusSum*radiusSum)},intersectsBox:function(box){return box.intersectsSphere(this)},intersectsPlane:function(plane){return Math.abs(plane.distanceToPoint(this.center))<=this.radius},clampPoint:function(point,target){var deltaLengthSq=this.center.distanceToSquared(point);if(target===undefined){console.warn('THREE.Sphere: .clampPoint() target is now required');target=new Vector3()}
3431target.copy(point);if(deltaLengthSq>(this.radius*this.radius)){target.sub(this.center).normalize();target.multiplyScalar(this.radius).add(this.center)}
3432return target},getBoundingBox:function(target){if(target===undefined){console.warn('THREE.Sphere: .getBoundingBox() target is now required');target=new Box3()}
3433target.set(this.center,this.center);target.expandByScalar(this.radius);return target}
3433,applyMatrix4:function(matrix){this.center.applyMatrix4(matrix);this.radius=this.radius*matrix.getMaxScaleOnAxis();return this},translate:function(offset){this.center.add(offset);return this},equals:function(sphere){return sphere.center.equals(this.center)&&(sphere.radius===this.radius)}});function Plane(normal,constant){this.normal=(normal!==undefined)?normal:new Vector3(1,0,0);this.constant=(constant!==undefined)?constant:0}
3434Object.assign(Plane.prototype,{set:function(normal,constant){this.normal.copy(normal);this.constant=constant;return this},setComponents:function(x,y,z,w){this.normal.set(x,y,z);this.constant=w;return this},setFromNormalAndCoplanarPoint:function(normal,point){this.normal.copy(normal);this.constant=-point.dot(this.normal);return this},setFromCoplanarPoints:function(){var v1=new Vector3();var v2=new Vector3();return function setFromCoplanarPoints(a,b,c){var normal=v1.subVectors(c,b).cross(v2.subVectors(a,b)).normalize();this.setFromNormalAndCoplanarPoint(normal,a);return this}}(),clone:function(){return new this.constructor().copy(this)},copy:function(plane){this.normal.copy(plane.normal);this.constant=plane.constant;return this},normalize:function(){var inverseNormalLength=1.0/this.normal.length();this.normal.multiplyScalar(inverseNormalLength);this.constant*=inverseNormalLength;return this},negate:function(){this.constant*=-1;this.normal.negate();return this},distanceToPoint:function(point){return this.normal.dot(point)+this.constant},distanceToSphere:function(sphere){return this.distanceToPoint(sphere.center)-sphere.radius},projectPoint:function(point,target){if(target===undefined){console.warn('THREE.Plane: .projectPoint() target is now required');target=new Vector3()}
3435return target.copy(this.normal).multiplyScalar(-this.distanceToPoint(point)).add(point)},intersectLine:function(){var v1=new Vector3();return function intersectLine(line,target){if(target===undefined){console.warn('THREE.Plane: .intersectLine() target is now required');target=new Vector3()}
3436var direction=line.delta(v1);var denominator=this.normal.dot(direction);if(denominator===0){if(this.distanceToPoint(line.start)===0){return target.copy(line.start)}
3437return undefined}
3438var t=-(line.start.dot(this.normal)+this.constant)/denominator;if(t<0||t>1){return undefined}
3439return target.copy(direction).multiplyScalar(t).add(line.start)}}(),intersectsLine:function(line){var startSign=this.distanceToPoint(line.start);var endSign=this.distanceToPoint(line.end);return(startSign<0&&endSign>0)||(endSign<0&&startSign>0)},intersectsBox:function(box){return box.intersectsPlane(this)},intersectsSphere:function(sphere){return sphere.intersectsPlane(this)},coplanarPoint:function(target){if(target===undefined){console.warn('THREE.Plane: .coplanarPoint() target is now required');target=new Vector3()}
3440return target.copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(){var v1=new Vector3();var m1=new Matrix3();return function applyMatrix4(matrix,optionalNormalMatrix){var normalMatrix=optionalNormalMatrix||m1.getNormalMatrix(matrix);var referencePoint=this.coplanarPoint(v1).applyMatrix4(matrix);var normal=this.normal.applyMatrix3(normalMatrix).normalize();this.constant=-referencePoint.dot(normal);return this}}(),translate:function(offset){this.constant-=offset.dot(this.normal);return this},equals:function(plane){return plane.normal.equals(this.normal)&&(plane.constant===this.constant)}});function Frustum(p0,p1,p2,p3,p4,p5){this.planes=[(p0!==undefined)?p0:new Plane(),(p1!==undefined)?p1:new Plane(),(p2!==undefined)?p2:new Plane(),(p3!==undefined)?p3:new Plane(),(p4!==undefined)?p4:new Plane(),(p5!==undefined)?p5:new Plane()]}
3441Object.assign(Frustum.prototype,{set:function(p0,p1,p2,p3,p4,p5){var planes=this.planes;planes[0].copy(p0);
3441planes[1].copy(p1);planes[2].copy(p2);planes[3].copy(p3);planes[4].copy(p4);planes[5].copy(p5);return this},clone:function(){return new this.constructor().copy(this)},copy:function(frustum){var planes=this.planes;for(var i=0;i<6;i ++){planes[i].copy(frustum.planes[i])}
3442return this},setFromMatrix:function(m){var planes=this.planes;var me=m.elements;var me0=me[0],me1=me[1],me2=me[2],me3=me[3];var me4=me[4],me5=me[5],me6=me[6],me7=me[7];var me8=me[8],me9=me[9],me10=me[10],me11=me[11];var me12=me[12],me13=me[13],me14=me[14],me15=me[15];planes[0].setComponents(me3-me0,me7-me4,me11-me8,me15-me12).normalize();planes[1].setComponents(me3+me0,me7+me4,me11+me8,me15+me12).normalize();planes[2].setComponents(me3+me1,me7+me5,me11+me9,me15+me13).normalize();planes[3].setComponents(me3-me1,me7-me5,me11-me9,me15-me13).normalize();planes[4].setComponents(me3-me2,me7-me6,me11-me10,me15-me14).normalize();planes[5].setComponents(me3+me2,me7+me6,me11+me10,me15+me14).normalize();return this},intersectsObject:function(){var sphere=new Sphere();return function intersectsObject(object){var geometry=object.geometry;if(geometry.boundingSphere===null)
3443geometry.computeBoundingSphere();sphere.copy(geometry.boundingSphere).applyMatrix4(object.matrixWorld);return this.intersectsSphere(sphere)}}(),intersectsSprite:function(){var sphere=new Sphere();return function intersectsSprite(sprite){sphere.center.set(0,0,0);sphere.radius=0.7071067811865476;sphere.applyMatrix4(sprite.matrixWorld);return this.intersectsSphere(sphere)}}(),intersectsSphere:function(sphere){var planes=this.planes;var center=sphere.center;
3443var negRadius=-sphere.radius;for(var i=0;i<6;i ++){var distance=planes[i].distanceToPoint(center);if(distance<negRadius){return!1}}
3444return!0},intersectsBox:function(){var p1=new Vector3(),p2=new Vector3();return function intersectsBox(box){var planes=this.planes;for(var i=0;i<6;i ++){var plane=planes[i];p1.x=plane.normal.x>0?box.min.x:box.max.x;p2.x=plane.normal.x>0?box.max.x:box.min.x;p1.y=plane.normal.y>0?box.min.y:box.max.y;p2.y=plane.normal.y>0?box.max.y:box.min.y;p1.z=plane.normal.z>0?box.min.z:box.max.z;p2.z=plane.normal.z>0?box.max.z:box.min.z;var d1=plane.distanceToPoint(p1);var d2=plane.distanceToPoint(p2);if(d1<0&&d2<0){return!1}}
3445return!0}}(),containsPoint:function(point){var planes=this.planes;for(var i=0;i<6;i ++){if(planes[i].distanceToPoint(point)<0){return!1}}
3446return!0}});var alphamap_fragment="#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif\n";var alphamap_pars_fragment="#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif\n";var alphatest_fragment="#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif\n";var aomap_fragment="#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif\n";var aomap_pars_fragment="#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif";var begin_vertex="\nvec3 transformed = vec3( position );\n";var beginnormal_vertex="\nvec3 objectNormal = vec3( normal );\n";var bsdfs="float punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\tif( decayExponent > 0.0 ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tfloat maxDistanceCutoffFactor = pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\treturn distanceFalloff * maxDistanceCutoffFactor;
3446\n#else\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n#endif\n\t}\n\treturn 1.0;\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );
3446\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE  = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS  = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 AB = vec2( -1.04, 1.04 ) * a004 + r.zw;\n\treturn specularColor * AB.x + AB.y;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}\n";var bumpmap_pars_fragment="#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}
3446\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif\n";var clipping_planes_fragment="#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\tif ( clipped ) discard;\n\t#endif\n#endif\n";var clipping_planes_pars_fragment="#if NUM_CLIPPING_PLANES > 0\n\t#if ! defined( PHYSICAL ) && ! defined( PHONG )\n\t\tvarying vec3 vViewPosition;\n\t#endif\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif\n";var clipping_planes_pars_vertex="#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\n\tvarying vec3 vViewPosition;\n#endif\n";var clipping_planes_vertex="#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n";var color_fragment="#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif";var color_pars_fragment="#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif\n";var color_pars_vertex="#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif";var color_vertex="#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif";var common="#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}\n";var cube_uv_reflection_fragment="#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_textureSize (1024.0)\nint getFaceFromDirection(vec3 direction) {\n\tvec3 absDirection = abs(direction);\n\tint face = -1;\n\tif( absDirection.x > absDirection.z ) {\n\t\tif(absDirection.x > absDirection.y )\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\telse {\n\t\tif(absDirection.z > absDirection.y )\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\treturn face;\n}\n#define cubeUV_maxLods1  (log2(cubeUV_textureSize*0.25) - 1.0)\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\n\tfloat dxRoughness = dFdx(roughness);\n\tfloat dyRoughness = dFdy(roughness);\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\n\td = clamp(d, 1.0, cubeUV_rangeClamp);
3446\n\tfloat mipLevel = 0.5 * log2(d);\n\treturn vec2(floor(mipLevel), fract(mipLevel));\n}\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\n\tbool bRes = mipLevel == 0.0;\n\tscale =  bRes && (scale < a) ? a : scale;\n\tvec3 r;\n\tvec2 offset;\n\tint face = getFaceFromDirection(direction);\n\tfloat rcpPowScale = 1.0 / powScale;\n\tif( face == 0) {\n\t\tr = vec3(direction.x, -direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 1) {\n\t\tr = vec3(direction.y, direction.x, direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 2) {\n\t\tr = vec3(direction.z, direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 3) {\n\t\tr = vec3(direction.x, direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse if( face == 4) {\n\t\tr = vec3(direction.y, direction.x, -direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse {\n\t\tr = vec3(direction.z, -direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\tr = normalize(r);\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\n\tvec2 base = offset + vec2( texelOffset );\n\treturn base + s * ( scale - 2.0 * texelOffset );\n}\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\nvec4 textureCubeUV(vec3 reflectedDirection, float roughness ) {\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\n\tfloat r1 = floor(roughnessVal);\n\tfloat r2 = r1 + 1.0;\n\tfloat t = fract(roughnessVal);\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\n\tfloat s = mipInfo.y;\n\tfloat level0 = mipInfo.x;\n\tfloat level1 = level0 + 1.0;\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\n\tvec4 result = mix(color10, color20, t);\n\treturn vec4(result.rgb, 1.0);\n}\n#endif\n";var defaultnormal_vertex="vec3 transformedNormal = normalMatrix * objectNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n";var displacementmap_pars_vertex="#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif\n";var displacementmap_vertex="#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\n#endif\n";var emissivemap_fragment="#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif\n";var emissivemap_pars_fragment="#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif\n";var encodings_fragment="  gl_FragColor = linearToOutputTexel( gl_FragColor );\n";var encodings_pars_fragment="\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}
3446\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.xyz * value.w * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.x, max( value.g, value.b ) );\n\tfloat M      = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM            = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.x, max( value.g, value.b ) );\n\tfloat D      = max( maxRange / maxRGB, 1.0 );\n\tD            = min( floor( D ) / 255.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value )  {\n\tvec3 Xp_Y_XYZp = value.rgb * cLogLuvM;\n\tXp_Y_XYZp = max(Xp_Y_XYZp, vec3(1e-6, 1e-6, 1e-6));\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract(Le);\n\tvResult.z = (Le - (floor(vResult.w*255.0))/255.0)/255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2((Le - 127.0) / 2.0);\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = Xp_Y_XYZp.rgb * cLogLuvInverseM;\n\treturn vec4( max(vRGB, 0.0), 1.0 );\n}\n";var envmap_fragment="#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\treflectVec = normalize( reflectVec );\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\tenvColor = envMapTexelToLinear( envColor );\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif\n";var envmap_pars_fragment="#if defined( USE_ENVMAP ) || defined( PHYSICAL )\n\tuniform float reflectivity;\n\tuniform float envMapIntensity;\n#endif\n#ifdef USE_ENVMAP\n\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\n\t\tvarying vec3 vWorldPosition;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif\n";var envmap_pars_vertex="#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif\n";var envmap_vertex="#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvWorldPosition = worldPosition.xyz;
3446\n\t#else\n\t\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif\n";var fog_vertex="\n#ifdef USE_FOG\nfogDepth = -mvPosition.z;\n#endif";var fog_pars_vertex="#ifdef USE_FOG\n  varying float fogDepth;\n#endif\n";var fog_fragment="#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif\n";var fog_pars_fragment="#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif\n";var gradientmap_pars_fragment="#ifdef TOON\n\tuniform sampler2D gradientMap;\n\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\t\tfloat dotNL = dot( normal, lightDirection );\n\t\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t\t#ifdef USE_GRADIENTMAP\n\t\t\treturn texture2D( gradientMap, coord ).rgb;\n\t\t#else\n\t\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t\t#endif\n\t}\n#endif\n";var lightmap_fragment="#ifdef USE_LIGHTMAP\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n#endif\n";var lightmap_pars_fragment="#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif";var lights_lambert_vertex="vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvLightFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n#endif\n";var lights_pars_begin="uniform vec3 ambientLightColor;\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t\tfloat shadowCameraNear;\n\t\tfloat shadowCameraFar;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}
3446\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight  ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif\n";var lights_pars_maps="#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( queryVec, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\tvec4 envMapColor = textureCubeUV(queryReflectVec, BlinnExponentToGGXRoughness(blinnShinine
3446ssExponent));\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif\n";var lights_phong_fragment="BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;\n";var lights_phong_pars_fragment="varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifdef TOON\n\t\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#else\n\t\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\t\tvec3 irradiance = dotNL * directLight.color;\n\t#endif\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)\n";var lights_physical_fragment="PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\n#ifdef STANDARD\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.clearCoat = saturate( clearCoat );\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\n#endif\n";var lights_physical_pars_fragment="struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n\t#ifndef STANDARD\n\t\tfloat clearCoat;\n\t\tfloat clearCoatRoughness;\n\t#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;
3446\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos - halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos + halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos + halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos - halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3(    0, 1,    0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifndef STANDARD\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\n\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#ifndef STANDARD\n\t\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifndef STANDARD\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\tfloat dotNL = dotNV;\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\treflectedLight.indirectSpecular += ( 1.0 - clearCoatDHR ) * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\n\t#ifndef STANDARD\n\t\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\n#define Material_BlinnShininessExponent( material )   GGXRoughnessToBlinnExponent( material.specularRoughness )\n#define Material_ClearCoat_BlinnShininessExponent( material )   GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}\n";var lights_fragment_begin="\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = normalize( vViewPosition );\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}
3446\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearCoatRadiance = vec3( 0.0 );\n#endif\n";var lights_fragment_maps="#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tirradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), maxMipLevel );\n\t#ifndef STANDARD\n\t\tclearCoatRadiance += getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), maxMipLevel );\n\t#endif\n#endif\n";var lights_fragment_end="#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, clearCoatRadiance, geometry, material, reflectedLight );\n#endif\n";var logdepthbuf_fragment="#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif";var logdepthbuf_pars_fragment="#ifdef USE_LOGDEPTHBUF\n\tuniform float logDepthBufFC;\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t#endif\n#endif\n";var logdepthbuf_pars_vertex="#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t#endif\n\tuniform float logDepthBufFC;\n#endif";var logdepthbuf_vertex="#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t#else\n\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\tgl_Position.z *= gl_Position.w;\n\t#endif\n#endif\n";var map_fragment="#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif\n";var map_pars_fragment="#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n";var map_particle_fragment="#ifdef USE_MAP\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n";var map_particle_pars_fragment="#ifdef USE_MAP\n\tuniform mat3 uvTransform;\n\tuniform sampler2D map;\n#endif\n";var metalnessmap_fragment="float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif\n";var metalnessmap_pars_fragment="#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif";var morphnormal_vertex="#ifdef USE_MORPHNORMALS\n\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n#endif\n";var morphtarget_pars_vertex="#ifdef USE_MORPHTARGETS\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif";var morphtarget_vertex="#ifdef USE_MORPHTARGETS\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\t#endif\n#endif\n";var normal_fragment_begin="#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n#endif\n";var normal_fragment_maps="#ifdef USE_NORMALMAP\n\tnormal = perturbN
3446ormal2Arb( -vViewPosition, normal );\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif\n";var normalmap_pars_fragment="#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\tvec3 N = normalize( surf_norm );\n\t\tmat3 tsn = mat3( S, T, N );\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\tmapN.xy *= normalScale;\n\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\treturn normalize( tsn * mapN );\n\t}\n#endif\n";var packing="vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256.,  256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}\n";var premultiplied_alpha_fragment="#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif\n";var project_vertex="vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\ngl_Position = projectionMatrix * mvPosition;\n";var dithering_fragment="#if defined( DITHERING )\n  gl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif\n";var dithering_pars_fragment="#if defined( DITHERING )\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif\n";var roughnessmap_fragment="float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif\n";var roughnessmap_pars_fragment="#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif";var shadowmap_pars_fragment="#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\n\t\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\n\t\tvec2 f = fract( uv * size + 0.5 );\n\t\tfloat a = mix( lb, lt, f.y );\n\t\tfloat b = mix( rb, rt, f.y );\n\t\tfloat c = mix( a, b, f.x );\n\t\treturn c;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );
3446\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif\n";var shadowmap_pars_vertex="#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n#endif\n";var shadowmap_vertex="#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n#endif\n";var shadowmask_pars_fragment="float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#endif\n\t#endif\n\treturn shadow;\n}\n";var skinbase_vertex="#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif";var skinning_pars_vertex="#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif\n";var skinning_vertex="#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif\n";var skinnormal_vertex="#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;
3446\n\tskinMatrix  = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n#endif\n";var specularmap_fragment="float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif";var specularmap_pars_fragment="#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif";var tonemapping_fragment="#if defined( TONE_MAPPING )\n  gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif\n";var tonemapping_pars_fragment="#ifndef saturate\n\t#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\n";var uv_pars_fragment="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n#endif";var uv_pars_vertex="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\n";var uv_vertex="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif";var uv2_pars_fragment="#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif";var uv2_pars_vertex="#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n#endif";var uv2_vertex="#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = uv2;\n#endif";var worldpos_vertex="#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\n#endif\n";var cube_frag="uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldPosition;\nvoid main() {\n\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );\n\tgl_FragColor.a *= opacity;\n}\n";var cube_vert="varying vec3 vWorldPosition;\n#include <common>\nvoid main() {\n\tvWorldPosition = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}\n";var depth_frag="#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <logdepthbuf_fragment>\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}\n";var depth_vert="#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n}\n";var distanceRGBA_frag="#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main () {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}\n";var distanceRGBA_vert="#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}\n";var equirect_frag="uniform sampler2D tEquirect;\nvarying vec3 vWorldPosition;\n#include <common>\nvoid main() {\n\tvec3 direction = normalize( vWorldPosition );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n}\n";var equirect_vert="varying vec3 vWorldPosition;\n#include <common>\nvoid main() {\n\tvWorldPosition = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n}\n";var linedashed_frag="uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <color_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <premultiplied_alpha_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}\n";var linedashed_vert="uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <color_vertex>\n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}\n";var meshbasic_frag="uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include <aomap_fragment>\n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <premultiplied_alpha_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}\n";var meshbasic_vert="#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_ENVMAP\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <envmap_vertex>\n\t#include <fog_vertex>\n}\n";var meshlambert_frag="uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n#endif\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <lights_pars_maps>\n#include <fog_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <emissivemap_fragment>\n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#include <lightmap_fragment>\n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}\n";var meshlambert_vert="#define LAMBERT\nvarying vec3 vLightFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <envmap_pars_vertex>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <lights_pars_maps>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <lights_lambert_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}\n";var meshphong_frag="#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_pars_fragment>\n#include <gradientmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <lights_pars_maps>\n#include <lights_phong_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_phong_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}\n";var meshphong_vert="#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <
3446envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}\n";var meshphysical_frag="#define PHYSICAL\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifndef STANDARD\n\tuniform float clearCoat;\n\tuniform float clearCoatRoughness;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <cube_uv_reflection_fragment>\n#include <lights_pars_begin>\n#include <lights_pars_maps>\n#include <lights_physical_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <roughnessmap_fragment>\n\t#include <metalnessmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_physical_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}\n";var meshphysical_vert="#define PHYSICAL\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}\n";var normal_frag="#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <packing>\n#include <uv_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\nvoid main() {\n\t#include <logdepthbuf_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}\n";var normal_vert="#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}\n";var points_frag="uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <color_pars_fragment>\n#include <map_particle_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_particle_fragment>\n\t#include <color_fragment>\n\t#include <alphatest_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <premultiplied_alpha_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}\n";var points_vert="uniform float size;\nuniform float scale;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <color_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\t#ifdef USE_SIZEATTENUATION\n\t\tgl_PointSize = size * ( scale / - mvPosition.z );\n\t#else\n\t\tgl_PointSize = size;\n\t#endif\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <fog_vertex>\n}\n";var shadow_frag="uniform vec3 color;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include <fog_fragment>\n}\n";var shadow_vert="#include <fog_pars_vertex>\n#include <shadowmap_pars_vertex>\nvoid main() {\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}\n";var ShaderChunk={alphamap_fragment:alphamap_fragment,alphamap_pars_fragment:alphamap_pars_fragment,alphatest_fragment:alphatest_fragment,aomap_fragment:aomap_fragment,aomap_pars_fragment:aomap_pars_fragment,begin_vertex:begin_vertex,beginnormal_vertex:beginnormal_vertex,bsdfs:bsdfs,bumpmap_pars_fragment:bumpmap_pars_fragment,clipping_planes_fragment:clipping_planes_fragment,clipping_planes_pars_fragment:clipping_planes_pars_fragment,clipping_planes_pars_vertex:clipping_planes_pars_vertex,clipping_planes_vertex:clipping_planes_vertex,color_fragment:color_fragment,color_pars_fragment:color_pars_fragment,color_pars_vertex:color_pars_vertex,color_vertex:color_vertex,common:common,cube_uv_reflection_fragment:cube_uv_reflection_fragment,defaultnormal_vertex:defaultnormal_vertex,displacementmap_pars_vertex:displacementmap_pars_vertex,displacementmap_vertex:displacementmap_vertex,emissivemap_fragment:emissivemap_fragment,emissivemap_pars_fragment:emissivemap_pars_fragment,encodings_fragment:encodings_fragment,encodings_pars_fragment:encodings_pars_fragment,envmap_fragment:envmap_fragment,envmap_pars_fragment:envmap_pars_fragment,envmap_pars_vertex:envmap_pars_vertex,envmap_vertex:envmap_vertex,fog_vertex:fog_vertex,fog_pars_vertex:fog_pars_vertex,fog_fragment:fog_fragment,fog_pars_fragment:fog_pars_fragment,gradientmap_pars_fragment:gradientmap_pars_fragment,lightmap_fragment:lightmap_fragment,lightmap_pars_fragment:lightmap_pars_fragment,lights_lambert_vertex:lights_lambert_vertex,lights_pars_begin:lights_pars_begin,lights_pars_maps:lights_pars_maps,lights_phong_fragment:lights_phong_fragment,lights_phong_pars_fragment:lights_phong_pars_fragment,lights_physical_fragment:lights_physical_fragment,lights_physical_pars_fragment:lights_physical_pars_fragment,lights_fragment_begin:lights_fragment_begin,lights_fragment_maps:lights_fragment_maps,lights_fragment_end:lights_fragment_end,logdepthbuf_fragment:logdepthbuf_fragment,logdepthbuf_pars_fragment:logdepthbuf_pars_fragment,logdepthbuf_pars_vertex:logdepthbuf_pars_vertex,logdepthbuf_vertex:logdepthbuf_vertex,map_fragment:map_fragment,map_pars_fragment:map_pars_fragment,map_particle_fragment:map_particle_fragment,map_particle_pars_fragment:map_particle_pars_fragment,metalnessmap_fragment:metalnessmap_fragment,metalnessmap_pars_fragment:metalnessmap_pars_fragment,morphnormal_vertex:morphnormal_vertex,morphtarget_pars_vertex:morphtarget_pars_vertex,morphtarget_vertex:morphtarget_vertex,normal_fragment_begin:normal_fragment_begin,normal_fragment_maps:normal_fragment_maps,normalmap_pars_fragment:normalmap_pars_fragment,packing:packing,premultiplied_alpha_fragment:premultiplied_alpha_fragment,project_vertex:project_vertex,dithering_fragment:dithering_fragment,dithering_pars_fragment:dithering_pars_fragment,roughnessmap_fragment:roughnessmap_fragment,roughnessmap_pars_fragment:roughnessmap_pars_fragment,shadowmap_pars_fragment:shadowmap_pars_fragment,shadowmap_pars_vertex:shadowmap_pars_vertex,shadowmap_vertex:shadowmap_vertex,shadowmask_pars_fragment:shadowmask_pars_fragment,skinbase_vertex:skinbase_vertex,skinning_pars_vertex:skinning_pars_vertex,skinning_vertex:skinning_vertex,skinnormal_vertex:skinnormal_vertex,specularmap_fragment:specularmap_fragment,specularmap_pars_fragment:specularmap_pars_fragment,tonemapping_fragment:tonemapping_fragment,tonemapping_pars_fragment:tonemapping_pars_fragment,uv_pars_fragment:uv_pars_fragment,uv_pars_vertex:uv_pars_vertex,uv_vertex:uv_vertex,uv2_pars_fragment:uv2_pars_fragment,uv2_pars_vertex:uv2_pars_vertex,uv2_vertex:uv2_vertex,worldpos_vertex:worldpos_vertex,cube_frag:cube_frag,cube_vert:cube_vert,depth_frag:depth_frag,depth_vert:depth_vert,distanceRGBA_frag:distanceRGBA_frag,distanceRGBA_vert:
3446distanceRGBA_vert,equirect_frag:equirect_frag,equirect_vert:equirect_vert,linedashed_frag:linedashed_frag,linedashed_vert:linedashed_vert,meshbasic_frag:meshbasic_frag,meshbasic_vert:meshbasic_vert,meshlambert_frag:meshlambert_frag,meshlambert_vert:meshlambert_vert,meshphong_frag:meshphong_frag,meshphong_vert:meshphong_vert,meshphysical_frag:meshphysical_frag,meshphysical_vert:meshphysical_vert,normal_frag:normal_frag,normal_vert:normal_vert,points_frag:points_frag,points_vert:points_vert,shadow_frag:shadow_frag,shadow_vert:shadow_vert};var UniformsUtils={merge:function(uniforms){var merged={};for(var u=0;u<uniforms.length;u ++){var tmp=this.clone(uniforms[u]);for(var p in tmp){merged[p]=tmp[p]}}
3447return merged},clone:function(uniforms_src){var uniforms_dst={};for(var u in uniforms_src){uniforms_dst[u]={};for(var p in uniforms_src[u]){var parameter_src=uniforms_src[u][p];if(parameter_src&&(parameter_src.isColor||parameter_src.isMatrix3||parameter_src.isMatrix4||parameter_src.isVector2||parameter_src.isVector3||parameter_src.isVector4||parameter_src.isTexture)){uniforms_dst[u][p]=parameter_src.clone()}else if(Array.isArray(parameter_src)){uniforms_dst[u][p]=parameter_src.slice()}else{uniforms_dst[u][p]=parameter_src}}}
3448return uniforms_dst}};var ColorKeywords={'aliceblue':0xF0F8FF,'antiquewhite':0xFAEBD7,'aqua':0x00FFFF,'aquamarine':0x7FFFD4,'azure':0xF0FFFF,'beige':0xF5F5DC,'bisque':0xFFE4C4,'black':0x000000,'blanchedalmond':0xFFEBCD,'blue':0x0000FF,'blueviolet':0x8A2BE2,'brown':0xA52A2A,'burlywood':0xDEB887,'cadetblue':0x5F9EA0,'chartreuse':0x7FFF00,'chocolate':0xD2691E,'coral':0xFF7F50,'cornflowerblue':0x6495ED,'cornsilk':0xFFF8DC,'crimson':0xDC143C,'cyan':0x00FFFF,'darkblue':0x00008B,'darkcyan':0x008B8B,'darkgoldenrod':0xB8860B,'darkgray':0xA9A9A9,'darkgreen':0x006400,'darkgrey':0xA9A9A9,'darkkhaki':0xBDB76B,'darkmagenta':0x8B008B,'darkolivegreen':0x556B2F,'darkorange':0xFF8C00,'darkorchid':0x9932CC,'darkred':0x8B0000,'darksalmon':0xE9967A,'darkseagreen':0x8FBC8F,'darkslateblue':0x483D8B,'darkslategray':0x2F4F4F,'darkslategrey':0x2F4F4F,'darkturquoise':0x00CED1,'darkviolet':0x9400D3,'deeppink':0xFF1493,'deepskyblue':0x00BFFF,'dimgray':0x696969,'dimgrey':0x696969,'dodgerblue':0x1E90FF,'firebrick':0xB22222,'floralwhite':0xFFFAF0,'forestgreen':0x228B22,'fuchsia':0xFF00FF,'gainsboro':0xDCDCDC,'ghostwhite':0xF8F8FF,'gold':0xFFD700,'goldenrod':0xDAA520,'gray':0x808080,'green':0x008000,'greenyellow':0xADFF2F,'grey':0x808080,'honeydew':0xF0FFF0,'hotpink':0xFF69B4,'indianred':0xCD5C5C,'indigo':0x4B0082,'ivory':0xFFFFF0,'khaki':0xF0E68C,'lavender':0xE6E6FA,'lavenderblush':0xFFF0F5,'lawngreen':0x7CFC00,'lemonchiffon':0xFFFACD,'lightblue':0xADD8E6,'lightcoral':0xF08080,'lightcyan':0xE0FFFF,'lightgoldenrodyellow':0xFAFAD2,'lightgray':0xD3D3D3,'lightgreen':0x90EE90,'lightgrey':0xD3D3D3,'lightpink':0xFFB6C1,'lightsalmon':0xFFA07A,'lightseagreen':0x20B2AA,'lightskyblue':0x87CEFA,'lightslategray':0x778899,'lightslategrey':0x778899,'lightsteelblue':0xB0C4DE,'lightyellow':0xFFFFE0,'lime':0x00FF00,'limegreen':0x32CD32,'linen':0xFAF0E6,'magenta':0xFF00FF,'maroon':0x800000,'mediumaquamarine':0x66CDAA,'mediumblue':0x0000CD,'mediumorchid':0xBA55D3,'mediumpurple':0x9370DB,'mediumseagreen':0x3CB371,'mediumslateblue':0x7B68EE,'mediumspringgreen':0x00FA9A,'mediumturquoise':0x48D1CC,'mediumvioletred':0xC71585,'midnightblue':0x191970,'mintcream':0xF5FFFA,'mistyrose':0xFFE4E1,'moccasin':0xFFE4B5,'navajowhite':0xFFDEAD,'navy':0x000080,'oldlace':0xFDF5E6,'olive':0x808000,'olivedrab':0x6B8E23,'orange':0xFFA500,'orangered':0xFF4500,'orchid':0xDA70D6,'palegoldenrod':0xEEE8AA,'palegreen':0x98FB98,'paleturquoise':0xAFEEEE,'palevioletred':0xDB7093,'papayawhip':0xFFEFD5,'peachpuff':0xFFDAB9,'peru':0xCD853F,'pink':0xFFC0CB,'plum':0xDDA0DD,'powderblue':0xB0E0E6,'purple':0x800080,'rebeccapurple':0x663399,'red':0xFF0000,'rosybrown':0xBC8F8F,'royalblue':0x4169E1,'saddlebrown':0x8B4513,'salmon':0xFA8072,'sandybrown':0xF4A460,'seagreen':0x2E8B57,'seashell':0xFFF5EE,'sienna':0xA0522D,'silver':0xC0C0C0,'skyblue':0x87CEEB,'slateblue':0x6A5ACD,'slategray':0x708090,'slategrey':0x708090,'snow':0xFFFAFA,'
3448springgreen':0x00FF7F,'steelblue':0x4682B4,'tan':0xD2B48C,'teal':0x008080,'thistle':0xD8BFD8,'tomato':0xFF6347,'turquoise':0x40E0D0,'violet':0xEE82EE,'wheat':0xF5DEB3,'white':0xFFFFFF,'whitesmoke':0xF5F5F5,'yellow':0xFFFF00,'yellowgreen':0x9ACD32};function Color(r,g,b){if(g===undefined&&b===undefined){return this.set(r)}
3449return this.setRGB(r,g,b)}
3450Object.assign(Color.prototype,{isColor:!0,r:1,g:1,b:1,set:function(value){if(value&&value.isColor){this.copy(value)}else if(typeof value==='number'){this.setHex(value)}else if(typeof value==='string'){this.setStyle(value)}
3451return this},setScalar:function(scalar){this.r=scalar;this.g=scalar;this.b=scalar;return this},setHex:function(hex){hex=Math.floor(hex);this.r=(hex>>16&255)/255;this.g=(hex>>8&255)/255;this.b=(hex&255)/255;return this},setRGB:function(r,g,b){this.r=r;this.g=g;this.b=b;return this},setHSL:function(){function hue2rgb(p,q,t){if(t<0)t+=1;if(t>1)t-=1;if(t<1/6)return p+(q-p)*6*t;if(t<1/2)return q;if(t<2/3)return p+(q-p)*6*(2/3-t);return p}
3452return function setHSL(h,s,l){h=_Math.euclideanModulo(h,1);s=_Math.clamp(s,0,1);l=_Math.clamp(l,0,1);if(s===0){this.r=this.g=this.b=l}else{var p=l<=0.5?l*(1+s):l+s-(l*s);var q=(2*l)-p;this.r=hue2rgb(q,p,h+1/3);this.g=hue2rgb(q,p,h);this.b=hue2rgb(q,p,h-1/3)}
3453return this}}(),setStyle:function(style){function handleAlpha(string){if(string===undefined)return;if(parseFloat(string)<1){console.warn('THREE.Color: Alpha component of '+style+' will be ignored.')}}
3454var m;if(m=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(style)){var color;var name=m[1];var components=m[2];switch(name){case 'rgb':case 'rgba':if(color=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(components)){this.r=Math.min(255,parseInt(color[1],10))/255;this.g=Math.min(255,parseInt(color[2],10))/255;this.b=Math.min(255,parseInt(color[3],10))/255;handleAlpha(color[5]);return this}
3455if(color=/^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(components)){this.r=Math.min(100,parseInt(color[1],10))/100;this.g=Math.min(100,parseInt(color[2],10))/100;this.b=Math.min(100,parseInt(color[3],10))/100;handleAlpha(color[5]);return this}
3456break;case 'hsl':case 'hsla':if(color=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(components)){var h=parseFloat(color[1])/360;var s=parseInt(color[2],10)/100;var l=parseInt(color[3],10)/100;handleAlpha(color[5]);return this.setHSL(h,s,l)}
3457break}}else if(m=/^\#([A-Fa-f0-9]+)$/.exec(style)){var hex=m[1];var size=hex.length;if(size===3){this.r=parseInt(hex.charAt(0)+hex.charAt(0),16)/255;this.g=parseInt(hex.charAt(1)+hex.charAt(1),16)/255;this.b=parseInt(hex.charAt(2)+hex.charAt(2),16)/255;return this}else if(size===6){this.r=parseInt(hex.charAt(0)+hex.charAt(1),16)/255;this.g=parseInt(hex.charAt(2)+hex.charAt(3),16)/255;this.b=parseInt(hex.charAt(4)+hex.charAt(5),16)/255;return this}}
3458if(style&&style.length>0){var hex=ColorKeywords[style];if(hex!==undefined){this.setHex(hex)}else{console.warn('THREE.Color: Unknown color '+style)}}
3459return this},clone:function(){return new this.constructor(this.r,this.g,this.b)},copy:function(color){this.r=color.r;this.g=color.g;this.b=color.b;return this},copyGammaToLinear:function(color,gammaFactor){if(gammaFactor===undefined)gammaFactor=2.0;this.r=Math.pow(color.r,gammaFactor);this.g=Math.pow(color.g,gammaFactor);this.b=Math.pow(color.b,gammaFactor);return this},copyLinearToGamma:function(color,gammaFactor){if(gammaFactor===undefined)gammaFactor=2.0;var safeInverse=(gammaFactor>0)?(1.0/gammaFactor):1.0;this.r=Math.pow(color.r,safeInverse);this.g=Math.pow(color.g,safeInverse);this.b=Math.pow(color.b,safeInverse);return this},convertGammaToLinear:function(gammaFactor){this.copyGammaToLinear(this,gammaFactor);return this},convertLinearToGamma:function(gammaFactor){this.copyLinearToGamma(this,gammaFactor);return this},getHex:function(){return(this.r*255)<<16^(this.g*255)<<8^(this.b*255)<<0},getHexString:function(){return('000000'+this.getHex().toString(16)).slice(-6)},getHSL:function(target){if(target===undefined){console.warn('THREE.Color: .getHSL() target is now required');target={h:0,s:0,l:0}}
3460var r=this.r,g=this.g,b=this.b;var max=Math.max(r,g,b);var min=Math.min(r,g,b);var hue,saturation;var lightness=(min+max)/2.0;if(min===max){hue=0;saturation=0}else{var delta=max-min;saturation=lightness<=0.5?delta/(max+min):delta/(2-max-min);switch(max){case r:hue=(g-b)/delta+(g<b?6:0);break;case g:hue=(b-r)/delta+2;break;case b:hue=(r-g)/delta+4;break}
3461hue/=6}
3462target.h=hue;target.s=saturation;target.l=lightness;return target},getStyle:function(){return'rgb('+((this.r*255)|0)+','+((this.g*255)|0)+','+((this.b*255)|0)+')'},offsetHSL:function(){var hsl={};return function(h,s,l){this.getHSL(hsl);hsl.h+=h;hsl.s+=s;hsl.l+=l;this.setHSL(hsl.h,hsl.s,hsl.l);return this}}(),add:function(color){this.r+=color.r;this.g+=color.g;this.b+=color.b;return this},addColors:function(color1,color2){this.r=color1.r+color2.r;this.g=color1.g+color2.g;this.b=color1.b+color2.b;return this},addScalar:function(s){this.r+=s;this.g+=s;this.b+=s;return this},sub:function(color){this.r=Math.max(0,this.r-color.r);this.g=Math.max(0,this.g-color.g);this.b=Math.max(0,this.b-color.b);return this},multiply:function(color){this.r*=color.r;this.g*=color.g;this.b*=color.b;return this},multiplyScalar:function(s){this.r*=s;this.g*=s;this.b*=s;return this},lerp:function(color,alpha){this.r+=(color.r-this.r)*alpha;this.g+=(color.g-this.g)*alpha;this.b+=(color.b-this.b)*alpha;return this},equals:function(c){return(c.r===this.r)&&(c.g===this.g)&&(c.b===this.b)},fromArray:function(array,offset){if(offset===undefined)offset=0;this.r=array[offset];this.g=array[offset+1];
3462this.b=array[offset+2];return this},toArray:function(array,offset){if(array===undefined)array=[];if(offset===undefined)offset=0;array[offset]=this.r;array[offset+1]=this.g;array[offset+2]=this.b;return array},toJSON:function(){return this.getHex()}});var UniformsLib={common:{diffuse:{value:new Color(0xeeeeee)},opacity:{value:1.0},map:{value:null},uvTransform:{value:new Matrix3()},alphaMap:{value:null},},specularmap:{specularMap:{value:null},},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1.0},refractionRatio:{value:0.98},maxMipLevel:{value:0}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new Vector2(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:0.00025},fogNear:{value:1},fogFar:{value:2000},fogColor:{value:new Color(0xffffff)}},lights:{ambientLightColor:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{},shadow:{},shadowBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{},shadow:{},shadowBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{},shadow:{},shadowBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}}},points:{diffuse:{value:new Color(0xeeeeee)},opacity:{value:1.0},size:{value:1.0},scale:{value:1.0},map:{value:null},uvTransform:{value:new Matrix3()}}};var ShaderLib={basic:{uniforms:UniformsUtils.merge([UniformsLib.common,UniformsLib.specularmap,UniformsLib.envmap,UniformsLib.aomap,UniformsLib.lightmap,UniformsLib.fog]),vertexShader:ShaderChunk.meshbasic_vert,fragmentShader:ShaderChunk.meshbasic_frag},lambert:{uniforms:UniformsUtils.merge([UniformsLib.common,UniformsLib.specularmap,UniformsLib.envmap,UniformsLib.aomap,UniformsLib.lightmap,UniformsLib.emissivemap,UniformsLib.fog,UniformsLib.lights,{emissive:{value:new Color(0x000000)}}]),vertexShader:ShaderChunk.meshlambert_vert,fragmentShader:ShaderChunk.meshlambert_frag},phong:{uniforms:UniformsUtils.merge([UniformsLib.common,UniformsLib.specularmap,UniformsLib.envmap,UniformsLib.aomap,UniformsLib.lightmap,UniformsLib.emissivemap,UniformsLib.bumpmap,UniformsLib.normalmap,UniformsLib.displacementmap,UniformsLib.gradientmap,UniformsLib.fog,UniformsLib.lights,{emissive:{value:new Color(0x000000)},specular:{value:new Color(0x111111)},shininess:{value:30}}]),vertexShader:ShaderChunk.meshphong_vert,fragmentShader:ShaderChunk.meshphong_frag},standard:{uniforms:UniformsUtils.merge([UniformsLib.common,UniformsLib.envmap,UniformsLib.aomap,UniformsLib.lightmap,UniformsLib.emissivemap,UniformsLib.bumpmap,UniformsLib.normalmap,UniformsLib.displacementmap,UniformsLib.roughnessmap,UniformsLib.metalnessmap,UniformsLib.fog,UniformsLib.lights,{emissive:{value:new Color(0x000000)},roughness:{value:0.5},metalness:{value:0.5},envMapIntensity:{value:1}}]),vertexShader:ShaderChunk.meshphysical_vert,fragmentShader:ShaderChunk.meshphysical_frag},points:{uniforms:UniformsUtils.merge([UniformsLib.points,UniformsLib.fog]),vertexShader:ShaderChunk.points_vert,fragmentShader:ShaderChunk.points_frag},dashed:{uniforms:UniformsUtils.merge([UniformsLib.common,UniformsLib.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:ShaderChunk.linedashed_vert,fragmentShader:ShaderChunk.linedashed_frag},depth:{uniforms:UniformsUtils.merge([UniformsLib.common,UniformsLib.displacementmap]),vertexShader:ShaderChunk.depth_vert,fragmentShader:ShaderChunk.depth_frag},normal:{uniforms:UniformsUtils.merge([UniformsLib.common,UniformsLib.bumpmap,UniformsLib.normalmap,UniformsLib.displacementmap,{opacity:{value:1.0}}]),vertexShader:ShaderChunk.normal_vert,fragmentShader:ShaderChunk.normal_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1.0}},vertexShader:ShaderChunk.cube_vert,fragmentShader:ShaderChunk.cube_frag},equirect:{uniforms:{tEquirect:{value:null},},vertexShader:ShaderChunk.equirect_vert,fragmentShader:ShaderChunk.equirect_frag},distanceRGBA:{uniforms:UniformsUtils.merge([UniformsLib.common,UniformsLib.displacementmap,{referencePosition:{value:new Vector3()},nearDistance:{value:1},farDistance:{value:1000}}]),vertexShader:ShaderChunk.distanceRGBA_vert,fragmentShader:ShaderChunk.distanceRGBA_frag},shadow:{uniforms:UniformsUtils.merge([UniformsLib.lights,UniformsLib.fog,{color:{value:new Color(0x00000)},opacity:{value:1.0}},]),vertexShader:ShaderChunk.shadow_vert,fragmentShader:ShaderChunk.shadow_frag}};ShaderLib.physical={uniforms:UniformsUtils.merge([ShaderLib.standard.uniforms,{clearCoat:{value:0},clearCoatRoughness:{value:0}}]),vertexShader:ShaderChunk.meshphysical_vert,fragmentShader:ShaderChunk.meshphysical_frag};function WebGLAnimation(){var context=null;var isAnimating=!1;var animationLoop=null;function onAnimationFrame(time,frame){if(isAnimating===!1)return;animationLoop(time,frame);context.requestAnimationFrame(onAnimationFrame)}
3463return{start:function(){if(isAnimating===!0)return;if(animationLoop===null)return;context.requestAnimationFrame(onAnimationFrame);isAnimating=!0},stop:function(){isAnimating=!1},setAnimationLoop:function(callback){animationLoop=callback},setContext:function(value){context=value}}}
3464function WebGLAttributes(gl){var buffers=new WeakMap();function createBuffer(attribute,bufferType){var array=attribute.array;var usage=attribute.dynamic?gl.DYNAMIC_DRAW:gl.STATIC_DRAW;var buffer=gl.createBuffer();gl.bindBuffer(bufferType,buffer);gl.bufferData(bufferType,array,usage);attribute.onUploadCallback();var type=gl.FLOAT;if(array instanceof Float32Array){type=gl.FLOAT}else if(array instanceof Float64Array){console.warn('THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.')}else if(array instanceof Uint16Array){type=gl.UNSIGNED_SHORT}else if(array instanceof Int16Array){type=gl.SHORT}else if(array instanceof Uint32Array){type=gl.UNSIGNED_INT}else if(array instanceof Int32Array){type=gl.INT}else if(array instanceof Int8Array){type=gl.BYTE}else if(array instanceof Uint8Array){type=gl.UNSIGNED_BYTE}
3465return{buffer:buffer,type:type,bytesPerElement:array.BYTES_PER_ELEMENT,version:attribute.version}}
3466function updateBuffer(buffer,attribute,bufferType){var array=attribute.array;var updateRange=attribute.updateRange;gl.bindBuffer(bufferType,buffer);if(attribute.dynamic===!1){gl.bufferData(bufferType,array,gl.STATIC_DRAW)}else if(updateRange.count===-1){gl.bufferSubData(bufferType,0,array)}else if(updateRange.count===0){console.error('THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as 
3466needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.')}else{gl.bufferSubData(bufferType,updateRange.offset*array.BYTES_PER_ELEMENT,array.subarray(updateRange.offset,updateRange.offset+updateRange.count));updateRange.count=-1}}
3467function get(attribute){if(attribute.isInterleavedBufferAttribute)attribute=attribute.data;return buffers.get(attribute)}
3468function remove(attribute){if(attribute.isInterleavedBufferAttribute)attribute=attribute.data;var data=buffers.get(attribute);if(data){gl.deleteBuffer(data.buffer);buffers.delete(attribute)}}
3469function update(attribute,bufferType){if(attribute.isInterleavedBufferAttribute)attribute=attribute.data;var data=buffers.get(attribute);if(data===undefined){buffers.set(attribute,createBuffer(attribute,bufferType))}else if(data.version<attribute.version){updateBuffer(data.buffer,attribute,bufferType);data.version=attribute.version}}
3470return{get:get,remove:remove,update:update}}
3471function Euler(x,y,z,order){this._x=x||0;this._y=y||0;this._z=z||0;this._order=order||Euler.DefaultOrder}
3472Euler.RotationOrders=['XYZ','YZX','ZXY','XZY','YXZ','ZYX'];Euler.DefaultOrder='XYZ';Object.defineProperties(Euler.prototype,{x:{get:function(){return this._x},set:function(value){this._x=value;this.onChangeCallback()}},y:{get:function(){return this._y},set:function(value){this._y=value;this.onChangeCallback()}},z:{get:function(){return this._z},set:function(value){this._z=value;this.onChangeCallback()}},order:{get:function(){return this._order},set:function(value){this._order=value;this.onChangeCallback()}}});Object.assign(Euler.prototype,{isEuler:!0,set:function(x,y,z,order){this._x=x;this._y=y;this._z=z;this._order=order||this._order;this.onChangeCallback();return this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._order)},copy:function(euler){this._x=euler._x;this._y=euler._y;this._z=euler._z;this._order=euler._order;this.onChangeCallback();return this},setFromRotationMatrix:function(m,order,update){var clamp=_Math.clamp;var te=m.elements;var m11=te[0],m12=te[4],m13=te[8];var m21=te[1],m22=te[5],m23=te[9];var m31=te[2],m32=te[6],m33=te[10];order=order||this._order;if(order==='XYZ'){this._y=Math.asin(clamp(m13,-1,1));if(Math.abs(m13)<0.99999){this._x=Math.atan2(-m23,m33);this._z=Math.atan2(-m12,m11)}else{this._x=Math.atan2(m32,m22);this._z=0}}else if(order==='YXZ'){this._x=Math.asin(-clamp(m23,-1,1));if(Math.abs(m23)<0.99999){this._y=Math.atan2(m13,m33);this._z=Math.atan2(m21,m22)}else{this._y=Math.atan2(-m31,m11);this._z=0}}else if(order==='ZXY'){this._x=Math.asin(clamp(m32,-1,1));if(Math.abs(m32)<0.99999){this._y=Math.atan2(-m31,m33);this._z=Math.atan2(-m12,m22)}else{this._y=0;this._z=Math.atan2(m21,m11)}}else if(order==='ZYX'){this._y=Math.asin(-clamp(m31,-1,1));if(Math.abs(m31)<0.99999){this._x=Math.atan2(m32,m33);this._z=Math.atan2(m21,m11)}else{this._x=0;this._z=Math.atan2(-m12,m22)}}else if(order==='YZX'){this._z=Math.asin(clamp(m21,-1,1));if(Math.abs(m21)<0.99999){this._x=Math.atan2(-m23,m22);this._y=Math.atan2(-m31,m11)}else{this._x=0;this._y=Math.atan2(m13,m33)}}else if(order==='XZY'){this._z=Math.asin(-clamp(m12,-1,1));if(Math.abs(m12)<0.99999){this._x=Math.atan2(m32,m22);this._y=Math.atan2(m13,m11)}else{this._x=Math.atan2(-m23,m33);this._y=0}}else{console.warn('THREE.Euler: .setFromRotationMatrix() given unsupported order: '+order)}
3473this._order=order;if(update!==!1)this.onChangeCallback();return this},setFromQuaternion:function(){var matrix=new Matrix4();return function setFromQuaternion(q,order,update){matrix.makeRotationFromQuaternion(q);return this.setFromRotationMatrix(matrix,order,update)}}(),setFromVector3:function(v,order){return this.set(v.x,v.y,v.z,order||this._order)},reorder:function(){var q=new Quaternion();return function reorder(newOrder){q.setFromEuler(this);return this.setFromQuaternion(q,newOrder)}}(),equals:function(euler){return(euler._x===this._x)&&(euler._y===this._y)&&(euler._z===this._z)&&(euler._order===this._order)},fromArray:function(array){this._x=array[0];this._y=array[1];this._z=array[2];if(array[3]!==undefined)this._order=array[3];this.onChangeCallback();return this},toArray:function(array,offset){if(array===undefined)array=[];if(offset===undefined)offset=0;array[offset]=this._x;array[offset+1]=this._y;array[offset+2]=this._z;array[offset+3]=this._order;return array},toVector3:function(optionalResult){if(optionalResult){return optionalResult.set(this._x,this._y,this._z)}else{return new Vector3(this._x,this._y,this._z)}},onChange:function(callback){this.onChangeCallback=callback;return this},onChangeCallback:function(){}});function Layers(){this.mask=1|0}
3474Object.assign(Layers.prototype,{set:function(channel){this.mask=1<<channel|0},enable:function(channel){this.mask|=1<<channel|0},toggle:function(channel){this.mask^=1<<channel|0},disable:function(channel){this.mask&=~(1<<channel|0)},test:function(layers){return(this.mask&layers.mask)!==0}});var object3DId=0;function Object3D(){Object.defineProperty(this,'id',{value:object3DId ++});this.uuid=_Math.generateUUID();this.name='';this.type='Object3D';this.parent=null;this.children=[];this.up=Object3D.DefaultUp.clone();var position=new Vector3();var rotation=new Euler();var quaternion=new Quaternion();var scale=new Vector3(1,1,1);function onRotationChange(){quaternion.setFromEuler(rotation,!1)}
3475function onQuaternionChange(){rotation.setFromQuaternion(quaternion,undefined,!1)}
3476rotation.onChange(onRotationChange);quaternion.onChange(onQuaternionChange);Object.defineProperties(this,{position:{enumerable:!0,value:position},rotation:{enumerable:!0,value:rotation},quaternion:{enumerable:!0,value:quaternion},scale:{enumerable:!0,value:scale},modelViewMatrix:{value:new Matrix4()},normalMatrix:{value:new Matrix3()}});this.matrix=new Matrix4();this.matrixWorld=new Matrix4();this.matrixAutoUpdate=Object3D.DefaultMatrixAutoUpdate;this.matrixWorldNeedsUpdate=!1;this.layers=new Layers();this.visible=!0;this.castShadow=!1;this.receiveShadow=!1;this.frustumCulled=!0;this.renderOrder=0;this.userData={}}
3477Object3D.DefaultUp=new Vector3(0,1,0);Object3D.DefaultMatrixAutoUpdate=!0;Object3D.prototype=Object.assign(Object.create(EventDispatcher.prototype),{constructor:Object3D,isObject3D:!0,onBeforeRender:function(){},onAfterRender:function(){},applyMatrix:function(matrix){this.matrix.multiplyMatrices(matrix,this.matrix);this.matrix.decompose(this.position,this.quaternion,this.scale)},applyQuaternion:function(q){this.quaternion.premultiply(q);return this},setRotationFromAxisAngle:function(axis,angle){this.quaternion.setFromAxisAngle(axis,angle)},setRotationFromEuler:function(euler){this.quaternion.setFromEuler(euler,!0)},setRotationFromMatrix:function(m){this.quaternion.setFromRotationMatrix(m)},setRotationFromQuaternion:function(q){this.quaternion.copy(q)},rotateOnAxis:function(){var q1=new Quaternion();return function rotateOnAxis(axis,angle){q1.setFromAxisAngle(axis,angle);this.quaternion.multiply(q1);return this}}(),rotateOnWorldAxis:function(){var q1=new Quaternion();return function rotateOnWorldAxis(axis,angle){q1.setFromAxisAngle(axis,angle);this.quaternion.premultiply(q1);return this}}(),rotateX:function(){var v1=new Vector3(1,0,0);return function rotateX(angle){return this.rotateOnAxis(v1,angle)}}(),rotateY:function(){var v1=new Vector3(0,1,0);return function rotateY(angle){return this.rotateOnAxis(v1,angle)}}(),rotateZ:function(){var v1=new Vector3(0,0,1);return function rotateZ(angle){return this.rotateOnAxis(v1,angle)}}(),translateOnAxis:function(){var v1=new Vector3();return function translateOnAxis(axis,distance){v1.copy(axis).applyQuaternion(this.quaternion);this.position.add(v1.multiplyScalar(distance));return this}}(),translateX:function(){var v1=new Vector3(1,0,0);return function translateX(distance){return this.translateOnAxis(v1,distance)}}(),translateY:function(){var v1=new Vector3(0,1,0);return function translateY(distance){return this.translateOnAxis(v1,distance)}}(),translateZ:function(){var v1=new Vector3(0,0,1);return function translateZ(distance){return this.translateOnAxis(v1,distance)}}(),localToWorld:function(vector){return vector.applyMatrix4(this.matrixWorld)},worldToLocal:function(){var m1=new Matrix4();return function worldToLocal(vector){return vector.applyMatrix4(m1.getInverse(this.matrixWorld))}}(),lookAt:function(){var m1=new Matrix4();var vector=new Vector3();return function lookAt(x,y,z){if(x.isVector3){vector.copy(x)}else{vector.set(x,y,z)}
3478if(this.isCamera){m1.lookAt(this.position,vector,this.up)}else{m1.lookAt(vector,this.position,this.up)}
3479this.quaternion.setFromRotationMatrix(m1)}}(),add:function(object){if(arguments.length>1){for(var i=0;i<arguments.length;i ++){this.add(arguments[i])}
3480return this}
3481if(object===this){console.error("THREE.Object3D.add: object can't be added as a child of itself.",object);return this}
3482if((object&&object.isObject3D)){if(object.parent!==null){object.parent.remove(object)}
3483object.parent=this;object.dispatchEvent({type:'added'});this.children.push(object)}else{console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",object)}
3484return this},remove:function(object){if(arguments.length>1){for(var i=0;i<arguments.length;i ++){this.remove(arguments[i])}
3485return this}
3486var index=this.children.indexOf(object);if(index!==-1){object.parent=null;object.dispatchEvent({type:'removed'});this.children.splice(index,1)}
3487return this},getObjectById:function(id){return this.getObjectByProperty('id',id)},getObjectByName:function(name){return this.getObjectByProperty('name',name)},getObjectByProperty:function(name,value){if(this[name]===value)return this;for(var i=0,l=this.children.length;i<l;i ++){var child=this.children[i];var object=child.getObjectByProperty(name,value);if(object!==undefined){return object}}
3488return undefined},getWorldPosition:function(target){if(target===undefined){console.warn('THREE.Object3D: .getWorldPosition() target is now required');target=new Vector3()}
3489this.updateMatrixWorld(!0);return target.setFromMatrixPosition(this.matrixWorld)},getWorldQuaternion:function(){var position=new Vector3();var scale=new Vector3();return function getWorldQuaternion(target){if(target===undefined){console.warn('THREE.Object3D: .getWorldQuaternion() target is now required');target=new Quaternion()}
3490this.updateMatrixWorld(!0);this.matrixWorld.decompose(position,target,scale);return target}}(),getWorldScale:function(){var position=new Vector3();var quaternion=new Quaternion();return function getWorldScale(target){if(target===undefined){console.warn('THREE.Object3D: .getWorldScale() target is now required');target=new Vector3()}
3491this.updateMatrixWorld(!0);this.matrixWorld.decompose(position,quaternion,target);return target}}(),getWorldDirection:function(){var quaternion=new Quaternion();return function getWorldDirection(target){if(target===undefined){console.warn('THREE.Object3D: .getWorldDirection() target is now required');target=new Vector3()}
3492this.getWorldQuaternion(quaternion);return target.set(0,0,1).applyQuaternion(quaternion)}}(),raycast:function(){},traverse:function(callback){callback(this);var children=this.children;for(var i=0,l=children.length;i<l;i ++){children[i].traverse(callback)}},traverseVisible:function(callback){if(this.visible===!1)return;callback(this);var children=this.children;for(var i=0,l=children.length;i<l;i ++){children[i].traverseVisible(callback)}},traverseAncestors:function(callback){var parent=this.parent;if(parent!==null){callback(parent);parent.traverseAncestors(callback)}},updateMatrix:function(){this.matrix.compose(this.position,this.quaternion,this.scale);this.matrixWorldNeedsUpdate=!0},updateMatrixWorld:function(force){if(this.matrixAutoUpdate)this.updateMatrix();if(this.matrixWorldNeedsUpdate||force){if(this.parent===null){this.matrixWorld.copy(this.matrix)}else{this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)}
3493this.matrixWorldNeedsUpdate=!1;force=!0}
3494var children=this.children;for(var i=0,l=children.length;i<l;i ++){children[i].updateMatrixWorld(force)}},toJSON:function(meta){var isRootObject=(meta===undefined||typeof meta==='string');var output={};if(isRootObject){meta={geometries:{},materials:{},textures:{},images:{},shapes:{}};output.metadata={version:4.5,type:'Object',generator:'Object3D.toJSON'}}
3495var object={};object.uuid=this.uuid;object.type=this.type;if(this.name!=='')object.name=this.name;if(this.castShadow===!0)object.castShadow=!0;if(this.receiveShadow===!0)object.receiveShadow=!0;if(this.visible===!1)object.visible=!1;if(this.frustumCulled===!1)object.frustumCulled=!1;if(this.renderOrder!==0)object.renderOrder=this.renderOrder;if(JSON.stringify(this.userData)!=='{}')object.userData=this.userData;object.matrix=this.matrix.toArray();if(this.matrixAutoUpdate===!1)object.matrixAutoUpdate=!1;function serialize(library,element){if(library[element.uuid]===undefined){library[element.uuid]=element.toJSON(meta)}
3496return element.uuid}
3497if(this.geometry!==undefined){object.geometry=serialize(meta.geometries,this.geometry);var parameters=this.geometry.parameters;if(parameters!==undefined&&parameters.shapes!==undefined){var shapes=parameters.shapes;if(Array.isArray(shapes)){for(var i=0,l=shapes.length;i<l;i ++){var shape=shapes[i];serialize(meta.shapes,shape)}}else{serialize(meta.shapes,shapes)}}}
3498if(this.material!==undefined){if(Array.isArray(this.material)){var uuids=[];for(var i=0,l=this.material.length;i<l;i ++){uuids.push(serialize(meta.materials,this.material[i]))}
3499object.material=uuids}else{object.material=serialize(meta.materials,this.material)}}
3500if(this.children.length>0){object.children=[];for(var i=0;i<this.children.length;i ++){object.children.push(this.children[i].toJSON(meta).object)}}
3501if(isRootObject){var geometries=extractFromCache(meta.geometries);var materials=extractFromCache(meta.materials);var textures=extractFromCache(meta.textures);var images=extractFromCache(meta.images);var shapes=extractFromCache(meta.shapes);if(geometries.length>0)output.geometries=geometries;if(materials.length>0)output.materials=materials;if(textures.length>0)output.textures=textures;if(images.length>0)output.images=images;if(shapes.length>0)output.shapes=shapes}
3502output.object=object;return output;function extractFromCache(cache){var values=[];for(var key in cache){var data=cache[key];delete data.metadata;values.push(data)}
3503return values}},clone:function(recursive){return new this.constructor().copy(this,recursive)},copy:function(source,recursive){if(recursive===undefined)recursive=!0;this.name=source.name;this.up.copy(source.up);this.position.copy(source.position);this.quaternion.copy(source.quaternion);this.scale.copy(source.scale);this.matrix.copy(source.matrix);this.matrixWorld.copy(source.matrixWorld);this.matrixAutoUpdate=source.matrixAutoUpdate;this.matrixWorldNeedsUpdate=source.matrixWorldNeedsUpdate;this.layers.mask=source.layers.mask;this.visible=source.visible;this.castShadow=source.castShadow;this.receiveShadow=source.receiveShadow;this.frustumCulled=source.frustumCulled;this.renderOrder=source.renderOrder;this.userData=JSON.parse(JSON.stringify(source.userData));if(recursive===!0){for(var i=0;i<source.children.length;i ++){var child=source.children[i];this.add(child.clone())}}
3504return this}});function Camera(){Object3D.call(this);this.type='Camera';this.matrixWorldInverse=new Matrix4();this.projectionMatrix=new Matrix4()}
3505Camera.prototype=Object.assign(Object.create(Object3D.prototype),{constructor:Camera,isCamera:!0,copy:function(source,recursive){Object3D.prototype.copy.call(this,source,recursive);this.matrixWorldInverse.copy(source.matrixWorldInverse);this.projectionMatrix.copy(source.projectionMatrix);return this},getWorldDirection:function(){var quaternion=new Quaternion();return function getWorldDirection(target){if(target===undefined){console.warn('THREE.Camera: .getWorldDirection() target is now required');target=new Vector3()}
3506this.getWorldQuaternion(quaternion);return target.set(0,0,-1).applyQuaternion(quaternion)}}(),updateMatrixWorld:function(force){Object3D.prototype.updateMatrixWorld.call(this,force);this.matrixWorldInverse.getInverse(this.matrixWorld)},clone:function(){return new this.constructor().copy(this)}});
3506function OrthographicCamera(left,right,top,bottom,near,far){Camera.call(this);this.type='OrthographicCamera';this.zoom=1;this.view=null;this.left=left;this.right=right;this.top=top;this.bottom=bottom;this.near=(near!==undefined)?near:0.1;this.far=(far!==undefined)?far:2000;this.updateProjectionMatrix()}
3507OrthographicCamera.prototype=Object.assign(Object.create(Camera.prototype),{constructor:OrthographicCamera,isOrthographicCamera:!0,copy:function(source,recursive){Camera.prototype.copy.call(this,source,recursive);this.left=source.left;this.right=source.right;this.top=source.top;this.bottom=source.bottom;this.near=source.near;this.far=source.far;this.zoom=source.zoom;this.view=source.view===null?null:Object.assign({},source.view);return this},setViewOffset:function(fullWidth,fullHeight,x,y,width,height){if(this.view===null){this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}}
3508this.view.enabled=!0;this.view.fullWidth=fullWidth;this.view.fullHeight=fullHeight;this.view.offsetX=x;this.view.offsetY=y;this.view.width=width;this.view.height=height;this.updateProjectionMatrix()},clearViewOffset:function(){if(this.view!==null){this.view.enabled=!1}
3509this.updateProjectionMatrix()},updateProjectionMatrix:function(){var dx=(this.right-this.left)/(2*this.zoom);var dy=(this.top-this.bottom)/(2*this.zoom);var cx=(this.right+this.left)/2;var cy=(this.top+this.bottom)/2;var left=cx-dx;var right=cx+dx;var top=cy+dy;var bottom=cy-dy;if(this.view!==null&&this.view.enabled){var zoomW=this.zoom/(this.view.width/this.view.fullWidth);var zoomH=this.zoom/(this.view.height/this.view.fullHeight);var scaleW=(this.right-this.left)/this.view.width;var scaleH=(this.top-this.bottom)/this.view.height;left+=scaleW*(this.view.offsetX/zoomW);right=left+scaleW*(this.view.width/zoomW);top-=scaleH*(this.view.offsetY/zoomH);bottom=top-scaleH*(this.view.height/zoomH)}
3510this.projectionMatrix.makeOrthographic(left,right,top,bottom,this.near,this.far)},toJSON:function(meta){var data=Object3D.prototype.toJSON.call(this,meta);data.object.zoom=this.zoom;data.object.left=this.left;data.object.right=this.right;data.object.top=this.top;data.object.bottom=this.bottom;data.object.near=this.near;data.object.far=this.far;if(this.view!==null)data.object.view=Object.assign({},this.view);return data}});function Face3(a,b,c,normal,color,materialIndex){this.a=a;this.b=b;this.c=c;this.normal=(normal&&normal.isVector3)?normal:new Vector3();this.vertexNormals=Array.isArray(normal)?normal:[];this.color=(color&&color.isColor)?color:new Color();this.vertexColors=Array.isArray(color)?color:[];this.materialIndex=materialIndex!==undefined?materialIndex:0}
3511Object.assign(Face3.prototype,{clone:function(){return new this.constructor().copy(this)},copy:function(source){this.a=source.a;this.b=source.b;this.c=source.c;this.normal.copy(source.normal);this.color.copy(source.color);this.materialIndex=source.materialIndex;for(var i=0,il=source.vertexNormals.length;i<il;i ++){this.vertexNormals[i]=source.vertexNormals[i].clone()}
3512for(var i=0,il=source.vertexColors.length;i<il;i ++){this.vertexColors[i]=source.vertexColors[i].clone()}
3513return this}});var geometryId=0;function Geometry(){Object.defineProperty(this,'id',{value:geometryId+=2});this.uuid=_Math.generateUUID();this.name='';this.type='Geometry';this.vertices=[];this.colors=[];this.faces=[];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.lineDistances=[];this.boundingBox=null;this.boundingSphere=null;this.elementsNeedUpdate=!1;this.verticesNeedUpdate=!1;this.uvsNeedUpdate=!1;this.normalsNeedUpdate=!1;this.colorsNeedUpdate=!1;this.lineDistancesNeedUpdate=!1;this.groupsNeedUpdate=!1}
3514Geometry.prototype=Object.assign(Object.create(EventDispatcher.prototype),{constructor:Geometry,isGeometry:!0,applyMatrix:function(matrix){var normalMatrix=new Matrix3().getNormalMatrix(matrix);for(var i=0,il=this.vertices.length;i<il;i ++){var vertex=this.vertices[i];vertex.applyMatrix4(matrix)}
3515for(var i=0,il=this.faces.length;i<il;i ++){var face=this.faces[i];
3515face.normal.applyMatrix3(normalMatrix).normalize();for(var j=0,jl=face.vertexNormals.length;j<jl;j ++){face.vertexNormals[j].applyMatrix3(normalMatrix).normalize()}}
3516if(this.boundingBox!==null){this.computeBoundingBox()}
3517if(this.boundingSphere!==null){this.computeBoundingSphere()}
3518this.verticesNeedUpdate=!0;this.normalsNeedUpdate=!0;return this},rotateX:function(){var m1=new Matrix4();return function rotateX(angle){m1.makeRotationX(angle);this.applyMatrix(m1);return this}}(),rotateY:function(){var m1=new Matrix4();return function rotateY(angle){m1.makeRotationY(angle);this.applyMatrix(m1);return this}}(),rotateZ:function(){var m1=new Matrix4();return function rotateZ(angle){m1.makeRotationZ(angle);this.applyMatrix(m1);return this}}(),translate:function(){var m1=new Matrix4();return function translate(x,y,z){m1.makeTranslation(x,y,z);this.applyMatrix(m1);return this}}(),scale:function(){var m1=new Matrix4();return function scale(x,y,z){m1.makeScale(x,y,z);this.applyMatrix(m1);return this}}(),lookAt:function(){var obj=new Object3D();return function lookAt(vector){obj.lookAt(vector);obj.updateMatrix();this.applyMatrix(obj.matrix)}}(),fromBufferGeometry:function(geometry){var scope=this;
3518var indices=geometry.index!==null?geometry.index.array:undefined;var attributes=geometry.attributes;var positions=attributes.position.array;var normals=attributes.normal!==undefined?attributes.normal.array:undefined;var colors=attributes.color!==undefined?attributes.color.array:undefined;var uvs=attributes.uv!==undefined?attributes.uv.array:undefined;var uvs2=attributes.uv2!==undefined?attributes.uv2.array:undefined;if(uvs2!==undefined)this.faceVertexUvs[1]=[];var tempNormals=[];var tempUVs=[];var tempUVs2=[];for(var i=0,j=0;i<positions.length;i+=3,j+=2){scope.vertices.push(new Vector3(positions[i],positions[i+1],positions[i+2]));if(normals!==undefined){tempNormals.push(new Vector3(normals[i],normals[i+1],normals[i+2]))}
3519if(colors!==undefined){scope.colors.push(new Color(colors[i],colors[i+1],colors[i+2]))}
3520if(uvs!==undefined){tempUVs.push(new Vector2(uvs[j],uvs[j+1]))}
3521if(uvs2!==undefined){tempUVs2.push(new Vector2(uvs2[j],uvs2[j+1]))}}
3522function addFace(a,b,c,materialIndex){var vertexNormals=normals!==undefined?[tempNormals[a].clone(),tempNormals[b].clone(),tempNormals[c].clone()]:[];var vertexColors=colors!==undefined?[scope.colors[a].clone(),scope.colors[b].clone(),scope.colors[c].clone()]:[];var face=new Face3(a,b,c,vertexNormals,vertexColors,materialIndex);scope.faces.push(face);if(uvs!==undefined){scope.faceVertexUvs[0].push([tempUVs[a].clone(),tempUVs[b].clone(),tempUVs[c].clone()])}
3523if(uvs2!==undefined){scope.faceVertexUvs[1].push([tempUVs2[a].clone(),tempUVs2[b].clone(),tempUVs2[c].clone()])}}
3524var groups=geometry.groups;if(groups.length>0){for(var i=0;i<groups.length;i ++){var group=groups[i];var start=group.start;var count=group.count;for(var j=start,jl=start+count;j<jl;j+=3){if(indices!==undefined){addFace(indices[j],indices[j+1],indices[j+2],group.materialIndex)}else{addFace(j,j+1,j+2,group.materialIndex)}}}}else{if(indices!==undefined){for(var i=0;i<indices.length;i+=3){addFace(indices[i],indices[i+1],indices[i+2])}}else{for(var i=0;i<positions.length/3;i+=3){addFace(i,i+1,i+2)}}}
3525this.computeFaceNormals();if(geometry.boundingBox!==null){this.boundingBox=geometry.boundingBox.clone()}
3526if(geometry.boundingSphere!==null){this.boundingSphere=geometry.boundingSphere.clone()}
3527return this},center:function(){var offset=new Vector3();return function center(){this.computeBoundingBox();this.boundingBox.getCenter(offset).negate();this.translate(offset.x,offset.y,offset.z);return this}}(),normalize:function(){this.computeBoundingSphere();var center=this.boundingSphere.center;var radius=this.boundingSphere.radius;var s=radius===0?1:1.0/radius;var matrix=new Matrix4();matrix.set(s,0,0,-s*center.x,0,s,0,-s*center.y,0,0,s,-s*center.z,0,0,0,1);this.applyMatrix(matrix);return this},computeFaceNormals:function(){var cb=new Vector3(),ab=new Vector3();for(var f=0,fl=this.faces.length;f<fl;f ++){var face=this.faces[f];var vA=this.vertices[face.a];var vB=this.vertices[face.b];var vC=this.vertices[face.c];cb.subVectors(vC,vB);ab.subVectors(vA,vB);cb.cross(ab);cb.normalize();face.normal.copy(cb)}},computeVertexNormals:function(areaWeighted){if(areaWeighted===undefined)areaWeighted=!0;var v,vl,f,fl,face,vertices;vertices=new Array(this.vertices.length);for(v=0,vl=this.vertices.length;v<vl;v ++){vertices[v]=new Vector3()}
3528if(areaWeighted){var vA,vB,vC;var cb=new Vector3(),ab=new Vector3();for(f=0,fl=this.faces.length;f<fl;f ++){face=this.faces[f];vA=this.vertices[face.a];vB=this.vertices[face.b];vC=this.vertices[face.c];cb.subVectors(vC,vB);ab.subVectors(vA,vB);cb.cross(ab);vertices[face.a].add(cb);vertices[face.b].add(cb);vertices[face.c].add(cb)}}else{this.computeFaceNormals();for(f=0,fl=this.faces.length;f<fl;f ++){face=this.faces[f];vertices[face.a].add(face.normal);vertices[face.b].add(face.normal);vertices[face.c].add(face.normal)}}
3529for(v=0,vl=this.vertices.length;v<vl;v ++){vertices[v].normalize()}
3530for(f=0,fl=this.faces.length;f<fl;f ++){face=this.faces[f];var vertexNormals=face.vertexNormals;if(vertexNormals.length===3){vertexNormals[0].copy(vertices[face.a]);vertexNormals[1].copy(vertices[face.b]);vertexNormals[2].copy(vertices[face.c])}else{vertexNormals[0]=vertices[face.a].clone();vertexNormals[1]=vertices[face.b].clone();vertexNormals[2]=vertices[face.c].clone()}}
3531if(this.faces.length>0){this.normalsNeedUpdate=!0}},computeFlatVertexNormals:function(){var f,fl,face;this.computeFaceNormals();for(f=0,fl=this.faces.length;f<fl;f ++){face=this.faces[f];var vertexNormals=face.vertexNormals;if(vertexNormals.length===3){vertexNormals[0].copy(face.normal);
3531vertexNormals[1].copy(face.normal);vertexNormals[2].copy(face.normal)}else{vertexNormals[0]=face.normal.clone();vertexNormals[1]=face.normal.clone();vertexNormals[2]=face.normal.clone()}}
3532if(this.faces.length>0){this.normalsNeedUpdate=!0}},computeMorphNormals:function(){var i,il,f,fl,face;for(f=0,fl=this.faces.length;f<fl;f ++){face=this.faces[f];if(!face.__originalFaceNormal){face.__originalFaceNormal=face.normal.clone()}else{face.__originalFaceNormal.copy(face.normal)}
3533if(!face.__originalVertexNormals)face.__originalVertexNormals=[];for(i=0,il=face.vertexNormals.length;i<il;i ++){if(!face.__originalVertexNormals[i]){face.__originalVertexNormals[i]=face.vertexNormals[i].clone()}else{face.__originalVertexNormals[i].copy(face.vertexNormals[i])}}}
3534var tmpGeo=new Geometry();tmpGeo.faces=this.faces;for(i=0,il=this.morphTargets.length;i<il;i ++){if(!this.morphNormals[i]){this.morphNormals[i]={};this.morphNormals[i].faceNormals=[];this.morphNormals[i].vertexNormals=[];var dstNormalsFace=this.morphNormals[i].faceNormals;var dstNormalsVertex=this.morphNormals[i].vertexNormals;var faceNormal,vertexNormals;for(f=0,fl=this.faces.length;f<fl;f ++){faceNormal=new Vector3();vertexNormals={a:new Vector3(),b:new Vector3(),c:new Vector3()};dstNormalsFace.push(faceNormal);dstNormalsVertex.push(vertexNormals)}}
3535var morphNormals=this.morphNormals[i];tmpGeo.vertices=this.morphTargets[i].vertices;tmpGeo.computeFaceNormals();tmpGeo.computeVertexNormals();var faceNormal,vertexNormals;for(f=0,fl=this.faces.length;f<fl;f ++){face=this.faces[f];faceNormal=morphNormals.faceNormals[f];vertexNormals=morphNormals.vertexNormals[f];faceNormal.copy(face.normal);vertexNormals.a.copy(face.vertexNormals[0]);vertexNormals.b.copy(face.vertexNormals[1]);vertexNormals.c.copy(face.vertexNormals[2])}}
3536for(f=0,fl=this.faces.length;f<fl;f ++){face=this.faces[f];
3536face.normal=face.__originalFaceNormal;face.vertexNormals=face.__originalVertexNormals}},computeBoundingBox:function(){if(this.boundingBox===null){this.boundingBox=new Box3()}
3537this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){if(this.boundingSphere===null){this.boundingSphere=new Sphere()}
3538this.boundingSphere.setFromPoints(this.vertices)},merge:function(geometry,matrix,materialIndexOffset){if(!(geometry&&geometry.isGeometry)){console.error('THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.',geometry);return}
3539var normalMatrix,vertexOffset=this.vertices.length,vertices1=this.vertices,vertices2=geometry.vertices,faces1=this.faces,faces2=geometry.faces,uvs1=this.faceVertexUvs[0],uvs2=geometry.faceVertexUvs[0],colors1=this.colors,colors2=geometry.colors;if(materialIndexOffset===undefined)materialIndexOffset=0;if(matrix!==undefined){normalMatrix=new Matrix3().getNormalMatrix(matrix)}
3540for(var i=0,il=vertices2.length;i<il;i ++){var vertex=vertices2[i];var vertexCopy=vertex.clone();if(matrix!==undefined)vertexCopy.applyMatrix4(matrix);vertices1.push(vertexCopy)}
3541for(var i=0,il=colors2.length;i<il;i ++){colors1.push(colors2[i].clone())}
3542for(i=0,il=faces2.length;i<il;i ++){var face=faces2[i],faceCopy,normal,color,faceVertexNormals=face.vertexNormals,faceVertexColors=face.vertexColors;faceCopy=new Face3(face.a+vertexOffset,face.b+vertexOffset,face.c+vertexOffset);faceCopy.normal.copy(face.normal);if(normalMatrix!==undefined){faceCopy.normal.applyMatrix3(normalMatrix).normalize()}
3543for(var j=0,jl=faceVertexNormals.length;j<jl;j ++){normal=faceVertexNormals[j].clone();if(normalMatrix!==undefined){normal.applyMatrix3(normalMatrix).normalize()}
3544faceCopy.vertexNormals.push(normal)}
3545faceCopy.color.copy(face.color);for(var j=0,jl=faceVertexColors.length;j<jl;j ++){color=faceVertexColors[j];faceCopy.vertexColors.push(color.clone())}
3546faceCopy.materialIndex=face.materialIndex+materialIndexOffset;faces1.push(faceCopy)}
3547for(i=0,il=uvs2.length;i<il;i ++){var uv=uvs2[i],uvCopy=[];if(uv===undefined){continue}
3548for(var j=0,jl=uv.length;j<jl;j ++){uvCopy.push(uv[j].clone())}
3549uvs1.push(uvCopy)}},mergeMesh:function(mesh){if(!(mesh&&mesh.isMesh)){console.error('THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.',mesh);return}
3550if(mesh.matrixAutoUpdate)mesh.updateMatrix();this.merge(mesh.geometry,mesh.matrix)},mergeVertices:function(){var verticesMap={};var unique=[],changes=[];var v,key;var precisionPoints=4;var precision=Math.pow(10,precisionPoints);var i,il,face;var indices,j,jl;for(i=0,il=this.vertices.length;i<il;i ++){v=this.vertices[i];key=Math.round(v.x*precision)+'_'+Math.round(v.y*precision)+'_'+Math.round(v.z*precision);if(verticesMap[key]===undefined){verticesMap[key]=i;unique.push(this.vertices[i]);changes[i]=unique.length-1}else{changes[i]=changes[verticesMap[key]]}}
3551var faceIndicesToRemove=[];for(i=0,il=this.faces.length;i<il;i ++){face=this.faces[i];face.a=changes[face.a];face.b=changes[face.b];face.c=changes[face.c];indices=[face.a,face.b,face.c];for(var n=0;n<3;n ++){if(indices[n]===indices[(n+1)%3]){faceIndicesToRemove.push(i);break}}}
3552for(i=faceIndicesToRemove.length-1;i>=0;i --){var idx=faceIndicesToRemove[i];this.faces.splice(idx,1);for(j=0,jl=this.faceVertexUvs.length;j<jl;j ++){this.faceVertexUvs[j].splice(idx,1)}}
3553var diff=this.vertices.length-unique.length;this.vertices=unique;return diff},setFromPoints:function(points){this.vertices=[];for(var i=0,l=points.length;i<l;i ++){var point=points[i];this.vertices.push(new Vector3(point.x,point.y,point.z||0))}
3554return this},sortFacesByMaterialIndex:function(){var faces=this.faces;var length=faces.length;for(var i=0;i<length;i ++){faces[i]._id=i}
3555function materialIndexSort(a,b){return a.materialIndex-b.materialIndex}
3556faces.sort(materialIndexSort);var uvs1=this.faceVertexUvs[0];var uvs2=this.faceVertexUvs[1];var newUvs1,newUvs2;if(uvs1&&uvs1.length===length)newUvs1=[];if(uvs2&&uvs2.length===length)newUvs2=[];for(var i=0;i<length;i ++){var id=faces[i]._id;if(newUvs1)newUvs1.push(uvs1[id]);if(newUvs2)newUvs2.push(uvs2[id]);}
3557if(newUvs1)this.faceVertexUvs[0]=newUvs1;if(newUvs2)this.faceVertexUvs[1]=newUvs2},toJSON:function(){var data={metadata:{version:4.5,type:'Geometry',generator:'Geometry.toJSON'}};data.uuid=this.uuid;
3557data.type=this.type;if(this.name!=='')data.name=this.name;if(this.parameters!==undefined){var parameters=this.parameters;for(var key in parameters){if(parameters[key]!==undefined)data[key]=parameters[key]}
3558return data}
3559var vertices=[];for(var i=0;i<this.vertices.length;i ++){var vertex=this.vertices[i];vertices.push(vertex.x,vertex.y,vertex.z)}
3560var faces=[];var normals=[];var normalsHash={};var colors=[];var colorsHash={};var uvs=[];var uvsHash={};for(var i=0;i<this.faces.length;i ++){var face=this.faces[i];var hasMaterial=!0;var hasFaceUv=!1;var hasFaceVertexUv=this.faceVertexUvs[0][i]!==undefined;var hasFaceNormal=face.normal.length()>0;var hasFaceVertexNormal=face.vertexNormals.length>0;var hasFaceColor=face.color.r!==1||face.color.g!==1||face.color.b!==1;var hasFaceVertexColor=face.vertexColors.length>0;var faceType=0;faceType=setBit(faceType,0,0);faceType=setBit(faceType,1,hasMaterial);faceType=setBit(faceType,2,hasFaceUv);faceType=setBit(faceType,3,hasFaceVertexUv);faceType=setBit(faceType,4,hasFaceNormal);faceType=setBit(faceType,5,hasFaceVertexNormal);faceType=setBit(faceType,6,hasFaceColor);faceType=setBit(faceType,7,hasFaceVertexColor);faces.push(faceType);faces.push(face.a,face.b,face.c);faces.push(face.materialIndex);if(hasFaceVertexUv){var faceVertexUvs=this.faceVertexUvs[0][i];faces.push(getUvIndex(faceVertexUvs[0]),getUvIndex(faceVertexUvs[1]),getUvIndex(faceVertexUvs[2]))}
3561if(hasFaceNormal){faces.push(getNormalIndex(face.normal))}
3562if(hasFaceVertexNormal){var vertexNormals=face.vertexNormals;faces.push(getNormalIndex(vertexNormals[0]),getNormalIndex(vertexNormals[1]),getNormalIndex(vertexNormals[2]))}
3563if(hasFaceColor){faces.push(getColorIndex(face.color))}
3564if(hasFaceVertexColor){var vertexColors=face.vertexColors;faces.push(getColorIndex(vertexColors[0]),getColorIndex(vertexColors[1]),getColorIndex(vertexColors[2]))}}
3565function setBit(value,position,enabled){return enabled?value|(1<<position):value&(~(1<<position))}
3566function getNormalIndex(normal){var hash=normal.x.toString()+normal.y.toString()+normal.z.toString();if(normalsHash[hash]!==undefined){return normalsHash[hash]}
3567normalsHash[hash]=normals.length/3;normals.push(normal.x,normal.y,normal.z);return normalsHash[hash]}
3568function getColorIndex(color){var hash=color.r.toString()+color.g.toString()+color.b.toString();if(colorsHash[hash]!==undefined){return colorsHash[hash]}
3569colorsHash[hash]=colors.length;colors.push(color.getHex());return colorsHash[hash]}
3570function getUvIndex(uv){var hash=uv.x.toString()+uv.y.toString();if(uvsHash[hash]!==undefined){return uvsHash[hash]}
3571uvsHash[hash]=uvs.length/2;uvs.push(uv.x,uv.y);return uvsHash[hash]}
3572data.data={};data.data.vertices=vertices;data.data.normals=normals;if(colors.length>0)data.data.colors=colors;if(uvs.length>0)data.data.uvs=[uvs];data.data.faces=faces;return data},clone:function(){return new Geometry().copy(this)},copy:function(source){var i,il,j,jl,k,kl;this.vertices=[];this.colors=[];this.faces=[];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.lineDistances=[];this.boundingBox=null;this.boundingSphere=null;this.name=source.name;var vertices=source.vertices;for(i=0,il=vertices.length;i<il;i ++){this.vertices.push(vertices[i].clone())}
3573var colors=source.colors;for(i=0,il=colors.length;i<il;i ++){this.colors.push(colors[i].clone())}
3574var faces=source.faces;for(i=0,il=faces.length;i<il;i ++){this.faces.push(faces[i].clone())}
3575for(i=0,il=source.faceVertexUvs.length;i<il;i ++){var faceVertexUvs=source.faceVertexUvs[i];if(this.faceVertexUvs[i]===undefined){this.faceVertexUvs[i]=[]}
3576for(j=0,jl=faceVertexUvs.length;j<jl;j ++){var uvs=faceVertexUvs[j],uvsCopy=[];for(k=0,kl=uvs.length;k<kl;k ++){var uv=uvs[k];uvsCopy.push(uv.clone())}
3577this.faceVertexUvs[i].push(uvsCopy)}}
3578var morphTargets=source.morphTargets;for(i=0,il=morphTargets.length;i<il;i ++){var morphTarget={};morphTarget.name=morphTargets[i].name;if(morphTargets[i].vertices!==undefined){morphTarget.vertices=[];for(j=0,jl=morphTargets[i].vertices.length;j<jl;j ++){morphTarget.vertices.push(morphTargets[i].vertices[j].clone())}}
3579if(morphTargets[i].normals!==undefined){morphTarget.normals=[];for(j=0,jl=morphTargets[i].normals.length;j<jl;j ++){morphTarget.normals.push(morphTargets[i].normals[j].clone())}}
3580this.morphTargets.push(morphTarget)}
3581var morphNormals=source.morphNormals;for(i=0,il=morphNormals.length;i<il;i ++){var morphNormal={};if(morphNormals[i].vertexNormals!==undefined){morphNormal.vertexNormals=[];for(j=0,jl=morphNormals[i].vertexNormals.length;j<jl;j ++){var srcVertexNormal=morphNormals[i].vertexNormals[j];var destVertexNormal={};destVertexNormal.a=srcVertexNormal.a.clone();destVertexNormal.b=srcVertexNormal.b.clone();destVertexNormal.c=srcVertexNormal.c.clone();morphNormal.vertexNormals.push(destVertexNormal)}}
3582if(morphNormals[i].faceNormals!==undefined){morphNormal.faceNormals=[];for(j=0,jl=morphNormals[i].faceNormals.length;j<jl;j ++){morphNormal.faceNormals.push(morphNormals[i].faceNormals[j].clone())}}
3583this.morphNormals.push(morphNormal)}
3584var skinWeights=source.skinWeights;for(i=0,il=skinWeights.length;i<il;i ++){this.skinWeights.push(skinWeights[i].clone())}
3585var skinIndices=source.skinIndices;for(i=0,il=skinIndices.length;i<il;i ++){this.skinIndices.push(skinIndices[i].clone())}
3586var lineDistances=source.lineDistances;for(i=0,il=lineDistances.length;i<il;i ++){this.lineDistances.push(lineDistances[i])}
3587var boundingBox=source.boundingBox;
3587if(boundingBox!==null){this.boundingBox=boundingBox.clone()}
3588var boundingSphere=source.boundingSphere;if(boundingSphere!==null){this.boundingSphere=boundingSphere.clone()}
3589this.elementsNeedUpdate=source.elementsNeedUpdate;this.verticesNeedUpdate=source.verticesNeedUpdate;this.uvsNeedUpdate=source.uvsNeedUpdate;this.normalsNeedUpdate=source.normalsNeedUpdate;this.colorsNeedUpdate=source.colorsNeedUpdate;this.lineDistancesNeedUpdate=source.lineDistancesNeedUpdate;this.groupsNeedUpdate=source.groupsNeedUpdate;return this},dispose:function(){this.dispatchEvent({type:'dispose'})}});function BufferAttribute(array,itemSize,normalized){if(Array.isArray(array)){throw new TypeError('THREE.BufferAttribute: array should be a Typed Array.')}
3590this.name='';this.array=array;this.itemSize=itemSize;this.count=array!==undefined?array.length/itemSize:0;this.normalized=normalized===!0;this.dynamic=!1;this.updateRange={offset:0,count:-1};this.version=0}
3591Object.defineProperty(BufferAttribute.prototype,'needsUpdate',{set:function(value){if(value===!0)this.version ++}});Object.assign(BufferAttribute.prototype,{isBufferAttribute:!0,onUploadCallback:function(){},setArray:function(array){if(Array.isArray(array)){throw new TypeError('THREE.BufferAttribute: array should be a Typed Array.')}
3592this.count=array!==undefined?array.length/this.itemSize:0;this.array=array;return this},setDynamic:function(value){this.dynamic=value;return this},copy:function(source){this.name=source.name;this.array=new source.array.constructor(source.array);this.itemSize=source.itemSize;this.count=source.count;this.normalized=source.normalized;this.dynamic=source.dynamic;return this},copyAt:function(index1,attribute,index2){index1*=this.itemSize;index2*=attribute.itemSize;for(var i=0,l=this.itemSize;i<l;i ++){this.array[index1+i]=attribute.array[index2+i]}
3593return this},copyArray:function(array){this.array.set(array);return this},copyColorsArray:function(colors){var array=this.array,offset=0;for(var i=0,l=colors.length;i<l;i ++){var color=colors[i];if(color===undefined){console.warn('THREE.BufferAttribute.copyColorsArray(): color is undefined',i);color=new Color()}
3594array[offset ++]=color.r;array[offset ++]=color.g;array[offset ++]=color.b}
3595return this},copyVector2sArray:function(vectors){var array=this.array,offset=0;for(var i=0,l=vectors.length;i<l;i ++){var vector=vectors[i];if(vector===undefined){console.warn('THREE.BufferAttribute.copyVector2sArray(): vector is undefined',i);vector=new Vector2()}
3596array[offset ++]=vector.x;array[offset ++]=vector.y}
3597return this},copyVector3sArray:function(vectors){var array=this.array,offset=0;for(var i=0,l=vectors.length;i<l;i ++){var vector=vectors[i];if(vector===undefined){console.warn('THREE.BufferAttribute.copyVector3sArray(): vector is undefined',i);vector=new Vector3()}
3598array[offset ++]=vector.x;array[offset ++]=vector.y;array[offset ++]=vector.z}
3599return this},copyVector4sArray:function(vectors){var array=this.array,offset=0;for(var i=0,l=vectors.length;i<l;i ++){var vector=vectors[i];if(vector===undefined){console.warn('THREE.BufferAttribute.copyVector4sArray(): vector is undefined',i);vector=new Vector4()}
3600array[offset ++]=vector.x;array[offset ++]=vector.y;array[offset ++]=vector.z;array[offset ++]=vector.w}
3601return this},set:function(value,offset){if(offset===undefined)offset=0;this.array.set(value,offset);return this},getX:function(index){return this.array[index*this.itemSize]},setX:function(index,x){this.array[index*this.itemSize]=x;return this},getY:function(index){return this.array[index*this.itemSize+1]},setY:function(index,y){this.array[index*this.itemSize+1]=y;return this},getZ:function(index){return this.array[index*this.itemSize+2]},setZ:function(index,z){this.array[index*this.itemSize+2]=z;return this},getW:function(index){return this.array[index*this.itemSize+3]},setW:function(index,w){this.array[index*this.itemSize+3]=w;return this},setXY:function(index,x,y){index*=this.itemSize;this.array[index+0]=x;this.array[index+1]=y;return this},setXYZ:function(index,x,y,z){index*=this.itemSize;this.array[index+0]=x;this.array[index+1]=y;this.array[index+2]=z;return this},setXYZW:function(index,x,y,z,w){index*=this.itemSize;this.array[index+0]=x;this.array[index+1]=y;this.array[index+2]=z;this.array[index+3]=w;return this},onUpload:function(callback){this.onUploadCallback=callback;return this},clone:function(){return new this.constructor(this.array,this.itemSize).copy(this)}});function Int8BufferAttribute(array,itemSize,normalized){BufferAttribute.call(this,new Int8Array(array),itemSize,normalized)}
3602Int8BufferAttribute.prototype=Object.create(BufferAttribute.prototype);Int8BufferAttribute.prototype.constructor=Int8BufferAttribute;function Uint8BufferAttribute(array,itemSize,normalized){BufferAttribute.call(this,new Uint8Array(array),itemSize,normalized)}
3603Uint8BufferAttribute.prototype=Object.create(BufferAttribute.prototype);Uint8BufferAttribute.prototype.constructor=Uint8BufferAttribute;function Uint8ClampedBufferAttribute(array,itemSize,normalized){BufferAttribute.call(this,new Uint8ClampedArray(array),itemSize,normalized)}
3604Uint8ClampedBufferAttribute.prototype=Object.create(BufferAttribute.prototype);Uint8ClampedBufferAttribute.prototype.constructor=Uint8ClampedBufferAttribute;function Int16BufferAttribute(array,itemSize,normalized){BufferAttribute.call(this,new Int16Array(array),itemSize,normalized)}
3605Int16BufferAttribute.prototype=Object.create(BufferAttribute.prototype);Int16BufferAttribute.prototype.constructor=Int16BufferAttribute;function Uint16BufferAttribute(array,itemSize,normalized){BufferAttribute.call(this,new Uint16Array(array),itemSize,normalized)}
3606Uint16BufferAttribute.prototype=Object.create(BufferAttribute.prototype);Uint16BufferAttribute.prototype.constructor=Uint16BufferAttribute;function Int32BufferAttribute(array,itemSize,normalized){BufferAttribute.call(this,new Int32Array(array),itemSize,normalized)}
3607Int32BufferAttribute.prototype=Object.create(BufferAttribute.prototype);Int32BufferAttribute.prototype.constructor=Int32BufferAttribute;function Uint32BufferAttribute(array,itemSize,normalized){BufferAttribute.call(this,new Uint32Array(array),itemSize,normalized)}
3608Uint32BufferAttribute.prototype=Object.create(BufferAttribute.prototype);Uint32BufferAttribute.prototype.constructor=Uint32BufferAttribute;function Float32BufferAttribute(array,itemSize,normalized){BufferAttribute.call(this,new Float32Array(array),itemSize,normalized)}
3609Float32BufferAttribute.prototype=Object.create(BufferAttribute.prototype);Float32BufferAttribute.prototype.constructor=Float32BufferAttribute;function Float64BufferAttribute(array,itemSize,normalized){BufferAttribute.call(this,new Float64Array(array),itemSize,normalized)}
3610Float64BufferAttribute.prototype=Object.create(BufferAttribute.prototype);Float64BufferAttribute.prototype.constructor=Float64BufferAttribute;function DirectGeometry(){this.vertices=[];this.normals=[];this.colors=[];this.uvs=[];this.uvs2=[];this.groups=[];this.morphTargets={};this.skinWeights=[];this.skinIndices=[];this.boundingBox=null;this.boundingSphere=null;this.verticesNeedUpdate=!1;this.normalsNeedUpdate=!1;this.colorsNeedUpdate=!1;this.uvsNeedUpdate=!1;this.groupsNeedUpdate=!1}
3611Object.assign(DirectGeometry.prototype,{computeGroups:function(geometry){var group;var groups=[];var materialIndex=undefined;var faces=geometry.faces;for(var i=0;i<faces.length;i ++){var face=faces[i];if(face.materialIndex!==materialIndex){materialIndex=face.materialIndex;
3611if(group!==undefined){group.count=(i*3)-group.start;groups.push(group)}
3612group={start:i*3,materialIndex:materialIndex}}}
3613if(group!==undefined){group.count=(i*3)-group.start;groups.push(group)}
3614this.groups=groups},fromGeometry:function(geometry){var faces=geometry.faces;var vertices=geometry.vertices;var faceVertexUvs=geometry.faceVertexUvs;var hasFaceVertexUv=faceVertexUvs[0]&&faceVertexUvs[0].length>0;var hasFaceVertexUv2=faceVertexUvs[1]&&faceVertexUvs[1].length>0;var morphTargets=geometry.morphTargets;var morphTargetsLength=morphTargets.length;var morphTargetsPosition;if(morphTargetsLength>0){morphTargetsPosition=[];for(var i=0;i<morphTargetsLength;i ++){morphTargetsPosition[i]=[]}
3615this.morphTargets.position=morphTargetsPosition}
3616var morphNormals=geometry.morphNormals;var morphNormalsLength=morphNormals.length;var morphTargetsNormal;if(morphNormalsLength>0){morphTargetsNormal=[];for(var i=0;i<morphNormalsLength;i ++){morphTargetsNormal[i]=[]}
3617this.morphTargets.normal=morphTargetsNormal}
3618var skinIndices=geometry.skinIndices;var skinWeights=geometry.skinWeights;var hasSkinIndices=skinIndices.length===vertices.length;var hasSkinWeights=skinWeights.length===vertices.length;if(faces.length===0){console.error('THREE.DirectGeometry: Faceless geometries are not supported.')}
3619for(var i=0;i<faces.length;i ++){var face=faces[i];this.vertices.push(vertices[face.a],vertices[face.b],vertices[face.c]);var vertexNormals=face.vertexNormals;if(vertexNormals.length===3){this.normals.push(vertexNormals[0],vertexNormals[1],vertexNormals[2])}else{var normal=face.normal;this.normals.push(normal,normal,normal)}
3620var vertexColors=face.vertexColors;if(vertexColors.length===3){this.colors.push(vertexColors[0],vertexColors[1],vertexColors[2])}else{var color=face.color;this.colors.push(color,color,color)}
3621if(hasFaceVertexUv===!0){var vertexUvs=faceVertexUvs[0][i];if(vertexUvs!==undefined){this.uvs.push(vertexUvs[0],vertexUvs[1],vertexUvs[2])}else{console.warn('THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ',i
3621);this.uvs.push(new Vector2(),new Vector2(),new Vector2())}}
3622if(hasFaceVertexUv2===!0){var vertexUvs=faceVertexUvs[1][i];if(vertexUvs!==undefined){this.uvs2.push(vertexUvs[0],vertexUvs[1],vertexUvs[2])}else{console.warn('THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ',i);this.uvs2.push(new Vector2(),new Vector2(),new Vector2())}}
3623for(var j=0;j<morphTargetsLength;j ++){var morphTarget=morphTargets[j].vertices;morphTargetsPosition[j].push(morphTarget[face.a],morphTarget[face.b],morphTarget[face.c])}
3624for(var j=0;j<morphNormalsLength;j ++){var morphNormal=morphNormals[j].vertexNormals[i];morphTargetsNormal[j].push(morphNormal.a,morphNormal.b,morphNormal.c)}
3625if(hasSkinIndices){this.skinIndices.push(skinIndices[face.a],skinIndices[face.b],skinIndices[face.c])}
3626if(hasSkinWeights){this.skinWeights.push(skinWeights[face.a],skinWeights[face.b],skinWeights[face.c])}}
3627this.computeGroups(geometry);this.verticesNeedUpdate=geometry.verticesNeedUpdate;this.normalsNeedUpdate=geometry.normalsNeedUpdate;this.colorsNeedUpdate=geometry.colorsNeedUpdate;this.uvsNeedUpdate=geometry.uvsNeedUpdate;this.groupsNeedUpdate=geometry.groupsNeedUpdate;return this}});function arrayMax(array){if(array.length===0)return-Infinity;var max=array[0];for(var i=1,l=array.length;i<l;++ i){if(array[i]>max)max=array[i]}
3628return max}
3629var bufferGeometryId=1;function BufferGeometry(){Object.defineProperty(this,'id',{value:bufferGeometryId+=2});this.uuid=_Math.generateUUID();this.name='';this.type='BufferGeometry';this.index=null;this.attributes={};this.morphAttributes={};this.groups=[];this.boundingBox=null;this.boundingSphere=null;this.drawRange={start:0,count:Infinity};this.userData={}}
3630BufferGeometry.prototype=Object.assign(Object.create(EventDispatcher.prototype),{constructor:BufferGeometry,isBufferGeometry:!0,getIndex:function(){return this.index},setIndex:function(index){if(Array.isArray(index)){this.index=new(arrayMax(index)>65535?Uint32BufferAttribute:Uint16BufferAttribute)(index,1)}else{this.index=index}},addAttribute:function(name,attribute){if(!(attribute&&attribute.isBufferAttribute)&&!(attribute&&attribute.isInterleavedBufferAttribute)){console.warn('THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).');return this.addAttribute(name,new BufferAttribute(arguments[1],arguments[2]))}
3631if(name==='index'){console.warn('THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.');this.setIndex(attribute);return this}
3632this.attributes[name]=attribute;return this},getAttribute:function(name){return this.attributes[name]},removeAttribute:function(name){delete this.attributes[name];return this},addGroup:function(start,count,materialIndex){this.groups.push({start:start,count:count,materialIndex:materialIndex!==undefined?materialIndex:0})},clearGroups:function(){this.groups=[]},setDrawRange:function(start,count){this.drawRange.start=start;this.drawRange.count=count},applyMatrix:function(matrix){var position=this.attributes.position;if(position!==undefined){matrix.applyToBufferAttribute(position);position.needsUpdate=!0}
3633var normal=this.attributes.normal;if(normal!==undefined){var normalMatrix=new Matrix3().getNormalMatrix(matrix);normalMatrix.applyToBufferAttribute(normal);normal.needsUpdate=!0}
3634if(this.boundingBox!==null){this.computeBoundingBox()}
3635if(this.boundingSphere!==null){this.computeBoundingSphere()}
3636return this},rotateX:function(){var m1=new Matrix4();return function rotateX(angle){m1.makeRotationX(angle);this.applyMatrix(m1);return this}}(),rotateY:function(){var m1=new Matrix4();return function rotateY(angle){m1.makeRotationY(angle);this.applyMatrix(m1);return this}}(),rotateZ:function(){var m1=new Matrix4();return function rotateZ(angle){m1.makeRotationZ(angle);this.applyMatrix(m1);return this}}(),translate:function(){var m1=new Matrix4();return function translate(x,y,z){m1.makeTranslation(x,y,z);this.applyMatrix(m1);return this}}(),scale:function(){var m1=new Matrix4();return function scale(x,y,z){m1.makeScale(x,y,z);this.applyMatrix(m1);return this}}(),lookAt:function(){var obj=new Object3D();return function lookAt(vector){obj.lookAt(vector);obj.updateMatrix();this.applyMatrix(obj.matrix)}}(),center:function(){var offset=new Vector3();return function center(){this.computeBoundingBox();this.boundingBox.getCenter(offset).negate();this.translate(offset.x,offset.y,offset.z);return this}}(),setFromObject:function(object){var geometry=object.geometry;if(object.isPoints||object.isLine){var positions=new Float32BufferAttribute(geometry.vertices.length*3,3);var colors=new Float32BufferAttribute(geometry.colors.length*3,3);this.addAttribute('position',positions.copyVector3sArray(geometry.vertices));this.addAttribute('color',colors.copyColorsArray(geometry.colors));if(geometry.lineDistances&&geometry.lineDistances.length===geometry.vertices.length){var lineDistances=new Float32BufferAttribute(geometry.lineDistances.length,1);this.addAttribute('lineDistance',lineDistances.copyArray(geometry.lineDistances))}
3637if(geometry.boundingSphere!==null){this.boundingSphere=geometry.boundingSphere.clone()}
3638if(geometry.boundingBox!==null){this.boundingBox=geometry.boundingBox.clone()}}
3638else if(object.isMesh){if(geometry&&geometry.isGeometry){this.fromGeometry(geometry)}}
3639return this},setFromPoints:function(points){var position=[];for(var i=0,l=points.length;i<l;i ++){var point=points[i];position.push(point.x,point.y,point.z||0)}
3640this.addAttribute('position',new Float32BufferAttribute(position,3));return this},updateFromObject:function(object){var geometry=object.geometry;if(object.isMesh){var direct=geometry.__directGeometry;if(geometry.elementsNeedUpdate===!0){direct=undefined;geometry.elementsNeedUpdate=!1}
3641if(direct===undefined){return this.fromGeometry(geometry)}
3642direct.verticesNeedUpdate=geometry.verticesNeedUpdate;direct.normalsNeedUpdate=geometry.normalsNeedUpdate;direct.colorsNeedUpdate=geometry.colorsNeedUpdate;direct.uvsNeedUpdate=geometry.uvsNeedUpdate;direct.groupsNeedUpdate=geometry.groupsNeedUpdate;geometry.verticesNeedUpdate=!1;geometry.normalsNeedUpdate=!1;geometry.colorsNeedUpdate=!1;geometry.uvsNeedUpdate=!1;geometry.groupsNeedUpdate=!1;geometry=direct}
3643var attribute;if(geometry.verticesNeedUpdate===!0){attribute=this.attributes.position;if(attribute!==undefined){attribute.copyVector3sArray(geometry.vertices);attribute.needsUpdate=!0}
3644geometry.verticesNeedUpdate=!1}
3645if(geometry.normalsNeedUpdate===!0){attribute=this.attributes.normal;if(attribute!==undefined){attribute.copyVector3sArray(geometry.normals);attribute.needsUpdate=!0}
3646geometry.normalsNeedUpdate=!1}
3647if(geometry.colorsNeedUpdate===!0){attribute=this.attributes.color;if(attribute!==undefined){attribute.copyColorsArray(geometry.colors);attribute.needsUpdate=!0}
3648geometry.colorsNeedUpdate=!1}
3649if(geometry.uvsNeedUpdate){attribute=this.attributes.uv;if(attribute!==undefined){attribute.copyVector2sArray(geometry.uvs);attribute.needsUpdate=!0}
3650geometry.uvsNeedUpdate=!1}
3651if(geometry.lineDistancesNeedUpdate){attribute=this.attributes.lineDistance;if(attribute!==undefined){attribute.copyArray(geometry.lineDistances);attribute.needsUpdate=!0}
3652geometry.lineDistancesNeedUpdate=!1}
3653if(geometry.groupsNeedUpdate){geometry.computeGroups(object.geometry);this.groups=geometry.groups;geometry.groupsNeedUpdate=!1}
3654return this},fromGeometry:function(geometry){geometry.__directGeometry=new DirectGeometry().fromGeometry(geometry);return this.fromDirectGeometry(geometry.__directGeometry)},fromDirectGeometry:function(geometry){var positions=new Float32Array(geometry.vertices.length*3);this.addAttribute('position',new BufferAttribute(positions,3).copyVector3sArray(geometry.vertices));if(geometry.normals.length>0){var normals=new Float32Array(geometry.normals.length*3);this.addAttribute('normal',new BufferAttribute(normals,3).copyVector3sArray(geometry.normals))}
3655if(geometry.colors.length>0){var colors=new Float32Array(geometry.colors.length*3);this.addAttribute('color',new BufferAttribute(colors,3).copyColorsArray(geometry.colors))}
3656if(geometry.uvs.length>0){var uvs=new Float32Array(geometry.uvs.length*2);this.addAttribute('uv',new BufferAttribute(uvs,2).copyVector2sArray(geometry.uvs))}
3657if(geometry.uvs2.length>0){var uvs2=new Float32Array(geometry.uvs2.length*2);this.addAttribute('uv2',new BufferAttribute(uvs2,2).copyVector2sArray(geometry.uvs2))}
3658this.groups=geometry.groups;for(var name in geometry.morphTargets){var array=[];var morphTargets=geometry.morphTargets[name];for(var i=0,l=morphTargets.length;i<l;i ++){var morphTarget=morphTargets[i];var attribute=new Float32BufferAttribute(morphTarget.length*3,3);array.push(attribute.copyVector3sArray(morphTarget))}
3659this.morphAttributes[name]=array}
3660if(geometry.skinIndices.length>0){var skinIndices=new Float32BufferAttribute(geometry.skinIndices.length*4,4);this.addAttribute('skinIndex',skinIndices.copyVector4sArray(geometry.skinIndices))}
3661if(geometry.skinWeights.length>0){var skinWeights=new Float32BufferAttribute(geometry.skinWeights.length*4,4);this.addAttribute('skinWeight',skinWeights.copyVector4sArray(geometry.skinWeights))}
3662if(geometry.boundingSphere!==null){this.boundingSphere=geometry.boundingSphere.clone()}
3663if(geometry.boundingBox!==null){this.boundingBox=geometry.boundingBox.clone()}
3664return this},computeBoundingBox:function(){if(this.boundingBox===null){this.boundingBox=new Box3()}
3665var position=this.attributes.position;
3665if(position!==undefined){this.boundingBox.setFromBufferAttribute(position)}else{this.boundingBox.makeEmpty()}
3666if(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z)){console.error('THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}},computeBoundingSphere:function(){var box=new Box3();var vector=new Vector3();return function computeBoundingSphere(){if(this.boundingSphere===null){this.boundingSphere=new Sphere()}
3667var position=this.attributes.position;if(position){var center=this.boundingSphere.center;box.setFromBufferAttribute(position);box.getCenter(center);var maxRadiusSq=0;for(var i=0,il=position.count;i<il;i ++){vector.x=position.getX(i);vector.y=position.getY(i);vector.z=position.getZ(i);maxRadiusSq=Math.max(maxRadiusSq,center.distanceToSquared(vector))}
3668this.boundingSphere.radius=Math.sqrt(maxRadiusSq);if(isNaN(this.boundingSphere.radius)){console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}}}(),computeFaceNormals:function(){},computeVertexNormals:function(){var index=this.index;var attributes=this.attributes;var groups=this.groups;if(attributes.position){var positions=attributes.position.array;if(attributes.normal===undefined){this.addAttribute('normal',new BufferAttribute(new Float32Array(positions.length),3))}else{var array=attributes.normal.array;for(var i=0,il=array.length;i<il;i ++){array[i]=0}}
3669var normals=attributes.normal.array;var vA,vB,vC;var pA=new Vector3(),pB=new Vector3(),pC=new Vector3();var cb=new Vector3(),ab=new Vector3();if(index){var indices=index.array;if(groups.length===0){this.addGroup(0,indices.length)}
3670for(var j=0,jl=groups.length;j<jl;++ j){var group=groups[j];var start=group.start;var count=group.count;for(var i=start,il=start+count;i<il;i+=3){vA=indices[i+0]*3;vB=indices[i+1]*3;vC=indices[i+2]*3;pA.fromArray(positions,vA);pB.fromArray(positions,vB);pC.fromArray(positions,vC);cb.subVectors(pC,pB);ab.subVectors(pA,pB);cb.cross(ab);normals[vA]+=cb.x;normals[vA+1]+=cb.y;normals[vA+2]+=cb.z;normals[vB]+=cb.x;normals[vB+1]+=cb.y;normals[vB+2]+=cb.z;normals[vC]+=cb.x;normals[vC+1]+=cb.y;normals[vC+2]+=cb.z}}}else{for(var i=0,il=positions.length;i<il;i+=9){pA.fromArray(positions,i);pB.fromArray(positions,i+3);pC.fromArray(positions,i+6);cb.subVectors(pC,pB);ab.subVectors(pA,pB);cb.cross(ab);normals[i]=cb.x;normals[i+1]=cb.y;normals[i+2]=cb.z;normals[i+3]=cb.x;normals[i+4]=cb.y;normals[i+5]=cb.z;normals[i+6]=cb.x;normals[i+7]=cb.y;normals[i+8]=cb.z}}
3671this.normalizeNormals();attributes.normal.needsUpdate=!0}},merge:function(geometry,offset){if(!(geometry&&geometry.isBufferGeometry)){console.error('THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.',geometry);return}
3672if(offset===undefined){offset=0;console.warn('THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '+'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.')}
3673var attributes=this.attributes;for(var key in attributes){if(geometry.attributes[key]===undefined)continue;var attribute1=attributes[key];var attributeArray1=attribute1.array;var attribute2=geometry.attributes[key];var attributeArray2=attribute2.array;var attributeSize=attribute2.itemSize;for(var i=0,j=attributeSize*offset;i<attributeArray2.length;i ++,j ++){attributeArray1[j]=attributeArray2[i]}}
3674return this},normalizeNormals:function(){var vector=new Vector3();return function normalizeNormals(){var normals=this.attributes.normal;for(var i=0,il=normals.count;i<il;i ++){vector.x=normals.getX(i);vector.y=normals.getY(i);vector.z=normals.getZ(i);vector.normalize();normals.setXYZ(i,vector.x,vector.y,vector.z)}}}(),toNonIndexed:function(){if(this.index===null){console.warn('THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.');return this}
3675var geometry2=new BufferGeometry();var indices=this.index.array;var attributes=this.attributes;for(var name in attributes){var attribute=attributes[name];var array=attribute.array;var itemSize=attribute.itemSize;var array2=new array.constructor(indices.length*itemSize);var index=0,index2=0;for(var i=0,l=indices.length;i<l;
3675i ++){index=indices[i]*itemSize;for(var j=0;j<itemSize;j ++){array2[index2 ++]=array[index ++]}}
3676geometry2.addAttribute(name,new BufferAttribute(array2,itemSize))}
3677var groups=this.groups;for(var i=0,l=groups.length;i<l;i ++){var group=groups[i];geometry2.addGroup(group.start,group.count,group.materialIndex)}
3678return geometry2},toJSON:function(){var data={metadata:{version:4.5,type:'BufferGeometry',generator:'BufferGeometry.toJSON'}};data.uuid=this.uuid;data.type=this.type;if(this.name!=='')data.name=this.name;if(Object.keys(this.userData).length>0)data.userData=this.userData;if(this.parameters!==undefined){var parameters=this.parameters;for(var key in parameters){if(parameters[key]!==undefined)data[key]=parameters[key]}
3679return data}
3680data.data={attributes:{}};var index=this.index;if(index!==null){var array=Array.prototype.slice.call(index.array);data.data.index={type:index.array.constructor.name,array:array}}
3681var attributes=this.attributes;for(var key in attributes){var attribute=attributes[key];var array=Array.prototype.slice.call(attribute.array);data.data.attributes[key]={itemSize:attribute.itemSize,type:attribute.array.constructor.name,array:array,normalized:attribute.normalized}}
3682var groups=this.groups;if(groups.length>0){data.data.groups=JSON.parse(JSON.stringify(groups))}
3683var boundingSphere=this.boundingSphere;if(boundingSphere!==null){data.data.boundingSphere={center:boundingSphere.center.toArray(),radius:boundingSphere.radius}}
3684return data},clone:function(){return new BufferGeometry().copy(this)},copy:function(source){var name,i,l;this.index=null;this.attributes={};this.morphAttributes={};this.groups=[];this.boundingBox=null;this.boundingSphere=null;this.name=source.name;var index=source.index;if(index!==null){this.setIndex(index.clone())}
3685var attributes=source.attributes;for(name in attributes){var attribute=attributes[name];this.addAttribute(name,attribute.clone())}
3686var morphAttributes=source.morphAttributes;for(name in morphAttributes){var array=[];var morphAttribute=morphAttributes[name];for(i=0,l=morphAttribute.length;i<l;i ++){array.push(morphAttribute[i].clone())}
3687this.morphAttributes[name]=array}
3688var groups=source.groups;for(i=0,l=groups.length;i<l;i ++){var group=groups[i];this.addGroup(group.start,group.count,group.materialIndex)}
3689var boundingBox=source.boundingBox;if(boundingBox!==null){this.boundingBox=boundingBox.clone()}
3690var boundingSphere=source.boundingSphere;if(boundingSphere!==null){this.boundingSphere=boundingSphere.clone()}
3691this.drawRange.start=source.drawRange.start;this.drawRange.count=source.drawRange.count;this.userData=source.userData;return this},dispose:function(){this.dispatchEvent({type:'dispose'})}});function BoxGeometry(width,height,depth,widthSegments,heightSegments,depthSegments){Geometry.call(this);this.type='BoxGeometry';this.parameters={width:width,height:height,depth:depth,widthSegments:widthSegments,heightSegments:heightSegments,depthSegments:depthSegments};this.fromBufferGeometry(new BoxBufferGeometry(width,height,depth,widthSegments,heightSegments,depthSegments));this.mergeVertices()}
3692BoxGeometry.prototype=Object.create(Geometry.prototype);BoxGeometry.prototype.constructor=BoxGeometry;function BoxBufferGeometry(width,height,depth,widthSegments,heightSegments,depthSegments){BufferGeometry.call(this);this.type='BoxBufferGeometry';this.parameters={width:width,height:height,depth:depth,widthSegments:widthSegments,heightSegments:heightSegments,depthSegments:depthSegments};var scope=this;width=width||1;height=height||1;depth=depth||1;widthSegments=Math.floor(widthSegments)||1;heightSegments=Math.floor(heightSegments)||1;depthSegments=Math.floor(depthSegments)||1;var indices=[];var vertices=[];var normals=[];var uvs=[];var numberOfVertices=0;var groupStart=0;buildPlane('z','y','x',-1,-1,depth,height,width,depthSegments,heightSegments,0);buildPlane('z','y','x',1,-1,depth,height,-width,depthSegments,heightSegments,1);buildPlane('x','z','y',1,1,width,depth,height,widthSegments,depthSegments,2);buildPlane('x','z','y',1,-1,width,depth,-height,widthSegments,depthSegments,3);buildPlane('x','y','z',1,-1,width,height,depth,widthSegments,heightSegments,4);buildPlane('x','y','z',-1,-1,width,height,-depth,widthSegments,heightSegments,5);this.setIndex(indices);this.addAttribute('position',new Float32BufferAttribute(vertices,3));this.addAttribute('normal',new Float32BufferAttribute(normals,3));this.addAttribute('uv',new Float32BufferAttribute(uvs,2));function buildPlane(u,v,w,udir,vdir,width,height,depth,gridX,gridY,materialIndex){var segmentWidth=width/gridX;var segmentHeight=height/gridY;var widthHalf=width/2;var heightHalf=height/2;
3692var depthHalf=depth/2;var gridX1=gridX+1;var gridY1=gridY+1;var vertexCounter=0;var groupCount=0;var ix,iy;var vector=new Vector3();for(iy=0;iy<gridY1;iy ++){var y=iy*segmentHeight-heightHalf;for(ix=0;ix<gridX1;ix ++){var x=ix*segmentWidth-widthHalf;vector[u]=x*udir;vector[v]=y*vdir;vector[w]=depthHalf;vertices.push(vector.x,vector.y,vector.z);vector[u]=0;vector[v]=0;vector[w]=depth>0?1:-1;normals.push(vector.x,vector.y,vector.z);uvs.push(ix/gridX);uvs.push(1-(iy/gridY));vertexCounter+=1}}
3693for(iy=0;iy<gridY;iy ++){for(ix=0;ix<gridX;ix ++){var a=numberOfVertices+ix+gridX1*iy;var b=numberOfVertices+ix+gridX1*(iy+1);var c=numberOfVertices+(ix+1)+gridX1*(iy+1);var d=numberOfVertices+(ix+1)+gridX1*iy;indices.push(a,b,d);indices.push(b,c,d);groupCount+=6}}
3694scope.addGroup(groupStart,groupCount,materialIndex);groupStart+=groupCount;numberOfVertices+=vertexCounter}}
3695BoxBufferGeometry.prototype=Object.create(BufferGeometry.prototype);BoxBufferGeometry.prototype.constructor=BoxBufferGeometry;function PlaneGeometry(width,height,widthSegments,heightSegments){Geometry.call(this);this.type='PlaneGeometry';this.parameters={width:width,height:height,widthSegments:widthSegments,heightSegments:heightSegments};this.fromBufferGeometry(new PlaneBufferGeometry(width,height,widthSegments,heightSegments));this.mergeVertices()}
3696PlaneGeometry.prototype=Object.create(Geometry.prototype);PlaneGeometry.prototype.constructor=PlaneGeometry;function PlaneBufferGeometry(width,height,widthSegments,heightSegments){BufferGeometry.call(this);this.type='PlaneBufferGeometry';this.parameters={width:width,height:height,widthSegments:widthSegments,heightSegments:heightSegments};width=width||1;height=height||1;var width_half=width/2;var height_half=height/2;var gridX=Math.floor(widthSegments)||1;var gridY=Math.floor(heightSegments)||1;var gridX1=gridX+1;var gridY1=gridY+1;var segment_width=width/gridX;var segment_height=height/gridY;var ix,iy;var indices=[];var vertices=[];var normals=[];var uvs=[];for(iy=0;iy<gridY1;iy ++){var y=iy*segment_height-height_half;for(ix=0;ix<gridX1;ix ++){var x=ix*segment_width-width_half;vertices.push(x,-y,0);normals.push(0,0,1);uvs.push(ix/gridX);uvs.push(1-(iy/gridY))}}
3697for(iy=0;iy<gridY;iy ++){for(ix=0;ix<gridX;ix ++){var a=ix+gridX1*iy;var b=ix+gridX1*(iy+1);var c=(ix+1)+gridX1*(iy+1);var d=(ix+1)+gridX1*iy;indices.push(a,b,d);indices.push(b,c,d)}}
3698this.setIndex(indices);this.addAttribute('position',new Float32BufferAttribute(vertices,3));this.addAttribute('normal',new Float32BufferAttribute(normals,3));this.addAttribute('uv',new Float32BufferAttribute(uvs,2))}
3699PlaneBufferGeometry.prototype=Object.create(BufferGeometry.prototype);PlaneBufferGeometry.prototype.constructor=PlaneBufferGeometry;var materialId=0;function Material(){Object.defineProperty(this,'id',{value:materialId ++});this.uuid=_Math.generateUUID();this.name='';this.type='Material';this.fog=!0;this.lights=!0;this.blending=NormalBlending;this.side=FrontSide;this.flatShading=!1;this.vertexColors=NoColors;this.opacity=1;this.transparent=!1;this.blendSrc=SrcAlphaFactor;this.blendDst=OneMinusSrcAlphaFactor;this.blendEquation=AddEquation;this.blendSrcAlpha=null;this.blendDstAlpha=null;this.blendEquationAlpha=null;this.depthFunc=LessEqualDepth;this.depthTest=!0;this.depthWrite=!0;this.clippingPlanes=null;this.clipIntersection=!1;this.clipShadows=!1;this.shadowSide=null;this.colorWrite=!0;this.precision=null;this.polygonOffset=!1;this.polygonOffsetFactor=0;this.polygonOffsetUnits=0;this.dithering=!1;this.alphaTest=0;this.premultipliedAlpha=!1;this.overdraw=0;this.visible=!0;this.userData={};this.needsUpdate=!0}
3700Material.prototype=Object.assign(Object.create(EventDispatcher.prototype),{constructor:Material,isMaterial:!0,onBeforeCompile:function(){},setValues:function(values){if(values===undefined)return;for(var key in values){var newValue=values[key];if(newValue===undefined){console.warn("THREE.Material: '"+key+"' parameter is undefined.");continue}
3701if(key==='shading'){console.warn('THREE.'+this.type+': .shading has been removed. Use the boolean .flatShading instead.');this.flatShading=(newValue===FlatShading)?!0:!1;continue}
3702var currentValue=this[key];if(currentValue===undefined){console.warn("THREE."+this.type+": '"+key+"' is not a property of this material.");continue}
3703if(currentValue&&currentValue.isColor){currentValue.set(newValue)}else if((currentValue&&currentValue.isVector3)&&(newValue&&newValue.isVector3)){currentValue.copy(newValue)}else if(key==='overdraw'){this[key]=Number(newValue)}else{this[key]=newValue}}}
3703,toJSON:function(meta){var isRoot=(meta===undefined||typeof meta==='string');if(isRoot){meta={textures:{},images:{}}}
3704var data={metadata:{version:4.5,type:'Material',generator:'Material.toJSON'}};data.uuid=this.uuid;data.type=this.type;if(this.name!=='')data.name=this.name;if(this.color&&this.color.isColor)data.color=this.color.getHex();if(this.roughness!==undefined)data.roughness=this.roughness;if(this.metalness!==undefined)data.metalness=this.metalness;if(this.emissive&&this.emissive.isColor)data.emissive=this.emissive.getHex();if(this.emissiveIntensity!==1)data.emissiveIntensity=this.emissiveIntensity;if(this.specular&&this.specular.isColor)data.specular=this.specular.getHex();if(this.shininess!==undefined)data.shininess=this.shininess;if(this.clearCoat!==undefined)data.clearCoat=this.clearCoat;if(this.clearCoatRoughness!==undefined)data.clearCoatRoughness=this.clearCoatRoughness;if(this.map&&this.map.isTexture)data.map=this.map.toJSON(meta).uuid;if(this.alphaMap&&this.alphaMap.isTexture)data.alphaMap=this.alphaMap.toJSON(meta).uuid;if(this.lightMap&&this.lightMap.isTexture)data.lightMap=this.lightMap.toJSON(meta).uuid;if(this.aoMap&&this.aoMap.isTexture){data.aoMap=this.aoMap.toJSON(meta).uuid;data.aoMapIntensity=this.aoMapIntensity}
3705if(this.bumpMap&&this.bumpMap.isTexture){data.bumpMap=this.bumpMap.toJSON(meta).uuid;data.bumpScale=this.bumpScale}
3706if(this.normalMap&&this.normalMap.isTexture){data.normalMap=this.normalMap.toJSON(meta).uuid;data.normalScale=this.normalScale.toArray()}
3707if(this.displacementMap&&this.displacementMap.isTexture){data.displacementMap=this.displacementMap.toJSON(meta).uuid;data.displacementScale=this.displacementScale;data.displacementBias=this.displacementBias}
3708if(this.roughnessMap&&this.roughnessMap.isTexture)data.roughnessMap=this.roughnessMap.toJSON(meta).uuid;if(this.metalnessMap&&this.metalnessMap.isTexture)data.metalnessMap=this.metalnessMap.toJSON(meta).uuid;if(this.emissiveMap&&this.emissiveMap.isTexture)data.emissiveMap=this.emissiveMap.toJSON(meta).uuid;if(this.specularMap&&this.specularMap.isTexture)data.specularMap=this.specularMap.toJSON(meta).uuid;if(this.envMap&&this.envMap.isTexture){data.envMap=this.envMap.toJSON(meta).uuid;data.reflectivity=this.reflectivity}
3709if(this.gradientMap&&this.gradientMap.isTexture){data.gradientMap=this.gradientMap.toJSON(meta).uuid}
3710if(this.size!==undefined)data.size=this.size;if(this.sizeAttenuation!==undefined)data.sizeAttenuation=this.sizeAttenuation;if(this.blending!==NormalBlending)data.blending=this.blending;if(this.flatShading===!0)data.flatShading=this.flatShading;if(this.side!==FrontSide)data.side=this.side;if(this.vertexColors!==NoColors)data.vertexColors=this.vertexColors;if(this.opacity<1)data.opacity=this.opacity;if(this.transparent===!0)data.transparent=this.transparent;data.depthFunc=this.depthFunc;data.depthTest=this.depthTest;data.depthWrite=this.depthWrite;if(this.rotation!==0)data.rotation=this.rotation;if(this.linewidth!==1)data.linewidth=this.linewidth;if(this.dashSize!==undefined)data.dashSize=this.dashSize;if(this.gapSize!==undefined)data.gapSize=this.gapSize;if(this.scale!==undefined)data.scale=this.scale;if(this.dithering===!0)data.dithering=!0;if(this.alphaTest>0)data.alphaTest=this.alphaTest;if(this.premultipliedAlpha===!0)data.premultipliedAlpha=this.premultipliedAlpha;if(this.wireframe===!0)data.wireframe=this.wireframe;if(this.wireframeLinewidth>1)data.wireframeLinewidth=this.wireframeLinewidth;if(this.wireframeLinecap!=='round')data.wireframeLinecap=this.wireframeLinecap;if(this.wireframeLinejoin!=='round')data.wireframeLinejoin=this.wireframeLinejoin;if(this.morphTargets===!0)data.morphTargets=!0;if(this.skinning===!0)data.skinning=!0;if(this.visible===!1)data.visible=!1;if(JSON.stringify(this.userData)!=='{}')data.userData=this.userData;function extractFromCache(cache){var values=[];for(var key in cache){var data=cache[key];delete data.metadata;values.push(data)}
3711return values}
3712if(isRoot){var textures=extractFromCache(meta.textures);var images=extractFromCache(meta.images);if(textures.length>0)data.textures=textures;if(images.length>0)data.images=images}
3713return data},clone:function(){return new this.constructor().copy(this)},copy:function(source){this.name=source.name;this.fog=source.fog;this.lights=source.lights;this.blending=source.blending;this.side=source.side;this.flatShading=source.flatShading;this.vertexColors=source.vertexColors;this.opacity=source.opacity;this.transparent=source.transparent;this.blendSrc=source.blendSrc;this.blendDst=source.blendDst;this.blendEquation=source.blendEquation;this.blendSrcAlpha=source.blendSrcAlpha;this.blendDstAlpha=source.blendDstAlpha;this.blendEquationAlpha=source.blendEquationAlpha;this.depthFunc=source.depthFunc;this.depthTest=source.depthTest;this.depthWrite=source.depthWrite;this.colorWrite=source.colorWrite;this.precision=source.precision;this.polygonOffset=source.polygonOffset;this.polygonOffsetFactor=source.polygonOffsetFactor;this.polygonOffsetUnits=source.polygonOffsetUnits;this.dithering=source.dithering;this.alphaTest=source.alphaTest;this.premultipliedAlpha=source.premultipliedAlpha;this.overdraw=source.overdraw;this.visible=source.visible;this.userData=JSON.parse(JSON.stringify(source.userData));
3713this.clipShadows=source.clipShadows;this.clipIntersection=source.clipIntersection;var srcPlanes=source.clippingPlanes,dstPlanes=null;if(srcPlanes!==null){var n=srcPlanes.length;dstPlanes=new Array(n);for(var i=0;i!==n;++ i)
3714dstPlanes[i]=srcPlanes[i].clone();}
3715this.clippingPlanes=dstPlanes;this.shadowSide=source.shadowSide;return this},dispose:function(){this.dispatchEvent({type:'dispose'})}});function MeshBasicMaterial(parameters){Material.call(this);this.type='MeshBasicMaterial';this.color=new Color(0xffffff);this.map=null;this.lightMap=null;this.lightMapIntensity=1.0;this.aoMap=null;this.aoMapIntensity=1.0;this.specularMap=null;this.alphaMap=null;this.envMap=null;this.combine=MultiplyOperation;this.reflectivity=1;this.refractionRatio=0.98;this.wireframe=!1;this.wireframeLinewidth=1;this.wireframeLinecap='round';this.wireframeLinejoin='round';this.skinning=!1;this.morphTargets=!1;this.lights=!1;this.setValues(parameters)}
3716MeshBasicMaterial.prototype=Object.create(Material.prototype);MeshBasicMaterial.prototype.constructor=MeshBasicMaterial;MeshBasicMaterial.prototype.isMeshBasicMaterial=!0;MeshBasicMaterial.prototype.copy=function(source){Material.prototype.copy.call(this,source);this.color.copy(source.color);this.map=source.map;this.lightMap=source.lightMap;this.lightMapIntensity=source.lightMapIntensity;this.aoMap=source.aoMap;this.aoMapIntensity=source.aoMapIntensity;this.specularMap=source.specularMap;this.alphaMap=source.alphaMap;this.envMap=source.envMap;this.combine=source.combine;this.reflectivity=source.reflectivity;this.refractionRatio=source.refractionRatio;this.wireframe=source.wireframe;this.wireframeLinewidth=source.wireframeLinewidth;this.wireframeLinecap=source.wireframeLinecap;this.wireframeLinejoin=source.wireframeLinejoin;this.skinning=source.skinning;this.morphTargets=source.morphTargets;return this};function ShaderMaterial(parameters){Material.call(this);this.type='ShaderMaterial';this.defines={};this.uniforms={};this.vertexShader='void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}';this.fragmentShader='void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}';this.linewidth=1;this.wireframe=!1;this.wireframeLinewidth=1;this.fog=!1;this.lights=!1;this.clipping=!1;this.skinning=!1;this.morphTargets=!1;this.morphNormals=!1;this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1};this.defaultAttributeValues={'color':[1,1,1],'uv':[0,0],'uv2':[0,0]};this.index0AttributeName=undefined;this.uniformsNeedUpdate=!1;if(parameters!==undefined){if(parameters.attributes!==undefined){console.error('THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.')}
3717this.setValues(parameters)}}
3718ShaderMaterial.prototype=Object.create(Material.prototype);ShaderMaterial.prototype.constructor=ShaderMaterial;ShaderMaterial.prototype.isShaderMaterial=!0;ShaderMaterial.prototype.copy=function(source){Material.prototype.copy.call(this,source);this.fragmentShader=source.fragmentShader;this.vertexShader=source.vertexShader;this.uniforms=UniformsUtils.clone(source.uniforms);this.defines=Object.assign({},source.defines);this.wireframe=source.wireframe;this.wireframeLinewidth=source.wireframeLinewidth;this.lights=source.lights;this.clipping=source.clipping;this.skinning=source.skinning;this.morphTargets=source.morphTargets;this.morphNormals=source.morphNormals;this.extensions=source.extensions;return this};ShaderMaterial.prototype.toJSON=function(meta){var data=Material.prototype.toJSON.call(this,meta);data.uniforms=this.uniforms;data.vertexShader=this.vertexShader;data.fragmentShader=this.fragmentShader;return data};function Ray(origin,direction){this.origin=(origin!==undefined)?origin:new Vector3();this.direction=(direction!==undefined)?direction:new Vector3()}
3719Object.assign(Ray.prototype,{set:function(origin,direction){this.origin.copy(origin);this.direction.copy(direction);return this},clone:function(){return new this.constructor().copy(this)},copy:function(ray){this.origin.copy(ray.origin);this.direction.copy(ray.direction);return this},at:function(t,target){if(target===undefined){console.warn('THREE.Ray: .at() target is now required');target=new Vector3()}
3720return target.copy(this.direction).multiplyScalar(t).add(this.origin)},lookAt:function(v){this.direction.copy(v).sub(this.origin).normalize();return this},recast:function(){var v1=new Vector3();return function recast(t){this.origin.copy(this.at(t,v1));return this}}(),closestPointToPoint:function(point,target){if(target===undefined){console.warn('THREE.Ray: .closestPointToPoint() target is now required');target=new Vector3()}
3721target.subVectors(point,this.origin);
3721var directionDistance=target.dot(this.direction);if(directionDistance<0){return target.copy(this.origin)}
3722return target.copy(this.direction).multiplyScalar(directionDistance).add(this.origin)},distanceToPoint:function(point){return Math.sqrt(this.distanceSqToPoint(point))},distanceSqToPoint:function(){var v1=new Vector3();return function distanceSqToPoint(point){var directionDistance=v1.subVectors(point,this.origin).dot(this.direction);if(directionDistance<0){return this.origin.distanceToSquared(point)}
3723v1.copy(this.direction).multiplyScalar(directionDistance).add(this.origin);return v1.distanceToSquared(point)}}(),distanceSqToSegment:function(){var segCenter=new Vector3();var segDir=new Vector3();var diff=new Vector3();return function distanceSqToSegment(v0,v1,optionalPointOnRay,optionalPointOnSegment){segCenter.copy(v0).add(v1).multiplyScalar(0.5);segDir.copy(v1).sub(v0).normalize();diff.copy(this.origin).sub(segCenter);var segExtent=v0.distanceTo(v1)*0.5;var a01=-this.direction.dot(segDir);var b0=diff.dot(this.direction);var b1=-diff.dot(segDir);var c=diff.lengthSq();var det=Math.abs(1-a01*a01);var s0,s1,sqrDist,extDet;if(det>0){s0=a01*b1-b0;s1=a01*b0-b1;extDet=segExtent*det;if(s0>=0){if(s1>=-extDet){if(s1<=extDet){var invDet=1/det;s0*=invDet;s1*=invDet;sqrDist=s0*(s0+a01*s1+2*b0)+s1*(a01*s0+s1+2*b1)+c}else{s1=segExtent;s0=Math.max(0,-(a01*s1+b0));sqrDist=-s0*s0+s1*(s1+2*b1)+c}}else{s1=-segExtent;s0=Math.max(0,-(a01*s1+b0));sqrDist=-s0*s0+s1*(s1+2*b1)+c}}else{if(s1<=-extDet){s0=Math.max(0,-(-a01*segExtent+b0));s1=(s0>0)?-segExtent:Math.min(Math.max(-segExtent,-b1),segExtent);sqrDist=-s0*s0+s1*(s1+2*b1)+c}else if(s1<=extDet){s0=0;s1=Math.min(Math.max(-segExtent,-b1),segExtent);sqrDist=s1*(s1+2*b1)+c}else{s0=Math.max(0,-(a01*segExtent+b0));s1=(s0>0)?segExtent:Math.min(Math.max(-segExtent,-b1),segExtent);sqrDist=-s0*s0+s1*(s1+2*b1)+c}}}else{s1=(a01>0)?-segExtent:segExtent;s0=Math.max(0,-(a01*s1+b0));sqrDist=-s0*s0+s1*(s1+2*b1)+c}
3724if(optionalPointOnRay){optionalPointOnRay.copy(this.direction).multiplyScalar(s0).add(this.origin)}
3725if(optionalPointOnSegment){optionalPointOnSegment.copy(segDir).multiplyScalar(s1).add(segCenter)}
3726return sqrDist}}(),intersectSphere:function(){var v1=new Vector3();return function intersectSphere(sphere,target){v1.subVectors(sphere.center,this.origin);var tca=v1.dot(this.direction);var d2=v1.dot(v1)-tca*tca;var radius2=sphere.radius*sphere.radius;if(d2>radius2)return null;var thc=Math.sqrt(radius2-d2);var t0=tca-thc;var t1=tca+thc;if(t0<0&&t1<0)return null;if(t0<0)return this.at(t1,target);return this.at(t0,target)}}(),intersectsSphere:function(sphere){return this.distanceToPoint(sphere.center)<=sphere.radius},distanceToPlane:function(plane){var denominator=plane.normal.dot(this.direction);if(denominator===0){if(plane.distanceToPoint(this.origin)===0){return 0}
3727return null}
3728var t=-(this.origin.dot(plane.normal)+plane.constant)/denominator;return t>=0?t:null},intersectPlane:function(plane,target){var t=this.distanceToPlane(plane);if(t===null){return null}
3729return this.at(t,target)},intersectsPlane:function(plane){var distToPoint=plane.distanceToPoint(this.origin);if(distToPoint===0){return!0}
3730var denominator=plane.normal.dot(this.direction);if(denominator*distToPoint<0){return!0}
3731return!1},intersectBox:function(box,target){var tmin,tmax,tymin,tymax,tzmin,tzmax;var invdirx=1/this.direction.x,invdiry=1/this.direction.y,invdirz=1/this.direction.z;var origin=this.origin;if(invdirx>=0){tmin=(box.min.x-origin.x)*invdirx;tmax=(box.max.x-origin.x)*invdirx}else{tmin=(box.max.x-origin.x)*invdirx;tmax=(box.min.x-origin.x)*invdirx}
3732if(invdiry>=0){tymin=(box.min.y-origin.y)*invdiry;tymax=(box.max.y-origin.y)*invdiry}else{tymin=(box.max.y-origin.y)*invdiry;tymax=(box.min.y-origin.y)*invdiry}
3733if((tmin>tymax)||(tymin>tmax))return null;if(tymin>tmin||tmin!==tmin)tmin=tymin;if(tymax<tmax||tmax!==tmax)tmax=tymax;if(invdirz>=0){tzmin=(box.min.z-origin.z)*invdirz;tzmax=(box.max.z-origin.z)*invdirz}else{tzmin=(box.max.z-origin.z)*invdirz;tzmax=(box.min.z-origin.z)*invdirz}
3734if((tmin>tzmax)||(tzmin>tmax))return null;if(tzmin>tmin||tmin!==tmin)tmin=tzmin;if(tzmax<tmax||tmax!==tmax)tmax=tzmax;if(tmax<0)return null;return this.at(tmin>=0?tmin:tmax,target)},intersectsBox:(function(){var v=new Vector3();return function intersectsBox(box){return this.intersectBox(box,v)!==null}})(),intersectTriangle:function(){var diff=new Vector3();var edge1=new Vector3();var edge2=new Vector3();var normal=new Vector3();return function intersectTriangle(a,b,c,backfaceCulling,target){edge1.subVectors(b,a);edge2.subVectors(c,a);normal.crossVectors(edge1,edge2);var DdN=this.direction.dot(normal);var sign;if(DdN>0){if(backfaceCulling)return null;sign=1}
3734else if(DdN<0){sign=-1;DdN=-DdN}else{return null}
3735diff.subVectors(this.origin,a);var DdQxE2=sign*this.direction.dot(edge2.crossVectors(diff,edge2));if(DdQxE2<0){return null}
3736var DdE1xQ=sign*this.direction.dot(edge1.cross(diff));if(DdE1xQ<0){return null}
3737if(DdQxE2+DdE1xQ>DdN){return null}
3738var QdN=-sign*diff.dot(normal);if(QdN<0){return null}
3739return this.at(QdN/DdN,target)}}(),applyMatrix4:function(matrix4){this.origin.applyMatrix4(matrix4);this.direction.transformDirection(matrix4);return this},equals:function(ray){return ray.origin.equals(this.origin)&&ray.direction.equals(this.direction)}});function Line3(start,end){this.start=(start!==undefined)?start:new Vector3();this.end=(end!==undefined)?end:new Vector3()}
3740Object.assign(Line3.prototype,{set:function(start,end){this.start.copy(start);this.end.copy(end);return this},clone:function(){return new this.constructor().copy(this)},copy:function(line){this.start.copy(line.start);this.end.copy(line.end);return this},getCenter:function(target){if(target===undefined){console.warn('THREE.Line3: .getCenter() target is now required');target=new Vector3()}
3741return target.addVectors(this.start,this.end).multiplyScalar(0.5)},delta:function(target){if(target===undefined){console.warn('THREE.Line3: .delta() target is now required');target=new Vector3()}
3742return target.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(t,target){if(target===undefined){console.warn('THREE.Line3: .at() target is now required');target=new Vector3()}
3743return this.delta(target).multiplyScalar(t).add(this.start)},closestPointToPointParameter:function(){var startP=new Vector3();var startEnd=new Vector3();return function closestPointToPointParameter(point,clampToLine){startP.subVectors(point,this.start);startEnd.subVectors(this.end,this.start);var startEnd2=startEnd.dot(startEnd);var startEnd_startP=startEnd.dot(startP);var t=startEnd_startP/startEnd2;if(clampToLine){t=_Math.clamp(t,0,1)}
3744return t}}(),closestPointToPoint:function(point,clampToLine,target){var t=this.closestPointToPointParameter(point,clampToLine);if(target===undefined){console.warn('THREE.Line3: .closestPointToPoint() target is now required');target=new Vector3()}
3745return this.delta(target).multiplyScalar(t).add(this.start)},applyMatrix4:function(matrix){this.start.applyMatrix4(matrix);this.end.applyMatrix4(matrix);return this},equals:function(line){return line.start.equals(this.start)&&line.end.equals(this.end)}});function Triangle(a,b,c){this.a=(a!==undefined)?a:new Vector3();this.b=(b!==undefined)?b:new Vector3();this.c=(c!==undefined)?c:new Vector3()}
3746Object.assign(Triangle,{getNormal:function(){var v0=new Vector3();return function getNormal(a,b,c,target){if(target===undefined){console.warn('THREE.Triangle: .getNormal() target is now required');target=new Vector3()}
3747target.subVectors(c,b);v0.subVectors(a,b);target.cross(v0);var targetLengthSq=target.lengthSq();if(targetLengthSq>0){return target.multiplyScalar(1/Math.sqrt(targetLengthSq))}
3748return target.set(0,0,0)}}(),getBarycoord:function(){var v0=new Vector3();var v1=new Vector3();var v2=new Vector3();return function getBarycoord(point,a,b,c,target){v0.subVectors(c,a);v1.subVectors(b,a);v2.subVectors(point,a);var dot00=v0.dot(v0);var dot01=v0.dot(v1);var dot02=v0.dot(v2);var dot11=v1.dot(v1);var dot12=v1.dot(v2);var denom=(dot00*dot11-dot01*dot01);if(target===undefined){console.warn('THREE.Triangle: .getBarycoord() target is now required');target=new Vector3()}
3749if(denom===0){return target.set(-2,-1,-1)}
3750var invDenom=1/denom;var u=(dot11*dot02-dot01*dot12)*invDenom;var v=(dot00*dot12-dot01*dot02)*invDenom;return target.set(1-u-v,v,u)}}(),containsPoint:function(){var v1=new Vector3();return function containsPoint(point,a,b,c){Triangle.getBarycoord(point,a,b,c,v1);return(v1.x>=0)&&(v1.y>=0)&&((v1.x+v1.y)<=1)}}()});Object.assign(Triangle.prototype,{set:function(a,b,c){this.a.copy(a);this.b.copy(b);this.c.copy(c);return this},setFromPointsAndIndices:function(points,i0,i1,i2){this.a.copy(points[i0
3750]);this.b.copy(points[i1]);this.c.copy(points[i2]);return this},clone:function(){return new this.constructor().copy(this)},copy:function(triangle){this.a.copy(triangle.a);this.b.copy(triangle.b);this.c.copy(triangle.c);return this},getArea:function(){var v0=new Vector3();var v1=new Vector3();return function getArea(){v0.subVectors(this.c,this.b);v1.subVectors(this.a,this.b);return v0.cross(v1).length()*0.5}}(),getMidpoint:function(target){if(target===undefined){console.warn('THREE.Triangle: .getMidpoint() target is now required');target=new Vector3()}
3751return target.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},getNormal:function(target){return Triangle.getNormal(this.a,this.b,this.c,target)},getPlane:function(target){if(target===undefined){console.warn('THREE.Triangle: .getPlane() target is now required');target=new Vector3()}
3752return target.setFromCoplanarPoints(this.a,this.b,this.c)},getBarycoord:function(point,target){return Triangle.getBarycoord(point,this.a,this.b,this.c,target)},containsPoint:function(point){return Triangle.containsPoint(point,this.a,this.b,this.c)},intersectsBox:function(box){return box.intersectsTriangle(this)},closestPointToPoint:function(){var plane=new Plane();var edgeList=[new Line3(),new Line3(),new Line3()];var projectedPoint=new Vector3();var closestPoint=new Vector3();return function closestPointToPoint(point,target){if(target===undefined){console.warn('THREE.Triangle: .closestPointToPoint() target is now required');target=new Vector3()}
3753var minDistance=Infinity;plane.setFromCoplanarPoints(this.a,this.b,this.c);plane.projectPoint(point,projectedPoint);if(this.containsPoint(projectedPoint)===!0){target.copy(projectedPoint)}else{edgeList[0].set(this.a,this.b);edgeList[1].set(this.b,this.c);edgeList[2].set(this.c,this.a);for(var i=0;i<edgeList.length;i ++){edgeList[i].closestPointToPoint(projectedPoint,!0,closestPoint);var distance=projectedPoint.distanceToSquared(closestPoint);if(distance<minDistance){minDistance=distance;target.copy(closestPoint)}}}
3754return target}}(),equals:function(triangle){return triangle.a.equals(this.a)&&triangle.b.equals(this.b)&&triangle.c.equals(this.c)}});function Mesh(geometry,material){Object3D.call(this);this.type='Mesh';this.geometry=geometry!==undefined?geometry:new BufferGeometry();this.material=material!==undefined?material:new MeshBasicMaterial({color:Math.random()*0xffffff});this.drawMode=TrianglesDrawMode;this.updateMorphTargets()}
3755Mesh.prototype=Object.assign(Object.create(Object3D.prototype),{constructor:Mesh,isMesh:!0,setDrawMode:function(value){this.drawMode=value},copy:function(source){Object3D.prototype.copy.call(this,source);this.drawMode=source.drawMode;if(source.morphTargetInfluences!==undefined){this.morphTargetInfluences=source.morphTargetInfluences.slice()}
3756if(source.morphTargetDictionary!==undefined){this.morphTargetDictionary=Object.assign({},source.morphTargetDictionary)}
3757return this},updateMorphTargets:function(){var geometry=this.geometry;var m,ml,name;if(geometry.isBufferGeometry){var morphAttributes=geometry.morphAttributes;var keys=Object.keys(morphAttributes);if(keys.length>0){var morphAttribute=morphAttributes[keys[0]];if(morphAttribute!==undefined){this.morphTargetInfluences=[];this.morphTargetDictionary={};for(m=0,ml=morphAttribute.length;m<ml;m ++){name=morphAttribute[m].name||String(m);this.morphTargetInfluences.push(0);this.morphTargetDictionary[name]=m}}}}else{var morphTargets=geometry.morphTargets;if(morphTargets!==undefined&&morphTargets.length>0){this.morphTargetInfluences=[];this.morphTargetDictionary={};for(m=0,ml=morphTargets.length;m<ml;m ++){name=morphTargets[m].name||String(m);this.morphTargetInfluences.push(0);this.morphTargetDictionary[name]=m}}}},raycast:(function(){var inverseMatrix=new Matrix4();var ray=new Ray();var sphere=new Sphere();var vA=new Vector3();var vB=new Vector3();var vC=new Vector3();var tempA=new Vector3();var tempB=new Vector3();var tempC=new Vector3();var uvA=new Vector2();var uvB=new Vector2();var uvC=new Vector2();var barycoord=new Vector3();var intersectionPoint=new Vector3();var intersectionPointWorld=new Vector3();function uvIntersection(point,p1,p2,p3,uv1,uv2,uv3){Triangle.getBarycoord(point,p1,p2,p3,barycoord);uv1.multiplyScalar(barycoord.x);uv2.multiplyScalar(barycoord.y);uv3.multiplyScalar(barycoord.z);uv1.add(uv2).add(uv3);return uv1.clone()}
3758function checkIntersection(object,material,raycaster,ray,pA,pB,pC,point){var intersect;if(material.side===BackSide){intersect=ray.intersectTriangle(pC,pB,pA,!0,point)}else{intersect=ray.intersectTriangle(pA,pB,pC,material.side!==DoubleSide,point)}
3759if(intersect===null)return null;intersectionPointWorld.copy(point);intersectionPointWorld.applyMatrix4(object.matrixWorld);var distance=raycaster.ray.origin.distanceTo(intersectionPointWorld);if(distance<raycaster.near||distance>raycaster.far)return null;return{distance:distance,point:intersectionPointWorld.clone(),object:object}}
3760function checkBufferGeometryIntersection(object,raycaster,ray,position,uv,a,b,c){vA.fromBufferAttribute(position,a);vB.fromBufferAttribute(position,b);vC.fromBufferAttribute(position,c);var intersection=checkIntersection(object,object.material,raycaster,ray,vA,vB,vC,intersectionPoint);if(intersection){if(uv){uvA.fromBufferAttribute(uv,a);uvB.fromBufferAttribute(uv,b);uvC.fromBufferAttribute(uv,c);intersection.uv=uvIntersection(intersectionPoint,vA,vB,vC,uvA,uvB,uvC)}
3761var face=new Face3(a,b,c);Triangle.getNormal(vA,vB,vC,face.normal);intersection.face=face}
3762return intersection}
3763return function raycast(raycaster,intersects){var geometry=this.geometry;var material=this.material;var matrixWorld=this.matrixWorld;if(material===undefined)return;if(geometry.boundingSphere===null)geometry.computeBoundingSphere();sphere.copy(geometry.boundingSphere);sphere.applyMatrix4(matrixWorld);if(raycaster.ray.intersectsSphere(sphere)===!1)return;inverseMatrix.getInverse(matrixWorld);ray.copy(raycaster.ray).applyMatrix4(inverseMatrix);if(geometry.boundingBox!==null){if(ray.intersectsBox(geometry.boundingBox)===!1)return}
3764var intersection;if(geometry.isBufferGeometry){var a,b,c;var index=geometry.index;var position=geometry.attributes.position;var uv=geometry.attributes.uv;var i,l;if(index!==null){for(i=0,l=index.count;i<l;i+=3){a=index.getX(i);b=index.getX(i+1);c=index.getX(i+2);intersection=checkBufferGeometryIntersection(this,raycaster,ray,position,uv,a,b,c);if(intersection){intersection.faceIndex=Math.floor(i/3);intersects.push(intersection)}}}
3764else if(position!==undefined){for(i=0,l=position.count;i<l;i+=3){a=i;b=i+1;c=i+2;intersection=checkBufferGeometryIntersection(this,raycaster,ray,position,uv,a,b,c);if(intersection){intersection.faceIndex=Math.floor(i/3);intersects.push(intersection)}}}}else if(geometry.isGeometry){var fvA,fvB,fvC;var isMultiMaterial=Array.isArray(material);var vertices=geometry.vertices;var faces=geometry.faces;var uvs;var faceVertexUvs=geometry.faceVertexUvs[0];if(faceVertexUvs.length>0)uvs=faceVertexUvs;for(var f=0,fl=faces.length;f<fl;f ++){var face=faces[f];var faceMaterial=isMultiMaterial?material[face.materialIndex]:material;if(faceMaterial===undefined)continue;fvA=vertices[face.a];fvB=vertices[face.b];fvC=vertices[face.c];if(faceMaterial.morphTargets===!0){var morphTargets=geometry.morphTargets;var morphInfluences=this.morphTargetInfluences;vA.set(0,0,0);vB.set(0,0,0);vC.set(0,0,0);for(var t=0,tl=morphTargets.length;t<tl;t ++){var influence=morphInfluences[t];if(influence===0)continue;var targets=morphTargets[t].vertices;vA.addScaledVector(tempA.subVectors(targets[face.a],fvA),influence);vB.addScaledVector(tempB.subVectors(targets[face.b],fvB),influence);vC.addScaledVector(tempC.subVectors(targets[face.c],fvC),influence)}
3765vA.add(fvA);vB.add(fvB);vC.add(fvC);fvA=vA;fvB=vB;fvC=vC}
3766intersection=checkIntersection(this,faceMaterial,raycaster,ray,fvA,fvB,fvC,intersectionPoint);if(intersection){if(uvs&&uvs[f]){var uvs_f=uvs[f];uvA.copy(uvs_f[0]);uvB.copy(uvs_f[1]);uvC.copy(uvs_f[2]);intersection.uv=uvIntersection(intersectionPoint,fvA,fvB,fvC,uvA,uvB,uvC)}
3767intersection.face=face;intersection.faceIndex=f;intersects.push(intersection)}}}}}()),clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}});function WebGLBackground(renderer,state,objects,premultipliedAlpha){var clearColor=new Color(0x000000);var clearAlpha=0;var planeCamera,planeMesh;var boxMesh;function render(renderList,scene,camera,forceClear){var background=scene.background;if(background===null){setClear(clearColor,clearAlpha)}else if(background&&background.isColor){setClear(background,1);forceClear=!0}
3768if(renderer.autoClear||forceClear){renderer.clear(renderer.autoClearColor,renderer.autoClearDepth,renderer.autoClearStencil)}
3769if(background&&background.isCubeTexture){if(boxMesh===undefined){boxMesh=new Mesh(new BoxBufferGeometry(1,1,1),new ShaderMaterial({uniforms:ShaderLib.cube.uniforms,vertexShader:ShaderLib.cube.vertexShader,fragmentShader:ShaderLib.cube.fragmentShader,side:BackSide,depthTest:!0,depthWrite:!1,fog:!1}));boxMesh.geometry.removeAttribute('normal');boxMesh.geometry.removeAttribute('uv');boxMesh.onBeforeRender=function(renderer,scene,camera){this.matrixWorld.copyPosition(camera.matrixWorld)};objects.update(boxMesh)}
3770boxMesh.material.uniforms.tCube.value=background;renderList.push(boxMesh,boxMesh.geometry,boxMesh.material,0,null)}else if(background&&background.isTexture){if(planeCamera===undefined){planeCamera=new OrthographicCamera(-1,1,1,-1,0,1);planeMesh=new Mesh(new PlaneBufferGeometry(2,2),new MeshBasicMaterial({depthTest:!1,depthWrite:!1,fog:!1}));objects.update(planeMesh)}
3771planeMesh.material.map=background;renderer.renderBufferDirect(planeCamera,null,planeMesh.geometry,planeMesh.material,planeMesh,null)}}
3772function setClear(color,alpha){state.buffers.color.setClear(color.r,color.g,color.b,alpha,premultipliedAlpha)}
3773return{getClearColor:function(){return clearColor},setClearColor:function(color,alpha){clearColor.set(color);clearAlpha=alpha!==undefined?alpha:1;setClear(clearColor,clearAlpha)},getClearAlpha:function(){return clearAlpha},setClearAlpha:function(alpha){clearAlpha=alpha;setClear(clearColor,clearAlpha)},render:render}}
3774function WebGLBufferRenderer(gl,extensions,info){var mode;function setMode(value){mode=value}
3775function render(start,count){gl.drawArrays(mode,start,count);info.update(count,mode)}
3776function renderInstances(geometry,start,count){var extension=extensions.get('ANGLE_instanced_arrays');if(extension===null){console.error('THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_
3776instanced_arrays.');return}
3777extension.drawArraysInstancedANGLE(mode,start,count,geometry.maxInstancedCount);info.update(count,mode,geometry.maxInstancedCount)}
3778this.setMode=setMode;this.render=render;this.renderInstances=renderInstances}
3779function WebGLCapabilities(gl,extensions,parameters){var maxAnisotropy;function getMaxAnisotropy(){if(maxAnisotropy!==undefined)return maxAnisotropy;var extension=extensions.get('EXT_texture_filter_anisotropic');if(extension!==null){maxAnisotropy=gl.getParameter(extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else{maxAnisotropy=0}
3780return maxAnisotropy}
3781function getMaxPrecision(precision){if(precision==='highp'){if(gl.getShaderPrecisionFormat(gl.VERTEX_SHADER,gl.HIGH_FLOAT).precision>0&&gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER,gl.HIGH_FLOAT).precision>0){return'highp'}
3782precision='mediump'}
3783if(precision==='mediump'){if(gl.getShaderPrecisionFormat(gl.VERTEX_SHADER,gl.MEDIUM_FLOAT).precision>0&&gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER,gl.MEDIUM_FLOAT).precision>0){return'mediump'}}
3784return'lowp'}
3785var precision=parameters.precision!==undefined?parameters.precision:'highp';var maxPrecision=getMaxPrecision(precision);if(maxPrecision!==precision){console.warn('THREE.WebGLRenderer:',precision,'not supported, using',maxPrecision,'instead.');precision=maxPrecision}
3786var logarithmicDepthBuffer=parameters.logarithmicDepthBuffer===!0;var maxTextures=gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);var maxVertexTextures=gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS);var maxTextureSize=gl.getParameter(gl.MAX_TEXTURE_SIZE);var maxCubemapSize=gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE);var maxAttributes=gl.getParameter(gl.MAX_VERTEX_ATTRIBS);var maxVertexUniforms=gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS);var maxVaryings=gl.getParameter(gl.MAX_VARYING_VECTORS);var maxFragmentUniforms=gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS);var vertexTextures=maxVertexTextures>0;var floatFragmentTextures=!!extensions.get('OES_texture_float');var floatVertexTextures=vertexTextures&&floatFragmentTextures;return{getMaxAnisotropy:getMaxAnisotropy,getMaxPrecision:getMaxPrecision,precision:precision,logarithmicDepthBuffer:logarithmicDepthBuffer,maxTextures:maxTextures,maxVertexTextures:maxVertexTextures,maxTextureSize:maxTextureSize,maxCubemapSize:maxCubemapSize,maxAttributes:maxAttributes,maxVertexUniforms:maxVertexUniforms,maxVaryings:maxVaryings,maxFragmentUniforms:maxFragmentUniforms,vertexTextures:vertexTextures,floatFragmentTextures:floatFragmentTextures,floatVertexTextures:floatVertexTextures}}
3787function WebGLClipping(){var scope=this,globalState=null,numGlobalPlanes=0,localClippingEnabled=!1,renderingShadows=!1,plane=new Plane(),viewNormalMatrix=new Matrix3(),uniform={value:null,needsUpdate:!1};this.uniform=uniform;this.numPlanes=0;this.numIntersection=0;this.init=function(planes,enableLocalClipping,camera){var enabled=planes.length!==0||enableLocalClipping||numGlobalPlanes!==0||localClippingEnabled;localClippingEnabled=enableLocalClipping;globalState=projectPlanes(planes,camera,0);numGlobalPlanes=planes.length;return enabled};this.beginShadows=function(){renderingShadows=!0;projectPlanes(null)};this.endShadows=function(){renderingShadows=!1;resetGlobalState()};this.setState=function(planes,clipIntersection,clipShadows,camera,cache,fromCache){if(!localClippingEnabled||planes===null||planes.length===0||renderingShadows&&!clipShadows){if(renderingShadows){projectPlanes(null)}else{resetGlobalState()}}else{var nGlobal=renderingShadows?0:numGlobalPlanes,lGlobal=nGlobal*4,dstArray=cache.clippingState||null;uniform.value=dstArray;dstArray=projectPlanes(planes,camera,lGlobal,fromCache);for(var i=0;i!==lGlobal;++ i){dstArray[i]=globalState[i]}
3788cache.clippingState=dstArray;this.numIntersection=clipIntersection?this.numPlanes:0;this.numPlanes+=nGlobal}};function resetGlobalState(){if(uniform.value!==globalState){uniform.value=globalState;uniform.needsUpdate=numGlobalPlanes>0}
3789scope.numPlanes=numGlobalPlanes;scope.numIntersection=0}
3790function projectPlanes(planes,camera,dstOffset,skipTransform){var nPlanes=planes!==null?planes.length:0,dstArray=null;if(nPlanes!==0){dstArray=uniform.value;if(skipTransform!==!0||dstArray===null){var flatSize=dstOffset+nPlanes*4,viewMatrix=camera.matrixWorldInverse;viewNormalMatrix.getNormalMatrix(viewMatrix);if(dstArray===null||dstArray.length<flatSize){dstArray=new Float32Array(flatSize)}
3791for(var i=0,i4=dstOffset;i!==nPlanes;++ i,i4+=4){plane.copy(planes[i]).applyMatrix4(viewMatrix,viewNormalMatrix);plane.normal.toArray(dstArray,i4);dstArray[i4+3]=plane.constant}}
3792uniform.value=dstArray;uniform.needsUpdate=!0}
3793scope.numPlanes=nPlanes;return dstArray}}
3794function WebGLExtensions(gl){var extensions={};return{get:function(name){if(extensions[name]!==undefined){return extensions[name]}
3795var extension;switch(name){case 'WEBGL_depth_texture':extension=gl.getExtension('WEBGL_depth_texture')||gl.getExtension('MOZ_WEBGL_depth_texture')||gl.getExtension('WEBKIT_WEBGL_depth_texture');break;case 'EXT_texture_filter_anisotropic':extension=gl.getExtension('EXT_texture_filter_anisotropic')||gl.getExtension('MOZ_EXT_texture_filter_anisotropic')||gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic');break;case 'WEBGL_compressed_texture_s3tc':extension=gl.getExtension('WEBGL_compressed_texture_s3tc')||gl.getExtension('MOZ_WEBGL_compressed_texture_s3tc')||gl.getExtension('WEBKIT_WEBGL_compressed_texture_s3tc');break;case 'WEBGL_compressed_texture_pvrtc':extension=gl.getExtension('WEBGL_compressed_texture_pvrtc')||gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc');break;default:extension=gl.getExtension(name)}
3796if(extension===null){console.warn('THREE.WebGLRenderer: '+name+' extension not supported.')}
3797extensions[name]=extension;return extension}}}
3798function WebGLGeometries(gl,attributes,info){var geometries={};var wireframeAttributes={};function onGeometryDispose(event){var geometry=event.target;var buffergeometry=geometries[geometry.id];if(buffergeometry.index!==null){attributes.remove(buffergeometry.index)}
3799for(var name in buffergeometry.attributes){attributes.remove(buffergeometry.attributes[name])}
3800geometry.removeEventListener('dispose',onGeometryDispose);delete geometries[geometry.id];var attribute=wireframeAttributes[geometry.id];if(attribute){attributes.remove(attribute);delete wireframeAttributes[geometry.id]}
3801attribute=wireframeAttributes[buffergeometry.id];if(attribute){attributes.remove(attribute);delete wireframeAttributes[buffergeometry.id]}
3802info.memory.geometries --}
3803function get(object,geometry){var buffergeometry=geometries[geometry.id];if(buffergeometry)return buffergeometry;geometry.addEventListener('dispose',onGeometryDispose);if(geometry.isBufferGeometry){buffergeometry=geometry}
3803else if(geometry.isGeometry){if(geometry._bufferGeometry===undefined){geometry._bufferGeometry=new BufferGeometry().setFromObject(object)}
3804buffergeometry=geometry._bufferGeometry}
3805geometries[geometry.id]=buffergeometry;info.memory.geometries ++;return buffergeometry}
3806function update(geometry){var index=geometry.index;var geometryAttributes=geometry.attributes;if(index!==null){attributes.update(index,gl.ELEMENT_ARRAY_BUFFER)}
3807for(var name in geometryAttributes){attributes.update(geometryAttributes[name],gl.ARRAY_BUFFER)}
3808var morphAttributes=geometry.morphAttributes;for(var name in morphAttributes){var array=morphAttributes[name];for(var i=0,l=array.length;i<l;i ++){attributes.update(array[i],gl.ARRAY_BUFFER)}}}
3809function getWireframeAttribute(geometry){var attribute=wireframeAttributes[geometry.id];if(attribute)return attribute;var indices=[];var geometryIndex=geometry.index;var geometryAttributes=geometry.attributes;if(geometryIndex!==null){var array=geometryIndex.array;for(var i=0,l=array.length;i<l;i+=3){var a=array[i+0];var b=array[i+1];var c=array[i+2];indices.push(a,b,b,c,c,a)}}else{var array=geometryAttributes.position.array;for(var i=0,l=(array.length/3)-1;i<l;i+=3){var a=i+0;var b=i+1;var c=i+2;indices.push(a,b,b,c,c,a)}}
3810attribute=new(arrayMax(indices)>65535?Uint32BufferAttribute:Uint16BufferAttribute)(indices,1);attributes.update(attribute,gl.ELEMENT_ARRAY_BUFFER);wireframeAttributes[geometry.id]=attribute;return attribute}
3811return{get:get,update:update,getWireframeAttribute:getWireframeAttribute}}
3812function WebGLIndexedBufferRenderer(gl,extensions,info){var mode;function setMode(value){mode=value}
3813var type,bytesPerElement;function setIndex(value){type=value.type;bytesPerElement=value.bytesPerElement}
3814function render(start,count){gl.drawElements(mode,count,type,start*bytesPerElement);info.update(count,mode)}
3815function renderInstances(geometry,start,count){var extension=extensions.get('ANGLE_instanced_arrays');if(extension===null){console.error('THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.');return}
3816extension.drawElementsInstancedANGLE(mode,count,type,start*bytesPerElement,geometry.maxInstancedCount);info.update(count,mode,geometry.maxInstancedCount)}
3817this.setMode=setMode;this.setIndex=setIndex;this.render=render;this.renderInstances=renderInstances}
3818function WebGLInfo(gl){var memory={geometries:0,textures:0};var render={frame:0,calls:0,triangles:0,points:0,lines:0};function update(count,mode,instanceCount){instanceCount=instanceCount||1;render.calls ++;switch(mode){case gl.TRIANGLES:render.triangles+=instanceCount*(count/3);break;case gl.TRIANGLE_STRIP:case gl.TRIANGLE_FAN:render.triangles+=instanceCount*(count-2);break;case gl.LINES:render.lines+=instanceCount*(count/2);break;case gl.LINE_STRIP:render.lines+=instanceCount*(count-1);break;case gl.LINE_LOOP:render.lines+=instanceCount*count;break;case gl.POINTS:render.points+=instanceCount*count;break;default:console.error('THREE.WebGLInfo: Unknown draw mode:',mode);break}}
3819function reset(){render.frame ++;render.calls=0;render.triangles=0;render.points=0;render.lines=0}
3820return{memory:memory,render:render,programs:null,autoReset:!0,reset:reset,update:update}}
3821function absNumericalSort(a,b){return Math.abs(b[1])-Math.abs(a[1])}
3822function WebGLMorphtargets(gl){var influencesList={};var morphInfluences=new Float32Array(8);function update(object,geometry,material,program){var objectInfluences=object.morphTargetInfluences;var length=objectInfluences.length;var influences=influencesList[geometry.id];if(influences===undefined){influences=[];for(var i=0;i<length;i ++){influences[i]=[i,0]}
3823influencesList[geometry.id]=influences}
3824var morphTargets=material.morphTargets&&geometry.morphAttributes.position;var morphNormals=material.morphNormals&&geometry.morphAttributes.normal;for(var i=0;i<length;i ++){var influence=influences[i];if(influence[1]!==0){if(morphTargets)geometry.removeAttribute('morphTarget'+i);if(morphNormals)geometry.removeAttribute('morphNormal'+i);}}
3825for(var i=0;i<length;i ++){var influence=influences[i];influence[0]=i;influence[1]=objectInfluences[i]}
3826influences.sort(absNumericalSort);for(var i=0;i<8;i ++){var influence=influences[i];if(influence){var index=influence[0];var value=influence[1];if(value){if(morphTargets)geometry.addAttribute('morphTarget'+i,morphTargets[index]);if(morphNormals)geometry.addAttribute('morphNormal'+i,morphNormals[index]);morphInfluences[i]=value;continue}}
3827morphInfluences[i]=0}
3828program.getUniforms().setValue(gl,'morphTargetInfluences',morphInfluences)}
3829return{update:update}}
3830function WebGLObjects(geometries,info){var updateList={};function update(object){var frame=info.render.frame;var geometry=object.geometry;var buffergeometry=geometries.get(object,geometry);if(updateList[buffergeometry.id]!==frame){if(geometry.isGeometry){buffergeometry.updateFromObject(object)}
3831geometries.update(buffergeometry);updateList[buffergeometry.id]=frame}
3832return buffergeometry}
3833function dispose(){updateList={}}
3834return{update:update,dispose:dispose}}
3835function CubeTexture(images,mapping,wrapS,wrapT,magFilter,minFilter,format,type,anisotropy,encoding){images=images!==undefined?images:[];mapping=mapping!==undefined?mapping:CubeReflectionMapping;Texture.call(this,images,mapping,wrapS,wrapT,magFilter,minFilter,format,type,anisotropy,encoding);this.flipY=!1}
3836CubeTexture.prototype=Object.create(Texture.prototype);CubeTexture.prototype.constructor=CubeTexture;CubeTexture.prototype.isCubeTexture=!0;Object.defineProperty(CubeTexture.prototype,'images',{get:function(){return this.image},set:function(value){this.image=value}});var emptyTexture=new Texture();var emptyCubeTexture=new CubeTexture();function UniformContainer(){this.seq=[];this.map={}}
3837var arrayCacheF32=[];var arrayCacheI32=[];var mat4array=new Float32Array(16);var mat3array=new Float32Array(9);var mat2array=new Float32Array(4);function flatten(array,nBlocks,blockSize){var firstElem=array[0];if(firstElem<=0||firstElem>0)return array;var n=nBlocks*blockSize,r=arrayCacheF32[n];if(r===undefined){r=new Float32Array(n);arrayCacheF32[n]=r}
3838if(nBlocks!==0){firstElem.toArray(r,0);for(var i=1,offset=0;i!==nBlocks;++ i){offset+=blockSize;array[i].toArray(r,offset)}}
3839return r}
3840function arraysEqual(a,b){if(a.length!==b.length)return!1;for(var i=0,l=a.length;i<l;
3840i ++){if(a[i]!==b[i])return!1}
3841return!0}
3842function copyArray(a,b){for(var i=0,l=b.length;i<l;i ++){a[i]=b[i]}}
3843function allocTexUnits(renderer,n){var r=arrayCacheI32[n];if(r===undefined){r=new Int32Array(n);arrayCacheI32[n]=r}
3844for(var i=0;i!==n;++ i)
3845r[i]=renderer.allocTextureUnit();return r}
3846function setValue1f(gl,v){var cache=this.cache;if(cache[0]===v)return;gl.uniform1f(this.addr,v);cache[0]=v}
3847function setValue1i(gl,v){var cache=this.cache;if(cache[0]===v)return;gl.uniform1i(this.addr,v);cache[0]=v}
3848function setValue2fv(gl,v){var cache=this.cache;if(v.x!==undefined){if(cache[0]!==v.x||cache[1]!==v.y){gl.uniform2f(this.addr,v.x,v.y);cache[0]=v.x;cache[1]=v.y}}else{if(arraysEqual(cache,v))return;gl.uniform2fv(this.addr,v);copyArray(cache,v)}}
3849function setValue3fv(gl,v){var cache=this.cache;if(v.x!==undefined){if(cache[0]!==v.x||cache[1]!==v.y||cache[2]!==v.z){gl.uniform3f(this.addr,v.x,v.y,v.z);cache[0]=v.x;cache[1]=v.y;cache[2]=v.z}}else if(v.r!==undefined){if(cache[0]!==v.r||cache[1]!==v.g||cache[2]!==v.b){gl.uniform3f(this.addr,v.r,v.g,v.b);cache[0]=v.r;cache[1]=v.g;cache[2]=v.b}}else{if(arraysEqual(cache,v))return;gl.uniform3fv(this.addr,v);copyArray(cache,v)}}
3850function setValue4fv(gl,v){var cache=this.cache;if(v.x!==undefined){if(cache[0]!==v.x||cache[1]!==v.y||cache[2]!==v.z||cache[3]!==v.w){gl.uniform4f(this.addr,v.x,v.y,v.z,v.w);cache[0]=v.x;cache[1]=v.y;cache[2]=v.z;cache[3]=v.w}}else{if(arraysEqual(cache,v))return;gl.uniform4fv(this.addr,v);copyArray(cache,v)}}
3851function setValue2fm(gl,v){var cache=this.cache;var elements=v.elements;if(elements===undefined){if(arraysEqual(cache,v))return;gl.uniformMatrix2fv(this.addr,!1,v);copyArray(cache,v)}else{if(arraysEqual(cache,elements))return;mat2array.set(elements);gl.uniformMatrix2fv(this.addr,!1,mat2array);copyArray(cache,elements)}}
3852function setValue3fm(gl,v){var cache=this.cache;var elements=v.elements;if(elements===undefined){if(arraysEqual(cache,v))return;gl.uniformMatrix3fv(this.addr,!1,v);copyArray(cache,v)}else{if(arraysEqual(cache,elements))return;mat3array.set(elements);gl.uniformMatrix3fv(this.addr,!1,mat3array);copyArray(cache,elements)}}
3853function setValue4fm(gl,v){var cache=this.cache;var elements=v.elements;if(elements===undefined){if(arraysEqual(cache,v))return;gl.uniformMatrix4fv(this.addr,!1,v);copyArray(cache,v)}else{if(arraysEqual(cache,elements))return;mat4array.set(elements);gl.uniformMatrix4fv(this.addr,!1,mat4array);copyArray(cache,elements)}}
3854function setValueT1(gl,v,renderer){var cache=this.cache;var unit=renderer.allocTextureUnit();if(cache[0]!==unit){gl.uniform1i(this.addr,unit);cache[0]=unit}
3855renderer.setTexture2D(v||emptyTexture,unit)}
3856function setValueT6(gl,v,renderer){var cache=this.cache;var unit=renderer.allocTextureUnit();if(cache[0]!==unit){gl.uniform1i(this.addr,unit);cache[0]=unit}
3857renderer.setTextureCube(v||emptyCubeTexture,unit)}
3858function setValue2iv(gl,v){var cache=this.cache;if(arraysEqual(cache,v))return;gl.uniform2iv(this.addr,v);copyArray(cache,v)}
3859function setValue3iv(gl,v){var cache=this.cache;if(arraysEqual(cache,v))return;gl.uniform3iv(this.addr,v);copyArray(cache,v)}
3860function setValue4iv(gl,v){var cache=this.cache;if(arraysEqual(cache,v))return;gl.uniform4iv(this.addr,v);copyArray(cache,v)}
3861function getSingularSetter(type){switch(type){case 0x1406:return setValue1f;case 0x8b50:return setValue2fv;case 0x8b51:return setValue3fv;case 0x8b52:return setValue4fv;case 0x8b5a:return setValue2fm;case 0x8b5b:return setValue3fm;case 0x8b5c:return setValue4fm;case 0x8b5e:case 0x8d66:return setValueT1;case 0x8b60:return setValueT6;case 0x1404:case 0x8b56:return setValue1i;case 0x8b53:case 0x8b57:return setValue2iv;case 0x8b54:case 0x8b58:return setValue3iv;case 0x8b55:case 0x8b59:return setValue4iv}}
3862function setValue1fv(gl,v){var cache=this.cache;if(arraysEqual(cache,v))return;gl.uniform1fv(this.addr,v);copyArray(cache,v)}
3863function setValue1iv(gl,v){var cache=this.cache;if(arraysEqual(cache,v))return;gl.uniform1iv(this.addr,v);copyArray(cache,v)}
3864function setValueV2a(gl,v){var cache=this.cache;var data=flatten(v,this.size,2);if(arraysEqual(cache,data))return;gl.uniform2fv(this.addr,data);this.updateCache(data)}
3865function setValueV3a(gl,v){var cache=this.cache;var data=flatten(v,this.size,3);if(arraysEqual(cache,data))return;gl.uniform3fv(this.addr,data);this.updateCache(data)}
3866function setValueV4a(gl,v){var cache=this.cache;var data=flatten(v,this.size,4);if(arraysEqual(cache,data))return;gl.uniform4fv(this.addr,data);this.updateCache(data)}
3867function setValueM2a(gl,v){var cache=this.cache;var data=flatten(v,this.size,4);if(arraysEqual(cache,data))return;gl.uniformMatrix2fv(this.addr,!1,data);this.updateCache(data)}
3868function setValueM3a(gl,v){var cache=this.cache;var data=flatten(v,this.size,9);if(arraysEqual(cache,data))return;gl.uniformMatrix3fv(this.addr,!1,data);this.updateCache(data)}
3869function setValueM4a(gl,v){var cache=this.cache;var data=flatten(v,this.size,16);if(arraysEqual(cache,data))return;gl.uniformMatrix4fv(this.addr,!1,data);this.updateCache(data)}
3870function setValueT1a(gl,v,renderer){var cache=this.cache;var n=v.length;var units=allocTexUnits(renderer,n);if(arraysEqual(cache,units)===!1){gl.uniform1iv(this.addr,units);copyArray(cache,units)}
3871for(var i=0;i!==n;++ i){renderer.setTexture2D(v[i]||emptyTexture,units[i])}}
3872function setValueT6a(gl,v,renderer){var cache=this.cache;var n=v.length;var units=allocTexUnits(renderer,n);if(arraysEqual(cache,units)===!1){gl.uniform1iv(this.addr,units);copyArray(cache,units)}
3873for(var i=0;i!==n;++ i){renderer.setTextureCube(v[i]||emptyCubeTexture,units[i])}}
3874function getPureArraySetter(type){switch(type){case 0x1406:return setValue1fv;case 0x8b50:return setValueV2a;case 0x8b51:return setValueV3a;case 0x8b52:return setValueV4a;case 0x8b5a:return setValueM2a;case 0x8b5b:return setValueM3a;case 0x8b5c:return setValueM4a;case 0x8b5e:return setValueT1a;case 0x8b60:return setValueT6a;case 0x1404:case 0x8b56:return setValue1iv;case 0x8b53:case 0x8b57:return setValue2iv;case 0x8b54:case 0x8b58:return setValue3iv;case 0x8b55:case 0x8b59:return setValue4iv}}
3875function SingleUniform(id,activeInfo,addr){this.id=id;this.addr=addr;this.cache=[];this.setValue=getSingularSetter(activeInfo.type)}
3876function PureArrayUniform(id,activeInfo,addr){this.id=id;this.addr=addr;this.cache=[];this.size=activeInfo.size;this.setValue=getPureArraySetter(activeInfo.type)}
3877PureArrayUniform.prototype.updateCache=function(data){var cache=this.cache;
3877if(data instanceof Float32Array&&cache.length!==data.length){this.cache=new Float32Array(data.length)}
3878copyArray(cache,data)};function StructuredUniform(id){this.id=id;UniformContainer.call(this)}
3879StructuredUniform.prototype.setValue=function(gl,value){var seq=this.seq;for(var i=0,n=seq.length;i!==n;++ i){var u=seq[i];u.setValue(gl,value[u.id])}};var RePathPart=/([\w\d_]+)(\])?(\[|\.)?/g;function addUniform(container,uniformObject){container.seq.push(uniformObject);container.map[uniformObject.id]=uniformObject}
3880function parseUniform(activeInfo,addr,container){var path=activeInfo.name,pathLength=path.length;RePathPart.lastIndex=0;while(!0){var match=RePathPart.exec(path),matchEnd=RePathPart.lastIndex,id=match[1],idIsIndex=match[2]===']',subscript=match[3];if(idIsIndex)id=id|0;if(subscript===undefined||subscript==='['&&matchEnd+2===pathLength){addUniform(container,subscript===undefined?new SingleUniform(id,activeInfo,addr):new PureArrayUniform(id,activeInfo,addr));break}else{var map=container.map,next=map[id];if(next===undefined){next=new StructuredUniform(id);addUniform(container,next)}
3881container=next}}}
3882function WebGLUniforms(gl,program,renderer){UniformContainer.call(this);this.renderer=renderer;var n=gl.getProgramParameter(program,gl.ACTIVE_UNIFORMS);for(var i=0;i<n;++ i){var info=gl.getActiveUniform(program,i),addr=gl.getUniformLocation(program,info.name);parseUniform(info,addr,this)}}
3883WebGLUniforms.prototype.setValue=function(gl,name,value){var u=this.map[name];if(u!==undefined)u.setValue(gl,value,this.renderer);};WebGLUniforms.prototype.setOptional=function(gl,object,name){var v=object[name];if(v!==undefined)this.setValue(gl,name,v);};WebGLUniforms.upload=function(gl,seq,values,renderer){for(var i=0,n=seq.length;i!==n;++ i){var u=seq[i],v=values[u.id];if(v.needsUpdate!==!1){u.setValue(gl,v.value,renderer)}}};WebGLUniforms.seqWithValue=function(seq,values){var r=[];for(var i=0,n=seq.length;i!==n;++ i){var u=seq[i];if(u.id in values)r.push(u);}
3884return r};function addLineNumbers(string){var lines=string.split('\n');for(var i=0;i<lines.length;i ++){lines[i]=(i+1)+': '+lines[i]}
3885return lines.join('\n')}
3886function WebGLShader(gl,type,string){var shader=gl.createShader(type);gl.shaderSource(shader,string);gl.compileShader(shader);if(gl.getShaderParameter(shader,gl.COMPILE_STATUS)===!1){console.error('THREE.WebGLShader: Shader couldn\'t compile.')}
3887if(gl.getShaderInfoLog(shader)!==''){console.warn('THREE.WebGLShader: gl.getShaderInfoLog()',type===gl.VERTEX_SHADER?'vertex':'fragment',gl.getShaderInfoLog(shader),addLineNumbers(string))}
3888return shader}
3889var programIdCount=0;function getEncodingComponents(encoding){switch(encoding){case LinearEncoding:return['Linear','( value )'];case sRGBEncoding:return['sRGB','( value )'];case RGBEEncoding:return['RGBE','( value )'];case RGBM7Encoding:return['RGBM','( value, 7.0 )'];case RGBM16Encoding:return['RGBM','( value, 16.0 )'];case RGBDEncoding:return['RGBD','( value, 256.0 )'];case GammaEncoding:return['Gamma','( value, float( GAMMA_FACTOR ) )'];default:throw new Error('unsupported encoding: '+encoding)}}
3890function getTexelDecodingFunction(functionName,encoding){var components=getEncodingComponents(encoding);return'vec4 '+functionName+'( vec4 value ) { return '+components[0]+'ToLinear'+components[1]+'; }'}
3891function getTexelEncodingFunction(functionName,encoding){var components=getEncodingComponents(encoding);return'vec4 '+functionName+'( vec4 value ) { return LinearTo'+components[0]+components[1]+'; }'}
3892function getToneMappingFunction(functionName,toneMapping){var toneMappingName;switch(toneMapping){case LinearToneMapping:toneMappingName='Linear';break;case ReinhardToneMapping:toneMappingName='Reinhard';break;case Uncharted2ToneMapping:toneMappingName='Uncharted2';break;case CineonToneMapping:toneMappingName='OptimizedCineon';break;default:throw new Error('unsupported toneMapping: '+toneMapping)}
3893return'vec3 '+functionName+'( vec3 color ) { return '+toneMappingName+'ToneMapping( color ); }'}
3894function generateExtensions(extensions,parameters,rendererExtensions){extensions=extensions||{};var chunks=[(extensions.derivatives||parameters.envMapCubeUV||parameters.bumpMap||parameters.normalMap||parameters.flatShading)?'#extension GL_OES_standard_derivatives : enable':'',(extensions.fragDepth||parameters.logarithmicDepthBuffer)&&rendererExtensions.get('EXT_frag_depth')?'#extension GL_EXT_frag_depth : enable':'',(extensions.drawBuffers)&&rendererExtensions.get('WEBGL_draw_buffers')?'#extension GL_EXT_draw_buffers : require':'',(extensions.shaderTextureLOD||parameters.envMap)&&rendererExtensions.get('EXT_shader_texture_lod')?'#extension GL_EXT_shader_texture_lod : enable':''];return chunks.filter(filterEmptyLine).join('\n')}
3895function generateDefines(defines){var chunks=[];for(var name in defines){var value=defines[name];if(value===!1)continue;chunks.push('#define '+name+' '+value)}
3896return chunks.join('\n')}
3897function fetchAttributeLocations(gl,program){var attributes={};var n=gl.getProgramParameter(program,gl.ACTIVE_ATTRIBUTES);for(var i=0;i<n;i ++){var info=gl.getActiveAttrib(program,i);var name=info.name;attributes[name]=gl.getAttribLocation(program,name)}
3897
3898return attributes}
3899function filterEmptyLine(string){return string!==''}
3900function replaceLightNums(string,parameters){return string.replace(/NUM_DIR_LIGHTS/g,parameters.numDirLights).replace(/NUM_SPOT_LIGHTS/g,parameters.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g,parameters.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,parameters.numPointLights).replace(/NUM_HEMI_LIGHTS/g,parameters.numHemiLights)}
3901function replaceClippingPlaneNums(string,parameters){return string.replace(/NUM_CLIPPING_PLANES/g,parameters.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,(parameters.numClippingPlanes-parameters.numClipIntersection))}
3902function parseIncludes(string){var pattern=/^[ \t]*#include +<([\w\d.]+)>/gm;function replace(match,include){var replace=ShaderChunk[include];if(replace===undefined){throw new Error('Can not resolve #include <'+include+'>')}
3903return parseIncludes(replace)}
3904return string.replace(pattern,replace)}
3905function unrollLoops(string){var pattern=/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g;function replace(match,start,end,snippet){var unroll='';for(var i=parseInt(start);i<parseInt(end);i ++){unroll+=snippet.replace(/\[ i \]/g,'[ '+i+' ]')}
3906return unroll}
3907return string.replace(pattern,replace)}
3908function WebGLProgram(renderer,extensions,code,material,shader,parameters){var gl=renderer.context;var defines=material.defines;var vertexShader=shader.vertexShader;var fragmentShader=shader.fragmentShader;var shadowMapTypeDefine='SHADOWMAP_TYPE_BASIC';if(parameters.shadowMapType===PCFShadowMap){shadowMapTypeDefine='SHADOWMAP_TYPE_PCF'}else if(parameters.shadowMapType===PCFSoftShadowMap){shadowMapTypeDefine='SHADOWMAP_TYPE_PCF_SOFT'}
3909var envMapTypeDefine='ENVMAP_TYPE_CUBE';var envMapModeDefine='ENVMAP_MODE_REFLECTION';var envMapBlendingDefine='ENVMAP_BLENDING_MULTIPLY';if(parameters.envMap){switch(material.envMap.mapping){case CubeReflectionMapping:case CubeRefractionMapping:envMapTypeDefine='ENVMAP_TYPE_CUBE';break;case CubeUVReflectionMapping:case CubeUVRefractionMapping:envMapTypeDefine='ENVMAP_TYPE_CUBE_UV';break;case EquirectangularReflectionMapping:case EquirectangularRefractionMapping:envMapTypeDefine='ENVMAP_TYPE_EQUIREC';break;case SphericalReflectionMapping:envMapTypeDefine='ENVMAP_TYPE_SPHERE';break}
3910switch(material.envMap.mapping){case CubeRefractionMapping:case EquirectangularRefractionMapping:envMapMo
3910deDefine='ENVMAP_MODE_REFRACTION';break}
3911switch(material.combine){case MultiplyOperation:envMapBlendingDefine='ENVMAP_BLENDING_MULTIPLY';break;case MixOperation:envMapBlendingDefine='ENVMAP_BLENDING_MIX';break;case AddOperation:envMapBlendingDefine='ENVMAP_BLENDING_ADD';break}}
3912var gammaFactorDefine=(renderer.gammaFactor>0)?renderer.gammaFactor:1.0;var customExtensions=generateExtensions(material.extensions,parameters,extensions);var customDefines=generateDefines(defines);var program=gl.createProgram();var prefixVertex,prefixFragment;if(material.isRawShaderMaterial){prefixVertex=[customDefines].filter(filterEmptyLine).join('\n');if(prefixVertex.length>0){prefixVertex+='\n'}
3913prefixFragment=[customExtensions,customDefines].filter(filterEmptyLine).join('\n');if(prefixFragment.length>0){prefixFragment+='\n'}}else{prefixVertex=['precision '+parameters.precision+' float;','precision '+parameters.precision+' int;','#define SHADER_NAME '+shader.name,customDefines,parameters.supportsVertexTextures?'#define VERTEX_TEXTURES':'','#define GAMMA_FACTOR '+gammaFactorDefine,'#define MAX_BONES '+parameters.maxBones,(parameters.useFog&&parameters.fog)?'#define USE_FOG':'',(parameters.useFog&&parameters.fogExp)?'#define FOG_EXP2':'',parameters.map?'#define USE_MAP':'',parameters.envMap?'#define USE_ENVMAP':'',parameters.envMap?'#define '+envMapMo
3913deDefine:'',parameters.lightMap?'#define USE_LIGHTMAP':'',parameters.aoMap?'#define USE_AOMAP':'',parameters.emissiveMap?'#define USE_EMISSIVEMAP':'',parameters.bumpMap?'#define USE_BUMPMAP':'',parameters.normalMap?'#define USE_NORMALMAP':'',parameters.displacementMap&&parameters.supportsVertexTextures?'#define USE_DISPLACEMENTMAP':'',parameters.specularMap?'#define USE_SPECULARMAP':'',parameters.roughnessMap?'#define USE_ROUGHNESSMAP':'',parameters.metalnessMap?'#define USE_METALNESSMAP':'',parameters.alphaMap?'#define USE_ALPHAMAP':'',parameters.vertexColors?'#define USE_COLOR':'',parameters.flatShading?'#define FLAT_SHADED':'',parameters.skinning?'#define USE_SKINNING':'',parameters.useVertexTexture?'#define BONE_TEXTURE':'',parameters.morphTargets?'#define USE_MORPHTARGETS':'',parameters.morphNormals&&parameters.flatShading===!1?'#define USE_MORPHNORMALS':'',parameters.doubleSided?'#define DOUBLE_SIDED':'',parameters.flipSided?'#define FLIP_SIDED':'',parameters.shadowMapEnabled?'#define USE_SHADOWMAP':'',parameters.shadowMapEnabled?'#define '+shadowMapTypeDefine:'',parameters.sizeAttenuation?'#define USE_SIZEATTENUATION':'',parameters.logarithmicDepthBuffer?'#define USE_LOGDEPTHBUF':'',parameters.logarithmicDepthBuffer&&extensions.get('EXT_frag_depth')?'#define USE_LOGDEPTHBUF_EXT':'','uniform mat4 modelMatrix;','uniform mat4 modelViewMatrix;','uniform mat4 projectionMatrix;','uniform mat4 viewMatrix;','uniform mat3 normalMatrix;','uniform vec3 cameraPosition;','attribute vec3 position;','attribute vec3 normal;','attribute vec2 uv;','#ifdef USE_COLOR','	attribute vec3 color;','#endif','#ifdef USE_MORPHTARGETS','	attribute vec3 morphTarget0;','	attribute vec3 morphTarget1;','	attribute vec3 morphTarget2;','	attribute vec3 morphTarget3;','	#ifdef USE_MORPHNORMALS','		attribute vec3 morphNormal0;','		attribute vec3 morphNormal1;','		attribute vec3 morphNormal2;','		attribute vec3 morphNormal3;','	#else','		attribute vec3 morphTarget4;','		attribute vec3 morphTarget5;','		attribute vec3 morphTarget6;','		attribute vec3 morphTarget7;','	#endif','#endif','#ifdef USE_SKINNING','	attribute vec4 skinIndex;','	attribute vec4 skinWeight;','#endif','\n'].filter(filterEmptyLine).join('\n');prefixFragment=[customExtensions,'precision '+parameters.precision+' float;','precision '+parameters.precision+' int;','#define SHADER_NAME '+shader.name,customDefines,parameters.alphaTest?'#define ALPHATEST '+parameters.alphaTest+(parameters.alphaTest%1?'':'.0'):'','#define GAMMA_FACTOR '+gammaFactorDefine,(parameters.useFog&&parameters.fog)?'#define USE_FOG':'',(parameters.useFog&&parameters.fogExp)?'#define FOG_EXP2':'',parameters.map?'#define USE_MAP':'',parameters.envMap?'#define USE_ENVMAP':'',parameters.envMap?'#define '+envMapTypeDefine:'',parameters.envMap?'#define '+envMapMo
3913deDefine:'',parameters.envMap?'#define '+envMapBlendingDefine:'',parameters.lightMap?'#define USE_LIGHTMAP':'',parameters.aoMap?'#define USE_AOMAP':'',parameters.emissiveMap?'#define USE_EMISSIVEMAP':'',parameters.bumpMap?'#define USE_BUMPMAP':'',parameters.normalMap?'#define USE_NORMALMAP':'',parameters.specularMap?'#define USE_SPECULARMAP':'',parameters.roughnessMap?'#define USE_ROUGHNESSMAP':'',parameters.metalnessMap?'#define USE_METALNESSMAP':'',parameters.alphaMap?'#define USE_ALPHAMAP':'',parameters.vertexColors?'#define USE_COLOR':'',parameters.gradientMap?'#define USE_GRADIENTMAP':'',parameters.flatShading?'#define FLAT_SHADED':'',parameters.doubleSided?'#define DOUBLE_SIDED':'',parameters.flipSided?'#define FLIP_SIDED':'',parameters.shadowMapEnabled?'#define USE_SHADOWMAP':'',parameters.shadowMapEnabled?'#define '+shadowMapTypeDefine:'',parameters.premultipliedAlpha?'#define PREMULTIPLIED_ALPHA':'',parameters.physicallyCorrectLights?'#define PHYSICALLY_CORRECT_LIGHTS':'',parameters.logarithmicDepthBuffer?'#define USE_LOGDEPTHBUF':'',parameters.logarithmicDepthBuffer&&extensions.get('EXT_frag_depth')?'#define USE_LOGDEPTHBUF_EXT':'',parameters.envMap&&extensions.get('EXT_shader_texture_lod')?'#define TEXTURE_LOD_EXT':'','uniform mat4 viewMatrix;','uniform vec3 cameraPosition;',(parameters.toneMapping!==NoToneMapping)?'#define TONE_MAPPING':'',(parameters.toneMapping!==NoToneMapping)?ShaderChunk.tonemapping_pars_fragment:'',(parameters.toneMapping!==NoToneMapping)?getToneMappingFunction('toneMapping',parameters.toneMapping):'',parameters.dithering?'#define DITHERING':'',(parameters.outputEncoding||parameters.mapEncoding||parameters.envMapEncoding||parameters.emissiveMapEncoding)?ShaderChunk.encodings_pars_fragment:'',parameters.mapEncoding?getTexelDecodingFunction('mapTexelToLinear',parameters.mapEncoding):'',parameters.envMapEncoding?getTexelDecodingFunction('envMapTexelToLinear',parameters.envMapEncoding):'',parameters.emissiveMapEncoding?getTexelDecodingFunction('emissiveMapTexelToLinear',parameters.emissiveMapEncoding):'',parameters.outputEncoding?getTexelEncodingFunction('linearToOutputTexel',parameters.outputEncoding):'',parameters.depthPacking?'#define DEPTH_PACKING '+material.depthPacking:'','\n'].filter(filterEmptyLine).join('\n')}
3914vertexShader=parseIncludes(vertexShader);vertexShader=replaceLightNums(vertexShader,parameters);vertexShader=replaceClippingPlaneNums(vertexShader,parameters);fragmentShader=parseIncludes(fragmentShader);fragmentShader=replaceLightNums(fragmentShader,parameters);fragmentShader=replaceClippingPlaneNums(fragmentShader,parameters);vertexShader=unrollLoops(vertexShader);fragmentShader=unrollLoops(fragmentShader);var vertexGlsl=prefixVertex+vertexShader;var fragmentGlsl=prefixFragment+fragmentShader;var glVertexShader=WebGLShader(gl,gl.VERTEX_SHADER,vertexGlsl);var glFragmentShader=WebGLShader(gl,gl.FRAGMENT_SHADER,fragmentGlsl);gl.attachShader(program,glVertexShader);gl.attachShader(program,glFragmentShader);if(material.index0AttributeName!==undefined){gl.bindAttribLocation(program,0,material.index0AttributeName)}else if(parameters.morphTargets===!0){gl.bindAttribLocation(program,0,'position')}
3915gl.linkProgram(program);var programLog=gl.getProgramInfoLog(program).trim();var vertexLog=gl.getShaderInfoLog(glVertexShader).trim();var fragmentLog=gl.getShaderInfoLog(glFragmentShader).trim();var runnable=!0;var haveDiagnostics=!0;if(gl.getProgramParameter(program,gl.LINK_STATUS)===!1){runnable=!1;console.error('THREE.WebGLProgram: shader error: ',gl.getError(),'gl.VALIDATE_STATUS',gl.getProgramParameter(program,gl.VALIDATE_STATUS),'gl.getProgramInfoLog',programLog,vertexLog,fragmentLog)}else if(programLog!==''){console.warn('THREE.WebGLProgram: gl.getProgramInfoLog()',programLog)}else if(vertexLog===''||fragmentLog===''){haveDiagnostics=!1}
3916if(haveDiagnostics){this.diagnostics={runnable:runnable,material:material,programLog:programLog,vertexShader:{log:vertexLog,prefix:prefixVertex},fragmentShader:{log:fragmentLog,prefix:prefixFragment}}}
3917gl.deleteShader(glVertexShader);gl.deleteShader(glFragmentShader);var cachedUniforms;this.getUniforms=function(){if(cachedUniforms===undefined){cachedUniforms=new WebGLUniforms(gl,program,renderer)}
3918return cachedUniforms};var cachedAttributes;this.getAttributes=function(){if(cachedAttributes===undefined){cachedAttributes=fetchAttributeLocations(gl,program)}
3919return cachedAttributes};this.destroy=function(){gl.deleteProgram(program);this.program=undefined};Object.defineProperties(this,{uniforms:{get:function(){console.warn('THREE.WebGLProgram: .uniforms is now .getUniforms().');return this.getUniforms()}},attributes:{get:function(){console.warn('THREE.WebGLProgram: .attributes is now .getAttributes().');return this.getAttributes()}}});this.name=shader.name;this.id=programIdCount ++;
3919this.code=code;this.usedTimes=1;this.program=program;this.vertexShader=glVertexShader;this.fragmentShader=glFragmentShader;return this}
3920function WebGLPrograms(renderer,extensions,capabilities){var programs=[];var shaderIDs={MeshDepthMaterial:'depth',MeshDistanceMaterial:'distanceRGBA',MeshNormalMaterial:'normal',MeshBasicMaterial:'basic',MeshLambertMaterial:'lambert',MeshPhongMaterial:'phong',MeshToonMaterial:'phong',MeshStandardMaterial:'physical',MeshPhysicalMaterial:'physical',LineBasicMaterial:'basic',LineDashedMaterial:'dashed',PointsMaterial:'points',ShadowMaterial:'shadow'};var parameterNames=["precision","supportsVertexTextures","map","mapEncoding","envMap","envMapMode","envMapEncoding","lightMap","aoMap","emissiveMap","emissiveMapEncoding","bumpMap","normalMap","displacementMap","specularMap","roughnessMap","metalnessMap","gradientMap","alphaMap","combine","vertexColors","fog","useFog","fogExp","flatShading","sizeAttenuation","logarithmicDepthBuffer","skinning","maxBones","useVertexTexture","morphTargets","morphNormals","maxMorphTargets","maxMorphNormals","premultipliedAlpha","numDirLights","numPointLights","numSpotLights","numHemiLights","numRectAreaLights","shadowMapEnabled","shadowMapType","toneMapping",'physicallyCorrectLights',"alphaTest","doubleSided","flipSided","numClippingPlanes","numClipIntersection","depthPacking","dithering"];function allocateBones(object){var skeleton=object.skeleton;var bones=skeleton.bones;if(capabilities.floatVertexTextures){return 1024}else{var nVertexUniforms=capabilities.maxVertexUniforms;var nVertexMatrices=Math.floor((nVertexUniforms-20)/4);var maxBones=Math.min(nVertexMatrices,bones.length);if(maxBones<bones.length){console.warn('THREE.WebGLRenderer: Skeleton has '+bones.length+' bones. This GPU supports '+maxBones+'.');return 0}
3921return maxBones}}
3922function getTextureEncodingFromMap(map,gammaOverrideLinear){var encoding;if(!map){encoding=LinearEncoding}else if(map.isTexture){encoding=map.encoding}else if(map.isWebGLRenderTarget){console.warn("THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.");encoding=map.texture.encoding}
3923if(encoding===LinearEncoding&&gammaOverrideLinear){encoding=GammaEncoding}
3924return encoding}
3925this.getParameters=function(material,lights,shadows,fog,nClipPlanes,nClipIntersection,object){var shaderID=shaderIDs[material.type];var maxBones=object.isSkinnedMesh?allocateBones(object):0;var precision=capabilities.precision;if(material.precision!==null){precision=capabilities.getMaxPrecision(material.precision);if(precision!==material.precision){console.warn('THREE.WebGLProgram.getParameters:',material.precision,'not supported, using',precision,'instead.')}}
3926var currentRenderTarget=renderer.getRenderTarget();var parameters={shaderID:shaderID,precision:precision,supportsVertexTextures:capabilities.vertexTextures,outputEncoding:getTextureEncodingFromMap((!currentRenderTarget)?null:currentRenderTarget.texture,renderer.gammaOutput),map:!!material.map,mapEncoding:getTextureEncodingFromMap(material.map,renderer.gammaInput),envMap:!!material.envMap,envMapMode:material.envMap&&material.envMap.mapping,envMapEncoding:getTextureEncodingFromMap(material.envMap,renderer.gammaInput),envMapCubeUV:(!!material.envMap)&&((material.envMap.mapping===CubeUVReflectionMapping)||(material.envMap.mapping===CubeUVRefractionMapping)),lightMap:!!material.lightMap,aoMap:!!material.aoMap,emissiveMap:!!material.emissiveMap,emissiveMapEncoding:getTextureEncodingFromMap(material.emissiveMap,renderer.gammaInput),bumpMap:!!material.bumpMap,normalMap:!!material.normalMap,displacementMap:!!material.displacementMap,roughnessMap:!!material.roughnessMap,metalnessMap:!!material.metalnessMap,specularMap:!!material.specularMap,alphaMap:!!material.alphaMap,gradientMap:!!material.gradientMap,combine:material.combine,vertexColors:material.vertexColors,fog:!!fog,useFog:material.fog,fogExp:(fog&&fog.isFogExp2),flatShading:material.flatShading,sizeAttenuation:material.sizeAttenuation,logarithmicDepthBuffer:capabilities.logarithmicDepthBuffer,skinning:material.skinning&&maxBones>0,maxBones:maxBones,useVertexTexture:capabilities.floatVertexTextures,morphTargets:material.morphTargets,morphNormals:material.morphNormals,maxMorphTargets:renderer.maxMorphTargets,maxMorphNormals:renderer.maxMorphNormals,numDirLights:lights.directional.length,numPointLights:lights.point.length,numSpotLights:lights.spot.length,numRectAreaLights:lights.rectArea.length,numHemiLights:lights.hemi.length,numClippingPlanes:nClipPlanes,numClipIntersection:nClipIntersection,dithering:material.dithering,shadowMapEnabled:renderer.shadowMap.enabled&&object.receiveShadow&&shadows.length>0,shadowMapType:renderer.shadowMap.type,toneMapping:renderer.toneMapping,physicallyCorrectLights:renderer.physicallyCorrectLights,premultipliedAlpha:material.premultipliedAlpha,alphaTest:material.alphaTest,doubleSided:material.side===DoubleSide,flipSided:material.side===BackSide,depthPacking:(material.depthPacking!==undefined)?material.depthPacking:!1};return parameters};this.getProgramCode=function(material,parameters){var array=[];if(parameters.shaderID){array.push(parameters.shaderID)}else{array.push(material.fragmentShader);array.push(material.vertexShader)}
3927if(material.defines!==undefined){for(var name in material.defines){array.push(name);array.push(material.defines[name])}}
3928for(var i=0;i<parameterNames.length;i ++){array.push(parameters[parameterNames[i]])}
3929array.push(material.onBeforeCompile.toString());array.push(renderer.gammaOutput);return array.join()};this.acquireProgram=function(material,shader,parameters,code){var program;for(var p=0,pl=programs.length;p<pl;
3929p ++){var programInfo=programs[p];if(programInfo.code===code){program=programInfo;++ program.usedTimes;break}}
3930if(program===undefined){program=new WebGLProgram(renderer,extensions,code,material,shader,parameters);programs.push(program)}
3931return program};this.releaseProgram=function(program){if(-- program.usedTimes===0){var i=programs.indexOf(program);programs[i]=programs[programs.length-1];programs.pop();program.destroy()}};this.programs=programs}
3932function WebGLProperties(){var properties=new WeakMap();function get(object){var map=properties.get(object);if(map===undefined){map={};properties.set(object,map)}
3933return map}
3934function remove(object){properties.delete(object)}
3935function update(object,key,value){properties.get(object)[key]=value}
3936function dispose(){properties=new WeakMap()}
3937return{get:get,remove:remove,update:update,dispose:dispose}}
3938function painterSortStable(a,b){if(a.renderOrder!==b.renderOrder){return a.renderOrder-b.renderOrder}else if(a.program&&b.program&&a.program!==b.program){return a.program.id-b.program.id}else if(a.material.id!==b.material.id){return a.material.id-b.material.id}else if(a.z!==b.z){return a.z-b.z}else{return a.id-b.id}}
3939function reversePainterSortStable(a,b){if(a.renderOrder!==b.renderOrder){return a.renderOrder-b.renderOrder}if(a.z!==b.z){return b.z-a.z}else{return a.id-b.id}}
3940function WebGLRenderList(){var renderItems=[];var renderItemsIndex=0;var opaque=[];var transparent=[];function init(){renderItemsIndex=0;opaque.length=0;transparent.length=0}
3941function push(object,geometry,material,z,group){var renderItem=renderItems[renderItemsIndex];if(renderItem===undefined){renderItem={id:object.id,object:object,geometry:geometry,material:material,program:material.program,renderOrder:object.renderOrder,z:z,group:group};renderItems[renderItemsIndex]=renderItem}else{renderItem.id=object.id;renderItem.object=object;renderItem.geometry=geometry;renderItem.material=material;renderItem.program=material.program;renderItem.renderOrder=object.renderOrder;renderItem.z=z;renderItem.group=group}(material.transparent===!0?transparent:opaque).push(renderItem);renderItemsIndex ++}
3942function sort(){if(opaque.length>1)opaque.sort(painterSortStable);if(transparent.length>1)transparent.sort(reversePainterSortStable);}
3943return{opaque:opaque,transparent:transparent,init:init,push:push,sort:sort}}
3944function WebGLRenderLists(){var lists={};function get(scene,camera){var hash=scene.id+','+camera.id;var list=lists[hash];if(list===undefined){list=new WebGLRenderList();lists[hash]=list}
3945return list}
3946function dispose(){lists={}}
3947return{get:get,dispose:dispose}}
3948function UniformsCache(){var lights={};return{get:function(light){if(lights[light.id]!==undefined){return lights[light.id]}
3949var uniforms;switch(light.type){case 'DirectionalLight':uniforms={direction:new Vector3(),color:new Color(),shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new Vector2()};break;case 'SpotLight':uniforms={position:new Vector3(),direction:new Vector3(),color:new Color(),distance:0,coneCos:0,penumbraCos:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new Vector2()};break;case 'PointLight':uniforms={position:new Vector3(),color:new Color(),distance:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new Vector2(),shadowCameraNear:1,shadowCameraFar:1000};break;case 'HemisphereLight':uniforms={direction:new Vector3(),skyColor:new Color(),groundColor:new Color()};break;case 'RectAreaLight':uniforms={color:new Color(),position:new Vector3(),halfWidth:new Vector3(),halfHeight:new Vector3()};break}
3950lights[light.id]=uniforms;return uniforms}}}
3951var count=0;function WebGLLights(){var cache=new UniformsCache();var state={id:count ++,hash:'',ambient:[0,0,0],directional:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],point:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]};var vector3=new Vector3();var matrix4=new Matrix4();var matrix42=new Matrix4();function setup(lights,shadows,camera){var r=0,g=0,b=0;var directionalLength=0;var pointLength=0;var spotLength=0;var rectAreaLength=0;var hemiLength=0;var viewMatrix=camera.matrixWorldInverse;for(var i=0,l=lights.length;i<l;i ++){var light=lights[i];var color=light.color;var intensity=light.intensity;var distance=light.distance;var shadowMap=(light.shadow&&light.shadow.map)?light.shadow.map.texture:null;if(light.isAmbientLight){r+=color.r*intensity;g+=color.g*intensity;b+=color.b*intensity}else if(light.isDirectionalLight){var uniforms=cache.get(light);uniforms.color.copy(light.color).multiplyScalar(light.intensity);uniforms.direction.setFromMatrixPosition(light.matrixWorld);vector3.setFromMatrixPosition(light.target.matrixWorld);uniforms.direction.sub(vector3);uniforms.direction.transformDirection(viewMatrix);uniforms.shadow=light.castShadow;if(light.castShadow){var shadow=light.shadow;uniforms.shadowBias=shadow.bias;uniforms.shadowRadius=shadow.radius;uniforms.shadowMapSize=shadow.mapSize}
3952state.directionalShadowMap[directionalLength]=shadowMap;state.directionalShadowMatrix[directionalLength]=light.shadow.matrix;state.directional[directionalLength]=uniforms;directionalLength ++}else if(light.isSpotLight){var uniforms=cache.get(light);uniforms.position.setFromMatrixPosition(light.matrixWorld);uniforms.position.applyMatrix4(viewMatrix);uniforms.color.copy(color).multiplyScalar(intensity);uniforms.distance=distance;uniforms.direction.setFromMatrixPosition(light.matrixWorld);vector3.setFromMatrixPosition(light.target.matrixWorld);uniforms.direction.sub(vector3);uniforms.direction.transformDirection(viewMatrix);uniforms.coneCos=Math.cos(light.angle);uniforms.penumbraCos=Math.cos(light.angle*(1-light.penumbra));uniforms.decay=(light.distance===0)?0.0:light.decay;uniforms.shadow=light.castShadow;if(light.castShadow){var shadow=light.shadow;uniforms.shadowBias=shadow.bias;uniforms.shadowRadius=shadow.radius;uniforms.shadowMapSize=shadow.mapSize}
3953state.spotShadowMap[spotLength]=shadowMap;state.spotShadowMatrix[spotLength]=light.shadow.matrix;state.spot[spotLength]=uniforms;spotLength ++}else if(light.isRectAreaLight){var uniforms=cache.get(light);uniforms.color.copy(color).multiplyScalar(intensity);uniforms.position.setFromMatrixPosition(light.matrixWorld);uniforms.position.applyMatrix4(viewMatrix);matrix42.identity();matrix4.copy(light.matrixWorld);matrix4.premultiply(viewMatrix);matrix42.extractRotation(matrix4);uniforms.halfWidth.set(light.width*0.5,0.0,0.0);uniforms.halfHeight.set(0.0,light.height*0.5,0.0);uniforms.halfWidth.applyMatrix4(matrix42);uniforms.halfHeight.applyMatrix4(matrix42);state.rectArea[rectAreaLength]=uniforms;rectAreaLength ++}else if(light.isPointLight){var uniforms=cache.get(light);uniforms.position.setFromMatrixPosition(light.matrixWorld);uniforms.position.applyMatrix4(viewMatrix);uniforms.color.copy(light.color).multiplyScalar(light.intensity);uniforms.distance=light.distance;uniforms.decay=(light.distance===0)?0.0:light.decay;uniforms.shadow=light.castShadow;if(light.castShadow){var shadow=light.shadow;uniforms.shadowBias=shadow.bias;uniforms.shadowRadius=shadow.radius;uniforms.shadowMapSize=shadow.mapSize;uniforms.shadowCameraNear=shadow.camera.near;uniforms.shadowCameraFar=shadow.camera.far}
3954state.pointShadowMap[pointLength]=shadowMap;state.pointShadowMatrix[pointLength]=light.shadow.matrix;state.point[pointLength]=uniforms;pointLength ++}else if(light.isHemisphereLight){var uniforms=cache.get(light);uniforms.direction.setFromMatrixPosition(light.matrixWorld);uniforms.direction.transformDirection(viewMatrix);uniforms.direction.normalize();uniforms.skyColor.copy(light.color).multiplyScalar(intensity);uniforms.groundColor.copy(light.groundColor).multiplyScalar(intensity);state.hemi[hemiLength]=uniforms;hemiLength ++}}
3955state.ambient[0]=r;state.ambient[1]=g;state.ambient[2]=b;state.directional.length=directionalLength;state.spot.length=spotLength;state.rectArea.length=rectAreaLength;state.point.length=pointLength;state.hemi.length=hemiLength;state.hash=state.id+','+directionalLength+','+pointLength+','+spotLength+','+rectAreaLength+','+hemiLength+','+shadows.length}
3956return{setup:setup,state:state}}
3957function WebGLRenderState(){var lights=new WebGLLights();var lightsArray=[];var shadowsArray=[];var spritesArray=[];function init(){lightsArray.length=0;shadowsArray.length=0;spritesArray.length=0}
3958function pushLight(light){lightsArray.push(light)}
3959function pushShadow(shadowLight){shadowsArray.push(shadowLight)}
3960function pushSprite(shadowLight){spritesArray.push(shadowLight)}
3961function setupLights(camera){lights.setup(lightsArray,shadowsArray,camera)}
3962var state={lightsArray:lightsArray,shadowsArray:shadowsArray,spritesArray:spritesArray,lights:lights};return{init:init,state:state,setupLights:setupLights,pushLight:pushLight,pushShadow:pushShadow,pushSprite:pushSprite}}
3963function WebGLRenderStates(){var renderStates={};function get(scene,camera){var hash=scene.id+','+camera.id;var renderState=renderStates[hash];if(renderState===undefined){renderState=new WebGLRenderState();renderStates[hash]=renderState}
3964return renderState}
3965function dispose(){renderStates={}}
3966return{get:get,dispose:dispose}}
3967function MeshDepthMaterial(parameters){Material.call(this);this.type='MeshDepthMaterial';this.depthPacking=BasicDepthPacking;this.skinning=!1;this.morphTargets=!1;this.map=null;this.alphaMap=null;this.displacementMap=null;this.displacementScale=1;this.displacementBias=0;this.wireframe=!1;this.wireframeLinewidth=1;this.fog=!1;this.lights=!1;this.setValues(parameters)}
3968MeshDepthMaterial.prototype=Object.create(Material.prototype);MeshDepthMaterial.prototype.constructor=MeshDepthMaterial;MeshDepthMaterial.prototype.isMeshDepthMaterial=!0;MeshDepthMaterial.prototype.copy=function(source){Material.prototype.copy.call(this,source);this.depthPacking=source.depthPacking;this.skinning=source.skinning;this.morphTargets=source.morphTargets;this.map=source.map;this.alphaMap=source.alphaMap;this.displacementMap=source.displacementMap;this.displacementScale=source.displacementScale;this.displacementBias=source.displacementBias;this.wireframe=source.wireframe;this.wireframeLinewidth=source.wireframeLinewidth;return this};function MeshDistanceMaterial(parameters){Material.call(this);this.type='MeshDistanceMaterial';this.referencePosition=new Vector3();this.nearDistance=1;this.farDistance=1000;this.skinning=!1;this.morphTargets=!1;this.map=null;this.alphaMap=null;this.displacementMap=null;this.displacementScale=1;this.displacementBias=0;this.fog=!1;this.lights=!1;this.setValues(parameters)}
3969MeshDistanceMaterial.prototype=Object.create(Material.prototype);MeshDistanceMaterial.prototype.constructor=MeshDistanceMaterial;MeshDistanceMaterial.prototype.isMeshDistanceMaterial=!0;MeshDistanceMaterial.prototype.copy=function(source){Material.prototype.copy.call(this,source);this.referencePosition.copy(source.referencePosition);this.nearDistance=source.nearDistance;this.farDistance=source.farDistance;this.skinning=source.skinning;this.morphTargets=source.morphTargets;this.map=source.map;this.alphaMap=source.alphaMap;this.displacementMap=source.displacementMap;this.displacementScale=source.displacementScale;this.displacementBias=source.displacementBias;return this};function WebGLShadowMap(_renderer,_objects,maxTextureSize){var _frustum=new Frustum(),_projScreenMatrix=new Matrix4(),_shadowMapSize=new Vector2(),_maxShadowMapSize=new Vector2(maxTextureSize,maxTextureSize),_lookTarget=new Vector3(),_lightPositionWorld=new Vector3(),_MorphingFlag=1,_SkinningFlag=2,_NumberOfMaterialVariants=(_MorphingFlag|_SkinningFlag)+1,_depthMaterials=new Array(_NumberOfMaterialVariants),_distanceMaterials=new Array(_NumberOfMaterialVariants),_materialCache={};var shadowSide={0:BackSide,1:FrontSide,2:DoubleSide};var cubeDirections=[new Vector3(1,0,0),new Vector3(-1,0,0),new Vector3(0,0,1),new Vector3(0,0,-1),new Vector3(0,1,0),new Vector3(0,-1,0)];var cubeUps=[new Vector3(0,1,0),new Vector3(0,1,0),new Vector3(0,1,0),new Vector3(0,1,0),new Vector3(0,0,1),new Vector3(0,0,-1)];var cube2DViewPorts=[new Vector4(),new Vector4(),new Vector4(),new Vector4(),new Vector4(),new Vector4()];for(var i=0;i!==_NumberOfMaterialVariants;++ i){var useMorphing=(i&_MorphingFlag)!==0;var useSkinning=(i&_SkinningFlag)!==0;var depthMaterial=new MeshDepthMaterial({depthPacking:RGBADepthPacking,morphTargets:useMorphing,skinning:useSkinning});_depthMaterials[i]=depthMaterial;var distanceMaterial=new MeshDistanceMaterial({morphTargets:useMorphing,skinning:useSkinning});_distanceMaterials[i]=distanceMaterial}
3970var scope=this;this.enabled=!1;this.autoUpdate=!0;this.needsUpdate=!1;this.type=PCFShadowMap;this.render=function(lights,scene,camera){if(scope.enabled===!1)return;if(scope.autoUpdate===!1&&scope.needsUpdate===!1)return;if(lights.length===0)return;var _gl=_renderer.context;var _state=_renderer.state;_state.disable(_gl.BLEND);_state.buffers.color.setClear(1,1,1,1);_state.buffers.depth.setTest(!0);_state.setScissorTest(!1);var faceCount;for(var i=0,il=lights.length;i<il;i ++){var light=lights[i];var shadow=light.shadow;var isPointLight=light&&light.isPointLight;if(shadow===undefined){console.warn('THREE.WebGLShadowMap:',light,'has no shadow.');continue}
3971var shadowCamera=shadow.camera;_shadowMapSize.copy(shadow.mapSize);_shadowMapSize.min(_maxShadowMapSize);if(isPointLight){var vpWidth=_shadowMapSize.x;var vpHeight=_shadowMapSize.y;cube2DViewPorts[0].set(vpWidth*2,vpHeight,vpWidth,vpHeight);cube2DViewPorts[1].set(0,vpHeight,vpWidth,vpHeight);cube2DViewPorts[2].set(vpWidth*3,vpHeight,vpWidth,vpHeight);cube2DViewPorts[3].set(vpWidth,vpHeight,vpWidth,vpHeight);cube2DViewPorts[4].set(vpWidth*3,0,vpWidth,vpHeight);cube2DViewPorts[5].set(vpWidth,0,vpWidth,vpHeight);_shadowMapSize.x*=4.0;_shadowMapSize.y*=2.0}
3972if(shadow.map===null){var pars={minFilter:NearestFilter,magFilter:NearestFilter,format:RGBAFormat};shadow.map=new WebGLRenderTarget(_shadowMapSize.x,_shadowMapSize.y,pars);shadow.map.texture.name=light.name+".shadowMap";shadowCamera.updateProjectionMatrix()}
3973if(shadow.isSpotLightShadow){shadow.update(light)}
3974var shadowMap=shadow.map;
3974var shadowMatrix=shadow.matrix;_lightPositionWorld.setFromMatrixPosition(light.matrixWorld);shadowCamera.position.copy(_lightPositionWorld);if(isPointLight){faceCount=6;shadowMatrix.makeTranslation(-_lightPositionWorld.x,-_lightPositionWorld.y,-_lightPositionWorld.z)}else{faceCount=1;_lookTarget.setFromMatrixPosition(light.target.matrixWorld);shadowCamera.lookAt(_lookTarget);shadowCamera.updateMatrixWorld();shadowMatrix.set(0.5,0.0,0.0,0.5,0.0,0.5,0.0,0.5,0.0,0.0,0.5,0.5,0.0,0.0,0.0,1.0);shadowMatrix.multiply(shadowCamera.projectionMatrix);shadowMatrix.multiply(shadowCamera.matrixWorldInverse)}
3975_renderer.setRenderTarget(shadowMap);_renderer.clear();for(var face=0;face<faceCount;face ++){if(isPointLight){_lookTarget.copy(shadowCamera.position);_lookTarget.add(cubeDirections[face]);shadowCamera.up.copy(cubeUps[face]);shadowCamera.lookAt(_lookTarget);shadowCamera.updateMatrixWorld();var vpDimensions=cube2DViewPorts[face];_state.viewport(vpDimensions)}
3976_projScreenMatrix.multiplyMatrices(shadowCamera.projectionMatrix,shadowCamera.matrixWorldInverse);_frustum.setFromMatrix(_projScreenMatrix);renderObject(scene,camera,shadowCamera,isPointLight)}}
3977scope.needsUpdate=!1};function getDepthMaterial(object,material,isPointLight,lightPositionWorld,shadowCameraNear,shadowCameraFar){var geometry=object.geometry;var result=null;var materialVariants=_depthMaterials;var customMaterial=object.customDepthMaterial;if(isPointLight){materialVariants=_distanceMaterials;customMaterial=object.customDistanceMaterial}
3978if(!customMaterial){var useMorphing=!1;if(material.morphTargets){if(geometry&&geometry.isBufferGeometry){useMorphing=geometry.morphAttributes&&geometry.morphAttributes.position&&geometry.morphAttributes.position.length>0}else if(geometry&&geometry.isGeometry){useMorphing=geometry.morphTargets&&geometry.morphTargets.length>0}}
3979if(object.isSkinnedMesh&&material.skinning===!1){console.warn('THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:',object)}
3980var useSkinning=object.isSkinnedMesh&&material.skinning;var variantIndex=0;if(useMorphing)variantIndex|=_MorphingFlag;if(useSkinning)variantIndex|=_SkinningFlag;result=materialVariants[variantIndex]}else{result=customMaterial}
3981if(_renderer.localClippingEnabled&&material.clipShadows===!0&&material.clippingPlanes.length!==0){var keyA=result.uuid,keyB=material.uuid;var materialsForVariant=_materialCache[keyA];if(materialsForVariant===undefined){materialsForVariant={};_materialCache[keyA]=materialsForVariant}
3982var cachedMaterial=materialsForVariant[keyB];if(cachedMaterial===undefined){cachedMaterial=result.clone();materialsForVariant[keyB]=cachedMaterial}
3983result=cachedMaterial}
3984result.visible=material.visible;result.wireframe=material.wireframe;result.side=(material.shadowSide!=null)?material.shadowSide:shadowSide[material.side];result.clipShadows=material.clipShadows;result.clippingPlanes=material.clippingPlanes;result.clipIntersection=material.clipIntersection;result.wireframeLinewidth=material.wireframeLinewidth;result.linewidth=material.linewidth;if(isPointLight&&result.isMeshDistanceMaterial){result.referencePosition.copy(lightPositionWorld);result.nearDistance=shadowCameraNear;result.farDistance=shadowCameraFar}
3985return result}
3986function renderObject(object,camera,shadowCamera,isPointLight){if(object.visible===!1)return;var visible=object.layers.test(camera.layers);if(visible&&(object.isMesh||object.isLine||object.isPoints)){if(object.castShadow&&(!object.frustumCulled||_frustum.intersectsObject(object))){object.modelViewMatrix.multiplyMatrices(shadowCamera.matrixWorldInverse,object.matrixWorld);var geometry=_objects.update(object);var material=object.material;if(Array.isArray(material)){var groups=geometry.groups;for(var k=0,kl=groups.length;k<kl;k ++){var group=groups[k];var groupMaterial=material[group.materialIndex];if(groupMaterial&&groupMaterial.visible){var depthMaterial=getDepthMaterial(object,groupMaterial,isPointLight,_lightPositionWorld,shadowCamera.near,shadowCamera.far);_renderer.renderBufferDirect(shadowCamera,null,geometry,depthMaterial,object,group)}}}else if(material.visible){var depthMaterial=getDepthMaterial(object,material,isPointLight,_lightPositionWorld,shadowCamera.near,shadowCamera.far);_renderer.renderBufferDirect(shadowCamera,null,geometry,depthMaterial,object,null)}}}
3987var children=object.children;for(var i=0,l=children.length;i<l;i ++){renderObject(children[i],camera,shadowCamera,isPointLight)}}}
3988function CanvasTexture(canvas,mapping,wrapS,wrapT,magFilter,minFilter,format,type,anisotropy){Texture.call(this,canvas,mapping,wrapS,wrapT,magFilter,minFilter,format,type,anisotropy);this.needsUpdate=!0}
3989CanvasTexture.prototype=Object.create(Texture.prototype);CanvasTexture.prototype.constructor=CanvasTexture;CanvasTexture.prototype.isCanvasTexture=!0;function WebGLSpriteRenderer(renderer,gl,state,textures,capabilities){var vertexBuffer,elementBuffer;var program,attributes,uniforms;var texture;var spritePosition=new Vector3();var spriteRotation=new Quaternion();var spriteScale=new Vector3();function init(){var vertices=new Float32Array([-0.5,-0.5,0,0,0.5,-0.5,1,0,0.5,0.5,1,1,-0.5,0.5,0,1]);var faces=new Uint16Array([0,1,2,0,2,3]);vertexBuffer=gl.createBuffer();elementBuffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,vertexBuffer);gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW);gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,elementBuffer);gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,faces,gl.STATIC_DRAW);program=createProgram();attributes={position:gl.getAttribLocation(program,'position'),uv:gl.getAttribLocation(program,'uv')};uniforms={uvOffset:gl.getUniformLocation(program,'uvOffset'),uvScale:gl.getUniformLocation(program,'uvScale'),rotation:gl.getUniformLocation(program,'rotation'),center:gl.getUniformLocation(program,'center'),scale:gl.getUniformLocation(program,'scale'),color:gl.getUniformLocation(program,'color'),map:gl.getUniformLocation(program,'map'),opacity:gl.getUniformLocation(program,'opacity'),modelViewMatrix:gl.getUniformLocation(program,'modelViewMatrix'),projectionMatrix:gl.getUniformLocation(program,'projectionMatrix'),fogType:gl.getUniformLocation(program,'fogType'),fogDensity:gl.getUniformLocation(program,'fogDensity'),fogNear:gl.getUniformLocation(program,'fogNear'),fogFar:gl.getUniformLocation(program,'fogFar'),fogColor:gl.getUniformLocation(program,'fogColor'),fogDepth:gl.getUniformLocation(program,'fogDepth'),alphaTest:gl.getUniformLocation(program,'alphaTest')};var canvas=document.createElementNS('http://www.w3.org/1999/xhtml','canvas');canvas.width=8;canvas.height=8;var context=canvas.getContext('2d');context.fillStyle='white';context.fillRect(0,0,8,8);texture=new CanvasTexture(canvas)}
3990this.render=function(sprites,scene,camera){if(sprites.length===0)return;if(program===undefined){init()}
3991state.useProgram(program);state.initAttributes();state.enableAttribute(attributes.position);state.enableAttribute(attributes.uv);state.disableUnusedAttributes();state.disable(gl.CULL_FACE);state.enable(gl.BLEND);gl.bindBuffer(gl.ARRAY_BUFFER,vertexBuffer);gl.vertexAttribPointer(attributes.position,2,gl.FLOAT,!1,2*8,0);gl.vertexAttribPointer(attributes.uv,2,gl.FLOAT,!1,2*8,8);gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,elementBuffer);gl.uniformMatrix4fv(uniforms.projectionMatrix,!1,camera.projectionMatrix.elements);state.activeTexture(gl.TEXTURE0);gl.uniform1i(uniforms.map,0);var oldFogType=0;var sceneFogType=0;var fog=scene.fog;if(fog){gl.uniform3f(uniforms.fogColor,fog.color.r,fog.color.g,fog.color.b);if(fog.isFog){gl.uniform1f(uniforms.fogNear,fog.near);gl.uniform1f(uniforms.fogFar,fog.far);gl.uniform1i(uniforms.fogType,1);oldFogType=1;sceneFogType=1}else if(fog.isFogExp2){gl.uniform1f(uniforms.fogDensity,fog.density);gl.uniform1i(uniforms.fogType,2);oldFogType=2;sceneFogType=2}}else{gl.uniform1i(uniforms.fogType,0);oldFogType=0;sceneFogType=0}
3992for(var i=0,l=sprites.length;i<l;i ++){var sprite=sprites[i];sprite.modelViewMatrix.multiplyMatrices(camera.matrixWorldInverse,sprite.matrixWorld);sprite.z=-sprite.modelViewMatrix.elements[14]}
3993sprites.sort(painterSortStable);var scale=[];var center=[];for(var i=0,l=sprites.length;i<l;i ++){var sprite=sprites[i];var material=sprite.material;if(material.visible===!1)continue;sprite.onBeforeRender(renderer,scene,camera,undefined,material,undefined);gl.uniform1f(uniforms.alphaTest,material.alphaTest);gl.uniformMatrix4fv(uniforms.modelViewMatrix,!1,sprite.modelViewMatrix.elements);sprite.matrixWorld.decompose(spritePosition,spriteRotation,spriteScale);scale[0]=spriteScale.x;scale[1]=spriteScale.y;center[0]=sprite.center.x-0.5;center[1]=sprite.center.y-0.5;var fogType=0;if(scene.fog&&material.fog){fogType=sceneFogType}
3994if(oldFogType!==fogType){gl.uniform1i(uniforms.fogType,fogType);oldFogType=fogType}
3995if(material.map!==null){gl.uniform2f(uniforms.uvOffset,material.map.offset.x,material.map.offset.y);gl.uniform2f(uniforms.uvScale,material.map.repeat.x,material.map.repeat.y)}else{gl.uniform2f(uniforms.uvOffset,0,0);gl.uniform2f(uniforms.uvScale,1,1)}
3996gl.uniform1f(uniforms.opacity,material.opacity);gl.uniform3f(uniforms.color,material.color.r,material.color.g,material.color.b);gl.uniform1f(uniforms.rotation,material.rotation);gl.uniform2fv(uniforms.center,center);gl.uniform2fv(uniforms.scale,scale);state.setBlending(material.blending,material.blendEquation,material.blendSrc,material.blendDst,material.blendEquationAlpha,material.blendSrcAlpha,material.blendDstAlpha,material.premultipliedAlpha);state.buffers.depth.setTest(material.depthTest);state.buffers.depth.setMask(material.depthWrite);state.buffers.color.setMask(material.colorWrite);textures.setTexture2D(material.map||texture,0);gl.drawElements(gl.TRIANGLES,6,gl.UNSIGNED_SHORT,0);sprite.onAfterRender(renderer,scene,camera,undefined,material,undefined)}
3997state.enable(gl.CULL_FACE);state.reset()};function createProgram(){var program=gl.createProgram();var vertexShader=gl.createShader(gl.VERTEX_SHADER);var fragmentShader=gl.createShader(gl.FRAGMENT_SHADER);gl.shaderSource(vertexShader,['precision '+capabilities.precision+' float;','#define SHADER_NAME '+'SpriteMaterial','uniform mat4 modelViewMatrix;','uniform mat4 projectionMatrix;','uniform float rotation;','uniform vec2 center;','uniform vec2 scale;','uniform vec2 uvOffset;','uniform vec2 uvScale;','attribute vec2 position;','attribute vec2 uv;','varying vec2 vUV;','varying float fogDepth;','void main() {','	vUV = uvOffset + uv * uvScale;','	vec2 alignedPosition = ( position - center ) * scale;','	vec2 rotatedPosition;','	rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;','	rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;','	vec4 mvPosition;','	mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );','	mvPosition.xy += rotatedPosition;','	gl_Position = projectionMatrix * mvPosition;','	fogDepth = - mvPosition.z;','}'].join('\n'));gl.shaderSource(fragmentShader,['precision '+capabilities.precision+' float;','#define SHADER_NAME '+'SpriteMaterial','uniform vec3 color;','uniform sampler2D map;','uniform float opacity;','uniform int fogType;','uniform vec3 fogColor;','uniform float fogDensity;','uniform float fogNear;','uniform float fogFar;','uniform float alphaTest;','varying vec2 vUV;','varying float fogDepth;','void main() {','	vec4 texture = texture2D( map, vUV );','	gl_FragColor = vec4( color * texture.xyz, texture.a * opacity );','	if ( gl_FragColor.a < alphaTest ) discard;','	if ( fogType > 0 ) {','		float fogFactor = 0.0;','		if ( fogType == 1 ) {','			fogFactor = smoothstep( fogNear, fogFar, fogDepth );','		} else {','			const float LOG2 = 1.442695;','			fogFactor = exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 );','			fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );','		}','		gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );','	}','}'].join('\n'));gl.compileShader(vertexShader);gl.compileShader(fragmentShader);gl.attachShader(program,vertexShader);gl.attachShader(program,fragmentShader);gl.linkProgram(program);return program}
3998function painterSortStable(a,b){if(a.renderOrder!==b.renderOrder){return a.renderOrder-b.renderOrder}else if(a.z!==b.z){return b.z-a.z}else{return b.id-a.id}}}
3999function WebGLState(gl,extensions,utils){function ColorBuffer(){var locked=!1;var color=new Vector4();var currentColorMask=null;var currentColorClear=new Vector4(0,0,0,0);return{setMask:function(colorMask){if(currentColorMask!==colorMask&&!locked){gl.colorMask(colorMask,colorMask,colorMask,colorMask);currentColorMask=colorMask}},setLocked:function(lock){locked=lock},setClear:function(r,g,b,a,premultipliedAlpha){if(premultipliedAlpha===!0){r*=a;g*=a;b*=a}
4000color.set(r,g,b,a);if(currentColorClear.equals(color)===!1){gl.clearColor(r,g,b,a);currentColorClear.copy(color)}},reset:function(){locked=!1;currentColorMask=null;currentColorClear.set(-1,0,0,0)}}}
4001function DepthBuffer(){var locked=!1;var currentDepthMask=null;var currentDepthFunc=null;var currentDepthClear=null;return{setTest:function(depthTest){if(depthTest){enable(gl.DEPTH_TEST)}else{disable(gl.DEPTH_TEST)}},setMask:function(depthMask){if(currentDepthMask!==depthMask&&!locked){gl.depthMask(depthMask);currentDepthMask=depthMask}},setFunc:function(depthFunc){if(currentDepthFunc!==depthFunc){if(depthFunc){switch(depthFunc){case NeverDepth:gl.depthFunc(gl.NEVER);break;case AlwaysDepth:gl.depthFunc(gl.ALWAYS);break;case LessDepth:gl.depthFunc(gl.LESS);break;case LessEqualDepth:gl.depthFunc(gl.LEQUAL);break;case EqualDepth:gl.depthFunc(gl.EQUAL);break;case GreaterEqualDepth:gl.depthFunc(gl.GEQUAL);break;case GreaterDepth:gl.depthFunc(gl.GREATER);break;case NotEqualDepth:gl.depthFunc(gl.NOTEQUAL);break;default:gl.depthFunc(gl.LEQUAL)}}else{gl.depthFunc(gl.LEQUAL)}
4002currentDepthFunc=depthFunc}}
4002,setLocked:function(lock){locked=lock},setClear:function(depth){if(currentDepthClear!==depth){gl.clearDepth(depth);currentDepthClear=depth}},reset:function(){locked=!1;currentDepthMask=null;currentDepthFunc=null;currentDepthClear=null}}}
4003function StencilBuffer(){var locked=!1;var currentStencilMask=null;var currentStencilFunc=null;var currentStencilRef=null;var currentStencilFuncMask=null;var currentStencilFail=null;var currentStencilZFail=null;var currentStencilZPass=null;var currentStencilClear=null;return{setTest:function(stencilTest){if(stencilTest){enable(gl.STENCIL_TEST)}else{disable(gl.STENCIL_TEST)}},setMask:function(stencilMask){if(currentStencilMask!==stencilMask&&!locked){gl.stencilMask(stencilMask);currentStencilMask=stencilMask}},setFunc:function(stencilFunc,stencilRef,stencilMask){if(currentStencilFunc!==stencilFunc||currentStencilRef!==stencilRef||currentStencilFuncMask!==stencilMask){gl.stencilFunc(stencilFunc,stencilRef,stencilMask);currentStencilFunc=stencilFunc;currentStencilRef=stencilRef;currentStencilFuncMask=stencilMask}},setOp:function(stencilFail,stencilZFail,stencilZPass){if(currentStencilFail!==stencilFail||currentStencilZFail!==stencilZFail||currentStencilZPass!==stencilZPass){gl.stencilOp(stencilFail,stencilZFail,stencilZPass);currentStencilFail=stencilFail;currentStencilZFail=stencilZFail;currentStencilZPass=stencilZPass}},setLocked:function(lock){locked=lock},setClear:function(stencil){if(currentStencilClear!==stencil){gl.clearStencil(stencil);currentStencilClear=stencil}},reset:function(){locked=!1;currentStencilMask=null;currentStencilFunc=null;currentStencilRef=null;currentStencilFuncMask=null;currentStencilFail=null;currentStencilZFail=null;currentStencilZPass=null;currentStencilClear=null}}}
4004var colorBuffer=new ColorBuffer();var depthBuffer=new DepthBuffer();var stencilBuffer=new StencilBuffer();var maxVertexAttributes=gl.getParameter(gl.MAX_VERTEX_ATTRIBS);var newAttributes=new Uint8Array(maxVertexAttributes);var enabledAttributes=new Uint8Array(maxVertexAttributes);var attributeDivisors=new Uint8Array(maxVertexAttributes);var capabilities={};var compressedTextureFormats=null;var currentProgram=null;var currentBlending=null;var currentBlendEquation=null;var currentBlendSrc=null;var currentBlendDst=null;var currentBlendEquationAlpha=null;var currentBlendSrcAlpha=null;var currentBlendDstAlpha=null;var currentPremultipledAlpha=!1;var currentFlipSided=null;var currentCullFace=null;var currentLineWidth=null;var currentPolygonOffsetFactor=null;var currentPolygonOffsetUnits=null;var maxTextures=gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS);var lineWidthAvailable=!1;var version=0;var glVersion=gl.getParameter(gl.VERSION);if(glVersion.indexOf('WebGL')!==-1){version=parseFloat(/^WebGL\ ([0-9])/.exec(glVersion)[1]);lineWidthAvailable=(version>=1.0)}else if(glVersion.indexOf('OpenGL ES')!==-1){version=parseFloat(/^OpenGL\ ES\ ([0-9])/.exec(glVersion)[1]);lineWidthAvailable=(version>=2.0)}
4005var currentTextureSlot=null;var currentBoundTextures={};var currentScissor=new Vector4();var currentViewport=new Vector4();function createTexture(type,target,count){var data=new Uint8Array(4);var texture=gl.createTexture();gl.bindTexture(type,texture);gl.texParameteri(type,gl.TEXTURE_MIN_FILTER,gl.NEAREST);gl.texParameteri(type,gl.TEXTURE_MAG_FILTER,gl.NEAREST);for(var i=0;i<count;i ++){gl.texImage2D(target+i,0,gl.RGBA,1,1,0,gl.RGBA,gl.UNSIGNED_BYTE,data)}
4006return texture}
4007var emptyTextures={};emptyTextures[gl.TEXTURE_2D]=createTexture(gl.TEXTURE_2D,gl.TEXTURE_2D,1);emptyTextures[gl.TEXTURE_CUBE_MAP]=createTexture(gl.TEXTURE_CUBE_MAP,gl.TEXTURE_CUBE_MAP_POSITIVE_X,6);colorBuffer.setClear(0,0,0,1);depthBuffer.setClear(1);stencilBuffer.setClear(0);enable(gl.DEPTH_TEST);depthBuffer.setFunc(LessEqualDepth);setFlipSided(!1);setCullFace(CullFaceBack);enable(gl.CULL_FACE);enable(gl.BLEND);setBlending(NormalBlending);function initAttributes(){for(var i=0,l=newAttributes.length;i<l;i ++){newAttributes[i]=0}}
4008function enableAttribute(attribute){enableAttributeAndDivisor(attribute,0)}
4009function enableAttributeAndDivisor(attribute,meshPerAttribute){newAttributes[attribute]=1;if(enabledAttributes[attribute]===0){gl.enableVertexAttribArray(attribute);enabledAttributes[attribute]=1}
4010if(attributeDivisors[attribute]!==meshPerAttribute){var extension=extensions.get('ANGLE_instanced_arrays');extension.vertexAttribDivisorANGLE(attribute,meshPerAttribute);attributeDivisors[attribute]=meshPerAttribute}}
4011function disableUnusedAttributes(){for(var i=0,l=enabledAttributes.length;i!==l;++ i){if(enabledAttributes[i]!==newAttributes[i]){gl.disableVertexAttribArray(i);enabledAttributes[i]=0}}}
4012function enable(id){if(capabilities[id]!==!0){gl.enable(id);capabilities[id]=!0}}
4013function disable(id){if(capabilities[id]!==!1){gl.disable(id);capabilities[id]=!1}}
4014function getCompressedTextureFormats(){if(compressedTextureFormats===null){compressedTextureFormats=[];if(extensions.get('WEBGL_compressed_texture_pvrtc')||extensions.get('WEBGL_compressed_texture_s3tc')||extensions.get('WEBGL_compressed_texture_etc1')||extensions.get('WEBGL_compressed_texture_astc')){var formats=gl.getParameter(gl.COMPRESSED_TEXTURE_FORMATS);for(var i=0;i<formats.length;i ++){compressedTextureFormats.push(formats[i])}}}
4015return compressedTextureFormats}
4016function useProgram(program){if(currentProgram!==program){gl.useProgram(program);currentProgram=program;return!0}
4017return!1}
4018function setBlending(blending,blendEquation,blendSrc,blendDst,blendEquationAlpha,blendSrcAlpha,blendDstAlpha,premultipliedAlpha){if(blending!==NoBlending){enable(gl.BLEND)}else{disable(gl.BLEND)}
4019if(blending!==CustomBlending){if(blending!==currentBlending||premultipliedAlpha!==currentPremultipledAlpha){switch(blending){case AdditiveBlending:if(premultipliedAlpha){gl.blendEquationSeparate(gl.FUNC_ADD,gl.FUNC_ADD);gl.blendFuncSeparate(gl.ONE,gl.ONE,gl.ONE,gl.ONE)}else{gl.blendEquation(gl.FUNC_ADD);gl.blendFunc(gl.SRC_ALPHA,gl.ONE)}
4020break;case SubtractiveBlending:if(premultipliedAlpha){gl.blendEquationSeparate(gl.FUNC_ADD,gl.FUNC_ADD);gl.blendFuncSeparate(gl.ZERO,gl.ZERO,gl.ONE_MINUS_SRC_COLOR,gl.ONE_MINUS_SRC_ALPHA)}else{gl.blendEquation(gl.FUNC_ADD);gl.blendFunc(gl.ZERO,gl.ONE_MINUS_SRC_COLOR)}
4021break;case MultiplyBlending:if(premultipliedAlpha){gl.blendEquationSeparate(gl.FUNC_ADD,gl.FUNC_ADD);gl.blendFuncSeparate(gl.ZERO,gl.SRC_COLOR,gl.ZERO,gl.SRC_ALPHA)}else{gl.blendEquation(gl.FUNC_ADD);gl.blendFunc(gl.ZERO,gl.SRC_COLOR)}
4022break;default:if(premultipliedAlpha){gl.blendEquationSeparate(gl.FUNC_ADD,gl.FUNC_ADD);gl.blendFuncSeparate(gl.ONE,gl.ONE_MINUS_SRC_ALPHA,gl.ONE,gl.ONE_MINUS_SRC_ALPHA)}else{gl.blendEquationSeparate(gl.FUNC_ADD,gl.FUNC_ADD);gl.blendFuncSeparate(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA,gl.ONE,gl.ONE_MINUS_SRC_ALPHA)}}}
4023currentBlendEquation=null;currentBlendSrc=null;currentBlendDst=null;currentBlendEquationAlpha=null;currentBlendSrcAlpha=null;currentBlendDstAlpha=null}else{blendEquationAlpha=blendEquationAlpha||blendEquation;
4023blendSrcAlpha=blendSrcAlpha||blendSrc;blendDstAlpha=blendDstAlpha||blendDst;if(blendEquation!==currentBlendEquation||blendEquationAlpha!==currentBlendEquationAlpha){gl.blendEquationSeparate(utils.convert(blendEquation),utils.convert(blendEquationAlpha));currentBlendEquation=blendEquation;currentBlendEquationAlpha=blendEquationAlpha}
4024if(blendSrc!==currentBlendSrc||blendDst!==currentBlendDst||blendSrcAlpha!==currentBlendSrcAlpha||blendDstAlpha!==currentBlendDstAlpha){gl.blendFuncSeparate(utils.convert(blendSrc),utils.convert(blendDst),utils.convert(blendSrcAlpha),utils.convert(blendDstAlpha));currentBlendSrc=blendSrc;currentBlendDst=blendDst;currentBlendSrcAlpha=blendSrcAlpha;currentBlendDstAlpha=blendDstAlpha}}
4025currentBlending=blending;currentPremultipledAlpha=premultipliedAlpha}
4026function setMaterial(material,frontFaceCW){material.side===DoubleSide?disable(gl.CULL_FACE):enable(gl.CULL_FACE);var flipSided=(material.side===BackSide);if(frontFaceCW)flipSided=!flipSided;setFlipSided(flipSided);material.transparent===!0?setBlending(material.blending,material.blendEquation,material.blendSrc,material.blendDst,material.blendEquationAlpha,material.blendSrcAlpha,material.blendDstAlpha,material.premultipliedAlpha):setBlending(NoBlending);depthBuffer.setFunc(material.depthFunc);depthBuffer.setTest(material.depthTest);depthBuffer.setMask(material.depthWrite);colorBuffer.setMask(material.colorWrite);setPolygonOffset(material.polygonOffset,material.polygonOffsetFactor,material.polygonOffsetUnits)}
4027function setFlipSided(flipSided){if(currentFlipSided!==flipSided){if(flipSided){gl.frontFace(gl.CW)}else{gl.frontFace(gl.CCW)}
4028currentFlipSided=flipSided}}
4029function setCullFace(cullFace){if(cullFace!==CullFaceNone){enable(gl.CULL_FACE);if(cullFace!==currentCullFace){if(cullFace===CullFaceBack){gl.cullFace(gl.BACK)}else if(cullFace===CullFaceFront){gl.cullFace(gl.FRONT)}else{gl.cullFace(gl.FRONT_AND_BACK)}}}else{disable(gl.CULL_FACE)}
4030currentCullFace=cullFace}
4031function setLineWidth(width){if(width!==currentLineWidth){if(lineWidthAvailable)gl.lineWidth(width);currentLineWidth=width}}
4032function setPolygonOffset(polygonOffset,factor,units){if(polygonOffset){enable(gl.POLYGON_OFFSET_FILL);if(currentPolygonOffsetFactor!==factor||currentPolygonOffsetUnits!==units){gl.polygonOffset(factor,units);currentPolygonOffsetFactor=factor;currentPolygonOffsetUnits=units}}else{disable(gl.POLYGON_OFFSET_FILL)}}
4033function setScissorTest(scissorTest){if(scissorTest){enable(gl.SCISSOR_TEST)}else{disable(gl.SCISSOR_TEST)}}
4034function activeTexture(webglSlot){if(webglSlot===undefined)webglSlot=gl.TEXTURE0+maxTextures-1;if(currentTextureSlot!==webglSlot){gl.activeTexture(webglSlot);currentTextureSlot=webglSlot}}
4035function bindTexture(webglType,webglTexture){if(currentTextureSlot===null){activeTexture()}
4036var boundTexture=currentBoundTextures[currentTextureSlot];if(boundTexture===undefined){boundTexture={type:undefined,texture:undefined};currentBoundTextures[currentTextureSlot]=boundTexture}
4037if(boundTexture.type!==webglType||boundTexture.texture!==webglTexture){gl.bindTexture(webglType,webglTexture||emptyTextures[webglType]);boundTexture.type=webglType;boundTexture.texture=webglTexture}}
4038function compressedTexImage2D(){try{gl.compressedTexImage2D.apply(gl,arguments)}catch(error){console.error('THREE.WebGLState:',error)}}
4039function texImage2D(){try{gl.texImage2D.apply(gl,arguments)}catch(error){console.error('THREE.WebGLState:',error)}}
4040function scissor(scissor){if(currentScissor.equals(scissor)===!1){gl.scissor(scissor.x,scissor.y,scissor.z,scissor.w);currentScissor.copy(scissor)}}
4041function viewport(viewport){if(currentViewport.equals(viewport)===!1){gl.viewport(viewport.x,viewport.y,viewport.z,viewport.w);currentViewport.copy(viewport)}}
4042function reset(){for(var i=0;i<enabledAttributes.length;i ++){if(enabledAttributes[i]===1){gl.disableVertexAttribArray(i);enabledAttributes[i]=0}}
4043capabilities={};compressedTextureFormats=null;currentTextureSlot=null;currentBoundTextures={};currentProgram=null;currentBlending=null;currentFlipSided=null;currentCullFace=null;colorBuffer.reset();depthBuffer.reset();stencilBuffer.reset()}
4044return{buffers:{color:colorBuffer,depth:depthBuffer,stencil:stencilBuffer},initAttributes:initAttributes,enableAttribute:enableAttribute,enableAttributeAndDivisor:enableAttributeAndDivisor,disableUnusedAttributes:disableUnusedAttributes,enable:enable,disable:disable,getCompressedTextureFormats:getCompressedTextureFormats,useProgram:useProgram,setBlending:setBlending,setMaterial:setMaterial,setFlipSided:setFl
4044ipSided,setCullFace:setCullFace,setLineWidth:setLineWidth,setPolygonOffset:setPolygonOffset,setScissorTest:setScissorTest,activeTexture:activeTexture,bindTexture:bindTexture,compressedTexImage2D:compressedTexImage2D,texImage2D:texImage2D,scissor:scissor,viewport:viewport,reset:reset}}
4045function WebGLTextures(_gl,extensions,state,properties,capabilities,utils,info){var _isWebGL2=(typeof WebGL2RenderingContext!=='undefined'&&_gl instanceof WebGL2RenderingContext);var _videoTextures={};var _canvas;function clampToMaxSize(image,maxSize){if(image.width>maxSize||image.height>maxSize){if('data' in image){console.warn('THREE.WebGLRenderer: image in DataTexture is too big ('+image.width+'x'+image.height+').');return}
4046var scale=maxSize/Math.max(image.width,image.height);var canvas=document.createElementNS('http://www.w3.org/1999/xhtml','canvas');canvas.width=Math.floor(image.width*scale);canvas.height=Math.floor(image.height*scale);var context=canvas.getContext('2d');context.drawImage(image,0,0,image.width,image.height,0,0,canvas.width,canvas.height);console.warn('THREE.WebGLRenderer: image is too big ('+image.width+'x'+image.height+'). Resized to '+canvas.width+'x'+canvas.height,image);return canvas}
4047return image}
4048function isPowerOfTwo(image){return _Math.isPowerOfTwo(image.width)&&_Math.isPowerOfTwo(image.height)}
4049function makePowerOfTwo(image){if(image instanceof HTMLImageElement||image instanceof HTMLCanvasElement||image instanceof ImageBitmap){if(_canvas===undefined)_canvas=document.createElementNS('http://www.w3.org/1999/xhtml','canvas');_canvas.width=_Math.floorPowerOfTwo(image.width);_canvas.height=_Math.floorPowerOfTwo(image.height);var context=_canvas.getContext('2d');context.drawImage(image,0,0,_canvas.width,_canvas.height);console.warn('THREE.WebGLRenderer: image is not power of two ('+image.width+'x'+image.height+'). Resized to '+_canvas.width+'x'+_canvas.height,image);return _canvas}
4050return image}
4051function textureNeedsPowerOfTwo(texture){return(texture.wrapS!==ClampToEdgeWrapping||texture.wrapT!==ClampToEdgeWrapping)||(texture.minFilter!==NearestFilter&&texture.minFilter!==LinearFilter)}
4052function textureNeedsGenerateMipmaps(texture,isPowerOfTwo){return texture.generateMipmaps&&isPowerOfTwo&&texture.minFilter!==NearestFilter&&texture.minFilter!==LinearFilter}
4053function generateMipmap(target,texture,width,height){_gl.generateMipmap(target);var textureProperties=properties.get(texture);textureProperties.__maxMipLevel=Math.log(Math.max(width,height))*Math.LOG2E}
4054function filterFallback(f){if(f===NearestFilter||f===NearestMipMapNearestFilter||f===NearestMipMapLinearFilter){return _gl.NEAREST}
4055return _gl.LINEAR}
4056function onTextureDispose(event){var texture=event.target;texture.removeEventListener('dispose',onTextureDispose);deallocateTexture(texture);if(texture.isVideoTexture){delete _videoTextures[texture.id]}
4057info.memory.textures --}
4058function onRenderTargetDispose(event){var renderTarget=event.target;renderTarget.removeEventListener('dispose',onRenderTargetDispose);deallocateRenderTarget(renderTarget);info.memory.textures --}
4059function deallocateTexture(texture){var textureProperties=properties.get(texture);if(texture.image&&textureProperties.__image__webglTextureCube){_gl.deleteTexture(textureProperties.__image__webglTextureCube)}else{if(textureProperties.__webglInit===undefined)return;_gl.deleteTexture(textureProperties.__webglTexture)}
4060properties.remove(texture)}
4061function deallocateRenderTarget(renderTarget){var renderTargetProperties=properties.get(renderTarget);var textureProperties=properties.get(renderTarget.texture);if(!renderTarget)return;if(textureProperties.__webglTexture!==undefined){_gl.deleteTexture(textureProperties.__webglTexture)}
4062if(renderTarget.depthTexture){renderTarget.depthTexture.dispose()}
4063if(renderTarget.isWebGLRenderTargetCube){for(var i=0;i<6;i ++){_gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[i]);if(renderTargetProperties.__webglDepthbuffer)_gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer[i]);}}else{_gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer);if(renderTargetProperties.__webglDepthbuffer)_gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer);}
4064properties.remove(renderTarget.texture);properties.remove(renderTarget)}
4065function setTexture2D(texture,slot){var textureProperties=properties.get(texture);if(texture.isVideoTexture)updateVideoTexture(texture);if(texture.version>0&&textureProperties.__version!==texture.version){var image=texture.image;if(image===undefined){console.warn('THREE.WebGLRenderer: Texture marked for update but image is undefined',texture)}else if(image.complete===!1){console.warn('THREE.WebGLRenderer: Texture marked for update but image is incomplete',texture)}else{uploadTexture(textureProperties,texture,slot);return}}
4066state.activeTexture(_gl.TEXTURE0+slot);state.bindTexture(_gl.TEXTURE_2D,textureProperties.__webglTexture)}
4067function setTextureCube(texture,slot){var textureProperties=properties.get(texture);if(texture.image.length===6){if(texture.version>0&&textureProperties.__version!==texture.version){if(!textureProperties.__image__webglTextureCube){texture.addEventListener('dispose',onTextureDispose);textureProperties.__image__webglTextureCube=_gl.createTexture();info.memory.textures ++}
4068state.activeTexture(_gl.TEXTURE0+slot);state.bindTexture(_gl.TEXTURE_CUBE_MAP,textureProperties.__image__webglTextureCube);_gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL,texture.flipY);var isCompressed=(texture&&texture.isCompressedTexture);var isDataTexture=(texture.image[0]&&texture.image[0].isDataTexture);var cubeImage=[];for(var i=0;i<6;i ++){if(!isCompressed&&!isDataTexture){cubeImage[i]=clampToMaxSize(texture.image[i],capabilities.maxCubemapSize)}else{cubeImage[i]=isDataTexture?texture.image[i].image:texture.image[i]}}
4069var image=cubeImage[0],isPowerOfTwoImage=isPowerOfTwo(image),glFormat=utils.convert(texture.format),glType=utils.convert(texture.type);setTextureParameters(_gl.TEXTURE_CUBE_MAP,texture,isPowerOfTwoImage);for(var i=0;i<6;i ++){if(!isCompressed){if(isDataTexture){state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,glFormat,cubeImage[i].width,cubeImage[i].height,0,glFormat,glType,cubeImage[i].data)}else{state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,glFormat,glFormat,glType,cubeImage[i])}}else{var mipmap,mipmaps=cubeImage[i].mipmaps;for(var j=0,jl=mipmaps.length;j<jl;j ++){mipmap=mipmaps[j];if(texture.format!==RGBAFormat&&texture.format!==RGBFormat){if(state.getCompressedTextureFormats().indexOf(glFormat)>-1){state.compressedTexImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X+i,j,glFormat,mipmap.width,mipmap.height,0,mipmap.data)}else{console.warn('THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()')}
4069}else{state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X+i,j,glFormat,mipmap.width,mipmap.height,0,glFormat,glType,mipmap.data)}}}}
4070if(!isCompressed){textureProperties.__maxMipLevel=0}else{textureProperties.__maxMipLevel=mipmaps.length-1}
4071if(textureNeedsGenerateMipmaps(texture,isPowerOfTwoImage)){generateMipmap(_gl.TEXTURE_CUBE_MAP,texture,image.width,image.height)}
4072textureProperties.__version=texture.version;if(texture.onUpdate)texture.onUpdate(texture);}else{state.activeTexture(_gl.TEXTURE0+slot);state.bindTexture(_gl.TEXTURE_CUBE_MAP,textureProperties.__image__webglTextureCube)}}}
4073function setTextureCubeDynamic(texture,slot){state.activeTexture(_gl.TEXTURE0+slot);state.bindTexture(_gl.TEXTURE_CUBE_MAP,properties.get(texture).__webglTexture)}
4074function setTextureParameters(textureType,texture,isPowerOfTwoImage){var extension;if(isPowerOfTwoImage){_gl.texParameteri(textureType,_gl.TEXTURE_WRAP_S,utils.convert(texture.wrapS));_gl.texParameteri(textureType,_gl.TEXTURE_WRAP_T,utils.convert(texture.wrapT));_gl.texParameteri(textureType,_gl.TEXTURE_MAG_FILTER,utils.convert(texture.magFilter));_gl.texParameteri(textureType,_gl.TEXTURE_MIN_FILTER,utils.convert(texture.minFilter))}else{_gl.texParameteri(textureType,_gl.TEXTURE_WRAP_S,_gl.CLAMP_TO_EDGE);_gl.texParameteri(textureType,_gl.TEXTURE_WRAP_T,_gl.CLAMP_TO_EDGE);if(texture.wrapS!==ClampToEdgeWrapping||texture.wrapT!==ClampToEdgeWrapping){console.warn('THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.',texture)}
4075_gl.texParameteri(textureType,_gl.TEXTURE_MAG_FILTER,filterFallback(texture.magFilter));_gl.texParameteri(textureType,_gl.TEXTURE_MIN_FILTER,filterFallback(texture.minFilter));if(texture.minFilter!==NearestFilter&&texture.minFilter!==LinearFilter){console.warn('THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.',texture)}}
4076extension=extensions.get('EXT_texture_filter_anisotropic');if(extension){if(texture.type===FloatType&&extensions.get('OES_texture_float_linear')===null)return;if(texture.type===HalfFloatType&&extensions.get('OES_texture_half_float_linear')===null)return;if(texture.anisotropy>1||properties.get(texture).__currentAnisotropy){_gl.texParameterf(textureType,extension.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(texture.anisotropy,capabilities.getMaxAnisotropy()));properties.get(texture).__currentAnisotropy=texture.anisotropy}}}
4077function uploadTexture(textureProperties,texture,slot){if(textureProperties.__webglInit===undefined){textureProperties.__webglInit=!0;texture.addEventListener('dispose',onTextureDispose);textureProperties.__webglTexture=_gl.createTexture();info.memory.textures ++}
4078state.activeTexture(_gl.TEXTURE0+slot);state.bindTexture(_gl.TEXTURE_2D,textureProperties.__webglTexture);_gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL,texture.flipY);_gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,texture.premultiplyAlpha);_gl.pixelStorei(_gl.UNPACK_ALIGNMENT,texture.unpackAlignment);var image=clampToMaxSize(texture.image,capabilities.maxTextureSize);if(textureNeedsPowerOfTwo(texture)&&isPowerOfTwo(image)===!1){image=makePowerOfTwo(image)}
4079var isPowerOfTwoImage=isPowerOfTwo(image),glFormat=utils.convert(texture.format),glType=utils.convert(texture.type);setTextureParameters(_gl.TEXTURE_2D,texture,isPowerOfTwoImage);var mipmap,mipmaps=texture.mipmaps;if(texture.isDepthTexture){var internalFormat=_gl.DEPTH_COMPONENT;if(texture.type===FloatType){if(!_isWebGL2)throw new Error('Float Depth Texture only supported in WebGL2.0');internalFormat=_gl.DEPTH_COMPONENT32F}else if(_isWebGL2){internalFormat=_gl.DEPTH_COMPONENT16}
4080if(texture.format===DepthFormat&&internalFormat===_gl.DEPTH_COMPONENT){if(texture.type!==UnsignedShortType&&texture.type!==UnsignedIntType){console.warn('THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.');texture.type=UnsignedShortType;glType=utils.convert(texture.type)}}
4081if(texture.format===DepthStencilFormat){internalFormat=_gl.DEPTH_STENCIL;if(texture.type!==UnsignedInt248Type){console.warn('THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.');texture.type=UnsignedInt248Type;glType=utils.convert(texture.type)}}
4082state.texImage2D(_gl.TEXTURE_2D,0,internalFormat,image.width,image.height,0,glFormat,glType,null)}else if(texture.isDataTexture){if(mipmaps.length>0&&isPowerOfTwoImage){for(var i=0,il=mipmaps.length;i<il;i ++){mipmap=mipmaps[i];state.texImage2D(_gl.TEXTURE_2D,i,glFormat,mipmap.width,mipmap.height,0,glFormat,glType,mipmap.data)}
4083texture.generateMipmaps=!1;textureProperties.__maxMipLevel=mipmaps.length-1}else{state.texImage2D(_gl.TEXTURE_2D,0,glFormat,image.width,image.height,0,glFormat,glType,image.data);textureProperties.__maxMipLevel=0}}else if(texture.isCompressedTexture){for(var i=0,il=mipmaps.length;i<il;i ++){mipmap=mipmaps[i];if(texture.format!==RGBAFormat&&texture.format!==RGBFormat){if(state.getCompressedTextureFormats().indexOf(glFormat)>-1){state.compressedTexImage2D(_gl.TEXTURE_2D,i,glFormat,mipmap.width,mipmap.height,0,mipmap.data)}else{console.warn('THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()')}}else{state.texImage2D(_gl.TEXTURE_2D,i,glFormat,mipmap.width,mipmap.height,0,glFormat,glType,mipmap.data)}}
4084textureProperties.__maxMipLevel=mipmaps.length-1}else{if(mipmaps.length>0&&isPowerOfTwoImage){for(var i=0,il=mipmaps.length;i<il;i ++){mipmap=mipmaps[i];state.texImage2D(_gl.TEXTURE_2D,i,glFormat,glFormat,glType,mipmap)}
4085texture.generateMipmaps=!1;textureProperties.__maxMipLevel=mipmaps.length-1}else{state.texImage2D(_gl.TEXTURE_2D,0,glFormat,glFormat,glType,image);textureProperties.__maxMipLevel=0}}
4086if(textureNeedsGenerateMipmaps(texture,isPowerOfTwoImage)){generateMipmap(_gl.TEXTURE_2D,texture,image.width,image.height)}
4087textureProperties.__version=texture.version;if(texture.onUpdate)texture.onUpdate(texture);}
4088function setupFrameBufferTexture(framebuffer,renderTarget,attachment,textureTarget){var glFormat=utils.convert(renderTarget.texture.format);var glType=utils.convert(renderTarget.texture.type);state.texImage2D(textureTarget,0,glFormat,renderTarget.width,renderTarget.height,0,glFormat,glType,null);_gl.bindFramebuffer(_gl.FRAMEBUFFER,framebuffer);_gl.framebufferTexture2D(_gl.FRAMEBUFFER,attachment,textureTarget,properties.get(renderTarget.texture).__webglTexture,0);_gl.bindFramebuffer(_gl.FRAMEBUFFER,null)}
4089function setupRenderBufferStorage(renderbuffer,renderTarget){_gl.bindRenderbuffer(_gl.RENDERBUFFER,renderbuffer);if(renderTarget.depthBuffer&&!renderTarget.stencilBuffer){_gl.renderbufferStorage(_gl.RENDERBUFFER,_gl.DEPTH_COMPONENT16,renderTarget.width,renderTarget.height);_gl.framebufferRenderbuffer(_gl.FRAMEBUFFER,_gl.DEPTH_ATTACHMENT,_gl.RENDERBUFFER,renderbuffer)}else if(renderTarget.depthBuffer&&renderTarget.stencilBuffer){_gl.renderbufferStorage(_gl.RENDERBUFFER,_gl.DEPTH_STENCIL,renderTarget.width,renderTarget.height);_gl.framebufferRenderbuffer(_gl.FRAMEBUFFER,_gl.DEPTH_STENCIL_ATTACHMENT,_gl.RENDERBUFFER,renderbuffer)}else{_gl.renderbufferStorage(_gl.RENDERBUFFER,_gl.RGBA4,renderTarget.width,renderTarget.height)}
4090_gl.bindRenderbuffer(_gl.RENDERBUFFER,null)}
4091function setupDepthTexture(framebuffer,renderTarget){var isCube=(renderTarget&&renderTarget.isWebGLRenderTargetCube);if(isCube)throw new Error('Depth Texture with cube render targets is not supported');_gl.bindFramebuffer(_gl.FRAMEBUFFER,framebuffer);if(!(renderTarget.depthTexture&&renderTarget.depthTexture.isDepthTexture)){throw new Error('renderTarget.depthTexture must be an instance of THREE.DepthTexture')}
4092if(!properties.get(renderTarget.depthTexture).__webglTexture||renderTarget.depthTexture.image.width!==renderTarget.width||renderTarget.depthTexture.image.height!==renderTarget.height){renderTarget.depthTexture.image.width=renderTarget.width;renderTarget.depthTexture.image.height=renderTarget.height;renderTarget.depthTexture.needsUpdate=!0}
4093setTexture2D(renderTarget.depthTexture,0);var webglDepthTexture=properties.get(renderTarget.depthTexture).__webglTexture;if(renderTarget.depthTexture.format===DepthFormat){_gl.framebufferTexture2D(_gl.FRAMEBUFFER,_gl.DEPTH_ATTACHMENT,_gl.TEXTURE_2D,webglDepthTexture,0)}else if(renderTarget.depthTexture.format===DepthStencilFormat){_gl.framebufferTexture2D(_gl.FRAMEBUFFER,_gl.DEPTH_STENCIL_ATTACHMENT,_gl.TEXTURE_2D,webglDepthTexture,0)}else{throw new Error('Unknown depthTexture format')}}
4094function setupDepthRenderbuffer(renderTarget){var renderTargetProperties=properties.get(renderTarget);var isCube=(renderTarget.isWebGLRenderTargetCube===!0);if(renderTarget.depthTexture){if(isCube)throw new Error('target.depthTexture not supported in Cube render targets');setupDepthTexture(renderTargetProperties.__webglFramebuffer,renderTarget)}else{if(isCube){renderTargetProperties.__webglDepthbuffer=[];for(var i=0;i<6;i ++){_gl.bindFramebuffer(_gl.FRAMEBUFFER,renderTargetProperties.__webglFramebuffer[i]);renderTargetProperties.__webglDepthbuffer[i]=_gl.createRenderbuffer();setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer[i],renderTarget)}}else{_gl.bindFramebuffer(_gl.FRAMEBUFFER,renderTargetProperties.__webglFramebuffer);renderTargetProperties.__webglDepthbuffer=_gl.createRenderbuffer();setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer,renderTarget)}}
4095_gl.bindFramebuffer(_gl.FRAMEBUFFER,null)}
4096function setupRenderTarget(renderTarget){var renderTargetProperties=properties.get(renderTarget);var textureProperties=properties.get(renderTarget.texture);renderTarget.addEventListener('dispose',onRenderTargetDispose);textureProperties.__webglTexture=_gl.createTexture();info.memory.textures ++;var isCube=(renderTarget.isWebGLRenderTargetCube===!0);var isTargetPowerOfTwo=isPowerOfTwo(renderTarget);if(isCube){renderTargetProperties.__webglFramebuffer=[];for(var i=0;i<6;i ++){renderTargetProperties.__webglFramebuffer[i]=_gl.createFramebuffer()}}else{renderTargetProperties.__webglFramebuffer=_gl.createFramebuffer()}
4097if(isCube){state.bindTexture(_gl.TEXTURE_CUBE_MAP,textureProperties.__webglTexture);setTextureParameters(_gl.TEXTURE_CUBE_MAP,renderTarget.texture,isTargetPowerOfTwo);for(var i=0;i<6;i ++){setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[i],renderTarget,_gl.COLOR_ATTACHMENT0,_gl.TEXTURE_CUBE_MAP_POSITIVE_X+i)}
4098if(textureNeedsGenerateMipmaps(renderTarget.texture,isTargetPowerOfTwo)){generateMipmap(_gl.TEXTURE_CUBE_MAP,renderTarget.texture,renderTarget.width,renderTarget.height)}
4099state.bindTexture(_gl.TEXTURE_CUBE_MAP,null)}else{state.bindTexture(_gl.TEXTURE_2D,textureProperties.__webglTexture);setTextureParameters(_gl.TEXTURE_2D,renderTarget.texture,isTargetPowerOfTwo);setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer,renderTarget,_gl.COLOR_ATTACHMENT0,_gl.TEXTURE_2D);if(textureNeedsGenerateMipmaps(renderTarget.texture,isTargetPowerOfTwo)){generateMipmap(_gl.TEXTURE_2D,renderTarget.texture,renderTarget.width,renderTarget.height)}
4100state.bindTexture(_gl.TEXTURE_2D,null)}
4101if(renderTarget.depthBuffer){setupDepthRenderbuffer(renderTarget)}}
4102function updateRenderTargetMipmap(renderTarget){var texture=renderTarget.texture;var isTargetPowerOfTwo=isPowerOfTwo(renderTarget);if(textureNeedsGenerateMipmaps(texture,isTargetPowerOfTwo)){var target=renderTarget.isWebGLRenderTargetCube?_gl.TEXTURE_CUBE_MAP:_gl.TEXTURE_2D;var webglTexture=properties.get(texture).__webglTexture;state.bindTexture(target,webglTexture);generateMipmap(target,texture,renderTarget.width,renderTarget.height);state.bindTexture(target,null)}}
4103function updateVideoTexture(texture){var id=texture.id;var frame=info.render.frame;if(_videoTextures[id]!==frame){_videoTextures[id]=frame;
4103texture.update()}}
4104this.setTexture2D=setTexture2D;this.setTextureCube=setTextureCube;this.setTextureCubeDynamic=setTextureCubeDynamic;this.setupRenderTarget=setupRenderTarget;this.updateRenderTargetMipmap=updateRenderTargetMipmap}
4105function WebGLUtils(gl,extensions){function convert(p){var extension;if(p===RepeatWrapping)return gl.REPEAT;if(p===ClampToEdgeWrapping)return gl.CLAMP_TO_EDGE;if(p===MirroredRepeatWrapping)return gl.MIRRORED_REPEAT;if(p===NearestFilter)return gl.NEAREST;if(p===NearestMipMapNearestFilter)return gl.NEAREST_MIPMAP_NEAREST;if(p===NearestMipMapLinearFilter)return gl.NEAREST_MIPMAP_LINEAR;if(p===LinearFilter)return gl.LINEAR;if(p===LinearMipMapNearestFilter)return gl.LINEAR_MIPMAP_NEAREST;if(p===LinearMipMapLinearFilter)return gl.LINEAR_MIPMAP_LINEAR;if(p===UnsignedByteType)return gl.UNSIGNED_BYTE;if(p===UnsignedShort4444Type)return gl.UNSIGNED_SHORT_4_4_4_4;if(p===UnsignedShort5551Type)return gl.UNSIGNED_SHORT_5_5_5_1;if(p===UnsignedShort565Type)return gl.UNSIGNED_SHORT_5_6_5;if(p===ByteType)return gl.BYTE;if(p===ShortType)return gl.SHORT;if(p===UnsignedShortType)return gl.UNSIGNED_SHORT;if(p===IntType)return gl.INT;if(p===UnsignedIntType)return gl.UNSIGNED_INT;if(p===FloatType)return gl.FLOAT;if(p===HalfFloatType){extension=extensions.get('OES_texture_half_float');if(extension!==null)return extension.HALF_FLOAT_OES}
4106if(p===AlphaFormat)return gl.ALPHA;if(p===RGBFormat)return gl.RGB;if(p===RGBAFormat)return gl.RGBA;if(p===LuminanceFormat)return gl.LUMINANCE;if(p===LuminanceAlphaFormat)return gl.LUMINANCE_ALPHA;if(p===DepthFormat)return gl.DEPTH_COMPONENT;if(p===DepthStencilFormat)return gl.DEPTH_STENCIL;if(p===AddEquation)return gl.FUNC_ADD;if(p===SubtractEquation)return gl.FUNC_SUBTRACT;if(p===ReverseSubtractEquation)return gl.FUNC_REVERSE_SUBTRACT;if(p===ZeroFactor)return gl.ZERO;if(p===OneFactor)return gl.ONE;if(p===SrcColorFactor)return gl.SRC_COLOR;if(p===OneMinusSrcColorFactor)return gl.ONE_MINUS_SRC_COLOR;if(p===SrcAlphaFactor)return gl.SRC_ALPHA;if(p===OneMinusSrcAlphaFactor)return gl.ONE_MINUS_SRC_ALPHA;if(p===DstAlphaFactor)return gl.DST_ALPHA;if(p===OneMinusDstAlphaFactor)return gl.ONE_MINUS_DST_ALPHA;if(p===DstColorFactor)return gl.DST_COLOR;if(p===OneMinusDstColorFactor)return gl.ONE_MINUS_DST_COLOR;if(p===SrcAlphaSaturateFactor)return gl.SRC_ALPHA_SATURATE;if(p===RGB_S3TC_DXT1_Format||p===RGBA_S3TC_DXT1_Format||p===RGBA_S3TC_DXT3_Format||p===RGBA_S3TC_DXT5_Format){extension=extensions.get('WEBGL_compressed_texture_s3tc');if(extension!==null){if(p===RGB_S3TC_DXT1_Format)return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;if(p===RGBA_S3TC_DXT1_Format)return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(p===RGBA_S3TC_DXT3_Format)return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(p===RGBA_S3TC_DXT5_Format)return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT}}
4107if(p===RGB_PVRTC_4BPPV1_Format||p===RGB_PVRTC_2BPPV1_Format||p===RGBA_PVRTC_4BPPV1_Format||p===RGBA_PVRTC_2BPPV1_Format){extension=extensions.get('WEBGL_compressed_texture_pvrtc');if(extension!==null){if(p===RGB_PVRTC_4BPPV1_Format)return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(p===RGB_PVRTC_2BPPV1_Format)return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(p===RGBA_PVRTC_4BPPV1_Format)return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(p===RGBA_PVRTC_2BPPV1_Format)return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}}
4108if(p===RGB_ETC1_Format){extension=extensions.get('WEBGL_compressed_texture_etc1');if(extension!==null)return extension.COMPRESSED_RGB_ETC1_WEBGL}
4109if(p===RGBA_ASTC_4x4_Format||p===RGBA_ASTC_5x4_Format||p===RGBA_ASTC_5x5_Format||p===RGBA_ASTC_6x5_Format||p===RGBA_ASTC_6x6_Format||p===RGBA_ASTC_8x5_Format||p===RGBA_ASTC_8x6_Format||p===RGBA_ASTC_8x8_Format||p===RGBA_ASTC_10x5_Format||p===RGBA_ASTC_10x6_Format||p===RGBA_ASTC_10x8_Format||p===RGBA_ASTC_10x10_Format||p===RGBA_ASTC_12x10_Format||p===RGBA_ASTC_12x12_Format){extension=extensions.get('WEBGL_compressed_texture_astc');if(extension!==null){return p}}
4110if(p===MinEquation||p===MaxEquation){extension=extensions.get('EXT_blend_minmax');if(extension!==null){if(p===MinEquation)return extension.MIN_EXT;if(p===MaxEquation)return extension.MAX_EXT}}
4111if(p===UnsignedInt248Type){extension=extensions.get('WEBGL_depth_texture');if(extension!==null)return extension.UNSIGNED_INT_24_8_WEBGL}
4112return 0}
4113return{convert:convert}}
4114function PerspectiveCamera(fov,aspect,near,far){Camera.call(this);this.type='PerspectiveCamera';
4114this.fov=fov!==undefined?fov:50;this.zoom=1;this.near=near!==undefined?near:0.1;this.far=far!==undefined?far:2000;this.focus=10;this.aspect=aspect!==undefined?aspect:1;this.view=null;this.filmGauge=35;this.filmOffset=0;this.updateProjectionMatrix()}
4115PerspectiveCamera.prototype=Object.assign(Object.create(Camera.prototype),{constructor:PerspectiveCamera,isPerspectiveCamera:!0,copy:function(source,recursive){Camera.prototype.copy.call(this,source,recursive);this.fov=source.fov;this.zoom=source.zoom;this.near=source.near;this.far=source.far;this.focus=source.focus;this.aspect=source.aspect;this.view=source.view===null?null:Object.assign({},source.view);this.filmGauge=source.filmGauge;this.filmOffset=source.filmOffset;return this},setFocalLength:function(focalLength){var vExtentSlope=0.5*this.getFilmHeight()/focalLength;this.fov=_Math.RAD2DEG*2*Math.atan(vExtentSlope);this.updateProjectionMatrix()},getFocalLength:function(){var vExtentSlope=Math.tan(_Math.DEG2RAD*0.5*this.fov);return 0.5*this.getFilmHeight()/vExtentSlope},getEffectiveFOV:function(){return _Math.RAD2DEG*2*Math.atan(Math.tan(_Math.DEG2RAD*0.5*this.fov)/this.zoom)},getFilmWidth:function(){return this.filmGauge*Math.min(this.aspect,1)},getFilmHeight:function(){return this.filmGauge/Math.max(this.aspect,1)}
4115,setViewOffset:function(fullWidth,fullHeight,x,y,width,height){this.aspect=fullWidth/fullHeight;if(this.view===null){this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}}
4116this.view.enabled=!0;this.view.fullWidth=fullWidth;this.view.fullHeight=fullHeight;this.view.offsetX=x;this.view.offsetY=y;this.view.width=width;this.view.height=height;this.updateProjectionMatrix()},clearViewOffset:function(){if(this.view!==null){this.view.enabled=!1}
4117this.updateProjectionMatrix()},updateProjectionMatrix:function(){var near=this.near,top=near*Math.tan(_Math.DEG2RAD*0.5*this.fov)/this.zoom,height=2*top,width=this.aspect*height,left=-0.5*width,view=this.view;if(this.view!==null&&this.view.enabled){var fullWidth=view.fullWidth,fullHeight=view.fullHeight;left+=view.offsetX*width/fullWidth;top-=view.offsetY*height/fullHeight;width*=view.width/fullWidth;height*=view.height/fullHeight}
4118var skew=this.filmOffset;if(skew!==0)left+=near*skew/this.getFilmWidth();this.projectionMatrix.makePerspective(left,left+width,top,top-height,near,this.far)},toJSON:function(meta){var data=Object3D.prototype.toJSON.call(this,meta);data.object.fov=this.fov;data.object.zoom=this.zoom;data.object.near=this.near;data.object.far=this.far;data.object.focus=this.focus;data.object.aspect=this.aspect;if(this.view!==null)data.object.view=Object.assign({},this.view);data.object.filmGauge=this.filmGauge;data.object.filmOffset=this.filmOffset;return data}});function ArrayCamera(array){PerspectiveCamera.call(this);this.cameras=array||[]}
4119ArrayCamera.prototype=Object.assign(Object.create(PerspectiveCamera.prototype),{constructor:ArrayCamera,isArrayCamera:!0});function WebVRManager(renderer){var scope=this;var device=null;var frameData=null;var poseTarget=null;var standingMatrix=new Matrix4();var standingMatrixInverse=new Matrix4();if(typeof window!=='undefined'&&'VRFrameData' in window){frameData=new window.VRFrameData();window.addEventListener('vrdisplaypresentchange',onVRDisplayPresentChange,!1)}
4120var matrixWorldInverse=new Matrix4();var tempQuaternion=new Quaternion();var tempPosition=new Vector3();var cameraL=new PerspectiveCamera();cameraL.bounds=new Vector4(0.0,0.0,0.5,1.0);cameraL.layers.enable(1);var cameraR=new PerspectiveCamera();cameraR.bounds=new Vector4(0.5,0.0,0.5,1.0);cameraR.layers.enable(2);var cameraVR=new ArrayCamera([cameraL,cameraR]);cameraVR.layers.enable(1);cameraVR.layers.enable(2);function isPresenting(){return device!==null&&device.isPresenting===!0}
4121var currentSize,currentPixelRatio;function onVRDisplayPresentChange(){if(isPresenting()){var eyeParameters=device.getEyeParameters('left');var renderWidth=eyeParameters.renderWidth;var renderHeight=eyeParameters.renderHeight;currentPixelRatio=renderer.getPixelRatio();currentSize=renderer.getSize();renderer.setDrawingBufferSize(renderWidth*2,renderHeight,1);animation.start()}else if(scope.enabled){renderer.setDrawingBufferSize(currentSize.width,currentSize.height,currentPixelRatio);animation.stop()}}
4122this.enabled=!1;this.userHeight=1.6;this.getDevice=function(){return device};this.setDevice=function(value){if(value!==undefined)device=value;animation.setContext(value)};this.setPoseTarget=function(object){if(object!==undefined)poseTarget=object};this.getCamera=function(camera){if(device===null)return camera;device.depthNear=camera.near;device.depthFar=camera.far;device.getFrameData(frameData);var stageParameters=device.stageParameters;if(stageParameters){standingMatrix.fromArray(stageParameters.sittingToStandingTransform)}else{standingMatrix.makeTranslation(0,scope.userHeight,0)}
4123var pose=frameData.pose;var poseObject=poseTarget!==null?poseTarget:camera;poseObject.matrix.copy(standingMatrix);poseObject.matrix.decompose(poseObject.position,poseObject.quaternion,poseObject.scale);if(pose.orientation!==null){tempQuaternion.fromArray(pose.orientation);poseObject.quaternion.multiply(tempQuaternion)}
4124if(pose.position!==null){tempQuaternion.setFromRotationMatrix(standingMatrix);tempPosition.fromArray(pose.position);tempPosition.applyQuaternion(tempQuaternion);poseObject.position.add(tempPosition)}
4125poseObject.updateMatrixWorld();if(device.isPresenting===!1)return camera;cameraL.near=camera.near;cameraR.near=camera.near;cameraL.far=camera.far;cameraR.far=camera.far;cameraVR.matrixWorld.copy(camera.matrixWorld);cameraVR.matrixWorldInverse.copy(camera.matrixWorldInverse);
4125cameraL.matrixWorldInverse.fromArray(frameData.leftViewMatrix);cameraR.matrixWorldInverse.fromArray(frameData.rightViewMatrix);standingMatrixInverse.getInverse(standingMatrix);cameraL.matrixWorldInverse.multiply(standingMatrixInverse);cameraR.matrixWorldInverse.multiply(standingMatrixInverse);var parent=poseObject.parent;if(parent!==null){matrixWorldInverse.getInverse(parent.matrixWorld);cameraL.matrixWorldInverse.multiply(matrixWorldInverse);cameraR.matrixWorldInverse.multiply(matrixWorldInverse)}
4126cameraL.matrixWorld.getInverse(cameraL.matrixWorldInverse);cameraR.matrixWorld.getInverse(cameraR.matrixWorldInverse);cameraL.projectionMatrix.fromArray(frameData.leftProjectionMatrix);cameraR.projectionMatrix.fromArray(frameData.rightProjectionMatrix);cameraVR.projectionMatrix.copy(cameraL.projectionMatrix);var layers=device.getLayers();if(layers.length){var layer=layers[0];if(layer.leftBounds!==null&&layer.leftBounds.length===4){cameraL.bounds.fromArray(layer.leftBounds)}
4127if(layer.rightBounds!==null&&layer.rightBounds.length===4){cameraR.bounds.fromArray(layer.rightBounds)}}
4128return cameraVR};this.getStandingMatrix=function(){return standingMatrix};this.isPresenting=isPresenting;var animation=new WebGLAnimation();this.setAnimationLoop=function(callback){animation.setAnimationLoop(callback)};this.submitFrame=function(){if(isPresenting())device.submitFrame();};this.dispose=function(){if(typeof window!=='undefined'){window.removeEventListener('vrdisplaypresentchange',onVRDisplayPresentChange)}}}
4129function WebXRManager(renderer){var gl=renderer.context;var device=null;var session=null;var frameOfRef=null;var pose=null;function isPresenting(){return session!==null&&frameOfRef!==null}
4130var cameraL=new PerspectiveCamera();cameraL.layers.enable(1);cameraL.viewport=new Vector4();var cameraR=new PerspectiveCamera();cameraR.layers.enable(2);cameraR.viewport=new Vector4();var cameraVR=new ArrayCamera([cameraL,cameraR]);cameraVR.layers.enable(1);cameraVR.layers.enable(2);this.enabled=!1;this.getDevice=function(){return device};this.setDevice=function(value){if(value!==undefined)device=value;gl.setCompatibleXRDevice(value)};this.setSession=function(value,options){session=value;if(session!==null){session.addEventListener('end',function(){renderer.setFramebuffer(null);animation.stop()});session.baseLayer=new XRWebGLLayer(session,gl);session.requestFrameOfReference(options.frameOfReferenceType).then(function(value){frameOfRef=value;renderer.setFramebuffer(session.baseLayer.framebuffer);animation.setContext(session);animation.start()})}};function updateCamera(camera,parent){if(parent===null){camera.matrixWorld.copy(camera.matrix)}else{camera.matrixWorld.multiplyMatrices(parent.matrixWorld,camera.matrix)}
4131camera.matrixWorldInverse.getInverse(camera.matrixWorld)}
4132this.getCamera=function(camera){if(isPresenting()){var parent=camera.parent;var cameras=cameraVR.cameras;updateCamera(cameraVR,parent);for(var i=0;i<cameras.length;i ++){updateCamera(cameras[i],parent)}
4133camera.matrixWorld.copy(cameraVR.matrixWorld);var children=camera.children;for(var i=0,l=children.length;i<l;i ++){children[i].updateMatrixWorld(!0)}
4134return cameraVR}
4135return camera};this.isPresenting=isPresenting;var onAnimationFrameCallback=null;function onAnimationFrame(time,frame){pose=frame.getDevicePose(frameOfRef);var layer=session.baseLayer;var views=frame.views;for(var i=0;i<views.length;i ++){var view=views[i];var viewport=layer.getViewport(view);var viewMatrix=pose.getViewMatrix(view);var camera=cameraVR.cameras[i];camera.matrix.fromArray(viewMatrix).getInverse(camera.matrix);camera.projectionMatrix.fromArray(view.projectionMatrix);camera.viewport.set(viewport.x,viewport.y,viewport.width,viewport.height);if(i===0){cameraVR.matrix.copy(camera.matrix);cameraVR.projectionMatrix.copy(camera.projectionMatrix)}}
4136if(onAnimationFrameCallback)onAnimationFrameCallback();}
4137var animation=new WebGLAnimation();animation.setAnimationLoop(onAnimationFrame);this.setAnimationLoop=function(callback){onAnimationFrameCallback=callback};this.getStandingMatrix=function(){console.warn('THREE.WebXRManager: getStandingMatrix() is no longer needed.');return new THREE.Matrix4()};this.submitFrame=function(){}}
4138function WebGLRenderer(parameters){console.log('THREE.WebGLRenderer',REVISION);parameters=parameters||{};var _canvas=parameters.canvas!==undefined?parameters.canvas:document.createElementNS('http://www.w3.org/1999/xhtml','canvas'),_context=parameters.context!==undefined?parameters.context:null,_alpha=parameters.alpha!==undefined?parameters.alpha:!1,_depth=parameters.depth!==undefined?parameters.depth:!0,_stencil=parameters.stencil!==undefined?parameters.stencil:!0,_antialias=parameters.antialias!==un
4138defined?parameters.antialias:!1,_premultipliedAlpha=parameters.premultipliedAlpha!==undefined?parameters.premultipliedAlpha:!0,_preserveDrawingBuffer=parameters.preserveDrawingBuffer!==undefined?parameters.preserveDrawingBuffer:!1,_powerPreference=parameters.powerPreference!==undefined?parameters.powerPreference:'default';var currentRenderList=null;var currentRenderState=null;this.domElement=_canvas;this.context=null;this.autoClear=!0;this.autoClearColor=!0;this.autoClearDepth=!0;this.autoClearStencil=!0;this.sortObjects=!0;this.clippingPlanes=[];this.localClippingEnabled=!1;this.gammaFactor=2.0;this.gammaInput=!1;this.gammaOutput=!1;this.physicallyCorrectLights=!1;this.toneMapping=LinearToneMapping;this.toneMappingExposure=1.0;this.toneMappingWhitePoint=1.0;this.maxMorphTargets=8;this.maxMorphNormals=4;var _this=this,_isContextLost=!1,_framebuffer=null,_currentRenderTarget=null,_currentFramebuffer=null,_currentMaterialId=-1,_currentGeometryProgram='',_currentCamera=null,_currentArrayCamera=null,_currentViewport=new Vector4(),_currentScissor=new Vector4(),_currentScissorTest=null,_usedTextureUnits=0,_width=_canvas.width,_height=_canvas.height,_pixelRatio=1,_viewport=new Vector4(0,0,_width,_height),_scissor=new Vector4(0,0,_width,_height),_scissorTest=!1,_frustum=new Frustum(),_clipping=new WebGLClipping(),_clippingEnabled=!1,_localClippingEnabled=!1,_projScreenMatrix=new Matrix4(),_vector3=new Vector3();function getTargetPixelRatio(){return _currentRenderTarget===null?_pixelRatio:1}
4139var _gl;try{var contextAttributes={alpha:_alpha,depth:_depth,stencil:_stencil,antialias:_antialias,premultipliedAlpha:_premultipliedAlpha,preserveDrawingBuffer:_preserveDrawingBuffer,powerPreference:_powerPreference};_canvas.addEventListener('webglcontextlost',onContextLost,!1);_canvas.addEventListener('webglcontextrestored',onContextRestore,!1);_gl=_context||_canvas.getContext('webgl',contextAttributes)||_canvas.getContext('experimental-webgl',contextAttributes);if(_gl===null){if(_canvas.getContext('webgl')!==null){throw new Error('Error creating WebGL context with your selected attributes.')}else{throw new Error('Error creating WebGL context.')}}
4140if(_gl.getShaderPrecisionFormat===undefined){_gl.getShaderPrecisionFormat=function(){return{'rangeMin':1,'rangeMax':1,'precision':1}}}}catch(error){console.error('THREE.WebGLRenderer: '+error.message)}
4141var extensions,capabilities,state,info;var properties,textures,attributes,geometries,objects;var programCache,renderLists,renderStates;var background,morphtargets,bufferRenderer,indexedBufferRenderer;var spriteRenderer;var utils;function initGLContext(){extensions=new WebGLExtensions(_gl);extensions.get('WEBGL_depth_texture');extensions.get('OES_texture_float');extensions.get('OES_texture_float_linear');extensions.get('OES_texture_half_float');extensions.get('OES_texture_half_float_linear');extensions.get('OES_standard_derivatives');extensions.get('OES_element_index_uint');extensions.get('ANGLE_instanced_arrays');utils=new WebGLUtils(_gl,extensions);capabilities=new WebGLCapabilities(_gl,extensions,parameters);state=new WebGLState(_gl,extensions,utils);state.scissor(_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio));state.viewport(_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio));info=new WebGLInfo(_gl);properties=new WebGLProperties();textures=new WebGLTextures(_gl,extensions,state,properties,capabilities,utils,info);attributes=new WebGLAttributes(_gl);geometries=new WebGLGeometries(_gl,attributes,info);objects=new WebGLObjects(geometries,info);morphtargets=new WebGLMorphtargets(_gl);programCache=new WebGLPrograms(_this,extensions,capabilities);renderLists=new WebGLRenderLists();renderStates=new WebGLRenderStates();background=new WebGLBackground(_this,state,objects,_premultipliedAlpha);bufferRenderer=new WebGLBufferRenderer(_gl,extensions,info);indexedBufferRenderer=new WebGLIndexedBufferRenderer(_gl,extensions,info);spriteRenderer=new WebGLSpriteRenderer(_this,_gl,state,textures,capabilities);info.programs=programCache.programs;_this.context=_gl;_this.capabilities=capabilities;_this.extensions=extensions;_this.properties=properties;_this.renderLists=renderLists;_this.state=state;_this.info=info}
4142initGLContext();var vr=('xr' in navigator)?new WebXRManager(_this):new WebVRManager(_this);this.vr=vr;
4142var shadowMap=new WebGLShadowMap(_this,objects,capabilities.maxTextureSize);this.shadowMap=shadowMap;this.getContext=function(){return _gl};this.getContextAttributes=function(){return _gl.getContextAttributes()};this.forceContextLoss=function(){var extension=extensions.get('WEBGL_lose_context');if(extension)extension.loseContext();};this.forceContextRestore=function(){var extension=extensions.get('WEBGL_lose_context');if(extension)extension.restoreContext();};this.getPixelRatio=function(){return _pixelRatio};this.setPixelRatio=function(value){if(value===undefined)return;_pixelRatio=value;this.setSize(_width,_height,!1)};this.getSize=function(){return{width:_width,height:_height}};this.setSize=function(width,height,updateStyle){if(vr.isPresenting()){console.warn('THREE.WebGLRenderer: Can\'t change size while VR device is presenting.');return}
4143_width=width;_height=height;_canvas.width=width*_pixelRatio;_canvas.height=height*_pixelRatio;if(updateStyle!==!1){_canvas.style.width=width+'px';_canvas.style.height=height+'px'}
4144this.setViewport(0,0,width,height)};this.getDrawingBufferSize=function(){return{width:_width*_pixelRatio,height:_height*_pixelRatio}};this.setDrawingBufferSize=function(width,height,pixelRatio){_width=width;_height=height;_pixelRatio=pixelRatio;_canvas.width=width*pixelRatio;_canvas.height=height*pixelRatio;this.setViewport(0,0,width,height)};this.getCurrentViewport=function(){return _currentViewport};this.setViewport=function(x,y,width,height){_viewport.set(x,_height-y-height,width,height);state.viewport(_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio))};this.setScissor=function(x,y,width,height){_scissor.set(x,_height-y-height,width,height);state.scissor(_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio))};this.setScissorTest=function(boolean){state.setScissorTest(_scissorTest=boolean)};this.getClearColor=function(){return background.getClearColor()};this.setClearColor=function(){background.setClearColor.apply(background,arguments)};this.getClearAlpha=function(){return background.getClearAlpha()};this.setClearAlpha=function(){background.setClearAlpha.apply(background,arguments)};this.clear=function(color,depth,stencil){var bits=0;if(color===undefined||color)bits|=_gl.COLOR_BUFFER_BIT;if(depth===undefined||depth)bits|=_gl.DEPTH_BUFFER_BIT;if(stencil===undefined||stencil)bits|=_gl.STENCIL_BUFFER_BIT;_gl.clear(bits)};this.clearColor=function(){this.clear(!0,!1,!1)};this.clearDepth=function(){this.clear(!1,!0,!1)};this.clearStencil=function(){this.clear(!1,!1,!0)};this.clearTarget=function(renderTarget,color,depth,stencil){this.setRenderTarget(renderTarget);this.clear(color,depth,stencil)};this.dispose=function(){_canvas.removeEventListener('webglcontextlost',onContextLost,!1);_canvas.removeEventListener('webglcontextrestored',onContextRestore,!1);renderLists.dispose();renderStates.dispose();properties.dispose();objects.dispose();vr.dispose();animation.stop()};function onContextLost(event){event.preventDefault();console.log('THREE.WebGLRenderer: Context Lost.');_isContextLost=!0}
4145function onContextRestore(){console.log('THREE.WebGLRenderer: Context Restored.');_isContextLost=!1;initGLContext()}
4146function onMaterialDispose(event){var material=event.target;material.removeEventListener('dispose',onMaterialDispose);deallocateMaterial(material)}
4147function deallocateMaterial(material){releaseMaterialProgramReference(material);properties.remove(material)}
4148function releaseMaterialProgramReference(material){var programInfo=properties.get(material).program;material.program=undefined;if(programInfo!==undefined){programCache.releaseProgram(programInfo)}}
4149function renderObjectImmediate(object,program,material){object.render(function(object){_this.renderBufferImmediate(object,program,material)})}
4150this.renderBufferImmediate=function(object,program,material){state.initAttributes();var buffers=properties.get(object);if(object.hasPositions&&!buffers.position)buffers.position=_gl.createBuffer();if(object.hasNormals&&!buffers.normal)buffers.normal=_gl.createBuffer();if(object.hasUvs&&!buffers.uv)buffers.uv=_gl.createBuffer();if(object.hasColors&&!buffers.color)buffers.color=_gl.createBuffer();var programAttributes=program.getAttributes();if(object.hasPositions){_gl.bindBuffer(_gl.ARRAY_BUFFER,buffers.position);_gl.bufferData(_gl.ARRAY_BUFFER,object.positionArray,_gl.DYNAMIC_DRAW);state.enableAttribute(programAttributes.position);_gl.vertexAttribPointer(programAttributes.position,3,_gl.FLOAT,!1,0,0)}
4151if(object.hasNormals){_gl.bindBuffer(_gl.ARRAY_BUFFER,buffers.normal);if(!material.isMeshPhongMaterial&&!material.isMeshStandardMaterial&&!material.isMeshNormalMaterial&&material.flatShading===!0){for(var i=0,l=object.count*3;i<l;i+=9){var array=object.normalArray;
4151var nx=(array[i+0]+array[i+3]+array[i+6])/3;var ny=(array[i+1]+array[i+4]+array[i+7])/3;var nz=(array[i+2]+array[i+5]+array[i+8])/3;array[i+0]=nx;array[i+1]=ny;array[i+2]=nz;array[i+3]=nx;array[i+4]=ny;array[i+5]=nz;array[i+6]=nx;array[i+7]=ny;array[i+8]=nz}}
4152_gl.bufferData(_gl.ARRAY_BUFFER,object.normalArray,_gl.DYNAMIC_DRAW);state.enableAttribute(programAttributes.normal);_gl.vertexAttribPointer(programAttributes.normal,3,_gl.FLOAT,!1,0,0)}
4153if(object.hasUvs&&material.map){_gl.bindBuffer(_gl.ARRAY_BUFFER,buffers.uv);_gl.bufferData(_gl.ARRAY_BUFFER,object.uvArray,_gl.DYNAMIC_DRAW);state.enableAttribute(programAttributes.uv);_gl.vertexAttribPointer(programAttributes.uv,2,_gl.FLOAT,!1,0,0)}
4154if(object.hasColors&&material.vertexColors!==NoColors){_gl.bindBuffer(_gl.ARRAY_BUFFER,buffers.color);_gl.bufferData(_gl.ARRAY_BUFFER,object.colorArray,_gl.DYNAMIC_DRAW);state.enableAttribute(programAttributes.color);_gl.vertexAttribPointer(programAttributes.color,3,_gl.FLOAT,!1,0,0)}
4155state.disableUnusedAttributes();_gl.drawArrays(_gl.TRIANGLES,0,object.count);object.count=0};this.renderBufferDirect=function(camera,fog,geometry,material,object,group){var frontFaceCW=(object.isMesh&&object.matrixWorld.determinant()<0);state.setMaterial(material,frontFaceCW);var program=setProgram(camera,fog,material,object);var geometryProgram=geometry.id+'_'+program.id+'_'+(material.wireframe===!0);var updateBuffers=!1;if(geometryProgram!==_currentGeometryProgram){_currentGeometryProgram=geometryProgram;updateBuffers=!0}
4156if(object.morphTargetInfluences){morphtargets.update(object,geometry,material,program);updateBuffers=!0}
4157var index=geometry.index;var position=geometry.attributes.position;var rangeFactor=1;if(material.wireframe===!0){index=geometries.getWireframeAttribute(geometry);rangeFactor=2}
4158var attribute;var renderer=bufferRenderer;if(index!==null){attribute=attributes.get(index);renderer=indexedBufferRenderer;renderer.setIndex(attribute)}
4159if(updateBuffers){setupVertexAttributes(material,program,geometry);if(index!==null){_gl.bindBuffer(_gl.ELEMENT_ARRAY_BUFFER,attribute.buffer)}}
4160var dataCount=Infinity;if(index!==null){dataCount=index.count}else if(position!==undefined){dataCount=position.count}
4161var rangeStart=geometry.drawRange.start*rangeFactor;var rangeCount=geometry.drawRange.count*rangeFactor;var groupStart=group!==null?group.start*rangeFactor:0;var groupCount=group!==null?group.count*rangeFactor:Infinity;var drawStart=Math.max(rangeStart,groupStart);var drawEnd=Math.min(dataCount,rangeStart+rangeCount,groupStart+groupCount)-1;var drawCount=Math.max(0,drawEnd-drawStart+1);if(drawCount===0)return;if(object.isMesh){if(material.wireframe===!0){state.setLineWidth(material.wireframeLinewidth*getTargetPixelRatio());renderer.setMode(_gl.LINES)}else{switch(object.drawMode){case TrianglesDrawMode:renderer.setMode(_gl.TRIANGLES);break;case TriangleStripDrawMode:renderer.setMode(_gl.TRIANGLE_STRIP);break;case TriangleFanDrawMode:renderer.setMode(_gl.TRIANGLE_FAN);break}}}else if(object.isLine){var lineWidth=material.linewidth;if(lineWidth===undefined)lineWidth=1;state.setLineWidth(lineWidth*getTargetPixelRatio());if(object.isLineSegments){renderer.setMode(_gl.LINES)}else if(object.isLineLoop){renderer.setMode(_gl.LINE_LOOP)}else{renderer.setMode(_gl.LINE_STRIP)}}else if(object.isPoints){renderer.setMode(_gl.POINTS)}
4162if(geometry&&geometry.isInstancedBufferGeometry){if(geometry.maxInstancedCount>0){renderer.renderInstances(geometry,drawStart,drawCount)}}else{renderer.render(drawStart,drawCount)}};function setupVertexAttributes(material,program,geometry){if(geometry&&geometry.isInstancedBufferGeometry){if(extensions.get('ANGLE_instanced_arrays')===null){console.error('THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.');return}}
4163state.initAttributes();var geometryAttributes=geometry.attributes;var programAttributes=program.getAttributes();var materialDefaultAttributeValues=material.defaultAttributeValues;for(var name in programAttributes){var programAttribute=programAttributes[name];if(programAttribute>=0){var geometryAttribute=geometryAttributes[name];if(geometryAttribute!==undefined){var normalized=geometryAttribute.normalized;var size=geometryAttribute.itemSize;var attribute=attributes.get(geometryAttribute);if(attribute===undefined)continue;var buffer=attribute.buffer;var type=attribute.type;var bytesPerElement=attribute.bytesPerElement;if(geometryAttribute.isInterleavedBufferAttribute){var data=geometryAttribute.data;var stride=data.stride;var offset=geometryAttribute.offset;if(data&&data.isInstancedInterleavedBuffer){state.enableAttributeAndDivisor(programAttribute,data.meshPerAttribute);if(geometry.maxInstancedCount===undefined){geometry.maxInstancedCount=data.meshPerAttribute*data.count}}else{state.enableAttribute(programAttribute)}
4164_gl.bindBuffer(_gl.ARRAY_BUFFER,buffer);_gl.vertexAttribPointer(programAttribute,size,type,normalized,stride*bytesPerElement,offset*bytesPerElement)}else{if(geometryAttribute.isInstancedBufferAttribute){state.enableAttributeAndDivisor(programAttribute,geometryAttribute.meshPerAttribute);if(geometry.maxInstancedCount===undefined){geometry.maxInstancedCount=geometryAttribute.meshPerAttribute*geometryAttribute.count}}else{state.enableAttribute(programAttribute)}
4165_gl.bindBuffer(_gl.ARRAY_BUFFER,buffer);_gl.vertexAttribPointer(programAttribute,size,type,normalized,0,0)}}else if(materialDefaultAttributeValues!==undefined){var value=materialDefaultAttributeValues[name];if(value!==undefined){switch(value.length){case 2:_gl.vertexAttrib2fv(programAttribute,value);break;case 3:_gl.vertexAttrib3fv(programAttribute,value);break;case 4:_gl.vertexAttrib4fv(programAttribute,value);break;default:_gl.vertexAttrib1fv(programAttribute,value)}}}}}
4166state.disableUnusedAttributes()}
4167this.compile=function(scene,camera){currentRenderState=renderStates.get(scene,camera);
4167currentRenderState.init();scene.traverse(function(object){if(object.isLight){currentRenderState.pushLight(object);if(object.castShadow){currentRenderState.pushShadow(object)}}});currentRenderState.setupLights(camera);scene.traverse(function(object){if(object.material){if(Array.isArray(object.material)){for(var i=0;i<object.material.length;i ++){initMaterial(object.material[i],scene.fog,object)}}else{initMaterial(object.material,scene.fog,object)}}})};var onAnimationFrameCallback=null;function onAnimationFrame(){if(vr.isPresenting())return;if(onAnimationFrameCallback)onAnimationFrameCallback();}
4168var animation=new WebGLAnimation();animation.setAnimationLoop(onAnimationFrame);animation.setContext(window);this.setAnimationLoop=function(callback){onAnimationFrameCallback=callback;vr.setAnimationLoop(callback);animation.start()};this.render=function(scene,camera,renderTarget,forceClear){if(!(camera&&camera.isCamera)){console.error('THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.');return}
4169if(_isContextLost)return;_currentGeometryProgram='';_currentMaterialId=-1;_currentCamera=null;if(scene.autoUpdate===!0)scene.updateMatrixWorld();if(camera.parent===null)camera.updateMatrixWorld();if(vr.enabled){camera=vr.getCamera(camera)}
4170currentRenderState=renderStates.get(scene,camera);currentRenderState.init();scene.onBeforeRender(_this,scene,camera,renderTarget);_projScreenMatrix.multiplyMatrices(camera.projectionMatrix,camera.matrixWorldInverse);_frustum.setFromMatrix(_projScreenMatrix);_localClippingEnabled=this.localClippingEnabled;_clippingEnabled=_clipping.init(this.clippingPlanes,_localClippingEnabled,camera);currentRenderList=renderLists.get(scene,camera);currentRenderList.init();projectObject(scene,camera,_this.sortObjects);if(_this.sortObjects===!0){currentRenderList.sort()}
4171if(_clippingEnabled)_clipping.beginShadows();var shadowsArray=currentRenderState.state.shadowsArray;shadowMap.render(shadowsArray,scene,camera);currentRenderState.setupLights(camera);if(_clippingEnabled)_clipping.endShadows();if(this.info.autoReset)this.info.reset();if(renderTarget===undefined){renderTarget=null}
4172this.setRenderTarget(renderTarget);background.render(currentRenderList,scene,camera,forceClear);var opaqueObjects=currentRenderList.opaque;var transparentObjects=currentRenderList.transparent;if(scene.overrideMaterial){var overrideMaterial=scene.overrideMaterial;if(opaqueObjects.length)renderObjects(opaqueObjects,scene,camera,overrideMaterial);if(transparentObjects.length)renderObjects(transparentObjects,scene,camera,overrideMaterial);}else{if(opaqueObjects.length)renderObjects(opaqueObjects,scene,camera);if(transparentObjects.length)renderObjects(transparentObjects,scene,camera);}
4173var spritesArray=currentRenderState.state.spritesArray;spriteRenderer.render(spritesArray,scene,camera);if(renderTarget){textures.updateRenderTargetMipmap(renderTarget)}
4174state.buffers.depth.setTest(!0);state.buffers.depth.setMask(!0);state.buffers.color.setMask(!0);state.setPolygonOffset(!1);scene.onAfterRender(_this,scene,camera);if(vr.enabled){vr.submitFrame()}
4175currentRenderList=null;currentRenderState=null};function projectObject(object,camera,sortObjects){if(object.visible===!1)return;var visible=object.layers.test(camera.layers);if(visible){if(object.isLight){currentRenderState.pushLight(object);if(object.castShadow){currentRenderState.pushShadow(object)}}else if(object.isSprite){if(!object.frustumCulled||_frustum.intersectsSprite(object)){currentRenderState.pushSprite(object)}}else if(object.isImmediateRenderObject){if(sortObjects){_vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix)}
4176currentRenderList.push(object,null,object.material,_vector3.z,null)}else if(object.isMesh||object.isLine||object.isPoints){if(object.isSkinnedMesh){object.skeleton.update()}
4177if(!object.frustumCulled||_frustum.intersectsObject(object)){if(sortObjects){_vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix)}
4178var geometry=objects.update(object);var material=object.material;if(Array.isArray(material)){var groups=geometry.groups;for(var i=0,l=groups.length;i<l;i ++){var group=groups[i];var groupMaterial=material[group.materialIndex];if(groupMaterial&&groupMaterial.visible){currentRenderList.push(object,geometry,groupMaterial,_vector3.z,group)}}}else if(material.visible){currentRenderList.push(object,geometry,material,_vector3.z,null)}}}}
4179var children=object.children;for(var i=0,l=children.length;i<l;i ++){projectObject(children[i],camera,sortObjects)}}
4180function renderObjects(renderList,scene,camera,overrideMaterial){for(var i=0,l=renderList.length;i<l;i ++){var renderItem=renderList[i];var object=renderItem.object;var geometry=renderItem.geometry;var material=overrideMaterial===undefined?renderItem.material:overrideMaterial;var group=renderItem.group;if(camera.isArrayCamera){_currentArrayCamera=camera;var cameras=camera.cameras;for(var j=0,jl=cameras.length;j<jl;j ++){var camera2=cameras[j];if(object.layers.test(camera2.layers)){if('viewport' in camera2){state.viewport(_currentViewport.copy(camera2.viewport))}else{var bounds=camera2.bounds;var x=bounds.x*_width;var y=bounds.y*_height;var width=bounds.z*_width;var height=bounds.w*_height;state.viewport(_currentViewport.set(x,y,width,height).multiplyScalar(_pixelRatio))}
4181renderObject(object,scene,camera2,geometry,material,group)}}}else{_currentArrayCamera=null;renderObject(object,scene,camera,geometry,material,group)}}}
4182function renderObject(object,scene,camera,geometry,material,group){object.onBeforeRender(_this,scene,camera,geometry,material,group);currentRenderState=renderStates.get(scene,_currentArrayCamera||camera);object.modelViewMatrix.multiplyMatrices(camera.matrixWorldInverse,object.matrixWorld);object.normalMatrix.getNormalMatrix(object.modelViewMatrix);if(object.isImmediateRenderObject){var frontFaceCW=(object.isMesh&&object.matrixWorld.determinant()<0);state.setMaterial(material,frontFaceCW);var program=setProgram(camera,scene.fog,material,object);_currentGeometryProgram='';renderObjectImmediate(object,program,material)}else{_this.renderBufferDirect(camera,scene.fog,geometry,material,object,group)}
4183object.onAfterRender(_this,scene,camera,geometry,material,group);currentRenderState=renderStates.get(scene,_currentArrayCamera||camera)}
4184function initMaterial(material,fog,object){var materialProperties=properties.get(material);var lights=currentRenderState.state.lights;var shadowsArray=currentRenderState.state.shadowsArray;var parameters=programCache.getParameters(material,lights.state,shadowsArray,fog,_clipping.numPlanes,_clipping.numIntersection,object);var code=programCache.getProgramCode(material,parameters);var program=materialProperties.program;var programChange=!0;if(program===undefined){material.addEventListener('dispose',onMaterialDispose)}else if(program.code!==code){releaseMaterialProgramReference(material)}else if(materialProperties.lightsHash!==lights.state.hash){properties.update(material,'lightsHash',lights.state.hash);programChange=!1}else if(parameters.shaderID!==undefined){return}else{programChange=!1}
4185if(programChange){if(parameters.shaderID){var shader=ShaderLib[parameters.shaderID];materialProperties.shader={name:material.type,uniforms:UniformsUtils.clone(shader.uniforms),vertexShader:sh
4185ader.vertexShader,fragmentShader:shader.fragmentShader}}else{materialProperties.shader={name:material.type,uniforms:material.uniforms,vertexShader:material.vertexShader,fragmentShader:material.fragmentShader}}
4186material.onBeforeCompile(materialProperties.shader,_this);program=programCache.acquireProgram(material,materialProperties.shader,parameters,code);materialProperties.program=program;material.program=program}
4187var programAttributes=program.getAttributes();if(material.morphTargets){material.numSupportedMorphTargets=0;for(var i=0;i<_this.maxMorphTargets;i ++){if(programAttributes['morphTarget'+i]>=0){material.numSupportedMorphTargets ++}}}
4188if(material.morphNormals){material.numSupportedMorphNormals=0;for(var i=0;i<_this.maxMorphNormals;i ++){if(programAttributes['morphNormal'+i]>=0){material.numSupportedMorphNormals ++}}}
4189var uniforms=materialProperties.shader.uniforms;if(!material.isShaderMaterial&&!material.isRawShaderMaterial||material.clipping===!0){materialProperties.numClippingPlanes=_clipping.numPlanes;materialProperties.numIntersection=_clipping.numIntersection;uniforms.clippingPlanes=_clipping.uniform}
4190materialProperties.fog=fog;materialProperties.lightsHash=lights.state.hash;if(material.lights){uniforms.ambientLightColor.value=lights.state.ambient;uniforms.directionalLights.value=lights.state.directional;uniforms.spotLights.value=lights.state.spot;uniforms.rectAreaLights.value=lights.state.rectArea;uniforms.pointLights.value=lights.state.point;uniforms.hemisphereLights.value=lights.state.hemi;uniforms.directionalShadowMap.value=lights.state.directionalShadowMap;uniforms.directionalShadowMatrix.value=lights.state.directionalShadowMatrix;uniforms.spotShadowMap.value=lights.state.spotShadowMap;uniforms.spotShadowMatrix.value=lights.state.spotShadowMatrix;uniforms.pointShadowMap.value=lights.state.pointShadowMap;uniforms.pointShadowMatrix.value=lights.state.pointShadowMatrix}
4191var progUniforms=materialProperties.program.getUniforms(),uniformsList=WebGLUniforms.seqWithValue(progUniforms.seq,uniforms);materialProperties.uniformsList=uniformsList}
4192function setProgram(camera,fog,material,object){_usedTextureUnits=0;var materialProperties=properties.get(material);var lights=currentRenderState.state.lights;if(_clippingEnabled){if(_localClippingEnabled||camera!==_currentCamera){var useCache=camera===_currentCamera&&material.id===_currentMaterialId;_clipping.setState(material.clippingPlanes,material.clipIntersection,material.clipSh
4192adows,camera,materialProperties,useCache)}}
4193if(material.needsUpdate===!1){if(materialProperties.program===undefined){material.needsUpdate=!0}else if(material.fog&&materialProperties.fog!==fog){material.needsUpdate=!0}else if(material.lights&&materialProperties.lightsHash!==lights.state.hash){material.needsUpdate=!0}else if(materialProperties.numClippingPlanes!==undefined&&(materialProperties.numClippingPlanes!==_clipping.numPlanes||materialProperties.numIntersection!==_clipping.numIntersection)){material.needsUpdate=!0}}
4194if(material.needsUpdate){initMaterial(material,fog,object);material.needsUpdate=!1}
4195var refreshProgram=!1;var refreshMaterial=!1;var refreshLights=!1;var program=materialProperties.program,p_uniforms=program.getUniforms(),m_uniforms=materialProperties.shader.uniforms;if(state.useProgram(program.program)){refreshProgram=!0;refreshMaterial=!0;refreshLights=!0}
4196if(material.id!==_currentMaterialId){_currentMaterialId=material.id;refreshMaterial=!0}
4197if(refreshProgram||camera!==_currentCamera){p_uniforms.setValue(_gl,'projectionMatrix',camera.projectionMatrix);if(capabilities.logarithmicDepthBuffer){p_uniforms.setValue(_gl,'logDepthBufFC',2.0/(Math.log(camera.far+1.0)/Math.LN2))}
4198if(_currentCamera!==(_currentArrayCamera||camera)){_currentCamera=(_currentArrayCamera||camera);refreshMaterial=!0;refreshLights=!0}
4199if(material.isShaderMaterial||material.isMeshPhongMaterial||material.isMeshStandardMaterial||material.envMap){var uCamPos=p_uniforms.map.cameraPosition;if(uCamPos!==undefined){uCamPos.setValue(_gl,_vector3.setFromMatrixPosition(camera.matrixWorld))}}
4200if(material.isMeshPhongMaterial||material.isMeshLambertMaterial||material.isMeshBasicMaterial||material.isMeshStandardMaterial||material.isShaderMaterial||material.skinning){p_uniforms.setValue(_gl,'viewMatrix',camera.matrixWorldInverse)}}
4201if(material.skinning){p_uniforms.setOptional(_gl,object,'bindMatrix');p_uniforms.setOptional(_gl,object,'bindMatrixInverse');var skeleton=object.skeleton;if(skeleton){var bones=skeleton.bones;if(capabilities.floatVertexTextures){if(skeleton.boneTexture===undefined){var size=Math.sqrt(bones.length*4);size=_Math.ceilPowerOfTwo(size);size=Math.max(size,4);var boneMatrices=new Float32Array(size*size*4);boneMatrices.set(skeleton.boneMatrices);var boneTexture=new DataTexture(boneMatrices,size,size,RGBAFormat,FloatType);boneTexture.needsUpdate=!0;skeleton.boneMatrices=boneMatrices;skeleton.boneTexture=boneTexture;skeleton.boneTextureSize=size}
4202p_uniforms.setValue(_gl,'boneTexture',skeleton.boneTexture);p_uniforms.setValue(_gl,'boneTextureSize',skeleton.boneTextureSize)}else{p_uniforms.setOptional(_gl,skeleton,'boneMatrices')}}}
4203if(refreshMaterial){p_uniforms.setValue(_gl,'toneMappingExposure',_this.toneMappingExposure);p_uniforms.setValue(_gl,'toneMappingWhitePoint',_this.toneMappingWhitePoint);if(material.lights){markUniformsLightsNeedsUpdate(m_uniforms,refreshLights)}
4204if(fog&&material.fog){refreshUniformsFog(m_uniforms,fog)}
4205if(material.isMeshBasicMaterial){refreshUniformsCommon(m_uniforms,material)}else if(material.isMeshLambertMaterial){refreshUniformsCommon(m_uniforms,material);refreshUniformsLambert(m_uniforms,material)}else if(material.isMeshPhongMaterial){refreshUniformsCommon(m_uniforms,material);if(material.isMeshToonMaterial){refreshUniformsToon(m_uniforms,material)}else{refreshUniformsPhong(m_uniforms,material)}}else if(material.isMeshStandardMaterial){refreshUniformsCommon(m_uniforms,material);if(material.isMeshPhysicalMaterial){refreshUniformsPhysical(m_uniforms,material)}else{refreshUniformsStandard(m_uniforms,material)}}else if(material.isMeshDepthMaterial){refreshUniformsCommon(m_uniforms,material);refreshUniformsDepth(m_uniforms,material)}else if(material.isMeshDistanceMaterial){refreshUniformsCommon(m_uniforms,material);refreshUniformsDistance(m_uniforms,material)}else if(material.isMeshNormalMaterial){refreshUniformsCommon(m_uniforms,material);refreshUniformsNormal(m_uniforms,material)}else if(material.isLineBasicMaterial){refreshUniformsLine(m_uniforms,material);if(material.isLineDashedMaterial){refreshUniformsDash(m_uniforms,material)}}else if(material.isPointsMaterial){refreshUniformsPoints(m_uniforms,material)}else if(material.isShadowMaterial){m_uniforms.color.value=material.color;m_uniforms.opacity.value=material.opacity}
4206if(m_uniforms.ltc_1!==undefined)m_uniforms.ltc_1.value=UniformsLib.LTC_1;if(m_uniforms.ltc_2!==undefined)m_uniforms.ltc_2.value=UniformsLib.LTC_2;WebGLUniforms.upload(_gl,materialProperties.uniformsList,m_uniforms,_this)}
4207if(material.isShaderMaterial&&material.uniformsNeedUpdate===!0){WebGLUniforms.upload(_gl,materialProperties.uniformsList,m_uniforms,_this);material.uniformsNeedUpdate=!1}
4208p_uniforms.setValue(_gl,'modelViewMatrix',object.modelViewMatrix);p_uniforms.setValue(_gl,'normalMatrix',object.normalMatrix);p_uniforms.setValue(_gl,'modelMatrix',object.matrixWorld);return program}
4209function refreshUniformsCommon(uniforms,material){uniforms.opacity.value=material.opacity;if(material.color){uniforms.diffuse.value=material.color}
4210if(material.emissive){uniforms.emissive.value.copy(material.emissive).multiplyScalar(material.emissiveIntensity)}
4211if(material.map){uniforms.map.value=material.map}
4212if(material.alphaMap){uniforms.alphaMap.value=material.alphaMap}
4213if(material.specularMap){uniforms.specularMap.value=material.specularMap}
4214if(material.envMap){uniforms.envMap.value=material.envMap;uniforms.flipEnvMap.value=(!(material.envMap&&material.envMap.isCubeTexture))?1:-1;uniforms.reflectivity.value=material.reflectivity;uniforms.refractionRatio.value=material.refractionRatio;uniforms.maxMipLevel.value=properties.get(material.envMap).__maxMipLevel}
4215if(material.lightMap){uniforms.lightMap.value=material.lightMap;uniforms.lightMapIntensity.value=material.lightMapIntensity}
4216if(material.aoMap){uniforms.aoMap.value=material.aoMap;uniforms.aoMapIntensity.value=material.aoMapIntensity}
4217var uvScaleMap;if(material.map){uvScaleMap=material.map}else if(material.specularMap){uvScaleMap=material.specularMap}else if(material.displacementMap){uvScaleMap=material.displacementMap}else if(material.normalMap){uvScaleMap=material.normalMap}else if(material.bumpMap){uvScaleMap=material.bumpMap}else if(material.roughnessMap){uvScaleMap=material.roughnessMap}else if(material.metalnessMap){uvScaleMap=material.metalnessMap}else if(material.alphaMap){uvScaleMap=material.alphaMap}else if(material.emissiveMap){uvScaleMap=material.emissiveMap}
4218if(uvScaleMap!==undefined){if(uvScaleMap.isWebGLRenderTarget){uvScaleMap=uvScaleMap.texture}
4219if(uvScaleMap.matrixAutoUpdate===!0){uvScaleMap.updateMatrix()}
4220uniforms.uvTransform.value.copy(uvScaleMap.matrix)}}
4221function refreshUniformsLine(uniforms,material){uniforms.diffuse.value=material.color;uniforms.opacity.value=material.opacity}
4222function refreshUniformsDash(uniforms,material){uniforms.dashSize.value=material.dashSize;
4222uniforms.totalSize.value=material.dashSize+material.gapSize;uniforms.scale.value=material.scale}
4223function refreshUniformsPoints(uniforms,material){uniforms.diffuse.value=material.color;uniforms.opacity.value=material.opacity;uniforms.size.value=material.size*_pixelRatio;uniforms.scale.value=_height*0.5;uniforms.map.value=material.map;if(material.map!==null){if(material.map.matrixAutoUpdate===!0){material.map.updateMatrix()}
4224uniforms.uvTransform.value.copy(material.map.matrix)}}
4225function refreshUniformsFog(uniforms,fog){uniforms.fogColor.value=fog.color;if(fog.isFog){uniforms.fogNear.value=fog.near;uniforms.fogFar.value=fog.far}else if(fog.isFogExp2){uniforms.fogDensity.value=fog.density}}
4226function refreshUniformsLambert(uniforms,material){if(material.emissiveMap){uniforms.emissiveMap.value=material.emissiveMap}}
4227function refreshUniformsPhong(uniforms,material){uniforms.specular.value=material.specular;uniforms.shininess.value=Math.max(material.shininess,1e-4);if(material.emissiveMap){uniforms.emissiveMap.value=material.emissiveMap}
4228if(material.bumpMap){uniforms.bumpMap.value=material.bumpMap;uniforms.bumpScale.value=material.bumpScale;if(material.side===BackSide)uniforms.bumpScale.value*=-1}
4229if(material.normalMap){uniforms.normalMap.value=material.normalMap;uniforms.normalScale.value.copy(material.normalScale);if(material.side===BackSide)uniforms.normalScale.value.negate();}
4230if(material.displacementMap){uniforms.displacementMap.value=material.displacementMap;uniforms.displacementScale.value=material.displacementScale;uniforms.displacementBias.value=material.displacementBias}}
4231function refreshUniformsToon(uniforms,material){refreshUniformsPhong(uniforms,material);if(material.gradientMap){uniforms.gradientMap.value=material.gradientMap}}
4232function refreshUniformsStandard(uniforms,material){uniforms.roughness.value=material.roughness;uniforms.metalness.value=material.metalness;if(material.roughnessMap){uniforms.roughnessMap.value=material.roughnessMap}
4233if(material.metalnessMap){uniforms.metalnessMap.value=material.metalnessMap}
4234if(material.emissiveMap){uniforms.emissiveMap.value=material.emissiveMap}
4235if(material.bumpMap){uniforms.bumpMap.value=material.bumpMap;uniforms.bumpScale.value=material.bumpScale;if(material.side===BackSide)uniforms.bumpScale.value*=-1}
4236if(material.normalMap){uniforms.normalMap.value=material.normalMap;uniforms.normalScale.value.copy(material.normalScale);if(material.side===BackSide)uniforms.normalScale.value.negate();}
4237if(material.displacementMap){uniforms.displacementMap.value=material.displacementMap;uniforms.displacementScale.value=material.displacementScale;uniforms.displacementBias.value=material.displacementBias}
4238if(material.envMap){uniforms.envMapIntensity.value=material.envMapIntensity}}
4239function refreshUniformsPhysical(uniforms,material){uniforms.clearCoat.value=material.clearCoat;uniforms.clearCoatRoughness.value=material.clearCoatRoughness;refreshUniformsStandard(uniforms,material)}
4240function refreshUniformsDepth(uniforms,material){if(material.displacementMap){uniforms.displacementMap.value=material.displacementMap;uniforms.displacementScale.value=material.displacementScale;uniforms.displacementBias.value=material.displacementBias}}
4241function refreshUniformsDistance(uniforms,material){if(material.displacementMap){uniforms.displacementMap.value=material.displacementMap;uniforms.displacementScale.value=material.displacementScale;uniforms.displacementBias.value=material.displacementBias}
4242uniforms.referencePosition.value.copy(material.referencePosition);uniforms.nearDistance.value=material.nearDistance;uniforms.farDistance.value=material.farDistance}
4243function refreshUniformsNormal(uniforms,material){if(material.bumpMap){uniforms.bumpMap.value=material.bumpMap;uniforms.bumpScale.value=material.bumpScale;if(material.side===BackSide)uniforms.bumpScale.value*=-1}
4244if(material.normalMap){uniforms.normalMap.value=material.normalMap;uniforms.normalScale.value.copy(material.normalScale);if(material.side===BackSide)uniforms.normalScale.value.negate();}
4245if(material.displacementMap){uniforms.displacementMap.value=material.displacementMap;uniforms.displacementScale.value=material.displacementScale;uniforms.displacementBias.value=material.displacementBias}}
4246function markUniformsLightsNeedsUpdate(uniforms,value){uniforms.ambientLightColor.needsUpdate=value;uniforms.directionalLights.needsUpdate=value;uniforms.pointLights.needsUpdate=value;uniforms.spotLights.needsUpdate=value;uniforms.rectAreaLights.needsUpdate=value;uniforms.hemisphereLights.needsUpdate=value}
4247function allocTextureUnit(){var textureUnit=_usedTextureUnits;if(textureUnit>=capabilities.maxTextures){console.warn('THREE.WebGLRenderer: Trying to use '+textureUnit+' texture units while this GPU supports only '+capabilities.maxTextures)}
4248_usedTextureUnits+=1;return textureUnit}
4249this.allocTextureUnit=allocTextureUnit;this.setTexture2D=(function(){var warned=!1;return function setTexture2D(texture,slot){if(texture&&texture.isWebGLRenderTarget){if(!warned){console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead.");warned=!0}
4250texture=texture.texture}
4251textures.setTexture2D(texture,slot)}}());this.setTexture=(function(){var warned=!1;return function setTexture(texture,slot){if(!warned){console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead.");warned=!0}
4252textures.setTexture2D(texture,slot)}}());this.setTextureCube=(function(){var warned=!1;return function setTextureCube(texture,slot){if(texture&&texture.isWebGLRenderTargetCube){if(!warned){console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead.");warned=!0}
4253texture=texture.texture}
4254if((texture&&texture.isCubeTexture)||(Array.isArray(texture.image)&&texture.image.length===6)){textures.setTextureCube(texture,slot)}else{textures.setTextureCubeDynamic(texture,slot)}}}());this.setFramebuffer=function(value){_framebuffer=value};this.getRenderTarget=function(){return _currentRenderTarget};this.setRenderTarget=function(renderTarget){_currentRenderTarget=renderTarget;if(renderTarget&&properties.get(renderTarget).__webglFramebuffer===undefined){textures.setupRenderTarget(renderTarget)}
4255var framebuffer=_framebuffer;var isCube=!1;if(renderTarget){var __webglFramebuffer=properties.get(renderTarget).__webglFramebuffer;if(renderTarget.isWebGLRenderTargetCube){framebuffer=__webglFramebuffer[renderTarget.activeCubeFace];isCube=!0}else{framebuffer=__webglFramebuffer}
4256_currentViewport.copy(renderTarget.viewport);_currentScissor.copy(renderTarget.scissor);_currentScissorTest=renderTarget.scissorTest}else{_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio);_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio);_currentScissorTest=_scissorTest}
4257if(_currentFramebuffer!==framebuffer){_gl.bindFramebuffer(_gl.FRAMEBUFFER,framebuffer);_currentFramebuffer=framebuffer}
4258state.viewport(_currentViewport);state.scissor(_currentScissor);state.setScissorTest(_currentScissorTest);if(isCube){var textureProperties=properties.get(renderTarget.texture);_gl.framebufferTexture2D(_gl.FRAMEBUFFER,_gl.COLOR_ATTACHMENT0,_gl.TEXTURE_CUBE_MAP_POSITIVE_X+renderTarget.activeCubeFace,textureProperties.__webglTexture,renderTarget.activeMipMapLevel)}};this.readRenderTargetPixels=function(renderTarget,x,y,width,height,buffer){if(!(renderTarget&&renderTarget.isWebGLRenderTarget)){console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.');return}
4259var framebuffer=properties.get(renderTarget).__webglFramebuffer;if(framebuffer){var restore=!1;if(framebuffer!==_currentFramebuffer){_gl.bindFramebuffer(_gl.FRAMEBUFFER,framebuffer);restore=!0}
4260try{var texture=renderTarget.texture;var textureFormat=texture.format;var textureType=texture.type;if(textureFormat!==RGBAFormat&&utils.convert(textureFormat)!==_gl.getParameter(_gl.IMPLEMENTATION_COLOR_READ_FORMAT)){console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.');return}
4261if(textureType!==UnsignedByteType&&utils.convert(textureType)!==_gl.getParameter(_gl.IMPLEMENTATION_COLOR_READ_TYPE)&&!(textureType===FloatType&&(extensions.get('OES_texture_float')||extensions.get('WEBGL_color_buffer_float')))&&!(textureType===HalfFloatType&&extensions.get('EXT_color_buffer_half_float'))){console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.');return}
4262if(_gl.checkFramebufferStatus(_gl.FRAMEBUFFER)===_gl.FRAMEBUFFER_COMPLETE){if((x>=0&&x<=(renderTarget.width-width))&&(y>=0&&y<=(renderTarget.height-height))){_gl.readPixels(x,y,width,height,utils.convert(textureFormat),utils.convert(textureType),buffer)}}else{console.error('THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.')}}finally{if(restore){_gl.bindFramebuffer(_gl.FRAMEBUFFER,_currentFramebuffer)}}}};this.copyFramebufferToTexture=function(position,texture,level){var width=texture.image.width;var height=texture.image.height;var glFormat=utils.convert(texture.format);this.setTexture2D(texture,0);_gl.copyTexImage2D(_gl.TEXTURE_2D,level||0,glFormat,position.x,position.y,width,height,0)};this.copyTextureToTexture=function(position,srcTexture,dstTexture,level){var width=srcTexture.image.width;var height=srcTexture.image.height;var glFormat=utils.convert(dstTexture.format);var glType=utils.convert(dstTexture.type);this.setTexture2D(dstTexture,0);if(srcTexture.isDataTexture){_gl.texSubImage2D(_gl.TEXTURE_2D,level||0,position.x,position.y,width,height,glFormat,glType,srcTexture.image.data)}else{_gl.texSubImage2D(_gl.TEXTURE_2D,level||0,position.x,position.y,glFormat,glType,srcTexture.image)}}}
4263function FogExp2(color,density){this.name='';this.color=new Color(color);this.density=(density!==undefined)?density:0.00025}
4264FogExp2.prototype.isFogExp2=!0;FogExp2.prototype.clone=function(){return new FogExp2(this.color,this.density)};FogExp2.prototype.toJSON=function(){return{type:'FogExp2',color:this.color.getHex(),density:this.density}};function Fog(color,near,far){this.name='';this.color=new Color(color);this.near=(near!==undefined)?near:1;this.far=(far!==undefined)?far:1000}
4265Fog.prototype.isFog=!0;Fog.prototype.clone=function(){return new Fog(this.color,this.near,this.far)};Fog.prototype.toJSON=function(){return{type:'Fog',color:this.color.getHex(),near:this.near,far:this.far}};function Scene(){Object3D.call(this);this.type='Scene';this.background=null;this.fog=null;this.overrideMaterial=null;this.autoUpdate=!0}
4266Scene.prototype=Object.assign(Object.create(Object3D.prototype),{constructor:Scene,copy:function(source,recursive){Object3D.prototype.copy.call(this,source,recursive);if(source.background!==null)this.background=source.background.clone();if(source.fog!==null)this.fog=source.fog.clone();if(source.overrideMaterial!==null)this.overrideMaterial=source.overrideMaterial.clone();this.autoUpdate=source.autoUpdate;this.matrixAutoUpdate=source.matrixAutoUpdate;return this},toJSON:function(meta){var data=Object3D.prototype.toJSON.call(this,meta);if(this.background!==null)data.object.background=this.background.toJSON(meta);if(this.fog!==null)data.object.fog=this.fog.toJSON();return data}});function SpriteMaterial(parameters){Material.call(this);this.type='SpriteMaterial';this.color=new Color(0xffffff);this.map=null;this.rotation=0;this.fog=!1;this.lights=!1;this.setValues(parameters)}
4267SpriteMaterial.prototype=Object.create(Material.prototype);SpriteMaterial.prototype.constructor=SpriteMaterial;SpriteMaterial.prototype.isSpriteMaterial=!0;SpriteMaterial.prototype.copy=function(source){Material.prototype.copy.call(this,source);this.color.copy(source.color);this.map=source.map;this.rotation=source.rotation;return this};function Sprite(material){Object3D.call(this);this.type='Sprite';this.material=(material!==undefined)?material:new SpriteMaterial();this.center=new Vector2(0.5,0.5)}
4268Sprite.prototype=Object.assign(Object.create(Object3D.prototype),{constructor:Sprite,isSprite:!0,raycast:(function(){var intersectPoint=new Vector3();var worldPosition=new Vector3();var worldScale=new Vector3();return function raycast(raycaster,intersects){worldPosition.setFromMatrixPosition(this.matrixWorld);raycaster.ray.closestPointToPoint(worldPosition,intersectPoint);worldScale.setFromMatrixScale(this.matrixWorld);var guessSizeSq=worldScale.x*worldScale.y/4;if(worldPosition.distanceToSquared(intersectPoint)>guessSizeSq)return;var distance=raycaster.ray.origin.distanceTo(intersectPoint);if(distance<raycaster.near||distance>raycaster.far)return;intersects.push({distance:distance,point:intersectPoint.clone(),face:null,object:this})}}()),clone:function(){return new this.constructor(this.material).copy(this)},copy:function(source){Object3D.prototype.copy.call(this,source);if(source.center!==undefined)this.center.copy(source.center);return this}});function LOD(){Object3D.call(this);this.type='LOD';Object.defineProperties(this,{levels:{enumerable:!0,value:[]}})}
4269LOD.prototype=Object.assign(Object.create(Object3D.prototype),{constructor:LOD,copy:function(source){Object3D.prototype.copy.call(this,source,!1);var levels=source.levels;for(var i=0,l=levels.length;i<l;i ++){var level=levels[i];this.addLevel(level.object.clone(),level.distance)}
4270return this},addLevel:function(object,distance){if(distance===undefined)distance=0;distance=Math.abs(distance);var levels=this.levels;for(var l=0;l<levels.length;l ++){if(distance<levels[l].distance){break}}
4271levels.splice(l,0,{distance:distance,object:object});this.add(object)},getObjectForDistance:function(distance){var levels=this.levels;for(var i=1,l=levels.length;i<l;
4271i ++){if(distance<levels[i].distance){break}}
4272return levels[i-1].object},raycast:(function(){var matrixPosition=new Vector3();return function raycast(raycaster,intersects){matrixPosition.setFromMatrixPosition(this.matrixWorld);var distance=raycaster.ray.origin.distanceTo(matrixPosition);this.getObjectForDistance(distance).raycast(raycaster,intersects)}}()),update:function(){var v1=new Vector3();var v2=new Vector3();return function update(camera){var levels=this.levels;if(levels.length>1){v1.setFromMatrixPosition(camera.matrixWorld);v2.setFromMatrixPosition(this.matrixWorld);var distance=v1.distanceTo(v2);levels[0].object.visible=!0;for(var i=1,l=levels.length;i<l;i ++){if(distance>=levels[i].distance){levels[i-1].object.visible=!1;levels[i].object.visible=!0}else{break}}
4273for(;i<l;i ++){levels[i].object.visible=!1}}}}(),toJSON:function(meta){var data=Object3D.prototype.toJSON.call(this,meta);data.object.levels=[];var levels=this.levels;for(var i=0,l=levels.length;i<l;i ++){var level=levels[i];data.object.levels.push({object:level.object.uuid,distance:level.distance})}
4274return data}});function Skeleton(bones,boneInverses){bones=bones||[];this.bones=bones.slice(0);this.boneMatrices=new Float32Array(this.bones.length*16);if(boneInverses===undefined){this.calculateInverses()}else{if(this.bones.length===boneInverses.length){this.boneInverses=boneInverses.slice(0)}else{console.warn('THREE.Skeleton boneInverses is the wrong length.');this.boneInverses=[];for(var i=0,il=this.bones.length;i<il;i ++){this.boneInverses.push(new Matrix4())}}}}
4275Object.assign(Skeleton.prototype,{calculateInverses:function(){this.boneInverses=[];for(var i=0,il=this.bones.length;i<il;i ++){var inverse=new Matrix4();if(this.bones[i]){inverse.getInverse(this.bones[i].matrixWorld)}
4276this.boneInverses.push(inverse)}},pose:function(){var bone,i,il;for(i=0,il=this.bones.length;i<il;i ++){bone=this.bones[i];if(bone){bone.matrixWorld.getInverse(this.boneInverses[i])}}
4277for(i=0,il=this.bones.length;i<il;i ++){bone=this.bones[i];if(bone){if(bone.parent&&bone.parent.isBone){bone.matrix.getInverse(bone.parent.matrixWorld);bone.matrix.multiply(bone.matrixWorld)}else{bone.matrix.copy(bone.matrixWorld)}
4278bone.matrix.decompose(bone.position,bone.quaternion,bone.scale)}}},update:(function(){var offsetMatrix=new Matrix4();var identityMatrix=new Matrix4();return function update(){var bones=this.bones;var boneInverses=this.boneInverses;var boneMatrices=this.boneMatrices;var boneTexture=this.boneTexture;for(var i=0,il=bones.length;i<il;i ++){var matrix=bones[i]?bones[i].matrixWorld:identityMatrix;offsetMatrix.multiplyMatrices(matrix,boneInverses[i]);offsetMatrix.toArray(boneMatrices,i*16)}
4279if(boneTexture!==undefined){boneTexture.needsUpdate=!0}}})(),clone:function(){return new Skeleton(this.bones,this.boneInverses)},getBoneByName:function(name){for(var i=0,il=this.bones.length;i<il;i ++){var bone=this.bones[i];if(bone.name===name){return bone}}
4280return undefined}});function Bone(){Object3D.call(this);this.type='Bone'}
4281Bone.prototype=Object.assign(Object.create(Object3D.prototype),{constructor:Bone,isBone:!0});function SkinnedMesh(geometry,material){Mesh.call(this,geometry,material);this.type='SkinnedMesh';this.bindMode='attached';this.bindMatrix=new Matrix4();this.bindMatrixInverse=new Matrix4();var bones=this.initBones();var skeleton=new Skeleton(bones);this.bind(skeleton,this.matrixWorld);this.normalizeSkinWeights()}
4282SkinnedMesh.prototype=Object.assign(Object.create(Mesh.prototype),{constructor:SkinnedMesh,isSkinnedMesh:!0,initBones:function(){var bones=[],bone,gbone;var i,il;if(this.geometry&&this.geometry.bones!==undefined){for(i=0,il=this.geometry.bones.length;i<il;i ++){gbone=this.geometry.bones[i];bone=new Bone();bones.push(bone);bone.name=gbone.name;bone.position.fromArray(gbone.pos);bone.quaternion.fromArray(gbone.rotq);if(gbone.scl!==undefined)bone.scale.fromArray(gbone.scl);}
4283for(i=0,il=this.geometry.bones.length;i<il;i ++){gbone=this.geometry.bones[i];if((gbone.parent!==-1)&&(gbone.parent!==null)&&(bones[gbone.parent]!==undefined)){bones[gbone.parent].add(bones[i])}else{this.add(bones[i])}}}
4284this.updateMatrixWorld(!0);
4284return bones},bind:function(skeleton,bindMatrix){this.skeleton=skeleton;if(bindMatrix===undefined){this.updateMatrixWorld(!0);this.skeleton.calculateInverses();bindMatrix=this.matrixWorld}
4285this.bindMatrix.copy(bindMatrix);this.bindMatrixInverse.getInverse(bindMatrix)},pose:function(){this.skeleton.pose()},normalizeSkinWeights:function(){var scale,i;if(this.geometry&&this.geometry.isGeometry){for(i=0;i<this.geometry.skinWeights.length;i ++){var sw=this.geometry.skinWeights[i];scale=1.0/sw.manhattanLength();if(scale!==Infinity){sw.multiplyScalar(scale)}else{sw.set(1,0,0,0)}}}else if(this.geometry&&this.geometry.isBufferGeometry){var vec=new Vector4();var skinWeight=this.geometry.attributes.skinWeight;for(i=0;i<skinWeight.count;i ++){vec.x=skinWeight.getX(i);vec.y=skinWeight.getY(i);vec.z=skinWeight.getZ(i);vec.w=skinWeight.getW(i);scale=1.0/vec.manhattanLength();if(scale!==Infinity){vec.multiplyScalar(scale)}else{vec.set(1,0,0,0)}
4286skinWeight.setXYZW(i,vec.x,vec.y,vec.z,vec.w)}}},updateMatrixWorld:function(force){Mesh.prototype.updateMatrixWorld.call(this,force);if(this.bindMode==='attached'){this.bindMatrixInverse.getInverse(this.matrixWorld)}else if(this.bindMode==='detached'){this.bindMatrixInverse.getInverse(this.bindMatrix)}else{console.warn('THREE.SkinnedMesh: Unrecognized bindMode: '+this.bindMode)}},clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}});function LineBasicMaterial(parameters){Material.call(this);this.type='LineBasicMaterial';this.color=new Color(0xffffff);this.linewidth=1;this.linecap='round';this.linejoin='round';this.lights=!1;this.setValues(parameters)}
4287LineBasicMaterial.prototype=Object.create(Material.prototype);LineBasicMaterial.prototype.constructor=LineBasicMaterial;LineBasicMaterial.prototype.isLineBasicMaterial=!0;LineBasicMaterial.prototype.copy=function(source){Material.prototype.copy.call(this,source);this.color.copy(source.color);this.linewidth=source.linewidth;this.linecap=source.linecap;this.linejoin=source.linejoin;return this};function Line(geometry,material,mode){if(mode===1){console.warn('THREE.Line: parameter THREE.LinePieces no longer supported. Created THREE.LineSegments instead.');return new LineSegments(geometry,material)}
4288Object3D.call(this);this.type='Line';this.geometry=geometry!==undefined?geometry:new BufferGeometry();this.material=material!==undefined?material:new LineBasicMaterial({color:Math.random()*0xffffff})}
4289Line.prototype=Object.assign(Object.create(Object3D.prototype),{constructor:Line,isLine:!0,computeLineDistances:(function(){var start=new Vector3();var end=new Vector3();return function computeLineDistances(){var geometry=this.geometry;if(geometry.isBufferGeometry){if(geometry.index===null){var positionAttribute=geometry.attributes.position;var lineDistances=[0];for(var i=1,l=positionAttribute.count;i<l;i ++){start.fromBufferAttribute(positionAttribute,i-1);end.fromBufferAttribute(positionAttribute,i);lineDistances[i]=lineDistances[i-1];lineDistances[i]+=start.distanceTo(end)}
4290geometry.addAttribute('lineDistance',new Float32BufferAttribute(lineDistances,1))}else{console.warn('THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.')}}else if(geometry.isGeometry){var vertices=geometry.vertices;var lineDistances=geometry.lineDistances;lineDistances[0]=0;for(var i=1,l=vertices.length;i<l;i ++){lineDistances[i]=lineDistances[i-1];lineDistances[i]+=vertices[i-1].distanceTo(vertices[i])}}
4291return this}}()),raycast:(function(){var inverseMatrix=new Matrix4();var ray=new Ray();var sphere=new Sphere();return function raycast(raycaster,intersects){var precision=raycaster.linePrecision;var precisionSq=precision*precision;var geometry=this.geometry;var matrixWorld=this.matrixWorld;if(geometry.boundingSphere===null)geometry.computeBoundingSphere();sphere.copy(geometry.boundingSphere);sphere.applyMatrix4(matrixWorld);if(raycaster.ray.intersectsSphere(sphere)===!1)return;inverseMatrix.getInverse(matrixWorld);ray.copy(raycaster.ray).applyMatrix4(inverseMatrix);var vStart=new Vector3();var vEnd=new Vector3();var interSegment=new Vector3();var interRay=new Vector3();
4291var step=(this&&this.isLineSegments)?2:1;if(geometry.isBufferGeometry){var index=geometry.index;var attributes=geometry.attributes;var positions=attributes.position.array;if(index!==null){var indices=index.array;for(var i=0,l=indices.length-1;i<l;i+=step){var a=indices[i];var b=indices[i+1];vStart.fromArray(positions,a*3);vEnd.fromArray(positions,b*3);var distSq=ray.distanceSqToSegment(vStart,vEnd,interRay,interSegment);if(distSq>precisionSq)continue;interRay.applyMatrix4(this.matrixWorld);var distance=raycaster.ray.origin.distanceTo(interRay);if(distance<raycaster.near||distance>raycaster.far)continue;intersects.push({distance:distance,point:interSegment.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}else{for(var i=0,l=positions.length/3-1;i<l;i+=step){vStart.fromArray(positions,3*i);vEnd.fromArray(positions,3*i+3);var distSq=ray.distanceSqToSegment(vStart,vEnd,interRay,interSegment);if(distSq>precisionSq)continue;interRay.applyMatrix4(this.matrixWorld);var distance=raycaster.ray.origin.distanceTo(interRay);if(distance<raycaster.near||distance>raycaster.far)continue;intersects.push({distance:distance,point:interSegment.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}}else if(geometry.isGeometry){var vertices=geometry.vertices;var nbVertices=vertices.length;for(var i=0;i<nbVertices-1;i+=step){var distSq=ray.distanceSqToSegment(vertices[i],vertices[i+1],interRay,interSegment);if(distSq>precisionSq)continue;interRay.applyMatrix4(this.matrixWorld);var distance=raycaster.ray.origin.distanceTo(interRay);if(distance<raycaster.near||distance>raycaster.far)continue;intersects.push({distance:distance,point:interSegment.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}}}()),clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}});function LineSegments(geometry,material){Line.call(this,geometry,material);this.type='LineSegments'}
4292LineSegments.prototype=Object.assign(Object.create(Line.prototype),{constructor:LineSegments,isLineSegments:!0,computeLineDistances:(function(){var start=new Vector3();var end=new Vector3();return function computeLineDistances(){var geometry=this.geometry;if(geometry.isBufferGeometry){if(geometry.index===null){var positionAttribute=geometry.attributes.position;var lineDistances=[];for(var i=0,l=positionAttribute.count;i<l;i+=2){start.fromBufferAttribute(positionAttribute,i);end.fromBufferAttribute(positionAttribute,i+1);lineDistances[i]=(i===0)?0:lineDistances[i-1];lineDistances[i+1]=lineDistances[i]+start.distanceTo(end)}
4293geometry.addAttribute('lineDistance',new Float32BufferAttribute(lineDistances,1))}else{console.warn('THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.')}}else if(geometry.isGeometry){var vertices=geometry.vertices;var lineDistances=geometry.lineDistances;for(var i=0,l=vertices.length;i<l;i+=2){start.copy(vertices[i]);end.copy(vertices[i+1]);lineDistances[i]=(i===0)?0:lineDistances[i-1];lineDistances[i+1]=lineDistances[i]+start.distanceTo(end)}}
4294return this}}())});function LineLoop(geometry,material){Line.call(this,geometry,material);this.type='LineLoop'}
4295LineLoop.prototype=Object.assign(Object.create(Line.prototype),{constructor:LineLoop,isLineLoop:!0,});function PointsMaterial(parameters){Material.call(this);this.type='PointsMaterial';this.color=new Color(0xffffff);this.map=null;this.size=1;this.sizeAttenuation=!0;this.morphTargets=!1;this.lights=!1;this.setValues(parameters)}
4296PointsMaterial.prototype=Object.create(Material.prototype);PointsMaterial.prototype.constructor=PointsMaterial;PointsMaterial.prototype.isPointsMaterial=!0;PointsMaterial.prototype.copy=function(source){Material.prototype.copy.call(this,source);this.color.copy(source.color);this.map=source.map;this.size=source.size;this.sizeAttenuation=source.sizeAttenuation;this.morphTargets=source.morphTargets;return this};function Points(geometry,material){Object3D.call(this);this.type='Points';this.geometry=geometry!==undefined?geometry:new BufferGeometry();this.material=material!==undefined?material:new PointsMaterial({color:Math.random()*0xffffff})}
4297Points.prototype=Object.assign(Object.create(Object3D.prototype),{constructor:Points,isPoints:!0,raycast:(function(){var inverseMatrix=new Matrix4();var ray=new Ray();var sphere=new Sphere();return function raycast(raycaster,intersects){var object=this;var geometry=this.geometry;var matrixWorld=this.matrixWorld;var threshold=raycaster.params.Points.threshold;if(geometry.boundingSphere===null)geometry.computeBoundingSphere();sphere.copy(geometry.boundingSphere);sphere.applyMatrix4(matrixWorld);sphere.radius+=threshold;if(raycaster.ray.intersectsSphere(sphere)===!1)return;inverseMatrix.getInverse(matrixWorld);ray.copy(raycaster.ray).applyMatrix4(inverseMatrix);var localThreshold=threshold/((this.scale.x+this.scale.y+this.scale.z)/3);var localThresholdSq=localThreshold*localThreshold;var position=new Vector3();var intersectPoint=new Vector3();function testPoint(point,index){var rayPointDistanceSq=ray.distanceSqToPoint(point);if(rayPointDistanceSq<localThresholdSq){ray.closestPointToPoint(point,intersectPoint);intersectPoint.applyMatrix4(matrixWorld);var distance=raycaster.ray.origin.distanceTo(intersectPoint);if(distance<raycaster.near||distance>raycaster.far)return;intersects.push({distance:distance,distanceToRay:Math.sqrt(rayPointDistanceSq),point:intersectPoint.clone(),index:index,face:null,object:object})}}
4298if(geometry.isBufferGeometry){var index=geometry.index;var attributes=geometry.attributes;var positions=attributes.position.array;if(index!==null){var indices=index.array;for(var i=0,il=indices.length;i<il;i ++){var a=indices[i];position.fromArray(positions,a*3);testPoint(position,a)}}else{for(var i=0,l=positions.length/3;i<l;i ++){position.fromArray(positions,i*3);testPoint(position,i)}}}else{var vertices=geometry.vertices;for(var i=0,l=vertices.length;i<l;i ++){testPoint(vertices[i],i)}}}}()),clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}});function Group(){Object3D.call(this);this.type='Group'}
4299Group.prototype=Object.assign(Object.create(Object3D.prototype),{constructor:Group,isGroup:!0});function VideoTexture(video,mapping,wrapS,wrapT,magFilter,minFilter,format,type,anisotropy){Texture.call(this,video,mapping,wrapS,wrapT,magFilter,minFilter,format,type,anisotropy);this.generateMipmaps=!1}
4300VideoTexture.prototype=Object.assign(Object.create(Texture.prototype),{constructor:VideoTexture,isVideoTexture:!0,update:function(){var video=this.image;if(video.readyState>=video.HAVE_CURRENT_DATA){this.needsUpdate=!0}}});function CompressedTexture(mipmaps,width,height,format,type,mapping,wrapS,wrapT,magFilter,minFilter,anisotropy,encoding){Texture.call(this,null,mapping,wrapS,wrapT,magFilter,minFilter,format,type,anisotropy,encoding);this.image={width:width,height:height};this.mipmaps=mipmaps;this.flipY=!1;this.generateMipmaps=!1}
4301CompressedTexture.prototype=Object.create(Texture.prototype);CompressedTexture.prototype.constructor=CompressedTexture;CompressedTexture.prototype.isCompressedTexture=!0;function DepthTexture(width,height,type,mapping,wrapS,wrapT,magFilter,minFilter,anisotropy,format){format=format!==undefined?format:DepthFormat;if(format!==DepthFormat&&format!==DepthStencilFormat){throw new Error('DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat')}
4302if(type===undefined&&format===DepthFormat)type=UnsignedShortType;if(type===undefined&&format===DepthStencilFormat)type=UnsignedInt248Type;Texture.call(this,null,mapping,wrapS,wrapT,magFilter,minFilter,format,type,anisotropy);this.image={width:width,height:height};this.magFilter=magFilter!==undefined?magFilter:NearestFilter;this.minFilter=minFilter!==undefined?minFilter:NearestFilter;this.flipY=!1;this.generateMipmaps=!1}
4303DepthTexture.prototype=Object.create(Texture.prototype);DepthTexture.prototype.constructor=DepthTexture;DepthTexture.prototype.isDepthTexture=!0;function WireframeGeometry(geometry){BufferGeometry.call(this);this.type='WireframeGeometry';var vertices=[];var i,j,l,o,ol;var edge=[0,0],edges={},e,edge1,edge2;var key,keys=['a','b','c'];var vertex;if(geometry&&geometry.isGeometry){var faces=geometry.faces;for(i=0,l=faces.length;i<l;i ++){var face=faces[i];for(j=0;j<3;j ++){edge1=face[keys[j]];edge2=face[keys[(j+1)%3]];edge[0]=Math.min(edge1,edge2);edge[1]=Math.max(edge1,edge2);key=edge[0]+','+edge[1];if(edges[key]===undefined){edges[key]={index1:edge[0],index2:edge[1]}}}}
4304for(key in edges){e=edges[key];vertex=geometry.vertices[e.index1];vertices.push(vertex.x,vertex.y,vertex.z);vertex=geometry.vertices[e.index2];vertices.push(vertex.x,vertex.y,vertex.z)}}else if(geometry&&geometry.isBufferGeometry){var position,indices,groups;var group,start,count;var index1,index2;vertex=new Vector3();if(geometry.index!==null){position=geometry.attributes.position;indices=geometry.index;groups=geometry.groups;if(groups.length===0){groups=[{start:0,count:indices.count,materialIndex:0}]}
4305for(o=0,ol=groups.length;o<ol;++ o){group=groups[o];start=group.start;count=group.count;for(i=start,l=(start+count);i<l;i+=3){for(j=0;j<3;j ++){edge1=indices.getX(i+j);edge2=indices.getX(i+(j+1)%3);edge[0]=Math.min(edge1,edge2);edge[1]=Math.max(edge1,edge2);key=edge[0]+','+edge[1];if(edges[key]===undefined){edges[key]={index1:edge[0],index2:edge[1]}}}}}
4306for(key in edges){e=edges[key];vertex.fromBufferAttribute(position,e.index1);vertices.push(vertex.x,vertex.y,vertex.z);vertex.fromBufferAttribute(position,e.index2);vertices.push(vertex.x,vertex.y,vertex.z)}}else{position=geometry.attributes.position;for(i=0,l=(position.count/3);i<l;i ++){for(j=0;j<3;
4306j ++){index1=3*i+j;vertex.fromBufferAttribute(position,index1);vertices.push(vertex.x,vertex.y,vertex.z);index2=3*i+((j+1)%3);vertex.fromBufferAttribute(position,index2);vertices.push(vertex.x,vertex.y,vertex.z)}}}}
4307this.addAttribute('position',new Float32BufferAttribute(vertices,3))}
4308WireframeGeometry.prototype=Object.create(BufferGeometry.prototype);WireframeGeometry.prototype.constructor=WireframeGeometry;function ParametricGeometry(func,slices,stacks){Geometry.call(this);this.type='ParametricGeometry';this.parameters={func:func,slices:slices,stacks:stacks};this.fromBufferGeometry(new ParametricBufferGeometry(func,slices,stacks));this.mergeVertices()}
4309ParametricGeometry.prototype=Object.create(Geometry.prototype);ParametricGeometry.prototype.constructor=ParametricGeometry;function ParametricBufferGeometry(func,slices,stacks){BufferGeometry.call(this);this.type='ParametricBufferGeometry';this.parameters={func:func,slices:slices,stacks:stacks};var indices=[];var vertices=[];var normals=[];var uvs=[];var EPS=0.00001;var normal=new Vector3();var p0=new Vector3(),p1=new Vector3();var pu=new Vector3(),pv=new Vector3();var i,j;if(func.length<3){console.error('THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.')}
4310var sliceCount=slices+1;for(i=0;i<=stacks;i ++){var v=i/stacks;for(j=0;j<=slices;j ++){var u=j/slices;func(u,v,p0);vertices.push(p0.x,p0.y,p0.z);if(u-EPS>=0){func(u-EPS,v,p1);pu.subVectors(p0,p1)}else{func(u+EPS,v,p1);pu.subVectors(p1,p0)}
4311if(v-EPS>=0){func(u,v-EPS,p1);pv.subVectors(p0,p1)}else{func(u,v+EPS,p1);pv.subVectors(p1,p0)}
4312normal.crossVectors(pu,pv).normalize();normals.push(normal.x,normal.y,normal.z);uvs.push(u,v)}}
4313for(i=0;i<stacks;i ++){for(j=0;j<slices;j ++){var a=i*sliceCount+j;var b=i*sliceCount+j+1;var c=(i+1)*sliceCount+j+1;var d=(i+1)*sliceCount+j;indices.push(a,b,d);indices.push(b,c,d)}}
4314this.setIndex(indices);this.addAttribute('position',new Float32BufferAttribute(vertices,3));this.addAttribute('normal',new Float32BufferAttribute(normals,3));this.addAttribute('uv',new Float32BufferAttribute(uvs,2))}
4315ParametricBufferGeometry.prototype=Object.create(BufferGeometry.prototype);ParametricBufferGeometry.prototype.constructor=ParametricBufferGeometry;function PolyhedronGeometry(vertices,indices,radius,detail){Geometry.call(this);this.type='PolyhedronGeometry';this.parameters={vertices:vertices,indices:indices,radius:radius,detail:detail};this.fromBufferGeometry(new PolyhedronBufferGeometry(vertices,indices,radius,detail));this.mergeVertices()}
4316PolyhedronGeometry.prototype=Object.create(Geometry.prototype);PolyhedronGeometry.prototype.constructor=PolyhedronGeometry;function PolyhedronBufferGeometry(vertices,indices,radius,detail){BufferGeometry.call(this);this.type='PolyhedronBufferGeometry';this.parameters={vertices:vertices,indices:indices,radius:radius,detail:detail};radius=radius||1;detail=detail||0;var vertexBuffer=[];var uvBuffer=[];subdivide(detail);appplyRadius(radius);generateUVs();this.addAttribute('position',new Float32BufferAttribute(vertexBuffer,3));this.addAttribute('normal',new Float32BufferAttribute(vertexBuffer.slice(),3));this.addAttribute('uv',new Float32BufferAttribute(uvBuffer,2));if(detail===0){this.computeVertexNormals()}else{this.normalizeNormals()}
4317function subdivide(detail){var a=new Vector3();var b=new Vector3();var c=new Vector3();for(var i=0;i<indices.length;i+=3){getVertexByIndex(indices[i+0],a);getVertexByIndex(indices[i+1],b);getVertexByIndex(indices[i+2],c);subdivideFace(a,b,c,detail)}}
4318function subdivideFace(a,b,c,detail){var cols=Math.pow(2,detail);var v=[];var i,j;for(i=0;i<=cols;i ++){v[i]=[];var aj=a.clone().lerp(c,i/cols);var bj=b.clone().lerp(c,i/cols);var rows=cols-i;for(j=0;j<=rows;j ++){if(j===0&&i===cols){v[i][j]=aj}else{v[i][j]=aj.clone().lerp(bj,j/rows)}}}
4319for(i=0;i<cols;i ++){for(j=0;j<2*(cols-i)-1;j ++){var k=Math.floor(j/2);if(j%2===0){pushVertex(v[i][k+1]);pushVertex(v[i+1][k]);pushVertex(v[i][k])}else{pushVertex(v[i][k+1]);pushVertex(v[i+1][k+1]);pushVertex(v[i+1][k])}}}}
4320function appplyRadius(radius){var vertex=new Vector3();for(var i=0;i<vertexBuffer.length;i+=3){vertex.x=vertexBuffer[i+0];vertex.y=vertexBuffer[i+1];vertex.z=vertexBuffer[i+2];vertex.normalize().multiplyScalar(radius);vertexBuffer[i+0]=vertex.x;vertexBuffer[i+1]=vertex.y;vertexBuffer[i+2]=vertex.z}}
4321function generateUVs(){var vertex=new Vector3();for(var i=0;i<vertexBuffer.length;i+=3){vertex.x=vertexBuffer[i+0];vertex.y=vertexBuffer[i+1];vertex.z=vertexBuffer[i+2];var u=azimuth(vertex)/2/Math.PI+0.5;var v=inclination(vertex)/Math.PI+0.5;uvBuffer.push(u,1-v)}
4322correctUVs();correctSeam()}
4323function correctSeam(){for(var i=0;i<uvBuffer.length;i+=6){var x0=uvBuffer[i+0];var x1=uvBuffer[i+2];var x2=uvBuffer[i+4];var max=Math.max(x0,x1,x2);var min=Math.min(x0,x1,x2);
4323if(max>0.9&&min<0.1){if(x0<0.2)uvBuffer[i+0]+=1;if(x1<0.2)uvBuffer[i+2]+=1;if(x2<0.2)uvBuffer[i+4]+=1}}}
4324function pushVertex(vertex){vertexBuffer.push(vertex.x,vertex.y,vertex.z)}
4325function getVertexByIndex(index,vertex){var stride=index*3;vertex.x=vertices[stride+0];vertex.y=vertices[stride+1];vertex.z=vertices[stride+2]}
4326function correctUVs(){var a=new Vector3();var b=new Vector3();var c=new Vector3();var centroid=new Vector3();var uvA=new Vector2();var uvB=new Vector2();var uvC=new Vector2();for(var i=0,j=0;i<vertexBuffer.length;i+=9,j+=6){a.set(vertexBuffer[i+0],vertexBuffer[i+1],vertexBuffer[i+2]);b.set(vertexBuffer[i+3],vertexBuffer[i+4],vertexBuffer[i+5]);c.set(vertexBuffer[i+6],vertexBuffer[i+7],vertexBuffer[i+8]);uvA.set(uvBuffer[j+0],uvBuffer[j+1]);uvB.set(uvBuffer[j+2],uvBuffer[j+3]);uvC.set(uvBuffer[j+4],uvBuffer[j+5]);centroid.copy(a).add(b).add(c).divideScalar(3);var azi=azimuth(centroid);correctUV(uvA,j+0,a,azi);correctUV(uvB,j+2,b,azi);correctUV(uvC,j+4,c,azi)}}
4327function correctUV(uv,stride,vector,azimuth){if((azimuth<0)&&(uv.x===1)){uvBuffer[stride]=uv.x-1}
4328if((vector.x===0)&&(vector.z===0)){uvBuffer[stride]=azimuth/2/Math.PI+0.5}}
4329function azimuth(vector){return Math.atan2(vector.z,-vector.x)}
4330function inclination(vector){return Math.atan2(-vector.y,Math.sqrt((vector.x*vector.x)+(vector.z*vector.z)))}}
4331PolyhedronBufferGeometry.prototype=Object.create(BufferGeometry.prototype);PolyhedronBufferGeometry.prototype.constructor=PolyhedronBufferGeometry;function TetrahedronGeometry(radius,detail){Geometry.call(this);this.type='TetrahedronGeometry';this.parameters={radius:radius,detail:detail};this.fromBufferGeometry(new TetrahedronBufferGeometry(radius,detail));this.mergeVertices()}
4332TetrahedronGeometry.prototype=Object.create(Geometry.prototype);TetrahedronGeometry.prototype.constructor=TetrahedronGeometry;function TetrahedronBufferGeometry(radius,detail){var vertices=[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1];var indices=[2,1,0,0,3,2,1,3,0,2,3,1];PolyhedronBufferGeometry.call(this,vertices,indices,radius,detail);this.type='TetrahedronBufferGeometry';this.parameters={radius:radius,detail:detail}}
4333TetrahedronBufferGeometry.prototype=Object.create(PolyhedronBufferGeometry.prototype);TetrahedronBufferGeometry.prototype.constructor=TetrahedronBufferGeometry;function OctahedronGeometry(radius,detail){Geometry.call(this);this.type='OctahedronGeometry';this.parameters={radius:radius,detail:detail};this.fromBufferGeometry(new OctahedronBufferGeometry(radius,detail));this.mergeVertices()}
4334OctahedronGeometry.prototype=Object.create(Geometry.prototype);OctahedronGeometry.prototype.constructor=OctahedronGeometry;function OctahedronBufferGeometry(radius,detail){var vertices=[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1];var indices=[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2];PolyhedronBufferGeometry.call(this,vertices,indices,radius,detail);this.type='OctahedronBufferGeometry';this.parameters={radius:radius,detail:detail}}
4335OctahedronBufferGeometry.prototype=Object.create(PolyhedronBufferGeometry.prototype);OctahedronBufferGeometry.prototype.constructor=OctahedronBufferGeometry;function IcosahedronGeometry(radius,detail){Geometry.call(this);this.type='IcosahedronGeometry';this.parameters={radius:radius,detail:detail};this.fromBufferGeometry(new IcosahedronBufferGeometry(radius,detail));this.mergeVertices()}
4336IcosahedronGeometry.prototype=Object.create(Geometry.prototype);IcosahedronGeometry.prototype.constructor=IcosahedronGeometry;function IcosahedronBufferGeometry(radius,detail){var t=(1+Math.sqrt(5))/2;var vertices=[-1,t,0,1,t,0,-1,-t,0,1,-t,0,0,-1,t,0,1,t,0,-1,-t,0,1,-t,t,0,-1,t,0,1,-t,0,-1,-t,0,1];var indices=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1];PolyhedronBufferGeometry.call(this,vertices,indices,radius,detail);this.type='IcosahedronBufferGeometry';this.parameters={radius:radius,detail:detail}}
4337IcosahedronBufferGeometry.prototype=Object.create(PolyhedronBufferGeometry.prototype);IcosahedronBufferGeometry.prototype.constructor=IcosahedronBufferGeometry;function DodecahedronGeometry(radius,detail){Geometry.call(this);this.type='DodecahedronGeometry';
vendor: 8,775 bytes, lines 4337-4353
4337this.parameters={radius:radius,detail:detail};this.fromBufferGeometry(new DodecahedronBufferGeometry(radius,detail));this.mergeVertices()}
4338DodecahedronGeometry.prototype=Object.create(Geometry.prototype);DodecahedronGeometry.prototype.constructor=DodecahedronGeometry;function DodecahedronBufferGeometry(radius,detail){var t=(1+Math.sqrt(5))/2;var r=1/t;var vertices=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-r,-t,0,-r,t,0,r,-t,0,r,t,-r,-t,0,-r,t,0,r,-t,0,r,t,0,-t,0,-r,t,0,-r,-t,0,r,t,0,r];var indices=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9];PolyhedronBufferGeometry.call(this,vertices,indices,radius,detail);this.type='DodecahedronBufferGeometry';this.parameters={radius:radius,detail:detail}}
4339DodecahedronBufferGeometry.prototype=Object.create(PolyhedronBufferGeometry.prototype);DodecahedronBufferGeometry.prototype.constructor=DodecahedronBufferGeometry;function TubeGeometry(path,tubularSegments,radius,radialSegments,closed,taper){Geometry.call(this);this.type='TubeGeometry';this.parameters={path:path,tubularSegments:tubularSegments,radius:radius,radialSegments:radialSegments,closed:closed};if(taper!==undefined)console.warn('THREE.TubeGeometry: taper has been removed.');var bufferGeometry=new TubeBufferGeometry(path,tubularSegments,radius,radialSegments,closed);this.tangents=bufferGeometry.tangents;this.normals=bufferGeometry.normals;this.binormals=bufferGeometry.binormals;this.fromBufferGeometry(bufferGeometry);this.mergeVertices()}
4340TubeGeometry.prototype=Object.create(Geometry.prototype);TubeGeometry.prototype.constructor=TubeGeometry;function TubeBufferGeometry(path,tubularSegments,radius,radialSegments,closed){BufferGeometry.call(this);this.type='TubeBufferGeometry';this.parameters={path:path,tubularSegments:tubularSegments,radius:radius,radialSegments:radialSegments,closed:closed};tubularSegments=tubularSegments||64;radius=radius||1;radialSegments=radialSegments||8;closed=closed||!1;var frames=path.computeFrenetFrames(tubularSegments,closed);this.tangents=frames.tangents;this.normals=frames.normals;this.binormals=frames.binormals;var vertex=new Vector3();var normal=new Vector3();var uv=new Vector2();var P=new Vector3();var i,j;var vertices=[];var normals=[];var uvs=[];var indices=[];generateBufferData();this.setIndex(indices);this.addAttribute('position',new Float32BufferAttribute(vertices,3));this.addAttribute('normal',new Float32BufferAttribute(normals,3));this.addAttribute('uv',new Float32BufferAttribute(uvs,2));function generateBufferData(){for(i=0;i<tubularSegments;i ++){generateSegment(i)}
4341generateSegment((closed===!1)?tubularSegments:0);generateUVs();generateIndices()}
4342function generateSegment(i){P=path.getPointAt(i/tubularSegments,P);var N=frames.normals[i];var B=frames.binormals[i];for(j=0;j<=radialSegments;j ++){var v=j/radialSegments*Math.PI*2;var sin=Math.sin(v);var cos=-Math.cos(v);normal.x=(cos*N.x+sin*B.x);normal.y=(cos*N.y+sin*B.y);normal.z=(cos*N.z+sin*B.z);normal.normalize();normals.push(normal.x,normal.y,normal.z);vertex.x=P.x+radius*normal.x;vertex.y=P.y+radius*normal.y;vertex.z=P.z+radius*normal.z;vertices.push(vertex.x,vertex.y,vertex.z)}}
4343function generateIndices(){for(j=1;j<=tubularSegments;j ++){for(i=1;i<=radialSegments;i ++){var a=(radialSegments+1)*(j-1)+(i-1);var b=(radialSegments+1)*j+(i-1);var c=(radialSegments+1)*j+i;var d=(radialSegments+1)*(j-1)+i;indices.push(a,b,d);indices.push(b,c,d)}}}
4344function generateUVs(){for(i=0;i<=tubularSegments;i ++){for(j=0;j<=radialSegments;j ++){uv.x=i/tubularSegments;uv.y=j/radialSegments;uvs.push(uv.x,uv.y)}}}}
4345TubeBufferGeometry.prototype=Object.create(BufferGeometry.prototype);TubeBufferGeometry.prototype.constructor=TubeBufferGeometry;function TorusKnotGeometry(radius,tube,tubularSegments,radialSegments,p,q,heightScale){Geometry.call(this);this.type='TorusKnotGeometry';this.parameters={radius:radius,tube:tube,tubularSegments:tubularSegments,radialSegments:radialSegments,p:p,q:q};if(heightScale!==undefined)console.warn('THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.');this.fromBufferGeometry(new TorusKnotBufferGeometry(radius,tube,tubularSegments,radialSegments,p,q));this.mergeVertices()}
4346TorusKnotGeometry.prototype=Object.create(Geometry.prototype);TorusKnotGeometry.prototype.constructor=TorusKnotGeometry;function TorusKnotBufferGeometry(radius,tube,tubularSegments,radialSegments,p,q){BufferGeometry.call(this);this.type='TorusKnotBufferGeometry';this.parameters={radius:radius,tube:tube,tubularSegments:tubularSegments,radialSegments:radialSegments,p:p,q:q};radius=radius||1;tube=tube||0.4;tubularSegments=Math.floor(tubularSegments)||64;radialSegments=Math.floor(radialSegments)||8;p=p||2;q=q||3;var indices=[];var vertices=[];var normals=[];var uvs=[];var i,j;var vertex=new Vector3();var normal=new Vector3();var P1=new Vector3();var P2=new Vector3();var B=new Vector3();var T=new Vector3();var N=new Vector3();for(i=0;i<=tubularSegments;++ i){var u=i/tubularSegments*p*Math.PI*2;calculatePositionOnCurve(u,p,q,radius,P1);calculatePositionOnCurve(u+0.01,p,q,radius,P2);T.subVectors(P2,P1);N.addVectors(P2,P1);B.crossVectors(T,N);N.crossVectors(B,T);B.normalize();N.normalize();for(j=0;j<=radialSegments;++ j){var v=j/radialSegments*Math.PI*2;var cx=-tube*Math.cos(v);var cy=tube*Math.sin(v);vertex.x=P1.x+(cx*N.x+cy*B.x);vertex.y=P1.y+(cx*N.y+cy*B.y);vertex.z=P1.z+(cx*N.z+cy*B.z);vertices.push(vertex.x,vertex.y,vertex.z);normal.subVectors(vertex,P1).normalize();normals.push(normal.x,normal.y,normal.z);uvs.push(i/tubularSegments);uvs.push(j/radialSegments)}}
4347for(j=1;j<=tubularSegments;j ++){for(i=1;i<=radialSegments;i ++){var a=(radialSegments+1)*(j-1)+(i-1);var b=(radialSegments+1)*j+(i-1);var c=(radialSegments+1)*j+i;var d=(radialSegments+1)*(j-1)+i;indices.push(a,b,d);indices.push(b,c,d)}}
4348this.setIndex(indices);this.addAttribute('position',new Float32BufferAttribute(vertices,3));this.addAttribute('normal',new Float32BufferAttribute(normals,3));this.addAttribute('uv',new Float32BufferAttribute(uvs,2));function calculatePositionOnCurve(u,p,q,radius,position){var cu=Math.cos(u);var su=Math.sin(u);var quOverP=q/p*u;var cs=Math.cos(quOverP);position.x=radius*(2+cs)*0.5*cu;position.y=radius*(2+cs)*su*0.5;position.z=radius*Math.sin(quOverP)*0.5}}
4349TorusKnotBufferGeometry.prototype=Object.create(BufferGeometry.prototype);TorusKnotBufferGeometry.prototype.constructor=TorusKnotBufferGeometry;function TorusGeometry(radius,tube,radialSegments,tubularSegments,arc){Geometry.call(this);this.type='TorusGeometry';this.parameters={radius:radius,tube:tube,radialSegments:radialSegments,tubularSegments:tubularSegments,arc:arc};this.fromBufferGeometry(new TorusBufferGeometry(radius,tube,radialSegments,tubularSegments,arc));this.mergeVertices()}
4350TorusGeometry.prototype=Object.create(Geometry.prototype);TorusGeometry.prototype.constructor=TorusGeometry;function TorusBufferGeometry(radius,tube,radialSegments,tubularSegments,arc){BufferGeometry.call(this);this.type='TorusBufferGeometry';this.parameters={radius:radius,tube:tube,radialSegments:radialSegments,tubularSegments:tubularSegments,arc:arc};radius=radius||1;tube=tube||0.4;radialSegments=Math.floor(radialSegments)||8;tubularSegments=Math.floor(tubularSegments)||6;arc=arc||Math.PI*2;var indices=[];var vertices=[];var normals=[];var uvs=[];var center=new Vector3();var vertex=new Vector3();var normal=new Vector3();var j,i;for(j=0;j<=radialSegments;j ++){for(i=0;i<=tubularSegments;i ++){var u=i/tubularSegments*arc;var v=j/radialSegments*Math.PI*2;vertex.x=(radius+tube*Math.cos(v))*Math.cos(u);vertex.y=(radius+tube*Math.cos(v))*Math.sin(u);vertex.z=tube*Math.sin(v);vertices.push(vertex.x,vertex.y,vertex.z);center.x=radius*Math.cos(u);center.y=radius*Math.sin(u);normal.subVectors(vertex,center).normalize();normals.push(normal.x,normal.y,normal.z);uvs.push(i/tubularSegments);uvs.push(j/radialSegments)}}
4351for(j=1;j<=radialSegments;j ++){for(i=1;i<=tubularSegments;i ++){var a=(tubularSegments+1)*j+i-1;var b=(tubularSegments+1)*(j-1)+i-1;var c=(tubularSegments+1)*(j-1)+i;var d=(tubularSegments+1)*j+i;indices.push(a,b,d);indices.push(b,c,d)}}
4352this.setIndex(indices);this.addAttribute('position',new Float32BufferAttribute(vertices,3));this.addAttribute('normal',new Float32BufferAttribute(normals,3));this.addAttribute('uv',new Float32BufferAttribute(uvs,2))}
4353TorusBufferGeometry.prototype=Object.create(BufferGeometry.prototype);TorusBufferGeometry.prototype.constructor=TorusBufferGeometry;var Earcut={triangulate:function(data,holeIndices,dim){dim=dim||2;
4353var hasHoles=holeIndices&&holeIndices.length,outerLen=hasHoles?holeIndices[0]*dim:data.length,outerNode=linkedList(data,0,outerLen,dim,!0),triangles=[];if(!outerNode)return triangles;var minX,minY,maxX,maxY,x,y,invSize;if(hasHoles)outerNode=eliminateHoles(data,holeIndices,outerNode,dim);if(data.length>80*dim){minX=maxX=data[0];minY=maxY=data[1];for(var i=dim;i<outerLen;i+=dim){x=data[i];y=data[i+1];if(x<minX)minX=x;if(y<minY)minY=y;if(x>maxX)maxX=x;if(y>maxY)maxY=y}
4354invSize=Math.max(maxX-minX,maxY-minY);invSize=invSize!==0?1/invSize:0}
4355earcutLinked(outerNode,triangles,dim,minX,minY,invSize);return triangles}};function linkedList(data,start,end,dim,clockwise){var i,last;if(clockwise===(signedArea(data,start,end,dim)>0)){for(i=start;i<end;i+=dim)last=insertNode(i,data[i],data[i+1],last);}else{for(i=end-dim;i>=start;i-=dim)last=insertNode(i,data[i],data[i+1],last);}
4356if(last&&equals(last,last.next)){removeNode(last);last=last.next}
4357return last}
4358function filterPoints(start,end){if(!start)return start;if(!end)end=start;var p=start,again;do{again=!1;if(!p.steiner&&(equals(p,p.next)||area(p.prev,p,p.next)===0)){removeNode(p);p=end=p.prev;if(p===p.next)break;again=!0}else{p=p.next}}while(again||p!==end);return end}
4359function earcutLinked(ear,triangles,dim,minX,minY,invSize,pass){if(!ear)return;if(!pass&&invSize)indexCurve(ear,minX,minY,invSize);var stop=ear,prev,next;while(ear.prev!==ear.next){prev=ear.prev;next=ear.next;if(invSize?isEarHashed(ear,minX,minY,invSize):isEar(ear)){triangles.push(prev.i/dim);triangles.push(ear.i/dim);triangles.push(next.i/dim);removeNode(ear);ear=next.next;stop=next.next;continue}
4360ear=next;if(ear===stop){if(!pass){earcutLinked(filterPoints(ear),triangles,dim,minX,minY,invSize,1)}else if(pass===1){ear=cureLocalIntersections(ear,triangles,dim);earcutLinked(ear,triangles,dim,minX,minY,invSize,2)}else if(pass===2){splitEarcut(ear,triangles,dim,minX,minY,invSize)}
4361break}}}
4362function isEar(ear){var a=ear.prev,b=ear,c=ear.next;if(area(a,b,c)>=0)return!1;var p=ear.next.next;while(p!==ear.prev){if(pointInTriangle(a.x,a.y,b.x,b.y,c.x,c.y,p.x,p.y)&&area(p.prev,p,p.next)>=0){return!1}
4363p=p.next}
4364return!0}
4365function isEarHashed(ear,minX,minY,invSize){var a=ear.prev,b=ear,c=ear.next;if(area(a,b,c)>=0)return!1;var minTX=a.x<b.x?(a.x<c.x?a.x:c.x):(b.x<c.x?b.x:c.x),minTY=a.y<b.y?(a.y<c.y?a.y:c.y):(b.y<c.y?b.y:c.y),maxTX=a.x>b.x?(a.x>c.x?a.x:c.x):(b.x>c.x?b.x:c.x),maxTY=a.y>b.y?(a.y>c.y?a.y:c.y):(b.y>c.y?b.y:c.y);var minZ=zOrder(minTX,minTY,minX,minY,invSize),maxZ=zOrder(maxTX,maxTY,minX,minY,invSize);var p=ear.nextZ;while(p&&p.z<=maxZ){if(p!==ear.prev&&p!==ear.next&&pointInTriangle(a.x,a.y,b.x,b.y,c.x,c.y,p.x,p.y)&&area(p.prev,p,p.next)>=0)return!1;p=p.nextZ}
4366p=ear.prevZ;while(p&&p.z>=minZ){if(p!==ear.prev&&p!==ear.next&&pointInTriangle(a.x,a.y,b.x,b.y,c.x,c.y,p.x,p.y)&&area(p.prev,p,p.next)>=0)return!1;p=p.prevZ}
4367return!0}
4368function cureLocalIntersections(start,triangles,dim){var p=start;do{var a=p.prev,b=p.next.next;if(!equals(a,b)&&intersects(a,p,p.next,b)&&locallyInside(a,b)&&locallyInside(b,a)){triangles.push(a.i/dim);triangles.push(p.i/dim);triangles.push(b.i/dim);removeNode(p);removeNode(p.next);p=start=b}
4369p=p.next}while(p!==start);return p}
4370function splitEarcut(start,triangles,dim,minX,minY,invSize){var a=start;do{var b=a.next.next;while(b!==a.prev){if(a.i!==b.i&&isValidDiagonal(a,b)){var c=splitPolygon(a,b);a=filterPoints(a,a.next);c=filterPoints(c,c.next);earcutLinked(a,triangles,dim,minX,minY,invSize);earcutLinked(c,triangles,dim,minX,minY,invSize);return}
4371b=b.next}
4372a=a.next}while(a!==start);}
4373function eliminateHoles(data,holeIndices,outerNode,dim){var queue=[],i,len,start,end,list;for(i=0,len=holeIndices.length;i<len;i ++){start=holeIndices[i]*dim;end=i<len-1?holeIndices[i+1]*dim:data.length;list=linkedList(data,start,end,dim,!1);if(list===list.next)list.steiner=!0;queue.push(getLeftmost(list))}
4374queue.sort(compareX);for(i=0;i<queue.length;i ++){eliminateHole(queue[i],outerNode);outerNode=filterPoints(outerNode,outerNode.next)}
4375return outerNode}
4376function compareX(a,b){return a.x-b.x}
4377function eliminateHole(hole,outerNode){outerNode=findHoleBridge(hole,outerNode);
4377if(outerNode){var b=splitPolygon(outerNode,hole);filterPoints(b,b.next)}}
4378function findHoleBridge(hole,outerNode){var p=outerNode,hx=hole.x,hy=hole.y,qx=-Infinity,m;do{if(hy<=p.y&&hy>=p.next.y&&p.next.y!==p.y){var x=p.x+(hy-p.y)*(p.next.x-p.x)/(p.next.y-p.y);if(x<=hx&&x>qx){qx=x;if(x===hx){if(hy===p.y)return p;if(hy===p.next.y)return p.next}
4379m=p.x<p.next.x?p:p.next}}
4380p=p.next}while(p!==outerNode);if(!m)return null;if(hx===qx)return m.prev;var stop=m,mx=m.x,my=m.y,tanMin=Infinity,tan;p=m.next;while(p!==stop){if(hx>=p.x&&p.x>=mx&&hx!==p.x&&pointInTriangle(hy<my?hx:qx,hy,mx,my,hy<my?qx:hx,hy,p.x,p.y)){tan=Math.abs(hy-p.y)/(hx-p.x);if((tan<tanMin||(tan===tanMin&&p.x>m.x))&&locallyInside(p,hole)){m=p;tanMin=tan}}
4381p=p.next}
4382return m}
4383function indexCurve(start,minX,minY,invSize){var p=start;do{if(p.z===null)p.z=zOrder(p.x,p.y,minX,minY,invSize);p.prevZ=p.prev;p.nextZ=p.next;p=p.next}while(p!==start);p.prevZ.nextZ=null;p.prevZ=null;sortLinked(p)}
4384function sortLinked(list){var i,p,q,e,tail,numMerges,pSize,qSize,inSize=1;do{p=list;list=null;tail=null;numMerges=0;while(p){numMerges ++;q=p;pSize=0;for(i=0;i<inSize;i ++){pSize ++;q=q.nextZ;if(!q)break}
4385qSize=inSize;while(pSize>0||(qSize>0&&q)){if(pSize!==0&&(qSize===0||!q||p.z<=q.z)){e=p;p=p.nextZ;pSize --}else{e=q;q=q.nextZ;qSize --}
4386if(tail)tail.nextZ=e;else list=e;e.prevZ=tail;tail=e}
4387p=q}
4388tail.nextZ=null;inSize*=2}while(numMerges>1);return list}
4389function zOrder(x,y,minX,minY,invSize){x=32767*(x-minX)*invSize;y=32767*(y-minY)*invSize;x=(x|(x<<8))&0x00FF00FF;x=(x|(x<<4))&0x0F0F0F0F;x=(x|(x<<2))&0x33333333;x=(x|(x<<1))&0x55555555;y=(y|(y<<8))&0x00FF00FF;y=(y|(y<<4))&0x0F0F0F0F;y=(y|(y<<2))&0x33333333;y=(y|(y<<1))&0x55555555;return x|(y<<1)}
4390function getLeftmost(start){var p=start,leftmost=start;do{if(p.x<leftmost.x)leftmost=p;p=p.next}while(p!==start);return leftmost}
4391function pointInTriangle(ax,ay,bx,by,cx,cy,px,py){return(cx-px)*(ay-py)-(ax-px)*(cy-py)>=0&&(ax-px)*(by-py)-(bx-px)*(ay-py)>=0&&(bx-px)*(cy-py)-(cx-px)*(by-py)>=0}
4392function isValidDiagonal(a,b){return a.next.i!==b.i&&a.prev.i!==b.i&&!intersectsPolygon(a,b)&&locallyInside(a,b)&&locallyInside(b,a)&&middleInside(a,b)}
4393function area(p,q,r){return(q.y-p.y)*(r.x-q.x)-(q.x-p.x)*(r.y-q.y)}
4394function equals(p1,p2){return p1.x===p2.x&&p1.y===p2.y}
4395function intersects(p1,q1,p2,q2){if((equals(p1,q1)&&equals(p2,q2))||(equals(p1,q2)&&equals(p2,q1)))return!0;return area(p1,q1,p2)>0!==area(p1,q1,q2)>0&&area(p2,q2,p1)>0!==area(p2,q2,q1)>0}
4396function intersectsPolygon(a,b){var p=a;do{if(p.i!==a.i&&p.next.i!==a.i&&p.i!==b.i&&p.next.i!==b.i&&intersects(p,p.next,a,b)){return!0}
4397p=p.next}while(p!==a);return!1}
4398function locallyInside(a,b){return area(a.prev,a,a.next)<0?area(a,b,a.next)>=0&&area(a,a.prev,b)>=0:area(a,b,a.prev)<0||area(a,a.next,b)<0}
4399function middleInside(a,b){var p=a,inside=!1,px=(a.x+b.x)/2,py=(a.y+b.y)/2;do{if(((p.y>py)!==(p.next.y>py))&&p.next.y!==p.y&&(px<(p.next.x-p.x)*(py-p.y)/(p.next.y-p.y)+p.x)){inside=!inside}
4400p=p.next}while(p!==a);return inside}
4401function splitPolygon(a,b){var a2=new Node(a.i,a.x,a.y),b2=new Node(b.i,b.x,b.y),an=a.next,bp=b.prev;a.next=b;b.prev=a;a2.next=an;an.prev=a2;b2.next=a2;a2.prev=b2;bp.next=b2;b2.prev=bp;return b2}
4402function insertNode(i,x,y,last){var p=new Node(i,x,y);if(!last){p.prev=p;p.next=p}else{p.next=last.next;p.prev=last;last.next.prev=p;last.next=p}
4403return p}
4404function removeNode(p){p.next.prev=p.prev;p.prev.next=p.next;if(p.prevZ)p.prevZ.nextZ=p.nextZ;if(p.nextZ)p.nextZ.prevZ=p.prevZ}
4405function Node(i,x,y){this.i=i;this.x=x;this.y=y;this.prev=null;this.next=null;this.z=null;this.prevZ=null;this.nextZ=null;this.steiner=!1}
4406function signedArea(data,start,end,dim){var sum=0;for(var i=start,j=end-dim;i<end;i+=dim){sum+=(data[j]-data[i])*(data[i+1]+data[j+1]);j=i}
4407return sum}
4408var ShapeUtils={area:function(contour){var n=contour.length;var a=0.0;for(var p=n-1,q=0;q<n;p=q ++){a+=contour[p].x*contour[q].y-contour[q].x*contour[p].y}
4409return a*0.5},isClockWise:function(pts){return ShapeUtils.area(pts)<0},triangulateShape:function(contour,holes){var vertices=[];var holeIndices=[];var faces=[];removeDupEndPts(contour);addContour(vertices,contour);var holeIndex=contour.length;
4409holes.forEach(removeDupEndPts);for(var i=0;i<holes.length;i ++){holeIndices.push(holeIndex);holeIndex+=holes[i].length;addContour(vertices,holes[i])}
4410var triangles=Earcut.triangulate(vertices,holeIndices);for(var i=0;i<triangles.length;i+=3){faces.push(triangles.slice(i,i+3))}
4411return faces}};function removeDupEndPts(points){var l=points.length;if(l>2&&points[l-1].equals(points[0])){points.pop()}}
4412function addContour(vertices,contour){for(var i=0;i<contour.length;i ++){vertices.push(contour[i].x);vertices.push(contour[i].y)}}
4413function ExtrudeGeometry(shapes,options){Geometry.call(this);this.type='ExtrudeGeometry';this.parameters={shapes:shapes,options:options};this.fromBufferGeometry(new ExtrudeBufferGeometry(shapes,options));this.mergeVertices()}
4414ExtrudeGeometry.prototype=Object.create(Geometry.prototype);ExtrudeGeometry.prototype.constructor=ExtrudeGeometry;ExtrudeGeometry.prototype.toJSON=function(){var data=Geometry.prototype.toJSON.call(this);var shapes=this.parameters.shapes;var options=this.parameters.options;return toJSON(shapes,options,data)};function ExtrudeBufferGeometry(shapes,options){BufferGeometry.call(this);this.type='ExtrudeBufferGeometry';this.parameters={shapes:shapes,options:options};shapes=Array.isArray(shapes)?shapes:[shapes];var scope=this;var verticesArray=[];var uvArray=[];for(var i=0,l=shapes.length;i<l;i ++){var shape=shapes[i];addShape(shape)}
4415this.addAttribute('position',new Float32BufferAttribute(verticesArray,3));this.addAttribute('uv',new Float32BufferAttribute(uvArray,2));this.computeVertexNormals();function addShape(shape){var placeholder=[];var curveSegments=options.curveSegments!==undefined?options.curveSegments:12;var steps=options.steps!==undefined?options.steps:1;var depth=options.depth!==undefined?options.depth:100;var bevelEnabled=options.bevelEnabled!==undefined?options.bevelEnabled:!0;var bevelThickness=options.bevelThickness!==undefined?options.bevelThickness:6;var bevelSize=options.bevelSize!==undefined?options.bevelSize:bevelThickness-2;var bevelSegments=options.bevelSegments!==undefined?options.bevelSegments:3;var extrudePath=options.extrudePath;var uvgen=options.UVGenerator!==undefined?options.UVGenerator:WorldUVGenerator;if(options.amount!==undefined){console.warn('THREE.ExtrudeBufferGeometry: amount has been renamed to depth.');depth=options.amount}
4416var extrudePts,extrudeByPath=!1;var splineTube,binormal,normal,position2;
4416if(extrudePath){extrudePts=extrudePath.getSpacedPoints(steps);extrudeByPath=!0;bevelEnabled=!1;splineTube=extrudePath.computeFrenetFrames(steps,!1);binormal=new Vector3();normal=new Vector3();position2=new Vector3()}
4417if(!bevelEnabled){bevelSegments=0;bevelThickness=0;bevelSize=0}
4418var ahole,h,hl;var shapePoints=shape.extractPoints(curveSegments);var vertices=shapePoints.shape;var holes=shapePoints.holes;var reverse=!ShapeUtils.isClockWise(vertices);if(reverse){vertices=vertices.reverse();for(h=0,hl=holes.length;h<hl;h ++){ahole=holes[h];if(ShapeUtils.isClockWise(ahole)){holes[h]=ahole.reverse()}}}
4419var faces=ShapeUtils.triangulateShape(vertices,holes);var contour=vertices;for(h=0,hl=holes.length;h<hl;h ++){ahole=holes[h];vertices=vertices.concat(ahole)}
4420function scalePt2(pt,vec,size){if(!vec)console.error("THREE.ExtrudeGeometry: vec does not exist");return vec.clone().multiplyScalar(size).add(pt)}
4421var b,bs,t,z,vert,vlen=vertices.length,face,flen=faces.length;function getBevelVec(inPt,inPrev,inNext){var v_trans_x,v_trans_y,shrink_by;var v_prev_x=inPt.x-inPrev.x,v_prev_y=inPt.y-inPrev.y;var v_next_x=inNext.x-inPt.x,v_next_y=inNext.y-inPt.y;var v_prev_lensq=(v_prev_x*v_prev_x+v_prev_y*v_prev_y);var collinear0=(v_prev_x*v_next_y-v_prev_y*v_next_x);if(Math.abs(collinear0)>Number.EPSILON){var v_prev_len=Math.sqrt(v_prev_lensq);var v_next_len=Math.sqrt(v_next_x*v_next_x+v_next_y*v_next_y);var ptPrevShift_x=(inPrev.x-v_prev_y/v_prev_len);var ptPrevShift_y=(inPrev.y+v_prev_x/v_prev_len);var ptNextShift_x=(inNext.x-v_next_y/v_next_len);var ptNextShift_y=(inNext.y+v_next_x/v_next_len);var sf=((ptNextShift_x-ptPrevShift_x)*v_next_y-(ptNextShift_y-ptPrevShift_y)*v_next_x)/(v_prev_x*v_next_y-v_prev_y*v_next_x);v_trans_x=(ptPrevShift_x+v_prev_x*sf-inPt.x);v_trans_y=(ptPrevShift_y+v_prev_y*sf-inPt.y);var v_trans_lensq=(v_trans_x*v_trans_x+v_trans_y*v_trans_y);if(v_trans_lensq<=2){return new Vector2(v_trans_x,v_trans_y)}else{shrink_by=Math.sqrt(v_trans_lensq/2)}}else{var direction_eq=!1;if(v_prev_x>Number.EPSILON){if(v_next_x>Number.EPSILON){direction_eq=!0}}else{if(v_prev_x<-Number.EPSILON){if(v_next_x<-Number.EPSILON){direction_eq=!0}}else{if(Math.sign(v_prev_y)===Math.sign(v_next_y)){direction_eq=!0}}}
4422if(direction_eq){v_trans_x=-v_prev_y;v_trans_y=v_prev_x;shrink_by=Math.sqrt(v_prev_lensq)}else{v_trans_x=v_prev_x;v_trans_y=v_prev_y;shrink_by=Math.sqrt(v_prev_lensq/2)}}
4423return new Vector2(v_trans_x/shrink_by,v_trans_y/shrink_by)}
4424var contourMovements=[];for(var i=0,il=contour.length,j=il-1,k=i+1;i<il;i ++,j ++,k ++){if(j===il)j=0;if(k===il)k=0;contourMovements[i]=getBevelVec(contour[i],contour[j],contour[k])}
4425var holesMovements=[],oneHoleMovements,verticesMovements=contourMovements.concat();for(h=0,hl=holes.length;h<hl;h ++){ahole=holes[h];oneHoleMovements=[];for(i=0,il=ahole.length,j=il-1,k=i+1;i<il;i ++,j ++,k ++){if(j===il)j=0;if(k===il)k=0;oneHoleMovements[i]=getBevelVec(ahole[i],ahole[j],ahole[k])}
4426holesMovements.push(oneHoleMovements);verticesMovements=verticesMovements.concat(oneHoleMovements)}
4427for(b=0;b<bevelSegments;b ++){t=b/bevelSegments;z=bevelThickness*Math.cos(t*Math.PI/2);bs=bevelSize*Math.sin(t*Math.PI/2);for(i=0,il=contour.length;i<il;i ++){vert=scalePt2(contour[i],contourMovements[i],bs);v(vert.x,vert.y,-z)}
4428for(h=0,hl=holes.length;h<hl;h ++){ahole=holes[h];oneHoleMovements=holesMovements[h];for(i=0,il=ahole.length;i<il;i ++){vert=scalePt2(ahole[i],oneHoleMovements[i],bs);v(vert.x,vert.y,-z)}}}
4429bs=bevelSize;for(i=0;i<vlen;i ++){vert=bevelEnabled?scalePt2(vertices[i],verticesMovements[i],bs):vertices[i];if(!extrudeByPath){v(vert.x,vert.y,0)}else{normal.copy(splineTube.normals[0]).multiplyScalar(vert.x);binormal.copy(splineTube.binormals[0]).multiplyScalar(vert.y);position2.copy(extrudePts[0]).add(normal).add(binormal);v(position2.x,position2.y,position2.z)}}
4430var s;for(s=1;s<=steps;s ++){for(i=0;i<vlen;i ++){vert=bevelEnabled?scalePt2(vertices[i],verticesMovements[i],bs):vertices[i];if(!extrudeByPath){v(vert.x,vert.y,depth/steps*s)}else{normal.copy(splineTube.normals[s]).multiplyScalar(vert.x);binormal.copy(splineTube.binormals[s]).multiplyScalar(vert.y);position2.copy(extrudePts[s]).add(normal).add(binormal);v(position2.x,position2.y,position2.z)}}}
4431for(b=bevelSegments-1;b>=0;b --){t=b/bevelSegments;z=bevelThickness*Math.cos(t*Math.PI/2);bs=bevelSize*Math.sin(t*Math.PI/2);for(i=0,il=contour.length;i<il;i ++){vert=scalePt2(contour[i],contourMovements[i],bs);v(vert.x,vert.y,depth+z)}
4432for(h=0,hl=holes.length;h<hl;h ++){ahole=holes[h];oneHoleMovements=holesMovements[h];for(i=0,il=ahole.length;i<il;i ++){vert=scalePt2(ahole[i],oneHoleMovements[i],bs);if(!extrudeByPath){v(vert.x,vert.y,depth+z)}else{v(vert.x,vert.y+extrudePts[steps-1].y,extrudePts[steps-1].x+z)}}}}
4433buildLidFaces();buildSideFaces();function buildLidFaces(){var start=verticesArray.length/3;if(bevelEnabled){var layer=0;var offset=vlen*layer;for(i=0;i<flen;i ++){face=faces[i];f3(face[2]+offset,face[1]+offset,face[0]+offset)}
4434layer=steps+bevelSegments*2;offset=vlen*layer;for(i=0;i<flen;i ++){face=faces[i];f3(face[0]+offset,face[1]+offset,face[2]+offset)}}else{for(i=0;i<flen;i ++){face=faces[i];f3(face[2],face[1],face[0])}
4435for(i=0;i<flen;i ++){face=faces[i];f3(face[0]+vlen*steps,face[1]+vlen*steps,face[2]+vlen*steps)}}
4436scope.addGroup(start,verticesArray.length/3-start,0)}
4437function buildSideFaces(){var start=verticesArray.length/3;var layeroffset=0;sidewalls(contour,layeroffset);layeroffset+=contour.length;for(h=0,hl=holes.length;h<hl;h ++){ahole=holes[h];sidewalls(ahole,layeroffset);layeroffset+=ahole.length}
4438scope.addGroup(start,verticesArray.length/3-start,1)}
4439function sidewalls(contour,layeroffset){var j,k;i=contour.length;while(-- i>=0){j=i;k=i-1;if(k<0)k=contour.length-1;var s=0,sl=steps+bevelSegments*2;for(s=0;s<sl;s ++){var slen1=vlen*s;var slen2=vlen*(s+1);var a=layeroffset+j+slen1,b=layeroffset+k+slen1,c=layeroffset+k+slen2,d=layeroffset+j+slen2;f4(a,b,c,d)}}}
4440function v(x,y,z){placeholder.push(x);placeholder.push(y);placeholder.push(z)}
4441function f3(a,b,c){addVertex(a);addVertex(b);addVertex(c);var nextIndex=verticesArray.length/3;var uvs=uvgen.generateTopUV(scope,verticesArray,nextIndex-3,nextIndex-2,nextIndex-1);addUV(uvs[0]);addUV(uvs[1]);addUV(uvs[2])}
4442function f4(a,b,c,d){addVertex(a);addVertex(b);addVertex(d);addVertex(b);addVertex(c);addVertex(d);var nextIndex=verticesArray.length/3;var uvs=uvgen.generateSideWallUV(scope,verticesArray,nextIndex-6,nextIndex-3,nextIndex-2,nextIndex-1);addUV(uvs[0]);addUV(uvs[1]);addUV(uvs[3]);addUV(uvs[1]);addUV(uvs[2]);addUV(uvs[3])}
4443function addVertex(index){verticesArray.push(placeholder[index*3+0]);verticesArray.push(placeholder[index*3+1]);verticesArray.push(placeholder[index*3+2])}
4444function addUV(vector2){uvArray.push(vector2.x);uvArray.push(vector2.y)}}}
4445ExtrudeBufferGeometry.prototype=Object.create(BufferGeometry.prototype);ExtrudeBufferGeometry.prototype.constructor=ExtrudeBufferGeometry;ExtrudeBufferGeometry.prototype.toJSON=function(){var data=BufferGeometry.prototype.toJSON.call(this);var shapes=this.parameters.shapes;var options=this.parameters.options;return toJSON(shapes,options,data)};var WorldUVGenerator={generateTopUV:function(geometry,vertices,indexA,indexB,indexC){var a_x=vertices[indexA*3];
vendor: 7,301 bytes, lines 4445-4460
4445var a_y=vertices[indexA*3+1];var b_x=vertices[indexB*3];var b_y=vertices[indexB*3+1];var c_x=vertices[indexC*3];var c_y=vertices[indexC*3+1];return[new Vector2(a_x,a_y),new Vector2(b_x,b_y),new Vector2(c_x,c_y)]},generateSideWallUV:function(geometry,vertices,indexA,indexB,indexC,indexD){var a_x=vertices[indexA*3];var a_y=vertices[indexA*3+1];var a_z=vertices[indexA*3+2];var b_x=vertices[indexB*3];var b_y=vertices[indexB*3+1];var b_z=vertices[indexB*3+2];var c_x=vertices[indexC*3];var c_y=vertices[indexC*3+1];var c_z=vertices[indexC*3+2];var d_x=vertices[indexD*3];var d_y=vertices[indexD*3+1];var d_z=vertices[indexD*3+2];if(Math.abs(a_y-b_y)<0.01){return[new Vector2(a_x,1-a_z),new Vector2(b_x,1-b_z),new Vector2(c_x,1-c_z),new Vector2(d_x,1-d_z)]}else{return[new Vector2(a_y,1-a_z),new Vector2(b_y,1-b_z),new Vector2(c_y,1-c_z),new Vector2(d_y,1-d_z)]}}};function toJSON(shapes,options,data){data.shapes=[];if(Array.isArray(shapes)){for(var i=0,l=shapes.length;i<l;i ++){var shape=shapes[i];data.shapes.push(shape.uuid)}}else{data.shapes.push(shapes.uuid)}
4446if(options.extrudePath!==undefined)data.options.extrudePath=options.extrudePath.toJSON();return data}
4447function TextGeometry(text,parameters){Geometry.call(this);this.type='TextGeometry';this.parameters={text:text,parameters:parameters};this.fromBufferGeometry(new TextBufferGeometry(text,parameters));this.mergeVertices()}
4448TextGeometry.prototype=Object.create(Geometry.prototype);TextGeometry.prototype.constructor=TextGeometry;function TextBufferGeometry(text,parameters){parameters=parameters||{};var font=parameters.font;if(!(font&&font.isFont)){console.error('THREE.TextGeometry: font parameter is not an instance of THREE.Font.');return new Geometry()}
4449var shapes=font.generateShapes(text,parameters.size,parameters.curveSegments);parameters.depth=parameters.height!==undefined?parameters.height:50;if(parameters.bevelThickness===undefined)parameters.bevelThickness=10;if(parameters.bevelSize===undefined)parameters.bevelSize=8;if(parameters.bevelEnabled===undefined)parameters.bevelEnabled=!1;ExtrudeBufferGeometry.call(this,shapes,parameters);this.type='TextBufferGeometry'}
4450TextBufferGeometry.prototype=Object.create(ExtrudeBufferGeometry.prototype);TextBufferGeometry.prototype.constructor=TextBufferGeometry;function SphereGeometry(radius,widthSegments,heightSegments,phiStart,phiLength,thetaStart,thetaLength){Geometry.call(this);this.type='SphereGeometry';this.parameters={radius:radius,widthSegments:widthSegments,heightSegments:heightSegments,phiStart:phiStart,phiLength:phiLength,thetaStart:thetaStart,thetaLength:thetaLength};this.fromBufferGeometry(new SphereBufferGeometry(radius,widthSegments,heightSegments,phiStart,phiLength,thetaStart,thetaLength));this.mergeVertices()}
4451SphereGeometry.prototype=Object.create(Geometry.prototype);SphereGeometry.prototype.constructor=SphereGeometry;function SphereBufferGeometry(radius,widthSegments,heightSegments,phiStart,phiLength,thetaStart,thetaLength){BufferGeometry.call(this);this.type='SphereBufferGeometry';this.parameters={radius:radius,widthSegments:widthSegments,heightSegments:heightSegments,phiStart:phiStart,phiLength:phiLength,thetaStart:thetaStart,thetaLength:thetaLength};radius=radius||1;widthSegments=Math.max(3,Math.floor(widthSegments)||8);heightSegments=Math.max(2,Math.floor(heightSegments)||6);phiStart=phiStart!==undefined?phiStart:0;phiLength=phiLength!==undefined?phiLength:Math.PI*2;thetaStart=thetaStart!==undefined?thetaStart:0;thetaLength=thetaLength!==undefined?thetaLength:Math.PI;var thetaEnd=thetaStart+thetaLength;var ix,iy;var index=0;var grid=[];var vertex=new Vector3();var normal=new Vector3();var indices=[];var vertices=[];var normals=[];var uvs=[];for(iy=0;iy<=heightSegments;iy ++){var verticesRow=[];var v=iy/heightSegments;for(ix=0;ix<=widthSegments;ix ++){var u=ix/widthSegments;vertex.x=-radius*Math.cos(phiStart+u*phiLength)*Math.sin(thetaStart+v*thetaLength);vertex.y=radius*Math.cos(thetaStart+v*thetaLength);vertex.z=radius*Math.sin(phiStart+u*phiLength)*Math.sin(thetaStart+v*thetaLength);vertices.push(vertex.x,vertex.y,vertex.z);normal.set(vertex.x,vertex.y,vertex.z).normalize();normals.push(normal.x,normal.y,normal.z);uvs.push(u,1-v);verticesRow.push(index ++)}
4452grid.push(verticesRow)}
4453for(iy=0;iy<heightSegments;iy ++){for(ix=0;ix<widthSegments;ix ++){var a=grid[iy][ix+1];var b=grid[iy][ix];var c=grid[iy+1][ix];var d=grid[iy+1][ix+1];if(iy!==0||thetaStart>0)indices.push(a,b,d);if(iy!==heightSegments-1||thetaEnd<Math.PI)indices.push(b,c,d);}}
4454this.setIndex(indices);this.addAttribute('position',new Float32BufferAttribute(vertices,3));this.addAttribute('normal',new Float32BufferAttribute(normals,3));this.addAttribute('uv',new Float32BufferAttribute(uvs,2))}
4455SphereBufferGeometry.prototype=Object.create(BufferGeometry.prototype);SphereBufferGeometry.prototype.constructor=SphereBufferGeometry;function RingGeometry(innerRadius,outerRadius,thetaSegments,phiSegments,thetaStart,thetaLength){Geometry.call(this);this.type='RingGeometry';this.parameters={innerRadius:innerRadius,outerRadius:outerRadius,thetaSegments:thetaSegments,phiSegments:phiSegments,thetaStart:thetaStart,thetaLength:thetaLength};this.fromBufferGeometry(new RingBufferGeometry(innerRadius,outerRadius,thetaSegments,phiSegments,thetaStart,thetaLength));this.mergeVertices()}
4456RingGeometry.prototype=Object.create(Geometry.prototype);RingGeometry.prototype.constructor=RingGeometry;function RingBufferGeometry(innerRadius,outerRadius,thetaSegments,phiSegments,thetaStart,thetaLength){BufferGeometry.call(this);this.type='RingBufferGeometry';this.parameters={innerRadius:innerRadius,outerRadius:outerRadius,thetaSegments:thetaSegments,phiSegments:phiSegments,thetaStart:thetaStart,thetaLength:thetaLength};innerRadius=innerRadius||0.5;outerRadius=outerRadius||1;thetaStart=thetaStart!==undefined?thetaStart:0;thetaLength=thetaLength!==undefined?thetaLength:Math.PI*2;thetaSegments=thetaSegments!==undefined?Math.max(3,thetaSegments):8;phiSegments=phiSegments!==undefined?Math.max(1,phiSegments):1;var indices=[];var vertices=[];var normals=[];var uvs=[];var segment;var radius=innerRadius;var radiusStep=((outerRadius-innerRadius)/phiSegments);var vertex=new Vector3();var uv=new Vector2();var j,i;for(j=0;j<=phiSegments;j ++){for(i=0;i<=thetaSegments;i ++){segment=thetaStart+i/thetaSegments*thetaLength;vertex.x=radius*Math.cos(segment);vertex.y=radius*Math.sin(segment);vertices.push(vertex.x,vertex.y,vertex.z);normals.push(0,0,1);uv.x=(vertex.x/outerRadius+1)/2;uv.y=(vertex.y/outerRadius+1)/2;uvs.push(uv.x,uv.y)}
4457radius+=radiusStep}
4458for(j=0;j<phiSegments;j ++){var thetaSegmentLevel=j*(thetaSegments+1);for(i=0;i<thetaSegments;i ++){segment=i+thetaSegmentLevel;var a=segment;var b=segment+thetaSegments+1;var c=segment+thetaSegments+2;var d=segment+1;indices.push(a,b,d);indices.push(b,c,d)}}
4459this.setIndex(indices);this.addAttribute('position',new Float32BufferAttribute(vertices,3));this.addAttribute('normal',new Float32BufferAttribute(normals,3));this.addAttribute('uv',new Float32BufferAttribute(uvs,2))}
4460RingBufferGeometry.prototype=Object.create(BufferGeometry.prototype);RingBufferGeometry.prototype.constructor=RingBufferGeometry;function LatheGeometry(points,segments,phiStart,phiLength){Geometry.call(this);this.type='LatheGeometry';
4460this.parameters={points:points,segments:segments,phiStart:phiStart,phiLength:phiLength};this.fromBufferGeometry(new LatheBufferGeometry(points,segments,phiStart,phiLength));this.mergeVertices()}
4461LatheGeometry.prototype=Object.create(Geometry.prototype);LatheGeometry.prototype.constructor=LatheGeometry;function LatheBufferGeometry(points,segments,phiStart,phiLength){BufferGeometry.call(this);this.type='LatheBufferGeometry';this.parameters={points:points,segments:segments,phiStart:phiStart,phiLength:phiLength};segments=Math.floor(segments)||12;phiStart=phiStart||0;phiLength=phiLength||Math.PI*2;phiLength=_Math.clamp(phiLength,0,Math.PI*2);var indices=[];var vertices=[];var uvs=[];var base;var inverseSegments=1.0/segments;var vertex=new Vector3();var uv=new Vector2();var i,j;for(i=0;i<=segments;i ++){var phi=phiStart+i*inverseSegments*phiLength;var sin=Math.sin(phi);var cos=Math.cos(phi);for(j=0;j<=(points.length-1);j ++){vertex.x=points[j].x*sin;vertex.y=points[j].y;vertex.z=points[j].x*cos;vertices.push(vertex.x,vertex.y,vertex.z);uv.x=i/segments;uv.y=j/(points.length-1);uvs.push(uv.x,uv.y)}}
4462for(i=0;i<segments;i ++){for(j=0;j<(points.length-1);j ++){base=j+i*points.length;var a=base;var b=base+points.length;var c=base+points.length+1;var d=base+1;indices.push(a,b,d);indices.push(b,c,d)}}
4463this.setIndex(indices);this.addAttribute('position',new Float32BufferAttribute(vertices,3));this.addAttribute('uv',new Float32BufferAttribute(uvs,2));this.computeVertexNormals();if(phiLength===Math.PI*2){var normals=this.attributes.normal.array;var n1=new Vector3();var n2=new Vector3();var n=new Vector3();base=segments*points.length*3;for(i=0,j=0;i<points.length;i ++,j+=3){n1.x=normals[j+0];n1.y=normals[j+1];n1.z=normals[j+2];n2.x=normals[base+j+0];n2.y=normals[base+j+1];n2.z=normals[base+j+2];n.addVectors(n1,n2).normalize();normals[j+0]=normals[base+j+0]=n.x;normals[j+1]=normals[base+j+1]=n.y;normals[j+2]=normals[base+j+2]=n.z}}}
4464LatheBufferGeometry.prototype=Object.create(BufferGeometry.prototype);LatheBufferGeometry.prototype.constructor=LatheBufferGeometry;function ShapeGeometry(shapes,curveSegments){Geometry.call(this);this.type='ShapeGeometry';if(typeof curveSegments==='object'){console.warn('THREE.ShapeGeometry: Options parameter has been removed.');curveSegments=curveSegments.curveSegments}
4465this.parameters={shapes:shapes,curveSegments:curveSegments};this.fromBufferGeometry(new ShapeBufferGeometry(shapes,curveSegments));this.mergeVertices()}
4466ShapeGeometry.prototype=Object.create(Geometry.prototype);ShapeGeometry.prototype.constructor=ShapeGeometry;ShapeGeometry.prototype.toJSON=function(){var data=Geometry.prototype.toJSON.call(this);var shapes=this.parameters.shapes;return toJSON$1(shapes,data)};function ShapeBufferGeometry(shapes,curveSegments){BufferGeometry.call(this);this.type='ShapeBufferGeometry';this.parameters={shapes:shapes,curveSegments:curveSegments};curveSegments=curveSegments||12;var indices=[];var vertices=[];var normals=[];var uvs=[];var groupStart=0;var groupCount=0;if(Array.isArray(shapes)===!1){addShape(shapes)}else{for(var i=0;i<shapes.length;i ++){addShape(shapes[i]);this.addGroup(groupStart,groupCount,i);groupStart+=groupCount;groupCount=0}}
4467this.setIndex(indices);this.addAttribute('position',new Float32BufferAttribute(vertices,3));this.addAttribute('normal',new Float32BufferAttribute(normals,3));this.addAttribute('uv',new Float32BufferAttribute(uvs,2));function addShape(shape){var i,l,shapeHole;var indexOffset=vertices.length/3;var points=shape.extractPoints(curveSegments);var shapeVertices=points.shape;var shapeHoles=points.holes;if(ShapeUtils.isClockWise(shapeVertices)===!1){shapeVertices=shapeVertices.reverse();for(i=0,l=shapeHoles.length;i<l;i ++){shapeHole=shapeHoles[i];if(ShapeUtils.isClockWise(shapeHole)===!0){shapeHoles[i]=shapeHole.reverse()}}}
4468var faces=ShapeUtils.triangulateShape(shapeVertices,shapeHoles);for(i=0,l=shapeHoles.length;i<l;i ++){shapeHole=shapeHoles[i];shapeVertices=shapeVertices.concat(shapeHole)}
4469for(i=0,l=shapeVertices.length;i<l;i ++){var vertex=shapeVertices[i];vertices.push(vertex.x,vertex.y,0);normals.push(0,0,1);uvs.push(vertex.x,vertex.y)}
4470for(i=0,l=faces.length;i<l;i ++){var face=faces[i];var a=face[0]+indexOffset;var b=face[1]+indexOffset;var c=face[2]+indexOffset;indices.push(a,b,c);groupCount+=3}}}
4471ShapeBufferGeometry.prototype=Object.create(BufferGeometry.prototype);ShapeBufferGeometry.prototype.constructor=ShapeBufferGeometry;ShapeBufferGeometry.prototype.toJSON=function(){var data=BufferGeometry.prototype.toJSON.call(this);var shapes=this.parameters.shapes;return toJSON$1(shapes,data)};function toJSON$1(shapes,data){data.shapes=[];if(Array.isArray(shapes)){for(var i=0,l=shapes.length;i<l;i ++){var shape=shapes[i];data.shapes.push(shape.uuid)}}else{data.shapes.push(shapes.uuid)}
4472return data}
4473function EdgesGeometry(geometry,thresholdAngle){BufferGeometry.call(this);this.type='EdgesGeometry';this.parameters={thresholdAngle:thresholdAngle};thresholdAngle=(thresholdAngle!==undefined)?thresholdAngle:1;var vertices=[];var thresholdDot=Math.cos(_Math.DEG2RAD*thresholdAngle);var edge=[0,0],edges={},edge1,edge2;var key,keys=['a','b','c'];var geometry2;if(geometry.isBufferGeometry){geometry2=new Geometry();geometry2.fromBufferGeometry(geometry)}else{geometry2=geometry.clone()}
4474geometry2.mergeVertices();geometry2.computeFaceNormals();var sourceVertices=geometry2.vertices;var faces=geometry2.faces;for(var i=0,l=faces.length;i<l;i ++){var face=faces[i];for(var j=0;j<3;j ++){edge1=face[keys[j]];edge2=face[keys[(j+1)%3]];edge[0]=Math.min(edge1,edge2);edge[1]=Math.max(edge1,edge2);key=edge[0]+','+edge[1];if(edges[key]===undefined){edges[key]={index1:edge[0],index2:edge[1],face1:i,face2:undefined}}else{edges[key].face2=i}}}
4475for(key in edges){var e=edges[key];if(e.face2===undefined||faces[e.face1].normal.dot(faces[e.face2].normal)<=thresholdDot){var vertex=sourceVertices[e.index1];vertices.push(vertex.x,vertex.y,vertex.z);vertex=sourceVertices[e.index2];vertices.push(vertex.x,vertex.y,vertex.z)}}
4476this.addAttribute('position',new Float32BufferAttribute(vertices,3))}
4477EdgesGeometry.prototype=Object.create(BufferGeometry.prototype);EdgesGeometry.prototype.constructor=EdgesGeometry;function CylinderGeometry(radiusTop,radiusBottom,height,radialSegments,heightSegments,openEnded,thetaStart,thetaLength){Geometry.call(this);this.type='CylinderGeometry';
4477this.parameters={radiusTop:radiusTop,radiusBottom:radiusBottom,height:height,radialSegments:radialSegments,heightSegments:heightSegments,openEnded:openEnded,thetaStart:thetaStart,thetaLength:thetaLength};this.fromBufferGeometry(new CylinderBufferGeometry(radiusTop,radiusBottom,height,radialSegments,heightSegments,openEnded,thetaStart,thetaLength));this.mergeVertices()}
4478CylinderGeometry.prototype=Object.create(Geometry.prototype);CylinderGeometry.prototype.constructor=CylinderGeometry;function CylinderBufferGeometry(radiusTop,radiusBottom,height,radialSegments,heightSegments,openEnded,thetaStart,thetaLength){BufferGeometry.call(this);this.type='CylinderBufferGeometry';this.parameters={radiusTop:radiusTop,radiusBottom:radiusBottom,height:height,radialSegments:radialSegments,heightSegments:heightSegments,openEnded:openEnded,thetaStart:thetaStart,thetaLength:thetaLength};var scope=this;radiusTop=radiusTop!==undefined?radiusTop:1;radiusBottom=radiusBottom!==undefined?radiusBottom:1;height=height||1;radialSegments=Math.floor(radialSegments)||8;heightSegments=Math.floor(heightSegments)||1;openEnded=openEnded!==undefined?openEnded:!1;thetaStart=thetaStart!==undefined?thetaStart:0.0;thetaLength=thetaLength!==undefined?thetaLength:Math.PI*2;var indices=[];var vertices=[];var normals=[];var uvs=[];var index=0;var indexArray=[];var halfHeight=height/2;var groupStart=0;generateTorso();if(openEnded===!1){if(radiusTop>0)generateCap(!0);if(radiusBottom>0)generateCap(!1);}
4479this.setIndex(indices);this.addAttribute('position',new Float32BufferAttribute(vertices,3));this.addAttribute('normal',new Float32BufferAttribute(normals,3));this.addAttribute('uv',new Float32BufferAttribute(uvs,2));function generateTorso(){var x,y;var normal=new Vector3();var vertex=new Vector3();var groupCount=0;var slope=(radiusBottom-radiusTop)/height;for(y=0;y<=heightSegments;y ++){var indexRow=[];var v=y/heightSegments;var radius=v*(radiusBottom-radiusTop)+radiusTop;for(x=0;x<=radialSegments;x ++){var u=x/radialSegments;var theta=u*thetaLength+thetaStart;var sinTheta=Math.sin(theta);var cosTheta=Math.cos(theta);vertex.x=radius*sinTheta;vertex.y=-v*height+halfHeight;vertex.z=radius*cosTheta;vertices.push(vertex.x,vertex.y,vertex.z);normal.set(sinTheta,slope,cosTheta).normalize();normals.push(normal.x,normal.y,normal.z);uvs.push(u,1-v);indexRow.push(index ++)}
4480indexArray.push(indexRow)}
4481for(x=0;x<radialSegments;x ++){for(y=0;y<heightSegments;y ++){var a=indexArray[y][x];var b=indexArray[y+1][x];var c=indexArray[y+1][x+1];var d=indexArray[y][x+1];indices.push(a,b,d);indices.push(b,c,d);groupCount+=6}}
4482scope.addGroup(groupStart,groupCount,0);groupStart+=groupCount}
4483function generateCap(top){var x,centerIndexStart,centerIndexEnd;var uv=new Vector2();var vertex=new Vector3();var groupCount=0;var radius=(top===!0)?radiusTop:radiusBottom;var sign=(top===!0)?1:-1;centerIndexStart=index;for(x=1;x<=radialSegments;x ++){vertices.push(0,halfHeight*sign,0);normals.push(0,sign,0);uvs.push(0.5,0.5);index ++}
4484centerIndexEnd=index;for(x=0;x<=radialSegments;x ++){var u=x/radialSegments;var theta=u*thetaLength+thetaStart;var cosTheta=Math.cos(theta);var sinTheta=Math.sin(theta);vertex.x=radius*sinTheta;vertex.y=halfHeight*sign;vertex.z=radius*cosTheta;vertices.push(vertex.x,vertex.y,vertex.z);normals.push(0,sign,0);uv.x=(cosTheta*0.5)+0.5;uv.y=(sinTheta*0.5*sign)+0.5;uvs.push(uv.x,uv.y);index ++}
4485for(x=0;x<radialSegments;x ++){var c=centerIndexStart+x;var i=centerIndexEnd+x;if(top===!0){indices.push(i,i+1,c)}else{indices.push(i+1,i,c)}
4486groupCount+=3}
4487scope.addGroup(groupStart,groupCount,top===!0?1:2);groupStart+=groupCount}}
4488CylinderBufferGeometry.prototype=Object.create(BufferGeometry.prototype);CylinderBufferGeometry.prototype.constructor=CylinderBufferGeometry;function ConeGeometry(radius,height,radialSegments,heightSegments,openEnded,thetaStart,thetaLength){CylinderGeometry.call(this,0,radius,height,radialSegments,heightSegments,openEnded,thetaStart,thetaLength);this.type='ConeGeometry';this.parameters={radius:radius,height:height,radialSegments:radialSegments,heightSegments:heightSegments,openEnded:openEnded,thetaStart:thetaStart,thetaLength:thetaLength}}
4489ConeGeometry.prototype=Object.create(CylinderGeometry.prototype);ConeGeometry.prototype.constructor=ConeGeometry;function ConeBufferGeometry(radius,height,radialSegments,heightSegments,openEnded,thetaStart,thetaLength){CylinderBufferGeometry.call(this,0,radius,height,radialSegments,heightSegments,openEnded,thetaStart,thetaLength);this.type='ConeBufferGeometry';
4489this.parameters={radius:radius,height:height,radialSegments:radialSegments,heightSegments:heightSegments,openEnded:openEnded,thetaStart:thetaStart,thetaLength:thetaLength}}
4490ConeBufferGeometry.prototype=Object.create(CylinderBufferGeometry.prototype);ConeBufferGeometry.prototype.constructor=ConeBufferGeometry;function CircleGeometry(radius,segments,thetaStart,thetaLength){Geometry.call(this);this.type='CircleGeometry';this.parameters={radius:radius,segments:segments,thetaStart:thetaStart,thetaLength:thetaLength};this.fromBufferGeometry(new CircleBufferGeometry(radius,segments,thetaStart,thetaLength));this.mergeVertices()}
4491CircleGeometry.prototype=Object.create(Geometry.prototype);CircleGeometry.prototype.constructor=CircleGeometry;function CircleBufferGeometry(radius,segments,thetaStart,thetaLength){BufferGeometry.call(this);this.type='CircleBufferGeometry';this.parameters={radius:radius,segments:segments,thetaStart:thetaStart,thetaLength:thetaLength};radius=radius||1;segments=segments!==undefined?Math.max(3,segments):8;thetaStart=thetaStart!==undefined?thetaStart:0;thetaLength=thetaLength!==undefined?thetaLength:Math.PI*2;var indices=[];var vertices=[];var normals=[];var uvs=[];var i,s;var vertex=new Vector3();var uv=new Vector2();vertices.push(0,0,0);normals.push(0,0,1);uvs.push(0.5,0.5);for(s=0,i=3;s<=segments;s ++,i+=3){var segment=thetaStart+s/segments*thetaLength;vertex.x=radius*Math.cos(segment);vertex.y=radius*Math.sin(segment);vertices.push(vertex.x,vertex.y,vertex.z);normals.push(0,0,1);uv.x=(vertices[i]/radius+1)/2;uv.y=(vertices[i+1]/radius+1)/2;uvs.push(uv.x,uv.y)}
4492for(i=1;i<=segments;i ++){indices.push(i,i+1,0)}
4493this.setIndex(indices);this.addAttribute('position',new Float32BufferAttribute(vertices,3));this.addAttribute('normal',new Float32BufferAttribute(normals,3));this.addAttribute('uv',new Float32BufferAttribute(uvs,2))}
4494CircleBufferGeometry.prototype=Object.create(BufferGeometry.prototype);CircleBufferGeometry.prototype.constructor=CircleBufferGeometry;var Geometries=Object.freeze({WireframeGeometry:WireframeGeometry,ParametricGeometry:ParametricGeometry,ParametricBufferGeometry:ParametricBufferGeometry,TetrahedronGeometry:TetrahedronGeometry,TetrahedronBufferGeometry:TetrahedronBufferGeometry,OctahedronGeometry:OctahedronGeometry,OctahedronBufferGeometry:OctahedronBufferGeometry,IcosahedronGeometry:IcosahedronGeometry,IcosahedronBufferGeometry:IcosahedronBufferGeometry,DodecahedronGeometry:DodecahedronGeometry,DodecahedronBufferGeometry:DodecahedronBufferGeometry,PolyhedronGeometry:PolyhedronGeometry,PolyhedronBufferGeometry:PolyhedronBufferGeometry,TubeGeometry:TubeGeometry,TubeBufferGeometry:TubeBufferGeometry,TorusKnotGeometry:TorusKnotGeometry,TorusKnotBufferGeometry:TorusKnotBufferGeometry,TorusGeometry:TorusGeometry,TorusBufferGeometry:TorusBufferGeometry,TextGeometry:TextGeometry,TextBufferGeometry:TextBufferGeometry,SphereGeometry:SphereGeometry,SphereBufferGeometry:SphereBufferGeometry,RingGeometry:RingGeometry,RingBufferGeometry:RingBufferGeometry,PlaneGeometry:PlaneGeometry,PlaneBufferGeometry:PlaneBufferGeometry,LatheGeometry:LatheGeometry,LatheBufferGeometry:LatheBufferGeometry,ShapeGeometry:ShapeGeometry,ShapeBufferGeometry:ShapeBufferGeometry,ExtrudeGeometry:ExtrudeGeometry,ExtrudeBufferGeometry:ExtrudeBufferGeometry,EdgesGeometry:EdgesGeometry,ConeGeometry:ConeGeometry,ConeBufferGeometry:ConeBufferGeometry,CylinderGeometry:CylinderGeometry,CylinderBufferGeometry:CylinderBufferGeometry,CircleGeometry:CircleGeometry,CircleBufferGeometry:CircleBufferGeometry,BoxGeometry:BoxGeometry,BoxBufferGeometry:BoxBufferGeometry});function ShadowMaterial(parameters){Material.call(this);this.type='ShadowMaterial';this.color=new Color(0x000000);this.transparent=!0;this.setValues(parameters)}
4495ShadowMaterial.prototype=Object.create(Material.prototype);ShadowMaterial.prototype.constructor=ShadowMaterial;ShadowMaterial.prototype.isShadowMaterial=!0;ShadowMaterial.prototype.copy=function(source){Material.prototype.copy.call(this,source);this.color.copy(source.color);return this};function RawShaderMaterial(parameters){ShaderMaterial.call(this,parameters);this.type='RawShaderMaterial'}
4496RawShaderMaterial.prototype=Object.create(ShaderMaterial.prototype);RawShaderMaterial.prototype.constructor=RawShaderMaterial;RawShaderMaterial.prototype.isRawShaderMaterial=!0;function MeshStandardMaterial(parameters){Material.call(this);this.defines={'STANDARD':''};this.type='MeshStandardMaterial';this.color=new Color(0xffffff);this.roughness=0.5;this.metalness=0.5;this.map=null;this.lightMap=null;this.lightMapIntensity=1.0;this.aoMap=null;this.aoMapIntensity=1.0;this.emissive=new Color(0x000000);this.emissiveIntensity=1.0;this.emissiveMap=null;this.bumpMap=null;this.bumpScale=1;this.normalMap=null;this.normalScale=new Vector2(1,1);this.displacementMap=null;this.displacementScale=1;this.displacementBias=0;this.roughnessMap=null;this.metalnessMap=null;this.alphaMap=null;this.envMap=null;this.envMapIntensity=1.0;this.refractionRatio=0.98;this.wireframe=!1;this.wireframeLinewidth=1;this.wireframeLinecap='round';this.wireframeLinejoin='round';this.skinning=!1;this.morphTargets=!1;this.morphNormals=!1;this.setValues(parameters)}
4497MeshStandardMaterial.prototype=Object.create(Material.prototype);MeshStandardMaterial.prototype.constructor=MeshStandardMaterial;MeshStandardMaterial.prototype.isMeshStandardMaterial=!0;MeshStandardMaterial.prototype.copy=function(source){Material.prototype.copy.call(this,source);this.defines={'STANDARD':''};this.color.copy(source.color);this.roughness=source.roughness;this.metalness=source.metalness;this.map=source.map;this.lightMap=source.lightMap;this.lightMapIntensity=source.lightMapIntensity;this.aoMap=source.aoMap;this.aoMapIntensity=source.aoMapIntensity;this.emissive.copy(source.emissive);this.emissiveMap=source.emissiveMap;this.emissiveIntensity=source.emissiveIntensity;this.bumpMap=source.bumpMap;this.bumpScale=source.bumpScale;this.normalMap=source.normalMap;this.normalScale.copy(source.normalScale);this.displacementMap=source.displacementMap;this.displacementScale=source.displacementScale;this.displacementBias=source.displacementBias;this.roughnessMap=source.roughnessMap;this.metalnessMap=source.metalnessMap;this.alphaMap=source.alphaMap;this.envMap=source.envMap;this.envMapIntensity=source.envMapIntensity;this.refractionRatio=source.refractionRatio;this.wireframe=source.wireframe;this.wireframeLinewidth=source.wireframeLinewidth;this.wireframeLinecap=source.wireframeLinecap;this.wireframeLinejoin=source.wireframeLinejoin;this.skinning=source.skinning;this.morphTargets=source.morphTargets;this.morphNormals=source.morphNormals;return this};function MeshPhysicalMaterial(parameters){MeshStandardMaterial.call(this);this.defines={'PHYSICAL':''};this.type='MeshPhysicalMaterial';this.reflectivity=0.5;this.clearCoat=0.0;this.clearCoatRoughness=0.0;this.setValues(parameters)}
4498MeshPhysicalMaterial.prototype=Object.create(MeshStandardMaterial.prototype);MeshPhysicalMaterial.prototype.constructor=MeshPhysicalMaterial;MeshPhysicalMaterial.prototype.isMeshPhysicalMaterial=!0;MeshPhysicalMaterial.prototype.copy=function(source){MeshStandardMaterial.prototype.copy.call(this,source);this.defines={'PHYSICAL':''};this.reflectivity=source.reflectivity;this.clearCoat=source.clearCoat;this.clearCoatRoughness=source.clearCoatRoughness;return this};function MeshPhongMaterial(parameters){Material.call(this);this.type='MeshPhongMaterial';this.color=new Color(0xffffff);this.specular=new Color(0x111111);this.shininess=30;this.map=null;this.lightMap=null;this.lightMapIntensity=1.0;this.aoMap=null;this.aoMapIntensity=1.0;this.emissive=new Color(0x000000);this.emissiveIntensity=1.0;this.emissiveMap=null;this.bumpMap=null;this.bumpScale=1;this.normalMap=null;this.normalScale=new Vector2(1,1);this.displacementMap=null;this.displacementScale=1;this.displacementBias=0;this.specularMap=null;this.alphaMap=null;this.envMap=null;this.combine=MultiplyOperation;this.reflectivity=1;this.refractionRatio=0.98;this.wireframe=!1;this.wireframeLinewidth=1;this.wireframeLinecap='round';this.wireframeLinejoin='round';this.skinning=!1;this.morphTargets=!1;this.morphNormals=!1;this.setValues(parameters)}
4499MeshPhongMaterial.prototype=Object.create(Material.prototype);MeshPhongMaterial.prototype.constructor=MeshPhongMaterial;MeshPhongMaterial.prototype.isMeshPhongMaterial=!0;MeshPhongMaterial.prototype.copy=function(source){Material.prototype.copy.call(this,source);this.color.copy(source.color);this.specular.copy(source.specular);this.shininess=source.shininess;this.map=source.map;this.lightMap=source.lightMap;this.lightMapIntensity=source.lightMapIntensity;this.aoMap=source.aoMap;this.aoMapIntensity=source.aoMapIntensity;this.emissive.copy(source.emissive);this.emissiveMap=source.emissiveMap;this.emissiveIntensity=source.emissiveIntensity;this.bumpMap=source.bumpMap;this.bumpScale=source.bumpScale;this.normalMap=source.normalMap;this.normalScale.copy(source.normalScale);this.displacementMap=source.displacementMap;this.displacementScale=source.displacementScale;this.displacementBias=source.displacementBias;this.specularMap=source.specularMap;this.alphaMap=source.alphaMap;this.envMap=source.envMap;this.combine=source.combine;this.reflectivity=source.reflectivity;this.refractionRatio=source.refractionRatio;this.wireframe=source.wireframe;this.wireframeLinewidth=source.wireframeLinewidth;this.wireframeLinecap=source.wireframeLinecap;this.wireframeLinejoin=source.wireframeLinejoin;this.skinning=source.skinning;this.morphTargets=source.morphTargets;this.morphNormals=source.morphNormals;return this};function MeshToonMaterial(parameters){MeshPhongMaterial.call(this);this.defines={'TOON':''};this.type='MeshToonMaterial';this.gradientMap=null;this.setValues(parameters)}
4500MeshToonMaterial.prototype=Object.create(MeshPhongMaterial.prototype);MeshToonMaterial.prototype.constructor=MeshToonMaterial;MeshToonMaterial.prototype.isMeshToonMaterial=!0;MeshToonMaterial.prototype.copy=function(source){MeshPhongMaterial.prototype.copy.call(this,source);this.gradientMap=source.gradientMap;return this};function MeshNormalMaterial(parameters){Material.call(this);this.type='MeshNormalMaterial';this.bumpMap=null;this.bumpScale=1;this.normalMap=null;this.normalScale=new Vector2(1,1);this.displacementMap=null;this.displacementScale=1;this.displacementBias=0;this.wireframe=!1;this.wireframeLinewidth=1;this.fog=!1;this.lights=!1;this.skinning=!1;this.morphTargets=!1;this.morphNormals=!1;this.setValues(parameters)}
4501MeshNormalMaterial.prototype=Object.create(Material.prototype);MeshNormalMaterial.prototype.constructor=MeshNormalMaterial;MeshNormalMaterial.prototype.isMeshNormalMaterial=!0;MeshNormalMaterial.prototype.copy=function(source){Material.prototype.copy.call(this,source);this.bumpMap=source.bumpMap;this.bumpScale=source.bumpScale;this.normalMap=source.normalMap;this.normalScale.copy(source.normalScale);this.displacementMap=source.displacementMap;this.displacementScale=source.displacementScale;this.displacementBias=source.displacementBias;this.wireframe=source.wireframe;this.wireframeLinewidth=source.wireframeLinewidth;this.skinning=source.skinning;this.morphTargets=source.morphTargets;this.morphNormals=source.morphNormals;return this};function MeshLambertMaterial(parameters){Material.call(this);this.type='MeshLambertMaterial';this.color=new Color(0xffffff);this.map=null;this.lightMap=null;this.lightMapIntensity=1.0;this.aoMap=null;this.aoMapIntensity=1.0;this.emissive=new Color(0x000000);this.emissiveIntensity=1.0;this.emissiveMap=null;this.specularMap=null;this.alphaMap=null;this.envMap=null;this.combine=MultiplyOperation;this.reflectivity=1;this.refractionRatio=0.98;this.wireframe=!1;this.wireframeLinewidth=1;this.wireframeLinecap='round';this.wireframeLinejoin='round';this.skinning=!1;this.morphTargets=!1;this.morphNormals=!1;this.setValues(parameters)}
4502MeshLambertMaterial.prototype=Object.create(Material.prototype);MeshLambertMaterial.prototype.constructor=MeshLambertMaterial;MeshLambertMaterial.prototype.isMeshLambertMaterial=!0;MeshLambertMaterial.prototype.copy=function(source){Material.prototype.copy.call(this,source);this.color.copy(source.color);this.map=source.map;this.lightMap=source.lightMap;this.lightMapIntensity=source.lightMapIntensity;this.aoMap=source.aoMap;this.aoMapIntensity=source.aoMapIntensity;this.emissive.copy(source.emissive);this.emissiveMap=source.emissiveMap;this.emissiveIntensity=source.emissiveIntensity;this.specularMap=source.specularMap;this.alphaMap=source.alphaMap;this.envMap=source.envMap;this.combine=source.combine;this.reflectivity=source.reflectivity;this.refractionRatio=source.refractionRatio;this.wireframe=source.wireframe;this.wireframeLinewidth=source.wireframeLinewidth;this.wireframeLinecap=source.wireframeLinecap;this.wireframeLinejoin=source.wireframeLinejoin;this.skinning=source.skinning;this.morphTargets=source.morphTargets;this.morphNormals=source.morphNormals;return this};function LineDashedMaterial(parameters){LineBasicMaterial.call(this);this.type='LineDashedMaterial';this.scale=1;this.dashSize=3;this.gapSize=1;this.setValues(parameters)}
4503LineDashedMaterial.prototype=Object.create(LineBasicMaterial.prototype);LineDashedMaterial.prototype.constructor=LineDashedMaterial;LineDashedMaterial.prototype.isLineDashedMaterial=!0;LineDashedMaterial.prototype.copy=function(source){LineBasicMaterial.prototype.copy.call(this,source);this.scale=source.scale;this.dashSize=source.dashSize;this.gapSize=source.gapSize;return this};var Materials=Object.freeze({ShadowMaterial:ShadowMaterial,SpriteMaterial:SpriteMaterial,RawShaderMaterial:RawShaderMaterial,ShaderMaterial:ShaderMaterial,PointsMaterial:PointsMaterial,MeshPhysicalMaterial:MeshPhysicalMaterial,MeshStandardMaterial:MeshStandardMaterial,MeshPhongMaterial:MeshPhongMaterial,MeshToonMaterial:MeshToonMaterial,MeshNormalMaterial:MeshNormalMaterial,MeshLambertMaterial:MeshLambertMaterial,MeshDepthMaterial:MeshDepthMaterial,MeshDistanceMaterial:MeshDistanceMaterial,MeshBasicMaterial:MeshBasicMaterial,LineDashedMaterial:LineDashedMaterial,LineBasicMaterial:LineBasicMaterial,Material:Material});var Cache={enabled:!1,files:{},add:function(key,file){if(this.enabled===!1)return;this.files[key]=file},get:function(key){if(this.enabled===!1)return;return this.files[key]},remove:function(key){delete this.files[key]},clear:function(){this.files={}}};function LoadingManager(onLoad,onProgress,onError){var scope=this;var isLoading=!1;var itemsLoaded=0;var itemsTotal=0;var urlModifier=undefined;this.onStart=undefined;this.onLoad=onLoad;this.onProgress=onProgress;this.onError=onError;this.itemStart=function(url){itemsTotal ++;if(isLoading===!1){if(scope.onStart!==undefined){scope.onStart(url,itemsLoaded,itemsTotal)}}
4504isLoading=!0};this.itemEnd=function(url){itemsLoaded ++;if(scope.onProgress!==undefined){scope.onProgress(url,itemsLoaded,itemsTotal)}
4505if(itemsLoaded===itemsTotal){isLoading=!1;if(scope.onLoad!==undefined){scope.onLoad()}}};this.itemError=function(url){if(scope.onError!==undefined){scope.onError(url)}
4505};this.resolveURL=function(url){if(urlModifier){return urlModifier(url)}
4506return url};this.setURLModifier=function(transform){urlModifier=transform;return this}}
4507var DefaultLoadingManager=new LoadingManager();var loading={};function FileLoader(manager){this.manager=(manager!==undefined)?manager:DefaultLoadingManager}
4508Object.assign(FileLoader.prototype,{load:function(url,onLoad,onProgress,onError){if(url===undefined)url='';if(this.path!==undefined)url=this.path+url;url=this.manager.resolveURL(url);var scope=this;var cached=Cache.get(url);if(cached!==undefined){scope.manager.itemStart(url);setTimeout(function(){if(onLoad)onLoad(cached);scope.manager.itemEnd(url)},0);return cached}
4509if(loading[url]!==undefined){loading[url].push({onLoad:onLoad,onProgress:onProgress,onError:onError});return}
4510var dataUriRegex=/^data:(.*?)(;base64)?,(.*)$/;var dataUriRegexResult=url.match(dataUriRegex);if(dataUriRegexResult){var mimeType=dataUriRegexResult[1];var isBase64=!!dataUriRegexResult[2];var data=dataUriRegexResult[3];data=window.decodeURIComponent(data);if(isBase64)data=window.atob(data);try{var response;var responseType=(this.responseType||'').toLowerCase();switch(responseType){case 'arraybuffer':case 'blob':var view=new Uint8Array(data.length);for(var i=0;i<data.length;i ++){view[i]=data.charCodeAt(i)}
4511if(responseType==='blob'){response=new Blob([view.buffer],{type:mimeType})}else{response=view.buffer}
4512break;case 'document':var parser=new DOMParser();response=parser.parseFromString(data,mimeType);break;case 'json':response=JSON.parse(data);break;default:response=data;break}
4513window.setTimeout(function(){if(onLoad)onLoad(response);scope.manager.itemEnd(url)},0)}catch(error){window.setTimeout(function(){if(onError)onError(error);scope.manager.itemEnd(url);scope.manager.itemError(url)},0)}}else{loading[url]=[];loading[url].push({onLoad:onLoad,onProgress:onProgress,onError:onError});var request=new XMLHttpRequest();request.open('GET',url,!0);request.addEventListener('load',function(event){var response=this.response;Cache.add(url,response);var callbacks=loading[url];delete loading[url];if(this.status===200||this.status===0){if(this.status===0)console.warn('THREE.FileLoader: HTTP Status 0 received.');for(var i=0,il=callbacks.length;i<il;i ++){var callback=callbacks[i];if(callback.onLoad)callback.onLoad(response);}
4514scope.manager.itemEnd(url)}else{for(var i=0,il=callbacks.length;i<il;i ++){var callback=callbacks[i];if(callback.onError)callback.onError(event);}
4515scope.manager.itemEnd(url);scope.manager.itemError(url)}},!1);request.addEventListener('progress',function(event){var callbacks=loading[url];for(var i=0,il=callbacks.length;i<il;i ++){var callback=callbacks[i];if(callback.onProgress)callback.onProgress(event);}},!1);request.addEventListener('error',function(event){var callbacks=loading[url];delete loading[url];for(var i=0,il=callbacks.length;i<il;i ++){var callback=callbacks[i];if(callback.onError)callback.onError(event);}
4516scope.manager.itemEnd(url);scope.manager.itemError(url)},!1);if(this.responseType!==undefined)request.responseType=this.responseType;if(this.withCredentials!==undefined)request.withCredentials=this.withCredentials;if(request.overrideMimeType)request.overrideMimeType(this.mimeType!==undefined?this.mimeType:'text/plain');for(var header in this.requestHeader){request.setRequestHeader(header,this.requestHeader[header])}
4517request.send(null)}
4518scope.manager.itemStart(url);return request},setPath:function(value){this.path=value;return this},setResponseType:function(value){this.responseType=value;return this},setWithCredentials:function(value){this.withCredentials=value;return this},setMimeType:function(value){this.mimeType=value;return this},setRequestHeader:function(value){this.requestHeader=value;return this}});function CompressedTextureLoader(manager){this.manager=(manager!==undefined)?manager:DefaultLoadingManager;this._parser=null}
4519Object.assign(CompressedTextureLoader.prototype,{load:function(url,onLoad,onProgress,onError){var scope=this;var images=[];var texture=new CompressedTexture();texture.image=images;var loader=new FileLoader(this.manager);loader.setPath(this.path);loader.setResponseType('arraybuffer');function loadTexture(i){loader.load(url[i],function(buffer){var texDatas=scope._parser(buffer,!0);images[i]={width:texDatas.width,height:texDatas.height,format:texDatas.format,mipmaps:texDatas.mipmaps};loaded+=1;if(loaded===6){if(texDatas.mipmapCount===1)
4520texture.minFilter=LinearFilter;texture.format=texDatas.format;texture.needsUpdate=!0;if(onLoad)onLoad(texture);}},onProgress,onError)}
4521if(Array.isArray(url)){var loaded=0;for(var i=0,il=url.length;i<il;++ i){loadTexture(i)}}else{loader.load(url,function(buffer){var texDatas=scope._parser(buffer,!0);if(texDatas.isCubemap){var faces=texDatas.mipmaps.length/texDatas.mipmapCount;for(var f=0;f<faces;f ++){images[f]={mipmaps:[]};for(var i=0;i<texDatas.mipmapCount;i ++){images[f].mipmaps.push(texDatas.mipmaps[f*texDatas.mipmapCount+i]);images[f].format=texDatas.format;images[f].width=texDatas.width;images[f].height=texDatas.height}}}else{texture.image.width=texDatas.width;texture.image.height=texDatas.height;texture.mipmaps=texDatas.mipmaps}
4522if(texDatas.mipmapCount===1){texture.minFilter=LinearFilter}
4523texture.format=texDatas.format;texture.needsUpdate=!0;if(onLoad)onLoad(texture);},onProgress,onError)}
4524return texture},setPath:function(value){this.path=value;return this}});function DataTextureLoader(manager){this.manager=(manager!==undefined)?manager:DefaultLoadingManager;this._parser=null}
4525Object.assign(DataTextureLoader.prototype,{load:function(url,onLoad,onProgress,onError){var scope=this;var texture=new DataTexture();var loader=new FileLoader(this.manager);loader.setResponseType('arraybuffer');loader.load(url,function(buffer){var texData=scope._parser(buffer);if(!texData)return;if(undefined!==texData.image){texture.image=texData.image}else if(undefined!==texData.data){texture.image.width=texData.width;texture.image.height=texData.height;texture.image.data=texData.data}
4526texture.wrapS=undefined!==texData.wrapS?texData.wrapS:ClampToEdgeWrapping;texture.wrapT=undefined!==texData.wrapT?texData.wrapT:ClampToEdgeWrapping;texture.magFilter=undefined!==texData.magFilter?texData.magFilter:LinearFilter;texture.minFilter=undefined!==texData.minFilter?texData.minFilter:LinearMipMapLinearFilter;texture.anisotropy=undefined!==texData.anisotropy?texData.anisotropy:1;if(undefined!==texData.format){texture.format=texData.format}
4527if(undefined!==texData.type){texture.type=texData.type}
4528if(undefined!==texData.mipmaps){texture.mipmaps=texData.mipmaps}
4529if(1===texData.mipmapCount){texture.minFilter=LinearFilter}
4530texture.needsUpdate=!0;if(onLoad)onLoad(texture,texData);},onProgress,onError);return texture}});function ImageLoader(manager){this.manager=(manager!==undefined)?manager:DefaultLoadingManager}
4531Object.assign(ImageLoader.prototype,{crossOrigin:'Anonymous',load:function(url,onLoad,onProgress,onError){if(url===undefined)url='';if(this.path!==undefined)url=this.path+url;url=this.manager.resolveURL(url);var scope=this;var cached=Cache.get(url);if(cached!==undefined){scope.manager.itemStart(url);setTimeout(function(){if(onLoad)onLoad(cached);scope.manager.itemEnd(url)},0);return cached}
4532var image=document.createElementNS('http://www.w3.org/1999/xhtml','img');function onImageLoad(){image.removeEventListener('load',onImageLoad,!1);image.removeEventListener('error',onImageError,!1);Cache.add(url,this);if(onLoad)onLoad(this);scope.manager.itemEnd(url)}
4533function onImageError(event){image.removeEventListener('load',onImageLoad,!1);image.removeEventListener('error',onImageError,!1);if(onError)onError(event);scope.manager.itemEnd(url);scope.manager.itemError(url)}
4533
4534image.addEventListener('load',onImageLoad,!1);image.addEventListener('error',onImageError,!1);if(url.substr(0,5)!=='data:'){if(this.crossOrigin!==undefined)image.crossOrigin=this.crossOrigin}
4535scope.manager.itemStart(url);image.src=url;return image},setCrossOrigin:function(value){this.crossOrigin=value;return this},setPath:function(value){this.path=value;return this}});function CubeTextureLoader(manager){this.manager=(manager!==undefined)?manager:DefaultLoadingManager}
4536Object.assign(CubeTextureLoader.prototype,{crossOrigin:'Anonymous',load:function(urls,onLoad,onProgress,onError){var texture=new CubeTexture();var loader=new ImageLoader(this.manager);loader.setCrossOrigin(this.crossOrigin);loader.setPath(this.path);var loaded=0;function loadTexture(i){loader.load(urls[i],function(image){texture.images[i]=image;loaded ++;if(loaded===6){texture.needsUpdate=!0;if(onLoad)onLoad(texture);}},undefined,onError)}
4537for(var i=0;i<urls.length;++ i){loadTexture(i)}
4538return texture},setCrossOrigin:function(value){this.crossOrigin=value;return this},setPath:function(value){this.path=value;return this}});function TextureLoader(manager){this.manager=(manager!==undefined)?manager:DefaultLoadingManager}
4539Object.assign(TextureLoader.prototype,{crossOrigin:'Anonymous',load:function(url,onLoad,onProgress,onError){var texture=new Texture();var loader=new ImageLoader(this.manager);loader.setCrossOrigin(this.crossOrigin);loader.setPath(this.path);loader.load(url,function(image){texture.image=image;var isJPEG=url.search(/\.(jpg|jpeg)$/)>0||url.search(/^data\:image\/jpeg/)===0;texture.format=isJPEG?RGBFormat:RGBAFormat;texture.needsUpdate=!0;if(onLoad!==undefined){onLoad(texture)}},onProgress,onError);return texture},setCrossOrigin:function(value){this.crossOrigin=value;return this},setPath:function(value){this.path=value;return this}});function Curve(){this.type='Curve';this.arcLengthDivisions=200}
4540Object.assign(Curve.prototype,{getPoint:function(){console.warn('THREE.Curve: .getPoint() not implemented.');return null},getPointAt:function(u,optionalTarget){var t=this.getUtoTmapping(u);return this.getPoint(t,optionalTarget)},getPoints:function(divisions){if(divisions===undefined)divisions=5;var points=[];for(var d=0;d<=divisions;d ++){points.push(this.getPoint(d/divisions))}
4541return points},getSpacedPoints:function(divisions){if(divisions===undefined)divisions=5;var points=[];for(var d=0;d<=divisions;d ++){points.push(this.getPointAt(d/divisions))}
4542return points},getLength:function(){var lengths=this.getLengths();return lengths[lengths.length-1]},getLengths:function(divisions){if(divisions===undefined)divisions=this.arcLengthDivisions;if(this.cacheArcLengths&&(this.cacheArcLengths.length===divisions+1)&&!this.needsUpdate){return this.cacheArcLengths}
4543this.needsUpdate=!1;var cache=[];var current,last=this.getPoint(0);var p,sum=0;cache.push(0);for(p=1;p<=divisions;p ++){current=this.getPoint(p/divisions);sum+=current.distanceTo(last);cache.push(sum);last=current}
4544this.cacheArcLengths=cache;return cache},updateArcLengths:function(){this.needsUpdate=!0;this.getLengths()},getUtoTmapping:function(u,distance){var arcLengths=this.getLengths();var i=0,il=arcLengths.length;var targetArcLength;if(distance){targetArcLength=distance}else{targetArcLength=u*arcLengths[il-1]}
4545var low=0,high=il-1,comparison;while(low<=high){i=Math.floor(low+(high-low)/2);comparison=arcLengths[i]-targetArcLength;if(comparison<0){low=i+1}else if(comparison>0){high=i-1}else{high=i;break}}
4546i=high;if(arcLengths[i]===targetArcLength){return i/(il-1)}
4547var lengthBefore=arcLengths[i];var lengthAfter=arcLengths[i+1];var segmentLength=lengthAfter-lengthBefore;var segmentFraction=(targetArcLength-lengthBefore)/segmentLength;var t=(i+segmentFraction)/(il-1);return t},getTangent:function(t){var delta=0.0001;var t1=t-delta;var t2=t+delta;if(t1<0)t1=0;if(t2>1)t2=1;var pt1=this.getPoint(t1);var pt2=this.getPoint(t2);var vec=pt2.clone().sub(pt1);return vec.normalize()},getTangentAt:function(u){var t=this.getUtoTmapping(u);return this.getTangent(t)},computeFrenetFrames:function(segments,closed){var normal=new Vector3();var tangents=[];var normals=[];var binormals=[];var vec=new Vector3();var mat=new Matrix4();var i,u,theta;for(i=0;i<=segments;i ++){u=i/segments;tangents[i]=this.getTangentAt(u);tangents[i].normalize()}
4548normals[0]=new Vector3();binormals[0]=new Vector3();var min=Number.MAX_VALUE;var tx=Math.abs(tangents[0].x);var ty=Math.abs(tangents[0].y);var tz=Math.abs(tangents[0].z);if(tx<=min){min=tx;normal.set(1,0,0)}
4549if(ty<=min){min=ty;normal.set(0,1,0)}
4550if(tz<=min){normal.set(0,0,1)}
4551vec.crossVectors(tangents[0],normal).normalize();normals[0].crossVectors(tangents[0],vec);binormals[0].crossVectors(tangents[0],normals[0]);for(i=1;i<=segments;i ++){normals[i]=normals[i-1].clone();binormals[i]=binormals[i-1].clone();vec.crossVectors(tangents[i-1],tangents[i]);if(vec.length()>Number.EPSILON){vec.normalize();theta=Math.acos(_Math.clamp(tangents[i-1].dot(tangents[i]),-1,1));normals[i].applyMatrix4(mat.makeRotationAxis(vec,theta))}
4552binormals[i].crossVectors(tangents[i],normals[i])}
4553if(closed===!0){theta=Math.acos(_Math.clamp(normals[0].dot(normals[segments]),-1,1));theta/=segments;if(tangents[0].dot(vec.crossVectors(normals[0],normals[segments]))>0){theta=-theta}
4554for(i=1;i<=segments;i ++){normals[i].applyMatrix4(mat.makeRotationAxis(tangents[i],theta*i));binormals[i].crossVectors(tangents[i],normals[i])}}
4555return{tangents:tangents,normals:normals,binormals:binormals}},clone:function(){return new this.constructor().copy(this)},copy:function(source){this.arcLengthDivisions=source.arcLengthDivisions;return this},toJSON:function(){var data={metadata:{version:4.5,type:'Curve',generator:'Curve.toJSON'}};data.arcLengthDivisions=this.arcLengthDivisions;
4555data.type=this.type;return data},fromJSON:function(json){this.arcLengthDivisions=json.arcLengthDivisions;return this}});function EllipseCurve(aX,aY,xRadius,yRadius,aStartAngle,aEndAngle,aClockwise,aRotation){Curve.call(this);this.type='EllipseCurve';this.aX=aX||0;this.aY=aY||0;this.xRadius=xRadius||1;this.yRadius=yRadius||1;this.aStartAngle=aStartAngle||0;this.aEndAngle=aEndAngle||2*Math.PI;this.aClockwise=aClockwise||!1;this.aRotation=aRotation||0}
4556EllipseCurve.prototype=Object.create(Curve.prototype);EllipseCurve.prototype.constructor=EllipseCurve;EllipseCurve.prototype.isEllipseCurve=!0;EllipseCurve.prototype.getPoint=function(t,optionalTarget){var point=optionalTarget||new Vector2();var twoPi=Math.PI*2;var deltaAngle=this.aEndAngle-this.aStartAngle;var samePoints=Math.abs(deltaAngle)<Number.EPSILON;while(deltaAngle<0)deltaAngle+=twoPi;while(deltaAngle>twoPi)deltaAngle-=twoPi;if(deltaAngle<Number.EPSILON){if(samePoints){deltaAngle=0}else{deltaAngle=twoPi}}
4557if(this.aClockwise===!0&&!samePoints){if(deltaAngle===twoPi){deltaAngle=-twoPi}else{deltaAngle=deltaAngle-twoPi}}
4558var angle=this.aStartAngle+t*deltaAngle;var x=this.aX+this.xRadius*Math.cos(angle);var y=this.aY+this.yRadius*Math.sin(angle);if(this.aRotation!==0){var cos=Math.cos(this.aRotation);var sin=Math.sin(this.aRotation);var tx=x-this.aX;var ty=y-this.aY;x=tx*cos-ty*sin+this.aX;y=tx*sin+ty*cos+this.aY}
4559return point.set(x,y)};EllipseCurve.prototype.copy=function(source){Curve.prototype.copy.call(this,source);this.aX=source.aX;this.aY=source.aY;this.xRadius=source.xRadius;this.yRadius=source.yRadius;this.aStartAngle=source.aStartAngle;this.aEndAngle=source.aEndAngle;this.aClockwise=source.aClockwise;this.aRotation=source.aRotation;return this};EllipseCurve.prototype.toJSON=function(){var data=Curve.prototype.toJSON.call(this);data.aX=this.aX;data.aY=this.aY;data.xRadius=this.xRadius;data.yRadius=this.yRadius;data.aStartAngle=this.aStartAngle;data.aEndAngle=this.aEndAngle;data.aClockwise=this.aClockwise;data.aRotation=this.aRotation;return data};EllipseCurve.prototype.fromJSON=function(json){Curve.prototype.fromJSON.call(this,json);this.aX=json.aX;this.aY=json.aY;this.xRadius=json.xRadius;this.yRadius=json.yRadius;this.aStartAngle=json.aStartAngle;this.aEndAngle=json.aEndAngle;this.aClockwise=json.aClockwise;this.aRotation=json.aRotation;return this};function ArcCurve(aX,aY,aRadius,aStartAngle,aEndAngle,aClockwise){EllipseCurve.call(this,aX,aY,aRadius,aRadius,aStartAngle,aEndAngle,aClockwise);this.type='ArcCurve'}
4560ArcCurve.prototype=Object.create(EllipseCurve.prototype);ArcCurve.prototype.constructor=ArcCurve;ArcCurve.prototype.isArcCurve=!0;function CubicPoly(){var c0=0,c1=0,c2=0,c3=0;function init(x0,x1,t0,t1){c0=x0;c1=t0;c2=-3*x0+3*x1-2*t0-t1;c3=2*x0-2*x1+t0+t1}
4561return{initCatmullRom:function(x0,x1,x2,x3,tension){init(x1,x2,tension*(x2-x0),tension*(x3-x1))},initNonuniformCatmullRom:function(x0,x1,x2,x3,dt0,dt1,dt2){var t1=(x1-x0)/dt0-(x2-x0)/(dt0+dt1)+(x2-x1)/dt1;var t2=(x2-x1)/dt1-(x3-x1)/(dt1+dt2)+(x3-x2)/dt2;t1*=dt1;t2*=dt1;init(x1,x2,t1,t2)},calc:function(t){var t2=t*t;var t3=t2*t;return c0+c1*t+c2*t2+c3*t3}}}
4562var tmp=new Vector3();var px=new CubicPoly(),py=new CubicPoly(),pz=new CubicPoly();function CatmullRomCurve3(points,closed,curveType,tension){Curve.call(this);this.type='CatmullRomCurve3';this.points=points||[];this.closed=closed||!1;this.curveType=curveType||'centripetal';this.tension=tension||0.5}
4563CatmullRomCurve3.prototype=Object.create(Curve.prototype);CatmullRomCurve3.prototype.constructor=CatmullRomCurve3;CatmullRomCurve3.prototype.isCatmullRomCurve3=!0;CatmullRomCurve3.prototype.getPoint=function(t,optionalTarget){var point=optionalTarget||new Vector3();var points=this.points;var l=points.length;var p=(l-(this.closed?0:1))*t;var intPoint=Math.floor(p);var weight=p-intPoint;if(this.closed){intPoint+=intPoint>0?0:(Math.floor(Math.abs(intPoint)/l)+1)*l}else if(weight===0&&intPoint===l-1){intPoint=l-2;weight=1}
4564var p0,p1,p2,p3;if(this.closed||intPoint>0){p0=points[(intPoint-1)%l]}else{tmp.subVectors(points[0],points[1]).add(points[0]);p0=tmp}
4565p1=points[intPoint%l];p2=points[(intPoint+1)%l];if(this.closed||intPoint+2<l){p3=points[(intPoint+2)%l]}
4565else{tmp.subVectors(points[l-1],points[l-2]).add(points[l-1]);p3=tmp}
4566if(this.curveType==='centripetal'||this.curveType==='chordal'){var pow=this.curveType==='chordal'?0.5:0.25;var dt0=Math.pow(p0.distanceToSquared(p1),pow);var dt1=Math.pow(p1.distanceToSquared(p2),pow);var dt2=Math.pow(p2.distanceToSquared(p3),pow);if(dt1<1e-4)dt1=1.0;if(dt0<1e-4)dt0=dt1;if(dt2<1e-4)dt2=dt1;px.initNonuniformCatmullRom(p0.x,p1.x,p2.x,p3.x,dt0,dt1,dt2);py.initNonuniformCatmullRom(p0.y,p1.y,p2.y,p3.y,dt0,dt1,dt2);pz.initNonuniformCatmullRom(p0.z,p1.z,p2.z,p3.z,dt0,dt1,dt2)}else if(this.curveType==='catmullrom'){px.initCatmullRom(p0.x,p1.x,p2.x,p3.x,this.tension);py.initCatmullRom(p0.y,p1.y,p2.y,p3.y,this.tension);pz.initCatmullRom(p0.z,p1.z,p2.z,p3.z,this.tension)}
4567point.set(px.calc(weight),py.calc(weight),pz.calc(weight));return point};CatmullRomCurve3.prototype.copy=function(source){Curve.prototype.copy.call(this,source);this.points=[];for(var i=0,l=source.points.length;i<l;i ++){var point=source.points[i];this.points.push(point.clone())}
4568this.closed=source.closed;this.curveType=source.curveType;this.tension=source.tension;return this};CatmullRomCurve3.prototype.toJSON=function(){var data=Curve.prototype.toJSON.call(this);data.points=[];for(var i=0,l=this.points.length;i<l;i ++){var point=this.points[i];data.points.push(point.toArray())}
4569data.closed=this.closed;data.curveType=this.curveType;data.tension=this.tension;return data};CatmullRomCurve3.prototype.fromJSON=function(json){Curve.prototype.fromJSON.call(this,json);this.points=[];for(var i=0,l=json.points.length;i<l;i ++){var point=json.points[i];this.points.push(new Vector3().fromArray(point))}
4570this.closed=json.closed;this.curveType=json.curveType;this.tension=json.tension;return this};function CatmullRom(t,p0,p1,p2,p3){var v0=(p2-p0)*0.5;var v1=(p3-p1)*0.5;var t2=t*t;var t3=t*t2;return(2*p1-2*p2+v0+v1)*t3+(-3*p1+3*p2-2*v0-v1)*t2+v0*t+p1}
4571function QuadraticBezierP0(t,p){var k=1-t;return k*k*p}
4572function QuadraticBezierP1(t,p){return 2*(1-t)*t*p}
4573function QuadraticBezierP2(t,p){return t*t*p}
4574function QuadraticBezier(t,p0,p1,p2){return QuadraticBezierP0(t,p0)+QuadraticBezierP1(t,p1)+QuadraticBezierP2(t,p2)}
4575function CubicBezierP0(t,p){var k=1-t;return k*k*k*p}
4576function CubicBezierP1(t,p){var k=1-t;return 3*k*k*t*p}
4577function CubicBezierP2(t,p){return 3*(1-t)*t*t*p}
4578function CubicBezierP3(t,p){return t*t*t*p}
4579function CubicBezier(t,p0,p1,p2,p3){return CubicBezierP0(t,p0)+CubicBezierP1(t,p1)+CubicBezierP2(t,p2)+CubicBezierP3(t,p3)}
4580function CubicBezierCurve(v0,v1,v2,v3){Curve.call(this);this.type='CubicBezierCurve';this.v0=v0||new Vector2();this.v1=v1||new Vector2();this.v2=v2||new Vector2();this.v3=v3||new Vector2()}
4581CubicBezierCurve.prototype=Object.create(Curve.prototype);CubicBezierCurve.prototype.constructor=CubicBezierCurve;CubicBezierCurve.prototype.isCubicBezierCurve=!0;CubicBezierCurve.prototype.getPoint=function(t,optionalTarget){var point=optionalTarget||new Vector2();var v0=this.v0,v1=this.v1,v2=this.v2,v3=this.v3;point.set(CubicBezier(t,v0.x,v1.x,v2.x,v3.x),CubicBezier(t,v0.y,v1.y,v2.y,v3.y));return point};CubicBezierCurve.prototype.copy=function(source){Curve.prototype.copy.call(this,source);this.v0.copy(source.v0);this.v1.copy(source.v1);this.v2.copy(source.v2);this.v3.copy(source.v3);return this};CubicBezierCurve.prototype.toJSON=function(){var data=Curve.prototype.toJSON.call(this);data.v0=this.v0.toArray();data.v1=this.v1.toArray();data.v2=this.v2.toArray();data.v3=this.v3.toArray();return data};CubicBezierCurve.prototype.fromJSON=function(json){Curve.prototype.fromJSON.call(this,json);this.v0.fromArray(json.v0);this.v1.fromArray(json.v1);this.v2.fromArray(json.v2);this.v3.fromArray(json.v3);return this};function CubicBezierCurve3(v0,v1,v2,v3){Curve.call(this);this.type='CubicBezierCurve3';this.v0=v0||new Vector3();this.v1=v1||new Vector3();this.v2=v2||new Vector3();this.v3=v3||new Vector3()}
4582CubicBezierCurve3.prototype=Object.create(Curve.prototype);CubicBezierCurve3.prototype.constructor=CubicBezierCurve3;CubicBezierCurve3.prototype.isCubicBezierCurve3=!0;CubicBezierCurve3.prototype.getPoint=function(t,optionalTarget){var point=optionalTarget||new Vector3();var v0=this.v0,v1=this.v1,v2=this.v2,v3=this.v3;point.set(CubicBezier(t,v0.x,v1.x,v2.x,v3.x),CubicBezier(t,v0.y,v1.y,v2.y,v3.y),CubicBezier(t,v0.z,v1.z,v2.z,v3.z));return point};CubicBezierCurve3.prototype.copy=function(source){Curve.prototype.copy.call(this,source);this.v0.copy(source.v0);this.v1.copy(source.v1);this.v2.copy(source.v2);this.v3.copy(source.v3);return this};CubicBezierCurve3.prototype.toJSON=function(){var data=Curve.prototype.toJSON.call(this);data.v0=this.v0.toArray();data.v1=this.v1.toArray();data.v2=this.v2.toArray();data.v3=this.v3.toArray();return data};CubicBezierCurve3.prototype.fromJSON=function(json){Curve.prototype.fromJSON.call(this,json);this.v0.fromArray(json.v0);this.v1.fromArray(json.v1);this.v2.fromArray(json.v2);this.v3.fromArray(json.v3);return this};function LineCurve(v1,v2){Curve.call(this);this.type='LineCurve';this.v1=v1||new Vector2();this.v2=v2||new Vector2()}
4583LineCurve.prototype=Object.create(Curve.prototype);LineCurve.prototype.constructor=LineCurve;LineCurve.prototype.isLineCurve=!0;LineCurve.prototype.getPoint=function(t,optionalTarget){var point=optionalTarget||new Vector2();if(t===1){point.copy(this.v2)}else{point.copy(this.v2).sub(this.v1);point.multiplyScalar(t).add(this.v1)}
4584return point};LineCurve.prototype.getPointAt=function(u,optionalTarget){return this.getPoint(u,optionalTarget)};LineCurve.prototype.getTangent=function(){var tangent=this.v2.clone().sub(this.v1);return tangent.normalize()};LineCurve.prototype.copy=function(source){Curve.prototype.copy.call(this,source);this.v1.copy(source.v1);this.v2.copy(source.v2);return this};LineCurve.prototype.toJSON=function(){var data=Curve.prototype.toJSON.call(this);data.v1=this.v1.toArray();data.v2=this.v2.toArray();return data};LineCurve.prototype.fromJSON=function(json){Curve.prototype.fromJSON.call(this,json);this.v1.fromArray(json.v1);this.v2.fromArray(json.v2);return this};function LineCurve3(v1,v2){Curve.call(this);this.type='LineCurve3';this.v1=v1||new Vector3();this.v2=v2||new Vector3()}
4585LineCurve3.prototype=Object.create(Curve.prototype);LineCurve3.prototype.constructor=LineCurve3;LineCurve3.prototype.isLineCurve3=!0;LineCurve3.prototype.getPoint=function(t,optionalTarget){var point=optionalTarget||new Vector3();if(t===1){point.copy(this.v2)}else{point.copy(this.v2).sub(this.v1);point.multiplyScalar(t).add(this.v1)}
4586return point};LineCurve3.prototype.getPointAt=function(u,optionalTarget){return this.getPoint(u,optionalTarget)};LineCurve3.prototype.copy=function(source){Curve.prototype.copy.call(this,source);this.v1.copy(source.v1);this.v2.copy(source.v2);return this};LineCurve3.prototype.toJSON=function(){var data=Curve.prototype.toJSON.call(this);data.v1=this.v1.toArray();data.v2=this.v2.toArray();return data};LineCurve3.prototype.fromJSON=function(json){Curve.prototype.fromJSON.call(this,json);this.v1.fromArray(json.v1);this.v2.fromArray(json.v2);return this};function QuadraticBezierCurve(v0,v1,v2){Curve.call(this);this.type='QuadraticBezierCurve';this.v0=v0||new Vector2();this.v1=v1||new Vector2();this.v2=v2||new Vector2()}
4587QuadraticBezierCurve.prototype=Object.create(Curve.prototype);QuadraticBezierCurve.prototype.constructor=QuadraticBezierCurve;QuadraticBezierCurve.prototype.isQuadraticBezierCurve=!0;QuadraticBezierCurve.prototype.getPoint=function(t,optionalTarget){var point=optionalTarget||new Vector2();var v0=this.v0,v1=this.v1,v2=this.v2;point.set(QuadraticBezier(t,v0.x,v1.x,v2.x),QuadraticBezier(t,v0.y,v1.y,v2.y));return point};QuadraticBezierCurve.prototype.copy=function(source){Curve.prototype.copy.call(this,source);this.v0.copy(source.v0);this.v1.copy(source.v1);this.v2.copy(source.v2);return this};QuadraticBezierCurve.prototype.toJSON=function(){var data=Curve.prototype.toJSON.call(this);data.v0=this.v0.toArray();data.v1=this.v1.toArray();data.v2=this.v2.toArray();return data};QuadraticBezierCurve.prototype.fromJSON=function(json){Curve.prototype.fromJSON.call(this,json);this.v0.fromArray(json.v0);this.v1.fromArray(json.v1);this.v2.fromArray(json.v2);return this};function QuadraticBezierCurve3(v0,v1,v2){Curve.call(this);this.type='QuadraticBezierCurve3';this.v0=v0||new Vector3();this.v1=v1||new Vector3();this.v2=v2||new Vector3()}
4588QuadraticBezierCurve3.prototype=Object.create(Curve.prototype);QuadraticBezierCurve3.prototype.constructor=QuadraticBezierCurve3;QuadraticBezierCurve3.prototype.isQuadraticBezierCurve3=!0;QuadraticBezierCurve3.prototype.getPoint=function(t,optionalTarget){var point=optionalTarget||new Vector3();var v0=this.v0,v1=this.v1,v2=this.v2;point.set(QuadraticBezier(t,v0.x,v1.x,v2.x),QuadraticBezier(t,v0.y,v1.y,v2.y),QuadraticBezier(t,v0.z,v1.z,v2.z));return point};QuadraticBezierCurve3.prototype.copy=function(source){Curve.prototype.copy.call(this,source);this.v0.copy(source.v0);this.v1.copy(source.v1);this.v2.copy(source.v2);return this};QuadraticBezierCurve3.prototype.toJSON=function(){var data=Curve.prototype.toJSON.call(this);data.v0=this.v0.toArray();data.v1=this.v1.toArray();data.v2=this.v2.toArray();return data};QuadraticBezierCurve3.prototype.fromJSON=function(json){Curve.prototype.fromJSON.call(this,json);this.v0.fromArray(json.v0);this.v1.fromArray(json.v1);this.v2.fromArray(json.v2);return this};function SplineCurve(points){Curve.call(this);this.type='SplineCurve';this.points=points||[]}
4589SplineCurve.prototype=Object.create(Curve.prototype);SplineCurve.prototype.constructor=SplineCurve;SplineCurve.prototype.isSplineCurve=!0;SplineCurve.prototype.getPoint=function(t,optionalTarget){var point=optionalTarget||new Vector2();var points=this.points;var p=(points.length-1)*t;var intPoint=Math.floor(p);var weight=p-intPoint;
4589var p0=points[intPoint===0?intPoint:intPoint-1];var p1=points[intPoint];var p2=points[intPoint>points.length-2?points.length-1:intPoint+1];var p3=points[intPoint>points.length-3?points.length-1:intPoint+2];point.set(CatmullRom(weight,p0.x,p1.x,p2.x,p3.x),CatmullRom(weight,p0.y,p1.y,p2.y,p3.y));return point};SplineCurve.prototype.copy=function(source){Curve.prototype.copy.call(this,source);this.points=[];for(var i=0,l=source.points.length;i<l;i ++){var point=source.points[i];this.points.push(point.clone())}
4590return this};SplineCurve.prototype.toJSON=function(){var data=Curve.prototype.toJSON.call(this);data.points=[];for(var i=0,l=this.points.length;i<l;i ++){var point=this.points[i];data.points.push(point.toArray())}
4591return data};SplineCurve.prototype.fromJSON=function(json){Curve.prototype.fromJSON.call(this,json);this.points=[];for(var i=0,l=json.points.length;i<l;i ++){var point=json.points[i];this.points.push(new Vector2().fromArray(point))}
4592return this};var Curves=Object.freeze({ArcCurve:ArcCurve,CatmullRomCurve3:CatmullRomCurve3,CubicBezierCurve:CubicBezierCurve,CubicBezierCurve3:CubicBezierCurve3,EllipseCurve:EllipseCurve,LineCurve:LineCurve,LineCurve3:LineCurve3,QuadraticBezierCurve:QuadraticBezierCurve,QuadraticBezierCurve3:QuadraticBezierCurve3,SplineCurve:SplineCurve});function CurvePath(){Curve.call(this);this.type='CurvePath';this.curves=[];this.autoClose=!1}
4593CurvePath.prototype=Object.assign(Object.create(Curve.prototype),{constructor:CurvePath,add:function(curve){this.curves.push(curve)},closePath:function(){var startPoint=this.curves[0].getPoint(0);var endPoint=this.curves[this.curves.length-1].getPoint(1);if(!startPoint.equals(endPoint)){this.curves.push(new LineCurve(endPoint,startPoint))}},getPoint:function(t){var d=t*this.getLength();var curveLengths=this.getCurveLengths();var i=0;while(i<curveLengths.length){if(curveLengths[i]>=d){var diff=curveLengths[i]-d;var curve=this.curves[i];var segmentLength=curve.getLength();var u=segmentLength===0?0:1-diff/segmentLength;return curve.getPointAt(u)}
4594i ++}
4595return null},getLength:function(){var lens=this.getCurveLengths();return lens[lens.length-1]},updateArcLengths:function(){this.needsUpdate=!0;this.cacheLengths=null;this.getCurveLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length){return this.cacheLengths}
4596var lengths=[],sums=0;for(var i=0,l=this.curves.length;i<l;i ++){sums+=this.curves[i].getLength();lengths.push(sums)}
4597this.cacheLengths=lengths;return lengths},getSpacedPoints:function(divisions){if(divisions===undefined)divisions=40;var points=[];for(var i=0;i<=divisions;i ++){points.push(this.getPoint(i/divisions))}
4598if(this.autoClose){points.push(points[0])}
4599return points},getPoints:function(divisions){divisions=divisions||12;var points=[],last;for(var i=0,curves=this.curves;i<curves.length;i ++){var curve=curves[i];var resolution=(curve&&curve.isEllipseCurve)?divisions*2:(curve&&curve.isLineCurve)?1:(curve&&curve.isSplineCurve)?divisions*curve.points.length:divisions;var pts=curve.getPoints(resolution);for(var j=0;j<pts.length;j ++){var point=pts[j];if(last&&last.equals(point))continue;points.push(point);last=point}}
4600if(this.autoClose&&points.length>1&&!points[points.length-1].equals(points[0])){points.push(points[0])}
4601return points},copy:function(source){Curve.prototype.copy.call(this,source);this.curves=[];for(var i=0,l=source.curves.length;i<l;i ++){var curve=source.curves[i];this.curves.push(curve.clone())}
4602this.autoClose=source.autoClose;return this},toJSON:function(){var data=Curve.prototype.toJSON.call(this);data.autoClose=this.autoClose;data.curves=[];for(var i=0,l=this.curves.length;i<l;i ++){var curve=this.curves[i];data.curves.push(curve.toJSON())}
4603return data},fromJSON:function(json){Curve.prototype.fromJSON.call(this,json);this.autoClose=json.autoClose;this.curves=[];for(var i=0,l=json.curves.length;i<l;i ++){var curve=json.curves[i];this.curves.push(new Curves[curve.type]().fromJSON(curve))}
4604return this}});function Path(points){CurvePath.call(this);this.type='Path';this.currentPoint=new Vector2();if(points){this.setFromPoints(points)}}
4605Path.prototype=Object.assign(Object.create(CurvePath.prototype),{constructor:Path,setFromPoints:function(points){this.moveTo(points[0].x,points[0].y);for(var i=1,l=points.length;i<l;i ++){this.lineTo(points[i].x,points[i].y)}},moveTo:function(x,y){this.currentPoint.set(x,y)},lineTo:function(x,y){var curve=new LineCurve(this.currentPoint.clone(),new Vector2(x,y));this.curves.push(curve);this.currentPoint.set(x,y)},quadraticCurveTo:function(aCPx,aCPy,aX,aY){var curve=new QuadraticBezierCurve(this.currentPoint.clone(),new Vector2(aCPx,aCPy),new Vector2(aX,aY));this.curves.push(curve);this.currentPoint.set(aX,aY)},bezierCurveTo:function(aCP1x,aCP1y,aCP2x,aCP2y,aX,aY){var curve=new CubicBezierCurve(this.currentPoint.clone(),new Vector2(aCP1x,aCP1y),new Vector2(aCP2x,aCP2y),new Vector2(aX,aY));this.curves.push(curve);this.currentPoint.set(aX,aY)},splineThru:function(pts){var npts=[this.currentPoint.clone()].concat(pts);var curve=new SplineCurve(npts);this.curves.push(curve);this.currentPoint.copy(pts[pts.length-1])},arc:function(aX,aY,aRadius,aStartAngle,aEndAngle,aClockwise){var x0=this.currentPoint.x;var y0=this.currentPoint.y;this.absarc(aX+x0,aY+y0,aRadius,aStartAngle,aEndAngle,aClockwise)},absarc:function(aX,aY,aRadius,aStartAngle,aEndAngle,aClockwise){this.absellipse(aX,aY,aRadius,aRadius,aStartAngle,aEndAngle,aClockwise)},ellipse:function(aX,aY,xRadius,yRadius,aStartAngle,aEndAngle,aClockwise,aRotation){var x0=this.currentPoint.x;var y0=this.currentPoint.y;this.absellipse(aX+x0,aY+y0,xRadius,yRadius,aStartAngle,aEndAngle,aClockwise,aRotation)},absellipse:function(aX,aY,xRadius,yRadius,aStartAngle,aEndAngle,aClockwise,aRotation){var curve=new EllipseCurve(aX,aY,xRadius,yRadius,aStartAngle,aEndAngle,aClockwise,aRotation);if(this.curves.length>0){var firstPoint=curve.getPoint(0);if(!firstPoint.equals(this.currentPoint)){this.lineTo(firstPoint.x,firstPoint.y)}}
4606this.curves.push(curve);var lastPoint=curve.getPoint(1);this.currentPoint.copy(lastPoint)},copy:function(source){CurvePath.prototype.copy.call(this,source);this.currentPoint.copy(source.currentPoint);return this},toJSON:function(){var data=CurvePath.prototype.toJSON.call(this);data.currentPoint=this.currentPoint.toArray();return data},fromJSON:function(json){CurvePath.prototype.fromJSON.call(this,json);this.currentPoint.fromArray(json.currentPoint);return this}});function Shape(points){Path.call(this,points);this.uuid=_Math.generateUUID();this.type='Shape';this.holes=[]}
4607Shape.prototype=Object.assign(Object.create(Path.prototype),{constructor:Shape,getPointsHoles:function(divisions){var holesPts=[];for(var i=0,l=this.holes.length;i<l;i ++){holesPts[i]=this.holes[i].getPoints(divisions)}
4608return holesPts},extractPoints:function(divisions){return{shape:this.getPoints(divisions),holes:this.getPointsHoles(divisions)}},copy:function(source){Path.prototype.copy.call(this,source);this.holes=[];for(var i=0,l=source.holes.length;i<l;i ++){var hole=source.holes[i];this.holes.push(hole.clone())}
4609return this},toJSON:function(){var data=Path.prototype.toJSON.call(this);data.uuid=this.uuid;data.holes=[];for(var i=0,l=this.holes.length;i<l;i ++){var hole=this.holes[i];data.holes.push(hole.toJSON())}
4610return data},fromJSON:function(json){Path.prototype.fromJSON.call(this,json);this.uuid=json.uuid;this.holes=[];for(var i=0,l=json.holes.length;i<l;i ++){var hole=json.holes[i];this.holes.push(new Path().fromJSON(hole))}
4611return this}});function Light(color,intensity){Object3D.call(this);this.type='Light';this.color=new Color(color);this.intensity=intensity!==undefined?intensity:1;this.receiveShadow=undefined}
4612Light.prototype=Object.assign(Object.create(Object3D.prototype),{constructor:Light,isLight:!0,copy:function(source){Object3D.prototype.copy.call(this,source);this.color.copy(source.color);this.intensity=source.intensity;return this},toJSON:function(meta){var data=Object3D.prototype.toJSON.call(this,meta);data.object.color=this.color.getHex();data.object.intensity=this.intensity;if(this.groundColor!==undefined)data.object.groundColor=this.groundColor.getHex();if(this.distance!==undefined)data.object.distance=this.distance;if(this.angle!==undefined)data.object.angle=this.angle;if(this.decay!==undefined)data.object.decay=this.decay;if(this.penumbra!==undefined)data.object.penumbra=this.penumbra;
4612if(this.shadow!==undefined)data.object.shadow=this.shadow.toJSON();return data}});function HemisphereLight(skyColor,groundColor,intensity){Light.call(this,skyColor,intensity);this.type='HemisphereLight';this.castShadow=undefined;this.position.copy(Object3D.DefaultUp);this.updateMatrix();this.groundColor=new Color(groundColor)}
4613HemisphereLight.prototype=Object.assign(Object.create(Light.prototype),{constructor:HemisphereLight,isHemisphereLight:!0,copy:function(source){Light.prototype.copy.call(this,source);this.groundColor.copy(source.groundColor);return this}});function LightShadow(camera){this.camera=camera;this.bias=0;this.radius=1;this.mapSize=new Vector2(512,512);this.map=null;this.matrix=new Matrix4()}
4614Object.assign(LightShadow.prototype,{copy:function(source){this.camera=source.camera.clone();this.bias=source.bias;this.radius=source.radius;this.mapSize.copy(source.mapSize);return this},clone:function(){return new this.constructor().copy(this)},toJSON:function(){var object={};if(this.bias!==0)object.bias=this.bias;if(this.radius!==1)object.radius=this.radius;if(this.mapSize.x!==512||this.mapSize.y!==512)object.mapSize=this.mapSize.toArray();object.camera=this.camera.toJSON(!1).object;delete object.camera.matrix;return object}});function SpotLightShadow(){LightShadow.call(this,new PerspectiveCamera(50,1,0.5,500))}
4615SpotLightShadow.prototype=Object.assign(Object.create(LightShadow.prototype),{constructor:SpotLightShadow,isSpotLightShadow:!0,update:function(light){var camera=this.camera;var fov=_Math.RAD2DEG*2*light.angle;var aspect=this.mapSize.width/this.mapSize.height;var far=light.distance||camera.far;if(fov!==camera.fov||aspect!==camera.aspect||far!==camera.far){camera.fov=fov;camera.aspect=aspect;camera.far=far;camera.updateProjectionMatrix()}}});function SpotLight(color,intensity,distance,angle,penumbra,decay){Light.call(this,color,intensity);this.type='SpotLight';this.position.copy(Object3D.DefaultUp);this.updateMatrix();this.target=new Object3D();Object.defineProperty(this,'power',{get:function(){return this.intensity*Math.PI},set:function(power){this.intensity=power/Math.PI}});this.distance=(distance!==undefined)?distance:0;this.angle=(angle!==undefined)?angle:Math.PI/3;this.penumbra=(penumbra!==undefined)?penumbra:0;this.decay=(decay!==undefined)?decay:1;this.shadow=new SpotLightShadow()}
4616SpotLight.prototype=Object.assign(Object.create(Light.prototype),{constructor:SpotLight,isSpotLight:!0,copy:function(source){Light.prototype.copy.call(this,source);this.distance=source.distance;this.angle=source.angle;this.penumbra=source.penumbra;this.decay=source.decay;this.target=source.target.clone();this.shadow=source.shadow.clone();return this}});function PointLight(color,intensity,distance,decay){Light.call(this,color,intensity);this.type='PointLight';Object.defineProperty(this,'power',{get:function(){return this.intensity*4*Math.PI},set:function(power){this.intensity=power/(4*Math.PI)}});this.distance=(distance!==undefined)?distance:0;this.decay=(decay!==undefined)?decay:1;this.shadow=new LightShadow(new PerspectiveCamera(90,1,0.5,500))}
4617PointLight.prototype=Object.assign(Object.create(Light.prototype),{constructor:PointLight,isPointLight:!0,copy:function(source){Light.prototype.copy.call(this,source);this.distance=source.distance;this.decay=source.decay;this.shadow=source.shadow.clone();return this}});function DirectionalLightShadow(){LightShadow.call(this,new OrthographicCamera(-5,5,5,-5,0.5,500))}
4618DirectionalLightShadow.prototype=Object.assign(Object.create(LightShadow.prototype),{constructor:DirectionalLightShadow});function DirectionalLight(color,intensity){Light.call(this,color,intensity);this.type='DirectionalLight';this.position.copy(Object3D.DefaultUp);this.updateMatrix();this.target=new Object3D();this.shadow=new DirectionalLightShadow()}
4619DirectionalLight.prototype=Object.assign(Object.create(Light.prototype),{constructor:DirectionalLight,isDirectionalLight:!0,copy:function(source){Light.prototype.copy.call(this,source);this.target=source.target.clone();this.shadow=source.shadow.clone();return this}});function AmbientLight(color,intensity){Light.call(this,color,intensity);this.type='AmbientLight';this.castShadow=undefined}
4620AmbientLight.prototype=Object.assign(Object.create(Light.prototype),{constructor:AmbientLight,isAmbientLight:!0});function RectAreaLight(color,intensity,width,height){Light.call(this,color,intensity);this.type='RectAreaLight';this.width=(width!==undefined)?width:10;this.height=(height!==undefined)?height:10}
4621RectAreaLight.prototype=Object.assign(Object.create(Light.prototype),{constructor:RectAreaLight,isRectAreaLight:!0,copy:function(source){Light.prototype.copy.call(this,source);this.width=source.width;this.height=source.height;return this},toJSON:function(meta){var data=Light.prototype.toJSON.call(this,meta);data.object.width=this.width;data.object.height=this.height;return data}});function StringKeyframeTrack(name,times,values,interpolation){KeyframeTrack.call(this,name,times,values,interpolation)}
4622StringKeyframeTrack.prototype=Object.assign(Object.create(KeyframeTrack.prototype),{constructor:StringKeyframeTrack,ValueTypeName:'string',ValueBufferType:Array,DefaultInterpolation:InterpolateDiscrete,InterpolantFactoryMethodLinear:undefined,InterpolantFactoryMethodSmooth:un
4622defined});function BooleanKeyframeTrack(name,times,values){KeyframeTrack.call(this,name,times,values)}
4623BooleanKeyframeTrack.prototype=Object.assign(Object.create(KeyframeTrack.prototype),{constructor:BooleanKeyframeTrack,ValueTypeName:'bool',ValueBufferType:Array,DefaultInterpolation:InterpolateDiscrete,InterpolantFactoryMethodLinear:undefined,InterpolantFactoryMethodSmooth:undefined});function Interpolant(parameterPositions,sampleValues,sampleSize,resultBuffer){this.parameterPositions=parameterPositions;this._cachedIndex=0;this.resultBuffer=resultBuffer!==undefined?resultBuffer:new sampleValues.constructor(sampleSize);this.sampleValues=sampleValues;this.valueSize=sampleSize}
4624Object.assign(Interpolant.prototype,{evaluate:function(t){var pp=this.parameterPositions,i1=this._cachedIndex,t1=pp[i1],t0=pp[i1-1];validate_interval:{seek:{var right;linear_scan:{forward_scan:if(!(t<t1)){for(var giveUpAt=i1+2;;){if(t1===undefined){if(t<t0)break forward_scan;i1=pp.length;this._cachedIndex=i1;return this.afterEnd_(i1-1,t,t0)}
4625if(i1===giveUpAt)break;t0=t1;t1=pp[++ i1];if(t<t1){break seek}}
4626right=pp.length;break linear_scan}
4627if(!(t>=t0)){var t1global=pp[1];if(t<t1global){i1=2;t0=t1global}
4628for(var giveUpAt=i1-2;;){if(t0===undefined){this._cachedIndex=0;return this.beforeStart_(0,t,t1)}
4629if(i1===giveUpAt)break;t1=t0;t0=pp[-- i1-1];if(t>=t0){break seek}}
4630right=i1;i1=0;break linear_scan}
4631break validate_interval}
4632while(i1<right){var mid=(i1+right)>>>1;if(t<pp[mid]){right=mid}else{i1=mid+1}}
4633t1=pp[i1];t0=pp[i1-1];if(t0===undefined){this._cachedIndex=0;return this.beforeStart_(0,t,t1)}
4634if(t1===undefined){i1=pp.length;this._cachedIndex=i1;return this.afterEnd_(i1-1,t0,t)}}
4635this._cachedIndex=i1;this.intervalChanged_(i1,t0,t1)}
4636return this.interpolate_(i1,t0,t,t1)},settings:null,DefaultSettings_:{},getSettings_:function(){return this.settings||this.DefaultSettings_},copySampleValue_:function(index){var result=this.resultBuffer,values=this.sampleValues,stride=this.valueSize,offset=index*stride;for(var i=0;i!==stride;++ i){result[i]=values[offset+i]}
4637return result},interpolate_:function(){throw new Error('call to abstract method')},intervalChanged_:function(){}});Object.assign(Interpolant.prototype,{beforeStart_:Interpolant.prototype.copySampleValue_,afterEnd_:Interpolant.prototype.copySampleValue_,});function QuaternionLinearInterpolant(parameterPositions,sampleValues,sampleSize,resultBuffer){Interpolant.call(this,parameterPositions,sampleValues,sampleSize,resultBuffer)}
4638QuaternionLinearInterpolant.prototype=Object.assign(Object.create(Interpolant.prototype),{constructor:QuaternionLinearInterpolant,interpolate_:function(i1,t0,t,t1){var result=this.resultBuffer,values=this.sampleValues,stride=this.valueSize,offset=i1*stride,alpha=(t-t0)/(t1-t0);for(var end=offset+stride;offset!==end;offset+=4){Quaternion.slerpFlat(result,0,values,offset-stride,values,offset,alpha)}
4639return result}});function QuaternionKeyframeTrack(name,times,values,interpolation){KeyframeTrack.call(this,name,times,values,interpolation)}
4640QuaternionKeyframeTrack.prototype=Object.assign(Object.create(KeyframeTrack.prototype),{constructor:QuaternionKeyframeTrack,ValueTypeName:'quaternion',DefaultInterpolation:InterpolateLinear,InterpolantFactoryMethodLinear:function(result){return new QuaternionLinearInterpolant(this.times,this.values,this.getValueSize(),result)},InterpolantFactoryMethodSmooth:undefined});function ColorKeyframeTrack(name,times,values,interpolation){KeyframeTrack.call(this,name,times,values,interpolation)}
4641ColorKeyframeTrack.prototype=Object.assign(Object.create(KeyframeTrack.prototype),{constructor:ColorKeyframeTrack,ValueTypeName:'color'});function NumberKeyframeTrack(name,times,values,interpolation){KeyframeTrack.call(this,name,times,values,interpolation)}
4642NumberKeyframeTrack.prototype=Object.assign(Object.create(KeyframeTrack.prototype),{constructor:NumberKeyframeTrack,ValueTypeName:'number'});function CubicInterpolant(parameterPositions,sampleValues,sampleSize,resultBuffer){Interpolant.call(this,parameterPositions,sampleValues,sampleSize,resultBuffer);this._weightPrev=-0;this._offsetPrev=-0;this._weightNext=-0;this._offsetNext=-0}
4643CubicInterpolant.prototype=Object.assign(Object.create(Interpolant.prototype),{constructor:CubicInterpolant,DefaultSettings_:{endingStart:ZeroCurvatureEnding,endingEnd:ZeroCurvatureEnding},intervalChanged_:function(i1,t0,t1){var pp=this.parameterPositions,iPrev=i1-2,iNext=i1+1,tPrev=pp[iPrev],tNext=pp[iNext];if(tPrev===undefined){switch(this.getSettings_().endingStart){case ZeroSlopeEnding:iPrev=i1;tPrev=2*t0-t1;break;case WrapAroundEnding:iPrev=pp.length-2;tPrev=t0+pp[iPrev]-pp[iPrev+1];break;default:iPrev=i1;tPrev=t1}}
4644if(tNext===undefined){switch(this.getSettings_().endingEnd){case ZeroSlopeEnding:iNext=i1;tNext=2*t1-t0;break;case WrapAroundEnding:iNext=1;tNext=t1+pp[1]-pp[0];break;default:iNext=i1-1;tNext=t0}}
4645var halfDt=(t1-t0)*0.5,stride=this.valueSize;this._weightPrev=halfDt/(t0-tPrev);this._weightNext=halfDt/(tNext-t1);this._offsetPrev=iPrev*stride;this._offsetNext=iNext*stride},interpolate_:function(i1,t0,t,t1){var result=this.resultBuffer,values=this.sampleValues,stride=this.valueSize,o1=i1*stride,o0=o1-stride,oP=this._offsetPrev,oN=this._offsetNext,wP=this._weightPrev,wN=this._weightNext,p=(t-t0)/(t1-t0),pp=p*p,p
4645pp=pp*p;var sP=-wP*ppp+2*wP*pp-wP*p;var s0=(1+wP)*ppp+(-1.5-2*wP)*pp+(-0.5+wP)*p+1;var s1=(-1-wN)*ppp+(1.5+wN)*pp+0.5*p;var sN=wN*ppp-wN*pp;for(var i=0;i!==stride;++ i){result[i]=sP*values[oP+i]+s0*values[o0+i]+s1*values[o1+i]+sN*values[oN+i]}
4646return result}});function LinearInterpolant(parameterPositions,sampleValues,sampleSize,resultBuffer){Interpolant.call(this,parameterPositions,sampleValues,sampleSize,resultBuffer)}
4647LinearInterpolant.prototype=Object.assign(Object.create(Interpolant.prototype),{constructor:LinearInterpolant,interpolate_:function(i1,t0,t,t1){var result=this.resultBuffer,values=this.sampleValues,stride=this.valueSize,offset1=i1*stride,offset0=offset1-stride,weight1=(t-t0)/(t1-t0),weight0=1-weight1;for(var i=0;i!==stride;++ i){result[i]=values[offset0+i]*weight0+values[offset1+i]*weight1}
4648return result}});function DiscreteInterpolant(parameterPositions,sampleValues,sampleSize,resultBuffer){Interpolant.call(this,parameterPositions,sampleValues,sampleSize,resultBuffer)}
4649DiscreteInterpolant.prototype=Object.assign(Object.create(Interpolant.prototype),{constructor:DiscreteInterpolant,interpolate_:function(i1){return this.copySampleValue_(i1-1)}});var AnimationUtils={arraySlice:function(array,from,to){if(AnimationUtils.isTypedArray(array)){return new array.constructor(array.subarray(from,to!==undefined?to:array.length))}
4650return array.slice(from,to)},convertArray:function(array,type,forceClone){if(!array||!forceClone&&array.constructor===type)return array;if(typeof type.BYTES_PER_ELEMENT==='number'){return new type(array)}
4651return Array.prototype.slice.call(array)},isTypedArray:function(object){return ArrayBuffer.isView(object)&&!(object instanceof DataView)},getKeyframeOrder:function(times){function compareTime(i,j){return times[i]-times[j]}
4652var n=times.length;var result=new Array(n);for(var i=0;i!==n;++ i)result[i]=i;result.sort(compareTime);return result},sortedArray:function(values,stride,order){var nValues=values.length;var result=new values.constructor(nValues);for(var i=0,dstOffset=0;dstOffset!==nValues;++ i){var srcOffset=order[i]*stride;for(var j=0;j!==stride;++ j){result[dstOffset ++]=values[srcOffset+j]}}
4653return result},flattenJSON:function(jsonKeys,times,values,valuePropertyName){var i=1,key=jsonKeys[0];while(key!==undefined&&key[valuePropertyName]===undefined){key=jsonKeys[i ++]}
4654if(key===undefined)return;var value=key[valuePropertyName];if(value===undefined)return;if(Array.isArray(value)){do{value=key[valuePropertyName];if(value!==undefined){times.push(key.time);values.push.apply(values,value)}
4655key=jsonKeys[i ++]}while(key!==undefined);}else if(value.toArray!==undefined){do{value=key[valuePropertyName];if(value!==undefined){times.push(key.time);value.toArray(values,values.length)}
4656key=jsonKeys[i ++]}while(key!==undefined);}else{do{value=key[valuePropertyName];if(value!==undefined){times.push(key.time);values.push(value)}
4657key=jsonKeys[i ++]}while(key!==undefined);}}};function KeyframeTrack(name,times,values,interpolation){if(name===undefined)throw new Error('THREE.KeyframeTrack: track name is undefined');if(times===undefined||times.length===0)throw new Error('THREE.KeyframeTrack: no keyframes in track named '+name);this.name=name;this.times=AnimationUtils.convertArray(times,this.TimeBufferType);this.values=AnimationUtils.convertArray(values,this.ValueBufferType);this.setInterpolation(interpolation||this.DefaultInterpolation);this.validate();this.optimize()}
4658Object.assign(KeyframeTrack,{parse:function(json){if(json.type===undefined){throw new Error('THREE.KeyframeTrack: track type undefined, can not parse')}
4659var trackType=KeyframeTrack._getTrackTypeForValueTypeName(json.type);if(json.times===undefined){var times=[],values=[];AnimationUtils.flattenJSON(json.keys,times,values,'value');json.times=times;json.values=values}
4660if(trackType.parse!==undefined){return trackType.parse(json)}else{return new trackType(json.name,json.times,json.values,json.interpolation)}},toJSON:function(track){var trackType=track.constructor;var json;if(trackType.toJSON!==undefined){json=trackType.toJSON(track)}else{json={'name':track.name,'times':AnimationUtils.convertArray(track.times,Array),'values':AnimationUtils.convertArray(track.values,Array)};var interpolation=track.getInterpolation();if(interpolation!==track.DefaultInterpolation){json.interpolation=interpolation}}
4661json.type=track.ValueTypeName;return json},_getTrackTypeForValueTypeName:function(typeName){switch(typeName.toLowerCase()){case 'scalar':case 'double':case 'float':case 'number':case 'integer':return NumberKeyframeTrack;case 'vector':case 'vector2':case 'vector3':case 'vector4':return VectorKeyframeTrack;case 'color':return ColorKeyframeTrack;case 'quaternion':return QuaternionKeyframeTrack;case 'bool':case 'boolean':return BooleanKeyframeTrack;case 'string':return StringKeyframeTrack}
4662throw new Error('THREE.KeyframeTrack: Unsupported typeName: '+typeName)}});Object.assign(KeyframeTrack.prototype,{constructor:KeyframeTrack,TimeBufferType:Float32Array,ValueBufferType:Float32Array,DefaultInterpolation:InterpolateLinear,InterpolantFactoryMethodDiscrete:function(result){return new DiscreteInterpolant(this.times,this.values,this.getValueSize(),result)},InterpolantFactoryMethodLinear:function(result){return new LinearInterpolant(this.times,this.values,this.getValueSize(),result)},InterpolantFactoryMethodSmooth:function(result){return new CubicInterpolant(this.times,this.values,this.getValueSize(),result)},setInterpolation:function(interpolation){var factoryMethod;switch(interpolation){case InterpolateDiscrete:factoryMethod=this.InterpolantFactoryMethodDiscrete;break;case InterpolateLinear:factoryMethod=this.InterpolantFactoryMethodLinear;break;case InterpolateSmooth:factoryMethod=this.InterpolantFactoryMethodSmooth;break}
4663if(factoryMethod===undefined){var message="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===undefined){if(interpolation!==this.DefaultInterpolation){this.setInterpolation(this.DefaultInterpolation)}else{throw new Error(message)}}
4664console.warn('THREE.KeyframeTrack:',message);return}
4665this.createInterpolant=factoryMethod},getInterpolation:function(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return InterpolateDiscrete;case this.InterpolantFactoryMethodLinear:return InterpolateLinear;case this.InterpolantFactoryMethodSmooth:return InterpolateSmooth}},getValueSize:function(){return this.values.length/this.times.length}
4665,shift:function(timeOffset){if(timeOffset!==0.0){var times=this.times;for(var i=0,n=times.length;i!==n;++ i){times[i]+=timeOffset}}
4666return this},scale:function(timeScale){if(timeScale!==1.0){var times=this.times;for(var i=0,n=times.length;i!==n;++ i){times[i]*=timeScale}}
4667return this},trim:function(startTime,endTime){var times=this.times,nKeys=times.length,from=0,to=nKeys-1;while(from!==nKeys&&times[from]<startTime){++ from}
4668while(to!==-1&&times[to]>endTime){-- to}
4669++ to;if(from!==0||to!==nKeys){if(from>=to)to=Math.max(to,1),from=to-1;var stride=this.getValueSize();this.times=AnimationUtils.arraySlice(times,from,to);this.values=AnimationUtils.arraySlice(this.values,from*stride,to*stride)}
4670return this},validate:function(){var valid=!0;var valueSize=this.getValueSize();if(valueSize-Math.floor(valueSize)!==0){console.error('THREE.KeyframeTrack: Invalid value size in track.',this);valid=!1}
4671var times=this.times,values=this.values,nKeys=times.length;if(nKeys===0){console.error('THREE.KeyframeTrack: Track is empty.',this);valid=!1}
4672var prevTime=null;for(var i=0;i!==nKeys;i ++){var currTime=times[i];if(typeof currTime==='number'&&isNaN(currTime)){console.error('THREE.KeyframeTrack: Time is not a valid number.',this,i,currTime);valid=!1;break}
4673if(prevTime!==null&&prevTime>currTime){console.error('THREE.KeyframeTrack: Out of order keys.',this,i,currTime,prevTime);valid=!1;break}
4674prevTime=currTime}
4675if(values!==undefined){if(AnimationUtils.isTypedArray(values)){for(var i=0,n=values.length;i!==n;++ i){var value=values[i];if(isNaN(value)){console.error('THREE.KeyframeTrack: Value is not a valid number.',this,i,value);valid=!1;break}}}}
4676return valid},optimize:function(){var times=this.times,values=this.values,stride=this.getValueSize(),smoothInterpolation=this.getInterpolation()===InterpolateSmooth,writeIndex=1,lastIndex=times.length-1;for(var i=1;i<lastIndex;++ i){var keep=!1;var time=times[i];var timeNext=times[i+1];if(time!==timeNext&&(i!==1||time!==time[0])){if(!smoothInterpolation){var offset=i*stride,offsetP=offset-stride,offsetN=offset+stride;for(var j=0;j!==stride;++ j){var value=values[offset+j];if(value!==values[offsetP+j]||value!==values[offsetN+j]){keep=!0;break}}}else{keep=!0}}
4677if(keep){if(i!==writeIndex){times[writeIndex]=times[i];var readOffset=i*stride,writeOffset=writeIndex*stride;for(var j=0;j!==stride;++ j){values[writeOffset+j]=values[readOffset+j]}}
4678++ writeIndex}}
4679if(lastIndex>0){times[writeIndex]=times[lastIndex];for(var readOffset=lastIndex*stride,writeOffset=writeIndex*stride,j=0;j!==stride;++ j){values[writeOffset+j]=values[readOffset+j]}
4680++ writeIndex}
4681if(writeIndex!==times.length){this.times=AnimationUtils.arraySlice(times,0,writeIndex);this.values=AnimationUtils.arraySlice(values,0,writeIndex*stride)}
4682return this}});function VectorKeyframeTrack(name,times,values,interpolation){KeyframeTrack.call(this,name,times,values,interpolation)}
4683VectorKeyframeTrack.prototype=Object.assign(Object.create(KeyframeTrack.prototype),{constructor:VectorKeyframeTrack,ValueTypeName:'vector'});function AnimationClip(name,duration,tracks){this.name=name;this.tracks=tracks;this.duration=(duration!==undefined)?duration:-1;this.uuid=_Math.generateUUID();if(this.duration<0){this.resetDuration()}
4684this.optimize()}
4685Object.assign(AnimationClip,{parse:function(json){var tracks=[],jsonTracks=json.tracks,frameTime=1.0/(json.fps||1.0);for(var i=0,n=jsonTracks.length;i!==n;++ i){tracks.push(KeyframeTrack.parse(jsonTracks[i]).scale(frameTime))}
4686return new AnimationClip(json.name,json.duration,tracks)},toJSON:function(clip){var tracks=[],clipTracks=clip.tracks;var json={'name':clip.name,'duration':clip.duration,'tracks':tracks,'uuid':clip.uuid};for(var i=0,n=clipTracks.length;i!==n;++ i){tracks.push(KeyframeTrack.toJSON(clipTracks[i]))}
4687return json},CreateFromMorphTargetSequence:function(name,morphTargetSequence,fps,noLoop){var numMorphTargets=morphTargetSequence.length;var tracks=[];for(var i=0;i<numMorphTargets;i ++){var times=[];var values=[];times.push((i+numMorphTargets-1)%numMorphTargets,i,(i+1)%numMorphTargets);values.push(0,1,0);var order=AnimationUtils.getKeyframeOrder(times);times=AnimationUtils.sortedArray(times,1,order);values=AnimationUtils.sortedArray(values,1,order);
4687if(!noLoop&&times[0]===0){times.push(numMorphTargets);values.push(values[0])}
4688tracks.push(new NumberKeyframeTrack('.morphTargetInfluences['+morphTargetSequence[i].name+']',times,values).scale(1.0/fps))}
4689return new AnimationClip(name,-1,tracks)},findByName:function(objectOrClipArray,name){var clipArray=objectOrClipArray;if(!Array.isArray(objectOrClipArray)){var o=objectOrClipArray;clipArray=o.geometry&&o.geometry.animations||o.animations}
4690for(var i=0;i<clipArray.length;i ++){if(clipArray[i].name===name){return clipArray[i]}}
4691return null},CreateClipsFromMorphTargetSequences:function(morphTargets,fps,noLoop){var animationToMorphTargets={};var pattern=/^([\w-]*?)([\d]+)$/;for(var i=0,il=morphTargets.length;i<il;i ++){var morphTarget=morphTargets[i];var parts=morphTarget.name.match(pattern);if(parts&&parts.length>1){var name=parts[1];var animationMorphTargets=animationToMorphTargets[name];if(!animationMorphTargets){animationToMorphTargets[name]=animationMorphTargets=[]}
4692animationMorphTargets.push(morphTarget)}}
4693var clips=[];for(var name in animationToMorphTargets){clips.push(AnimationClip.CreateFromMorphTargetSequence(name,animationToMorphTargets[name],fps,noLoop))}
4694return clips},parseAnimation:function(animation,bones){if(!animation){console.error('THREE.AnimationClip: No animation in JSONLoader data.');return null}
4695var addNonemptyTrack=function(trackType,trackName,animationKeys,propertyName,destTracks){if(animationKeys.length!==0){var times=[];var values=[];AnimationUtils.flattenJSON(animationKeys,times,values,propertyName);if(times.length!==0){destTracks.push(new trackType(trackName,times,values))}}};var tracks=[];var clipName=animation.name||'default';var duration=animation.length||-1;var fps=animation.fps||30;var hierarchyTracks=animation.hierarchy||[];for(var h=0;h<hierarchyTracks.length;h ++){var animationKeys=hierarchyTracks[h].keys;if(!animationKeys||animationKeys.length===0)continue;if(animationKeys[0].morphTargets){var morphTargetNames={};for(var k=0;k<animationKeys.length;k ++){if(animationKeys[k].morphTargets){for(var m=0;m<animationKeys[k].morphTargets.length;m ++){morphTargetNames[animationKeys[k].morphTargets[m]]=-1}}}
4696for(var morphTargetName in morphTargetNames){var times=[];var values=[];for(var m=0;m!==animationKeys[k].morphTargets.length;++ m){var animationKey=animationKeys[k];times.push(animationKey.time);values.push((animationKey.morphTarget===morphTargetName)?1:0)}
4697tracks.push(new NumberKeyframeTrack('.morphTargetInfluence['+morphTargetName+']',times,values))}
4698duration=morphTargetNames.length*(fps||1.0)}else{var boneName='.bones['+bones[h].name+']';addNonemptyTrack(VectorKeyframeTrack,boneName+'.position',animationKeys,'pos',tracks);addNonemptyTrack(QuaternionKeyframeTrack,boneName+'.quaternion',animationKeys,'rot',tracks);addNonemptyTrack(VectorKeyframeTrack,boneName+'.scale',animationKeys,'scl',tracks)}}
4699if(tracks.length===0){return null}
4700var clip=new AnimationClip(clipName,duration,tracks);return clip}});Object.assign(AnimationClip.prototype,{resetDuration:function(){var tracks=this.tracks,duration=0;for(var i=0,n=tracks.length;i!==n;++ i){var track=this.tracks[i];duration=Math.max(duration,track.times[track.times.length-1])}
4701this.duration=duration},trim:function(){for(var i=0;i<this.tracks.length;i ++){this.tracks[i].trim(0,this.duration)}
4702return this},optimize:function(){for(var i=0;i<this.tracks.length;i ++){this.tracks[i].optimize()}
4703return this}});function MaterialLoader(manager){this.manager=(manager!==undefined)?manager:DefaultLoadingManager;this.textures={}}
4704Object.assign(MaterialLoader.prototype,{load:function(url,onLoad,onProgress,onError){var scope=this;var loader=new FileLoader(scope.manager);loader.load(url,function(text){onLoad(scope.parse(JSON.parse(text)))},onProgress,onError)},setTextures:function(value){this.textures=value},parse:function(json){var textures=this.textures;function getTexture(name){if(textures[name]===undefined){console.warn('THREE.MaterialLoader: Undefined texture',name)}
4705return textures[name]}
4706var material=new Materials[json.type]();if(json.uuid!==undefined)material.uuid=json.uuid;if(json.name!==undefined)material.name=json.name;if(json.color!==undefined)material.color.setHex(json.color);
4706if(json.roughness!==undefined)material.roughness=json.roughness;if(json.metalness!==undefined)material.metalness=json.metalness;if(json.emissive!==undefined)material.emissive.setHex(json.emissive);if(json.specular!==undefined)material.specular.setHex(json.specular);if(json.shininess!==undefined)material.shininess=json.shininess;if(json.clearCoat!==undefined)material.clearCoat=json.clearCoat;if(json.clearCoatRoughness!==undefined)material.clearCoatRoughness=json.clearCoatRoughness;if(json.uniforms!==undefined)material.uniforms=json.uniforms;if(json.vertexShader!==undefined)material.vertexShader=json.vertexShader;if(json.fragmentShader!==undefined)material.fragmentShader=json.fragmentShader;if(json.vertexColors!==undefined)material.vertexColors=json.vertexColors;if(json.fog!==undefined)material.fog=json.fog;if(json.flatShading!==undefined)material.flatShading=json.flatShading;if(json.blending!==undefined)material.blending=json.blending;if(json.side!==undefined)material.side=json.side;if(json.opacity!==undefined)material.opacity=json.opacity;if(json.transparent!==undefined)material.transparent=json.transparent;if(json.alphaTest!==undefined)material.alphaTest=json.alphaTest;if(json.depthTest!==undefined)material.depthTest=json.depthTest;if(json.depthWrite!==undefined)material.depthWrite=json.depthWrite;if(json.colorWrite!==undefined)material.colorWrite=json.colorWrite;if(json.wireframe!==undefined)material.wireframe=json.wireframe;if(json.wireframeLinewidth!==undefined)material.wireframeLinewidth=json.wireframeLinewidth;if(json.wireframeLinecap!==undefined)material.wireframeLinecap=json.wireframeLinecap;if(json.wireframeLinejoin!==undefined)material.wireframeLinejoin=json.wireframeLinejoin;if(json.rotation!==undefined)material.rotation=json.rotation;if(json.linewidth!==1)material.linewidth=json.linewidth;if(json.dashSize!==undefined)material.dashSize=json.dashSize;if(json.gapSize!==undefined)material.gapSize=json.gapSize;if(json.scale!==undefined)material.scale=json.scale;if(json.polygonOffset!==undefined)material.polygonOffset=json.polygonOffset;if(json.polygonOffsetFactor!==undefined)material.polygonOffsetFactor=json.polygonOffsetFactor;if(json.polygonOffsetUnits!==undefined)material.polygonOffsetUnits=json.polygonOffsetUnits;if(json.skinning!==undefined)material.skinning=json.skinning;if(json.morphTargets!==undefined)material.morphTargets=json.morphTargets;if(json.dithering!==undefined)material.dithering=json.dithering;if(json.visible!==undefined)material.visible=json.visible;if(json.userData!==undefined)material.userData=json.userData;if(json.shading!==undefined)material.flatShading=json.shading===1;if(json.size!==undefined)material.size=json.size;if(json.sizeAttenuation!==undefined)material.sizeAttenuation=json.sizeAttenuation;if(json.map!==undefined)material.map=getTexture(json.map);if(json.alphaMap!==undefined){material.alphaMap=getTexture(json.alphaMap);material.transparent=!0}
4707if(json.bumpMap!==undefined)material.bumpMap=getTexture(json.bumpMap);if(json.bumpScale!==undefined)material.bumpScale=json.bumpScale;if(json.normalMap!==undefined)material.normalMap=getTexture(json.normalMap);if(json.normalScale!==undefined){var normalScale=json.normalScale;if(Array.isArray(normalScale)===!1){normalScale=[normalScale,normalScale]}
4708material.normalScale=new Vector2().fromArray(normalScale)}
4709if(json.displacementMap!==undefined)material.displacementMap=getTexture(json.displacementMap);if(json.displacementScale!==undefined)material.displacementScale=json.displacementScale;if(json.displacementBias!==undefined)material.displacementBias=json.displacementBias;if(json.roughnessMap!==undefined)material.roughnessMap=getTexture(json.roughnessMap);if(json.metalnessMap!==undefined)material.metalnessMap=getTexture(json.metalnessMap);if(json.emissiveMap!==undefined)material.emissiveMap=getTexture(json.emissiveMap);if(json.emissiveIntensity!==undefined)material.emissiveIntensity=json.emissiveIntensity;if(json.specularMap!==undefined)material.specularMap=getTexture(json.specularMap);if(json.envMap!==undefined)material.envMap=getTexture(json.envMap);if(json.reflectivity!==undefined)material.reflectivity=json.reflectivity;if(json.lightMap!==undefined)material.lightMap=getTexture(json.lightMap);if(json.lightMapIntensity!==undefined)material.lightMapIntensity=json.lightMapIntensity;if(json.aoMap!==undefined)material.aoMap=getTexture(json.aoMap);if(json.aoMapIntensity!==undefined)material.aoMapIntensity=json.aoMapIntensity;if(json.gradientMap!==undefined)material.gradientMap=getTexture(json.gradientMap);return material}});function BufferGeometryLoader(manager){this.manager=(manager!==undefined)?manager:DefaultLoadingManager}
4710Object.assign(BufferGeometryLoader.prototype,{load:function(url,onLoad,onProgress,onError){var scope=this;var loader=new FileLoader(scope.manager);loader.load(url,function(text){onLoad(scope.parse(JSON.parse(text)))},onProgress,onError)},parse:function(json){var geometry=new BufferGeometry();var index=json.data.index;if(index!==undefined){var typedArray=new TYPED_ARRAYS[index.type](index.array);geometry.setIndex(new BufferAttribute(typedArray,1))}
4711var attributes=json.data.attributes;for(var key in attributes){var attribute=attributes[key];var typedArray=new TYPED_ARRAYS[attribute.type](attribute.array);geometry.addAttribute(key,new BufferAttribute(typedArray,attribute.itemSize,attribute.normalized))}
4712var groups=json.data.groups||json.data.drawcalls||json.data.offsets;if(groups!==undefined){for(var i=0,n=groups.length;i!==n;++ i){var group=groups[i];geometry.addGroup(group.start,group.count,group.materialIndex)}}
4713var boundingSphere=json.data.boundingSphere;if(boundingSphere!==undefined){var center=new Vector3();if(boundingSphere.center!==undefined){center.fromArray(boundingSphere.center)}
4714geometry.boundingSphere=new Sphere(center,boundingSphere.radius)}
4715return geometry}});var TYPED_ARRAYS={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:typeof Uint8ClampedArray!=='undefined'?Uint8ClampedArray:Uint8Array,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array};function Loader(){}
4716Loader.Handlers={handlers:[],add:function(regex,loader){this.handlers.push(regex,loader)},get:function(file){var handlers=this.handlers;for(var i=0,l=handlers.length;i<l;i+=2){var regex=handlers[i];var loader=handlers[i+1];if(regex.test(file)){return loader}}
4717return null}};Object.assign(Loader.prototype,{crossOrigin:undefined,onLoadStart:function(){},onLoadProgress:function(){},onLoadComplete:function(){},initMaterials:function(materials,texturePath,crossOrigin){var array=[];for(var i=0;i<materials.length;++ i){array[i]=this.createMaterial(materials[i],texturePath,crossOrigin)}
4718return array}
4718,createMaterial:(function(){var BlendingMode={NoBlending:NoBlending,NormalBlending:NormalBlending,AdditiveBlending:AdditiveBlending,SubtractiveBlending:SubtractiveBlending,MultiplyBlending:MultiplyBlending,CustomBlending:CustomBlending};var color=new Color();var textureLoader=new TextureLoader();var materialLoader=new MaterialLoader();return function createMaterial(m,texturePath,crossOrigin){var textures={};function loadTexture(path,repeat,offset,wrap,anisotropy){var fullPath=texturePath+path;var loader=Loader.Handlers.get(fullPath);var texture;if(loader!==null){texture=loader.load(fullPath)}else{textureLoader.setCrossOrigin(crossOrigin);texture=textureLoader.load(fullPath)}
4719if(repeat!==undefined){texture.repeat.fromArray(repeat);if(repeat[0]!==1)texture.wrapS=RepeatWrapping;if(repeat[1]!==1)texture.wrapT=RepeatWrapping}
4720if(offset!==undefined){texture.offset.fromArray(offset)}
4721if(wrap!==undefined){if(wrap[0]==='repeat')texture.wrapS=RepeatWrapping;if(wrap[0]==='mirror')texture.wrapS=MirroredRepeatWrapping;if(wrap[1]==='repeat')texture.wrapT=RepeatWrapping;if(wrap[1]==='mirror')texture.wrapT=MirroredRepeatWrapping}
4722if(anisotropy!==undefined){texture.anisotropy=anisotropy}
4723var uuid=_Math.generateUUID();textures[uuid]=texture;return uuid}
4724var json={uuid:_Math.generateUUID(),type:'MeshLambertMaterial'};for(var name in m){var value=m[name];switch(name){case 'DbgColor':case 'DbgIndex':case 'opticalDensity':case 'illumination':break;case 'DbgName':json.name=value;break;case 'blending':json.blending=BlendingMode[value];break;case 'colorAmbient':case 'mapAmbient':console.warn('THREE.Loader.createMaterial:',name,'is no longer supported.');break;case 'colorDiffuse':json.color=color.fromArray(value).getHex();break;case 'colorSpecular':json.specular=color.fromArray(value).getHex();break;case 'colorEmissive':json.emissive=color.fromArray(value).getHex();break;case 'specularCoef':json.shininess=value;break;case 'shading':if(value.toLowerCase()==='basic')json.type='MeshBasicMaterial';if(value.toLowerCase()==='phong')json.type='MeshPhongMaterial';if(value.toLowerCase()==='standard')json.type='MeshStandardMaterial';break;case 'mapDiffuse':json.map=loadTexture(value,m.mapDiffuseRepeat,m.mapDiffuseOffset,m.mapDiffuseWrap,m.mapDiffuseAnisotropy);break;case 'mapDiffuseRepeat':case 'mapDiffuseOffset':case 'mapDiffuseWrap':case 'mapDiffuseAnisotropy':break;case 'mapEmissive':json.emissiveMap=loadTexture(value,m.mapEmissiveRepeat,m.mapEmissiveOffset,m.mapEmissiveWrap,m.mapEmissiveAnisotropy);break;case 'mapEmissiveRepeat':case 'mapEmissiveOffset':case 'mapEmissiveWrap':case 'mapEmissiveAnisotropy':break;case 'mapLight':json.lightMap=loadTexture(value,m.mapLightRepeat,m.mapLightOffset,m.mapLightWrap,m.mapLightAnisotropy);break;case 'mapLightRepeat':case 'mapLightOffset':case 'mapLightWrap':case 'mapLightAnisotropy':break;case 'mapAO':json.aoMap=loadTexture(value,m.mapAORepeat,m.mapAOOffset,m.mapAOWrap,m.mapAOAnisotropy);break;case 'mapAORepeat':case 'mapAOOffset':case 'mapAOWrap':case 'mapAOAnisotropy':break;case 'mapBump':json.bumpMap=loadTexture(value,m.mapBumpRepeat,m.mapBumpOffset,m.mapBumpWrap,m.mapBumpAnisotropy);break;case 'mapBumpScale':json.bumpScale=value;break;case 'mapBumpRepeat':case 'mapBumpOffset':case 'mapBumpWrap':case 'mapBumpAnisotropy':break;case 'mapNormal':json.normalMap=loadTexture(value,m.mapNormalRepeat,m.mapNormalOffset,m.mapNormalWrap,m.mapNormalAnisotropy);break;case 'mapNormalFactor':json.normalScale=value;break;case 'mapNormalRepeat':case 'mapNormalOffset':case 'mapNormalWrap':case 'mapNormalAnisotropy':break;case 'mapSpecular':json.specularMap=loadTexture(value,m.mapSpecularRepeat,m.mapSpecularOffset,m.mapSpecularWrap,m.mapSpecularAnisotropy);break;case 'mapSpecularRepeat':case 'mapSpecularOffset':case 'mapSpecularWrap':case 'mapSpecularAnisotropy':break;case 'mapMetalness':json.metalnessMap=loadTexture(value,m.mapMetalnessRepeat,m.mapMetalnessOffset,m.mapMetalnessWrap,m.mapMetalnessAnisotropy);break;case 'mapMetalnessRepeat':case 'mapMetalnessOffset':case 'mapMetalnessWrap':case 'mapMetalnessAnisotropy':break;case 'mapRoughness':json.roughnessMap=loadTexture(value,m.mapRoughnessRepeat,m.mapRoughnessOffset,m.mapRoughnessWrap,m.mapRoughnessAnisotropy);break;case 'mapRoughnessRepeat':case 'mapRoughnessOffset':case 'mapRoughnessWrap':case 'mapRoughnessAnisotropy':break;
4724case 'mapAlpha':json.alphaMap=loadTexture(value,m.mapAlphaRepeat,m.mapAlphaOffset,m.mapAlphaWrap,m.mapAlphaAnisotropy);break;case 'mapAlphaRepeat':case 'mapAlphaOffset':case 'mapAlphaWrap':case 'mapAlphaAnisotropy':break;case 'flipSided':json.side=BackSide;break;case 'doubleSided':json.side=DoubleSide;break;case 'transparency':console.warn('THREE.Loader.createMaterial: transparency has been renamed to opacity');json.opacity=value;break;case 'depthTest':case 'depthWrite':case 'colorWrite':case 'opacity':case 'reflectivity':case 'transparent':case 'visible':case 'wireframe':json[name]=value;break;case 'vertexColors':if(value===!0)json.vertexColors=VertexColors;if(value==='face')json.vertexColors=FaceColors;break;default:console.error('THREE.Loader.createMaterial: Unsupported',name,value);break}}
4725if(json.type==='MeshBasicMaterial')delete json.emissive;if(json.type!=='MeshPhongMaterial')delete json.specular;if(json.opacity<1)json.transparent=!0;materialLoader.setTextures(textures);return materialLoader.parse(json)}})()});var LoaderUtils={decodeText:function(array){if(typeof TextDecoder!=='undefined'){return new TextDecoder().decode(array)}
4726var s='';for(var i=0,il=array.length;i<il;i ++){s+=String.fromCharCode(array[i])}
4727return decodeURIComponent(escape(s))},extractUrlBase:function(url){var index=url.lastIndexOf('/');if(index===-1)return'./';return url.substr(0,index+1)}};function JSONLoader(manager){if(typeof manager==='boolean'){console.warn('THREE.JSONLoader: showStatus parameter has been removed from constructor.');manager=undefined}
4728this.manager=(manager!==undefined)?manager:DefaultLoadingManager;this.withCredentials=!1}
4729Object.assign(JSONLoader.prototype,{load:function(url,onLoad,onProgress,onError){var scope=this;var texturePath=this.texturePath&&(typeof this.texturePath==='string')?this.texturePath:LoaderUtils.extractUrlBase(url);var loader=new FileLoader(this.manager);loader.setWithCredentials(this.withCredentials);loader.load(url,function(text){var json=JSON.parse(text);var metadata=json.metadata;if(metadata!==undefined){var type=metadata.type;if(type!==undefined){if(type.toLowerCase()==='object'){console.error('THREE.JSONLoader: '+url+' should be loaded with THREE.ObjectLoader instead.');return}}}
4730var object=scope.parse(json,texturePath);onLoad(object.geometry,object.materials)},onProgress,onError)},setTexturePath:function(value){this.texturePath=value},parse:(function(){function parseModel(json,geometry){function isBitSet(value,position){return value&(1<<position)}
4731var i,j,fi,offset,zLength,colorIndex,normalIndex,uvIndex,materialIndex,type,isQuad,hasMaterial,hasFaceVertexUv,hasFaceNormal,hasFaceVertexNormal,hasFaceColor,hasFaceVertexColor,vertex,face,faceA,faceB,hex,normal,uvLayer,uv,u,v,faces=json.faces,vertices=json.vertices,normals=json.normals,colors=json.colors,scale=json.scale,nUvLayers=0;if(json.uvs!==undefined){for(i=0;i<json.uvs.length;i ++){if(json.uvs[i].length)nUvLayers ++}
4732for(i=0;i<nUvLayers;i ++){geometry.faceVertexUvs[i]=[]}}
4733offset=0;zLength=vertices.length;while(offset<zLength){vertex=new Vector3();vertex.x=vertices[offset ++]*scale;vertex.y=vertices[offset ++]*scale;vertex.z=vertices[offset ++]*scale;geometry.vertices.push(vertex)}
4734offset=0;zLength=faces.length;while(offset<zLength){type=faces[offset ++];isQuad=isBitSet(type,0);hasMaterial=isBitSet(type,1);hasFaceVertexUv=isBitSet(type,3);hasFaceNormal=isBitSet(type,4);hasFaceVertexNormal=isBitSet(type,5);hasFaceColor=isBitSet(type,6);hasFaceVertexColor=isBitSet(type,7);if(isQuad){faceA=new Face3();faceA.a=faces[offset];faceA.b=faces[offset+1];faceA.c=faces[offset+3];faceB=new Face3();faceB.a=faces[offset+1];faceB.b=faces[offset+2];faceB.c=faces[offset+3];offset+=4;if(hasMaterial){materialIndex=faces[offset ++];faceA.materialIndex=materialIndex;faceB.materialIndex=materialIndex}
4735fi=geometry.faces.length;if(hasFaceVertexUv){for(i=0;i<nUvLayers;i ++){uvLayer=json.uvs[i];geometry.faceVertexUvs[i][fi]=[];geometry.faceVertexUvs[i][fi+1]=[];for(j=0;j<4;j ++){uvIndex=faces[offset ++];u=uvLayer[uvIndex*2];v=uvLayer[uvIndex*2+1];uv=new Vector2(u,v);if(j!==2)geometry.faceVertexUvs[i][fi].push(uv);if(j!==0)geometry.faceVertexUvs[i][fi+1].push(uv);}}}
4736if(hasFaceNormal){normalIndex=faces[offset ++]*3;faceA.normal.set(normals[normalIndex ++],normals[normalIndex ++],normals[normalIndex]);faceB.normal.copy(faceA.normal)}
4737if(hasFaceVertexNormal){for(i=0;i<4;i ++){normalIndex=faces[offset ++]*3;normal=new Vector3(normals[normalIndex ++],normals[normalIndex ++],normals[normalIndex]);if(i!==2)faceA.vertexNormals.push(normal);if(i!==0)faceB.vertexNormals.push(normal);}}
4738if(hasFaceColor){colorIndex=faces[offset ++];hex=colors[colorIndex];faceA.color.setHex(hex);faceB.color.setHex(hex)}
4739if(hasFaceVertexColor){for(i=0;i<4;i ++){colorIndex=faces[offset ++];hex=colors[colorIndex];if(i!==2)faceA.vertexColors.push(new Color(hex));if(i!==0)faceB.vertexColors.push(new Color(hex));}}
4740geometry.faces.push(faceA);geometry.faces.push(faceB)}else{face=new Face3();face.a=faces[offset ++];face.b=faces[offset ++];face.c=faces[offset ++];if(hasMaterial){materialIndex=faces[offset ++];face.materialIndex=materialIndex}
4741fi=geometry.faces.length;if(hasFaceVertexUv){for(i=0;i<nUvLayers;i ++){uvLayer=json.uvs[i];geometry.faceVertexUvs[i][fi]=[];for(j=0;j<3;j ++){uvIndex=faces[offset ++];u=uvLayer[uvIndex*2];v=uvLayer[uvIndex*2+1];uv=new Vector2(u,v);geometry.faceVertexUvs[i][fi].push(uv)}}}
4742if(hasFaceNormal){normalIndex=faces[offset ++]*3;face.normal.set(normals[normalIndex ++],normals[normalIndex ++],normals[normalIndex])}
4743if(hasFaceVertexNormal){for(i=0;i<3;i ++){normalIndex=faces[offset ++]*3;normal=new Vector3(normals[normalIndex ++],normals[normalIndex ++],normals[normalIndex]);face.vertexNormals.push(normal)}}
4744if(hasFaceColor){colorIndex=faces[offset ++];face.color.setHex(colors[colorIndex])}
4745if(hasFaceVertexColor){for(i=0;i<3;i ++){colorIndex=faces[offset ++];face.vertexColors.push(new Color(colors[colorIndex]))}}
4746geometry.faces.push(face)}}}
4747function parseSkin(json,geometry){var influencesPerVertex=(json.influencesPerVertex!==undefined)?json.influencesPerVertex:2;if(json.skinWeights){for(var i=0,l=json.skinWeights.length;i<l;i+=influencesPerVertex){var x=json.skinWeights[i];var y=(influencesPerVertex>1)?json.skinWeights[i+1]:0;var z=(influencesPerVertex>2)?json.skinWeights[i+2]:0;var w=(influencesPerVertex>3)?json.skinWeights[i+3]:0;geometry.skinWeights.push(new Vector4(x,y,z,w))}}
4748if(json.skinIndices){for(var i=0,l=json.skinIndices.length;i<l;i+=influencesPerVertex){var a=json.skinIndices[i];var b=(influencesPerVertex>1)?json.skinIndices[i+1]:0;var c=(influencesPerVertex>2)?json.skinIndices[i+2]:0;var d=(influencesPerVertex>3)?json.skinIndices[i+3]:0;geometry.skinIndices.push(new Vector4(a,b,c,d))}}
4749geometry.bones=json.bones;if(geometry.bones&&geometry.bones.length>0&&(geometry.skinWeights.length!==geometry.skinIndices.length||geometry.skinIndices.length!==geometry.vertices.length)){console.warn('When skinning, number of vertices ('+geometry.vertices.length+'), skinIndices ('+geometry.skinIndices.length+'), and skinWeights ('+geometry.skinWeights.length+') should match.')}}
4750function parseMorphing(json,geometry){var scale=json.scale;if(json.morphTargets!==undefined){for(var i=0,l=json.morphTargets.length;i<l;i ++){geometry.morphTargets[i]={};geometry.morphTargets[i].name=json.morphTargets[i].name;geometry.morphTargets[i].vertices=[];var dstVertices=geometry.morphTargets[i].vertices;var srcVertices=json.morphTargets[i].vertices;for(var v=0,vl=srcVertices.length;v<vl;v+=3){var vertex=new Vector3();vertex.x=srcVertices[v]*scale;vertex.y=srcVertices[v+1]*scale;vertex.z=srcVertices[v+2]*scale;dstVertices.push(vertex)}}}
4751if(json.morphColors!==undefined&&json.morphColors.length>0){console.warn('THREE.JSONLoader: "morphColors" no longer supported. Using them as face colors.');var faces=geometry.faces;var morphColors=json.morphColors[0].colors;for(var i=0,l=faces.length;i<l;i ++){faces[i].color.fromArray(morphColors,i*3)}}}
4752function parseAnimations(json,geometry){var outputAnimations=[];var animations=[];
4752if(json.animation!==undefined){animations.push(json.animation)}
4753if(json.animations!==undefined){if(json.animations.length){animations=animations.concat(json.animations)}else{animations.push(json.animations)}}
4754for(var i=0;i<animations.length;i ++){var clip=AnimationClip.parseAnimation(animations[i],geometry.bones);if(clip)outputAnimations.push(clip);}
4755if(geometry.morphTargets){var morphAnimationClips=AnimationClip.CreateClipsFromMorphTargetSequences(geometry.morphTargets,10);outputAnimations=outputAnimations.concat(morphAnimationClips)}
4756if(outputAnimations.length>0)geometry.animations=outputAnimations}
4757return function parse(json,texturePath){if(json.data!==undefined){json=json.data}
4758if(json.scale!==undefined){json.scale=1.0/json.scale}else{json.scale=1.0}
4759var geometry=new Geometry();parseModel(json,geometry);parseSkin(json,geometry);parseMorphing(json,geometry);parseAnimations(json,geometry);geometry.computeFaceNormals();geometry.computeBoundingSphere();if(json.materials===undefined||json.materials.length===0){return{geometry:geometry}}else{var materials=Loader.prototype.initMaterials(json.materials,texturePath,this.crossOrigin);return{geometry:geometry,materials:materials}}}})()});function ObjectLoader(manager){this.manager=(manager!==undefined)?manager:DefaultLoadingManager;this.texturePath=''}
4760Object.assign(ObjectLoader.prototype,{load:function(url,onLoad,onProgress,onError){if(this.texturePath===''){this.texturePath=url.substring(0,url.lastIndexOf('/')+1)}
4761var scope=this;var loader=new FileLoader(scope.manager);loader.load(url,function(text){var json=null;try{json=JSON.parse(text)}catch(error){if(onError!==undefined)onError(error);console.error('THREE:ObjectLoader: Can\'t parse '+url+'.',error.message);return}
4762var metadata=json.metadata;if(metadata===undefined||metadata.type===undefined||metadata.type.toLowerCase()==='geometry'){console.error('THREE.ObjectLoader: Can\'t load '+url+'. Use THREE.JSONLoader instead.');return}
4763scope.parse(json,onLoad)},onProgress,onError)},setTexturePath:function(value){this.texturePath=value;return this},setCrossOrigin:function(value){this.crossOrigin=value;return this},parse:function(json,onLoad){var shapes=this.parseShape(json.shapes);var geometries=this.parseGeometries(json.geometries,shapes);var images=this.parseImages(json.images,function(){if(onLoad!==undefined)onLoad(object);});var textures=this.parseTextures(json.textures,images);var materials=this.parseMaterials(json.materials,textures);var object=this.parseObject(json.object,geometries,materials);if(json.animations){object.animations=this.parseAnimations(json.animations)}
4764if(json.images===undefined||json.images.length===0){if(onLoad!==undefined)onLoad(object);}
4765return object},parseShape:function(json){var shapes={};if(json!==undefined){for(var i=0,l=json.length;i<l;i ++){var shape=new Shape().fromJSON(json[i]);shapes[shape.uuid]=shape}}
4766return shapes},parseGeometries:function(json,shapes){var geometries={};if(json!==undefined){var geometryLoader=new JSONLoader();var bufferGeometryLoader=new BufferGeometryLoader();for(var i=0,l=json.length;i<l;i ++){var geometry;var data=json[i];switch(data.type){case 'PlaneGeometry':case 'PlaneBufferGeometry':geometry=new Geometries[data.type](data.width,data.height,data.widthSegments,data.heightSegments);break;case 'BoxGeometry':case 'BoxBufferGeometry':case 'CubeGeometry':geometry=new Geometries[data.type](data.width,data.height,data.depth,data.widthSegments,data.heightSegments,data.depthSegments);break;case 'CircleGeometry':case 'CircleBufferGeometry':geometry=new Geometries[data.type](data.radius,data.segments,data.thetaStart,data.thetaLength);break;case 'CylinderGeometry':case 'CylinderBufferGeometry':geometry=new Geometries[data.type](data.radiusTop,data.radiusBottom,data.height,data.radialSegments,data.heightSegments,data.openEnded,data.thetaStart,data.thetaLength);break;case 'ConeGeometry':case 'ConeBufferGeometry':geometry=new Geometries[data.type](data.radius,data.height,data.radialSegments,data.heightSegments,data.openEnded,data.thetaStart,data.thetaLength);break;case 'SphereGeometry':case 'SphereBufferGeometry':geometry=new Geometries[data.type](data.radius,data.widthSegments,data.heightSegments,data.phiStart,data.phiLength,data.thetaStart,data.thetaLength);break;case 'DodecahedronGeometry':case 'DodecahedronBufferGeometry':case 'IcosahedronGeometry':case 'IcosahedronBufferGeometry':case 'OctahedronGeometry':case 'OctahedronBufferGeometry':case 'TetrahedronGeometry':case 'TetrahedronBufferGeometry':geometry=new Geometries[data.type](data.radius,data.detail);break;case 'RingGeometry':case 'RingBufferGeometry':geometry=new Geometries[data.type](data.innerRadius,data.outerRadius,data.thetaSegments,data.phiSegments,data.thetaStart,data.thetaLength);break;case 'TorusGeometry':case 'TorusBufferGeometry':geometry=new Geometries[data.type](data.radius,data.tube,data.radialSegments,data.tubularSegments,data.arc);break;case 'TorusKnotGeometry':case 'TorusKnotBufferGeometry':geometry=new Geometries[data.type](data.radius,data.tube,data.tubularSegments,data.radialSegments,data.p,data.q);break;case 'LatheGeometry':case 'LatheBufferGeometry':geometry=new Geometries[data.type](data.points,data.segments,data.phiStart,data.phiLength);break;case 'PolyhedronGeometry':case 'PolyhedronBufferGeometry':geometry=new Geometries[data.type](data.vertices,data.indices,data.radius,data.details);break;case 'ShapeGeometry':case 'ShapeBufferGeometry':var geometryShapes=[];for(var j=0,jl=data.shapes.length;j<jl;j ++){var shape=shapes[data.shapes[j]];geometryShapes.push(shape)}
4767geometry=new Geometries[data.type](geometryShapes,data.curveSegments);break;case 'ExtrudeGeometry':case 'ExtrudeBufferGeometry':var geometryShapes=[];for(var j=0,jl=data.shapes.length;j<jl;j ++){var shape=shapes[data.shapes[j]];geometryShapes.push(shape)}
4768var extrudePath=data.options.extrudePath;if(extrudePath!==undefined){data.options.extrudePath=new Curves[extrudePath.type]().fromJSON(extrudePath)}
4769geometry=new Geometries[data.type](geometryShapes,data.options);break;case 'BufferGeometry':geometry=bufferGeometryLoader.parse(data);break;case 'Geometry':geometry=geometryLoader.parse(data,this.texturePath).geometry;break;default:console.warn('THREE.ObjectLoader: Unsupported geometry type "'+data.type+'"');continue}
4770geometry.uuid=data.uuid;if(data.name!==undefined)geometry.name=data.name;
4770if(geometry.isBufferGeometry===!0&&data.userData!==undefined)geometry.userData=data.userData;geometries[data.uuid]=geometry}}
4771return geometries},parseMaterials:function(json,textures){var materials={};if(json!==undefined){var loader=new MaterialLoader();loader.setTextures(textures);for(var i=0,l=json.length;i<l;i ++){var data=json[i];if(data.type==='MultiMaterial'){var array=[];for(var j=0;j<data.materials.length;j ++){array.push(loader.parse(data.materials[j]))}
4772materials[data.uuid]=array}else{materials[data.uuid]=loader.parse(data)}}}
4773return materials},parseAnimations:function(json){var animations=[];for(var i=0;i<json.length;i ++){var data=json[i];var clip=AnimationClip.parse(data);if(data.uuid!==undefined)clip.uuid=data.uuid;animations.push(clip)}
4774return animations},parseImages:function(json,onLoad){var scope=this;var images={};function loadImage(url){scope.manager.itemStart(url);return loader.load(url,function(){scope.manager.itemEnd(url)},undefined,function(){scope.manager.itemEnd(url);scope.manager.itemError(url)})}
4775if(json!==undefined&&json.length>0){var manager=new LoadingManager(onLoad);var loader=new ImageLoader(manager);loader.setCrossOrigin(this.crossOrigin);for(var i=0,l=json.length;i<l;i ++){var image=json[i];var path=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(image.url)?image.url:scope.texturePath+image.url;images[image.uuid]=loadImage(path)}}
4776return images},parseTextures:function(json,images){function parseConstant(value,type){if(typeof value==='number')return value;console.warn('THREE.ObjectLoader.parseTexture: Constant should be in numeric form.',value);return type[value]}
4777var textures={};if(json!==undefined){for(var i=0,l=json.length;i<l;i ++){var data=json[i];if(data.image===undefined){console.warn('THREE.ObjectLoader: No "image" specified for',data.uuid)}
4778if(images[data.image]===undefined){console.warn('THREE.ObjectLoader: Undefined image',data.image)}
4779var texture=new Texture(images[data.image]);texture.needsUpdate=!0;texture.uuid=data.uuid;if(data.name!==undefined)texture.name=data.name;if(data.mapping!==undefined)texture.mapping=parseConstant(data.mapping,TEXTURE_MAPPING);if(data.offset!==undefined)texture.offset.fromArray(data.offset);if(data.repeat!==undefined)texture.repeat.fromArray(data.repeat);if(data.center!==undefined)texture.center.fromArray(data.center);if(data.rotation!==undefined)texture.rotation=data.rotation;if(data.wrap!==undefined){texture.wrapS=parseConstant(data.wrap[0],TEXTURE_WRAPPING);texture.wrapT=parseConstant(data.wrap[1],TEXTURE_WRAPPING)}
4780if(data.format!==undefined)texture.format=data.format;if(data.minFilter!==undefined)texture.minFilter=parseConstant(data.minFilter,TEXTURE_FILTER);if(data.magFilter!==undefined)texture.magFilter=parseConstant(data.magFilter,TEXTURE_FILTER);if(data.anisotropy!==undefined)texture.anisotropy=data.anisotropy;if(data.flipY!==undefined)texture.flipY=data.flipY;textures[data.uuid]=texture}}
4781return textures},parseObject:function(data,geometries,materials){var object;function getGeometry(name){if(geometries[name]===undefined){console.warn('THREE.ObjectLoader: Undefined geometry',name)}
4782return geometries[name]}
4783function getMaterial(name){if(name===undefined)return undefined;if(Array.isArray(name)){var array=[];for(var i=0,l=name.length;i<l;i ++){var uuid=name[i];if(materials[uuid]===undefined){console.warn('THREE.ObjectLoader: Undefined material',uuid)}
4784array.push(materials[uuid])}
4785return array}
4786if(materials[name]===undefined){console.warn('THREE.ObjectLoader: Undefined material',name)}
4787return materials[name]}
4788switch(data.type){case 'Scene':object=new Scene();if(data.background!==undefined){if(Number.isInteger(data.background)){object.background=new Color(data.background)}}
4789if(data.fog!==undefined){if(data.fog.type==='Fog'){object.fog=new Fog(data.fog.color,data.fog.near,data.fog.far)}else if(data.fog.type==='FogExp2'){object.fog=new FogExp2(data.fog.color,data.fog.density)}}
4790break;case 'PerspectiveCamera':object=new PerspectiveCamera(data.fov,data.aspect,data.near,data.far);if(data.focus!==undefined)object.focus=data.focus;if(data.zoom!==undefined)object.zoom=data.zoom;if(data.filmGauge!==undefined)object.filmGauge=data.filmGauge;if(data.filmOffset!==undefined)object.filmOffset=data.filmOffset;if(data.view!==undefined)object.view=Object.assign({},data.view);break;
4790case 'OrthographicCamera':object=new OrthographicCamera(data.left,data.right,data.top,data.bottom,data.near,data.far);if(data.zoom!==undefined)object.zoom=data.zoom;if(data.view!==undefined)object.view=Object.assign({},data.view);break;case 'AmbientLight':object=new AmbientLight(data.color,data.intensity);break;case 'DirectionalLight':object=new DirectionalLight(data.color,data.intensity);break;case 'PointLight':object=new PointLight(data.color,data.intensity,data.distance,data.decay);break;case 'RectAreaLight':object=new RectAreaLight(data.color,data.intensity,data.width,data.height);break;case 'SpotLight':object=new SpotLight(data.color,data.intensity,data.distance,data.angle,data.penumbra,data.decay);break;case 'HemisphereLight':object=new HemisphereLight(data.color,data.groundColor,data.intensity);break;case 'SkinnedMesh':console.warn('THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.');case 'Mesh':var geometry=getGeometry(data.geometry);var material=getMaterial(data.material);if(geometry.bones&&geometry.bones.length>0){object=new SkinnedMesh(geometry,material)}else{object=new Mesh(geometry,material)}
4791break;case 'LOD':object=new LOD();break;case 'Line':object=new Line(getGeometry(data.geometry),getMaterial(data.material),data.mode);break;case 'LineLoop':object=new LineLoop(getGeometry(data.geometry),getMaterial(data.material));break;case 'LineSegments':object=new LineSegments(getGeometry(data.geometry),getMaterial(data.material));break;case 'PointCloud':case 'Points':object=new Points(getGeometry(data.geometry),getMaterial(data.material));break;case 'Sprite':object=new Sprite(getMaterial(data.material));break;case 'Group':object=new Group();break;default:object=new Object3D()}
4792object.uuid=data.uuid;if(data.name!==undefined)object.name=data.name;if(data.matrix!==undefined){object.matrix.fromArray(data.matrix);if(data.matrixAutoUpdate!==undefined)object.matrixAutoUpdate=data.matrixAutoUpdate;if(object.matrixAutoUpdate)object.matrix.decompose(object.position,object.quaternion,object.scale);}else{if(data.position!==undefined)object.position.fromArray(data.position);if(data.rotation!==undefined)object.rotation.fromArray(data.rotation);if(data.quaternion!==undefined)object.quaternion.fromArray(data.quaternion);if(data.scale!==undefined)object.scale.fromArray(data.scale);}
4793if(data.castShadow!==undefined)object.castShadow=data.castShadow;if(data.receiveShadow!==undefined)object.receiveShadow=data.receiveShadow;if(data.shadow){if(data.shadow.bias!==undefined)object.shadow.bias=data.shadow.bias;if(data.shadow.radius!==undefined)object.shadow.radius=data.shadow.radius;if(data.shadow.mapSize!==undefined)object.shadow.mapSize.fromArray(data.shadow.mapSize);if(data.shadow.camera!==undefined)object.shadow.camera=this.parseObject(data.shadow.camera);}
4794if(data.visible!==undefined)object.visible=data.visible;if(data.frustumCulled!==undefined)object.frustumCulled=data.frustumCulled;if(data.renderOrder!==undefined)object.renderOrder=data.renderOrder;if(data.userData!==undefined)object.userData=data.userData;if(data.children!==undefined){var children=data.children;for(var i=0;i<children.length;i ++){object.add(this.parseObject(children[i],geometries,materials))}}
4795if(data.type==='LOD'){var levels=data.levels;for(var l=0;l<levels.length;l ++){var level=levels[l];var child=object.getObjectByProperty('uuid',level.object);if(child!==undefined){object.addLevel(child,level.distance)}}}
4796return object}});var TEXTURE_MAPPING={UVMapping:UVMapping,CubeReflectionMapping:CubeReflectionMapping,CubeRefractionMapping:CubeRefractionMapping,EquirectangularReflectionMapping:EquirectangularReflectionMapping,EquirectangularRefractionMapping:EquirectangularRefractionMapping,SphericalReflectionMapping:SphericalReflectionMapping,CubeUVReflectionMapping:CubeUVReflectionMapping,CubeUVRefractionMapping:CubeUVRefractionMapping};var TEXTURE_WRAPPING={RepeatWrapping:RepeatWrapping,ClampToEdgeWrapping:ClampToEdgeWrapping,MirroredRepeatWrapping:MirroredRepeatWrapping};var TEXTURE_FILTER={NearestFilter:NearestFilter,NearestMipMapNearestFilter:NearestMipMapNearestFilter,NearestMipMapLinearFilter:NearestMipMapLinearFilter,LinearFilter:LinearFilter,LinearMipMapNearestFilter:LinearMipMapNearestFilter,LinearMipMapLinearFilter:LinearMipMapLinearFilter};function ShapePath(){this.type='ShapePath';this.color=new Color();this.subPaths=[];this.currentPath=null}
4797Object.assign(ShapePath.prototype,{moveTo:function(x,y){this.currentPath=new Path();this.subPaths.push(this.currentPath);this.currentPath.moveTo(x,y)},lineTo:function(x,y){this.currentPath.lineTo(x,y)},quadraticCurveTo:function(aCPx,aCPy,aX,aY){this.currentPath.quadraticCurveTo(aCPx,aCPy,aX,aY)},bezierCurveTo:function(aCP1x,aCP1y,aCP2x,aCP2y,aX,aY){this.currentPath.bezierCurveTo(aCP1x,aCP1y,aCP2x,aCP2y,aX,aY)},splineThru:function(pts){this.currentPath.splineThru(pts)},toShapes:function(isCCW,noHoles){function toShapesNoHoles(inSubpaths){var shapes=[];for(var i=0,l=inSubpaths.length;i<l;i ++){var tmpPath=inSubpaths[i];var tmpShape=new Shape();tmpShape.curves=tmpPath.curves;shapes.push(tmpShape)}
4798return shapes}
4799function isPointInsidePolygon(inPt,inPolygon){var polyLen=inPolygon.length;var inside=!1;for(var p=polyLen-1,q=0;q<polyLen;p=q ++){var edgeLowPt=inPolygon[p];var edgeHighPt=inPolygon[q];var edgeDx=edgeHighPt.x-edgeLowPt.x;var edgeDy=edgeHighPt.y-edgeLowPt.y;if(Math.abs(edgeDy)>Number.EPSILON){if(edgeDy<0){edgeLowPt=inPolygon[q];edgeDx=-edgeDx;edgeHighPt=inPolygon[p];edgeDy=-edgeDy}
4800if((inPt.y<edgeLowPt.y)||(inPt.y>edgeHighPt.y))continue;if(inPt.y===edgeLowPt.y){if(inPt.x===edgeLowPt.x)return!0}else{var perpEdge=edgeDy*(inPt.x-edgeLowPt.x)-edgeDx*(inPt.y-edgeLowPt.y);if(perpEdge===0)return!0;
4800if(perpEdge<0)continue;inside=!inside}}else{if(inPt.y!==edgeLowPt.y)continue;if(((edgeHighPt.x<=inPt.x)&&(inPt.x<=edgeLowPt.x))||((edgeLowPt.x<=inPt.x)&&(inPt.x<=edgeHighPt.x)))return!0}}
4801return inside}
4802var isClockWise=ShapeUtils.isClockWise;var subPaths=this.subPaths;if(subPaths.length===0)return[];if(noHoles===!0)return toShapesNoHoles(subPaths);var solid,tmpPath,tmpShape,shapes=[];if(subPaths.length===1){tmpPath=subPaths[0];tmpShape=new Shape();tmpShape.curves=tmpPath.curves;shapes.push(tmpShape);return shapes}
4803var holesFirst=!isClockWise(subPaths[0].getPoints());holesFirst=isCCW?!holesFirst:holesFirst;var betterShapeHoles=[];var newShapes=[];var newShapeHoles=[];var mainIdx=0;var tmpPoints;newShapes[mainIdx]=undefined;newShapeHoles[mainIdx]=[];for(var i=0,l=subPaths.length;i<l;i ++){tmpPath=subPaths[i];tmpPoints=tmpPath.getPoints();solid=isClockWise(tmpPoints);solid=isCCW?!solid:solid;if(solid){if((!holesFirst)&&(newShapes[mainIdx]))mainIdx ++;newShapes[mainIdx]={s:new Shape(),p:tmpPoints};newShapes[mainIdx].s.curves=tmpPath.curves;if(holesFirst)mainIdx ++;newShapeHoles[mainIdx]=[]}else{newShapeHoles[mainIdx].push({h:tmpPath,p:tmpPoints[0]})}}
4804if(!newShapes[0])return toShapesNoHoles(subPaths);if(newShapes.length>1){var ambiguous=!1;var toChange=[];for(var sIdx=0,sLen=newShapes.length;sIdx<sLen;sIdx ++){betterShapeHoles[sIdx]=[]}
4805for(var sIdx=0,sLen=newShapes.length;sIdx<sLen;sIdx ++){var sho=newShapeHoles[sIdx];for(var hIdx=0;hIdx<sho.length;hIdx ++){var ho=sho[hIdx];var hole_unassigned=!0;for(var s2Idx=0;s2Idx<newShapes.length;s2Idx ++){if(isPointInsidePolygon(ho.p,newShapes[s2Idx].p)){if(sIdx!==s2Idx)toChange.push({froms:sIdx,tos:s2Idx,hole:hIdx});if(hole_unassigned){hole_unassigned=!1;betterShapeHoles[s2Idx].push(ho)}else{ambiguous=!0}}}
4806if(hole_unassigned){betterShapeHoles[sIdx].push(ho)}}}
4807if(toChange.length>0){if(!ambiguous)newShapeHoles=betterShapeHoles}}
4808var tmpHoles;for(var i=0,il=newShapes.length;i<il;i ++){tmpShape=newShapes[i].s;shapes.push(tmpShape);tmpHoles=newShapeHoles[i];for(var j=0,jl=tmpHoles.length;j<jl;j ++){tmpShape.holes.push(tmpHoles[j].h)}}
4809return shapes}});function Font(data){this.type='Font';this.data=data}
4810Object.assign(Font.prototype,{isFont:!0,generateShapes:function(text,size,divisions){if(size===undefined)size=100;if(divisions===undefined)divisions=4;var shapes=[];var paths=createPaths(text,size,divisions,this.data);for(var p=0,pl=paths.length;p<pl;p ++){Array.prototype.push.apply(shapes,paths[p].toShapes())}
4811return shapes}});function createPaths(text,size,divisions,data){var chars=Array.from?Array.from(text):String(text).split('');var scale=size/data.resolution;var line_height=(data.boundingBox.yMax-data.boundingBox.yMin+data.underlineThickness)*scale;var paths=[];var offsetX=0,offsetY=0;for(var i=0;i<chars.length;i ++){var char=chars[i];if(char==='\n'){offsetX=0;offsetY-=line_height}else{var ret=createPath(char,divisions,scale,offsetX,offsetY,data);offsetX+=ret.offsetX;paths.push(ret.path)}}
4812return paths}
4813function createPath(char,divisions,scale,offsetX,offsetY,data){var glyph=data.glyphs[char]||data.glyphs['?'];if(!glyph)return;var path=new ShapePath();var x,y,cpx,cpy,cpx1,cpy1,cpx2,cpy2;if(glyph.o){var outline=glyph._cachedOutline||(glyph._cachedOutline=glyph.o.split(' '));for(var i=0,l=outline.length;i<l;){var action=outline[i ++];switch(action){case 'm':x=outline[i ++]*scale+offsetX;y=outline[i ++]*scale+offsetY;path.moveTo(x,y);break;case 'l':x=outline[i ++]*scale+offsetX;y=outline[i ++]*scale+offsetY;path.lineTo(x,y);break;case 'q':cpx=outline[i ++]*scale+offsetX;cpy=outline[i ++]*scale+offsetY;cpx1=outline[i ++]*scale+offsetX;cpy1=outline[i ++]*scale+offsetY;path.quadraticCurveTo(cpx1,cpy1,cpx,cpy);break;case 'b':cpx=outline[i ++]*scale+offsetX;cpy=outline[i ++]*scale+offsetY;cpx1=outline[i ++]*scale+offsetX;cpy1=outline[i ++]*scale+offsetY;cpx2=outline[i ++]*scale+offsetX;cpy2=outline[i ++]*scale+offsetY;path.bezierCurveTo(cpx1,cpy1,cpx2,cpy2,cpx,cpy);break}}}
4814return{offsetX:glyph.ha*scale,path:path}}
4815function FontLoader(manager){this.manager=(manager!==undefined)?manager:DefaultLoadingManager}
4816Object.assign(FontLoader.prototype,{load:function(url,onLoad,onProgress,onError){var scope=this;var loader=new FileLoader(this.manager);loader.setPath(this.path);loader.load(url,function(text){var json;try{json=JSON.parse(text)}catch(e){console.warn('THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.');json=JSON.parse(text.substring(65,text.length-2))}
4817var font=scope.parse(json);if(onLoad)onLoad(font);},onProgress,onError)},parse:function(json){return new Font(json)},setPath:function(value){this.path=value;return this}});var context;var AudioContext={getContext:function(){if(context===undefined){context=new(window.AudioContext||window.webkitAudioContext)()}
4818return context},setContext:function(value){context=value}};function AudioLoader(manager){this.manager=(manager!==undefined)?manager:DefaultLoadingManager}
4819Object.assign(AudioLoader.prototype,{load:function(url,onLoad,onProgress,onError){var loader=new FileLoader(this.manager);loader.setResponseType('arraybuffer');loader.load(url,function(buffer){var context=AudioContext.getContext();context.decodeAudioData(buffer,function(audioBuffer){onLoad(audioBuffer)})},onProgress,onError)}});function StereoCamera(){this.type='StereoCamera';this.aspect=1;this.eyeSep=0.064;this.cameraL=new PerspectiveCamera();this.cameraL.layers.enable(1);this.cameraL.matrixAutoUpdate=!1;this.cameraR=new PerspectiveCamera();this.cameraR.layers.enable(2);this.cameraR.matrixAutoUpdate=!1}
4820Object.assign(StereoCamera.prototype,{update:(function(){var instance,focus,fov,aspect,near,far,zoom,eyeSep;var eyeRight=new Matrix4();var eyeLeft=new Matrix4();return function update(camera){var needsUpdate=instance!==this||focus!==camera.focus||fov!==camera.fov||aspect!==camera.aspect*this.aspect||near!==camera.near||far!==camera.far||zoom!==camera.zoom||eyeSep!==this.eyeSep;if(needsUpdate){instance=this;focus=camera.focus;fov=camera.fov;aspect=camera.aspect*this.aspect;near=camera.near;far=camera.far;zoom=camera.zoom;var projectionMatrix=camera.projectionMatrix.clone();eyeSep=this.eyeSep/2;var eyeSepOnProjection=eyeSep*near/focus;var ymax=(near*Math.tan(_Math.DEG2RAD*fov*0.5))/zoom;var xmin,xmax;eyeLeft.elements[12]=-eyeSep;eyeRight.elements[12]=eyeSep;xmin=-ymax*aspect+eyeSepOnProjection;xmax=ymax*aspect+eyeSepOnProjection;projectionMatrix.elements[0]=2*near/(xmax-xmin);projectionMatrix.elements[8]=(xmax+xmin)/(xmax-xmin);this.cameraL.projectionMatrix.copy(projectionMatrix);xmin=-ymax*aspect-eyeSepOnProjection;xmax=ymax*aspect-eyeSepOnProjection;projectionMatrix.elements[0]=2*near/(xmax-xmin);projectionMatrix.elements[8]=(xmax+xmin)/(xmax-xmin);this.cameraR.projectionMatrix.copy(projectionMatrix)}
4821this.cameraL.matrixWorld.copy(camera.matrixWorld).multiply(eyeLeft);this.cameraR.matrixWorld.copy(camera.matrixWorld).multiply(eyeRight)}})()});function CubeCamera(near,far,cubeResolution){Object3D.call(this);this.type='CubeCamera';var fov=90,aspect=1;var cameraPX=new PerspectiveCamera(fov,aspect,near,far);cameraPX.up.set(0,-1,0);cameraPX.lookAt(new Vector3(1,0,0));this.add(cameraPX);var cameraNX=new PerspectiveCamera(fov,aspect,near,far);cameraNX.up.set(0,-1,0);cameraNX.lookAt(new Vector3(-1,0,0));this.add(cameraNX);var cameraPY=new PerspectiveCamera(fov,aspect,near,far);cameraPY.up.set(0,0,1);cameraPY.lookAt(new Vector3(0,1,0));this.add(cameraPY);var cameraNY=new PerspectiveCamera(fov,aspect,near,far);cameraNY.up.set(0,0,-1);cameraNY.lookAt(new Vector3(0,-1,0));this.add(cameraNY);var cameraPZ=new PerspectiveCamera(fov,aspect,near,far);cameraPZ.up.set(0,-1,0);cameraPZ.lookAt(new Vector3(0,0,1));this.add(cameraPZ);var cameraNZ=new PerspectiveCamera(fov,aspect,near,far);cameraNZ.up.set(0,-1,0);cameraNZ.lookAt(new Vector3(0,0,-1));this.add(cameraNZ);var options={format:RGBFormat,magFilter:LinearFilter,minFilter:LinearFilter};this.renderTarget=new WebGLRenderTargetCube(cubeResolution,cubeResolution,options);this.renderTarget.texture.name="CubeCamera";this.update=function(renderer,scene){if(this.parent===null)this.updateMatrixWorld();var renderTarget=this.renderTarget;var generateMipmaps=renderTarget.texture.generateMipmaps;renderTarget.texture.generateMipmaps=!1;renderTarget.activeCubeFace=0;renderer.render(scene,cameraPX,renderTarget);renderTarget.activeCubeFace=1;renderer.render(scene,cameraNX,renderTarget);renderTarget.activeCubeFace=2;renderer.render(scene,cameraPY,renderTarget);renderTarget.activeCubeFace=3;renderer.render(scene,cameraNY,renderTarget);renderTarget.activeCubeFace=4;renderer.render(scene,cameraPZ,renderTarget);renderTarget.texture.generateMipmaps=generateMipmaps;renderTarget.activeCubeFace=5;renderer.render(scene,cameraNZ,renderTarget);renderer.setRenderTarget(null)};this.clear=function(renderer,color,depth,stencil){var renderTarget=this.renderTarget;for(var i=0;i<6;i ++){renderTarget.activeCubeFace=i;renderer.setRenderTarget(renderTarget);renderer.clear(color,depth,stencil)}
4822renderer.setRenderTarget(null)}}
4823CubeCamera.prototype=Object.create(Object3D.prototype);CubeCamera.prototype.constructor=CubeCamera;function AudioListener(){Object3D.call(this);this.type='AudioListener';this.context=AudioContext.getContext();this.gain=this.context.createGain();this.gain.connect(this.context.destination);this.filter=null}
4824AudioListener.prototype=Object.assign(Object.create(Object3D.prototype),{constructor:AudioListener,getInput:function(){return this.gain},removeFilter:function(){if(this.filter!==null){this.gain.disconnect(this.filter);this.filter.disconnect(this.context.destination);this.gain.connect(this.context.destination);this.filter=null}},getFilter:function(){return this.filter},setFilter:function(value){if(this.filter!==null){this.gain.disconnect(this.filter);this.filter.disconnect(this.context.destination)}else{this.gain.disconnect(this.context.destination)}
4825this.filter=value;this.gain.connect(this.filter);this.filter.connect(this.context.destination)},getMasterVolume:function(){return this.gain.gain.value},setMasterVolume:function(value){this.gain.gain.setTargetAtTime(value,this.context.currentTime,0.01)},updateMatrixWorld:(function(){var position=new Vector3();var quaternion=new Quaternion();var scale=new Vector3();var orientation=new Vector3();return function updateMatrixWorld(force){Object3D.prototype.updateMatrixWorld.call(this,force);var listener=this.context.listener;var up=this.up;this.matrixWorld.decompose(position,quaternion,scale);orientation.set(0,0,-1).applyQuaternion(quaternion);if(listener.positionX){listener.positionX.setValueAtTime(position.x,this.context.currentTime);listener.positionY.setValueAtTime(position.y,this.context.currentTime);listener.positionZ.setValueAtTime(position.z,this.context.currentTime);listener.forwardX.setValueAtTime(orientation.x,this.context.currentTime);listener.forwardY.setValueAtTime(orientation.y,this.context.currentTime);listener.forwardZ.setValueAtTime(orientation.z,this.context.currentTime);listener.upX.setValueAtTime(up.x,this.context.currentTime);listener.upY.setValueAtTime(up.y,this.context.currentTime);listener.upZ.setValueAtTime(up.z,this.context.currentTime)}else{listener.setPosition(position.x,position.y,position.z);listener.setOrientation(orientation.x,orientation.y,orientation.z,up.x,up.y,up.z)}}})()});function Audio(listener){Object3D.call(this);this.type='Audio';this.context=listener.context;this.gain=this.context.createGain();this.gain.connect(listener.getInput());this.autoplay=!1;this.buffer=null;this.loop=!1;this.startTime=0;this.offset=0;this.playbackRate=1;this.isPlaying=!1;
4825this.hasPlaybackControl=!0;this.sourceType='empty';this.filters=[]}
4826Audio.prototype=Object.assign(Object.create(Object3D.prototype),{constructor:Audio,getOutput:function(){return this.gain},setNodeSource:function(audioNode){this.hasPlaybackControl=!1;this.sourceType='audioNode';this.source=audioNode;this.connect();return this},setMediaElementSource:function(mediaElement){this.hasPlaybackControl=!1;this.sourceType='mediaNode';this.source=this.context.createMediaElementSource(mediaElement);this.connect();return this},setBuffer:function(audioBuffer){this.buffer=audioBuffer;this.sourceType='buffer';if(this.autoplay)this.play();return this},play:function(){if(this.isPlaying===!0){console.warn('THREE.Audio: Audio is already playing.');return}
4827if(this.hasPlaybackControl===!1){console.warn('THREE.Audio: this Audio has no playback control.');return}
4828var source=this.context.createBufferSource();source.buffer=this.buffer;source.loop=this.loop;source.onended=this.onEnded.bind(this);source.playbackRate.setValueAtTime(this.playbackRate,this.startTime);this.startTime=this.context.currentTime;source.start(this.startTime,this.offset);this.isPlaying=!0;this.source=source;return this.connect()},pause:function(){if(this.hasPlaybackControl===!1){console.warn('THREE.Audio: this Audio has no playback control.');return}
4829if(this.isPlaying===!0){this.source.stop();this.offset+=(this.context.currentTime-this.startTime)*this.playbackRate;this.isPlaying=!1}
4830return this},stop:function(){if(this.hasPlaybackControl===!1){console.warn('THREE.Audio: this Audio has no playback control.');return}
4831this.source.stop();this.offset=0;this.isPlaying=!1;return this},connect:function(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(var i=1,l=this.filters.length;i<l;i ++){this.filters[i-1].connect(this.filters[i])}
4832this.filters[this.filters.length-1].connect(this.getOutput())}else{this.source.connect(this.getOutput())}
4833return this},disconnect:function(){if(this.filters.length>0){this.source.disconnect(this.filters[0]);for(var i=1,l=this.filters.length;i<l;i ++){this.filters[i-1].disconnect(this.filters[i])}
4834this.filters[this.filters.length-1].disconnect(this.getOutput())}else{this.source.disconnect(this.getOutput())}
4835return this},getFilters:function(){return this.filters},setFilters:function(value){if(!value)value=[];if(this.isPlaying===!0){this.disconnect();this.filters=value;this.connect()}else{this.filters=value}
4836return this},getFilter:function(){return this.getFilters()[0]},setFilter:function(filter){return this.setFilters(filter?[filter]:[])},setPlaybackRate:function(value){if(this.hasPlaybackControl===!1){console.warn('THREE.Audio: this Audio has no playback control.');return}
4837this.playbackRate=value;if(this.isPlaying===!0){this.source.playbackRate.setValueAtTime(this.playbackRate,this.context.currentTime)}
4838return this},getPlaybackRate:function(){return this.playbackRate},onEnded:function(){this.isPlaying=!1},getLoop:function(){if(this.hasPlaybackControl===!1){console.warn('THREE.Audio: this Audio has no playback control.');return!1}
4839return this.loop},setLoop:function(value){if(this.hasPlaybackControl===!1){console.warn('THREE.Audio: this Audio has no playback control.');return}
4840this.loop=value;if(this.isPlaying===!0){this.source.loop=this.loop}
4841return this},getVolume:function(){return this.gain.gain.value},setVolume:function(value){this.gain.gain.setTargetAtTime(value,this.context.currentTime,0.01);return this}});function PositionalAudio(listener){Audio.call(this,listener);this.panner=this.context.createPanner();this.panner.connect(this.gain)}
4842PositionalAudio.prototype=Object.assign(Object.create(Audio.prototype),{constructor:PositionalAudio,getOutput:function(){return this.panner},getRefDistance:function(){return this.panner.refDistance},setRefDistance:function(value){this.panner.refDistance=value},getRolloffFactor:function(){return this.panner.rolloffFactor},setRolloffFactor:function(value){this.panner.rolloffFactor=value},getDistanceModel:function(){return this.panner.distanceModel},setDistanceModel:function(value){this.panner.distanceModel=value},getMaxDistance:function(){return this.panner.maxDistance},setMaxDistance:function(value){this.panner.maxDistance=value},updateMatrixWorld:(function(){var position=new Vector3();return function updateMatrixWorld(force){Object3D.prototype.updateMatrixWorld.call(this,force);position.setFromMatrixPosition(this.matrixWorld);this.panner.setPosition(position.x,position.y,position.z)}})()});function AudioAnalyser(audio,fftSize){this.analyser=audio.context.createAnalyser();this.analyser.fftSize=fftSize!==undefined?fftSize:2048;this.data=new Uint8Array(this.analyser.frequencyBinCount);audio.getOutput().connect(this.analyser)}
4843Object.assign(AudioAnalyser.prototype,{getFrequencyData:function(){this.analyser.getByteFrequencyData(this.data);return this.data},getAverageFrequency:function(){var value=0,data=this.getFrequencyData();for(var i=0;i<data.length;i ++){value+=data[i]}
4844return value/data.length}});function PropertyMixer(binding,typeName,valueSize){this.binding=binding;this.valueSize=valueSize;var bufferType=Float64Array,mixFunction;switch(typeName){case 'quaternion':mixFunction=this._slerp;break;case 'string':case 'bool':bufferType=Array;mixFunction=this._select;break;default:mixFunction=this._lerp}
4845this.buffer=new bufferType(valueSize*4);this._mixBufferRegion=mixFunction;this.cumulativeWeight=0;this.useCount=0;this.referenceCount=0}
4846Object.assign(PropertyMixer.prototype,{accumulate:function(accuIndex,weight){var buffer=this.buffer,stride=this.valueSize,offset=accuIndex*stride+stride,currentWeight=this.cumulativeWeight;if(currentWeight===0){for(var i=0;i!==stride;++ i){buffer[offset+i]=buffer[i]}
4847currentWeight=weight}else{currentWeight+=weight;var mix=weight/currentWeight;this._mixBufferRegion(buffer,offset,0,mix,stride)}
4848this.cumulativeWeight=currentWeight},apply:function(accuIndex){var stride=this.valueSize,buffer=this.buffer,offset=accuIndex*stride+stride,weight=this.cumulativeWeight,binding=this.binding;this.cumulativeWeight=0;if(weight<1){var originalValueOffset=stride*3;this._mixBufferRegion(buffer,offset,originalValueOffset,1-weight,stride)}
4849for(var i=stride,e=stride+stride;i!==e;++ i){if(buffer[i]!==buffer[i+stride]){binding.setValue(buffer,offset);break}}},saveOriginalState:function(){var binding=this.binding;var buffer=this.buffer,stride=this.valueSize,originalValueOffset=stride*3;binding.getValue(buffer,originalValueOffset);for(var i=stride,e=originalValueOffset;i!==e;++ i){buffer[i]=buffer[originalValueOffset+(i%stride)]}
4850this.cumulativeWeight=0},restoreOriginalState:function(){var originalValueOffset=this.valueSize*3;this.binding.setValue(this.buffer,originalValueOffset)},_select:function(buffer,dstOffset,srcOffset,t,stride){if(t>=0.5){for(var i=0;i!==stride;++ i){buffer[dstOffset+i]=buffer[srcOffset+i]}}},_slerp:function(buffer,dstOffset,srcOffset,t){Quaternion.slerpFlat(buffer,dstOffset,buffer,dstOffset,buffer,srcOffset,t)},_lerp:function(buffer,dstOffset,srcOffset,t,stride){var s=1-t;for(var i=0;i!==stride;++ i){var j=dstOffset+i;buffer[j]=buffer[j]*s+buffer[srcOffset+i]*t}}});var RESERVED_CHARS_RE='\\[\\]\\.:\\/';function Composite(targetGroup,path,optionalParsedPath){var parsedPath=optionalParsedPath||PropertyBinding.parseTrackName(path);this._targetGroup=targetGroup;this._bindings=targetGroup.subscribe_(path,parsedPath)}
4851Object.assign(Composite.prototype,{getValue:function(array,offset){this.bind();var firstValidIndex=this._targetGroup.nCachedObjects_,binding=this._bindings[firstValidIndex];if(binding!==undefined)binding.getValue(array,offset);},setValue:function(array,offset){var bindings=this._bindings;for(var i=this._targetGroup.nCachedObjects_,n=bindings.length;i!==n;++ i){bindings[i].setValue(array,offset)}},bind:function(){var bindings=this._bindings;for(var i=this._targetGroup.nCachedObjects_,n=bindings.length;i!==n;++ i){bindings[i].bind()}},unbind:function(){var bindings=this._bindings;for(var i=this._targetGroup.nCachedObjects_,n=bindings.length;i!==n;++ i){bindings[i].unbind()}}});function PropertyBinding(rootNode,path,parsedPath){this.path=path;this.parsedPath=parsedPath||PropertyBinding.parseTrackName(path);this.node=PropertyBinding.findNode(rootNode,this.parsedPath.nodeName)||rootNode;this.rootNode=rootNode}
4852Object.assign(PropertyBinding,{Composite:Composite,create:function(root,path,parsedPath){if(!(root&&root.isAnimationObjectGroup)){return new PropertyBinding(root,path,parsedPath)}else{return new PropertyBinding.Composite(root,path,parsedPath)}},sanitizeNodeName:(function(){var reservedRe=new RegExp('['+RESERVED_CHARS_RE+']','g');return function sanitizeNodeName(name){return name.replace(/\s/g,'_').replace(reservedRe,'')}}()),parseTrackName:function(){var wordChar='[^'+RESERVED_CHARS_RE+']';var wordCharOrDot='[^'+RESERVED_CHARS_RE.replace('\\.','')+']';var directoryRe=/((?:WC+[\/:])*)/.source.replace('WC',wordChar);var nodeRe=/(WCOD+)?/.source.replace('WCOD',wordCharOrDot);var objectRe=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace('WC',wordChar);var propertyRe=/\.(WC+)(?:\[(.+)\])?/.source.replace('WC',wordChar);var trackRe=new RegExp(''+'^'+directoryRe+nodeRe+objectRe+propertyRe+'$');var supportedObjectNames=['material','materials','bones'];return function parseTrackName(trackName){var matches=trackRe.exec(trackName);if(!matches){throw new Error('PropertyBinding: Cannot parse trackName: '+trackName)}
4853var results={nodeName:matches[2],objectName:matches[3],objectIndex:matches[4],propertyName:matches[5],propertyIndex:matches[6]};var lastDot=results.nodeName&&results.nodeName.lastIndexOf('.');if(lastDot!==undefined&&lastDot!==-1){var objectName=results.nodeName.substring(lastDot+1);if(supportedObjectNames.indexOf(objectName)!==-1){results.nodeName=results.nodeName.substring(0,lastDot);results.objectName=objectName}}
4854if(results.propertyName===null||results.propertyName.length===0){throw new Error('PropertyBinding: can not parse propertyName from trackName: '+trackName)}
4855return results}}(),findNode:function(root,nodeName){if(!nodeName||nodeName===""||nodeName==="root"||nodeName==="."||nodeName===-1||nodeName===root.name||nodeName===root.uuid){return root}
4856if(root.skeleton){var bone=root.skeleton.getBoneByName(nodeName);if(bone!==undefined){return bone}}
4857if(root.children){var searchNodeSubtree=function(children){for(var i=0;i<children.length;i ++){var childNode=children[i];if(childNode.name===nodeName||childNode.uuid===nodeName){return childNode}
4858var result=searchNodeSubtree(childNode.children);if(result)return result}
4859return null};var subTreeNode=searchNodeSubtree(root.children);if(subTreeNode){return subTreeNode}}
4860return null}});Object.assign(PropertyBinding.prototype,{_getValue_unavailable:function(){},_setValue_unavailable:function(){},BindingType:{Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},Versioning:{None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},GetterByBindingType:[function getValue_direct(buffer,offset){buffer[offset]=this.node[this.propertyName]},function getValue_array(buffer,offset){var source=this.resolvedProperty;for(var i=0,n=source.length;i!==n;++ i){buffer[offset ++]=source[i]}},function getValue_arrayElement(buffer,offset){buffer[offset]=this.resolvedProperty[this.propertyIndex]},function getValue_toArray(buffer,offset){this.resolvedProperty.toArray(buffer,offset)}],SetterByBindingTypeAndVersioning:[[function setValue_direct(buffer,offset){this.targetObject[this.propertyName]=buffer[offset]},function setValue_direct_setNeedsUpdate(buffer,offset){this.targetObject[this.propertyName]=buffer[offset];this.targetObject.needsUpdate=!0},function setValue_direct_setMatrixWorldNeedsUpdate(buffer,offset){this.targetObject[this.propertyName]=buffer[offset];this.targetObject.matrixWorldNeedsUpdate=!0}],[function setValue_array(buffer,offset){var dest=this.resolvedProperty;for(var i=0,n=dest.length;i!==n;++ i){dest[i]=buffer[offset ++]}},function setValue_array_setNeedsUpdate(buffer,offset){var dest=this.resolvedProperty;for(var i=0,n=dest.length;i!==n;++ i){dest[i]=buffer[offset ++]}
4861this.targetObject.needsUpdate=!0},function setValue_array_setMatrixWorldNeedsUpdate(buffer,offset){var dest=this.resolvedProperty;for(var i=0,n=dest.length;i!==n;++ i){dest[i]=buffer[offset ++]}
4862this.targetObject.matrixWorldNeedsUpdate=!0}],[function setValue_arrayElement(buffer,offset){this.resolvedProperty[this.propertyIndex]=buffer[offset]},function setValue_arrayElement_setNeedsUpdate(buffer,offset){this.resolvedProperty[this.propertyIndex]=buffer[offset];this.targetObject.needsUpdate=!0},function setValue_arrayElement_setMatrixWorldNeedsUpdate(buffer,offset){this.resolvedProperty[this.propertyIndex]=buffer[offset];this.targetObject.matrixWorldNeedsUpdate=!0}],[function setValue_fromArray(buffer,offset){this.resolvedProperty.fromArray(buffer,offset)},function setValue_fromArray_setNeedsUpdate(buffer,offset){this.resolvedProperty.fromArray(buffer,offset);this.targetObject.needsUpdate=!0},function setValue_fromArray_setMatrixWorldNeedsUpdate(buffer,offset){this.resolvedProperty.fromArray(buffer,offset);this.targetObject.matrixWorldNeedsUpdate=!0}]],getValue:function getValue_unbound(targetArray,offset){this.bind();this.getValue(targetArray,offset)},setValue:function getValue_unbound(sourceArray,offset){this.bind();this.setValue(sourceArray,offset)},bind:function(){var targetObject=this.node,parsedPath=this.parsedPath,objectName=parsedPath.objectName,propertyName=parsedPath.propertyName,propertyIndex=parsedPath.propertyIndex;if(!targetObject){targetObject=PropertyBinding.findNode(this.rootNode,parsedPath.nodeName)||this.rootNode;this.node=targetObject}
4863this.getValue=this._getValue_unavailable;this.setValue=this._setValue_unavailable;if(!targetObject){console.error('THREE.PropertyBinding: Trying to update node for track: '+this.path+' but it wasn\'t found.');return}
4864if(objectName){var objectIndex=parsedPath.objectIndex;switch(objectName){case 'materials':if(!targetObject.material){console.error('THREE.PropertyBinding: Can not bind to material as node does not have a material.',this);return}
4865if(!targetObject.material.materials){console.error('THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.',this);return}
4866targetObject=targetObject.material.materials;break;case 'bones':if(!targetObject.skeleton){console.error('THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.',this);return}
4867targetObject=targetObject.skeleton.bones;for(var i=0;i<targetObject.length;i ++){if(targetObject[i].name===objectIndex){objectIndex=i;break}}
4868break;default:if(targetObject[objectName]===undefined){console.error('THREE.PropertyBinding: Can not bind to objectName of node undefined.',this);return}
4869targetObject=targetObject[objectName]}
4870if(objectIndex!==undefined){if(targetObject[objectIndex]===undefined){console.error('THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.',this,targetObject);return}
4871targetObject=targetObject[objectIndex]}}
4872var nodeProperty=targetObject[propertyName];if(nodeProperty===undefined){var nodeName=parsedPath.nodeName;console.error('THREE.PropertyBinding: Trying to update property for track: '+nodeName+'.'+propertyName+' but it wasn\'t found.',targetObject);return}
4873var versioning=this.Versioning.None;if(targetObject.needsUpdate!==undefined){versioning=this.Versioning.NeedsUpdate;this.targetObject=targetObject}else if(targetObject.matrixWorldNeedsUpdate!==undefined){versioning=this.Versioning.MatrixWorldNeedsUpdate;this.targetObject=targetObject}
4874var bindingType=this.BindingType.Direct;if(propertyIndex!==undefined){if(propertyName==="morphTargetInfluences"){if(!targetObject.geometry){console.error('THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.',this);return}
4875if(targetObject.geometry.isBufferGeometry){if(!targetObject.geometry.morphAttributes){console.error('THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.',this);return}
4876for(var i=0;i<this.node.geometry.morphAttributes.position.length;i ++){if(targetObject.geometry.morphAttributes.position[i].name===propertyIndex){propertyIndex=i;break}}}else{if(!targetObject.geometry.morphTargets){console.error('THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.',this);return}
4877for(var i=0;i<this.node.geometry.morphTargets.length;i ++){if(targetObject.geometry.morphTargets[i].name===propertyIndex){propertyIndex=i;break}}}}
4878bindingType=this.BindingType.ArrayElement;this.resolvedProperty=nodeProperty;this.propertyIndex=propertyIndex}else if(nodeProperty.fromArray!==undefined&&nodeProperty.toArray!==undefined){bindingType=this.BindingType.HasFromToArray;this.resolvedProperty=nodeProperty}else if(Array.isArray(nodeProperty)){bindingType=this.BindingType.EntireArray;this.resolvedProperty=nodeProperty}else{this.propertyName=propertyName}
4879this.getValue=this.GetterByBindingType[bindingType];this.setValue=this.SetterByBindingTypeAndVersioning[bindingType][versioning]},unbind:function(){this.node=null;this.getValue=this._getValue_unbound;this.setValue=this._setValue_unbound}});Object.assign(PropertyBinding.prototype,{_getValue_unbound:PropertyBinding.prototype.getValue,_setValue_unbound:PropertyBinding.prototype.setValue,});function AnimationObjectGroup(){this.uuid=_Math.generateUUID();this._objects=Array.prototype.slice.call(arguments);this.nCachedObjects_=0;var indices={};this._indicesByUUID=indices;for(var i=0,n=arguments.length;i!==n;++ i){indices[arguments[i].uuid]=i}
4880this._paths=[];this._parsedPaths=[];this._bindings=[];this._bindingsIndicesByPath={};var scope=this;this.stats={objects:{get total(){return scope._objects.length},get inUse(){return this.total-scope.nCachedObjects_}},get bindingsPerObject(){return scope._bindings.length}}}
4881Object.assign(AnimationObjectGroup.prototype,{isAnimationObjectGroup:!0,add:function(){var objects=this._objects,nObjects=objects.length,nCachedObjects=this.nCachedObjects_,indicesByUUID=this._indicesByUUID,paths=this._paths,parsedPaths=this._parsedPaths,bindings=this._bindings,nBindings=bindings.length,knownObject=undefined;for(var i=0,n=arguments.length;i!==n;++ i){var object=arguments[i],uuid=object.uuid,index=indicesByUUID[uuid];if(index===undefined){index=nObjects ++;indicesByUUID[uuid]=index;objects.push(object);for(var j=0,m=nBindings;j!==m;++ j){bindings[j].push(new PropertyBinding(object,paths[j],parsedPaths[j]))}}else if(index<nCachedObjects){knownObject=objects[index];var firstActiveIndex=-- nCachedObjects,lastCachedObject=objects[firstActiveIndex];indicesByUUID[lastCachedObject.uuid]=index;objects[index]=lastCachedObject;indicesByUUID[uuid]=firstActiveIndex;objects[firstActiveIndex]=object;for(var j=0,m=nBindings;j!==m;++ j){var bindingsForPath=bindings[j],lastCached=bindingsForPath[firstActiveIndex],binding=bindingsForPath[index];bindingsForPath[index]=lastCached;if(binding===undefined){binding=new PropertyBinding(object,paths[j],parsedPaths[j])}
4882bindingsForPath[firstActiveIndex]=binding}}else if(objects[index]!==knownObject){console.error('THREE.AnimationObjectGroup: Different objects with the same UUID '+'detected. Clean the caches or recreate your infrastru
4882cture when reloading scenes.')}}
4883this.nCachedObjects_=nCachedObjects},remove:function(){var objects=this._objects,nCachedObjects=this.nCachedObjects_,indicesByUUID=this._indicesByUUID,bindings=this._bindings,nBindings=bindings.length;for(var i=0,n=arguments.length;i!==n;++ i){var object=arguments[i],uuid=object.uuid,index=indicesByUUID[uuid];if(index!==undefined&&index>=nCachedObjects){var lastCachedIndex=nCachedObjects ++,firstActiveObject=objects[lastCachedIndex];indicesByUUID[firstActiveObject.uuid]=index;objects[index]=firstActiveObject;indicesByUUID[uuid]=lastCachedIndex;objects[lastCachedIndex]=object;for(var j=0,m=nBindings;j!==m;++ j){var bindingsForPath=bindings[j],firstActive=bindingsForPath[lastCachedIndex],binding=bindingsForPath[index];bindingsForPath[index]=firstActive;bindingsForPath[lastCachedIndex]=binding}}}
4884this.nCachedObjects_=nCachedObjects},uncache:function(){var objects=this._objects,nObjects=objects.length,nCachedObjects=this.nCachedObjects_,indicesByUUID=this._indicesByUUID,bindings=this._bindings,nBindings=bindings.length;for(var i=0,n=arguments.length;i!==n;++ i){var object=arguments[i],uuid=object.uuid,index=indicesByUUID[uuid];if(index!==undefined){delete indicesByUUID[uuid];if(index<nCachedObjects){var firstActiveIndex=-- nCachedObjects,lastCachedObject=objects[firstActiveIndex],lastIndex=-- nObjects,lastObject=objects[lastIndex];indicesByUUID[lastCachedObject.uuid]=index;objects[index]=lastCachedObject;indicesByUUID[lastObject.uuid]=firstActiveIndex;objects[firstActiveIndex]=lastObject;objects.pop();for(var j=0,m=nBindings;j!==m;++ j){var bindingsForPath=bindings[j],lastCached=bindingsForPath[firstActiveIndex],last=bindingsForPath[lastIndex];bindingsForPath[index]=lastCached;bindingsForPath[firstActiveIndex]=last;bindingsForPath.pop()}}else{var lastIndex=-- nObjects,lastObject=objects[lastIndex];indicesByUUID[lastObject.uuid]=index;objects[index]=lastObject;objects.pop();for(var j=0,m=nBindings;j!==m;++ j){var bindingsForPath=bindings[j];bindingsForPath[index]=bindingsForPath[lastIndex];bindingsForPath.pop()}}}}
4885this.nCachedObjects_=nCachedObjects},subscribe_:function(path,parsedPath){var indicesByPath=this._bindingsIndicesByPath,index=indicesByPath[path],bindings=this._bindings;if(index!==undefined)return bindings[index];var paths=this._paths,parsedPaths=this._parsedPaths,objects=this._objects,nObjects=objects.length,nCachedObjects=this.nCachedObjects_,bindingsForPath=new Array(nObjects);index=bindings.length;indicesByPath[path]=index;paths.push(path);parsedPaths.push(parsedPath);bindings.push(bindingsForPath);for(var i=nCachedObjects,n=objects.length;i!==n;++ i){var object=objects[i];bindingsForPath[i]=new PropertyBinding(object,path,parsedPath)}
4886return bindingsForPath},unsubscribe_:function(path){var indicesByPath=this._bindingsIndicesByPath,index=indicesByPath[path];if(index!==undefined){var paths=this._paths,parsedPaths=this._parsedPaths,bindings=this._bindings,lastBindingsIndex=bindings.length-1,lastBindings=bindings[lastBindingsIndex],lastBindingsPath=path[lastBindingsIndex];indicesByPath[lastBindingsPath]=index;bindings[index]=lastBindings;bindings.pop();parsedPaths[index]=parsedPaths[lastBindingsIndex];parsedPaths.pop();paths[index]=paths[lastBindingsIndex];paths.pop()}}});function AnimationAction(mixer,clip,localRoot){this._mixer=mixer;this._clip=clip;this._localRoot=localRoot||null;var tracks=clip.tracks,nTracks=tracks.length,interpolants=new Array(nTracks);var interpolantSettings={endingStart:ZeroCurvatureEnding,endingEnd:ZeroCurvatureEnding};for(var i=0;i!==nTracks;++ i){var interpolant=tracks[i].createInterpolant(null);interpolants[i]=interpolant;interpolant.settings=interpolantSettings}
4887this._interpolantSettings=interpolantSettings;this._interpolants=interpolants;this._propertyBindings=new Array(nTracks);this._cacheIndex=null;this._byClipCacheIndex=null;this._timeScaleInterpolant=null;this._weightInterpolant=null;this.loop=LoopRepeat;this._loopCount=-1;this._startTime=null;this.time=0;this.timeScale=1;this._effectiveTimeScale=1;this.weight=1;this._effectiveWeight=1;this.repetitions=Infinity;this.paused=!1;this.enabled=!0;this.clampWhenFinished=!1;this.zeroSlopeAtStart=!0;this.zeroSlopeAtEnd=!0}
4888Object.assign(AnimationAction.prototype,{play:function(){this._mixer._activateAction(this);return this},stop:function(){this._mixer._deactivateAction(this);return this.reset()},reset:function(){this.paused=!1;this.enabled=!0;this.time=0;this._loopCount=-1;this._startTime=null;return this.stopFading().stopWarping()},isRunning:function(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)},isScheduled:function(){return this._mixer._isActiveAction(this)},startAt:function(time){this._startTime=time;return this},setLoop:function(mode,repetitions){this.loop=mode;this.repetitions=repetitions;return this},setEffectiveWeight:function(weight){this.weight=weight;this._effectiveWeight=this.enabled?weight:0;return this.stopFading()},getEffectiveWeight:function(){return this._effectiveWeight},fadeIn:function(duration){return this._scheduleFading(duration,0,1)},fadeOut:function(duration){return this._scheduleFading(duration,1,0)},crossFadeFrom:function(fadeOutAction,duration,warp){fadeOutAction.fadeOut(duration);this.fadeIn(duration);if(warp){var fadeInDuration=this._clip.duration,fadeOutDuration=fadeOutAction._clip.duration,startEndRatio=fadeOutDuration/fadeInDuration,endStartRatio=fadeInDuration/fadeOutDuration;fadeOutAction.warp(1.0,startEndRatio,duration);this.warp(endStartRatio,1.0,duration)}
4889return this},crossFadeTo:function(fadeInAction,duration,warp){return fadeInAction.crossFadeFrom(this,duration,warp)},stopFading:function(){var weightInterpolant=this._weightInterpolant;if(weightInterpolant!==null){this._weightInterpolant=null;this._mixer._takeBackControlInterpolant(weightInterpolant)}
4890return this},setEffectiveTimeScale:function(timeScale){this.timeScale=timeScale;this._effectiveTimeScale=this.paused?0:timeScale;return this.stopWarping()},getEffectiveTimeScale:function(){return this._effectiveTimeScale},setDuration:function(duration){this.timeScale=this._clip.duration/duration;return this.stopWarping()},syncWith:function(action){this.time=action.time;this.timeScale=action.timeScale;return this.stopWarping()},halt:function(duration){return this.warp(this._effectiveTimeScale,0,duration)},warp:function(startTimeScale,endTimeScale,duration){var mixer=this._mixer,now=mixer.time,interpolant=this._timeScaleInterpolant,timeScale=this.timeScale;if(interpolant===null){interpolant=mixer._lendControlInterpolant();this._timeScaleInterpolant=interpolant}
4891var times=interpolant.parameterPositions,values=interpolant.sampleValues;times[0]=now;times[1]=now+duration;values[0]=startTimeScale/timeScale;values[1]=endTimeScale/timeScale;return this},stopWarping:function(){var timeScaleInterpolant=this._timeScaleInterpolant;if(timeScaleInterpolant!==null){this._timeScaleInterpolant=null;this._mixer._takeBackControlInterpolant(timeScaleInterpolant)}
4892return this},getMixer:function(){return this._mixer},getClip:function(){return this._clip},getRoot:function(){return this._localRoot||this._mixer._root}
4892,_update:function(time,deltaTime,timeDirection,accuIndex){if(!this.enabled){this._updateWeight(time);return}
4893var startTime=this._startTime;if(startTime!==null){var timeRunning=(time-startTime)*timeDirection;if(timeRunning<0||timeDirection===0){return}
4894this._startTime=null;deltaTime=timeDirection*timeRunning}
4895deltaTime*=this._updateTimeScale(time);var clipTime=this._updateTime(deltaTime);var weight=this._updateWeight(time);if(weight>0){var interpolants=this._interpolants;var propertyMixers=this._propertyBindings;for(var j=0,m=interpolants.length;j!==m;++ j){interpolants[j].evaluate(clipTime);propertyMixers[j].accumulate(accuIndex,weight)}}},_updateWeight:function(time){var weight=0;if(this.enabled){weight=this.weight;var interpolant=this._weightInterpolant;if(interpolant!==null){var interpolantValue=interpolant.evaluate(time)[0];weight*=interpolantValue;if(time>interpolant.parameterPositions[1]){this.stopFading();if(interpolantValue===0){this.enabled=!1}}}}
4896this._effectiveWeight=weight;return weight},_updateTimeScale:function(time){var timeScale=0;if(!this.paused){timeScale=this.timeScale;var interpolant=this._timeScaleInterpolant;if(interpolant!==null){var interpolantValue=interpolant.evaluate(time)[0];timeScale*=interpolantValue;if(time>interpolant.parameterPositions[1]){this.stopWarping();if(timeScale===0){this.paused=!0}else{this.timeScale=timeScale}}}}
4897this._effectiveTimeScale=timeScale;return timeScale},_updateTime:function(deltaTime){var time=this.time+deltaTime;if(deltaTime===0)return time;var duration=this._clip.duration,loop=this.loop,loopCount=this._loopCount;if(loop===LoopOnce){if(loopCount===-1){this._loopCount=0;this._setEndings(!0,!0,!1)}
4898handle_stop:{if(time>=duration){time=duration}else if(time<0){time=0}else break handle_stop;if(this.clampWhenFinished)this.paused=!0;else this.enabled=!1;this._mixer.dispatchEvent({type:'finished',action:this,direction:deltaTime<0?-1:1})}}else{var pingPong=(loop===LoopPingPong);if(loopCount===-1){if(deltaTime>=0){loopCount=0;this._setEndings(!0,this.repetitions===0,pingPong)}else{this._setEndings(this.repetitions===0,!0,pingPong)}}
4899if(time>=duration||time<0){var loopDelta=Math.floor(time/duration);time-=duration*loopDelta;loopCount+=Math.abs(loopDelta);var pending=this.repetitions-loopCount;if(pending<=0){if(this.clampWhenFinished)this.paused=!0;else this.enabled=!1;time=deltaTime>0?duration:0;this._mixer.dispatchEvent({type:'finished',action:this,direction:deltaTime>0?1:-1})}else{if(pending===1){var atStart=deltaTime<0;this._setEndings(atStart,!atStart,pingPong)}else{this._setEndings(!1,!1,pingPong)}
4900this._loopCount=loopCount;this._mixer.dispatchEvent({type:'loop',action:this,loopDelta:loopDelta})}}
4901if(pingPong&&(loopCount&1)===1){this.time=time;return duration-time}}
4902this.time=time;return time},_setEndings:function(atStart,atEnd,pingPong){var settings=this._interpolantSettings;if(pingPong){settings.endingStart=ZeroSlopeEnding;settings.endingEnd=ZeroSlopeEnding}else{if(atStart){settings.endingStart=this.zeroSlopeAtStart?ZeroSlopeEnding:ZeroCurvatureEnding}else{settings.endingStart=WrapAroundEnding}
4903if(atEnd){settings.endingEnd=this.zeroSlopeAtEnd?ZeroSlopeEnding:ZeroCurvatureEnding}else{settings.endingEnd=WrapAroundEnding}}},_scheduleFading:function(duration,weightNow,weightThen){var mixer=this._mixer,now=mixer.time,interpolant=this._weightInterpolant;if(interpolant===null){interpolant=mixer._lendControlInterpolant();this._weightInterpolant=interpolant}
4904var times=interpolant.parameterPositions,values=interpolant.sampleValues;times[0]=now;values[0]=weightNow;times[1]=now+duration;values[1]=weightThen;return this}});function AnimationMixer(root){this._root=root;this._initMemoryManager();this._accuIndex=0;this.time=0;this.timeScale=1.0}
4905AnimationMixer.prototype=Object.assign(Object.create(EventDispatcher.prototype),{constructor:AnimationMixer,_bindAction:function(action,prototypeAction){var root=action._localRoot||this._root,tracks=action._clip.tracks,nTracks=tracks.length,bindings=action._propertyBindings,interpolants=action._interpolants,rootUuid=root.uuid,bindingsByRoot=this._bindingsByRootAndName,bindingsByName=bindingsByRoot[rootUuid];if(bindingsByName===undefined){bindingsByName={};bindingsByRoot[rootUuid]=bindingsByName}
4906for(var i=0;i!==nTracks;++ i){var track=tracks[i],trackName=track.name,binding=bindingsByName[trackName];if(binding!==undefined){bindings[i]=binding}else{binding=bindings[i];if(binding!==undefined){if(binding._cacheIndex===null){++ binding.referenceCount;this._addInactiveBinding(binding,rootUuid,trackName)}
4907continue}
4908var path=prototypeAction&&prototypeAction._propertyBindings[i].binding.parsedPath;binding=new PropertyMixer(PropertyBinding.create(root,trackName,path),track.ValueTypeName,track.getValueSize());++ binding.referenceCount;this._addInactiveBinding(binding,rootUuid,trackName);bindings[i]=binding}
4909interpolants[i].resultBuffer=binding.buffer}},_activateAction:function(action){if(!this._isActiveAction(action)){if
4909(action._cacheIndex===null){var rootUuid=(action._localRoot||this._root).uuid,clipUuid=action._clip.uuid,actionsForClip=this._actionsByClip[clipUuid];this._bindAction(action,actionsForClip&&actionsForClip.knownActions[0]);this._addInactiveAction(action,clipUuid,rootUuid)}
4910var bindings=action._propertyBindings;for(var i=0,n=bindings.length;i!==n;++ i){var binding=bindings[i];if(binding.useCount ++===0){this._lendBinding(binding);binding.saveOriginalState()}}
4911this._lendAction(action)}},_deactivateAction:function(action){if(this._isActiveAction(action)){var bindings=action._propertyBindings;for(var i=0,n=bindings.length;i!==n;++ i){var binding=bindings[i];if(-- binding.useCount===0){binding.restoreOriginalState();this._takeBackBinding(binding)}}
4912this._takeBackAction(action)}},_initMemoryManager:function(){this._actions=[];this._nActiveActions=0;this._actionsByClip={};this._bindings=[];this._nActiveBindings=0;this._bindingsByRootAndName={};this._controlInterpolants=[];this._nActiveControlInterpolants=0;var scope=this;this.stats={actions:{get total(){return scope._actions.length},get inUse(){return scope._nActiveActions}},bindings:{get total(){return scope._bindings.length},get inUse(){return scope._nActiveBindings}},controlInterpolants:{get total(){return scope._controlInterpolants.length},get inUse(){return scope._nActiveControlInterpolants}}}},_isActiveAction:function(action){var index=action._cacheIndex;return index!==null&&index<this._nActiveActions},_addInactiveAction:function(action,clipUuid,rootUuid){var actions=this._actions,actionsByClip=this._actionsByClip,actionsForClip=actionsByClip[clipUuid];if(actionsForClip===undefined){actionsForClip={knownActions:[action],actionByRoot:{}};action._byClipCacheIndex=0;actionsByClip[clipUuid]=actionsForClip}else{var knownActions=actionsForClip.knownActions;action._byClipCacheIndex=knownActions.length;knownActions.push(action)}
4913action._cacheIndex=actions.length;actions.push(action);actionsForClip.actionByRoot[rootUuid]=action},_removeInactiveAction:function(action){var actions=this._actions,lastInactiveAction=actions[actions.length-1],cacheIndex=action._cacheIndex;lastInactiveAction._cacheIndex=cacheIndex;actions[cacheIndex]=lastInactiveAction;actions.pop();action._cacheIndex=null;var clipUuid=action._clip.uuid,actionsByClip=this._actionsByClip,actionsForClip=actionsByClip[clipUuid],knownActionsForClip=actionsForClip.knownActions,lastKnownAction=knownActionsForClip[knownActionsForClip.length-1],byClipCacheIndex=action._byClipCacheIndex;lastKnownAction._byClipCacheIndex=byClipCacheIndex;knownActionsForClip[byClipCacheIndex]=lastKnownAction;knownActionsForClip.pop();action._byClipCacheIndex=null;var actionByRoot=actionsForClip.actionByRoot,rootUuid=(action._localRoot||this._root).uuid;delete actionByRoot[rootUuid];if(knownActionsForClip.length===0){delete actionsByClip[clipUuid]}
4914this._removeInactiveBindingsForAction(action)},_removeInactiveBindingsForAction:function(action){var bindings=action._propertyBindings;for(var i=0,n=bindings.length;i!==n;++ i){var binding=bindings[i];if(-- binding.referenceCount===0){this._removeInactiveBinding(binding)}}},_lendAction:function(action){var actions=this._actions,prevIndex=action._cacheIndex,lastActiveIndex=this._nActiveActions ++,firstInactiveAction=actions[lastActiveIndex];action._cacheIndex=lastActiveIndex;actions[lastActiveIndex]=action;firstInactiveAction._cacheIndex=prevIndex;actions[prevIndex]=firstInactiveAction},_takeBackAction:function(action){var actions=this._actions,prevIndex=action._cacheIndex,firstInactiveIndex=-- this._nActiveActions,lastActiveAction=actions[firstInactiveIndex];action._cacheIndex=firstInactiveIndex;actions[firstInactiveIndex]=action;lastActiveAction._cacheIndex=prevIndex;actions[prevIndex]=lastActiveAction},_addInactiveBinding:function(binding,rootUuid,trackName){var bindingsByRoot=this._bindingsByRootAndName,bindingByName=bindingsByRoot[rootUuid],bindings=this._bindings;if(bindingByName===undefined){bindingByName={};bindingsByRoot[rootUuid]=bindingByName}
4915bindingByName[trackName]=binding;binding._cacheIndex=bindings.length;bindings.push(binding)},_removeInactiveBinding:function(binding){var bindings=this._bindings,propBinding=binding.binding,rootUuid=propBinding.rootNode.uuid,trackName=propBinding.path,bindingsByRoot=this._bindingsByRootAndName,bindingByName=bindingsByRoot[rootUuid],lastInactiveBinding=bindings[bindings.length-1],cacheIndex=binding._cacheIndex;lastInactiveBinding._cacheIndex=cacheIndex;bindings[cacheIndex]=lastInactiveBinding;bindings.pop();delete bindingByName[trackName];remove_empty_map:{for(var _ in bindingByName)break remove_empty_map;delete bindingsByRoot[rootUuid]}},_lendBinding:function(binding){var bindings=this._bindings,prevIndex=binding._cacheIndex,lastActiveIndex=this._nActiveBindings ++,firstInactiveBinding=bindings[lastActiveIndex];binding._cacheIndex=lastActiveIndex;bindings[lastActiveIndex]=binding;firstInactiveBinding._cacheIndex=prevIndex;bindings[prevIndex]=firstInactiveBinding},_takeBackBinding:function(binding){var bindings=this._bindings,prevIndex=binding._cacheIndex,firstInactiveIndex=-- this._nActiveBindings,lastActiveBinding=bindings[firstInactiveIndex];binding._cacheIndex=firstInactiveIndex;bindings[firstInactiveIndex]=binding;lastActiveBinding._cacheIndex=prevIndex;bindings[prevIndex]=lastActiveBinding},_lendControlInterpolant:function(){var interpolants=this._controlInterpolants,lastActiveIndex=this._nActiveControlInterpolants ++,interpolant=interpolants[lastActiveIndex];if(interpolant===undefined){interpolant=new LinearInterpolant(new Float32Array(2),new Float32Array(2),1,this._controlInterpolantsResultBuffer);interpolant.__cacheIndex=lastActiveIndex;interpolants[lastActiveIndex]=interpolant}
4916return interpolant},_takeBackControlInterpolant:function(interpolant){var interpolants=this._controlInterpolants,prevIndex=interpolant.__cacheIndex,firstInactiveIndex=-- this._nActiveControlInterpolants,lastActiveInterpolant=interpolants[firstInactiveIndex];interpolant.__cacheIndex=firstInactiveIndex;interpolants[firstInactiveIndex]=interpolant;lastActiveInterpolant.__cacheIndex=prevIndex;interpolants[prevIndex]=lastActiveInterpolant},_controlInterpolantsResultBuffer:new Float32Array(1),clipAction:function(clip,optionalRoot){var root=optionalRoot||this._root,rootUuid=root.uuid,clipObject=typeof clip==='string'?AnimationClip.findByName(root,clip):clip,clipUuid=clipObject!==null?clipObject.uuid:clip,actionsForClip=this._actionsByClip[clipUuid],prototypeAction=null;if(actionsForClip!==undefined){var existingAction=actionsForClip.actionByRoot[rootUuid];
4916if(existingAction!==undefined){return existingAction}
4917prototypeAction=actionsForClip.knownActions[0];if(clipObject===null)
4918clipObject=prototypeAction._clip}
4919if(clipObject===null)return null;var newAction=new AnimationAction(this,clipObject,optionalRoot);this._bindAction(newAction,prototypeAction);this._addInactiveAction(newAction,clipUuid,rootUuid);return newAction},existingAction:function(clip,optionalRoot){var root=optionalRoot||this._root,rootUuid=root.uuid,clipObject=typeof clip==='string'?AnimationClip.findByName(root,clip):clip,clipUuid=clipObject?clipObject.uuid:clip,actionsForClip=this._actionsByClip[clipUuid];if(actionsForClip!==undefined){return actionsForClip.actionByRoot[rootUuid]||null}
4920return null},stopAllAction:function(){var actions=this._actions,nActions=this._nActiveActions,bindings=this._bindings,nBindings=this._nActiveBindings;this._nActiveActions=0;this._nActiveBindings=0;for(var i=0;i!==nActions;++ i){actions[i].reset()}
4921for(var i=0;i!==nBindings;++ i){bindings[i].useCount=0}
4922return this},update:function(deltaTime){deltaTime*=this.timeScale;var actions=this._actions,nActions=this._nActiveActions,time=this.time+=deltaTime,timeDirection=Math.sign(deltaTime),accuIndex=this._accuIndex^=1;for(var i=0;i!==nActions;++ i){var action=actions[i];action._update(time,deltaTime,timeDirection,accuIndex)}
4923var bindings=this._bindings,nBindings=this._nActiveBindings;for(var i=0;i!==nBindings;++ i){bindings[i].apply(accuIndex)}
4924return this},getRoot:function(){return this._root},uncacheClip:function(clip){var actions=this._actions,clipUuid=clip.uuid,actionsByClip=this._actionsByClip,actionsForClip=actionsByClip[clipUuid];if(actionsForClip!==undefined){var actionsToRemove=actionsForClip.knownActions;for(var i=0,n=actionsToRemove.length;i!==n;++ i){var action=actionsToRemove[i];this._deactivateAction(action);var cacheIndex=action._cacheIndex,lastInactiveAction=actions[actions.length-1];action._cacheIndex=null;action._byClipCacheIndex=null;lastInactiveAction._cacheIndex=cacheIndex;actions[cacheIndex]=lastInactiveAction;actions.pop();this._removeInactiveBindingsForAction(action)}
4925delete actionsByClip[clipUuid]}},uncacheRoot:function(root){var rootUuid=root.uuid,actionsByClip=this._actionsByClip;for(var clipUuid in actionsByClip){var actionByRoot=actionsByClip[clipUuid].actionByRoot,action=actionByRoot[rootUuid];if(action!==undefined){this._deactivateAction(action);this._removeInactiveAction(action)}}
4926var bindingsByRoot=this._bindingsByRootAndName,bindingByName=bindingsByRoot[rootUuid];if(bindingByName!==undefined){for(var trackName in bindingByName){var binding=bindingByName[trackName];binding.restoreOriginalState();this._removeInactiveBinding(binding)}}},uncacheAction:function(clip,optionalRoot){var action=this.existingAction(clip,optionalRoot);if(action!==null){this._deactivateAction(action);this._removeInactiveAction(action)}}});function Uniform(value){if(typeof value==='string'){console.warn('THREE.Uniform: Type parameter is no longer needed.');value=arguments[1]}
4927this.value=value}
4928Uniform.prototype.clone=function(){return new Uniform(this.value.clone===undefined?this.value:this.value.clone())};function InstancedBufferGeometry(){BufferGeometry.call(this);this.type='InstancedBufferGeometry';this.maxInstancedCount=undefined}
4929InstancedBufferGeometry.prototype=Object.assign(Object.create(BufferGeometry.prototype),{constructor:InstancedBufferGeometry,isInstancedBufferGeometry:!0,copy:function(source){BufferGeometry.prototype.copy.call(this,source);this.maxInstancedCount=source.maxInstancedCount;return this},clone:function(){return new this.constructor().copy(this)}});function InterleavedBufferAttribute(interleavedBuffer,itemSize,offset,normalized){this.data=interleavedBuffer;this.itemSize=itemSize;this.offset=offset;this.normalized=normalized===!0}
4930Object.defineProperties(InterleavedBufferAttribute.prototype,{count:{get:function(){return this.data.count}},array:{get:function(){return this.data.array}}});Object.assign(InterleavedBufferAttribute.prototype,{isInterleavedBufferAttribute:!0,setX:function(index,x){this.data.array[index*this.data.stride+this.offset]=x;return this},setY:function(index,y){this.data.array[index*this.data.stride+this.offset+1]=y;return this},setZ:function(index,z){this.data.array[index*this.data.stride+this.offset+2]=z;return this},setW:function(index,w){this.data.array[index*this.data.stride+this.offset+3]=w;return this},getX:function(index){return this.data.array[index*this.data.stride+this.offset]},getY:function(index){return this.data.array[index*this.data.stride+this.offset+1]},getZ:function(index){return this.data.array[index*this.data.stride+this.offset+2]},getW:function(index){return this.data.array[index*this.data.stride+this.offset+3]},setXY:function(index,x,y){index=index*this.data.stride+this.offset;this.data.array[index+0]=x;this.data.array[index+1]=y;return this},setXYZ:function(index,x,y,z){index=index*this.data.stride+this.offset;this.data.array[index+0]=x;this.data.array[index+1]=y;this.data.array[index+2]=z;return this},setXYZW:function(index,x,y,z,w){index=index*this.data.stride+this.offset;this.data.array[index+0]=x;this.data.array[index+1]=y;this.data.array[index+2]=z;this.data.array[index+3]=w;return this}});function InterleavedBuffer(array,stride){this.array=array;this.stride=stride;this.count=array!==undefined?array.length/stride:0;this.dynamic=!1;this.updateRange={offset:0,count:-1};this.version=0}
4931Object.defineProperty(InterleavedBuffer.prototype,'needsUpdate',{set:function(value){if(value===!0)this.version ++}});Object.assign(InterleavedBuffer.prototype,{isInterleavedBuffer:!0,onUploadCallback:function(){},setArray:function(array){if(Array.isArray(array)){throw new TypeError('THREE.BufferAttribute: array should be a Typed Array.')}
4932this.count=array!==undefined?array.length/this.stride:0;this.array=array;return this},setDynamic:function(value){this.dynamic=value;return this},copy:function(source){this.array=new source.array.constructor(source.array);this.count=source.count;this.stride=source.stride;this.dynamic=source.dynamic;return this},copyAt:function(index1,attribute,index2){index1*=this.stride;index2*=attribute.stride;for(var i=0,l=this.stride;i<l;i ++){this.array[index1+i]=attribute.array[index2+i]}
4933return this},set:function(value,offset){if(offset===undefined)offset=0;this.array.set(value,offset);return this},clone:function(){return new this.constructor().copy(this)},onUpload:function(callback){this.onUploadCallback=callback;return this}});function InstancedInterleavedBuffer(array,stride,meshPerAttribute){InterleavedBuffer.call(this,array,stride);this.meshPerAttribute=meshPerAttribute||1}
4934InstancedInterleavedBuffer.prototype=Object.assign(Object.create(InterleavedBuffer.prototype),{constructor:InstancedInterleavedBuffer,isInstancedInterleavedBuffer:!0,copy:function(source){InterleavedBuffer.prototype.copy.call(this,source);this.meshPerAttribute=source.meshPerAttribute;return this}});function InstancedBufferAttribute(array,itemSize,meshPerAttribute){BufferAttribute.call(this,array,itemSize);this.meshPerAttribute=meshPerAttribute||1}
4935InstancedBufferAttribute.prototype=Object.assign(Object.create(BufferAttribute.prototype),{constructor:InstancedBufferAttribute,isInstancedBufferAttribute:!0,copy:function(source){BufferAttribute.prototype.copy.call(this,source);this.meshPerAttribute=source.meshPerAttribute;return this}});function Raycaster(origin,direction,near,far){this.ray=new Ray(origin,direction);this.near=near||0;this.far=far||Infinity;this.params={Mesh:{},Line:{},LOD:{},Points:{threshold:1},Sprite:{}};Object.defineProperties(this.params,{PointCloud:{get:function(){console.warn('THREE.Raycaster: params.PointCloud has been renamed to params.Points.');return this.Points}}})}
4936function ascSort(a,b){return a.distance-b.distance}
4937function intersectObject(object,raycaster,intersects,recursive){if(object.visible===!1)return;object.raycast(raycaster,intersects);if(recursive===!0){var children=object.children;for(var i=0,l=children.length;i<l;
4937i ++){intersectObject(children[i],raycaster,intersects,!0)}}}
4938Object.assign(Raycaster.prototype,{linePrecision:1,set:function(origin,direction){this.ray.set(origin,direction)},setFromCamera:function(coords,camera){if((camera&&camera.isPerspectiveCamera)){this.ray.origin.setFromMatrixPosition(camera.matrixWorld);this.ray.direction.set(coords.x,coords.y,0.5).unproject(camera).sub(this.ray.origin).normalize()}else if((camera&&camera.isOrthographicCamera)){this.ray.origin.set(coords.x,coords.y,(camera.near+camera.far)/(camera.near-camera.far)).unproject(camera);this.ray.direction.set(0,0,-1).transformDirection(camera.matrixWorld)}else{console.error('THREE.Raycaster: Unsupported camera type.')}},intersectObject:function(object,recursive,optionalTarget){var intersects=optionalTarget||[];intersectObject(object,this,intersects,recursive);intersects.sort(ascSort);return intersects},intersectObjects:function(objects,recursive,optionalTarget){var intersects=optionalTarget||[];if(Array.isArray(objects)===!1){console.warn('THREE.Raycaster.intersectObjects: objects is not an Array.');return intersects}
4939for(var i=0,l=objects.length;i<l;i ++){intersectObject(objects[i],this,intersects,recursive)}
4940intersects.sort(ascSort);return intersects}});function Clock(autoStart){this.autoStart=(autoStart!==undefined)?autoStart:!0;this.startTime=0;this.oldTime=0;this.elapsedTime=0;this.running=!1}
4941Object.assign(Clock.prototype,{start:function(){this.startTime=(typeof performance==='undefined'?Date:performance).now();this.oldTime=this.startTime;this.elapsedTime=0;this.running=!0},stop:function(){this.getElapsedTime();this.running=!1;this.autoStart=!1},getElapsedTime:function(){this.getDelta();return this.elapsedTime},getDelta:function(){var diff=0;if(this.autoStart&&!this.running){this.start();return 0}
4942if(this.running){var newTime=(typeof performance==='undefined'?Date:performance).now();diff=(newTime-this.oldTime)/1000;this.oldTime=newTime;this.elapsedTime+=diff}
4943return diff}});function Spherical(radius,phi,theta){this.radius=(radius!==undefined)?radius:1.0;this.phi=(phi!==undefined)?phi:0;this.theta=(theta!==undefined)?theta:0;return this}
4944Object.assign(Spherical.prototype,{set:function(radius,phi,theta){this.radius=radius;this.phi=phi;this.theta=theta;return this},clone:function(){return new this.constructor().copy(this)},copy:function(other){this.radius=other.radius;this.phi=other.phi;this.theta=other.theta;return this},makeSafe:function(){var EPS=0.000001;this.phi=Math.max(EPS,Math.min(Math.PI-EPS,this.phi));return this},setFromVector3:function(vec3){this.radius=vec3.length();if(this.radius===0){this.theta=0;this.phi=0}else{this.theta=Math.atan2(vec3.x,vec3.z);this.phi=Math.acos(_Math.clamp(vec3.y/this.radius,-1,1))}
4945return this}});function Cylindrical(radius,theta,y){this.radius=(radius!==undefined)?radius:1.0;this.theta=(theta!==undefined)?theta:0;this.y=(y!==undefined)?y:0;return this}
4946Object.assign(Cylindrical.prototype,{set:function(radius,theta,y){this.radius=radius;this.theta=theta;this.y=y;return this},clone:function(){return new this.constructor().copy(this)},copy:function(other){this.radius=other.radius;this.theta=other.theta;this.y=other.y;return this},setFromVector3:function(vec3){this.radius=Math.sqrt(vec3.x*vec3.x+vec3.z*vec3.z);this.theta=Math.atan2(vec3.x,vec3.z);this.y=vec3.y;return this}});function Box2(min,max){this.min=(min!==undefined)?min:new Vector2(+Infinity,+Infinity);this.max=(max!==undefined)?max:new Vector2(-Infinity,-Infinity)}
4947Object.assign(Box2.prototype,{set:function(min,max){this.min.copy(min);this.max.copy(max);return this},setFromPoints:function(points){this.makeEmpty();for(var i=0,il=points.length;i<il;i ++){this.expandByPoint(points[i])}
4948return this},setFromCenterAndSize:function(){var v1=new Vector2();return function setFromCenterAndSize(center,size){var halfSize=v1.copy(size).multiplyScalar(0.5);this.min.copy(center).sub(halfSize);this.max.copy(center).add(halfSize);return this}}(),clone:function(){return new this.constructor().copy(this)},copy:function(box){this.min.copy(box.min);this.max.copy(box.max);return this},makeEmpty:function(){this.min.x=this.min.y=+Infinity;this.max.x=this.max.y=-Infinity;return this},isEmpty:function(){return(this.max.x<this.min.x)||(this.max.y<this.min.y)},getCenter:function(target){if(target===undefined){console.warn('THREE.Box2: .getCenter() target is now required');target=new Vector2()}
4949return this.isEmpty()?target.set(0,0):target.addVectors(this.min,this.max).multiplyScalar(0.5)},getSize:function(target){if(target===undefined){console.warn('THREE.Box2: .getSize() target is now required');target=new Vector2()}
4950return this.isEmpty()?target.set(0,0):target.subVectors(this.max,this.min)},expandByPoint:function(point){this.min.min(point);this.max.max(point);return this},expandByVector:function(vector){this.min.sub(vector);this.max.add(vector);return this},expandByScalar:function(scalar){this.min.addScalar(-scalar);this.max.addScalar(scalar);return this},containsPoint:function(point){return point.x<this.min.x||point.x>this.max.x||point.y<this.min.y||point.y>this.max.y?!1:!0},containsBox:function(box){return this.min.x<=box.min.x&&box.max.x<=this.max.x&&this.min.y<=box.min.y&&box.max.y<=this.max.y},getParameter:function(point,target){if(target===undefined){console.warn('THREE.Box2: .getParameter() target is now required');target=new Vector2()}
4951return target.set((point.x-this.min.x)/(this.max.x-this.min.x),(point.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function(box){return box.max.x<this.min.x||box.min.x>this.max.x||box.max.y<this.min.y||box.min.y>this.max.y?!1:!0},clampPoint:function(point,target){if(target===undefined){console.warn('THREE.Box2: .clampPoint() target is now required');target=new Vector2()}
4952return target.copy(point).clamp(this.min,this.max)},distanceToPoint:function(){var v1=new Vector2();return function distanceToPoint(point){var clampedPoint=v1.copy(point).clamp(this.min,this.max);return clampedPoint.sub(point).length()}}(),intersect:function(box){this.min.max(box.min);this.max.min(box.max);return this},union:function(box){this.min.min(box.min);this.max.max(box.max);return this},translate:function(offset){this.min.add(offset);this.max.add(offset);return this},equals:function(box){return box.min.equals(this.min)&&box.max.equals(this.max)}});function ImmediateRenderObject(material){Object3D.call(this);this.material=material;this.render=function(){}}
4953ImmediateRenderObject.prototype=Object.create(Object3D.prototype);ImmediateRenderObject.prototype.constructor=ImmediateRenderObject;ImmediateRenderObject.prototype.isImmediateRenderObject=!0;function VertexNormalsHelper(object,size,hex,linewidth){this.object=object;this.size=(size!==undefined)?size:1;var color=(hex!==undefined)?hex:0xff0000;var width=(linewidth!==undefined)?linewidth:1;var nNormals=0;var objGeometry=this.object.geometry;if(objGeometry&&objGeometry.isGeometry){nNormals=objGeometry.faces.length*3}else if(objGeometry&&objGeometry.isBufferGeometry){nNormals=objGeometry.attributes.normal.count}
4954var geometry=new BufferGeometry();var positions=new Float32BufferAttribute(nNormals*2*3,3);geometry.addAttribute('position',positions);LineSegments.call(this,geometry,new LineBasicMaterial({color:color,linewidth:width}));this.matrixAutoUpdate=!1;this.update()}
4955VertexNormalsHelper.prototype=Object.create(LineSegments.prototype);VertexNormalsHelper.prototype.constructor=VertexNormalsHelper;VertexNormalsHelper.prototype.update=(function(){var v1=new Vector3();var v2=new Vector3();var normalMatrix=new Matrix3();
4955return function update(){var keys=['a','b','c'];this.object.updateMatrixWorld(!0);normalMatrix.getNormalMatrix(this.object.matrixWorld);var matrixWorld=this.object.matrixWorld;var position=this.geometry.attributes.position;var objGeometry=this.object.geometry;if(objGeometry&&objGeometry.isGeometry){var vertices=objGeometry.vertices;var faces=objGeometry.faces;var idx=0;for(var i=0,l=faces.length;i<l;i ++){var face=faces[i];for(var j=0,jl=face.vertexNormals.length;j<jl;j ++){var vertex=vertices[face[keys[j]]];var normal=face.vertexNormals[j];v1.copy(vertex).applyMatrix4(matrixWorld);v2.copy(normal).applyMatrix3(normalMatrix).normalize().multiplyScalar(this.size).add(v1);position.setXYZ(idx,v1.x,v1.y,v1.z);idx=idx+1;position.setXYZ(idx,v2.x,v2.y,v2.z);idx=idx+1}}}else if(objGeometry&&objGeometry.isBufferGeometry){var objPos=objGeometry.attributes.position;var objNorm=objGeometry.attributes.normal;var idx=0;for(var j=0,jl=objPos.count;j<jl;j ++){v1.set(objPos.getX(j),objPos.getY(j),objPos.getZ(j)).applyMatrix4(matrixWorld);v2.set(objNorm.getX(j),objNorm.getY(j),objNorm.getZ(j));
4955v2.applyMatrix3(normalMatrix).normalize().multiplyScalar(this.size).add(v1);position.setXYZ(idx,v1.x,v1.y,v1.z);idx=idx+1;position.setXYZ(idx,v2.x,v2.y,v2.z);idx=idx+1}}
4956position.needsUpdate=!0}}());function SpotLightHelper(light,color){Object3D.call(this);this.light=light;this.light.updateMatrixWorld();this.matrix=light.matrixWorld;this.matrixAutoUpdate=!1;this.color=color;var geometry=new BufferGeometry();var positions=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(var i=0,j=1,l=32;i<l;i ++,j ++){var p1=(i/l)*Math.PI*2;var p2=(j/l)*Math.PI*2;positions.push(Math.cos(p1),Math.sin(p1),1,Math.cos(p2),Math.sin(p2),1)}
4957geometry.addAttribute('position',new Float32BufferAttribute(positions,3));var material=new LineBasicMaterial({fog:!1});this.cone=new LineSegments(geometry,material);this.add(this.cone);this.update()}
4958SpotLightHelper.prototype=Object.create(Object3D.prototype);SpotLightHelper.prototype.constructor=SpotLightHelper;SpotLightHelper.prototype.dispose=function(){this.cone.geometry.dispose();this.cone.material.dispose()};SpotLightHelper.prototype.update=function(){var vector=new Vector3();var vector2=new Vector3();return function update(){this.light.updateMatrixWorld();var coneLength=this.light.distance?this.light.distance:1000;var coneWidth=coneLength*Math.tan(this.light.angle);this.cone.scale.set(coneWidth,coneWidth,coneLength);vector.setFromMatrixPosition(this.light.matrixWorld);vector2.setFromMatrixPosition(this.light.target.matrixWorld);this.cone.lookAt(vector2.sub(vector));if(this.color!==undefined){this.cone.material.color.set(this.color)}else{this.cone.material.color.copy(this.light.color)}}}();function getBoneList(object){var boneList=[];if(object&&object.isBone){boneList.push(object)}
4959for(var i=0;i<object.children.length;i ++){boneList.push.apply(boneList,getBoneList(object.children[i]))}
4960return boneList}
4961function SkeletonHelper(object){var bones=getBoneList(object);var geometry=new BufferGeometry();var vertices=[];var colors=[];var color1=new Color(0,0,1);var color2=new Color(0,1,0);for(var i=0;i<bones.length;i ++){var bone=bones[i];if(bone.parent&&bone.parent.isBone){vertices.push(0,0,0);vertices.push(0,0,0);colors.push(color1.r,color1.g,color1.b);colors.push(color2.r,color2.g,color2.b)}}
4962geometry.addAttribute('position',new Float32BufferAttribute(vertices,3));geometry.addAttribute('color',new Float32BufferAttribute(colors,3));var material=new LineBasicMaterial({vertexColors:VertexColors,depthTest:!1,depthWrite:!1,transparent:!0});LineSegments.call(this,geometry,material);this.root=object;this.bones=bones;this.matrix=object.matrixWorld;this.matrixAutoUpdate=!1}
4963SkeletonHelper.prototype=Object.create(LineSegments.prototype);SkeletonHelper.prototype.constructor=SkeletonHelper;SkeletonHelper.prototype.updateMatrixWorld=function(){var vector=new Vector3();var boneMatrix=new Matrix4();var matrixWorldInv=new Matrix4();return function updateMatrixWorld(force){var bones=this.bones;var geometry=this.geometry;var position=geometry.getAttribute('position');matrixWorldInv.getInverse(this.root.matrixWorld);for(var i=0,j=0;i<bones.length;i ++){var bone=bones[i];if(bone.parent&&bone.parent.isBone){boneMatrix.multiplyMatrices(matrixWorldInv,bone.matrixWorld);vector.setFromMatrixPosition(boneMatrix);position.setXYZ(j,vector.x,vector.y,vector.z);boneMatrix.multiplyMatrices(matrixWorldInv,bone.parent.matrixWorld);vector.setFromMatrixPosition(boneMatrix);position.setXYZ(j+1,vector.x,vector.y,vector.z);j+=2}}
4964geometry.getAttribute('position').needsUpdate=!0;Object3D.prototype.updateMatrixWorld.call(this,force)}}();function PointLightHelper(light,sphereSize,color){this.light=light;this.light.updateMatrixWorld();this.color=color;var geometry=new SphereBufferGeometry(sphereSize,4,2);var material=new MeshBasicMaterial({wireframe:!0,fog:!1});Mesh.call(this,geometry,material);this.matrix=this.light.matrixWorld;this.matrixAutoUpdate=!1;this.update()}
4965PointLightHelper.prototype=Object.create(Mesh.prototype);PointLightHelper.prototype.constructor=PointLightHelper;PointLightHelper.prototype.dispose=function(){this.geometry.dispose();this.material.dispose()};PointLightHelper.prototype.update=function(){if(this.color!==undefined){this.material.color.set(this.color)}else{this.material.color.copy(this.light.color)}};function RectAreaLightHelper(light,color){Object3D.call(this);this.light=light;this.light.updateMatrixWorld();this.matrix=light.matrixWorld;this.matrixAutoUpdate=!1;this.color=color;var material=new LineBasicMaterial({fog:!1});var geometry=new BufferGeometry();geometry.addAttribute('position',new BufferAttribute(new Float32Array(5*3),3));this.line=new Line(geometry,material);this.add(this.line);this.update()}
4966RectAreaLightHelper.prototype=Object.create(Object3D.prototype);RectAreaLightHelper.prototype.constructor=RectAreaLightHelper;RectAreaLightHelper.prototype.dispose=function(){this.children[0].geometry.dispose();this.children[0].material.dispose()};RectAreaLightHelper.prototype.update=function(){var hx=this.light.width*0.5;var hy=this.light.height*0.5;var position=this.line.geometry.attributes.position;var array=position.array;array[0]=hx;array[1]=-hy;array[2]=0;array[3]=hx;array[4]=hy;array[5]=0;array[6]=-hx;array[7]=hy;array[8]=0;array[9]=-hx;array[10]=-hy;array[11]=0;array[12]=hx;array[13]=-hy;array[14]=0;position.needsUpdate=!0;if(this.color!==undefined){this.line.material.color.set(this.color)}else{this.line.material.color.copy(this.light.color)}};function HemisphereLightHelper(light,size,color){Object3D.call(this);this.light=light;this.light.updateMatrixWorld();this.matrix=light.matrixWorld;this.matrixAutoUpdate=!1;this.color=color;var geometry=new OctahedronBufferGeometry(size);geometry.rotateY(Math.PI*0.5);this.material=new MeshBasicMaterial({wireframe:!0,fog:!1});if(this.color===undefined)this.material.vertexColors=VertexColors;var position=geometry.getAttribute('position');var colors=new Float32Array(position.count*3);geometry.addAttribute('color',new BufferAttribute(colors,3));this.add(new Mesh(geometry,this.material));this.update()}
4967HemisphereLightHelper.prototype=Object.create(Object3D.prototype);HemisphereLightHelper.prototype.constructor=HemisphereLightHelper;HemisphereLightHelper.prototype.dispose=function(){this.children[0].geometry.dispose();this.children[0].material.dispose()};HemisphereLightHelper.prototype.update=function(){var vector=new Vector3();var color1=new Color();var color2=new Color();
4967return function update(){var mesh=this.children[0];if(this.color!==undefined){this.material.color.set(this.color)}else{var colors=mesh.geometry.getAttribute('color');color1.copy(this.light.color);color2.copy(this.light.groundColor);for(var i=0,l=colors.count;i<l;i ++){var color=(i<(l/2))?color1:color2;colors.setXYZ(i,color.r,color.g,color.b)}
4968colors.needsUpdate=!0}
4969mesh.lookAt(vector.setFromMatrixPosition(this.light.matrixWorld).negate())}}();function GridHelper(size,divisions,color1,color2){size=size||10;divisions=divisions||10;color1=new Color(color1!==undefined?color1:0x444444);color2=new Color(color2!==undefined?color2:0x888888);var center=divisions/2;var step=size/divisions;var halfSize=size/2;var vertices=[],colors=[];for(var i=0,j=0,k=-halfSize;i<=divisions;i ++,k+=step){vertices.push(-halfSize,0,k,halfSize,0,k);vertices.push(k,0,-halfSize,k,0,halfSize);var color=i===center?color1:color2;color.toArray(colors,j);j+=3;color.toArray(colors,j);j+=3;color.toArray(colors,j);j+=3;color.toArray(colors,j);j+=3}
4970var geometry=new BufferGeometry();geometry.addAttribute('position',new Float32BufferAttribute(vertices,3));geometry.addAttribute('color',new Float32BufferAttribute(colors,3));var material=new LineBasicMaterial({vertexColors:VertexColors});LineSegments.call(this,geometry,material)}
4971GridHelper.prototype=Object.create(LineSegments.prototype);GridHelper.prototype.constructor=GridHelper;function PolarGridHelper(radius,radials,circles,divisions,color1,color2){radius=radius||10;radials=radials||16;circles=circles||8;divisions=divisions||64;color1=new Color(color1!==undefined?color1:0x444444);color2=new Color(color2!==undefined?color2:0x888888);var vertices=[];var colors=[];var x,z;var v,i,j,r,color;for(i=0;i<=radials;i ++){v=(i/radials)*(Math.PI*2);x=Math.sin(v)*radius;z=Math.cos(v)*radius;vertices.push(0,0,0);vertices.push(x,0,z);color=(i&1)?color1:color2;colors.push(color.r,color.g,color.b);colors.push(color.r,color.g,color.b)}
4972for(i=0;i<=circles;i ++){color=(i&1)?color1:color2;r=radius-(radius/circles*i);for(j=0;j<divisions;j ++){v=(j/divisions)*(Math.PI*2);x=Math.sin(v)*r;z=Math.cos(v)*r;vertices.push(x,0,z);colors.push(color.r,color.g,color.b);v=((j+1)/divisions)*(Math.PI*2);x=Math.sin(v)*r;z=Math.cos(v)*r;vertices.push(x,0,z);colors.push(color.r,color.g,color.b)}}
4973var geometry=new BufferGeometry();geometry.addAttribute('position',new Float32BufferAttribute(vertices,3));geometry.addAttribute('color',new Float32BufferAttribute(colors,3));var material=new LineBasicMaterial({vertexColors:VertexColors});LineSegments.call(this,geometry,material)}
4974PolarGridHelper.prototype=Object.create(LineSegments.prototype);PolarGridHelper.prototype.constructor=PolarGridHelper;function FaceNormalsHelper(object,size,hex,linewidth){this.object=object;this.size=(size!==undefined)?size:1;var color=(hex!==undefined)?hex:0xffff00;var width=(linewidth!==undefined)?linewidth:1;var nNormals=0;var objGeometry=this.object.geometry;if(objGeometry&&objGeometry.isGeometry){nNormals=objGeometry.faces.length}else{console.warn('THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.')}
4975var geometry=new BufferGeometry();var positions=new Float32BufferAttribute(nNormals*2*3,3);geometry.addAttribute('position',positions);LineSegments.call(this,geometry,new LineBasicMaterial({color:color,linewidth:width}));this.matrixAutoUpdate=!1;this.update()}
4976FaceNormalsHelper.prototype=Object.create(LineSegments.prototype);FaceNormalsHelper.prototype.constructor=FaceNormalsHelper;FaceNormalsHelper.prototype.update=(function(){var v1=new Vector3();var v2=new Vector3();var normalMatrix=new Matrix3();return function update(){this.object.updateMatrixWorld(!0);normalMatrix.getNormalMatrix(this.object.matrixWorld);var matrixWorld=this.object.matrixWorld;var position=this.geometry.attributes.position;var objGeometry=this.object.geometry;var vertices=objGeometry.vertices;var faces=objGeometry.faces;var idx=0;for(var i=0,l=faces.length;i<l;i ++){var face=faces[i];var normal=face.normal;v1.copy(vertices[face.a]).add(vertices[face.b]).add(vertices[face.c]).divideScalar(3).applyMatrix4(matrixWorld);v2.copy(normal).applyMatrix3(normalMatrix).normalize().multiplyScalar(this.size).add(v1);position.setXYZ(idx,v1.x,v1.y,v1.z);idx=idx+1;position.setXYZ(idx,v2.x,v2.y,v2.z);
4976idx=idx+1}
4977position.needsUpdate=!0}}());function DirectionalLightHelper(light,size,color){Object3D.call(this);this.light=light;this.light.updateMatrixWorld();this.matrix=light.matrixWorld;this.matrixAutoUpdate=!1;this.color=color;if(size===undefined)size=1;var geometry=new BufferGeometry();geometry.addAttribute('position',new Float32BufferAttribute([-size,size,0,size,size,0,size,-size,0,-size,-size,0,-size,size,0],3));var material=new LineBasicMaterial({fog:!1});this.lightPlane=new Line(geometry,material);this.add(this.lightPlane);geometry=new BufferGeometry();geometry.addAttribute('position',new Float32BufferAttribute([0,0,0,0,0,1],3));this.targetLine=new Line(geometry,material);this.add(this.targetLine);this.update()}
4978DirectionalLightHelper.prototype=Object.create(Object3D.prototype);DirectionalLightHelper.prototype.constructor=DirectionalLightHelper;DirectionalLightHelper.prototype.dispose=function(){this.lightPlane.geometry.dispose();this.lightPlane.material.dispose();this.targetLine.geometry.dispose();this.targetLine.material.dispose()};DirectionalLightHelper.prototype.update=function(){var v1=new Vector3();var v2=new Vector3();var v3=new Vector3();return function update(){v1.setFromMatrixPosition(this.light.matrixWorld);v2.setFromMatrixPosition(this.light.target.matrixWorld);v3.subVectors(v2,v1);this.lightPlane.lookAt(v3);if(this.color!==undefined){this.lightPlane.material.color.set(this.color);this.targetLine.material.color.set(this.color)}else{this.lightPlane.material.color.copy(this.light.color);this.targetLine.material.color.copy(this.light.color)}
4979this.targetLine.lookAt(v3);this.targetLine.scale.z=v3.length()}}();function CameraHelper(camera){var geometry=new BufferGeometry();var material=new LineBasicMaterial({color:0xffffff,vertexColors:FaceColors});var vertices=[];var colors=[];var pointMap={};var colorFrustum=new Color(0xffaa00);var colorCone=new Color(0xff0000);var colorUp=new Color(0x00aaff);var colorTarget=new Color(0xffffff);var colorCross=new Color(0x333333);addLine('n1','n2',colorFrustum);addLine('n2','n4',colorFrustum);addLine('n4','n3',colorFrustum);addLine('n3','n1',colorFrustum);addLine('f1','f2',colorFrustum);addLine('f2','f4',colorFrustum);addLine('f4','f3',colorFrustum);addLine('f3','f1',colorFrustum);addLine('n1','f1',colorFrustum);addLine('n2','f2',colorFrustum);addLine('n3','f3',colorFrustum);addLine('n4','f4',colorFrustum);addLine('p','n1',colorCone);addLine('p','n2',colorCone);addLine('p','n3',colorCone);addLine('p','n4',colorCone);addLine('u1','u2',colorUp);addLine('u2','u3',colorUp);addLine('u3','u1',colorUp);addLine('c','t',colorTarget);addLine('p','c',colorCross);addLine('cn1','cn2',colorCross);addLine('cn3','cn4',colorCross);addLine('cf1','cf2',colorCross);addLine('cf3','cf4',colorCross);function addLine(a,b,color){addPoint(a,color);addPoint(b,color)}
4980function addPoint(id,color){vertices.push(0,0,0);colors.push(color.r,color.g,color.b);if(pointMap[id]===undefined){pointMap[id]=[]}
4981pointMap[id].push((vertices.length/3)-1)}
4982geometry.addAttribute('position',new Float32BufferAttribute(vertices,3));geometry.addAttribute('color',new Float32BufferAttribute(colors,3));LineSegments.call(this,geometry,material);this.camera=camera;if(this.camera.updateProjectionMatrix)this.camera.updateProjectionMatrix();this.matrix=camera.matrixWorld;this.matrixAutoUpdate=!1;this.pointMap=pointMap;this.update()}
4983CameraHelper.prototype=Object.create(LineSegments.prototype);CameraHelper.prototype.constructor=CameraHelper;CameraHelper.prototype.update=function(){var geometry,pointMap;var vector=new Vector3();var camera=new Camera();function setPoint(point,x,y,z){vector.set(x,y,z).unproject(camera);var points=pointMap[point];if(points!==undefined){var position=geometry.getAttribute('position');for(var i=0,l=points.length;i<l;i ++){position.setXYZ(points[i],vector.x,vector.y,vector.z)}}}
4984return function update(){geometry=this.geometry;pointMap=this.pointMap;var w=1,h=1;camera.projectionMatrix.copy(this.camera.projectionMatrix);setPoint('c',0,0,-1);setPoint('t',0,0,1);setPoint('n1',-w,-h,-1);setPoint('n2',w,-h,-1);setPoint('n3',-w,h,-1);setPoint('n4',w,h,-1);setPoint('f1',-w,-h,1);setPoint('f2',w,-h,1);setPoint('f3',-w,h,1);setPoint('f4',w,h,1);setPoint('u1',w*0.7,h*1.1,-1);setPoint('u2',-w*0.7,h*1.1,-1);setPoint('u3',0,h*2,-1);setPoint('cf1',-w,0,1);setPoint('cf2',w,0,1);setPoint('cf3',0,-h,1);setPoint('cf4',0,h,1);setPoint('cn1',-w,0,-1);setPoint('cn2',w,0,-1);setPoint('cn3',0,-h,-1);setPoint('cn4',0,h,-1);geometry.getAttribute('position').needsUpdate=!0}}();function BoxHelper(object,color){this.object=object;if(color===undefined)color=0xffff00;var indices=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]);var positions=new Float32Array(8*3);var geometry=new BufferGeometry();geometry.setIndex(new BufferAttribute(indices,1));geometry.addAttribute('position',new BufferAttribute(positions,3));LineSegments.call(this,geometry,new LineBasicMaterial({color:color}));this.matrixAutoUpdate=!1;this.update()}
4985BoxHelper.prototype=Object.create(LineSegments.prototype);BoxHelper.prototype.constructor=BoxHelper;BoxHelper.prototype.update=(function(){var box=new Box3();return function update(object){if(object!==undefined){console.warn('THREE.BoxHelper: .update(
4985) has no longer arguments.')}
4986if(this.object!==undefined){box.setFromObject(this.object)}
4987if(box.isEmpty())return;var min=box.min;var max=box.max;var position=this.geometry.attributes.position;var array=position.array;array[0]=max.x;array[1]=max.y;array[2]=max.z;array[3]=min.x;array[4]=max.y;array[5]=max.z;array[6]=min.x;array[7]=min.y;array[8]=max.z;array[9]=max.x;array[10]=min.y;array[11]=max.z;array[12]=max.x;array[13]=max.y;array[14]=min.z;array[15]=min.x;array[16]=max.y;array[17]=min.z;array[18]=min.x;array[19]=min.y;array[20]=min.z;array[21]=max.x;array[22]=min.y;array[23]=min.z;position.needsUpdate=!0;this.geometry.computeBoundingSphere()}})();BoxHelper.prototype.setFromObject=function(object){this.object=object;this.update();return this};function Box3Helper(box,hex){this.type='Box3Helper';this.box=box;var color=(hex!==undefined)?hex:0xffff00;var indices=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]);var positions=[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1];var geometry=new BufferGeometry();geometry.setIndex(new BufferAttribute(indices,1));geometry.addAttribute('position',new Float32BufferAttribute(positions,3));LineSegments.call(this,geometry,new LineBasicMaterial({color:color}));this.geometry.computeBoundingSphere()}
4988Box3Helper.prototype=Object.create(LineSegments.prototype);Box3Helper.prototype.constructor=Box3Helper;Box3Helper.prototype.updateMatrixWorld=function(force){var box=this.box;if(box.isEmpty())return;box.getCenter(this.position);box.getSize(this.scale);this.scale.multiplyScalar(0.5);Object3D.prototype.updateMatrixWorld.call(this,force)};function PlaneHelper(plane,size,hex){this.type='PlaneHelper';this.plane=plane;this.size=(size===undefined)?1:size;var color=(hex!==undefined)?hex:0xffff00;var positions=[1,-1,1,-1,1,1,-1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,0,0,1,0,0,0];var geometry=new BufferGeometry();geometry.addAttribute('position',new Float32BufferAttribute(positions,3));geometry.computeBoundingSphere();Line.call(this,geometry,new LineBasicMaterial({color:color}));var positions2=[1,1,1,-1,1,1,-1,-1,1,1,1,1,-1,-1,1,1,-1,1];var geometry2=new BufferGeometry();geometry2.addAttribute('position',new Float32BufferAttribute(positions2,3));geometry2.computeBoundingSphere();this.add(new Mesh(geometry2,new MeshBasicMaterial({color:color,opacity:0.2,transparent:!0,depthWrite:!1})))}
4989PlaneHelper.prototype=Object.create(Line.prototype);PlaneHelper.prototype.constructor=PlaneHelper;PlaneHelper.prototype.updateMatrixWorld=function(force){var scale=-this.plane.constant;if(Math.abs(scale)<1e-8)scale=1e-8;this.scale.set(0.5*this.size,0.5*this.size,scale);this.children[0].material.side=(scale<0)?BackSide:FrontSide;this.lookAt(this.plane.normal);Object3D.prototype.updateMatrixWorld.call(this,force)};var lineGeometry,coneGeometry;function ArrowHelper(dir,origin,length,color,headLength,headWidth){Object3D.call(this);if(color===undefined)color=0xffff00;if(length===undefined)length=1;if(headLength===undefined)headLength=0.2*length;if(headWidth===undefined)headWidth=0.2*headLength;if(lineGeometry===undefined){lineGeometry=new BufferGeometry();lineGeometry.addAttribute('position',new Float32BufferAttribute([0,0,0,0,1,0],3));coneGeometry=new CylinderBufferGeometry(0,0.5,1,5,1);coneGeometry.translate(0,-0.5,0)}
4990this.position.copy(origin);this.line=new Line(lineGeometry,new LineBasicMaterial({color:color}));this.line.matrixAutoUpdate=!1;this.add(this.line);this.cone=new Mesh(coneGeometry,new MeshBasicMaterial({color:color}));this.cone.matrixAutoUpdate=!1;this.add(this.cone);this.setDirection(dir);this.setLength(length,headLength,headWidth)}
4991ArrowHelper.prototype=Object.create(Object3D.prototype);ArrowHelper.prototype.constructor=ArrowHelper;ArrowHelper.prototype.setDirection=(function(){var axis=new Vector3();var radians;return function setDirection(dir){if(dir.y>0.99999){this.quaternion.set(0,0,0,1)}else if(dir.y<-0.99999){this.quaternion.set(1,0,0,0)}else{axis.set(dir.z,0,-dir.x).normalize();radians=Math.acos(dir.y);this.quaternion.setFromAxisAngle(axis,radians)}}}());ArrowHelper.prototype.setLength=function(length,headLength,headWidth){if(headLength===undefined)headLength=0.2*length;if(headWidth===undefined)headWidth=0.2*headLength;this.line.scale.set(1,Math.max(0,length-headLength),1);this.line.updateMatrix();this.cone.scale.set(headWidth,headLength,headWidth);this.cone.position.y=length;this.cone.updateMatrix()};ArrowHelper.prototype.setColor=function(color){this.line.material.color.copy(color);this.cone.material.color.copy(color)};function AxesHelper(size){size=size||1;var vertices=[0,0,0,size,0,0,0,0,0,0,size,0,0,0,0,0,0,size];var colors=[1,0,0,1,0.6,0,0,1,0,0.6,1,0,0,0,1,0,0.6,1];var geometry=new BufferGeometry();geometry.addAttribute('position',new Float32BufferAttribute(vertices,3));geometry.addAttribute('color',new Float32BufferAttribute(colors,3));var material=new LineBasicMaterial({vertexColors:VertexColors});LineSegments.call(this,geometry,material)}
4992AxesHelper.prototype=Object.create(LineSegments.prototype);AxesHelper.prototype.constructor=AxesHelper;Curve.create=function(construct,getPoint){console.log('THREE.Curve.create() has been deprecated');construct.prototype=Object.create(Curve.prototype);construct.prototype.constructor=construct;construct.prototype.getPoint=getPoint;return construct};Object.assign(CurvePath.prototype,{createPointsGeometry:function(divisions){console.warn('THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.');var pts=this.getPoints(divisions);return this.createGeometry(pts)},createSpacedPointsGeometry:function(divisions){console.warn('THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.');var pts=this.getSpacedPoints(divisions);return this.createGeometry(pts)},createGeometry:function(points){console.warn('THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.');var geometry=new Geometry();for(var i=0,l=points.length;i<l;i ++){var point=points[i];geometry.vertices.push(new Vector3(point.x,point.y,point.z||0))}
4993return geometry}});Object.assign(Path.prototype,{fromPoints:function(points){console.warn('THREE.Path: .fromPoints() has been renamed to .setFromPoints().');this.setFromPoints(points)}});function Spline(points){console.warn('THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.');CatmullRomCurve3.call(this,points);this.type='catmullrom'}
4994Spline.prototype=Object.create(CatmullRomCurve3.prototype);Object.assign(Spline.prototype,{initFromArray:function(){console.error('THREE.Spline: .initFromArray() has been removed.')},getControlPointsArray:function(){console.error('THREE.Spline: .getControlPointsArray() has been removed.')},reparametrizeByArcLength:function(){console.error('THREE.Spline: .reparametrizeByArcLength() has been removed.')}});GridHelper.prototype.setColors=function(){console.error('THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.')};SkeletonHelper.prototype.update=function(){console.error('THREE.SkeletonHelper: update(
4994) no longer needs to be called.')};Object.assign(Loader.prototype,{extractUrlBase:function(url){console.warn('THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.');return LoaderUtils.extractUrlBase(url)}});Object.assign(Box2.prototype,{center:function(optionalTarget){console.warn('THREE.Box2: .center() has been renamed to .getCenter().');return this.getCenter(optionalTarget)},empty:function(){console.warn('THREE.Box2: .empty() has been renamed to .isEmpty().');return this.isEmpty()},isIntersectionBox:function(box){console.warn('THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().');return this.intersectsBox(box)},size:function(optionalTarget){console.warn('THREE.Box2: .size() has been renamed to .getSize().');return this.getSize(optionalTarget)}});Object.assign(Box3.prototype,{center:function(optionalTarget){console.warn('THREE.Box3: .center() has been renamed to .getCenter().');return this.getCenter(optionalTarget)},empty:function(){console.warn('THREE.Box3: .empty() has been renamed to .isEmpty().');return this.isEmpty()},isIntersectionBox:function(box){console.warn('THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().');return this.intersectsBox(box)},isIntersectionSphere:function(sphere){console.warn('THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().');return this.intersectsSphere(sphere)},size:function(optionalTarget){console.warn('THREE.Box3: .size() has been renamed to .getSize().');return this.getSize(optionalTarget)}});Line3.prototype.center=function(optionalTarget){console.warn('THREE.Line3: .center() has been renamed to .getCenter().');return this.getCenter(optionalTarget)};Object.assign(_Math,{random16:function(){console.warn('THREE.Math: .random16() has been deprecated. Use Math.random() instead.');return Math.random()},nearestPowerOfTwo:function(value){console.warn('THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().');return _Math.floorPowerOfTwo(value)},nextPowerOfTwo:function(value){console.warn('THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().');return _Math.ceilPowerOfTwo(value)}});Object.assign(Matrix3.prototype,{flattenToArrayOffset:function(array,offset){console.warn("THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.");return this.toArray(array,offset)},multiplyVector3:function(vector){console.warn('THREE.Matrix3: .multiplyVector3(
4994) has been removed. Use vector.applyMatrix3( matrix ) instead.');return vector.applyMatrix3(this)},multiplyVector3Array:function(){console.error('THREE.Matrix3: .multiplyVector3Array() has been removed.')},applyToBuffer:function(buffer){console.warn('THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.');return this.applyToBufferAttribute(buffer)},applyToVector3Array:function(){console.error('THREE.Matrix3: .applyToVector3Array() has been removed.')}});Object.assign(Matrix4.prototype,{extractPosition:function(m){console.warn('THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().');return this.copyPosition(m)},flattenToArrayOffset:function(array,offset){console.warn("THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.");return this.toArray(array,offset)},getPosition:function(){var v1;return function getPosition(){if(v1===undefined)v1=new Vector3();console.warn('THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.');return v1.setFromMatrixColumn(this,3)}}(),setRotationFromQuaternion:function(q){console.warn('THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().');return this.makeRotationFromQuaternion(q)},multiplyToArray:function(){console.warn('THREE.Matrix4: .multiplyToArray() has been removed.')},multiplyVector3:function(vector){console.warn('THREE.Matrix4: .multiplyVector3(
4994) has been removed. Use vector.applyMatrix4( matrix ) instead.');return vector.applyMatrix4(this)},multiplyVector4:function(vector){console.warn('THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.');return vector.applyMatrix4(this)},multiplyVector3Array:function(){console.error('THREE.Matrix4: .multiplyVector3Array() has been removed.')},rotateAxis:function(v){console.warn('THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.');v.transformDirection(this)},crossVector:function(vector){console.warn('THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.');return vector.applyMatrix4(this)},translate:function(){console.error('THREE.Matrix4: .translate() has been removed.')},rotateX:function(){console.error('THREE.Matrix4: .rotateX() has been removed.')},rotateY:function(){console.error('THREE.Matrix4: .rotateY() has been removed.')},rotateZ:function(){console.error('THREE.Matrix4: .rotateZ() has been removed.')},rotateByAxis:function(){console.error('THREE.Matrix4: .rotateByAxis() has been removed.')},applyToBuffer:function(buffer){console.warn('THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.');return this.applyToBufferAttribute(buffer)},applyToVector3Array:function(){console.error('THREE.Matrix4: .applyToVector3Array() has been removed.')},makeFrustum:function(left,right,bottom,top,near,far){console.warn('THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.');return this.makePerspective(left,right,top,bottom,near,far)}});Plane.prototype.isIntersectionLine=function(line){console.warn('THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().');return this.intersectsLine(line)};Quaternion.prototype.multiplyVector3=function(vector){console.warn('THREE.Quaternion: .multiplyVector3(
4994) has been removed. Use is now vector.applyQuaternion( quaternion ) instead.');return vector.applyQuaternion(this)};Object.assign(Ray.prototype,{isIntersectionBox:function(box){console.warn('THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().');return this.intersectsBox(box)},isIntersectionPlane:function(plane){console.warn('THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().');return this.intersectsPlane(plane)},isIntersectionSphere:function(sphere){console.warn('THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().');return this.intersectsSphere(sphere)}});Object.assign(Triangle.prototype,{area:function(){console.warn('THREE.Triangle: .area() has been renamed to .getArea().');return this.getArea()},barycoordFromPoint:function(point,target){console.warn('THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().');return this.getBarycoord(point,target)},midpoint:function(target){console.warn('THREE.Triangle: .midpoint() has been renamed to .getMidpoint().');return this.getMidpoint(target)},normal:function(target){console.warn('THREE.Triangle: .normal() has been renamed to .getNormal().');return this.getNormal(target)},plane:function(target){console.warn('THREE.Triangle: .plane() has been renamed to .getPlane().');return this.getPlane(target)}});Object.assign(Triangle,{barycoordFromPoint:function(point,a,b,c,target){console.warn('THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().');return Triangle.getBarycoord(point,a,b,c,target)},normal:function(a,b,c,target){console.warn('THREE.Triangle: .normal() has been renamed to .getNormal().');return Triangle.getNormal(a,b,c,target)}});Object.assign(Shape.prototype,{extractAllPoints:function(divisions){console.warn('THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.');return this.extractPoints(divisions)},extrude:function(options){console.warn('THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.');return new ExtrudeGeometry(this,options)},makeGeometry:function(options){console.warn('THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.');return new ShapeGeometry(this,options)}});Object.assign(Vector2.prototype,{fromAttribute:function(attribute,index,offset){console.warn('THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().');return this.fromBufferAttribute(attribute,index,offset)},distanceToManhattan:function(v){console.warn('THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().');return this.manhattanDistanceTo(v)},lengthManhattan:function(){console.warn('THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().');return this.manhattanLength()}});Object.assign(Vector3.prototype,{setEulerFromRotationMatrix:function(){console.error('THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.')},setEulerFromQuaternion:function(){console.error('THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.')},getPositionFromMatrix:function(m){console.warn('THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().');return this.setFromMatrixPosition(m)},getScaleFromMatrix:function(m){console.warn('THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().');return this.setFromMatrixScale(m)},getColumnFromMatrix:function(index,matrix){console.warn('THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().');return this.setFromMatrixColumn(matrix,index)},applyProjection:function(m){console.warn('THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.');return this.applyMatrix4(m)},fromAttribute:function(attribute,index,offset){console.warn('THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().');return this.fromBufferAttribute(attribute,index,offset)},distanceToManhattan:function(v){console.warn('THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().');return this.manhattanDistanceTo(v)},lengthManhattan:function(){console.warn('THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().');return this.manhattanLength()}});Object.assign(Vector4.prototype,{fromAttribute:function(attribute,index,offset){console.warn('THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().');return this.fromBufferAttribute(attribute,index,offset)},lengthManhattan:function(){console.warn('THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().');return this.manhattanLength()}});Object.assign(Geometry.prototype,{computeTangents:function(){console.error('THREE.Geometry: .computeTangents() has been removed.')},computeLineDistances:function(){console.error('THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.')}});Object.assign(Object3D.prototype,{getChildByName:function(name){console.warn('THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().');return this.getObjectByName(name)},renderDepth:function(){console.warn('THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.')},translate:function(distance,axis){console.warn('THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.');return this.translateOnAxis(axis,distance)},getWorldRotation:function(){console.error('THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.')}});Object.defineProperties(Object3D.prototype,{eulerOrder:{get:function(){console.warn('THREE.Object3D: .eulerOrder is now .rotation.order.');return this.rotation.order},set:function(value){console.warn('THREE.Object3D: .eulerOrder is now .rotation.order.');this.rotation.order=value}},useQuaternion:{get:function(){console.warn('THREE.Object3D: .useQuaternion has been removed. The library n
4994ow uses quaternions by default.')},set:function(){console.warn('THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.')}}});Object.defineProperties(LOD.prototype,{objects:{get:function(){console.warn('THREE.LOD: .objects has been renamed to .levels.');return this.levels}}});Object.defineProperty(Skeleton.prototype,'useVertexTexture',{get:function(){console.warn('THREE.Skeleton: useVertexTexture has been removed.')},set:function(){console.warn('THREE.Skeleton: useVertexTexture has been removed.')}});Object.defineProperty(Curve.prototype,'__arcLengthDivisions',{get:function(){console.warn('THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.');return this.arcLengthDivisions},set:function(value){console.warn('THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.');this.arcLengthDivisions=value}});PerspectiveCamera.prototype.setLens=function(focalLength,filmGauge){console.warn("THREE.PerspectiveCamera.setLens is deprecated. "+"Use .setFocalLength and .filmGauge for a photographic setup.");if(filmGauge!==undefined)this.filmGauge=filmGauge;this.setFocalLength(focalLength)};Object.defineProperties(Light.prototype,{onlyShadow:{set:function(){console.warn('THREE.Light: .onlyShadow has been removed.')}},shadowCameraFov:{set:function(value){console.warn('THREE.Light: .shadowCameraFov is now .shadow.camera.fov.');this.shadow.camera.fov=value}},shadowCameraLeft:{set:function(value){console.warn('THREE.Light: .shadowCameraLeft is now .shadow.camera.left.');this.shadow.camera.left=value}},shadowCameraRight:{set:function(value){console.warn('THREE.Light: .shadowCameraRight is now .shadow.camera.right.');this.shadow.camera.right=value}},shadowCameraTop:{set:function(value){console.warn('THREE.Light: .shadowCameraTop is now .shadow.camera.top.');this.shadow.camera.top=value}},shadowCameraBottom:{set:function(value){console.warn('THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.');this.shadow.camera.bottom=value}},shadowCameraNear:{set:function(value){console.warn('THREE.Light: .shadowCameraNear is now .shadow.camera.near.');this.shadow.camera.near=value}},shadowCameraFar:{set:function(value){console.warn('THREE.Light: .shadowCameraFar is now .shadow.camera.far.');this.shadow.camera.far=value}},shadowCameraVisible:{set:function(){console.warn('THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.')}},shadowBias:{set:function(value){console.warn('THREE.Light: .shadowBias is now .shadow.bias.');this.shadow.bias=value}},shadowDarkness:{set:function(){console.warn('THREE.Light: .shadowDarkness has been removed.')}},shadowMapWidth:{set:function(value){console.warn('THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.');this.shadow.mapSize.width=value}},shadowMapHeight:{set:function(value){console.warn('THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.');this.shadow.mapSize.height=value}}});Object.defineProperties(BufferAttribute.prototype,{length:{get:function(){console.warn('THREE.BufferAttribute: .length has been deprecated. Use .count instead.');return this.array.length}},copyIndicesArray:function(){console.error('THREE.BufferAttribute: .copyIndicesArray() has been removed.')}});Object.assign(BufferGeometry.prototype,{addIndex:function(index){console.warn('THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().');this.setIndex(index)},addDrawCall:function(start,count,indexOffset){if(indexOffset!==undefined){console.warn('THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.')}
4995console.warn('THREE.BufferGeometry: .addDrawCall() is now .addGroup().');this.addGroup(start,count)},clearDrawCalls:function(){console.warn('THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().');this.clearGroups()},computeTangents:function(){console.warn('THREE.BufferGeometry: .computeTangents() has been removed.')},computeOffsets:function(){console.warn('THREE.BufferGeometry: .computeOffsets() has been removed.')}});Object.defineProperties(BufferGeometry.prototype,{drawcalls:{get:function(){console.error('THREE.BufferGeometry: .drawcalls has been renamed to .groups.');return this.groups}},offsets:{get:function(){console.warn('THREE.BufferGeometry: .offsets has been renamed to .groups.');return this.groups}}});Object.assign(ExtrudeBufferGeometry.prototype,{getArrays:function(){console.error('THREE.ExtrudeBufferGeometry: .getArrays() has been removed.')},addShapeList:function(){console.error('THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.')},addShape:function(){console.error('THREE.ExtrudeBufferGeometry: .addShape() has been removed.')}});Object.defineProperties(Uniform.prototype,{dynamic:{set:function(){console.warn('THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.')}},onUpdate:{value:function(){console.warn('THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.');return this}}});Object.defineProperties(Material.prototype,{wrapAround:{get:function(){console.warn('THREE.Material: .wrapAround has been removed.')}
4995,set:function(){console.warn('THREE.Material: .wrapAround has been removed.')}},wrapRGB:{get:function(){console.warn('THREE.Material: .wrapRGB has been removed.');return new Color()}},shading:{get:function(){console.error('THREE.'+this.type+': .shading has been removed. Use the boolean .flatShading instead.')},set:function(value){console.warn('THREE.'+this.type+': .shading has been removed. Use the boolean .flatShading instead.');this.flatShading=(value===FlatShading)}}});Object.defineProperties(MeshPhongMaterial.prototype,{metal:{get:function(){console.warn('THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.');return!1},set:function(){console.warn('THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead')}}});Object.defineProperties(ShaderMaterial.prototype,{derivatives:{get:function(){console.warn('THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.');return this.extensions.derivatives},set:function(value){console.warn('THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.');this.extensions.derivatives=value}}});Object.assign(WebGLRenderer.prototype,{animate:function(callback){console.warn('THREE.WebGLRenderer: .animate() is now .setAnimationLoop().');this.setAnimationLoop(callback)},getCurrentRenderTarget:function(){console.warn('THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().');return this.getRenderTarget()},getMaxAnisotropy:function(){console.warn('THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().');return this.capabilities.getMaxAnisotropy()},getPrecision:function(){console.warn('THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.');return this.capabilities.precision},resetGLState:function(){console.warn('THREE.WebGLRenderer: .resetGLState() is now .state.reset().');return this.state.reset()},supportsFloatTextures:function(){console.warn('THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \'OES_texture_float\' ).');return this.extensions.get('OES_texture_float')},supportsHalfFloatTextures:function(){console.warn('THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \'OES_texture_half_float\' ).');return this.extensions.get('OES_texture_half_float')},supportsStandardDerivatives:function(){console.warn('THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \'OES_standard_derivatives\' ).');return this.extensions.get('OES_standard_derivatives')},supportsCompressedTextureS3TC:function(){console.warn('THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \'WEBGL_compressed_texture_s3tc\' ).');return this.extensions.get('WEBGL_compressed_texture_s3tc')},supportsCompressedTexturePVRTC:function(){console.warn('THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \'WEBGL_compressed_texture_pvrtc\' ).');return this.extensions.get('WEBGL_compressed_texture_pvrtc')},supportsBlendMinMax:function(){console.warn('THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \'EXT_blend_minmax\' ).');return this.extensions.get('EXT_blend_minmax')},supportsVertexTextures:function(){console.warn('THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.');return this.capabilities.vertexTextures},supportsInstancedArrays:function(){console.warn('THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \'ANGLE_instanced_arrays\' ).');return this.extensions.get('ANGLE_instanced_arrays')},enableScissorTest:function(boolean){console.warn('THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().');this.setScissorTest(boolean)},initMaterial:function(){console.warn('THREE.WebGLRenderer: .initMaterial() has been removed.')},addPrePlugin:function(){console.warn('THREE.WebGLRenderer: .addPrePlugin() has been removed.')},addPostPlugin:function(){console.warn('THREE.WebGLRenderer: .addPostPlugin() has been removed.')},updateShadowMap:function(){console.warn('THREE.WebGLRenderer: .updateShadowMap() has been removed.')},setFaceCulling:function(){console.warn('THREE.WebGLRenderer: .setFaceCulling(
4995) has been removed.')}});Object.defineProperties(WebGLRenderer.prototype,{shadowMapEnabled:{get:function(){return this.shadowMap.enabled},set:function(value){console.warn('THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.');this.shadowMap.enabled=value}},shadowMapType:{get:function(){return this.shadowMap.type},set:function(value){console.warn('THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.');this.shadowMap.type=value}},shadowMapCullFace:{get:function(){console.warn('THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.');return undefined},set:function(){console.warn('THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.')}}});Object.defineProperties(WebGLShadowMap.prototype,{cullFace:{get:function(){console.warn('THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.');return undefined},set:function(){console.warn('THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.')}},renderReverseSided:{get:function(){console.warn('THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.');return undefined},set:function(){console.warn('THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.')}},renderSingleSided:{get:function(){console.warn('THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.');return undefined},set:function(){console.warn('THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.')}}});Object.defineProperties(WebGLRenderTarget.prototype,{wrapS:{get:function(){console.warn('THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.');return this.texture.wrapS},set:function(value){console.warn('THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.');this.texture.wrapS=value}},wrapT:{get:function(){console.warn('THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.');return this.texture.wrapT},set:function(value){console.warn('THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.');this.texture.wrapT=value}},magFilter:{get:function(){console.warn('THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.');return this.texture.magFilter},set:function(value){console.warn('THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.');this.texture.magFilter=value}},minFilter:{get:function(){console.warn('THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.');return this.texture.minFilter},set:function(value){console.warn('THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.');this.texture.minFilter=value}},anisotropy:{get:function(){console.warn('THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.');return this.texture.anisotropy},set:function(value){console.warn('THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.');this.texture.anisotropy=value}},offset:{get:function(){console.warn('THREE.WebGLRenderTarget: .offset is now .texture.offset.');return this.texture.offset},set:function(value){console.warn('THREE.WebGLRenderTarget: .offset is now .texture.offset.');this.texture.offset=value}},repeat:{get:function(){console.warn('THREE.WebGLRenderTarget: .repeat is now .texture.repeat.');return this.texture.repeat},set:function(value){console.warn('THREE.WebGLRenderTarget: .repeat is now .texture.repeat.');this.texture.repeat=value}},format:{get:function(){console.warn('THREE.WebGLRenderTarget: .format is now .texture.format.');return this.texture.format},set:function(value){console.warn('THREE.WebGLRenderTarget: .format is now .texture.format.');this.texture.format=value}},type:{get:function(){console.warn('THREE.WebGLRenderTarget: .type is now .texture.type.');return this.texture.type},set:function(value){console.warn('THREE.WebGLRenderTarget: .type is now .texture.type.');this.texture.type=value}},generateMipmaps:{get:function(){console.warn('THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.');return this.texture.generateMipmaps},set:function(value){console.warn('THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.');this.texture.generateMipmaps=value}}});Object.defineProperties(WebVRManager.prototype,{standing:{set:function(){console.warn('THREE.WebVRManager: .standing has been removed.')}}});Audio.prototype.load=function(file){console.warn('THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.');var scope=this;var audioLoader=new AudioLoader();audioLoader.load(file,function(buffer){scope.setBuffer(buffer)});return this};AudioAnalyser.prototype.getData=function(){console.warn('THREE.AudioAnalyser: .getData() is now .getFrequencyData().');return this.getFrequencyData()};CubeCamera.prototype.updateCubeMap=function(renderer,scene){console.warn('THREE.CubeCamera: .updateCubeMap() is now .update(
4995).');return this.update(renderer,scene)};var VRControls=function(object,onError){var scope=this;var vrDisplay,vrDisplays;var standingMatrix=new Matrix4();var frameData=null;if('VRFrameData' in window){frameData=new VRFrameData()}
4996function gotVRDisplays(displays){vrDisplays=displays;if(displays.length>0){vrDisplay=displays[0]}else{if(onError)onError('VR input not available.');}}
4997if(navigator.getVRDisplays){navigator.getVRDisplays().then(gotVRDisplays).catch(function(){console.warn('VRControls: Unable to get VR Displays')})}
4998this.scale=1;this.standing=!1;this.userHeight=1.6;this.getVRDisplay=function(){return vrDisplay};this.setVRDisplay=function(value){vrDisplay=value};this.getVRDisplays=function(){console.warn('VRControls: getVRDisplays() is being deprecated.');return vrDisplays};this.getStandingMatrix=function(){return standingMatrix};this.update=function(){if(vrDisplay){var pose;if(vrDisplay.getFrameData){vrDisplay.getFrameData(frameData);pose=frameData.pose}else if(vrDisplay.getPose){pose=vrDisplay.getPose()}
4999if(pose.orientation!==null){object.quaternion.fromArray(pose.orientation)}
5000if(pose.position!==null){object.position.fromArray(pose.position)}else{object.position.set(0,0,0)}
5001if(this.standing){if(vrDisplay.stageParameters){object.updateMatrix();standingMatrix.fromArray(vrDisplay.stageParameters.sittingToStandingTransform);object.applyMatrix(standingMatrix)}else{object.position.setY(object.position.y+this.userHeight)}}
5002object.position.multiplyScalar(scope.scale)}};this.dispose=function(){vrDisplay=null}};var VREffect=function(renderer,onError){var vrDisplay,vrDisplays;var eyeTranslationL=new Vector3();var eyeTranslationR=new Vector3();var renderRectL,renderRectR;var headMatrix=new Matrix4();var eyeMatrixL=new Matrix4();var eyeMatrixR=new Matrix4();var frameData=null;if('VRFrameData' in window){frameData=new window.VRFrameData()}
5003function gotVRDisplays(displays){vrDisplays=displays;if(displays.length>0){vrDisplay=displays[0]}else{if(onError)onError('HMD not available');}}
5004if(navigator.getVRDisplays){navigator.getVRDisplays().then(gotVRDisplays).catch(function(){console.warn('VREffect: Unable to get VR Displays')})}
5005this.isPresenting=!1;var scope=this;var rendererSize=renderer.getSize();var rendererUpdateStyle=!1;var rendererPixelRatio=renderer.getPixelRatio();this.getVRDisplay=function(){return vrDisplay};this.setVRDisplay=function(value){vrDisplay=value};this.getVRDisplays=function(){console.warn('VREffect: getVRDisplays() is being deprecated.');return vrDisplays};this.setSize=function(width,height,updateStyle){rendererSize={width:width,height:height};rendererUpdateStyle=updateStyle;if(scope.isPresenting){var eyeParamsL=vrDisplay.getEyeParameters('left');renderer.setPixelRatio(1);renderer.setSize(eyeParamsL.renderWidth*2,eyeParamsL.renderHeight,!1)}else{renderer.setPixelRatio(rendererPixelRatio);renderer.setSize(width,height,updateStyle)}};var canvas=renderer.domElement;var defaultLeftBounds=[0.0,0.0,0.5,1.0];var defaultRightBounds=[0.5,0.0,0.5,1.0];function onVRDisplayPresentChange(){var wasPresenting=scope.isPresenting;scope.isPresenting=vrDisplay!==undefined&&vrDisplay.isPresenting;if(scope.isPresenting){var eyeParamsL=vrDisplay.getEyeParameters('left');var eyeWidth=eyeParamsL.renderWidth;var eyeHeight=eyeParamsL.renderHeight;if(!wasPresenting){rendererPixelRatio=renderer.getPixelRatio();rendererSize=renderer.getSize();renderer.setPixelRatio(1);renderer.setSize(eyeWidth*2,eyeHeight,!1)}}else if(wasPresenting){renderer.setPixelRatio(rendererPixelRatio);renderer.setSize(rendererSize.width,rendererSize.height,rendererUpdateStyle)}}
5006window.addEventListener('vrdisplaypresentchange',onVRDisplayPresentChange,!1);this.setFullScreen=function(boolean){return new Promise(function(resolve,reject){if(vrDisplay===undefined){reject(new Error('No VR hardware found.'));return}
5007if(scope.isPresenting===boolean){resolve();return}
5008if(boolean){resolve(vrDisplay.requestPresent([{source:canvas}]))}else{resolve(vrDisplay.exitPresent())}})};this.requestPresent=function(){return this.setFullScreen(!0)};this.exitPresent=function(){return this.setFullScreen(!1)};this.requestAnimationFrame=function(f){if(vrDisplay!==undefined){return vrDis
5008play.requestAnimationFrame(f)}else{return window.requestAnimationFrame(f)}};this.cancelAnimationFrame=function(h){if(vrDisplay!==undefined){vrDisplay.cancelAnimationFrame(h)}else{window.cancelAnimationFrame(h)}};this.submitFrame=function(){if(vrDisplay!==undefined&&scope.isPresenting){vrDisplay.submitFrame()}};this.autoSubmitFrame=!0;var cameraL=new PerspectiveCamera();cameraL.layers.enable(1);var cameraR=new PerspectiveCamera();cameraR.layers.enable(2);this.render=function(scene,camera,renderTarget,forceClear){if(vrDisplay&&scope.isPresenting){var autoUpdate=scene.autoUpdate;if(autoUpdate){scene.updateMatrixWorld();scene.autoUpdate=!1}
5009if(Array.isArray(scene)){console.warn('VREffect.render() no longer supports arrays. Use object.layers instead.');scene=scene[0]}
5010var size=renderer.getSize();var layers=vrDisplay.getLayers();var leftBounds;var rightBounds;if(layers.length){var layer=layers[0];leftBounds=layer.leftBounds!==null&&layer.leftBounds.length===4?layer.leftBounds:defaultLeftBounds;rightBounds=layer.rightBounds!==null&&layer.rightBounds.length===4?layer.rightBounds:defaultRightBounds}else{leftBounds=defaultLeftBounds;rightBounds=defaultRightBounds}
5011renderRectL={x:Math.round(size.width*leftBounds[0]),y:Math.round(size.height*leftBounds[1]),width:Math.round(size.width*leftBounds[2]),height:Math.round(size.height*leftBounds[3])};renderRectR={x:Math.round(size.width*rightBounds[0]),y:Math.round(size.height*rightBounds[1]),width:Math.round(size.width*rightBounds[2]),height:Math.round(size.height*rightBounds[3])};if(renderTarget){renderer.setRenderTarget(renderTarget);renderTarget.scissorTest=!0}else{renderer.setRenderTarget(null);renderer.setScissorTest(!0)}
5012if(renderer.autoClear||forceClear)renderer.clear();if(camera.parent===null)camera.updateMatrixWorld();camera.matrixWorld.decompose(cameraL.position,cameraL.quaternion,cameraL.scale);cameraR.position.copy(cameraL.position);cameraR.quaternion.copy(cameraL.quaternion);cameraR.scale.copy(cameraL.scale);if(vrDisplay.getFrameData){vrDisplay.depthNear=camera.near;vrDisplay.depthFar=camera.far;vrDisplay.getFrameData(frameData);cameraL.projectionMatrix.elements=frameData.leftProjectionMatrix;cameraR.projectionMatrix.elements=frameData.rightProjectionMatrix;getEyeMatrices(frameData);cameraL.updateMatrix();cameraL.matrix.multiply(eyeMatrixL);cameraL.matrix.decompose(cameraL.position,cameraL.quaternion,cameraL.scale);cameraR.updateMatrix();cameraR.matrix.multiply(eyeMatrixR);cameraR.matrix.decompose(cameraR.position,cameraR.quaternion,cameraR.scale)}else{var eyeParamsL=vrDisplay.getEyeParameters('left');var eyeParamsR=vrDisplay.getEyeParameters('right');cameraL.projectionMatrix=fovToProjection(eyeParamsL.fieldOfView,!0,camera.near,camera.far);cameraR.projectionMatrix=fovToProjection(eyeParamsR.fieldOfView,!0,camera.near,camera.far);eyeTranslationL.fromArray(eyeParamsL.offset);eyeTranslationR.fromArray(eyeParamsR.offset);cameraL.translateOnAxis(eyeTranslationL,cameraL.scale.x);cameraR.translateOnAxis(eyeTranslationR,cameraR.scale.x)}
5013if(renderTarget){renderTarget.viewport.set(renderRectL.x,renderRectL.y,renderRectL.width,renderRectL.height);renderTarget.scissor.set(renderRectL.x,renderRectL.y,renderRectL.width,renderRectL.height)}else{renderer.setViewport(renderRectL.x,renderRectL.y,renderRectL.width,renderRectL.height);renderer.setScissor(renderRectL.x,renderRectL.y,renderRectL.width,renderRectL.height)}
5014renderer.render(scene,cameraL,renderTarget,forceClear);if(renderTarget){renderTarget.viewport.set(renderRectR.x,renderRectR.y,renderRectR.width,renderRectR.height);renderTarget.scissor.set(renderRectR.x,renderRectR.y,renderRectR.width,renderRectR.height)}else{renderer.setViewport(renderRectR.x,renderRectR.y,renderRectR.width,renderRectR.height);renderer.setScissor(renderRectR.x,renderRectR.y,renderRectR.width,renderRectR.height)}
5015renderer.render(scene,cameraR,renderTarget,forceClear);if(renderTarget){renderTarget.viewport.set(0,0,size.width,size.height);renderTarget.scissor.set(0,0,size.width,size.height);renderTarget.scissorTest=!1;renderer.setRenderTarget(null)}else{renderer.setViewport(0,0,size.width,size.height);renderer.setScissorTest(!1)}
5016if(autoUpdate){scene.autoUpdate=!0}
5017if(scope.autoSubmitFrame){scope.submitFrame()}
5018return}
5019renderer.render(scene,camera,renderTarget,forceClear)};this.dispose=function(){window.removeEventListener('vrdisplaypresentchange',onVRDisplayPresentChange,!1)};var poseOrientation=new Quaternion();var posePosition=new Vector3();function getEyeMatrices(frameData){if(frameData.pose.orientation){poseOrientation.fromArray(frameData.pose.orientation);headMatrix.makeRotationFromQuaternion(poseOrientation)}else{headMatrix.identity()}
5020if(frameData.pose.position){posePosition.fromArray(frameData.pose.position);headMatrix.setPosition(posePosition)}
5021eyeMatrixL.fromArray(frameData.leftViewMatrix);eyeMatrixL.multiply(headMatrix);eyeMatrixR.fromArray(frameData.rightViewMatrix);eyeMatrixR.multiply(headMatrix);eyeMatrixL.getInverse(eyeMatrixL);eyeMatrixR.getInverse(eyeMatrixR)}
5022function fovToNDCScaleOffset(fov){var pxscale=2.0/(fov.leftTan+fov.rightTan);var pxoffset=(fov.leftTan-fov.rightTan)*pxscale*0.5;var pyscale=2.0/(fov.upTan+fov.downTan);var pyoffset=(fov.upTan-fov.downTan)*pyscale*0.5;return{scale:[pxscale,pyscale],offset:[pxoffset,pyoffset]}}
5023function fovPortToProjection(fov,rightHanded,zNear,zFar){rightHanded=rightHanded===undefined?!0:rightHanded;zNear=zNear===undefined?0.01:zNear;zFar=zFar===undefined?10000.0:zFar;var handednessScale=rightHanded?-1.0:1.0;var mobj=new Matrix4();var m=mobj.elements;var scaleAndOffset=fovToNDCScaleOffset(fov);m[0*4+0]=scaleAndOffset.scale[0];m[0*4+1]=0.0;m[0*4+2]=scaleAndOffset.offset[0]*handednessScale;m[0*4+3]=0.0;m[1*4+0]=0.0;m[1*4+1]=scaleAndOffset.scale[1];m[1*4+2]=-scaleAndOffset.offset[1]*handednessScale;m[1*4+3]=0.0;m[2*4+0]=0.0;m[2*4+1]=0.0;m[2*4+2]=zFar/(zNear-zFar)*-handednessScale;m[2*4+3]=(zFar*zNear)/(zNear-zFar);m[3*4+0]=0.0;m[3*4+1]=0.0;m[3*4+2]=handednessScale;m[3*4+3]=0.0;mobj.transpose();return mobj}
5024function fovToProjection(fov,rightHanded,zNear,zFar){var DEG2RAD=Math.PI/180.0;var fovPort={upTan:Math.tan(fov.upDegrees*DEG2RAD),downTan:Math.tan(fov.downDegrees*DEG2RAD),leftTan:Math.tan(fov.leftDegrees*DEG2RAD),rightTan:Math.tan(fov.rightDegrees*DEG2RAD)};return fovPortToProjection(fovPort,rightHanded,zNear,zFar)}};var OrbitControls=function(object,domElement){this.object=object;this.domElement=(domElement!==undefined)?domElement:document;this.enabled=!0;this.target=new Vector3();this.minDistance=0;this.maxDistance=Infinity;this.minZoom=0;this.maxZoom=Infinity;this.minPolarAngle=0;this.maxPolarAngle=Math.PI;this.minAzimuthAngle=-Infinity;this.maxAzimuthAngle=Infinity;this.enableDamping=!1;this.dampingFactor=0.25;this.enableZoom=!0;this.zoomSpeed=1.0;this.enableRotate=!0;this.rotateSpeed=1.0;this.enablePan=!0;this.panSpeed=1.0;this.screenSpacePanning=!1;this.keyPanSpeed=7.0;this.autoRotate=!1;this.autoRotateSpeed=2.0;this.enableKeys=!0;this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};this.mouseButtons={ORBIT:MOUSE.LEFT,ZOOM:MOUSE.MIDDLE,PAN:MOUSE.RIGHT};this.target0=this.target.clone();this.position0=this.object.position.clone();this.zoom0=this.object.zoom;this.getPolarAngle=function(){return spherical.phi};this.getAzimuthalAngle=function(){return spherical.theta};this.saveState=function(){scope.target0.copy(scope.target);scope.position0.copy(scope.object.position);scope.zoom0=scope.object.zoom};this.reset=function(){scope.target.copy(scope.target0);scope.object.position.copy(scope.position0);scope.object.zoom=scope.zoom0;scope.object.updateProjectionMatrix();scope.dispatchEvent(changeEvent);scope.update();state=STATE.NONE};this.update=function(){var offset=new Vector3();var quat=new Quaternion().setFromUnitVectors(object.up,new Vector3(0,1,0));var quatInverse=quat.clone().inverse();var lastPosition=new Vector3();var lastQuaternion=new Quaternion();return function update(){var position=scope.object.position;offset.copy(position).sub(scope.target);offset.applyQuaternion(quat);spherical.setFromVector3(offset);if(scope.autoRotate&&state===STATE.NONE){scope.rotateLeft(getAutoRotationAngle())}
5025spherical.theta+=sphericalDelta.theta;spherical.phi+=sphericalDelta.phi;spherical.theta=Math.max(scope.minAzimuthAngle,Math.min(scope.maxAzimuthAngle,spherical.theta));spherical.phi=Math.max(scope.minPolarAngle,Math.min(scope.maxPolarAngle,spherical.phi));spherical.makeSafe();spherical.radius*=scale;spherical.radius=Math.max(scope.minDistance,Math.min(scope.maxDistance,spherical.radius));scope.target.add(panOffset);offset.setFromSpherical(spherical);offset.applyQuaternion(quatInverse);position.copy(scope.target).add(offset);scope.object.lookAt(scope.target);if(scope.enableDamping===!0){sphericalDelta.theta*=(1-scope.dampingFactor);sphericalDelta.phi*=(1-scope.dampingFactor);panOffset.multiplyScalar(1-scope.dampingFactor)}else{sphericalDelta.set(0,0,0);panOffset.set(0,0,0)}
5026scale=1;if(zoomChanged||lastPosition.distanceToSquared(scope.object.position)>EPS||8*(1-lastQuaternion.dot(scope.object.quaternion))>EPS){scope.dispatchEvent(changeEvent);lastPosition.copy(scope.object.position);lastQuaternion.copy(scope.object.quaternion);zoomChanged=!1;return!0}
5027return!1}}();this.dispose=function(){scope.domElement.removeEventListener('contextmenu',onContextMenu,!1);scope.domElement.removeEventListener('mousedown',onMouseDown,!1);scope.domElement.removeEventListener('wheel',onMouseWheel,!1);scope.domElement.removeEventListener('touchstart',onTouchStart,!1);scope.domElement.removeEventListener('touchend',onTouchEnd,!1);scope.domElement.removeEventListener('touchmove',onTouchMove,!1);document.removeEventListener('mousemove',onMouseMove,!1);document.removeEventListener('mouseup',onMouseUp,!1);window.removeEventListener('keydown',onKeyDown,!1)};var scope=this;var changeEvent={type:'change'};var startEvent={type:'start'};var endEvent={type:'end'};var STATE={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY_PAN:4};var state=STATE.NONE;var EPS=0.000001;var spherical=new Spherical();var sphericalDelta=new Spherical();var scale=1;var panOffset=new Vector3();var zoomChanged=!1;var rotateStart=new Vector2();var rotateEnd=new Vector2();var rotateDelta=new Vector2();var panStart=new Vector2();var panEnd=new Vector2();var panDelta=new Vector2();var dollyStart=new Vector2();var dollyEnd=new Vector2();var dollyDelta=new Vector2();function getAutoRotationAngle(){return 2*Math.PI/60/60*scope.autoRotateSpeed}
5028function getZoomScale(){return Math.pow(0.95,scope.zoomSpeed)}
5029scope.rotateLeft=function(angle){sphericalDelta.theta-=angle};scope.rotateUp=function(angle){sphericalDelta.phi-=angle};var panLeft=function(){var v=new Vector3();return function panLeft(distance,objectMatrix){v.setFromMatrixColumn(objectMatrix,0);v.multiplyScalar(-distance);panOffset.add(v)}}();var panUp=function(){var v=new Vector3();return function panUp(distance,objectMatrix){if(scope.screenSpacePanning===!0){v.setFromMatrixColumn(objectMatrix,1)}else{v.setFromMatrixColumn(objectMatrix,0);v.crossVectors(scope.object.up,v)}
5030v.multiplyScalar(distance);panOffset.add(v)}}();var pan=function(){var offset=new Vector3();return function pan(deltaX,deltaY){var element=scope.domElement===document?scope.domElement.body:scope.domElement;if(scope.object.isPerspectiveCamera){var position=scope.object.position;offset.copy(position).sub(scope.target);var targetDistance=offset.length();targetDistance*=Math.tan((scope.object.fov/2)*Math.PI/180.0);panLeft(2*deltaX*targetDistance/element.clientHeight,scope.object.matrix);panUp(2*deltaY*targetDistance/element.clientHeight,scope.object.matrix)}else if(scope.object.isOrthographicCamera){panLeft(deltaX*(scope.object.right-scope.object.left)/scope.object.zoom/element.clientWidth,scope.object.matrix);panUp(deltaY*(scope.object.top-scope.object.bottom)/scope.object.zoom/element.clientHeight,scope.object.matrix)}else{console.warn('WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.');scope.enablePan=!1}}}();function dollyIn(dollyScale){if(scope.object.isPerspectiveCamera){scale/=dollyScale}else if(scope.object.isOrthographicCamera){scope.object.zoom=Math.max(scope.minZoom,Math.min(scope.maxZoom,scope.object.zoom*dollyScale));scope.object.updateProjectionMatrix();zoomChanged=!0}else{console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');scope.enableZoom=!1}}
5031function dollyOut(dollyScale){if(scope.object.isPerspectiveCamera){scale*=dollyScale}else if(scope.object.isOrthographicCamera){scope.object.zoom=Math.max(scope.minZoom,Math.min(scope.maxZoom,scope.object.zoom/dollyScale));scope.object.updateProjectionMatrix();zoomChanged=!0}else{console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');scope.enableZoom=!1}}
5032function handleMouseDownRotate(event){rotateStart.set(event.clientX,event.clientY)}
5033function handleMouseDownDolly(event){dollyStart.set(event.clientX,event.clientY)}
5034function handleMouseDownPan(event){panStart.set(event.clientX,event.clientY)}
5035function handleMouseMoveRotate(event){rotateEnd.set(event.clientX,event.clientY);rotateDelta.subVectors(rotateEnd,rotateStart).multiplyScalar(scope.rotateSpeed);var element=scope.domElement===document?scope.domElement.body:scope.domElement;scope.rotateLeft(2*Math.PI*rotateDelta.x/element.clientHeight);scope.rotateUp(2*Math.PI*rotateDelta.y/element.clientHeight);rotateStart.copy(rotateEnd);
5035scope.update()}
5036function handleMouseMoveDolly(event){dollyEnd.set(event.clientX,event.clientY);dollyDelta.subVectors(dollyEnd,dollyStart);if(dollyDelta.y>0){dollyIn(getZoomScale())}else if(dollyDelta.y<0){dollyOut(getZoomScale())}
5037dollyStart.copy(dollyEnd);scope.update()}
5038function handleMouseMovePan(event){panEnd.set(event.clientX,event.clientY);panDelta.subVectors(panEnd,panStart).multiplyScalar(scope.panSpeed);pan(panDelta.x,panDelta.y);panStart.copy(panEnd);scope.update()}
5039function handleMouseWheel(event){if(event.deltaY<0){dollyOut(getZoomScale())}else if(event.deltaY>0){dollyIn(getZoomScale())}
5040scope.update()}
5041function handleKeyDown(event){switch(event.keyCode){case scope.keys.UP:pan(0,scope.keyPanSpeed);scope.update();break;case scope.keys.BOTTOM:pan(0,-scope.keyPanSpeed);scope.update();break;case scope.keys.LEFT:pan(scope.keyPanSpeed,0);scope.update();break;case scope.keys.RIGHT:pan(-scope.keyPanSpeed,0);scope.update();break}}
5042function handleTouchStartRotate(event){rotateStart.set(event.touches[0].pageX,event.touches[0].pageY)}
5043function handleTouchStartDollyPan(event){if(scope.enableZoom){var dx=event.touches[0].pageX-event.touches[1].pageX;var dy=event.touches[0].pageY-event.touches[1].pageY;var distance=Math.sqrt(dx*dx+dy*dy);dollyStart.set(0,distance)}
5044if(scope.enablePan){var x=0.5*(event.touches[0].pageX+event.touches[1].pageX);var y=0.5*(event.touches[0].pageY+event.touches[1].pageY);panStart.set(x,y)}}
5045function handleTouchMoveRotate(event){rotateEnd.set(event.touches[0].pageX,event.touches[0].pageY);rotateDelta.subVectors(rotateEnd,rotateStart).multiplyScalar(scope.rotateSpeed);var element=scope.domElement===document?scope.domElement.body:scope.domElement;scope.rotateLeft(2*Math.PI*rotateDelta.x/element.clientHeight);scope.rotateUp(2*Math.PI*rotateDelta.y/element.clientHeight);rotateStart.copy(rotateEnd);scope.update()}
5046function handleTouchMoveDollyPan(event){if(scope.enableZoom){var dx=event.touches[0].pageX-event.touches[1].pageX;var dy=event.touches[0].pageY-event.touches[1].pageY;var distance=Math.sqrt(dx*dx+dy*dy);dollyEnd.set(0,distance);dollyDelta.set(0,Math.pow(dollyEnd.y/dollyStart.y,scope.zoomSpeed));dollyIn(dollyDelta.y);dollyStart.copy(dollyEnd)}
5047if(scope.enablePan){var x=0.5*(event.touches[0].pageX+event.touches[1].pageX);var y=0.5*(event.touches[0].pageY+event.touches[1].pageY);panEnd.set(x,y);panDelta.subVectors(panEnd,panStart).multiplyScalar(scope.panSpeed);pan(panDelta.x,panDelta.y);panStart.copy(panEnd)}
5048scope.update()}
5049function onMouseDown(event){if(scope.enabled===!1)return;event.preventDefault();switch(event.button){case scope.mouseButtons.ORBIT:if(scope.enableRotate===!1)return;handleMouseDownRotate(event);state=STATE.ROTATE;break;case scope.mouseButtons.ZOOM:if(scope.enableZoom===!1)return;handleMouseDownDolly(event);state=STATE.DOLLY;break;case scope.mouseButtons.PAN:if(scope.enablePan===!1)return;handleMouseDownPan(event);state=STATE.PAN;break}
5050if(state!==STATE.NONE){document.addEventListener('mousemove',onMouseMove,!1);document.addEventListener('mouseup',onMouseUp,!1);scope.dispatchEvent(startEvent)}}
5051function onMouseMove(event){if(scope.enabled===!1)return;event.preventDefault();switch(state){case STATE.ROTATE:if(scope.enableRotate===!1)return;handleMouseMoveRotate(event);break;case STATE.DOLLY:if(scope.enableZoom===!1)return;handleMouseMoveDolly(event);break;case STATE.PAN:if(scope.enablePan===!1)return;handleMouseMovePan(event);break}}
5052function onMouseUp(event){if(scope.enabled===!1)return;document.removeEventListener('mousemove',onMouseMove,!1);document.removeEventListener('mouseup',onMouseUp,!1);scope.dispatchEvent(endEvent);state=STATE.NONE}
5053function onMouseWheel(event){if(scope.enabled===!1||scope.enableZoom===!1||(state!==STATE.NONE&&state!==STATE.ROTATE))return;event.preventDefault();event.stopPropagation();scope.dispatchEvent(startEvent);handleMouseWheel(event);scope.dispatchEvent(endEvent)}
5054function onKeyDown(event){if(scope.enabled===!1||scope.enableKeys===!1||scope.enablePan===!1)return;handleKeyDown(event)}
5055function onTouchStart(event){if(scope.enabled===!1)return;event.preventDefault();switch(event.touches.length){case 1:if(scope.enableRotate===!1)return;handleTouchStartRotate(event);state=STATE.TOUCH_ROTATE;break;case 2:if(scope.enableZoom===!1&&scope.enablePan===!1)return;handleTouchStartDollyPan(event);state=STATE.TOUCH_DOLLY_PAN;break;default:state=STATE.NONE}
5056if(state!==STATE.NONE){scope.dispatchEvent(startEvent)}}
5057function onTouchMove(event){if(scope.enabled===!1)return;event.preventDefault();event.stopPropagation();switch(event.touches.length){case 1:if(scope.enableRotate===!1)return;if(state!==STATE.TOUCH_ROTATE)return;handleTouchMoveRotate(event);break;case 2:if(scope.enableZoom===!1&&scope.enablePan===!1)return;if(state!==STATE.TOUCH_DOLLY_PAN)return;handleTouchMoveDollyPan(event);break;default:state=STATE.NONE}}
5058function onTouchEnd(event){if(scope.enabled===!1)return;scope.dispatchEvent(endEvent);state=STATE.NONE}
5059function onContextMenu(event){if(scope.enabled===!1)return;event.preventDefault()}
5060scope.domElement.addEventListener('mousedown',onMouseDown,!1);scope.domElement.addEventListener('wheel',onMouseWheel,!1);scope.domElement.addEventListener('touchstart',onTouchStart,!1);scope.domElement.addEventListener('touchend',onTouchEnd,!1);scope.domElement.addEventListener('touchmove',onTouchMove,!1);window.addEventListener('keydown',onKeyDown,!1);this.update()};OrbitControls.prototype=Object.create(EventDispatcher.prototype);OrbitControls.prototype.constructor=OrbitControls;Object.defineProperties(OrbitControls.prototype,{center:{get:function(){console.warn('OrbitControls: .center has been renamed to .target');return this.target}},noZoom:{get:function(){console.warn('OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.');return!this.enableZoom},set:function(value){console.warn('OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.');this.enableZoom=!value}},noRotate:{get:function(){console.warn('OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.');return!this.enableRotate},set:function(value){console.warn('OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.');this.enableRotate=!value}},noPan:{get:function(){console.warn('OrbitControls: .noPan has been deprecated. Use .enablePan instead.');return!this.enablePan},set:function(value){console.warn('OrbitControls: .noPan has been deprecated. Use .enablePan instead.');this.enablePan=!value}},noKeys:{get:function(){console.warn('OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.');return!this.enableKeys},set:function(value){console.warn('OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.');this.enableKeys=!value}},staticMoving:{get:function(){console.warn('OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.');return!this.enableDamping},set:function(value){console.warn('OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.');this.enableDamping=!value}},dynamicDampingFactor:{get:function(){console.warn('OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.');return this.dampingFactor},set:function(value){console.warn('OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.');this.dampingFactor=value}}});var DeviceOrientationControls=function(object){var scope=this;this.object=object;this.object.rotation.reorder('YXZ');this.enabled=!0;this.deviceOrientation={};this.screenOrientation=0;this.alphaOffset=0;var onDeviceOrientationChangeEvent=function(event){scope.deviceOrientation=event};var onScreenOrientationChangeEvent=function(){scope.screenOrientation=window.orientation||0};var setObjectQuaternion=function(){var zee=new Vector3(0,0,1);var euler=new Euler();var q0=new Quaternion();var q1=new Quaternion(-Math.sqrt(0.5),0,0,Math.sqrt(0.5));return function(quaternion,alpha,beta,gamma,orient){euler.set(beta,alpha,-gamma,'YXZ');quaternion.setFromEuler(euler);quaternion.multiply(q1);quaternion.multiply(q0.setFromAxisAngle(zee,-orient))}}();this.connect=function(){onScreenOrientationChangeEvent();window.addEventListener('orientationchange',onScreenOrientationChangeEvent,!1);window.addEventListener('deviceorientation',onDeviceOrientationChangeEvent,!1);scope.enabled=!0};this.disconnect=function(){window.removeEventListener('orientationchange',onScreenOrientationChangeEvent,!1);window.removeEventListener('deviceorientation',onDeviceOrientationChangeEvent,!1);scope.enabled=!1};this.update=function(){if(scope.enabled===!1)return;var device=scope.deviceOrientation;if(device){var alpha=device.alpha?_Math.degToRad(device.alpha)+scope.alphaOffset:0;var beta=device.beta?_Math.degToRad(device.beta):0;var gamma=device.gamma?_Math.degToRad(device.gamma):0;var orient=scope.screenOrientation?_Math.degToRad(scope.screenOrientation):0;setObjectQuaternion(scope.object.quaternion,alpha,beta,gamma,orient)}};this.dispose=function(){scope.disconnect()};this.connect()};function Quat2Angle(x,y,z,w){var test=x*y+z*w;if(test>0.499){var _yaw=2*Math.atan2(x,w);var _pitch=Math.PI/2;var _roll=0;return new Vector3(_pitch,_roll,_yaw)}
5061if(test<-0.499){var _yaw2=-2*Math.atan2(x,w);var _pitch2=-Math.PI/2;var _roll2=0;return new Vector3(_pitch2,_roll2,_yaw2)}
5062var sqx=x*x;var sqy=y*y;var sqz=z*z;var yaw=Math.atan2(2*y*w-2*x*z,1-2*sqy-2*sqz);var pitch=Math.asin(2*test);var roll=Math.atan2(2*x*w-2*y*z,1-2*sqx-2*sqz);return new Vector3(pitch,roll,yaw)}
5063var OrbitOrientationControls=function(){function OrbitOrientationControls(options){this.object=options.camera;this.domElement=options.canvas;
5063this.orbit=new OrbitControls(this.object,this.domElement);this.speed=0.5;this.orbit.target.set(0,0,-1);this.orbit.enableZoom=!1;this.orbit.enablePan=!1;this.orbit.rotateSpeed=-this.speed;if(options.orientation){this.orientation=new DeviceOrientationControls(this.object)}
5064if(options.halfView){this.orbit.minAzimuthAngle=-Math.PI/4;this.orbit.maxAzimuthAngle=Math.PI/4}}
5065var _proto=OrbitOrientationControls.prototype;_proto.update=function update(){if(this.orientation){this.orientation.update();var quat=this.orientation.object.quaternion;var currentAngle=Quat2Angle(quat.x,quat.y,quat.z,quat.w);if(typeof this.lastAngle_==='undefined'){this.lastAngle_=currentAngle}
5066this.orbit.rotateLeft((this.lastAngle_.z-currentAngle.z)*(1+this.speed));this.orbit.rotateUp((this.lastAngle_.y-currentAngle.y)*(1+this.speed));this.lastAngle_=currentAngle}
5067this.orbit.update()};_proto.dispose=function dispose(){this.orbit.dispose();if(this.orientation){this.orientation.dispose()}};return OrbitOrientationControls}();var corsSupport=function(){var video=document$1.createElement('video');video.crossOrigin='anonymous';return video.hasAttribute('crossorigin')}();var validProjections=['360','360_LR','360_TB','360_CUBE','EAC','EAC_LR','NONE','AUTO','Sphere','Cube','equirectangular','180','180_LR','180_MONO'];var getInternalProjectionName=function getInternalProjectionName(projection){if(!projection){return}
5068projection=projection.toString().trim();if(/sphere/i.test(projection)){return'360'}
5069if(/cube/i.test(projection)){return'360_CUBE'}
5070if(/equirectangular/i.test(projection)){return'360'}
5071for(var i=0;i<validProjections.length;i++){if(new RegExp('^'+validProjections[i]+'$','i').test(projection)){return validProjections[i]}}};var CanvasPlayerControls=function(_videojs$EventTarget){inheritsLoose(CanvasPlayerControls,_videojs$EventTarget);function CanvasPlayerControls(player,canvas){var _this;_this=_videojs$EventTarget.call(this)||this;_this.player=player;_this.canvas=canvas;_this.onMoveEnd=videojs.bind(assertThisInitialized(_this),_this.onMoveEnd);_this.onMoveStart=videojs.bind(assertThisInitialized(_this),_this.onMoveStart);_this.onMove=videojs.bind(assertThisInitialized(_this),_this.onMove);_this.onControlBarMove=videojs.bind(assertThisInitialized(_this),_this.onControlBarMove);_this.player.controlBar.on(['mousedown','mousemove','mouseup','touchstart','touchmove','touchend'],_this.onControlBarMove);_this.oldReportUserActivity=_this.player.reportUserActivity;_this.player.reportUserActivity=function(){};_this.canvas.addEventListener('mousedown',_this.onMoveStart);_this.canvas.addEventListener('touchstart',_this.onMoveStart);_this.canvas.addEventListener('mousemove',_this.onMove);_this.canvas.addEventListener('touchmove',_this.onMove);_this.canvas.addEventListener('mouseup',_this.onMoveEnd);_this.canvas.addEventListener('touchend',_this.onMoveEnd);_this.shouldTogglePlay=!1;return _this}
5072var _proto=CanvasPlayerControls.prototype;_proto.togglePlay=function togglePlay(){if(this.player.paused()){this.player.play()}else{this.player.pause()}};_proto.onMoveStart=function onMoveStart(e){if(!this.player.controls()||e.type==='mousedown'&&!videojs.dom.isSingleLeftClick(e)){this.shouldTogglePlay=!1;return}
5073this.shouldTogglePlay=!0;this.touchMoveCount_=0};_proto.onMoveEnd=function onMoveEnd(e){if(e.type==='touchend'&&this.touchMoveCount_<10){if(this.player.userActive()===!1){this.player.userActive(!0);return}
5074this.player.userActive(!1);return}
5075if(!this.shouldTogglePlay){return}
5076if(e.type=='mouseup'){this.togglePlay()}};_proto.onMove=function onMove(e){this.touchMoveCount_++;this.shouldTogglePlay=!1};_proto.onControlBarMove=function onControlBarMove(e){this.player.userActive(!0)};_proto.dispose=function dispose(){this.canvas.removeEventListener('mousedown',this.onMoveStart);this.canvas.removeEventListener('touchstart',this.onMoveStart);this.canvas.removeEventListener('mousemove',this.onMove);this.canvas.removeEventListener('touchmove',this.onMove);this.canvas.removeEventListener('mouseup',this.onMoveEnd);this.canvas.removeEventListener('touchend',this.onMoveEnd);this.player.controlBar.off(['mousedown','mousemove','mouseup','touchstart','touchmove','touchend'],this.onControlBarMove);this.player.reportUserActivity=this.oldReportUserActivity};return CanvasPlayerControls}(videojs.EventTarget);var OmnitoneController=function(_videojs$EventTarget){inheritsLoose(OmnitoneController,_videojs$EventTarget);function OmnitoneController(audioContext,omnitone,video,options){var _this;_this=_videojs$EventTarget.call(this)||this;var settings=videojs.mergeOptions({channelMap:videojs.browser.IS_SAFARI?[2,0,1,3]:[0,1,2,3],ambisonicOrder:1},options);_this.videoElementSource=audioContext.createMediaElementSource(video);_this.foaRenderer=omnitone.createFOARenderer(audioContext,settings);_this.foaRenderer.initialize().then(function(){if(audioContext.state==='suspended'){_this.trigger({type:'audiocontext-su
5076spended'})}
5077_this.videoElementSource.connect(_this.foaRenderer.input);_this.foaRenderer.output.connect(audioContext.destination);_this.initialized=!0;_this.trigger({type:'omnitone-ready'})},function(error){videojs.log.warn("videojs-vr: Omnitone initializes failed with the following error: "+error+")")});return _this}
5078var _proto=OmnitoneController.prototype;_proto.update=function update(camera){if(!this.initialized){return}
5079this.foaRenderer.setRotationMatrixFromCamera(camera.matrix)};_proto.dispose=function dispose(){this.initialized=!1;this.foaRenderer.setRenderingMode('bypass');this.foaRenderer=null};return OmnitoneController}(videojs.EventTarget);var Button=videojs.getComponent('Button');var CardboardButton=function(_Button){inheritsLoose(CardboardButton,_Button);function CardboardButton(player,options){var _this;_this=_Button.call(this,player,options)||this;_this.handleVrDisplayActivate_=videojs.bind(assertThisInitialized(_this),_this.handleVrDisplayActivate_);_this.handleVrDisplayDeactivate_=videojs.bind(assertThisInitialized(_this),_this.handleVrDisplayDeactivate_);_this.handleVrDisplayPresentChange_=videojs.bind(assertThisInitialized(_this),_this.handleVrDisplayPresentChange_);_this.handleOrientationChange_=videojs.bind(assertThisInitialized(_this),_this.handleOrientationChange_);window$1.addEventListener('orientationchange',_this.handleOrientationChange_);window$1.addEventListener('vrdisplayactivate',_this.handleVrDisplayActivate_);window$1.addEventListener('vrdisplaydeactivate',_this.handleVrDisplayDeactivate_);window$1.addEventListener('vrdisplaypresentchange',_this.handleVrDisplayPresentChange_);if(videojs.browser.IS_ANDROID){_this.on(player,'fullscreenchange',function(){if(player.isFullscreen()){_this.hide()}else{_this.show()}})}
5080return _this}
5081var _proto=CardboardButton.prototype;_proto.buildCSSClass=function buildCSSClass(){return"vjs-button-vr "+_Button.prototype.buildCSSClass.call(this)};_proto.handleVrDisplayPresentChange_=function handleVrDisplayPresentChange_(){if(!this.player_.vr().vrDisplay.isPresenting&&this.active_){this.handleVrDisplayDeactivate_()}
5082if(this.player_.vr().vrDisplay.isPresenting&&!this.active_){this.handleVrDisplayActivate_()}};_proto.handleOrientationChange_=function handleOrientationChange_(){if(this.active_&&videojs.browser.IS_IOS){this.changeSize_()}};_proto.changeSize_=function changeSize_(){this.player_.width(window$1.innerWidth);this.player_.height(window$1.innerHeight);window$1.dispatchEvent(new window$1.Event('resize'))};_proto.handleVrDisplayActivate_=function handleVrDisplayActivate_(){if(videojs.browser.IS_IOS){this.oldWidth_=this.player_.currentWidth();this.oldHeight_=this.player_.currentHeight();this.player_.enterFullWindow();this.changeSize_()}
5083this.active_=!0};_proto.handleVrDisplayDeactivate_=function handleVrDisplayDeactivate_(){if(videojs.browser.IS_IOS){if(this.oldWidth_){this.player_.width(this.oldWidth_)}
5084if(this.oldHeight_){this.player_.height(this.oldHeight_)}
5085this.player_.exitFullWindow()}
5086this.active_=!1};_proto.handleClick=function handleClick(event){if(!this.active_){if(!this.player_.hasStarted()&&videojs.browser.IS_ANDROID){this.player_.play()}
5087window$1.dispatchEvent(new window$1.Event('vrdisplayactivate'))}else{window$1.dispatchEvent(new window$1.Event('vrdisplaydeactivate'))}};_proto.dispose=function dispose(){_Button.prototype.dispose.call(this);window$1.removeEventListener('vrdisplayactivate',this.handleVrDisplayActivate_);window$1.removeEventListener('vrdisplaydeactivate',this.handleVrDisplayDeactivate_);window$1.removeEventListener('vrdisplaypresentchange',this.handleVrDisplayPresentChange_)};return CardboardButton}(Button);videojs.registerComponent('CardboardButton',CardboardButton);var BigPlayButton=videojs.getComponent('BigPlayButton');var BigVrPlayButton=function(_BigPlayButton){inheritsLoose(BigVrPlayButton,_BigPlayButton);function BigVrPlayButton(){return _BigPlayButton.apply(this,arguments)||this}
5088var _proto=BigVrPlayButton.prototype;_proto.buildCSSClass=function buildCSSClass(){return"vjs-big-vr-play-button "+_BigPlayButton.prototype.buildCSSClass.call(this)};return BigVrPlayButton}(BigPlayButton);videojs.registerComponent('BigVrPlayButton',BigVrPlayButton);var defaults={debug:!1,omnitone:!1,forceCardboard:!1,omnitoneOptions:{},projection:'AUTO',sphereDetail:32};var errors={'web-vr-out-of-date':{headline:'360 is out of date',type:'360_OUT_OF_DATE',message:"Your browser supports 360 but not the latest version. See <a href='http://webvr.info'>http://webvr.info</a> for more info."},'web-vr-not-supported':{headline:'360 not supported on this device',type:'360_NOT_SUPPORTED',message:"Your browser does not support 360. See <a href='http://webvr.info'>http://webvr.info</a> for assistance."},'web-vr-hls-cors-not-supported':{headline:'360 HLS video not supported on this device',type:'360_NOT_SUPPORTED',message:"Your browser/device does not support HLS 360 video. See <a href='http://webvr.info'>http://webvr.info</a> for assistance."}};var Plugin=videojs.getPlugin('plugin');var Component=videojs.getComponent('Component');var VR=function(_Plugin){inheritsLoose(VR,_Plugin);function VR(player,options){var _this;var settings=videojs.mergeOptions(defaults,options);_this=_Plugin.call(this,player,settings)||this;_this.options_=settings;_this.player_=player;_this.bigPlayButtonIndex_=player.children().indexOf(player.getChild('BigPlayButton'))||0;_this.videojsErrorsSupport_=!!videojs.errors;if(_this.videojsErrorsSupport_){player.errors({errors:errors})}
5089if(videojs.browser.IE_VERSION||!corsSupport){_this.player_.on('loadstart',function(){_this.triggerError_({code:'web-vr-not-supported',dismiss:!1})});return assertThisInitialized(_this)}
5090_this.polyfill_=new WebVRPolyfill({ROTATE_INSTRUCTIONS_DISABLED:!0});_this.polyfill_=new WebVRPolyfill();_this.handleVrDisplayActivate_=videojs.bind(assertThisInitialized(_this),_this.handleVrDisplayActivate_);_this.handleVrDisplayDeactivate_=videojs.bind(assertThisInitialized(_this),_this.handleVrDisplayDeactivate_);_this.handleResize_=videojs.bind(assertThisInitialized(_this),_this.handleResize_);_this.animate_=videojs.bind(assertThisInitialized(_this),_this.animate_);_this.setProjection(_this.options_.projection);_this.on(player,'adstart',function(){return player.setTimeout(function(){if(!player.ads||!player.ads.videoElementRecycled()){_this.log('video element not recycled for this ad, no need to reset');return}
5091_this.log('video element recycled for this ad, reseting');_this.reset();_this.one(player,'playing',_this.init)})},1);_this.on(player,'loadedmetadata',_this.init);return _this}
5092var _proto=VR.prototype;_proto.changeProjection_=function changeProjection_(projection){var _this2=this;projection=getInternalProjectionName(projection);if(!projection){projection='NONE'}
5093var position={x:0,y:0,z:0};if(this.scene){this.scene.remove(this.movieScreen)}
5094if(projection==='AUTO'){if(this.player_.mediainfo&&this.player_.mediainfo.projection&&this.player_.mediainfo.projection!=='AUTO'){var autoProjection=getInternalProjectionName(this.player_.mediainfo.projection);return this.changeProjection_(autoProjection)}
5095return this.changeProjection_('NONE')}else if(projection==='360'){this.movieGeometry=new SphereBufferGeometry(256,this.options_.sphereDetail,this.options_.sphereDetail);this.movieMaterial=new MeshBasicMaterial({map:this.videoTexture,overdraw:!0,side:BackSide});this.movieScreen=new Mesh(this.movieGeometry,this.movieMaterial);this.movieScreen.position.set(position.x,position.y,position.z);this.movieScreen.scale.x=-1;this.movieScreen.quaternion.setFromAxisAngle({x:0,y:1,z:0},-Math.PI/2);this.scene.add(this.movieScreen)}else if(projection==='360_LR'||projection==='360_TB'){var geometry=new SphereGeometry(256,this.options_.sphereDetail,this.options_.sphereDetail);var uvs=geometry.faceVertexUvs[0];for(var i=0;i<uvs.length;i++){for(var j=0;j<3;j++){if(projection==='360_LR'){uvs[i][j].x*=0.5}else{uvs[i][j].y*=0.5;uvs[i][j].y+=0.5}}}
5096this.movieGeometry=new BufferGeometry().fromGeometry(geometry);this.movieMaterial=new MeshBasicMaterial({map:this.videoTexture,overdraw:!0,side:BackSide});this.movieScreen=new Mesh(this.movieGeometry,this.movieMaterial);this.movieScreen.scale.x=-1;this.movieScreen.quaternion.setFromAxisAngle({x:0,y:1,z:0},-Math.PI/2);this.movieScreen.layers.set(1);this.scene.add(this.movieScreen);geometry=new SphereGeometry(256,this.options_.sphereDetail,this.options_.sphereDetail);uvs=geometry.faceVertexUvs[0];for(var _i=0;_i<uvs.length;_i++){for(var _j=0;_j<3;_j++){if(projection==='360_LR'){uvs[_i][_j].x*=0.5;uvs[_i][_j].x+=0.5}else{uvs[_i][_j].y*=0.5}}}
5097this.movieGeometry=new BufferGeometry().fromGeometry(geometry);this.movieMaterial=new MeshBasicMaterial({map:this.videoTexture,overdraw:!0,side:BackSide});this.movieScreen=new Mesh(this.movieGeometry,this.movieMaterial);this.movieScreen.scale.x=-1;this.movieScreen.quaternion.setFromAxisAngle({x:0,y:1,z:0},-Math.PI/2);this.movieScreen.layers.set(2);this.scene.add(this.movieScreen)}else if(projection==='360_CUBE'){this.movieGeometry=new BoxGeometry(256,256,256);this.movieMaterial=new MeshBasicMaterial({map:this.videoTexture,overdraw:!0,side:BackSide});var left=[new Vector2(0,0.5),new Vector2(0.333,0.5),new Vector2(0.333,1),new Vector2(0,1)];var right=[new Vector2(0.333,0.5),new Vector2(0.666,0.5),new Vector2(0.666,1),new Vector2(0.333,1)];var top=[new Vector2(0.666,0.5),new Vector2(1,0.5),new Vector2(1,1),new Vector2(0.666,1)];var bottom=[new Vector2(0,0),new Vector2(0.333,0),new Vector2(0.333,0.5),new Vector2(0,0.5)];var front=[new Vector2(0.333,0),new Vector2(0.666,0),new Vector2(0.666,0.5),new Vector2(0.333,0.5)];var back=[new Vector2(0.666,0),new Vector2(1,0),new Vector2(1,0.5),new Vector2(0.666,0.5)];this.movieGeometry.faceVertexUvs[0]=[];this.movieGeometry.faceVertexUvs[0][0]=[right[2],right[1],right[3]];this.movieGeometry.faceVertexUvs[0][1]=[right[1],right[0],right[3]];this.movieGeometry.faceVertexUvs[0][2]=[left[2],left[1],left[3]];this.movieGeometry.faceVertexUvs[0][3]=[left[1],left[0],left[3]];this.movieGeometry.faceVertexUvs[0][4]=[top[2],top[1],top[3]];this.movieGeometry.faceVertexUvs[0][5]=[top[1],top[0],top[3]];this.movieGeometry.faceVertexUvs[0][6]=[bottom[2],bottom[1],bottom[3]];this.movieGeometry.faceVertexUvs[0][7]=[bottom[1],bottom[0],bottom[3]];this.movieGeometry.faceVertexUvs[0][8]=[front[2],front[1],front[3]];this.movieGeometry.faceVertexUvs[0][9]=[front[1],front[0],front[3]];this.movieGeometry.faceVertexUvs[0][10]=[back[2],back[1],back[3]];this.movieGeometry.faceVertexUvs[0][11]=[back[1],back[0],back[3]];this.movieScreen=new Mesh(this.movieGeometry,this.movieMaterial);this.movieScreen.position.set(position.x,position.y,position.z);this.movieScreen.rotation.y=-Math.PI;this.scene.add(this.movieScreen)}else if(projection==='180'||projection==='180_LR'||projection==='180_MONO'){var _geometry=new SphereGeometry(256,this.options_.sphereDetail,this.options_.sphereDetail,Math.PI,Math.PI);_geometry.scale(-1,1,1);var _uvs=_geometry.faceVertexUvs[0];if(projection!=='180_MONO'){for(var _i2=0;_i2<_uvs.length;_i2++){for(var _j2=0;_j2<3;_j2++){_uvs[_i2][_j2].x*=0.5}}}
5098this.movieGeometry=new BufferGeometry().fromGeometry(_geometry);this.movieMaterial=new MeshBasicMaterial({map:this.videoTexture,overdraw:!0});this.movieScreen=new Mesh(this.movieGeometry,this.movieMaterial);this.movieScreen.layers.set(1);this.scene.add(this.movieScreen);_geometry=new SphereGeometry(256,this.options_.sphereDetail,this.options_.sphereDetail,Math.PI,Math.PI);_geometry.scale(-1,1,1);_uvs=_geometry.faceVertexUvs[0];for(var _i3=0;_i3<_uvs.length;_i3++){for(var _j3=0;_j3<3;_j3++){_uvs[_i3][_j3].x*=0.5;_uvs[_i3][_j3].x+=0.5}}
5099this.movieGeometry=new BufferGeometry().fromGeometry(_geometry);this.movieMaterial=new MeshBasicMaterial({map:this.videoTexture,overdraw:!0});this.movieScreen=new Mesh(this.movieGeometry,this.movieMaterial);this.movieScreen.layers.set(2);this.scene.add(this.movieScreen)}else if(projection==='EAC'||projection==='EAC_LR'){var makeScreen=function makeScreen(mapMatrix,scaleMatrix){var contCorrect=2;_this2.movieGeometry=new BoxGeometry(256,256,256);_this2.movieMaterial=new ShaderMaterial({overdraw:!0,side:BackSide,uniforms:{mapped:{value:_this2.videoTexture},mapMatrix:{value:mapMatrix},contCorrect:{value:contCorrect},faceWH:{value:new Vector2(1/3,1/2).applyMatrix3(scaleMatrix)},vidWH:{value:new Vector2(_this2.videoTexture.image.videoWidth,_this2.videoTexture.image.videoHeight).applyMatrix3(scaleMatrix)}},vertexShader:"\nvarying vec2 vUv;\nuniform mat3 mapMatrix;\n\nvoid main() {\n  vUv = (mapMatrix * vec3(uv, 1.)).xy;\n  gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.);\n}",fragmentShader:"\nvarying vec2 vUv;\nuniform sampler2D mapped;\nuniform vec2 faceWH;\nuniform vec2 vidWH;\nuniform float contCorrect;\n\nconst float PI = 3.1415926535897932384626433832795;\n\nvoid main() {\n  vec2 corner = vUv - mod(vUv, faceWH) + vec2(0, c
5099ontCorrect / vidWH.y);\n\n  vec2 faceWHadj = faceWH - vec2(0, contCorrect * 2. / vidWH.y);\n\n  vec2 p = (vUv - corner) / faceWHadj - .5;\n  vec2 q = 2. / PI * atan(2. * p) + .5;\n\n  vec2 eUv = corner + q * faceWHadj;\n\n  gl_FragColor = texture2D(mapped, eUv);\n}"});var right=[new Vector2(0,1/2),new Vector2(1/3,1/2),new Vector2(1/3,1),new Vector2(0,1)];var front=[new Vector2(1/3,1/2),new Vector2(2/3,1/2),new Vector2(2/3,1),new Vector2(1/3,1)];var left=[new Vector2(2/3,1/2),new Vector2(1,1/2),new Vector2(1,1),new Vector2(2/3,1)];var bottom=[new Vector2(1/3,0),new Vector2(1/3,1/2),new Vector2(0,1/2),new Vector2(0,0)];var back=[new Vector2(1/3,1/2),new Vector2(1/3,0),new Vector2(2/3,0),new Vector2(2/3,1/2)];var top=[new Vector2(1,0),new Vector2(1,1/2),new Vector2(2/3,1/2),new Vector2(2/3,0)];for(var _i4=0,_arr=[right,front,left,bottom,back,top];_i4<_arr.length;_i4++){var face=_arr[_i4];var height=_this2.videoTexture.image.videoHeight;var lowY=1;var highY=0;for(var _iterator=face,_isArray=Array.isArray(_iterator),_i5=0,_iterator=_isArray?_iterator:_iterator[Symbol.iterator]();;){var _ref;if(_isArray){if(_i5>=_iterator.length)break;_ref=_iterator[_i5++]}else{_i5=_iterator.next();if(_i5.done)break;_ref=_i5.value}
5100var vector=_ref;if(vector.y<lowY){lowY=vector.y}
5101if(vector.y>highY){highY=vector.y}}
5102for(var _iterator2=face,_isArray2=Array.isArray(_iterator2),_i6=0,_iterator2=_isArray2?_iterator2:_iterator2[Symbol.iterator]();;){var _ref2;if(_isArray2){if(_i6>=_iterator2.length)break;_ref2=_iterator2[_i6++]}else{_i6=_iterator2.next();if(_i6.done)break;_ref2=_i6.value}
5103var _vector=_ref2;if(Math.abs(_vector.y-lowY)<Number.EPSILON){_vector.y+=contCorrect/height}
5104if(Math.abs(_vector.y-highY)<Number.EPSILON){_vector.y-=contCorrect/height}
5105_vector.x=_vector.x/height*(height-contCorrect*2)+contCorrect/height}}
5106_this2.movieGeometry.faceVertexUvs[0]=[];_this2.movieGeometry.faceVertexUvs[0][0]=[right[2],right[1],right[3]];_this2.movieGeometry.faceVertexUvs[0][1]=[right[1],right[0],right[3]];_this2.movieGeometry.faceVertexUvs[0][2]=[left[2],left[1],left[3]];_this2.movieGeometry.faceVertexUvs[0][3]=[left[1],left[0],left[3]];_this2.movieGeometry.faceVertexUvs[0][4]=[top[2],top[1],top[3]];_this2.movieGeometry.faceVertexUvs[0][5]=[top[1],top[0],top[3]];_this2.movieGeometry.faceVertexUvs[0][6]=[bottom[2],bottom[1],bottom[3]];_this2.movieGeometry.faceVertexUvs[0][7]=[bottom[1],bottom[0],bottom[3]];_this2.movieGeometry.faceVertexUvs[0][8]=[front[2],front[1],front[3]];_this2.movieGeometry.faceVertexUvs[0][9]=[front[1],front[0],front[3]];_this2.movieGeometry.faceVertexUvs[0][10]=[back[2],back[1],back[3]];_this2.movieGeometry.faceVertexUvs[0][11]=[back[1],back[0],back[3]];_this2.movieScreen=new Mesh(_this2.movieGeometry,_this2.movieMaterial);_this2.movieScreen.position.set(position.x,position.y,position.z);_this2.movieScreen.rotation.y=-Math.PI;return _this2.movieScreen};if(projection==='EAC'){this.scene.add(makeScreen(new Matrix3(),new Matrix3()))}else{var scaleMatrix=new Matrix3().set(0,0.5,0,1,0,0,0,0,1);makeScreen(new Matrix3().set(0,-0.5,0.5,1,0,0,0,0,1),scaleMatrix);this.movieScreen.layers.set(1);this.scene.add(this.movieScreen);makeScreen(new Matrix3().set(0,-0.5,1,1,0,0,0,0,1),scaleMatrix);this.movieScreen.layers.set(2);this.scene.add(this.movieScreen)}}
5107this.currentProjection_=projection};_proto.triggerError_=function triggerError_(errorObj){if(this.videojsErrorsSupport_){this.player_.error(errorObj)}else{var div=document$1.createElement('div');div.innerHTML=errors[errorObj.code].message;var message=div.textContent||div.innerText||'';this.player_.error({code:errorObj.code,message:message})}};_proto.log=function log(){if(!this.options_.debug){return}
5108for(var _len=arguments.length,msgs=new Array(_len),_key=0;_key<_len;_key++){msgs[_key]=arguments[_key]}
5109msgs.forEach(function(msg){videojs.log('VR: ',msg)})};_proto.handleVrDisplayActivate_=function handleVrDisplayActivate_(){var _this3=this;if(!this.vrDisplay){return}
5110this.vrDisplay.requestPresent([{source:this.renderedCanvas}]).then(function(){if(!_this3.vrDisplay.cardboardUI_||!videojs.browser.IS_IOS){return}
5111var touches=[];var iosCardboardTouchStart_=function iosCardboardTouchStart_(e){for(var i=0;i<e.touches.length;i++){touches.push(e.touches[i])}};var iosCardboardTouchEnd_=function iosCardboardTouchEnd_(e){if(!touches.length){return}
5112touches.forEach(function(t){var simulatedClick=new window$1.MouseEvent('click',{screenX:t.screenX,screenY:t.screenY,clientX:t.clientX,clientY:t.clientY});_this3.renderedCanvas.dispatchEvent(simulatedClick)});touches=[]};_this3.renderedCanvas.addEventListener('touchstart',iosCardboardTouchStart_);_this3.renderedCanvas.addEventListener('touchend',iosCardboardTouchEnd_);_this3.iosRevertTouchToClick_=function(){_this3.renderedCanvas.removeEventListener('touchstart',iosCardboardTouchStart_);_this3.renderedCanvas.removeEventListener('touchend',iosCardboardTouchEnd_);_this3.iosRevertTouchToClick_=null}})};_proto.handleVrDisplayDeactivate_=function handleVrDisplayDeactivate_(){if(!this.vrDisplay||!this.vrDisplay.isPresenting){return}
5113if(this.iosRevertTouchToClick_){this.iosRevertTouchToClick_()}
5114this.vrDisplay.exitPresent()};_proto.requestAnimationFrame=function requestAnimationFrame(fn){if(this.vrDisplay){return this.vrDisplay.requestAnimationFrame(fn)}
5115return this.player_.requestAnimationFrame(fn)};_proto.cancelAnimationFrame=function cancelAnimationFrame(id){if(this.vrDisplay){return this.vrDisplay.cancelAnimationFrame(id)}
5116return this.player_.cancelAnimationFrame(id)};_proto.togglePlay_=function togglePlay_(){if(this.player_.paused()){this.player_.play()}else{this.player_.pause()}};_proto.animate_=function animate_(){if(!this.initialized_){return}
5117if(this.getVideoEl_().readyState===this.getVideoEl_().HAVE_ENOUGH_DATA){if(this.videoTexture){this.videoTexture.needsUpdate=!0}}
5118this.controls3d.update();if(this.omniController){this.omniController.update(this.camera)}
5119this.effect.render(this.scene,this.camera);if(window$1.navigator.getGamepads){var gamepads=window$1.navigator.getGamepads();for(var i=0;i<gamepads.length;++i){var gamepad=gamepads[i];if(!gamepad||!gamepad.timestamp||gamepad.timestamp===this.prevTimestamps_[i]){continue}
5120for(var j=0;j<gamepad.buttons.length;++j){if(gamepad.buttons[j].pressed){this.togglePlay_();this.prevTimestamps_[i]=gamepad.timestamp;break}}}}
5121this.camera.getWorldDirection(this.cameraVector);this.animationFrameId_=this.requestAnimationFrame(this.animate_)};_proto.handleResize_=function handleResize_(){var width=this.player_.currentWidth();var height=this.player_.currentHeight();this.effect.setSize(width,height,!1);this.camera.aspect=width/height;this.camera.updateProjectionMatrix()};_proto.setProjection=function setProjection(projection){if(!getInternalProjectionName(projection)){videojs.log.error('videojs-vr: please pass a valid projection '+validProjections.join(', '));return}
5122this.currentProjection_=projection;this.defaultProjection_=projection};_proto.init=function init(){var _this4=this;this.reset();this.camera=new PerspectiveCamera(75,this.player_.currentWidth()/this.player_.currentHeight(),1,1000);this.cameraVector=new Vector3();if(this.currentProjection_==='360_LR'||this.currentProjection_==='360_TB'||this.currentProjection_==='180'||this.currentProjection_==='180_LR'||this.currentProjection_==='180_MONO'||this.currentProjection_==='EAC_LR'){this.camera.layers.enable(1)}
5123this.scene=new Scene();this.videoTexture=new VideoTexture(this.getVideoEl_());this.videoTexture.generateMipmaps=!1;this.videoTexture.minFilter=LinearFilter;this.videoTexture.magFilter=LinearFilter;this.videoTexture.format=RGBFormat;this.changeProjection_(this.currentProjection_);if(this.currentProjection_==='NONE'){this.log('Projection is NONE, dont init');this.reset();return}
5124this.player_.removeChild('BigPlayButton');this.player_.addChild('BigVrPlayButton',{},this.bigPlayButtonIndex_);this.player_.bigPlayButton=this.player_.getChild('BigVrPlayButton');if(this.options_.forceCardboard||videojs.browser.IS_ANDROID||videojs.browser.IS_IOS){this.addCardboardButton_()}
5125if(videojs.browser.IS_IOS&&this.player_.controlBar&&this.player_.controlBar.fullscreenToggle){this.player_.controlBar.fullscreenToggle.hide()}
5126this.camera.position.set(0,0,0);this.renderer=new WebGLRenderer({devicePixelRatio:window$1.devicePixelRatio,alpha:!1,clearColor:0xffffff,antialias:!0});var webglContext=this.renderer.getContext('webgl');var oldTexImage2D=webglContext.texImage2D;webglContext.texImage2D=function(){try{for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++){args[_key2]=arguments[_key2]}
5127return oldTexImage2D.apply(webglContext,args)}catch(e){_this4.reset();_this4.player_.pause();_this4.triggerError_({code:'web-vr-hls-cors-not-supported',dismiss:!1});throw new Error(e)}};this.renderer.setSize(this.player_.currentWidth(),this.player_.currentHeight(),!1);this.effect=new VREffect(this.renderer);this.effect.setSize(this.player_.currentWidth(),this.player_.currentHeight(),!1);this.vrDisplay=null;this.prevTimestamps_=[];this.renderedCanvas=this.renderer.domElement;this.renderedCanvas.setAttribute('style','width: 100%; height: 100%; position: absolute; top:0;');var videoElStyle=this.getVideoEl_().style;this.player_.el().insertBefore(this.renderedCanvas,this.player_.el().firstChild);videoElStyle.zIndex='-1';videoElStyle.opacity='0';if(window$1.navigator.getVRDisplays){this.log('is supported, getting vr displays');window$1.navigator.getVRDisplays().then(function(displays){if(displays.length>0){_this4.log('Displays found',displays);_this4.vrDisplay=displays[0];if(!_this4.vrDisplay.isPolyfilled){_this4.log('Real HMD found using VRControl
5127s',_this4.vrDisplay);_this4.addCardboardButton_();_this4.controls3d=new VRControls(_this4.camera)}}
5128if(!_this4.controls3d){_this4.log('no HMD found Using Orbit & Orientation Controls');var options={camera:_this4.camera,canvas:_this4.renderedCanvas,halfView:_this4.currentProjection_.indexOf('180')===0,orientation:videojs.browser.IS_IOS||videojs.browser.IS_ANDROID||!1};if(_this4.options_.motionControls===!1){options.orientation=!1}
5129_this4.controls3d=new OrbitOrientationControls(options);_this4.canvasPlayerControls=new CanvasPlayerControls(_this4.player_,_this4.renderedCanvas)}
5130_this4.animationFrameId_=_this4.requestAnimationFrame(_this4.animate_)})}else if(window$1.navigator.getVRDevices){this.triggerError_({code:'web-vr-out-of-date',dismiss:!1})}else{this.triggerError_({code:'web-vr-not-supported',dismiss:!1})}
5131if(this.options_.omnitone){var audiocontext=AudioContext.getContext();this.omniController=new OmnitoneController(audiocontext,this.options_.omnitone,this.getVideoEl_(),this.options_.omnitoneOptions);this.omniController.one('audiocontext-suspended',function(){_this4.player.pause();_this4.player.one('playing',function(){audiocontext.resume()})})}
5132this.on(this.player_,'fullscreenchange',this.handleResize_);window$1.addEventListener('vrdisplaypresentchange',this.handleResize_,!0);window$1.addEventListener('resize',this.handleResize_,!0);window$1.addEventListener('vrdisplayactivate',this.handleVrDisplayActivate_,!0);window$1.addEventListener('vrdisplaydeactivate',this.handleVrDisplayDeactivate_,!0);this.initialized_=!0;this.trigger('initialized')};_proto.addCardboardButton_=function addCardboardButton_(){if(!this.player_.controlBar.getChild('CardboardButton')){this.player_.controlBar.addChild('CardboardButton',{})}};_proto.getVideoEl_=function getVideoEl_(){return this.player_.el().getElementsByTagName('video')[0]};_proto.reset=function reset(){if(!this.initialized_){return}
5133if(this.omniController){this.omniController.off('audiocontext-suspended');this.omniController.dispose();this.omniController=undefined}
5134if(this.controls3d){this.controls3d.dispose();this.controls3d=null}
5135if(this.canvasPlayerControls){this.canvasPlayerControls.dispose();this.canvasPlayerControls=null}
5136if(this.effect){this.effect.dispose();this.effect=null}
5137window$1.removeEventListener('resize',this.handleResize_,!0);window$1.removeEventListener('vrdisplaypresentchange',this.handleResize_,!0);window$1.removeEventListener('vrdisplayactivate',this.handleVrDisplayActivate_,!0);window$1.removeEventListener('vrdisplaydeactivate',this.handleVrDisplayDeactivate_,!0);if(!this.player_.getChild('BigPlayButton')){this.player_.addChild('BigPlayButton',{},this.bigPlayButtonIndex_)}
5138if(this.player_.getChild('BigVrPlayButton')){this.player_.removeChild('BigVrPlayButton')}
5139if(this.player_.getChild('CardboardButton')){this.player_.controlBar.removeChild('CardboardButton')}
5140if(videojs.browser.IS_IOS&&this.player_.controlBar&&this.player_.controlBar.fullscreenToggle){this.player_.controlBar.fullscreenToggle.show()}
5141var videoElStyle=this.getVideoEl_().style;videoElStyle.zIndex='';videoElStyle.opacity='';this.currentProjection_=this.defaultProjection_;if(this.iosRevertTouchToClick_){this.iosRevertTouchToClick_()}
5142if(this.renderedCanvas){this.renderedCanvas.parentNode.removeChild(this.renderedCanvas)}
5143if(this.animationFrameId_){this.cancelAnimationFrame(this.animationFrameId_)}
5144this.initialized_=!1};_proto.dispose=function dispose(){_Plugin.prototype.dispose.call(this);this.reset()};_proto.polyfillVersion=function polyfillVersion(){return WebVRPolyfill.version};return VR}(Plugin);VR.prototype.setTimeout=Component.prototype.setTimeout;VR.prototype.clearTimeout=Component.prototype.clearTimeout;VR.VERSION=version;videojs.registerPlugin('vr',VR);return VR})));
5145
5146
5147
5148(function(document,videojs,pannellum){'use strict';var registerPlugin=videojs.registerPlugin||videojs.plugin;registerPlugin('pannellum',function(config){var player=this;var container=player.el();var vid=container.getElementsByTagName('video')[0],pnlmContainer=document.createElement('div');pnlmContainer.style.zIndex='0';config=config||{};config.type='equirectangular';config.dynamic=!0;config.showZoomCtrl=!1;config.showFullscreenCtrl=!1;config.autoLoad=!0;config.panorama=vid;pnlmContainer.style.visibility='hidden';player.pnlmViewer=pannellum.viewer(pnlmContainer,config);container.insertBefore(pnlmContainer,container.firstChild);vid.style.display='none';player.on('play',function(){if(vid.readyState>1)
5149player.pnlmViewer.setUpdate(!0);});player.on('canplay',function(){if(!player.paused())
5150player.pnlmViewer.setUpdate(!0);});player.on('pause',function(){player.pnlmViewer.setUpdate(!1)});player.on('loadeddata',function(){pnlmContainer.style.visibility='visible'});player.on('seeking',function(){if(player.paused())
5151player.pnlmViewer.setUpdate(!0);});player.on('seeked',function(){if(player.paused())
5152player.pnlmViewer.setUpdate(!1);})})})(document,videojs,pannellum);
5153
5154
5155
5156/**
5157 * Owl carousel
5158 * @version 2.3.4
5159 * @author Bartosz Wojciechowski
5160 * @author David Deutsch
5161 * @license The MIT License (MIT)
5162 * @todo Lazy Load Icon
5163 * @todo prevent animationend bubling
5164 * @todo itemsScaleUp
5165 * @todo Test Zepto
5166 * @todo stagePadding calculate wrong active classes
5167 */
5168;(function($,window,document,undefined){function Owl(element,options){this.settings=null;this.options=$.extend({},Owl.Defaults,options);this.$element=$(element);this._handlers={};this._plugins={};this._supress={};this._current=null;this._speed=null;this._coordinates=[];this._breakpoint=null;this._width=null;this._items=[];this._clones=[];this._mergers=[];this._widths=[];this._invalidated={};this._pipe=[];this._drag={time:null,target:null,pointer:null,stage:{start:null,current:null},direction:null};this._states={current:{},tags:{'initializing':['busy'],'animating':['busy'],'dragging':['interacting']}};$.each(['onResize','onThrottledResize'],$.proxy(function(i,handler){this._handlers[handler]=$.proxy(this[handler],this)},this));$.each(Owl.Plugins,$.proxy(function(key,plugin){this._plugins[key.charAt(0).toLowerCase()+key.slice(1)]=new plugin(this)},this));$.each(Owl.Workers,$.proxy(function(priority,worker){this._pipe.push({'filter':worker.filter,'run':$.proxy(worker.run,this)})},this));this.setup();this.initialize()}
5169Owl.Defaults={items:3,loop:!1,center:!1,rewind:!1,checkVisibility:!0,mouseDrag:!0,touchDrag:!0,pullDrag:!0,freeDrag:!1,margin:0,stagePadding:0,merge:!1,mergeFit:!0,autoWidth:!1,startPosition:0,rtl:!1,smartSpeed:250,fluidSpeed:!1,dragEndSpeed:!1,responsive:{},responsiveRefreshRate:200,responsiveBaseElement:window,fallbackEasing:'swing',slideTransition:'',info:!1,nestedItemSelector:!1,itemElement:'div',stageElement:'div',refreshClass:'owl-refresh',loadedClass:'owl-loaded',loadingClass:'owl-loading',rtlClass:'owl-rtl',responsiveClass:'owl-responsive',dragClass:'owl-drag',itemClass:'owl-item',stageClass:'owl-stage',stageOuterClass:'owl-stage-outer',grabClass:'owl-grab'};Owl.Width={Default:'default',Inner:'inner',Outer:'outer'};Owl.Type={Event:'event',State:'state'};Owl.Plugins={};Owl.Workers=[{filter:['width','settings'],run:function(){this._width=this.$element.width()}},{filter:['width','items','settings'],run:function(cache){cache.current=this._items&&this._items[this.relative(this._current)]}},{filter:['items','settings'],run:function(){this.$stage.children('.cloned').remove()}},{filter:['width','items','settings'],run:function(cache){var margin=this.settings.margin||'',grid=!this.settings.autoWidth,rtl=this.settings.rtl,css={'width':'auto','margin-left':rtl?margin:'','margin-right':rtl?'':margin};!grid&&this.$stage.children().css(css);cache.css=css}},{filter:['width','items','settings'],run:function(cache){var width=(this.width()/this.settings.items).toFixed(3)-this.settings.margin,merge=null,iterator=this._items.length,grid=!this.settings.autoWidth,widths=[];cache.items={merge:!1,width:width};while(iterator--){merge=this._mergers[iterator];merge=this.settings.mergeFit&&Math.min(merge,this.settings.items)||merge;cache.items.merge=merge>1||cache.items.merge;widths[iterator]=!grid?this._items[iterator].width():width*merge}
5170this._widths=widths}},{filter:['items','settings'],run:function(){var clones=[],items=this._items,settings=this.settings,view=Math.max(settings.items*2,4),size=Math.ceil(items.length/2)*2,repeat=settings.loop&&items.length?settings.rewind?view:Math.max(view,size):0,append='',prepend='';repeat/=2;while(repeat>0){clones.push(this.normalize(clones.length/2,!0));$(items[clones[clones.length-1]][0]).clone(!0).addClass('cloned').appendTo(this.$stage);clones.push(this.normalize(items.length-1-(clones.length-1)/2,!0));$(items[clones[clones.length-1]][0]).clone(!0).addClass('cloned').prependTo(this.$stage);repeat-=1}
5171this._clones=clones}},{filter:['width','items','settings'],run:function(){var rtl=this.settings.rtl?1:-1,size=this._clones.length+this._items.length,iterator=-1,previous=0,current=0,coordinates=[];while(++iterator<size){previous=coordinates[iterator-1]||0;current=this._widths[this.relative(iterator)]+this.settings.margin;coordinates.push(previous+current*rtl)}
5172this._coordinates=coordinates}},{filter:['width','items','settings'],run:function(){var padding=this.settings.stagePadding,coordinates=this._coordinates,css={'width':Math.ceil(Math.abs(coordinates[coordinates.length-1]))+padding*2,'padding-left':padding||'','padding-right':padding||''};this.$stage.css(css)}},{filter:['width','items','settings'],run:function(cache){var iterator=this._coordinates.length,grid=!this.settings.autoWidth,items=this.$stage.children();
5172if(grid&&cache.items.merge){while(iterator--){cache.css.width=this._widths[this.relative(iterator)];items.eq(iterator).css(cache.css)}}else if(grid){cache.css.width=cache.items.width;items.css(cache.css)}}},{filter:['items'],run:function(){this._coordinates.length<1&&this.$stage.removeAttr('style')}},{filter:['width','items','settings'],run:function(cache){cache.current=cache.current?this.$stage.children().index(cache.current):0;cache.current=Math.max(this.minimum(),Math.min(this.maximum(),cache.current));this.reset(cache.current)}},{filter:['position'],run:function(){this.animate(this.coordinates(this._current))}},{filter:['width','position','items','settings'],run:function(){var rtl=this.settings.rtl?1:-1,padding=this.settings.stagePadding*2,begin=this.coordinates(this.current())+padding,end=begin+this.width()*rtl,inner,outer,matches=[],i,n;for(i=0,n=this._coordinates.length;i<n;i++){inner=this._coordinates[i-1]||0;outer=Math.abs(this._coordinates[i])+padding*rtl;if((this.op(inner,'<=',begin)&&(this.op(inner,'>',end)))||(this.op(outer,'<',begin)&&this.op(outer,'>',end))){matches.push(i)}}
5173this.$stage.children('.active').removeClass('active');this.$stage.children(':eq('+matches.join('), :eq(')+')').addClass('active');this.$stage.children('.center').removeClass('center');if(this.settings.center){this.$stage.children().eq(this.current()).addClass('center')}}}];Owl.prototype.initializeStage=function(){this.$stage=this.$element.find('.'+this.settings.stageClass);if(this.$stage.length){return}
5174this.$element.addClass(this.options.loadingClass);this.$stage=$('<'+this.settings.stageElement+'>',{"class":this.settings.stageClass}).wrap($('<div/>',{"class":this.settings.stageOuterClass}));this.$element.append(this.$stage.parent())};Owl.prototype.initializeItems=function(){var $items=this.$element.find('.owl-item');if($items.length){this._items=$items.get().map(function(item){return $(item)});this._mergers=this._items.map(function(){return 1});this.refresh();return}
5175this.replace(this.$element.children().not(this.$stage.parent()));if(this.isVisible()){this.refresh()}else{this.invalidate('width')}
5176this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass)};Owl.prototype.initialize=function(){this.enter('initializing');this.trigger('initialize');this.$element.toggleClass(this.settings.rtlClass,this.settings.rtl);if(this.settings.autoWidth&&!this.is('pre-loading')){var imgs,nestedSelector,width;imgs=this.$element.find('img');nestedSelector=this.settings.nestedItemSelector?'.'+this.settings.nestedItemSelector:undefined;width=this.$element.children(nestedSelector).width();if(imgs.length&&width<=0){this.preloadAutoWidthImages(imgs)}}
5177this.initializeStage();this.initializeItems();this.registerEventHandlers();this.leave('initializing');this.trigger('initialized')};Owl.prototype.isVisible=function(){return this.settings.checkVisibility?this.$element.is(':visible'):!0};Owl.prototype.setup=function(){var viewport=this.viewport(),overwrites=this.options.responsive,match=-1,settings=null;if(!overwrites){settings=$.extend({},this.options)}else{$.each(overwrites,function(breakpoint){if(breakpoint<=viewport&&breakpoint>match){match=Number(breakpoint)}});settings=$.extend({},this.options,overwrites[match]);if(typeof settings.stagePadding==='function'){settings.stagePadding=settings.stagePadding()}
5178delete settings.responsive;if(settings.responsiveClass){this.$element.attr('class',this.$element.attr('class').replace(new RegExp('('+this.options.responsiveClass+'-)\\S+\\s','g'),'$1'+match))}}
5179this.trigger('change',{property:{name:'settings',value:settings}});this._breakpoint=match;this.settings=settings;this.invalidate('settings');this.trigger('changed',{property:{name:'settings',value:this.settings}})};Owl.prototype.optionsLogic=function(){if(this.settings.autoWidth){this.settings.stagePadding=!1;this.settings.merge=!1}};Owl.prototype.prepare=function(item){var event=this.trigger('prepare',{content:item});if(!event.data){event.data=$('<'+this.settings.itemElement+'/>').addClass(this.options.itemClass).append(item)}
5180this.trigger('prepared',{content:event.data});return event.data};Owl.prototype.update=function(){var i=0,n=this._pipe.length,filter=$.proxy(function(p){return this[p]},this._invalidated),cache={};while(i<n){if(this._invalidated.all||$.grep(this._pipe[i].filter,filter).length>0){this._pipe[i].run(cache)}
5181i++}
5182this._invalidated={};!this.is('valid')&&this.enter('valid')};Owl.prototype.width=function(dimension){dimension=dimension||Owl.Width.Default;switch(dimension){case Owl.Width.Inner:case Owl.Width.Outer:return this._width;default:return this._width-this.settings.stagePadding*2+this.settings.margin}};Owl.prototype.refresh=function(resizing){resizing=resizing||!1;this.enter('refreshing');this.trigger('refresh');this.setup();this.optionsLogic();this.$element.addClass(this.options.refreshClass);this.update();if(!resizing){this.onResize()}
5183this.$element.removeClass(this.options.refreshClass);this.leave('refreshing');this.trigger('refreshed')};Owl.prototype.onThrottledResize=function(){window.clearTimeout(this.resizeTimer);this.resizeTimer=window.setTimeout(this._handlers.onResize,this.settings.responsiveRefreshRate)};Owl.prototype.onResize=function(){var resizing=!0;if(!this._items.length){return!1}
5184if(this._width===this.$element.width()){return!1}
5185if(!this.isVisible()){return!1}
5186this.enter('resizing');
5186if(this.trigger('resize').isDefaultPrevented()){this.leave('resizing');return!1}
5187this.invalidate('width');this.refresh(resizing);this.leave('resizing');this.trigger('resized')};Owl.prototype.registerEventHandlers=function(){if($.support.transition){this.$stage.on($.support.transition.end+'.owl.core',$.proxy(this.onTransitionEnd,this))}
5188if(this.settings.responsive!==!1){this.on(window,'resize',this._handlers.onThrottledResize)}
5189if(this.settings.mouseDrag){this.$element.addClass(this.options.dragClass);this.$stage.on('mousedown.owl.core',$.proxy(this.onDragStart,this));this.$stage.on('dragstart.owl.core selectstart.owl.core',function(){return!1})}
5190if(this.settings.touchDrag){this.$stage.on('touchstart.owl.core',$.proxy(this.onDragStart,this));this.$stage.on('touchcancel.owl.core',$.proxy(this.onDragEnd,this))}};Owl.prototype.onDragStart=function(event){var stage=null;if(event.which===3){return}
5191if($.support.transform){stage=this.$stage.css('transform').replace(/.*\(|\)| /g,'').split(',');stage={x:stage[stage.length===16?12:4],y:stage[stage.length===16?13:5]}}else{stage=this.$stage.position();stage={x:this.settings.rtl?stage.left+this.$stage.width()-this.width()+this.settings.margin:stage.left,y:stage.top}}
5192if(this.is('animating')){$.support.transform?this.animate(stage.x):this.$stage.stop()
5193this.invalidate('position')}
5194this.$element.toggleClass(this.options.grabClass,event.type==='mousedown');this.speed(0);this._drag.time=new Date().getTime();this._drag.target=$(event.target);this._drag.stage.start=stage;this._drag.stage.current=stage;this._drag.pointer=this.pointer(event);$(document).on('mouseup.owl.core touchend.owl.core',$.proxy(this.onDragEnd,this));$(document).one('mousemove.owl.core touchmove.owl.core',$.proxy(function(event){var delta=this.difference(this._drag.pointer,this.pointer(event));$(document).on('mousemove.owl.core touchmove.owl.core',$.proxy(this.onDragMove,this));if(Math.abs(delta.x)<Math.abs(delta.y)&&this.is('valid')){return}
5195event.preventDefault();this.enter('dragging');this.trigger('drag')},this))};Owl.prototype.onDragMove=function(event){var minimum=null,maximum=null,pull=null,delta=this.difference(this._drag.pointer,this.pointer(event)),stage=this.difference(this._drag.stage.start,delta);if(!this.is('dragging')){return}
5196event.preventDefault();if(this.settings.loop){minimum=this.coordinates(this.minimum());maximum=this.coordinates(this.maximum()+1)-minimum;stage.x=(((stage.x-minimum)%maximum+maximum)%maximum)+minimum}else{minimum=this.settings.rtl?this.coordinates(this.maximum()):this.coordinates(this.minimum());maximum=this.settings.rtl?this.coordinates(this.minimum()):this.coordinates(this.maximum());pull=this.settings.pullDrag?-1*delta.x/5:0;stage.x=Math.max(Math.min(stage.x,minimum+pull),maximum+pull)}
5197this._drag.stage.current=stage;this.animate(stage.x)};Owl.prototype.onDragEnd=function(event){var delta=this.difference(this._drag.pointer,this.pointer(event)),stage=this._drag.stage.current,direction=delta.x>0^this.settings.rtl?'left':'right';$(document).off('.owl.core');this.$element.removeClass(this.options.grabClass);if(delta.x!==0&&this.is('dragging')||!this.is('valid')){this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed);this.current(this.closest(stage.x,delta.x!==0?direction:this._drag.direction));this.invalidate('position');this.update();this._drag.direction=direction;if(Math.abs(delta.x)>3||new Date().getTime()-this._drag.time>300){this._drag.target.one('click.owl.core',function(){return!1})}}
5198if(!this.is('dragging')){return}
5199this.leave('dragging');this.trigger('dragged')};Owl.prototype.closest=function(coordinate,direction){var position=-1,pull=30,width=this.width(),count=this.settings.items,itemWidth=Math.round(width/count),coordinates=this.coordinates();if(!this.settings.freeDrag){$.each(coordinates,$.proxy(function(index,value){if(direction==='left'&&coordinate>value-pull&&coordinate<value+pull){position=index}else if(direction==='right'&&coordinate>value-itemWidth-pull&&coordinate<value-itemWidth+pull){position=index+1}else if(this.op(coordinate,'<',value)&&this.op(coordinate,'>',coordinates[index+1]!==undefined?coordinates[index+1]:value-width)){position=direction==='left'?index+1:index}
5200return position===-1},this))}
5201if(!this.settings.loop){if(this.op(coordinate,'>',coordinates[this.minimum()])){position=coordinate=this.minimum()}else if(this.op(coordinate,'<',coordinates[this.maximum()])){position=coordinate=this.maximum()}}
5202return position};Owl.prototype.animate=function(coordinate){var animate=this.speed()>0;this.is('animating')&&this.onTransitionEnd();if(animate){this.enter('animating');this.trigger('translate')}
5203if($.support.transform3d&&$.support.transition){this.$stage.css({transform:'translate3d('+coordinate+'px,0px,0px)',transition:(this.speed()/1000)+'s'+(this.settings.slideTransition?' '+this.settings.slideTransition:'')})}else if(animate){this.$stage.animate({left:coordinate+'px'},this.speed(),this.settings.fallbackEasing,$.proxy(this.onTransitionEnd,this))}else{this.$stage.css({left:coordinate+'px'})}};Owl.prototype.is=function(state){return this._states.current[state]&&this._states.current[state]>0};Owl.prototype.current=function(position){if(position===undefined){return this._current}
5204if(this._items.length===0){return undefined}
5205position=this.normalize(position);if(this._current!==position){var event=this.trigger('change',{property:{name:'position',value:position}});if(event.data!==undefined){position=this.normalize(event.data)}
5206this._current=position;this.invalidate('position');this.trigger('changed',{property:{name:'position',value:this._current}})}
5207return this._current};Owl.prototype.invalidate=function(part){if($.type(part)==='string'){this._invalidated[part]=!0;this.is('valid')&&this.leave('valid')}
5208return $.map(this._invalidated,function(v,i){return i})};Owl.prototype.reset=function(position){position=this.normalize(position);if(position===undefined){return}
5209this._speed=0;this._current=position;this.suppress(['translate','translated']);this.animate(this.coordinates(position));this.release(['translate','translated'])};Owl.prototype.normalize=function(position,relative){var n=this._items.length,m=relative?0:this._clones.length;if(!this.isNumeric(position)||n<1){position=undefined}else if(position<0||position>=n+m){position=((position-m/2)%n+n)%n+m/2}
5210return position};Owl.prototype.relative=function(position){position-=this._clones.length/2;return this.normalize(position,!0)};Owl.prototype.maximum=function(relative){var settings=this.settings,maximum=this._coordinates.length,iterator,reciprocalItemsWidth,elementWidth;if(settings.loop){maximum=this._clones.length/2+this._items.length-1}else if(settings.autoWidth||settings.merge){iterator=this._items.length;if(iterator){reciprocalItemsWidth=this._items[--iterator].width();elementWidth=this.$element.width();while(iterator--){reciprocalItemsWidth+=this._items[iterator].width()+this.settings.margin;if(reciprocalItemsWidth>elementWidth){break}}}
5211maximum=iterator+1}else if(settings.center){maximum=this._items.length-1}else{maximum=this._items.length-settings.items}
5212if(relative){maximum-=this._clones.length/2}
5213return Math.max(maximum,0)};Owl.prototype.minimum=function(relative){return relative?0:this._clones.length/2};Owl.prototype.items=function(position){if(position===undefined){return this._items.slice()}
5214position=this.normalize(position,!0);return this._items[position]};Owl.prototype.mergers=function(position){if(position===undefined){return this._mergers.slice()}
5215position=this.normalize(position,!0);return this._mergers[position]};Owl.prototype.clones=function(position){var odd=this._clones.length/2,even=odd+this._items.length,map=function(index){return index%2===0?even+index/2:odd-(index+1)/2};if(position===undefined){return $.map(this._clones,function(v,i){return map(i)})}
5216return $.map(this._clones,function(v,i){return v===position?map(i):null})};Owl.prototype.speed=function(speed){if(speed!==undefined){this._speed=speed}
5217return this._speed};Owl.prototype.coordinates=function(position){var multiplier=1,newPosition=position-1,coordinate;if(position===undefined){return $.map(this._coordinates,$.proxy(function(coordinate,index){return this.coordinates(index)},this))}
5218if(this.settings.center){if(this.settings.rtl){multiplier=-1;newPosition=position+1}
5219coordinate=this._coordinates[position];coordinate+=(this.width()-coordinate+(this._coordinates[newPosition]||0))/2*multiplier}else{coordinate=this._coordinates[newPosition]||0}
5220coordinate=Math.ceil(coordinate);return coordinate};Owl.prototype.duration=function(from,to,factor){if(factor===0){return 0}
5221return Math.min(Math.max(Math.abs(to-from),1),6)*Math.abs((factor||this.settings.smartSpeed))};Owl.prototype.to=function(position,speed){var current=this.current(),revert=null,distance=position-this.relative(current),direction=(distance>0)-(distance<0),items=this._items.length,minimum=this.minimum(),maximum=this.maximum();if(this.settings.loop){if(!this.settings.rewind&&Math.abs(distance)>items/2){distance+=direction*-1*items}
5222position=current+distance;revert=((position-minimum)%items+items)%items+minimum;if(revert!==position&&revert-distance<=maximum&&revert-distance>0){current=revert-distance;position=revert;this.reset(current)}}else if(this.settings.rewind){maximum+=1;position=(position%maximum+maximum)%maximum}else{position=Math.max(minimum,Math.min(maximum,position))}
5223this.speed(this.duration(current,position,speed));this.current(position);if(this.isVisible()){this.update()}};Owl.prototype.next=function(speed){speed=speed||!1;this.to(this.relative(this.current())+1,speed)};Owl.prototype.prev=function(speed){speed=speed||!1;this.to(this.relative(this.current())-1,speed)};Owl.prototype.onTransitionEnd=function(event){if(event!==undefined){event.stopPropagation();if((event.target||event.srcElement||event.originalTarget)!==this.$stage.get(0)){return!1}}
5224this.leave('animating');this.trigger('translated')};Owl.prototype.viewport=function(){var width;if(this.options.responsiveBaseElement!==window){width=$(this.options.responsiveBaseElement).width()}else if(window.innerWidth){width=window.innerWidth}else if(document.documentElement&&document.documentElement.clientWidth){
5224width=document.documentElement.clientWidth}else{console.warn('Can not detect viewport width.')}
5225return width};Owl.prototype.replace=function(content){this.$stage.empty();this._items=[];if(content){content=(content instanceof jQuery)?content:$(content)}
5226if(this.settings.nestedItemSelector){content=content.find('.'+this.settings.nestedItemSelector)}
5227content.filter(function(){return this.nodeType===1}).each($.proxy(function(index,item){item=this.prepare(item);this.$stage.append(item);this._items.push(item);this._mergers.push(item.find('[data-merge]').addBack('[data-merge]').attr('data-merge')*1||1)},this));this.reset(this.isNumeric(this.settings.startPosition)?this.settings.startPosition:0);this.invalidate('items')};Owl.prototype.add=function(content,position){var current=this.relative(this._current);position=position===undefined?this._items.length:this.normalize(position,!0);content=content instanceof jQuery?content:$(content);this.trigger('add',{content:content,position:position});content=this.prepare(content);if(this._items.length===0||position===this._items.length){this._items.length===0&&this.$stage.append(content);this._items.length!==0&&this._items[position-1].after(content);this._items.push(content);this._mergers.push(content.find('[data-merge]').addBack('[data-merge]').attr('data-merge')*1||1)}else{this._items[position].before(content);this._items.splice(position,0,content);this._mergers.splice(position,0,content.find('[data-merge]').addBack('[data-merge]').attr('data-merge')*1||1)}
5228this._items[current]&&this.reset(this._items[current].index());this.invalidate('items');this.trigger('added',{content:content,position:position})};Owl.prototype.remove=function(position){position=this.normalize(position,!0);if(position===undefined){return}
5229this.trigger('remove',{content:this._items[position],position:position});this._items[position].remove();this._items.splice(position,1);this._mergers.splice(position,1);this.invalidate('items');this.trigger('removed',{content:null,position:position})};Owl.prototype.preloadAutoWidthImages=function(images){images.each($.proxy(function(i,element){this.enter('pre-loading');element=$(element);$(new Image()).one('load',$.proxy(function(e){element.attr('src',e.target.src);element.css('opacity',1);this.leave('pre-loading');!this.is('pre-loading')&&!this.is('initializing')&&this.refresh()},this)).attr('src',(window.devicePixelRatio>1)?element.attr('data-src-retina'):element.attr('data-src')||element.attr('src'))},this))};Owl.prototype.destroy=function(){this.$element.off('.owl.core');this.$stage.off('.owl.core');$(document).off('.owl.core');if(this.settings.responsive!==!1){window.clearTimeout(this.resizeTimer);this.off(window,'resize',this._handlers.onThrottledResize)}
5230for(var i in this._plugins){this._plugins[i].destroy()}
5231this.$stage.children('.cloned').remove();this.$stage.unwrap();this.$stage.children().contents().unwrap();this.$stage.children().unwrap();this.$stage.remove();this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr('class',this.$element.attr('class').replace(new RegExp(this.options.responsiveClass+'-\\S+\\s','g'),'')).removeData('owl.carousel')};Owl.prototype.op=function(a,o,b){var rtl=this.settings.rtl;switch(o){case '<':return rtl?a>b:a<b;case '>':return rtl?a<b:a>b;case '>=':return rtl?a<=b:a>=b;case '<=':return rtl?a>=b:a<=b;default:break}};Owl.prototype.on=function(element,event,listener,capture){if(element.addEventListener){element.addEventListener(event,listener,capture)}else if(element.attachEvent){element.attachEvent('on'+event,listener)}};Owl.prototype.off=function(element,event,listener,capture){if(element.removeEventListener){element.removeEventListener(event,listener,capture)}else if(element.detachEvent){element.detachEvent('on'+event,listener)}};Owl.prototype.trigger=function(name,data,namespace,state,enter){var status={item:{count:this._items.length,index:this.current()}}
5231,handler=$.camelCase($.grep(['on',name,namespace],function(v){return v}).join('-').toLowerCase()),event=$.Event([name,'owl',namespace||'carousel'].join('.').toLowerCase(),$.extend({relatedTarget:this},status,data));if(!this._supress[name]){$.each(this._plugins,function(name,plugin){if(plugin.onTrigger){plugin.onTrigger(event)}});this.register({type:Owl.Type.Event,name:name});this.$element.trigger(event);if(this.settings&&typeof this.settings[handler]==='function'){this.settings[handler].call(this,event)}}
5232return event};Owl.prototype.enter=function(name){$.each([name].concat(this._states.tags[name]||[]),$.proxy(function(i,name){if(this._states.current[name]===undefined){this._states.current[name]=0}
5233this._states.current[name]++},this))};Owl.prototype.leave=function(name){$.each([name].concat(this._states.tags[name]||[]),$.proxy(function(i,name){this._states.current[name]--},this))};Owl.prototype.register=function(object){if(object.type===Owl.Type.Event){if(!$.event.special[object.name]){$.event.special[object.name]={}}
5234if(!$.event.special[object.name].owl){var _default=$.event.special[object.name]._default;$.event.special[object.name]._default=function(e){if(_default&&_default.apply&&(!e.namespace||e.namespace.indexOf('owl')===-1)){return _default.apply(this,arguments)}
5235return e.namespace&&e.namespace.indexOf('owl')>-1};$.event.special[object.name].owl=!0}}else if(object.type===Owl.Type.State){if(!this._states.tags[object.name]){this._states.tags[object.name]=object.tags}else{this._states.tags[object.name]=this._states.tags[object.name].concat(object.tags)}
5236this._states.tags[object.name]=$.grep(this._states.tags[object.name],$.proxy(function(tag,i){return $.inArray(tag,this._states.tags[object.name])===i},this))}};Owl.prototype.suppress=function(events){$.each(events,$.proxy(function(index,event){this._supress[event]=!0},this))};Owl.prototype.release=function(events){$.each(events,$.proxy(function(index,event){delete this._supress[event]},this))};Owl.prototype.pointer=function(event){var result={x:null,y:null};event=event.originalEvent||event||window.event;event=event.touches&&event.touches.length?event.touches[0]:event.changedTouches&&event.changedTouches.length?event.changedTouches[0]:event;if(event.pageX){result.x=event.pageX;result.y=event.pageY}else{result.x=event.clientX;result.y=event.clientY}
5237return result};Owl.prototype.isNumeric=function(number){return!isNaN(parseFloat(number))};Owl.prototype.difference=function(first,second){return{x:first.x-second.x,y:first.y-second.y}};$.fn.owlCarousel=function(option){var args=Array.prototype.slice.call(arguments,1);return this.each(function(){var $this=$(this),data=$this.data('owl.carousel');if(!data){data=new Owl(this,typeof option=='object'&&option);$this.data('owl.carousel',data);$.each(['next','prev','to','destroy','refresh','replace','add','remove'],function(i,event){data.register({type:Owl.Type.Event,name:event});data.$element.on(event+'.owl.carousel.core',$.proxy(function(e){if(e.namespace&&e.relatedTarget!==this){this.suppress([event]);data[event].apply(this,[].slice.call(arguments,1));this.release([event])}},data))})}
5238if(typeof option=='string'&&option.charAt(0)!=='_'){data[option].apply(data,args)}})};$.fn.owlCarousel.Constructor=Owl})(window.Zepto||window.jQuery,window,document);
5239
5240
5241
5242/*!
5243 * jQuery Cookie Plugin v1.4.1
5244 * https://github.com/carhartl/jquery-cookie
5245 *
5246 * Copyright 2013 Klaus Hartl
5247 * Released under the MIT license
5248 */
5249(function(factory){if(typeof define==='function'&&define.amd){define(['jquery'],factory)}else if(typeof exports==='object'){factory(require('jquery'))}else{factory(jQuery)}}(function($){var pluses=/\+/g;function encode(s){return config.raw?s:encodeURIComponent(s)}
5250function decode(s){return config.raw?s:decodeURIComponent(s)}
5251function stringifyCookieValue(value){return encode(config.json?JSON.stringify(value):String(value))}
5252function parseCookieValue(s){if(s.indexOf('"')===0){s=s.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,'\\')}
5253try{s=decodeURIComponent(s.replace(pluses,' '));return config.json?JSON.parse(s):s}catch(e){}}
5254function read(s,converter){var value=config.raw?s:parseCookieValue(s);return $.isFunction(converter)?converter(value):value}
5255var config=$.cookie=function(key,value,options){if(value!==undefined&&!$.isFunction(value)){options=$.extend({},config.defaults,options);if(typeof options.expires==='number'){var days=options.expires,t=options.expires=new Date();t.setTime(+t+days*864e+5)}
5256return(document.cookie=[encode(key),'=',stringifyCookieValue(value),options.expires?'; expires='+options.expires.toUTCString():'',options.path?'; path='+options.path:'',options.domain?'; domain='+options.domain:'',options.secure?'; secure':''].join(''))}
5257var result=key?undefined:{};var cookies=document.cookie?document.cookie.split('; '):[];for(var i=0,l=cookies.length;i<l;i++){var parts=cookies[i].split('=');var name=decode(parts.shift());var cookie=parts.join('=');if(key&&key===name){result=read(cookie,value);break}
5258if(!key&&(cookie=read(cookie))!==undefined){result[name]=cookie}}
5259return result};config.defaults={};
5259$.removeCookie=function(key,options){if($.cookie(key)===undefined){return!1}
5260$.cookie(key,'',$.extend({},options,{expires:-1}));return!$.cookie(key)}}));
5261
5262
5263
5264function xs_social_sharer(t){let e=t.getAttribute("data-pid"),a=t.getAttribute("data-key"),r=t.getAttribute("data-uri_hash"),i=t.getAttribute("data-xs-href");window.open(i,"xs_feed_sharer","width=626,height=436");let o={pid:e,hash:r,social:a};jQuery.ajax({data:o,type:"post",url:window.rest_api_conf.root+"wp_social/v1/shared/url",beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",window.rest_api_conf.nonce)},success:function(t){},error:function(t){}})};
5265
5266
5267
5268/*!
5269 * Name    : Just Another Parallax [Jarallax]
5270 * Version : 1.10.7
5271 * Author  : nK <https://nkdev.info>
5272 * GitHub  : https://github.com/nk-o/jarallax
5273 */!function(o){var n={};function i(e){if(n[e])return n[e].exports;var t=n[e]={i:e,l:!1,exports:{}};return o[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.m=o,i.c=n,i.d=function(e,t,o){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(i.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)i.d(o,n,function(e){return t[e]}.bind(null,n));return o},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=11)}([,,function(e,t,o){"use strict";e.exports=function(e){"complete"===document.readyState||"interactive"===document.readyState?e.call():document.attachEvent?document.attachEvent("onreadystatechange",function(){"interactive"===document.readyState&&e.call()}):document.addEventListener&&document.addEventListener("DOMContentLoaded",e)}},,function(o,e,t){"use strict";(function(e){var t;t="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},o.exports=t}).call(this,t(5))},function(e,t,o){"use strict";var n,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"===("undefined"==typeof window?"undefined":i(window))&&(n=window)}e.exports=n},,,,,,function(e,t,o){e.exports=o(12)},function(e,t,o){"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=l(o(2)),a=o(4),r=l(o(13));function l(e){return e&&e.__esModule?e:{default:e}}var s=a.window.jarallax;if(a.window.jarallax=r.default,a.window.jarallax.noConflict=function(){return a.window.jarallax=s,this},void 0!==a.jQuery){var c=function(){var e=arguments||[];Array.prototype.unshift.call(e,this);var t=r.default.apply(a.window,e);return"object"!==(void 0===t?"undefined":n(t))?t:this};c.constructor=r.default.constructor;var u=a.jQuery.fn.jarallax;a.jQuery.fn.jarallax=c,a.jQuery.fn.jarallax.noConflict=function(){return a.jQuery.fn.jarallax=u,this}}(0,i.default)(function(){(0,r.default)(document.querySelectorAll("[data-jarallax]"))})},function(e,j,S){"use strict";(function(e){Object.defineProperty(j,"__esModule",{value:!0});var d=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var o=[],n=!0,i=!1,a=void 0;try{for(var r,l=e[Symbol.iterator]();!(n=(r=l.next()).done)&&(o.push(r.value),!t||o.length!==t);n=!0);}catch(e){i=!0,a=e}finally{try{!n&&l.return&&l.return()}finally{if(i)throw a}}return o}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},t=function(){function n(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,o){return t&&n(e.prototype,t),o&&n(e,o),e}}(),p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=a(S(2)),n=a(S(14)),i=S(4);
5273function a(e){return e&&e.__esModule?e:{default:e}}var s=-1<navigator.userAgent.indexOf("MSIE ")||-1<navigator.userAgent.indexOf("Trident/")||-1<navigator.userAgent.indexOf("Edge/"),r=function(){for(var e="transform WebkitTransform MozTransform".split(" "),t=document.createElement("div"),o=0;o<e.length;o++)if(t&&void 0!==t.style[e[o]])return e[o];return!1}(),b=void 0,v=void 0,l=void 0,c=!1,u=!1;function m(e){b=i.window.innerWidth||document.documentElement.clientWidth,v=i.window.innerHeight||document.documentElement.clientHeight,"object"!==(void 0===e?"undefined":p(e))||"load"!==e.type&&"dom-loaded"!==e.type||(c=!0)}m(),i.window.addEventListener("resize",m),i.window.addEventListener("orientationchange",m),i.window.addEventListener("load",m),(0,o.default)(function(){m({type:"dom-loaded"})});var f=[],y=!1;function g(){if(f.length){l=void 0!==i.window.pageYOffset?i.window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop;var t=c||!y||y.width!==b||y.height!==v,o=u||t||!y||y.y!==l;u=c=!1,(t||o)&&(f.forEach(function(e){t&&e.onResize(),o&&e.onScroll()}),y={width:b,height:v,y:l}),(0,n.default)(g)}}var h=!!e.ResizeObserver&&new e.ResizeObserver(function(e){e&&e.length&&(0,n.default)(function(){e.forEach(function(e){e.target&&e.target.jarallax&&(c||e.target.jarallax.onResize(),u=!0)})})}),x=0,w=function(){function u(e,t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);var o=this;o.instanceID=x++,o.$item=e,o.defaults={type:"scroll",speed:.5,imgSrc:null,imgElement:".jarallax-img",imgSize:"cover",imgPosition:"50% 50%",imgRepeat:"no-repeat",keepImg:!1,elementInViewport:null,zIndex:-100,disableParallax:!1,disableVideo:!1,automaticResize:!0,videoSrc:null,videoStartTime:0,videoEndTime:0,videoVolume:0,videoLoop:!0,videoPlayOnlyVisible:!0,onScroll:null,onInit:null,onDestroy:null,onCoverImage:null};var n=o.$item.getAttribute("data-jarallax"),i=JSON.parse(n||"{}");n&&console.warn("Detected usage of deprecated data-jarallax JSON options, you should use pure data-attribute options. See info here - https://github.com/nk-o/jarallax/issues/53");var a=o.$item.dataset||{},r={};if(Object.keys(a).forEach(function(e){var t=e.substr(0,1).toLowerCase()+e.substr(1);t&&void 0!==o.defaults[t]&&(r[t]=a[e])}),o.options=o.extend({},o.defaults,i,r,t),o.pureOptions=o.extend({},o.options),Object.keys(o.options).forEach(function(e){"true"===o.options[e]?o.options[e]=!0:"false"===o.options[e]&&(o.options[e]=!1)}),o.options.speed=Math.min(2,Math.max(-1,parseFloat(o.options.speed))),(o.options.noAndroid||o.options.noIos)&&(console.warn("Detected usage of deprecated noAndroid or noIos options, you should use disableParallax option. See info here - https://github.com/nk-o/jarallax/#disable-on-mobile-devices"),o.options.disableParallax||(o.options.noIos&&o.options.noAndroid?o.options.disableParallax=/iPad|iPhone|iPod|Android/:o.options.noIos?o.options.disableParallax=/iPad|iPhone|iPod/:o.options.noAndroid&&(o.options.disableParallax=/Android/))),"string"==typeof o.options.disableParallax&&(o.options.disableParallax=new RegExp(o.options.disableParallax)),o.options.disableParallax instanceof RegExp){var l=o.options.disableParallax;o.options.disableParallax=function(){return l.test(navigator.userAgent)}}if("function"!=typeof o.options.disableParallax&&(o.options.disableParallax=function(){return!1}),"string"==typeof o.options.disableVideo&&(o.options.disableVideo=new RegExp(o.options.disableVideo)),o.options.disableVideo instanceof RegExp){var s=o.options.disableVideo;o.options.disableVideo=function(){return s.test(navigator.userAgent)}}"function"!=typeof o.options.disableVideo&&(o.options.disableVideo=function(){return!1});var c=o.options.elementInViewport;c&&"object"===(void 0===c?"undefined":p(c))&&void 0!==c.length&&(c=d(c,1)[0]);c instanceof Element||(c=null),o.options.elementInViewport=c,o.image={src:o.options.imgSrc||null,$container:null,useImgTag:!1,position:/iPad|iPhone|iPod|Android/.test(navigator.userAgent)?"absolute":"fixed"},o.initImg()&&o.canInitParallax()&&o.init()}return t(u,[{key:"css",value:function(t,o){return"string"==typeof o?i.window.getComputedStyle(t).getPropertyValue(o):(o.transform&&r&&(o[r]=o.transform),Object.keys(o).forEac
5273h(function(e){t.style[e]=o[e]}),t)}},{key:"extend",value:function(o){var n=arguments;return o=o||{},Object.keys(arguments).forEach(function(t){n[t]&&Object.keys(n[t]).forEach(function(e){o[e]=n[t][e]})}),o}},{key:"getWindowData",value:function(){return{width:b,height:v,y:l}}},{key:"initImg",value:function(){var e=this,t=e.options.imgElement;return t&&"string"==typeof t&&(t=e.$item.querySelector(t)),t instanceof Element||(t=null),t&&(e.options.keepImg?e.image.$item=t.cloneNode(!0):(e.image.$item=t,e.image.$itemParent=t.parentNode),e.image.useImgTag=!0),!!e.image.$item||(null===e.image.src&&(e.image.src=e.css(e.$item,"background-image").replace(/^url\(['"]?/g,"").replace(/['"]?\)$/g,"")),!(!e.image.src||"none"===e.image.src))}},{key:"canInitParallax",value:function(){return r&&!this.options.disableParallax()}},{key:"init",value:function(){var e=this,t={position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},o={};if(!e.options.keepImg){var n=e.$item.getAttribute("style");if(n&&e.$item.setAttribute("data-jarallax-original-styles",n),e.image.useImgTag){var i=e.image.$item.getAttribute("style");i&&e.image.$item.setAttribute("data-jarallax-original-styles",i)}}if("static"===e.css(e.$item,"position")&&e.css(e.$item,{position:"relative"}),"auto"===e.css(e.$item,"z-index")&&e.css(e.$item,{zIndex:0}),e.image.$container=document.createElement("div"),e.css(e.image.$container,t),e.css(e.image.$container,{"z-index":e.options.zIndex}),s&&e.css(e.image.$container,{opacity:.9999}),e.image.$container.setAttribute("id","jarallax-container-"+e.instanceID),e.$item.appendChild(e.image.$container),e.image.useImgTag?o=e.extend({"object-fit":e.options.imgSize,"object-position":e.options.imgPosition,"font-family":"object-fit: "+e.options.imgSize+"; object-position: "+e.options.imgPosition+";","max-width":"none"},t,o):(e.image.$item=document.createElement("div"),e.image.src&&(o=e.extend({"background-position":e.options.imgPosition,"background-size":e.options.imgSize,"background-repeat":e.options.imgRepeat,"background-image":'url("'+e.image.src+'")'},t,o))),"opacity"!==e.options.type&&"scale"!==e.options.type&&"scale-opacity"!==e.options.type&&1!==e.options.speed||(e.image.position="absolute"),"fixed"===e.image.position)for(var a=0,r=e.$item;null!==r&&r!==document&&0===a;){var l=e.css(r,"-webkit-transform")||e.css(r,"-moz-transform")||e.css(r,"transform");l&&"none"!==l&&(a=1,e.image.position="absolute"),r=r.parentNode}o.position=e.image.position,e.css(e.image.$item,o),e.image.$container.appendChild(e.image.$item),e.onResize(),e.onScroll(!0),e.o
5273ptions.automaticResize&&h&&h.observe(e.$item),e.options.onInit&&e.options.onInit.call(e),"none"!==e.css(e.$item,"background-image")&&e.css(e.$item,{"background-image":"none"}),e.addToParallaxList()}},{key:"addToParallaxList",value:function(){f.push(this),1===f.length&&g()}},{key:"removeFromParallaxList",value:function(){var o=this;f.forEach(function(e,t){e.instanceID===o.instanceID&&f.splice(t,1)})}},{key:"destroy",value:function(){var e=this;e.removeFromParallaxList();var t=e.$item.getAttribute("data-jarallax-original-styles");if(e.$item.removeAttribute("data-jarallax-original-styles"),t?e.$item.setAttribute("style",t):e.$item.removeAttribute("style"),e.image.useImgTag){var o=e.image.$item.getAttribute("data-jarallax-original-styles");e.image.$item.removeAttribute("data-jarallax-original-styles"),o?e.image.$item.setAttribute("style",t):e.image.$item.removeAttribute("style"),e.image.$itemParent&&e.image.$itemParent.appendChild(e.image.$item)}e.$clipStyles&&e.$clipStyles.parentNode.removeChild(e.$clipStyles),e.image.$container&&e.image.$container.parentNode.removeChild(e.image.$container),e.options.onDestroy&&e.options.onDestroy.call(e),delete e.$item.jarallax}},{key:"clipContainer",value:function(){if("fixed"===this.image.position){var e=this,t=e.image.$container.getBoundingClientRect(),o=t.width,n=t.height;if(!e.$clipStyles)e.$clipStyles=document.createElement("style"),e.$clipStyles.setAttribute("type","text/css"),e.$clipStyles.setAttribute("id","jarallax-clip-"+e.instanceID),(document.head||document.getElementsByTagName("head")[0]).appendChild(e.$clipStyles);var i="#jarallax-container-"+e.instanceID+" {\n           clip: rect(0 "+o+"px "+n+"px 0);\n           clip: rect(0, "+o+"px, "+n+"px, 0);\n        }";e.$clipStyles.styleSheet?e.$clipStyles.styleSheet.cssText=i:e.$clipStyles.innerHTML=i}}},{key:"coverImage",value:function(){var e=this,t=e.image.$container.getBoundingClientRect(),o=t.height,n=e.options.speed,i="scroll"===e.options.type||"scroll-opacity"===e.options.type,a=0,r=o,l=0;return i&&(n<0?(a=n*Math.max(o,v),v<o&&(a-=n*(o-v))):a=n*(o+v),1<n?r=Math.abs(a-v):n<0?r=a/n+Math.abs(a):r+=(v-o)*(1-n),a/=2),e.parallaxScrollDistance=a,l=i?(v-r)/2:(o-r)/2,e.css(e.image.$item,{height:r+"px",marginTop:l+"px",left:"fixed"===e.image.position?t.left+"px":"0",width:t.width+"px"}),e.options.onCoverImage&&e.options.onCoverImage.call(e),{image:{height:r,marginTop:l},container:t}}},{key:"isVisible",value:function(){return this.isElementInViewport||!1}},{key:"onScroll",value:function(e){var t=this,o=t.$item.getBoundingClientRect(),n=o.top,i=o.height,a={},r=o;if(t.options.elementInViewport&&(r=t.options.elementInViewport.getBoundingClientRect()),t.isElementInViewport=0<=r.bottom&&0<=r.right&&r.top<=v&&r.left<=b,e||t.isElementInViewport){var l=Math.max(0,n),s=Math.max(0,i+n),c=Math.max(0,-n),u=Math.max(0,n+i-v),d=Math.max(0,i-(n+i-v)),p=Math.max(0,-n+v-i),m=1-2*(v-n)/(v+i),f=1;if(i<v?f=1-(c||u)/i:s<=v?f=s/v:d<=v&&(f=d/v),"opacity"!==t.options.type&&"scale-opacity"!==t.options.type&&"scroll-opacity"!==t.options.type||(a.transform="translate3d(0,0,0)",a.opacity=f),"scale"===t.options.type||"scale-opacity"===t.options.type){var y=1;t.options.speed<0?y-=t.options.speed*f:y+=t.options.speed*(1-f),a.transform="scale("+y+") translate3d(0,0,0)"}if("scroll"===t.options.type||"scroll-opacity"===t.options.type){var g=t.parallaxScrollDistance*m;"absolute"===t.image.position&&(g-=n),a.transform="translate3d(0,"+g+"px,0)"}t.css(t.image.$item,a),t.options.onScroll&&t.options.onScroll.call(t,{section:o,beforeTop:l,beforeTopEnd:s,afterTop:c,beforeBottom:u,beforeBottomEnd:d,afterBottom:p,visiblePercent:f,fromViewportCenter:m})}}},{key:"onResize",value:function(){this.coverImage(),this.clipContainer()}}]),u}(),$=function(e){("object"===("undefined"==typeof HTMLElement?"undefined":p(HTMLElement))?e instanceof HTMLElement:e&&"object"===(void 0===e?"undefined":p(e))&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName)&&(e=[e]);for(var t=arguments[1],o=Array.prototype.slice.call(arguments,2),n=e.length,i=0,a=void 0;i<n;i++)if("object"===(void 0===t?"undefined":p(t))||void 0===t?e[i].jarallax||(e[i].jarallax=new w(e[i],t)):e[i].jarallax&&(a=e[i].jarallax[t].apply(e[i].jarallax,o)),void 0!==a)return a;return e};$.constructor=w,j.default=$}).call(this,S(5))},function(e,t,o){"use strict";var n=o(4),i=n.requestAnimationFrame||n.webkitRequestAnimationFrame||n.mozRequestAnimationFrame||function(e){var t=+new Date,o=Math.max(0,16-(t-a)),n=setTimeout(e,o);return a=t,n},a=+new Date;var r=n.cancelAnimationFrame||n.webkitCancelAnimationFrame||n.mozCancelAnimationFrame||clearTimeout;Function.prototype.bind&&(i=i.bind(n),r=r.bind(n)),(e.exports=i).cancel=r}
5273]);
5274
5275

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.