earthsdk3-ue 3.7.0-beta.14 → 3.7.0-beta.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/earthsdk3-ue.iife.js +14 -14
- package/dist/earthsdk3-ue.js +1044 -948
- package/dist/earthsdk3-ue.umd.cjs +3 -3
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var EarthSDK3_UE=function(C,c){"use strict";var jw=Object.defineProperty;var Ap=(C,c,Be)=>c in C?jw(C,c,{enumerable:!0,configurable:!0,writable:!0,value:Be}):C[c]=Be;var p=(C,c,Be)=>Ap(C,typeof c!="symbol"?c+"":c,Be);var od;const Be={...c.ESViewer.defaults,geoReferenceOrigin:void 0,keepWorldOriginNearCamera:!1,useCache:!0,widgetInteractionDistance:200,memReportInterval:10,sceneControlled:!0,brightness:0,emissiveIntensity:1,statusUpdateInterval:.5,baseUrl:((od=window==null?void 0:window.location)==null?void 0:od.href)??"",screenPercentage:-1,antiAliasingMethod:"default"},Yi=()=>({...c.ESViewer.createCommonProps(),apiKey:"",apiUrl:"",secretKey:"",speechVoiceMode:"",geoReferenceOrigin:c.reactArrayWithUndefined(void 0),keepWorldOriginNearCamera:void 0,useCache:void 0,widgetInteractionDistance:void 0,memReportInterval:void 0,sceneControlled:void 0,brightness:void 0,emissiveIntensity:void 0,statusUpdateInterval:void 0,baseUrl:void 0,screenPercentage:void 0,antiAliasingMethod:void 0});function mr(){const r=Yi(),A=[];return Object.keys(r).forEach(e=>{A.push(e)}),A}function Qn(r){const{defaults:A}=LA,e=mr(),t={};return e.forEach(n=>{t[n]=r[n]??A[n]}),t}const fe=async(r,A,e,t,n,s="default")=>{const i=await r.callUeFunc({f:"flyTo",p:{id:A,duration:e,flyToParam:t,position:n,flyMode:s}});if(i.error){console.error(i.error);return}return i.re},Un=async(r,A)=>{const e=await r.callUeFunc({f:"destroy",p:{id:A}});return e.error&&console.error(e.error),e},YA=(r,A)=>{r.callUeFunc({f:"calcFlyToParam",p:{id:A}}).then(e=>{e.error&&console.error("calcFlyToParam:",e.error)}).catch(e=>{console.error("calcFlyToParam:",e)})},$i=(r,A)=>{r.callUeFunc({f:"refreshTileset",p:{id:A}}).then(e=>{e.error&&console.error("refreshTileset:",e.error)}).catch(e=>{console.error("refreshTileset:",e)})},Ge=async(r,A,e,t,n,s="default")=>{const i=await r.callUeFunc({f:"flyIn",p:{id:A,position:e,rotation:t,duration:n,flyMode:s}});if(i.error){console.error(i.error);return}return i.re},Zi=async(r,A)=>{if(!r){console.warn("DefaultCameraFlyIn: viewer is undefined");return}const e=await r.callUeFunc({f:"DefaultCameraFlyIn",p:{Duration:A??1}});if(e.error){console.error("DefaultCameraFlyIn:",e.error);return}return e},qi=async r=>{if(!r){console.warn("StartVoice:viewer is undefined");return}const A=await r.callUeFunc({f:"StartVoice",p:{}});if(A.error){console.error("StartVoice:",A.error);return}return A},ji=async r=>{if(!r){console.warn("StopVoice:viewer is undefined");return}const A=await r.callUeFunc({f:"StopVoice",p:{}});if(A.error){console.error("StopVoice:",A.error);return}return A},Ao=async(r,A)=>{if(!r){console.warn("mountPakFiles:viewer is undefined");return}const e=await r.callUeFunc({f:"MountPakFiles",p:{json:A}});if(e.error){console.error("mountPakFiles:",e.error);return}return e},eo=async r=>{if(!r){console.warn("generateMemReport:viewer is undefined");return}const A=await r.callUeFunc({f:"GenerateMemReport",p:{}});if(A.error){console.error("generateMemReport:",A.error);return}return A},En=async(r,A)=>{const e=await r.callUeFunc({f:"resetWithCurrentCamera",p:{id:A}});return e.error&&console.error("resetWithCurrentCamera:",e.error),e},ke=(r,A,e,t,n)=>{r.callUeFunc({f:"smoothMoveWithRotation",p:{id:A,Destination:e,NewRotation:t,Time:n}}).then(s=>{s.error&&console.error("smoothMoveWithRotation:",s.error)}).catch(s=>{console.error("smoothMoveWithRotation:",s)})},Ne=(r,A,e,t,n,s)=>{r.callUeFunc({f:"smoothMoveOnGround",p:{id:A,Lon:e,Lat:t,Ground:n,Time:s}}).then(i=>{i.error&&console.error("smoothMoveOnGround:",i.error)}).catch(i=>{console.error("smoothMoveOnGround:",i)})},_e=(r,A,e,t,n,s,i)=>{r.callUeFunc({f:"smoothMoveWithRotationOnGround",p:{id:A,NewRotation:e,Lon:t,Lat:n,Time:s,Ground:i}}).then(o=>{o.error&&console.error("smoothMoveWithRotationOnGround:",o.error)}).catch(o=>{console.error("smoothMoveWithRotationOnGround:",o)})},to=(r,A,e)=>{r.callUeFunc({f:"HighlightFeature",p:{id:A,HlId:e}}).then(t=>{t.error&&console.error("HighlightFeature:",t.error)}).catch(t=>{console.error("HighlightFeature:",t)})},ro=(r,A,e,t)=>{r.callUeFunc({f:"HighlightFeatureAndFlyTo",p:{id:A,HlId:e,Duration:t}}).then(n=>{n.error&&console.error("HighlightFeatureAndFlyTo:",n.error)}).catch(n=>{console.error("HighlightFeatureAndFlyTo:",n)})},no=(r,A,e)=>{r.callUeFunc({f:"SetLayerVisible",p:{id:A,LayerJson:e}}).then(t=>{t.error&&console.error("SetLayerVisible:",t.error)}).catch(t=>{console.error("SetLayerVisible:",t)})},so=(r,A,e)=>{r.callUeFunc({f:"SetLayerColor",p:{id:A,LayerJson:e}}).then(t=>{t.error&&console.error("SetLayerColor:",t.error)}).catch(t=>{console.error("SetLayerColor:",t)})},Ve=(r,A,e,t)=>{r.callUeFunc({f:"smoothMove",p:{id:A,Destination:e,Time:t}}).then(n=>{n.error&&console.error("smoothMove:",n.error)}).catch(n=>{console.error("smoothMove:",n)})},yn=async(r,A,e,t)=>{const n=await r.callUeFunc({f:"callFunction",p:{id:A,fn:e,p:t}});return n.error&&(console.error("callFunction:",n.error),console.error(`id: ${A} fn: ${e} param: ${t}`)),n.re??void 0},io=(r,A,e,t)=>{r.callUeFunc({f:"SetNodePosition",p:{id:A,NodeName:e,NodePosition:t}}).then(n=>{n.error&&console.error("SetNodePosition:",n.error)}).catch(n=>{console.error("SetNodePosition:",n)})},oo=(r,A,e,t)=>{r.callUeFunc({f:"SetNodeRotation",p:{id:A,NodeName:e,NodeRotation:t}}).then(n=>{n.error&&console.error("SetNodeRotation:",n.error)}).catch(n=>{console.error("SetNodeRotation:",n)})},ao=(r,A,e,t)=>{r.callUeFunc({f:"SetNodeScale",p:{id:A,NodeName:e,NodeScale:t}}).then(n=>{n.error&&console.error("SetNodeScale:",n.error)}).catch(n=>{console.error("SetNodeScale:",n)})},TA=async(r,A)=>{if(A.mode=="Follow"){const t=c.ESSceneObject.getSceneObject(A.objectId);A.objectId=t?(t.components.main??t).id:A.objectId}else if(A.mode=="Line"){const t=c.ESSceneObject.getSceneObject(A.geoLineStringId);A.geoLineStringId=t?(t.components.main??t).id:A.geoLineStringId}const e=await r.callUeFunc({f:"ChangeNavigationMode",p:A});if(e.error){console.error("ChangeNavigationMode:",e.error);return}return e},lo=async(r,A)=>{const e=await r.callUeFunc({f:"setGlobalProperty",p:A});if(e.error){console.error("setGlobalProperty:",e.error);return}return e},co=async r=>{const A=await r.callUeFunc({f:"Quit",p:void 0});if(A.error){console.error("Quit:",A.error);return}return A},uo=async(r,A,e,t)=>{console.log("pickCallFunc",A,e,t);const n=await r.callUeFunc({f:"pick",p:{screenPosition:A,parentInfo:t}});if(!n.re&&(n.error||n.error=="")){console.error("pick:",n.error==""?"未获取到结果":n.error);return}let s=n.re.id,i,o=s?c.ESSceneObject.getSceneObject(s):void 0;return o&&o.parentID&&(o=c.ESSceneObject.getSceneObject(o.parentID)),i=new c.ESJPickedResult(n.re,o,n.re.features,n.re.add,e,A),o&&Reflect.has(o,"allowPicking")&&Reflect.has(o,"pickedEvent")&&(o.allowPicking??!1)&&o.pickedEvent.emit(i),o&&Reflect.has(o,"allowPicking")&&!o.allowPicking?new c.ESJPickedResult:i},ho=async(r,A)=>{const e=await r.callUeFunc({f:"pickPosition",p:{screenPosition:A}});if(!e.re&&(e.error||e.error=="")){console.error("pickPosition",e.error==""?"未获取到结果":e.error);return}const{position:t}=e.re;return t},go=async(r,A,e,t="ECC_Visibility")=>{const n=await r.callUeFunc({f:"GetHeightByLonLat",p:{Lon:A,Lat:e,Channel:t}});if(n.error){console.warn(`GetHeightByLonLat:${n.error}`);return}return n.re},Bo=async(r,A,e="ECC_Visibility")=>{const t=await r.callUeFunc({f:"GetHeightsByLonLats",p:{LonLats:A,Channel:e}});if(t.error){console.warn(`GetHeightsByLonLats:${t.error}`);return}t.re.heights.includes(null)&&console.warn("注意! GetHeightsByLonLats: 存在高度为null的点. there are points with a height of null");try{return t.re.heights}catch{return}},fo=async(r,A=64,e=64)=>{const t=await r.callUeFunc({f:"capture",p:{resx:A,resy:e}});if(t.error){console.warn(t.error);return}return t.re.image},wo=async(r,A,e=[64,64])=>{const t=await r.callUeFunc({f:"partialCapture",p:{startPos:A,size:e}});if(t.error){console.warn(t.error);return}return t.re.image},po=async(r,A)=>{const e=await r.callUeFunc({f:"LonLatAltToScreenPosition",p:{LonLatAlt:A}});return e.error&&console.warn(e.error),e.re},Co=async(r,A)=>{const e=await r.callUeFunc({f:"UEPositionToLonLatAlt",p:{UEPosition:A}});if(e.error){console.warn(e.error);return}return[...e.re.LonLatAlt]},vo=async(r,A)=>{const e=await r.callUeFunc({f:"GetAllSocketNamesByActorTag",p:{ActorTag:A}});if(e.error){console.warn(e.error);return}return[...e.re.socketNames]},mo=async r=>{const A=await r.callUeFunc({f:"GetVersion",p:void 0});if(A.error){console.warn("GetVersion:",A.error);return}return A.re.version},Fo=async(r,A)=>{const e=await r.callUeFunc({f:"GetBoundSphere",p:{id:A}});if(e.error){console.warn(e.error);return}return e.re},Qo=async(r,A)=>{const e=await r.callUeFunc({f:"GetBoundSphereWithChildren",p:{id:A}});if(e.error){console.warn(`GetBoundSphereWithChildren:${e.error}`);return}return e.re},Uo=async(r,A)=>{const e=await r.callUeFunc({f:"GetStrokeMaterialParamInfo",p:{id:A}});if(e.error){console.warn(`GetStrokeMaterialParamInfo:${e.error}`);return}return e.re},Eo=async(r,A)=>{const e=await r.callUeFunc({f:"GetFillMaterialParamInfo",p:{id:A}});if(e.error){console.warn(`GetFillMaterialParamInfo:${e.error}`);return}return e.re},yo=async(r,A)=>{const e=await r.callUeFunc({f:"getGlobalProperty",p:{props:A}});if(e.error){console.warn(`getGlobalProperty:${e.error}`);return}return e.re},So=async(r,A)=>{const e=await r.callUeFunc({f:"GetObjectByInfo",p:{info:A}});if(e.error){console.warn(`GetObjectByInfo:${e.error}`);return}return e.re},Io=async(r,A,e)=>await r.callUeFunc({f:"BindActorByTag",p:{ID:A,ActorTag:e}}),To=async r=>await r.callUeFunc({f:"RestoreOriginalScene",p:void 0}),Ho=async(r,A)=>await r.callUeFunc({f:"UnBindActorByID",p:{ID:A}}),Lo=async(r,A)=>await r.callUeFunc({f:"UnBindActorByTag",p:{ActorTag:A}}),bo=async(r,A,e)=>await r.callUeFunc({f:"CreateActorByClass",p:{ID:A,ActorClass:e}}),Mo=async function(r,A,e){return await r.callUeFunc({f:"Bind3DTilesetByTag",p:{ID:A,ActorTag:e}})},Do=async function(r,A){return await r.callUeFunc({f:"UnBind3DTilesetByTag",p:{ActorTag:A}})},Ro=async function(r,A){return await r.callUeFunc({f:"UnBind3DTilesetById",p:{ID:A}})},xo=async function(r,A,e,t){return await r.callUeFunc({f:"BindImageryByTag",p:{ID:A,ActorTag:e,ComponentTag:t}})},Po=async function(r,A,e){return await r.callUeFunc({f:"UnBindImageryByTag",p:{ActorTag:A,ComponentTag:e}})},Ko=async function(r,A){return await r.callUeFunc({f:"UnBindImageryById",p:{ID:A}})},Go=async function(r,A,e,t){return await r.callUeFunc({f:"GetIdByComponentNameAndHitItem",p:{id:A,ComponentName:e,HitItem:t}})},ko=async function(r,A="ECC_Visibility"){return await r.callUeFunc({f:"GetCameraRelativeHeight",p:{Channel:A}})},No=async function(r,A,e,t){const n=await r.callUeFunc({f:"SaveStringToFile",p:{String:A,Path:e??"undefine",File:t??"data.txt"}});return n.error!==""&&console.warn("SaveStringToFile: ",n.error),n},_o=async function(r,A,e=!0){const t=await r.callUeFunc({f:"HighlightActorByTag",p:{ActorTag:A,Highlight:e}});return t.error!==""&&console.warn("HighlightActorByTag: ",t.error),t},Vo=async function(r,A){const e=await r.callUeFunc({f:"SendCustomMessage",p:{Message:A}});return e.error!==""&&console.warn("SendCustomMessage: ",e.error),e},Oo=async function(r){const A=await r.callUeFunc({f:"GetStatus",p:void 0});if(A.error){console.warn(`GetStatus:${A.error}`);return}return A.re},Wo=async(r,A,e,t,n=!0)=>{const s=await r.callUeFunc({f:"startEditing",p:{sceneObjectID:A,editingID:e,modes:t,useKeyToSwitch:n}});if(s.error){console.error("startEditing:",s.error);return}return s},Xo=async r=>{const A=await r.callUeFunc({f:"stopEditing",p:void 0});if(A.error){console.error("stopEditing:",A.error);return}return A},Jo=async(r,A,e)=>{const t=await r.callUeFunc({f:"moveObjects",p:{sceneObjectIDs:A,editingID:e}});if(t.error){console.error("moveObjects:",t.error);return}return t},zo=async r=>{const A=await r.callUeFunc({f:"GetTilesetMaterialIDList",p:void 0});if(A.error){console.error("GetTilesetMaterialIDList:",A.error);return}return A.re.materialIDList};class Oe extends c.Destroyable{}var Sn={exports:{}},Yo;function ad(){return Yo||(Yo=1,function(r){const A={};A.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)},A.localCName=A.generateIdentifier(),A.splitLines=function(e){return e.trim().split(`
|
|
1
|
+
var EarthSDK3_UE=function(C,c){"use strict";var qw=Object.defineProperty;var jw=(C,c,Be)=>c in C?qw(C,c,{enumerable:!0,configurable:!0,writable:!0,value:Be}):C[c]=Be;var p=(C,c,Be)=>jw(C,typeof c!="symbol"?c+"":c,Be);var od;const Be={...c.ESViewer.defaults,geoReferenceOrigin:void 0,keepWorldOriginNearCamera:!1,useCache:!0,widgetInteractionDistance:200,memReportInterval:10,sceneControlled:!0,brightness:0,emissiveIntensity:1,statusUpdateInterval:.5,baseUrl:((od=window==null?void 0:window.location)==null?void 0:od.href)??"",screenPercentage:-1,antiAliasingMethod:"default"},zi=()=>({...c.ESViewer.createCommonProps(),apiKey:"",apiUrl:"",secretKey:"",speechVoiceMode:"",geoReferenceOrigin:c.reactArrayWithUndefined(void 0),keepWorldOriginNearCamera:void 0,useCache:void 0,widgetInteractionDistance:void 0,memReportInterval:void 0,sceneControlled:void 0,brightness:void 0,emissiveIntensity:void 0,statusUpdateInterval:void 0,baseUrl:void 0,screenPercentage:void 0,antiAliasingMethod:void 0});function vr(){const r=zi(),A=[];return Object.keys(r).forEach(e=>{A.push(e)}),A}function Fn(r){const{defaults:A}=LA,e=vr(),t={};return e.forEach(n=>{t[n]=r[n]??A[n]}),t}const fe=async(r,A,e,t,n,s="default")=>{const i=await r.callUeFunc({f:"flyTo",p:{id:A,duration:e,flyToParam:t,position:n,flyMode:s}});if(i.error){console.error(i.error);return}return i.re},Qn=async(r,A)=>{const e=await r.callUeFunc({f:"destroy",p:{id:A}});return e.error&&console.error(e.error),e},$A=(r,A)=>{r.callUeFunc({f:"calcFlyToParam",p:{id:A}}).then(e=>{e.error&&console.error("calcFlyToParam:",e.error)}).catch(e=>{console.error("calcFlyToParam:",e)})},Yi=(r,A)=>{r.callUeFunc({f:"refreshTileset",p:{id:A}}).then(e=>{e.error&&console.error("refreshTileset:",e.error)}).catch(e=>{console.error("refreshTileset:",e)})},Ke=async(r,A,e,t,n,s="default")=>{const i=await r.callUeFunc({f:"flyIn",p:{id:A,position:e,rotation:t,duration:n,flyMode:s}});if(i.error){console.error(i.error);return}return i.re},$i=async(r,A)=>{if(!r){console.warn("DefaultCameraFlyIn: viewer is undefined");return}const e=await r.callUeFunc({f:"DefaultCameraFlyIn",p:{Duration:A??1}});if(e.error){console.error("DefaultCameraFlyIn:",e.error);return}return e},Zi=async r=>{if(!r){console.warn("StartVoice:viewer is undefined");return}const A=await r.callUeFunc({f:"StartVoice",p:{}});if(A.error){console.error("StartVoice:",A.error);return}return A},qi=async r=>{if(!r){console.warn("StopVoice:viewer is undefined");return}const A=await r.callUeFunc({f:"StopVoice",p:{}});if(A.error){console.error("StopVoice:",A.error);return}return A},ji=async(r,A)=>{if(!r){console.warn("mountPakFiles:viewer is undefined");return}const e=await r.callUeFunc({f:"MountPakFiles",p:{json:A}});if(e.error){console.error("mountPakFiles:",e.error);return}return e},Ao=async r=>{if(!r){console.warn("generateMemReport:viewer is undefined");return}const A=await r.callUeFunc({f:"GenerateMemReport",p:{}});if(A.error){console.error("generateMemReport:",A.error);return}return A},Un=async(r,A)=>{const e=await r.callUeFunc({f:"resetWithCurrentCamera",p:{id:A}});return e.error&&console.error("resetWithCurrentCamera:",e.error),e},Ge=(r,A,e,t,n)=>{r.callUeFunc({f:"smoothMoveWithRotation",p:{id:A,Destination:e,NewRotation:t,Time:n}}).then(s=>{s.error&&console.error("smoothMoveWithRotation:",s.error)}).catch(s=>{console.error("smoothMoveWithRotation:",s)})},ke=(r,A,e,t,n,s)=>{r.callUeFunc({f:"smoothMoveOnGround",p:{id:A,Lon:e,Lat:t,Ground:n,Time:s}}).then(i=>{i.error&&console.error("smoothMoveOnGround:",i.error)}).catch(i=>{console.error("smoothMoveOnGround:",i)})},Ne=(r,A,e,t,n,s,i)=>{r.callUeFunc({f:"smoothMoveWithRotationOnGround",p:{id:A,NewRotation:e,Lon:t,Lat:n,Time:s,Ground:i}}).then(o=>{o.error&&console.error("smoothMoveWithRotationOnGround:",o.error)}).catch(o=>{console.error("smoothMoveWithRotationOnGround:",o)})},eo=(r,A,e)=>{r.callUeFunc({f:"HighlightFeature",p:{id:A,HlId:e}}).then(t=>{t.error&&console.error("HighlightFeature:",t.error)}).catch(t=>{console.error("HighlightFeature:",t)})},to=(r,A,e,t)=>{r.callUeFunc({f:"HighlightFeatureAndFlyTo",p:{id:A,HlId:e,Duration:t}}).then(n=>{n.error&&console.error("HighlightFeatureAndFlyTo:",n.error)}).catch(n=>{console.error("HighlightFeatureAndFlyTo:",n)})},ro=(r,A,e)=>{r.callUeFunc({f:"SetLayerVisible",p:{id:A,LayerJson:e}}).then(t=>{t.error&&console.error("SetLayerVisible:",t.error)}).catch(t=>{console.error("SetLayerVisible:",t)})},no=(r,A,e)=>{r.callUeFunc({f:"SetLayerColor",p:{id:A,LayerJson:e}}).then(t=>{t.error&&console.error("SetLayerColor:",t.error)}).catch(t=>{console.error("SetLayerColor:",t)})},_e=(r,A,e,t)=>{r.callUeFunc({f:"smoothMove",p:{id:A,Destination:e,Time:t}}).then(n=>{n.error&&console.error("smoothMove:",n.error)}).catch(n=>{console.error("smoothMove:",n)})},En=async(r,A,e,t)=>{const n=await r.callUeFunc({f:"callFunction",p:{id:A,fn:e,p:t}});return n.error&&(console.error("callFunction:",n.error),console.error(`id: ${A} fn: ${e} param: ${t}`)),n.re??void 0},so=(r,A,e,t)=>{r.callUeFunc({f:"SetNodePosition",p:{id:A,NodeName:e,NodePosition:t}}).then(n=>{n.error&&console.error("SetNodePosition:",n.error)}).catch(n=>{console.error("SetNodePosition:",n)})},io=(r,A,e,t)=>{r.callUeFunc({f:"SetNodeRotation",p:{id:A,NodeName:e,NodeRotation:t}}).then(n=>{n.error&&console.error("SetNodeRotation:",n.error)}).catch(n=>{console.error("SetNodeRotation:",n)})},oo=(r,A,e,t)=>{r.callUeFunc({f:"SetNodeScale",p:{id:A,NodeName:e,NodeScale:t}}).then(n=>{n.error&&console.error("SetNodeScale:",n.error)}).catch(n=>{console.error("SetNodeScale:",n)})},TA=async(r,A)=>{if(A.mode=="Follow"){const t=c.ESSceneObject.getSceneObject(A.objectId);A.objectId=t?(t.components.main??t).id:A.objectId}else if(A.mode=="Line"){const t=c.ESSceneObject.getSceneObject(A.geoLineStringId);A.geoLineStringId=t?(t.components.main??t).id:A.geoLineStringId}const e=await r.callUeFunc({f:"ChangeNavigationMode",p:A});if(e.error){console.error("ChangeNavigationMode:",e.error);return}return e},ao=async(r,A)=>{const e=await r.callUeFunc({f:"setGlobalProperty",p:A});if(e.error){console.error("setGlobalProperty:",e.error);return}return e},lo=async r=>{const A=await r.callUeFunc({f:"Quit",p:void 0});if(A.error){console.error("Quit:",A.error);return}return A},co=async(r,A,e,t)=>{console.log("pickCallFunc",A,e,t);const n=await r.callUeFunc({f:"pick",p:{screenPosition:A,parentInfo:t}});if(!n.re&&(n.error||n.error=="")){console.error("pick:",n.error==""?"未获取到结果":n.error);return}let s=n.re.id,i,o=s?c.ESSceneObject.getSceneObject(s):void 0;return o&&o.parentID&&(o=c.ESSceneObject.getSceneObject(o.parentID)),i=new c.ESJPickedResult(n.re,o,n.re.features,n.re.add,e,A),o&&Reflect.has(o,"allowPicking")&&Reflect.has(o,"pickedEvent")&&(o.allowPicking??!1)&&o.pickedEvent.emit(i),o&&Reflect.has(o,"allowPicking")&&!o.allowPicking?new c.ESJPickedResult:i},uo=async(r,A)=>{const e=await r.callUeFunc({f:"pickPosition",p:{screenPosition:A}});if(!e.re&&(e.error||e.error=="")){console.error("pickPosition",e.error==""?"未获取到结果":e.error);return}const{position:t}=e.re;return t},ho=async(r,A,e,t="ECC_Visibility")=>{const n=await r.callUeFunc({f:"GetHeightByLonLat",p:{Lon:A,Lat:e,Channel:t}});if(n.error){console.warn(`GetHeightByLonLat:${n.error}`);return}return n.re},go=async(r,A,e="ECC_Visibility")=>{const t=await r.callUeFunc({f:"GetHeightsByLonLats",p:{LonLats:A,Channel:e}});if(t.error){console.warn(`GetHeightsByLonLats:${t.error}`);return}t.re.heights.includes(null)&&console.warn("注意! GetHeightsByLonLats: 存在高度为null的点. there are points with a height of null");try{return t.re.heights}catch{return}},Bo=async(r,A=64,e=64)=>{const t=await r.callUeFunc({f:"capture",p:{resx:A,resy:e}});if(t.error){console.warn(t.error);return}return t.re.image},fo=async(r,A,e=[64,64])=>{const t=await r.callUeFunc({f:"partialCapture",p:{startPos:A,size:e}});if(t.error){console.warn(t.error);return}return t.re.image},wo=async(r,A)=>{const e=await r.callUeFunc({f:"LonLatAltToScreenPosition",p:{LonLatAlt:A}});return e.error&&console.warn(e.error),e.re},po=async(r,A)=>{const e=await r.callUeFunc({f:"UEPositionToLonLatAlt",p:{UEPosition:A}});if(e.error){console.warn(e.error);return}return[...e.re.LonLatAlt]},Co=async(r,A)=>{const e=await r.callUeFunc({f:"GetAllSocketNamesByActorTag",p:{ActorTag:A}});if(e.error){console.warn(e.error);return}return[...e.re.socketNames]},vo=async r=>{const A=await r.callUeFunc({f:"GetVersion",p:void 0});if(A.error){console.warn("GetVersion:",A.error);return}return A.re.version},mo=async(r,A)=>{const e=await r.callUeFunc({f:"GetBoundSphere",p:{id:A}});if(e.error){console.warn(e.error);return}return e.re},Fo=async(r,A)=>{const e=await r.callUeFunc({f:"GetBoundSphereWithChildren",p:{id:A}});if(e.error){console.warn(`GetBoundSphereWithChildren:${e.error}`);return}return e.re},Qo=async(r,A)=>{const e=await r.callUeFunc({f:"GetStrokeMaterialParamInfo",p:{id:A}});if(e.error){console.warn(`GetStrokeMaterialParamInfo:${e.error}`);return}return e.re},Uo=async(r,A)=>{const e=await r.callUeFunc({f:"GetFillMaterialParamInfo",p:{id:A}});if(e.error){console.warn(`GetFillMaterialParamInfo:${e.error}`);return}return e.re},Eo=async(r,A)=>{const e=await r.callUeFunc({f:"getGlobalProperty",p:{props:A}});if(e.error){console.warn(`getGlobalProperty:${e.error}`);return}return e.re},yo=async(r,A)=>{const e=await r.callUeFunc({f:"GetObjectByInfo",p:{info:A}});if(e.error){console.warn(`GetObjectByInfo:${e.error}`);return}return e.re},So=async(r,A,e)=>await r.callUeFunc({f:"BindActorByTag",p:{ID:A,ActorTag:e}}),Io=async r=>await r.callUeFunc({f:"RestoreOriginalScene",p:void 0}),To=async(r,A)=>await r.callUeFunc({f:"UnBindActorByID",p:{ID:A}}),Ho=async(r,A)=>await r.callUeFunc({f:"UnBindActorByTag",p:{ActorTag:A}}),Lo=async(r,A,e)=>await r.callUeFunc({f:"CreateActorByClass",p:{ID:A,ActorClass:e}}),bo=async function(r,A,e){return await r.callUeFunc({f:"Bind3DTilesetByTag",p:{ID:A,ActorTag:e}})},Mo=async function(r,A){return await r.callUeFunc({f:"UnBind3DTilesetByTag",p:{ActorTag:A}})},Do=async function(r,A){return await r.callUeFunc({f:"UnBind3DTilesetById",p:{ID:A}})},Ro=async function(r,A,e,t){return await r.callUeFunc({f:"BindImageryByTag",p:{ID:A,ActorTag:e,ComponentTag:t}})},xo=async function(r,A,e){return await r.callUeFunc({f:"UnBindImageryByTag",p:{ActorTag:A,ComponentTag:e}})},Po=async function(r,A){return await r.callUeFunc({f:"UnBindImageryById",p:{ID:A}})},Ko=async function(r,A,e,t){return await r.callUeFunc({f:"GetIdByComponentNameAndHitItem",p:{id:A,ComponentName:e,HitItem:t}})},Go=async function(r,A="ECC_Visibility"){return await r.callUeFunc({f:"GetCameraRelativeHeight",p:{Channel:A}})},ko=async function(r,A,e,t){const n=await r.callUeFunc({f:"SaveStringToFile",p:{String:A,Path:e??"undefine",File:t??"data.txt"}});return n.error!==""&&console.warn("SaveStringToFile: ",n.error),n},No=async function(r,A,e=!0){const t=await r.callUeFunc({f:"HighlightActorByTag",p:{ActorTag:A,Highlight:e}});return t.error!==""&&console.warn("HighlightActorByTag: ",t.error),t},_o=async function(r,A){const e=await r.callUeFunc({f:"SendCustomMessage",p:{Message:A}});return e.error!==""&&console.warn("SendCustomMessage: ",e.error),e},Vo=async function(r){const A=await r.callUeFunc({f:"GetStatus",p:void 0});if(A.error){console.warn(`GetStatus:${A.error}`);return}return A.re},Oo=async(r,A,e,t,n=!0)=>{const s=await r.callUeFunc({f:"startEditing",p:{sceneObjectID:A,editingID:e,modes:t,useKeyToSwitch:n}});if(s.error){console.error("startEditing:",s.error);return}return s},Wo=async r=>{const A=await r.callUeFunc({f:"stopEditing",p:void 0});if(A.error){console.error("stopEditing:",A.error);return}return A},Xo=async(r,A,e)=>{const t=await r.callUeFunc({f:"moveObjects",p:{sceneObjectIDs:A,editingID:e}});if(t.error){console.error("moveObjects:",t.error);return}return t},Jo=async r=>{const A=await r.callUeFunc({f:"GetTilesetMaterialIDList",p:void 0});if(A.error){console.error("GetTilesetMaterialIDList:",A.error);return}return A.re.materialIDList};class Ve extends c.Destroyable{}var yn={exports:{}},zo;function ad(){return zo||(zo=1,function(r){const A={};A.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)},A.localCName=A.generateIdentifier(),A.splitLines=function(e){return e.trim().split(`
|
|
2
2
|
`).map(t=>t.trim())},A.splitSections=function(e){return e.split(`
|
|
3
3
|
m=`).map((n,s)=>(s>0?"m="+n:n).trim()+`\r
|
|
4
4
|
`)},A.getDescription=function(e){const t=A.splitSections(e);return t&&t[0]},A.getMediaSections=function(e){const t=A.splitSections(e);return t.shift(),t},A.matchPrefix=function(e,t){return A.splitLines(e).filter(n=>n.indexOf(t)===0)},A.parseCandidate=function(e){let t;e.indexOf("a=candidate:")===0?t=e.substring(12).split(" "):t=e.substring(10).split(" ");const n={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let s=8;s<t.length;s+=2)switch(t[s]){case"raddr":n.relatedAddress=t[s+1];break;case"rport":n.relatedPort=parseInt(t[s+1],10);break;case"tcptype":n.tcpType=t[s+1];break;case"ufrag":n.ufrag=t[s+1],n.usernameFragment=t[s+1];break;default:n[t[s]]===void 0&&(n[t[s]]=t[s+1]);break}return n},A.writeCandidate=function(e){const t=[];t.push(e.foundation);const n=e.component;n==="rtp"?t.push(1):n==="rtcp"?t.push(2):t.push(n),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);const s=e.type;return t.push("typ"),t.push(s),s!=="host"&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&e.protocol.toLowerCase()==="tcp"&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},A.parseIceOptions=function(e){return e.substring(14).split(" ")},A.parseRtpMap=function(e){let t=e.substring(9).split(" ");const n={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),n.name=t[0],n.clockRate=parseInt(t[1],10),n.channels=t.length===3?parseInt(t[2],10):1,n.numChannels=n.channels,n},A.writeRtpMap=function(e){let t=e.payloadType;e.preferredPayloadType!==void 0&&(t=e.preferredPayloadType);const n=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(n!==1?"/"+n:"")+`\r
|
|
@@ -29,7 +29,7 @@ a=ice-pwd:`+e.password+`\r
|
|
|
29
29
|
o=`+(n||"thisisadapterortc")+" "+s+" "+i+` IN IP4 127.0.0.1\r
|
|
30
30
|
s=-\r
|
|
31
31
|
t=0 0\r
|
|
32
|
-
`},A.getDirection=function(e,t){const n=A.splitLines(e);for(let s=0;s<n.length;s++)switch(n[s]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return n[s].substring(2)}return t?A.getDirection(t):"sendrecv"},A.getKind=function(e){return A.splitLines(e)[0].split(" ")[0].substring(2)},A.isRejected=function(e){return e.split(" ",2)[1]==="0"},A.parseMLine=function(e){const n=A.splitLines(e)[0].substring(2).split(" ");return{kind:n[0],port:parseInt(n[1],10),protocol:n[2],fmt:n.slice(3).join(" ")}},A.parseOLine=function(e){const n=A.matchPrefix(e,"o=")[0].substring(2).split(" ");return{username:n[0],sessionId:n[1],sessionVersion:parseInt(n[2],10),netType:n[3],addressType:n[4],address:n[5]}},A.isValidSDP=function(e){if(typeof e!="string"||e.length===0)return!1;const t=A.splitLines(e);for(let n=0;n<t.length;n++)if(t[n].length<2||t[n].charAt(1)!=="=")return!1;return!0},r.exports=A}(
|
|
32
|
+
`},A.getDirection=function(e,t){const n=A.splitLines(e);for(let s=0;s<n.length;s++)switch(n[s]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return n[s].substring(2)}return t?A.getDirection(t):"sendrecv"},A.getKind=function(e){return A.splitLines(e)[0].split(" ")[0].substring(2)},A.isRejected=function(e){return e.split(" ",2)[1]==="0"},A.parseMLine=function(e){const n=A.splitLines(e)[0].substring(2).split(" ");return{kind:n[0],port:parseInt(n[1],10),protocol:n[2],fmt:n.slice(3).join(" ")}},A.parseOLine=function(e){const n=A.matchPrefix(e,"o=")[0].substring(2).split(" ");return{username:n[0],sessionId:n[1],sessionVersion:parseInt(n[2],10),netType:n[3],addressType:n[4],address:n[5]}},A.isValidSDP=function(e){if(typeof e!="string"||e.length===0)return!1;const t=A.splitLines(e);for(let n=0;n<t.length;n++)if(t[n].length<2||t[n].charAt(1)!=="=")return!1;return!0},r.exports=A}(yn)),yn.exports}var Yo=ad(),vA,$,mr={d:(r,A)=>{for(var e in A)mr.o(A,e)&&!mr.o(r,e)&&Object.defineProperty(r,e,{enumerable:!0,get:A[e]})},o:(r,A)=>Object.prototype.hasOwnProperty.call(r,A)},T={};mr.d(T,{Dz:()=>Ia,g$:()=>ea,Lt:()=>jo,Q9:()=>Aa,qf:()=>Tn,hV:()=>Ra,z$:()=>Ma,J0:()=>Ln,De:()=>Id,$C:()=>qA,al:()=>ca,_W:()=>da,tz:()=>la,Nu:()=>ba,zg:()=>Ga,vp:()=>Sa,vU:()=>Q,wF:()=>va,rv:()=>Ha,Nh:()=>La,ss:()=>Ka,qW:()=>Ua,QL:()=>Qa,cf:()=>Na,eM:()=>Ca,Yd:()=>g,iM:()=>$o,qy:()=>HA,ce:()=>pd,sK:()=>M,Ok:()=>_,q5:()=>Da,g:()=>Au,xl:()=>wa,I:()=>pa,bx:()=>Hn,dD:()=>ya,Ib:()=>Oe,Az:()=>z,Iw:()=>GA,qY:()=>In,db:()=>qo,mR:()=>We,Tn:()=>Sn,rV:()=>ma,gh:()=>ha,Mi:()=>ga,j:()=>Ba,YB:()=>fa,i5:()=>Fa,x_:()=>ZA,Am:()=>Rn,eR:()=>ta,r8:()=>ua,u3:()=>ka,vd:()=>na,iV:()=>ia,jZ:()=>sa,SW:()=>aa,ZH:()=>oa,Ni:()=>Oa,lh:()=>ra,bq:()=>Zo,$f:()=>Ja,eu:()=>Ea,Ax:()=>Qd,Mc:()=>Fd});let g=class{static GetStackTrace(){const A=new Error;let e="No Stack Available for this browser";return A.stack&&(e=A.stack.toString().replace(/Error/g,"")),e}static SetLoggerVerbosity(A){this.verboseLogLevel!=null&&(this.verboseLogLevel=A)}static Log(A,e,t){if(t>this.verboseLogLevel)return;const n=`Level: Log
|
|
33
33
|
Msg: ${e}
|
|
34
34
|
Caller: ${A}`;console.log(n)}static Info(A,e,t){if(t>this.verboseLogLevel)return;const n=`Level: Info
|
|
35
35
|
Msg: ${e}`;console.info(n)}static Error(A,e){const t=`Level: Error
|
|
@@ -38,19 +38,19 @@ Caller: ${A}`;console.error(t)}static Warning(A,e){const t=`Level: Warning
|
|
|
38
38
|
Caller: ${A}
|
|
39
39
|
Msg: ${e}`;console.warn(t)}};g.verboseLogLevel=5,function(r){r.LIST_STREAMERS="listStreamers",r.SUBSCRIBE="subscribe",r.UNSUBSCRIBE="unsubscribe",r.ICE_CANDIDATE="iceCandidate",r.OFFER="offer",r.ANSWER="answer",r.DATACHANNELREQUEST="dataChannelRequest",r.SFURECVDATACHANNELREADY="peerDataChannelsReady",r.PONG="pong"}(vA||(vA={}));class HA{payload(){return g.Log(g.GetStackTrace(),`Sending =>
|
|
40
40
|
`+JSON.stringify(this,void 0,4),6),JSON.stringify(this)}}let ld=class extends HA{constructor(){super(),this.type=vA.LIST_STREAMERS}};class cd extends HA{constructor(A){super(),this.type=vA.SUBSCRIBE,this.streamerId=A}}class dd extends HA{constructor(){super(),this.type=vA.UNSUBSCRIBE}}class ud extends HA{constructor(A){super(),this.type=vA.PONG,this.time=A}}class hd extends HA{constructor(A){super(),this.type=vA.OFFER,A&&(this.type=A.type,this.sdp=A.sdp)}}class gd extends HA{constructor(A){super(),this.type=vA.ANSWER,A&&(this.type=A.type,this.sdp=A.sdp)}}let Bd=class extends HA{constructor(){super(),this.type=vA.DATACHANNELREQUEST}};class fd extends HA{constructor(){super(),this.type=vA.SFURECVDATACHANNELREADY}}class wd{constructor(A){this.type=vA.ICE_CANDIDATE,this.candidate=A}payload(){return g.Log(g.GetStackTrace(),`Sending =>
|
|
41
|
-
`+JSON.stringify(this,void 0,4),6),JSON.stringify(this)}}(function(r){r.CONFIG="config",r.STREAMER_LIST="streamerList",r.PLAYER_COUNT="playerCount",r.OFFER="offer",r.ANSWER="answer",r.ICE_CANDIDATE="iceCandidate",r.PEER_DATA_CHANNELS="peerDataChannels",r.PING="ping",r.WARNING="warning"})($||($={}));class
|
|
42
|
-
`+JSON.stringify(JSON.parse(A.data),void 0,4),6),this.signallingProtocol.handleMessage(e.type,A.data)}handleOnOpen(A){g.Log(g.GetStackTrace(),"Connected to the signalling server via WebSocket",6),this.onOpen.dispatchEvent(new Event("open"))}handleOnError(){g.Error(g.GetStackTrace(),"WebSocket error")}handleOnClose(A){this.onWebSocketOncloseOverlayMessage(A),g.Log(g.GetStackTrace(),"Disconnected to the signalling server via WebSocket: "+JSON.stringify(A.code)+" - "+A.reason),this.onClose.dispatchEvent(new Event("close"))}requestStreamerList(){const A=new ld;this.webSocket.send(A.payload())}sendSubscribe(A){const e=new cd(A);this.webSocket.send(e.payload())}sendUnsubscribe(){const A=new dd;this.webSocket.send(A.payload())}sendWebRtcOffer(A){const e=new hd(A);this.webSocket.send(e.payload())}sendWebRtcAnswer(A){const e=new gd(A);this.webSocket.send(e.payload())}sendWebRtcDatachannelRequest(){const A=new Bd;this.webSocket.send(A.payload())}sendSFURecvDataChannelReady(){const A=new fd;this.webSocket.send(A.payload())}sendIceCandidate(A){if(g.Log(g.GetStackTrace(),"Sending Ice Candidate"),this.webSocket&&this.webSocket.readyState===this.WS_OPEN_STATE){const e=new wd(A);this.webSocket.send(e.payload())}}close(){var A;(A=this.webSocket)===null||A===void 0||A.close()}onWebSocketOncloseOverlayMessage(A){}onConfig(A){}onStreamerList(A){}onIceCandidate(A){}onWebRtcAnswer(A){}onWebRtcOffer(A){}onWebRtcPeerDataChannels(A){}onPlayerCount(A){}},Cd=class{constructor(A){this.videoElementProvider=A,this.audioElement=document.createElement("Audio"),this.videoElementProvider.setAudioElement(this.audioElement)}handleOnTrack(A){if(g.Log(g.GetStackTrace(),"handleOnTrack "+JSON.stringify(A.streams),6),A.track.id=="probator")return;const e=this.videoElementProvider.getVideoElement();if(A.track&&g.Log(g.GetStackTrace(),"Got track - "+A.track.kind+" id="+A.track.id+" readyState="+A.track.readyState,6),A.track.kind!="audio")return A.track.kind=="video"&&e.srcObject!==A.streams[0]?(e.srcObject=A.streams[0],void g.Log(g.GetStackTrace(),"Set video source from video track ontrack.")):void 0;this.CreateAudioTrack(A.streams[0])}CreateAudioTrack(A){const e=this.videoElementProvider.getVideoElement();e.srcObject!=A&&e.srcObject&&e.srcObject!==A&&(this.audioElement.srcObject=A,g.Log(g.GetStackTrace(),"Created new audio element to play separate audio stream."))}},vd=class{constructor(A){this.freezeFrameHeight=0,this.freezeFrameWidth=0,this.rootDiv=A,this.rootElement=document.createElement("div"),this.rootElement.id="freezeFrame",this.rootElement.style.display="none",this.rootElement.style.pointerEvents="none",this.rootElement.style.position="absolute",this.rootElement.style.zIndex="20",this.imageElement=document.createElement("img"),this.imageElement.style.position="absolute",this.rootElement.appendChild(this.imageElement),this.rootDiv.appendChild(this.rootElement)}setElementForShow(){this.rootElement.style.display="block"}setElementForHide(){this.rootElement.style.display="none"}updateImageElementSource(A){const e=btoa(A.reduce((t,n)=>t+String.fromCharCode(n),""));this.imageElement.src="data:image/jpeg;base64,"+e}setDimensionsFromElementAndResize(){this.freezeFrameHeight=this.imageElement.naturalHeight,this.freezeFrameWidth=this.imageElement.naturalWidth,this.resize()}resize(){if(this.freezeFrameWidth!==0&&this.freezeFrameHeight!==0){let A=0,e=0,t=0,n=0;const s=this.rootDiv.clientWidth/this.rootDiv.clientHeight,i=this.freezeFrameWidth/this.freezeFrameHeight;s<i?(A=this.rootDiv.clientWidth,e=Math.floor(this.rootDiv.clientWidth/i),t=Math.floor(.5*(this.rootDiv.clientHeight-e)),n=0):(A=Math.floor(this.rootDiv.clientHeight*i),e=this.rootDiv.clientHeight,t=0,n=Math.floor(.5*(this.rootDiv.clientWidth-A))),this.rootElement.style.width=this.rootDiv.offsetWidth+"px",this.rootElement.style.height=this.rootDiv.offsetHeight+"px",this.rootElement.style.left="0px",this.rootElement.style.top="0px",this.imageElement.style.width=A+"px",this.imageElement.style.height=e+"px",this.imageElement.style.left=n+"px",this.imageElement.style.top=t+"px"}}};class md{constructor(A){this.receiving=!1,this.size=0,this.jpeg=void 0,this.valid=!1,this.freezeFrameDelay=50,this.freezeFrame=new vd(A)}showFreezeFrame(){this.valid&&this.freezeFrame.setElementForShow()}hideFreezeFrame(){this.valid=!1,this.freezeFrame.setElementForHide()}updateFreezeFrameAndShow(A,e){this.freezeFrame.updateImageElementSource(A),this.freezeFrame.imageElement.onload=()=>{this.freezeFrame.setDimensionsFromElementAndResize(),e()}}processFreezeFrameMessage(A,e){this.receiving||(this.receiving=!0,this.valid=!1,this.size=0,this.jpeg=void 0),this.size=new DataView(A.slice(1,5).buffer).getInt32(0,!0);const t=A.slice(5);if(this.jpeg){const n=new Uint8Array(this.jpeg.length+t.length);n.set(this.jpeg,0),n.set(t,this.jpeg.length),this.jpeg=n}else this.jpeg=t,this.receiving=!0,g.Log(g.GetStackTrace(),`received first chunk of freeze frame: ${this.jpeg.length}/${this.size}`,6);this.jpeg.length===this.size?(this.receiving=!1,this.valid=!0,g.Log(g.GetStackTrace(),`received complete freeze frame ${this.size}`,6),this.updateFreezeFrameAndShow(this.jpeg,e)):this.jpeg.length>this.size&&(g.Error(g.GetStackTrace(),`received bigger freeze frame than advertised: ${this.jpeg.length}/${this.size}`),this.jpeg=void 0,this.receiving=!1)}}class We{constructor(A,e,t,n,s=()=>{}){this.onChange=s,this.onChangeEmit=()=>{},this.id=A,this.description=t,this.label=e,this.value=n}set label(A){this._label=A,this.onChangeEmit(this._value)}get label(){return this._label}get value(){return this._value}set value(A){this._value=A,this.onChange(this._value,this),this.onChangeEmit(this._value)}}class J extends We{constructor(A,e,t,n,s,i=()=>{}){super(A,e,t,n,i);const o=new URLSearchParams(window.location.search);if(s&&o.has(this.id)){const a=this.getUrlParamFlag();this.flag=a}else this.flag=n;this.useUrlParams=s}getUrlParamFlag(){const A=new URLSearchParams(window.location.search);return!!A.has(this.id)&&A.get(this.id)!=="false"&&A.get(this.id)!=="False"}updateURLParams(){if(this.useUrlParams){const A=new URLSearchParams(window.location.search);this.flag===!0?A.set(this.id,"true"):A.set(this.id,"false"),window.history.replaceState({},"",A.toString()!==""?`${location.pathname}?${A}`:`${location.pathname}`)}}enable(){this.flag=!0}get flag(){return!!this.value}set flag(A){this.value=A}}class KA extends We{constructor(A,e,t,n,s,i,o,a=()=>{}){super(A,e,t,i,a),this._min=n,this._max=s;const l=new URLSearchParams(window.location.search);if(o&&l.has(this.id)){const d=Number.parseInt(l.get(this.id));this.number=Number.isNaN(d)?i:d}else this.number=i;this.useUrlParams=o}updateURLParams(){if(this.useUrlParams){const A=new URLSearchParams(window.location.search);A.set(this.id,this.number.toString()),window.history.replaceState({},"",A.toString()!==""?`${location.pathname}?${A}`:`${location.pathname}`)}}set number(A){this.value=this.clamp(A)}get number(){return this.value}clamp(A){return this._min==null&&this._max==null?A:this._min==null?Math.min(this._max,A):this._max==null?Math.max(this._min,A):Math.max(Math.min(this._max,A),this._min)}get min(){return this._min}get max(){return this._max}addOnChangedListener(A){this.onChange=A}}class jo extends We{constructor(A,e,t,n,s,i=()=>{}){super(A,e,t,n,i);const o=new URLSearchParams(window.location.search);if(s&&o.has(this.id)){const a=this.getUrlParamText();this.text=a}else this.text=n;this.useUrlParams=s}getUrlParamText(){var A;const e=new URLSearchParams(window.location.search);return e.has(this.id)&&(A=e.get(this.id))!==null&&A!==void 0?A:""}updateURLParams(){if(this.useUrlParams){const A=new URLSearchParams(window.location.search);A.set(this.id,this.text),window.history.replaceState({},"",A.toString()!==""?`${location.pathname}?${A}`:`${location.pathname}`)}}get text(){return this.value}set text(A){this.value=A}}class Tn extends We{constructor(A,e,t,n,s,i,o=()=>{}){super(A,e,t,[n,n],o),this.options=s;const a=new URLSearchParams(window.location.search),l=i&&a.has(this.id)?this.getUrlParamText():n;this.selected=l,this.useUrlParams=i}getUrlParamText(){var A;const e=new URLSearchParams(window.location.search);return e.has(this.id)&&(A=e.get(this.id))!==null&&A!==void 0?A:""}updateURLParams(){if(this.useUrlParams){const A=new URLSearchParams(window.location.search);A.set(this.id,this.selected),window.history.replaceState({},"",A.toString()!==""?`${location.pathname}?${A}`:`${location.pathname}`)}}addOnChangedListener(A){this.onChange=A}get options(){return this._options}set options(A){this._options=A,this.onChangeEmit(this.selected)}get selected(){return this.value}set selected(A){let e=this.options.filter(t=>t.indexOf(A)!==-1);e.length?this.value=e[0]:(e=this.options.filter(t=>t.indexOf(A.split(" ")[0])!==-1),e.length&&(this.value=e[0]))}}class Aa extends Event{constructor(A){super("afkWarningActivate"),this.data=A}}let Hn=class extends Event{constructor(A){super("afkWarningUpdate"),this.data=A}};class ea extends Event{constructor(){super("afkWarningDeactivate")}}let ta=class extends Event{constructor(){super("afkTimedOut")}},ra=class extends Event{constructor(A){super("videoEncoderAvgQP"),this.data=A}};class na extends Event{constructor(){super("webRtcSdp")}}class sa extends Event{constructor(){super("webRtcAutoConnect")}}let ia=class extends Event{constructor(){super("webRtcConnecting")}};class oa extends Event{constructor(){super("webRtcConnected")}}class aa extends Event{constructor(){super("webRtcFailed")}}let la=class extends Event{constructor(A){super("webRtcDisconnected"),this.data=A}};class ca extends Event{constructor(A){super("dataChannelOpen"),this.data=A}}class da extends Event{constructor(A){super("dataChannelClose"),this.data=A}}class ua extends Event{constructor(A){super("dataChannelError"),this.data=A}}class ha extends Event{constructor(){super("videoInitialized")}}let ga=class extends Event{constructor(){super("streamLoading")}};class Ba extends Event{constructor(){super("streamConnect")}}class fa extends Event{constructor(){super("streamDisconnect")}}class wa extends Event{constructor(){super("streamReconnect")}}class pa extends Event{constructor(A){super("playStreamError"),this.data=A}}class Ca extends Event{constructor(){super("playStream")}}class Ln extends Event{constructor(A){super("playStreamRejected"),this.data=A}}class va extends Event{constructor(A){super("loadFreezeFrame"),this.data=A}}class ma extends Event{constructor(){super("hideFreezeFrame")}}class Fa extends Event{constructor(A){super("statsReceived"),this.data=A}}let Qa=class extends Event{constructor(A){super("streamerListMessage"),this.data=A}};class Ua extends Event{constructor(A){super("latencyTestResult"),this.data=A}}class Ea extends Event{constructor(A){super("initialSettings"),this.data=A}}class Xe extends Event{constructor(A){super("settingsChanged"),this.data=A}}class Fd extends Event{constructor(){super("xrSessionStarted")}}class Qd extends Event{constructor(){super("xrSessionEnded")}}class ya extends Event{constructor(A){super("xrFrame"),this.data=A}}class Sa extends Event{constructor(A){super("playerCount"),this.data=A}}class Ia extends EventTarget{dispatchEvent(A){return super.dispatchEvent(A)}addEventListener(A,e){super.addEventListener(A,e)}removeEventListener(A,e){super.removeEventListener(A,e)}}class Q{}Q.AutoConnect="AutoConnect",Q.AutoPlayVideo="AutoPlayVideo",Q.AFKDetection="TimeoutIfIdle",Q.BrowserSendOffer="OfferToReceive",Q.HoveringMouseMode="HoveringMouse",Q.ForceMonoAudio="ForceMonoAudio",Q.ForceTURN="ForceTURN",Q.FakeMouseWithTouches="FakeMouseWithTouches",Q.IsQualityController="ControlsQuality",Q.MatchViewportResolution="MatchViewportRes",Q.PreferSFU="preferSFU",Q.StartVideoMuted="StartVideoMuted",Q.SuppressBrowserKeys="SuppressBrowserKeys",Q.UseMic="UseMic",Q.KeyboardInput="KeyboardInput",Q.MouseInput="MouseInput",Q.TouchInput="TouchInput",Q.GamepadInput="GamepadInput",Q.XRControllerInput="XRControllerInput";const Ud=r=>Object.getOwnPropertyNames(Q).some(A=>Q[A]===r);class b{}b.AFKTimeoutSecs="AFKTimeout",b.MinQP="MinQP",b.MaxQP="MaxQP",b.WebRTCFPS="WebRTCFPS",b.WebRTCMinBitrate="WebRTCMinBitrate",b.WebRTCMaxBitrate="WebRTCMaxBitrate",b.MaxReconnectAttempts="MaxReconnectAttempts";const Ed=r=>Object.getOwnPropertyNames(b).some(A=>b[A]===r);class $A{}$A.SignallingServerUrl="ss";const yd=r=>Object.getOwnPropertyNames($A).some(A=>$A[A]===r);class _{}_.PreferredCodec="PreferredCodec",_.StreamerId="StreamerId";const Sd=r=>Object.getOwnPropertyNames(_).some(A=>_[A]===r);class Id{constructor(A={}){this.flags=new Map,this.numericParameters=new Map,this.textParameters=new Map,this.optionParameters=new Map;const{initialSettings:e,useUrlParams:t}=A;this._useUrlParams=!!t,this.populateDefaultSettings(this._useUrlParams),e&&this.setSettings(e)}get useUrlParams(){return this._useUrlParams}populateDefaultSettings(A){this.textParameters.set($A.SignallingServerUrl,new jo($A.SignallingServerUrl,"Signalling url","Url of the signalling server",(location.protocol==="https:"?"wss://":"ws://")+window.location.hostname+(window.location.port==="80"||window.location.port===""?"":`:${window.location.port}`),A)),this.optionParameters.set(_.StreamerId,new Tn(_.StreamerId,"Streamer ID","The ID of the streamer to stream.","",[],A)),this.optionParameters.set(_.PreferredCodec,new Tn(_.PreferredCodec,"Preferred Codec","The preferred codec to be used during codec negotiation","H264 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f",function(){const e=[];if(!RTCRtpReceiver.getCapabilities)return e.push("Only available on Chrome"),e;const t=/(VP\d|H26\d|AV1).*/;return RTCRtpReceiver.getCapabilities("video").codecs.forEach(n=>{const s=n.mimeType.split("/")[1]+" "+(n.sdpFmtpLine||"");t.exec(s)!==null&&e.push(s)}),e}(),A)),this.flags.set(Q.AutoConnect,new J(Q.AutoConnect,"Auto connect to stream","Whether we should attempt to auto connect to the signalling server or show a click to start prompt.",!1,A)),this.flags.set(Q.AutoPlayVideo,new J(Q.AutoPlayVideo,"Auto play video","When video is ready automatically start playing it as opposed to showing a play button.",!0,A)),this.flags.set(Q.BrowserSendOffer,new J(Q.BrowserSendOffer,"Browser send offer","Browser will initiate the WebRTC handshake by sending the offer to the streamer",!1,A)),this.flags.set(Q.UseMic,new J(Q.UseMic,"Use microphone","Make browser request microphone access and open an input audio track.",!1,A)),this.flags.set(Q.StartVideoMuted,new J(Q.StartVideoMuted,"Start video muted","Video will start muted if true.",!1,A)),this.flags.set(Q.SuppressBrowserKeys,new J(Q.SuppressBrowserKeys,"Suppress browser keys","Suppress certain browser keys that we use in UE, for example F5 to show shader complexity instead of refresh the page.",!0,A)),this.flags.set(Q.PreferSFU,new J(Q.PreferSFU,"Prefer SFU","Try to connect to the SFU instead of P2P.",!1,A)),this.flags.set(Q.IsQualityController,new J(Q.IsQualityController,"Is quality controller?","True if this peer controls stream quality",!0,A)),this.flags.set(Q.ForceMonoAudio,new J(Q.ForceMonoAudio,"Force mono audio","Force browser to request mono audio in the SDP",!1,A)),this.flags.set(Q.ForceTURN,new J(Q.ForceTURN,"Force TURN","Only generate TURN/Relayed ICE candidates.",!1,A)),this.flags.set(Q.AFKDetection,new J(Q.AFKDetection,"AFK if idle","Timeout the experience if user is AFK for a period.",!1,A)),this.flags.set(Q.MatchViewportResolution,new J(Q.MatchViewportResolution,"Match viewport resolution","Pixel Streaming will be instructed to dynamically resize the video stream to match the size of the video element.",!1,A)),this.flags.set(Q.HoveringMouseMode,new J(Q.HoveringMouseMode,"Control Scheme: Locked Mouse","Either locked mouse, where the pointer is consumed by the video and locked to it, or hovering mouse, where the mouse is not consumed.",!1,A,(e,t)=>{t.label=`Control Scheme: ${e?"Hovering":"Locked"} Mouse`})),this.flags.set(Q.FakeMouseWithTouches,new J(Q.FakeMouseWithTouches,"Fake mouse with touches","A single finger touch is converted into a mouse event. This allows a non-touch application to be controlled partially via a touch device.",!1,A)),this.flags.set(Q.KeyboardInput,new J(Q.KeyboardInput,"Keyboard input","If enabled, send keyboard events to streamer",!0,A)),this.flags.set(Q.MouseInput,new J(Q.MouseInput,"Mouse input","If enabled, send mouse events to streamer",!0,A)),this.flags.set(Q.TouchInput,new J(Q.TouchInput,"Touch input","If enabled, send touch events to streamer",!0,A)),this.flags.set(Q.GamepadInput,new J(Q.GamepadInput,"Gamepad input","If enabled, send gamepad events to streamer",!0,A)),this.flags.set(Q.XRControllerInput,new J(Q.XRControllerInput,"XR controller input","If enabled, send XR controller events to streamer",!0,A)),this.numericParameters.set(b.AFKTimeoutSecs,new KA(b.AFKTimeoutSecs,"AFK timeout","The time (in seconds) it takes for the application to time out if AFK timeout is enabled.",0,null,120,A)),this.numericParameters.set(b.MaxReconnectAttempts,new KA(b.MaxReconnectAttempts,"Max Reconnects","Maximum number of reconnects the application will attempt when a streamer disconnects.",0,999,3,A)),this.numericParameters.set(b.MinQP,new KA(b.MinQP,"Min QP","The lower bound for the quantization parameter (QP) of the encoder. 0 = Best quality, 51 = worst quality.",0,51,0,A)),this.numericParameters.set(b.MaxQP,new KA(b.MaxQP,"Max QP","The upper bound for the quantization parameter (QP) of the encoder. 0 = Best quality, 51 = worst quality.",0,51,51,A)),this.numericParameters.set(b.WebRTCFPS,new KA(b.WebRTCFPS,"Max FPS","The maximum FPS that WebRTC will try to transmit frames at.",1,999,60,A)),this.numericParameters.set(b.WebRTCMinBitrate,new KA(b.WebRTCMinBitrate,"Min Bitrate (kbps)","The minimum bitrate that WebRTC should use.",0,5e5,0,A)),this.numericParameters.set(b.WebRTCMaxBitrate,new KA(b.WebRTCMaxBitrate,"Max Bitrate (kbps)","The maximum bitrate that WebRTC should use.",0,5e5,0,A))}_addOnNumericSettingChangedListener(A,e){this.numericParameters.has(A)&&this.numericParameters.get(A).addOnChangedListener(e)}_addOnOptionSettingChangedListener(A,e){this.optionParameters.has(A)&&this.optionParameters.get(A).addOnChangedListener(e)}getNumericSettingValue(A){if(this.numericParameters.has(A))return this.numericParameters.get(A).number;throw new Error(`There is no numeric setting with the id of ${A}`)}getTextSettingValue(A){if(this.textParameters.has(A))return this.textParameters.get(A).value;throw new Error(`There is no numeric setting with the id of ${A}`)}setNumericSetting(A,e){if(!this.numericParameters.has(A))throw new Error(`There is no numeric setting with the id of ${A}`);this.numericParameters.get(A).number=e}_addOnSettingChangedListener(A,e){this.flags.has(A)&&(this.flags.get(A).onChange=e)}_addOnTextSettingChangedListener(A,e){this.textParameters.has(A)&&(this.textParameters.get(A).onChange=e)}getSettingOption(A){return this.optionParameters.get(A)}isFlagEnabled(A){return this.flags.get(A).flag}setFlagEnabled(A,e){this.flags.has(A)?this.flags.get(A).flag=e:g.Warning(g.GetStackTrace(),`Cannot toggle flag called ${A} - it does not exist in the Config.flags map.`)}setTextSetting(A,e){this.textParameters.has(A)?this.textParameters.get(A).text=e:g.Warning(g.GetStackTrace(),`Cannot set text setting called ${A} - it does not exist in the Config.textParameters map.`)}setOptionSettingOptions(A,e){this.optionParameters.has(A)?this.optionParameters.get(A).options=e:g.Warning(g.GetStackTrace(),`Cannot set text setting called ${A} - it does not exist in the Config.optionParameters map.`)}setOptionSettingValue(A,e){this.optionParameters.has(A)?this.optionParameters.get(A).selected=e:g.Warning(g.GetStackTrace(),`Cannot set text setting called ${A} - it does not exist in the Config.enumParameters map.`)}setFlagLabel(A,e){this.flags.has(A)?this.flags.get(A).label=e:g.Warning(g.GetStackTrace(),`Cannot set label for flag called ${A} - it does not exist in the Config.flags map.`)}setSettings(A){for(const e of Object.keys(A))Ud(e)?this.setFlagEnabled(e,A[e]):Ed(e)?this.setNumericSetting(e,A[e]):yd(e)?this.setTextSetting(e,A[e]):Sd(e)&&this.setOptionSettingValue(e,A[e])}getSettings(){const A={};for(const[e,t]of this.flags.entries())A[e]=t.flag;for(const[e,t]of this.numericParameters.entries())A[e]=t.number;for(const[e,t]of this.textParameters.entries())A[e]=t.text;for(const[e,t]of this.optionParameters.entries())A[e]=t.selected;return A}getFlags(){return Array.from(this.flags.values())}getTextSettings(){return Array.from(this.textParameters.values())}getNumericSettings(){return Array.from(this.numericParameters.values())}getOptionSettings(){return Array.from(this.optionParameters.values())}_registerOnChangeEvents(A){for(const e of this.flags.keys()){const t=this.flags.get(e);t&&(t.onChangeEmit=n=>A.dispatchEvent(new Xe({id:t.id,type:"flag",value:n,target:t})))}for(const e of this.numericParameters.keys()){const t=this.numericParameters.get(e);t&&(t.onChangeEmit=n=>A.dispatchEvent(new Xe({id:t.id,type:"number",value:n,target:t})))}for(const e of this.textParameters.keys()){const t=this.textParameters.get(e);t&&(t.onChangeEmit=n=>A.dispatchEvent(new Xe({id:t.id,type:"text",value:n,target:t})))}for(const e of this.optionParameters.keys()){const t=this.optionParameters.get(e);t&&(t.onChangeEmit=n=>A.dispatchEvent(new Xe({id:t.id,type:"option",value:n,target:t})))}}}var ZA;(function(r){r[r.LockedMouse=0]="LockedMouse",r[r.HoveringMouse=1]="HoveringMouse"})(ZA||(ZA={}));class Ta{constructor(A,e,t){this.closeTimeout=10,this.active=!1,this.countdownActive=!1,this.warnTimer=void 0,this.countDown=0,this.countDownTimer=void 0,this.config=A,this.pixelStreaming=e,this.onDismissAfk=t,this.onAFKTimedOutCallback=()=>{console.log("AFK timed out, did you want to override this callback?")}}onAfkClick(){clearInterval(this.countDownTimer),(this.active||this.countdownActive)&&(this.startAfkWarningTimer(),this.pixelStreaming.dispatchEvent(new ea))}startAfkWarningTimer(){this.config.getNumericSettingValue(b.AFKTimeoutSecs)>0&&this.config.isFlagEnabled(Q.AFKDetection)?this.active=!0:this.active=!1,this.resetAfkWarningTimer()}stopAfkWarningTimer(){this.active=!1,this.countdownActive=!1,clearTimeout(this.warnTimer),clearInterval(this.countDownTimer)}pauseAfkWarningTimer(){this.active=!1}resetAfkWarningTimer(){this.active&&this.config.isFlagEnabled(Q.AFKDetection)&&(clearTimeout(this.warnTimer),this.warnTimer=setTimeout(()=>this.activateAfkEvent(),1e3*this.config.getNumericSettingValue(b.AFKTimeoutSecs)))}activateAfkEvent(){this.pauseAfkWarningTimer(),this.pixelStreaming.dispatchEvent(new Aa({countDown:this.countDown,dismissAfk:this.onDismissAfk})),this.countDown=this.closeTimeout,this.countdownActive=!0,this.pixelStreaming.dispatchEvent(new Hn({countDown:this.countDown})),this.config.isFlagEnabled(Q.HoveringMouseMode)||document.exitPointerLock&&document.exitPointerLock(),this.countDownTimer=setInterval(()=>{this.countDown--,this.countDown==0?(this.pixelStreaming.dispatchEvent(new ta),this.onAFKTimedOutCallback(),g.Log(g.GetStackTrace(),"You have been disconnected due to inactivity"),this.stopAfkWarningTimer()):this.pixelStreaming.dispatchEvent(new Hn({countDown:this.countDown}))},1e3)}}class Ha{constructor(){this.isReceivingFreezeFrame=!1}getDataChannelInstance(){return this}createDataChannel(A,e,t){this.peerConnection=A,this.label=e,this.datachannelOptions=t,t==null&&(this.datachannelOptions={},this.datachannelOptions.ordered=!0),this.dataChannel=this.peerConnection.createDataChannel(this.label,this.datachannelOptions),this.setupDataChannel()}setupDataChannel(){this.dataChannel.binaryType="arraybuffer",this.dataChannel.onopen=A=>this.handleOnOpen(A),this.dataChannel.onclose=A=>this.handleOnClose(A),this.dataChannel.onmessage=A=>this.handleOnMessage(A),this.dataChannel.onerror=A=>this.handleOnError(A)}handleOnOpen(A){var e;g.Log(g.GetStackTrace(),`Data Channel (${this.label}) opened.`,7),this.onOpen((e=this.dataChannel)===null||e===void 0?void 0:e.label,A)}handleOnClose(A){var e;g.Log(g.GetStackTrace(),`Data Channel (${this.label}) closed.`,7),this.onClose((e=this.dataChannel)===null||e===void 0?void 0:e.label,A)}handleOnMessage(A){g.Log(g.GetStackTrace(),`Data Channel (${this.label}) message: ${A}`,8)}handleOnError(A){var e;g.Log(g.GetStackTrace(),`Data Channel (${this.label}) error: ${A}`,7),this.onError((e=this.dataChannel)===null||e===void 0?void 0:e.label,A)}onOpen(A,e){}onClose(A,e){}onError(A,e){}}class La{}class ba{}class Ma{}class bn{}class Da{}class Ra{}class Td{}class Hd{}class xa{constructor(){this.inboundVideoStats=new ba,this.inboundAudioStats=new La,this.candidatePair=new Da,this.DataChannelStats=new Ma,this.outBoundVideoStats=new Ra,this.sessionStats=new Td,this.streamStats=new Hd,this.codecs=new Map}processStats(A){this.localCandidates=new Array,this.remoteCandidates=new Array,A.forEach(e=>{switch(e.type){case"candidate-pair":this.handleCandidatePair(e);break;case"certificate":case"media-source":case"media-playout":case"outbound-rtp":case"peer-connection":case"remote-inbound-rtp":case"transport":break;case"codec":this.handleCodec(e);break;case"data-channel":this.handleDataChannel(e);break;case"inbound-rtp":this.handleInBoundRTP(e);break;case"local-candidate":this.handleLocalCandidate(e);break;case"remote-candidate":this.handleRemoteCandidate(e);break;case"remote-outbound-rtp":this.handleRemoteOutBound(e);break;case"track":this.handleTrack(e);break;case"stream":this.handleStream(e);break;default:g.Error(g.GetStackTrace(),"unhandled Stat Type"),g.Log(g.GetStackTrace(),e)}})}handleStream(A){this.streamStats=A}handleCandidatePair(A){this.candidatePair.bytesReceived=A.bytesReceived,this.candidatePair.bytesSent=A.bytesSent,this.candidatePair.localCandidateId=A.localCandidateId,this.candidatePair.remoteCandidateId=A.remoteCandidateId,this.candidatePair.nominated=A.nominated,this.candidatePair.readable=A.readable,this.candidatePair.selected=A.selected,this.candidatePair.writable=A.writable,this.candidatePair.state=A.state,this.candidatePair.currentRoundTripTime=A.currentRoundTripTime}handleDataChannel(A){this.DataChannelStats.bytesReceived=A.bytesReceived,this.DataChannelStats.bytesSent=A.bytesSent,this.DataChannelStats.dataChannelIdentifier=A.dataChannelIdentifier,this.DataChannelStats.id=A.id,this.DataChannelStats.label=A.label,this.DataChannelStats.messagesReceived=A.messagesReceived,this.DataChannelStats.messagesSent=A.messagesSent,this.DataChannelStats.protocol=A.protocol,this.DataChannelStats.state=A.state,this.DataChannelStats.timestamp=A.timestamp}handleLocalCandidate(A){const e=new bn;e.label="local-candidate",e.address=A.address,e.port=A.port,e.protocol=A.protocol,e.candidateType=A.candidateType,e.id=A.id,this.localCandidates.push(e)}handleRemoteCandidate(A){const e=new bn;e.label="local-candidate",e.address=A.address,e.port=A.port,e.protocol=A.protocol,e.id=A.id,e.candidateType=A.candidateType,this.remoteCandidates.push(e)}handleInBoundRTP(A){switch(A.kind){case"video":this.inboundVideoStats=A,this.lastVideoStats!=null&&(this.inboundVideoStats.bitrate=8*(this.inboundVideoStats.bytesReceived-this.lastVideoStats.bytesReceived)/(this.inboundVideoStats.timestamp-this.lastVideoStats.timestamp),this.inboundVideoStats.bitrate=Math.floor(this.inboundVideoStats.bitrate)),this.lastVideoStats=Object.assign({},this.inboundVideoStats);break;case"audio":this.inboundAudioStats=A,this.lastAudioStats!=null&&(this.inboundAudioStats.bitrate=8*(this.inboundAudioStats.bytesReceived-this.lastAudioStats.bytesReceived)/(this.inboundAudioStats.timestamp-this.lastAudioStats.timestamp),this.inboundAudioStats.bitrate=Math.floor(this.inboundAudioStats.bitrate)),this.lastAudioStats=Object.assign({},this.inboundAudioStats);break;default:g.Log(g.GetStackTrace(),"Kind is not handled")}}handleRemoteOutBound(A){A.kind==="video"&&(this.outBoundVideoStats.bytesSent=A.bytesSent,this.outBoundVideoStats.id=A.id,this.outBoundVideoStats.localId=A.localId,this.outBoundVideoStats.packetsSent=A.packetsSent,this.outBoundVideoStats.remoteTimestamp=A.remoteTimestamp,this.outBoundVideoStats.timestamp=A.timestamp)}handleTrack(A){A.type!=="track"||A.trackIdentifier!=="video_label"&&A.kind!=="video"||(this.inboundVideoStats.framesDropped=A.framesDropped,this.inboundVideoStats.framesReceived=A.framesReceived,this.inboundVideoStats.frameHeight=A.frameHeight,this.inboundVideoStats.frameWidth=A.frameWidth)}handleCodec(A){const e=A.id,t=`${A.mimeType.replace("video/","").replace("audio/","")}${A.sdpFmtpLine?` ${A.sdpFmtpLine}`:""}`;this.codecs.set(e,t)}handleSessionStatistics(A,e,t){const n=Date.now()-A;this.sessionStats.runTime=new Date(n).toISOString().substr(11,8).toString();const s=e===null?"Not sent yet":e?"true":"false";this.sessionStats.controlsStreamInput=s,this.sessionStats.videoEncoderAvgQP=t}isNumber(A){return typeof A=="number"&&isFinite(A)}}const Pa=(Ka={parseRtpParameters:()=>$o.parseRtpParameters,splitSections:()=>$o.splitSections},Mn={},Fr.d(Mn,Ka),Mn);var Ka,Mn,we,L,Dn=function(r,A,e,t){return new(e||(e=Promise))(function(n,s){function i(l){try{a(t.next(l))}catch(d){s(d)}}function o(l){try{a(t.throw(l))}catch(d){s(d)}}function a(l){var d;l.done?n(l.value):(d=l.value,d instanceof e?d:new e(function(h){h(d)})).then(i,o)}a((t=t.apply(r,[])).next())})};class Ld{constructor(A,e,t){this.config=e,this.createPeerConnection(A,t)}createPeerConnection(A,e){this.config.isFlagEnabled(Q.ForceTURN)&&(A.iceTransportPolicy="relay",g.Log(g.GetStackTrace(),"Forcing TURN usage by setting ICE Transport Policy in peer connection config.")),this.peerConnection=new RTCPeerConnection(A),this.peerConnection.onsignalingstatechange=t=>this.handleSignalStateChange(t),this.peerConnection.oniceconnectionstatechange=t=>this.handleIceConnectionStateChange(t),this.peerConnection.onicegatheringstatechange=t=>this.handleIceGatheringStateChange(t),this.peerConnection.ontrack=t=>this.handleOnTrack(t),this.peerConnection.onicecandidate=t=>this.handleIceCandidate(t),this.peerConnection.ondatachannel=t=>this.handleDataChannel(t),this.aggregatedStats=new xa,this.preferredCodec=e,this.updateCodecSelection=!0}createOffer(A,e){return Dn(this,void 0,void 0,function*(){g.Log(g.GetStackTrace(),"Create Offer",6);const t=location.hostname==="localhost"||location.hostname==="127.0.0.1",n=location.protocol==="https:";let s=e.isFlagEnabled(Q.UseMic);!s||t||n||(s=!1,g.Error(g.GetStackTrace(),"Microphone access in the browser will not work if you are not on HTTPS or localhost. Disabling mic access."),g.Error(g.GetStackTrace(),"For testing you can enable HTTP microphone access Chrome by visiting chrome://flags/ and enabling 'unsafely-treat-insecure-origin-as-secure'")),this.setupTransceiversAsync(s).finally(()=>{var i;(i=this.peerConnection)===null||i===void 0||i.createOffer(A).then(o=>{var a;this.showTextOverlayConnecting(),o.sdp=this.mungeSDP(o.sdp,s),(a=this.peerConnection)===null||a===void 0||a.setLocalDescription(o),this.onSendWebRTCOffer(o)}).catch(()=>{this.showTextOverlaySetupFailure()})})})}receiveOffer(A,e){var t;return Dn(this,void 0,void 0,function*(){g.Log(g.GetStackTrace(),"Receive Offer",6),(t=this.peerConnection)===null||t===void 0||t.setRemoteDescription(A).then(()=>{const n=location.hostname==="localhost"||location.hostname==="127.0.0.1",s=location.protocol==="https:";let i=e.isFlagEnabled(Q.UseMic);!i||n||s||(i=!1,g.Error(g.GetStackTrace(),"Microphone access in the browser will not work if you are not on HTTPS or localhost. Disabling mic access."),g.Error(g.GetStackTrace(),"For testing you can enable HTTP microphone access Chrome by visiting chrome://flags/ and enabling 'unsafely-treat-insecure-origin-as-secure'")),this.config.setOptionSettingOptions(_.PreferredCodec,this.fuzzyIntersectUEAndBrowserCodecs(A)),this.setupTransceiversAsync(i).finally(()=>{var o;(o=this.peerConnection)===null||o===void 0||o.createAnswer().then(a=>{var l;return a.sdp=this.mungeSDP(a.sdp,i),(l=this.peerConnection)===null||l===void 0?void 0:l.setLocalDescription(a)}).then(()=>{var a;this.onSendWebRTCAnswer((a=this.peerConnection)===null||a===void 0?void 0:a.currentLocalDescription)}).catch(()=>{g.Error(g.GetStackTrace(),"createAnswer() failed")})})})})}receiveAnswer(A){var e;(e=this.peerConnection)===null||e===void 0||e.setRemoteDescription(A),this.config.setOptionSettingOptions(_.PreferredCodec,this.fuzzyIntersectUEAndBrowserCodecs(A))}generateStats(){var A;(A=this.peerConnection)===null||A===void 0||A.getStats(null).then(e=>{this.aggregatedStats.processStats(e),this.onVideoStats(this.aggregatedStats),this.updateCodecSelection&&this.config.setOptionSettingValue(_.PreferredCodec,this.aggregatedStats.codecs.get(this.aggregatedStats.inboundVideoStats.codecId))})}close(){this.peerConnection&&(this.peerConnection.close(),this.peerConnection=null)}mungeSDP(A,e){let t=A.replace(/(a=fmtp:\d+ .*level-asymmetry-allowed=.*)\r\n/gm,`$1;x-google-start-bitrate=10000;x-google-max-bitrate=100000\r
|
|
43
|
-
`),n="maxaveragebitrate=510000;";return e&&(n+="sprop-maxcapturerate=48000;"),n+=this.config.isFlagEnabled(Q.ForceMonoAudio)?"stereo=0;":"stereo=1;",n+="useinbandfec=1",t=t.replace("useinbandfec=1",n),t}handleOnIce(A){var e;g.Log(g.GetStackTrace(),"peerconnection handleOnIce",6),this.config.isFlagEnabled(Q.ForceTURN)&&A.candidate.indexOf("relay")<0?g.Info(g.GetStackTrace(),`Dropping candidate because it was not TURN relay. | Type= ${A.type} | Protocol= ${A.protocol} | Address=${A.address} | Port=${A.port} |`,6):(e=this.peerConnection)===null||e===void 0||e.addIceCandidate(A)}handleSignalStateChange(A){g.Log(g.GetStackTrace(),"signaling state change: "+A,6)}handleIceConnectionStateChange(A){g.Log(g.GetStackTrace(),"ice connection state change: "+A,6),this.onIceConnectionStateChange(A)}handleIceGatheringStateChange(A){g.Log(g.GetStackTrace(),"ice gathering state change: "+JSON.stringify(A),6)}handleOnTrack(A){this.onTrack(A)}handleIceCandidate(A){this.onPeerIceCandidate(A)}handleDataChannel(A){this.onDataChannel(A)}onTrack(A){}onIceConnectionStateChange(A){}onPeerIceCandidate(A){}onDataChannel(A){}fuzzyIntersectUEAndBrowserCodecs(A){const e=new Array,t=this.parseAvailableCodecs(A),n=this.config.getSettingOption(_.PreferredCodec).options;for(const s of t)if(n.includes(s))e.push(s);else{const i=s.split(" ")[0];for(const o of n)if(o.includes(i)){e.push(o);break}}return e}setupTransceiversAsync(A){var e,t,n,s,i,o,a,l,d,h,u,f;return
|
|
41
|
+
`+JSON.stringify(this,void 0,4),6),JSON.stringify(this)}}(function(r){r.CONFIG="config",r.STREAMER_LIST="streamerList",r.PLAYER_COUNT="playerCount",r.OFFER="offer",r.ANSWER="answer",r.ICE_CANDIDATE="iceCandidate",r.PEER_DATA_CHANNELS="peerDataChannels",r.PING="ping",r.WARNING="warning"})($||($={}));class $o{}class pd extends $o{}class Sn{constructor(){this.FromUEMessageHandlers=new Map}addMessageHandler(A,e){this.FromUEMessageHandlers.set(A,e)}handleMessage(A,e){this.FromUEMessageHandlers.has(A)?this.FromUEMessageHandlers.get(A)(e):g.Error(g.GetStackTrace(),`Message type of ${A} does not have a message handler registered on the frontend - ignoring message.`)}static setupDefaultHandlers(A){A.signallingProtocol.addMessageHandler($.PING,e=>{const t=new ud(new Date().getTime()).payload();g.Log(g.GetStackTrace(),$.PING+": "+e,6),A.webSocket.send(t)}),A.signallingProtocol.addMessageHandler($.CONFIG,e=>{g.Log(g.GetStackTrace(),$.CONFIG,6);const t=JSON.parse(e);A.onConfig(t)}),A.signallingProtocol.addMessageHandler($.STREAMER_LIST,e=>{g.Log(g.GetStackTrace(),$.STREAMER_LIST,6);const t=JSON.parse(e);A.onStreamerList(t)}),A.signallingProtocol.addMessageHandler($.PLAYER_COUNT,e=>{g.Log(g.GetStackTrace(),$.PLAYER_COUNT,6);const t=JSON.parse(e);g.Log(g.GetStackTrace(),"Player Count: "+t.count,6),A.onPlayerCount(t)}),A.signallingProtocol.addMessageHandler($.ANSWER,e=>{g.Log(g.GetStackTrace(),$.ANSWER,6);const t=JSON.parse(e);A.onWebRtcAnswer(t)}),A.signallingProtocol.addMessageHandler($.OFFER,e=>{g.Log(g.GetStackTrace(),$.OFFER,6);const t=JSON.parse(e);A.onWebRtcOffer(t)}),A.signallingProtocol.addMessageHandler($.ICE_CANDIDATE,e=>{g.Log(g.GetStackTrace(),$.ICE_CANDIDATE,6);const t=JSON.parse(e);A.onIceCandidate(t.candidate)}),A.signallingProtocol.addMessageHandler($.WARNING,e=>{g.Warning(g.GetStackTrace(),`Warning received: ${e}`)}),A.signallingProtocol.addMessageHandler($.PEER_DATA_CHANNELS,e=>{g.Log(g.GetStackTrace(),$.PEER_DATA_CHANNELS,6);const t=JSON.parse(e);A.onWebRtcPeerDataChannels(t)})}}let Zo=class{constructor(){this.WS_OPEN_STATE=1,this.onOpen=new EventTarget,this.onClose=new EventTarget,this.signallingProtocol=new Sn,Sn.setupDefaultHandlers(this)}connect(A){g.Log(g.GetStackTrace(),A,6);try{return this.webSocket=new WebSocket(A),this.webSocket.onopen=e=>this.handleOnOpen(e),this.webSocket.onerror=()=>this.handleOnError(),this.webSocket.onclose=e=>this.handleOnClose(e),this.webSocket.onmessage=e=>this.handleOnMessage(e),this.webSocket.onmessagebinary=e=>this.handleOnMessageBinary(e),!0}catch(e){return g.Error(e,e),!1}}handleOnMessageBinary(A){A&&A.data&&A.data.text().then(e=>{const t=new MessageEvent("messageFromBinary",{data:e});this.handleOnMessage(t)}).catch(e=>{g.Error(g.GetStackTrace(),`Failed to parse binary blob from websocket, reason: ${e}`)})}handleOnMessage(A){if(A.data&&A.data instanceof Blob)return void this.handleOnMessageBinary(A);const e=JSON.parse(A.data);g.Log(g.GetStackTrace(),`received =>
|
|
42
|
+
`+JSON.stringify(JSON.parse(A.data),void 0,4),6),this.signallingProtocol.handleMessage(e.type,A.data)}handleOnOpen(A){g.Log(g.GetStackTrace(),"Connected to the signalling server via WebSocket",6),this.onOpen.dispatchEvent(new Event("open"))}handleOnError(){g.Error(g.GetStackTrace(),"WebSocket error")}handleOnClose(A){this.onWebSocketOncloseOverlayMessage(A),g.Log(g.GetStackTrace(),"Disconnected to the signalling server via WebSocket: "+JSON.stringify(A.code)+" - "+A.reason),this.onClose.dispatchEvent(new Event("close"))}requestStreamerList(){const A=new ld;this.webSocket.send(A.payload())}sendSubscribe(A){const e=new cd(A);this.webSocket.send(e.payload())}sendUnsubscribe(){const A=new dd;this.webSocket.send(A.payload())}sendWebRtcOffer(A){const e=new hd(A);this.webSocket.send(e.payload())}sendWebRtcAnswer(A){const e=new gd(A);this.webSocket.send(e.payload())}sendWebRtcDatachannelRequest(){const A=new Bd;this.webSocket.send(A.payload())}sendSFURecvDataChannelReady(){const A=new fd;this.webSocket.send(A.payload())}sendIceCandidate(A){if(g.Log(g.GetStackTrace(),"Sending Ice Candidate"),this.webSocket&&this.webSocket.readyState===this.WS_OPEN_STATE){const e=new wd(A);this.webSocket.send(e.payload())}}close(){var A;(A=this.webSocket)===null||A===void 0||A.close()}onWebSocketOncloseOverlayMessage(A){}onConfig(A){}onStreamerList(A){}onIceCandidate(A){}onWebRtcAnswer(A){}onWebRtcOffer(A){}onWebRtcPeerDataChannels(A){}onPlayerCount(A){}},Cd=class{constructor(A){this.videoElementProvider=A,this.audioElement=document.createElement("Audio"),this.videoElementProvider.setAudioElement(this.audioElement)}handleOnTrack(A){if(g.Log(g.GetStackTrace(),"handleOnTrack "+JSON.stringify(A.streams),6),A.track.id=="probator")return;const e=this.videoElementProvider.getVideoElement();if(A.track&&g.Log(g.GetStackTrace(),"Got track - "+A.track.kind+" id="+A.track.id+" readyState="+A.track.readyState,6),A.track.kind!="audio")return A.track.kind=="video"&&e.srcObject!==A.streams[0]?(e.srcObject=A.streams[0],void g.Log(g.GetStackTrace(),"Set video source from video track ontrack.")):void 0;this.CreateAudioTrack(A.streams[0])}CreateAudioTrack(A){const e=this.videoElementProvider.getVideoElement();e.srcObject!=A&&e.srcObject&&e.srcObject!==A&&(this.audioElement.srcObject=A,g.Log(g.GetStackTrace(),"Created new audio element to play separate audio stream."))}},vd=class{constructor(A){this.freezeFrameHeight=0,this.freezeFrameWidth=0,this.rootDiv=A,this.rootElement=document.createElement("div"),this.rootElement.id="freezeFrame",this.rootElement.style.display="none",this.rootElement.style.pointerEvents="none",this.rootElement.style.position="absolute",this.rootElement.style.zIndex="20",this.imageElement=document.createElement("img"),this.imageElement.style.position="absolute",this.rootElement.appendChild(this.imageElement),this.rootDiv.appendChild(this.rootElement)}setElementForShow(){this.rootElement.style.display="block"}setElementForHide(){this.rootElement.style.display="none"}updateImageElementSource(A){const e=btoa(A.reduce((t,n)=>t+String.fromCharCode(n),""));this.imageElement.src="data:image/jpeg;base64,"+e}setDimensionsFromElementAndResize(){this.freezeFrameHeight=this.imageElement.naturalHeight,this.freezeFrameWidth=this.imageElement.naturalWidth,this.resize()}resize(){if(this.freezeFrameWidth!==0&&this.freezeFrameHeight!==0){let A=0,e=0,t=0,n=0;const s=this.rootDiv.clientWidth/this.rootDiv.clientHeight,i=this.freezeFrameWidth/this.freezeFrameHeight;s<i?(A=this.rootDiv.clientWidth,e=Math.floor(this.rootDiv.clientWidth/i),t=Math.floor(.5*(this.rootDiv.clientHeight-e)),n=0):(A=Math.floor(this.rootDiv.clientHeight*i),e=this.rootDiv.clientHeight,t=0,n=Math.floor(.5*(this.rootDiv.clientWidth-A))),this.rootElement.style.width=this.rootDiv.offsetWidth+"px",this.rootElement.style.height=this.rootDiv.offsetHeight+"px",this.rootElement.style.left="0px",this.rootElement.style.top="0px",this.imageElement.style.width=A+"px",this.imageElement.style.height=e+"px",this.imageElement.style.left=n+"px",this.imageElement.style.top=t+"px"}}};class md{constructor(A){this.receiving=!1,this.size=0,this.jpeg=void 0,this.valid=!1,this.freezeFrameDelay=50,this.freezeFrame=new vd(A)}showFreezeFrame(){this.valid&&this.freezeFrame.setElementForShow()}hideFreezeFrame(){this.valid=!1,this.freezeFrame.setElementForHide()}updateFreezeFrameAndShow(A,e){this.freezeFrame.updateImageElementSource(A),this.freezeFrame.imageElement.onload=()=>{this.freezeFrame.setDimensionsFromElementAndResize(),e()}}processFreezeFrameMessage(A,e){this.receiving||(this.receiving=!0,this.valid=!1,this.size=0,this.jpeg=void 0),this.size=new DataView(A.slice(1,5).buffer).getInt32(0,!0);const t=A.slice(5);if(this.jpeg){const n=new Uint8Array(this.jpeg.length+t.length);n.set(this.jpeg,0),n.set(t,this.jpeg.length),this.jpeg=n}else this.jpeg=t,this.receiving=!0,g.Log(g.GetStackTrace(),`received first chunk of freeze frame: ${this.jpeg.length}/${this.size}`,6);this.jpeg.length===this.size?(this.receiving=!1,this.valid=!0,g.Log(g.GetStackTrace(),`received complete freeze frame ${this.size}`,6),this.updateFreezeFrameAndShow(this.jpeg,e)):this.jpeg.length>this.size&&(g.Error(g.GetStackTrace(),`received bigger freeze frame than advertised: ${this.jpeg.length}/${this.size}`),this.jpeg=void 0,this.receiving=!1)}}class Oe{constructor(A,e,t,n,s=()=>{}){this.onChange=s,this.onChangeEmit=()=>{},this.id=A,this.description=t,this.label=e,this.value=n}set label(A){this._label=A,this.onChangeEmit(this._value)}get label(){return this._label}get value(){return this._value}set value(A){this._value=A,this.onChange(this._value,this),this.onChangeEmit(this._value)}}class z extends Oe{constructor(A,e,t,n,s,i=()=>{}){super(A,e,t,n,i);const o=new URLSearchParams(window.location.search);if(s&&o.has(this.id)){const a=this.getUrlParamFlag();this.flag=a}else this.flag=n;this.useUrlParams=s}getUrlParamFlag(){const A=new URLSearchParams(window.location.search);return!!A.has(this.id)&&A.get(this.id)!=="false"&&A.get(this.id)!=="False"}updateURLParams(){if(this.useUrlParams){const A=new URLSearchParams(window.location.search);this.flag===!0?A.set(this.id,"true"):A.set(this.id,"false"),window.history.replaceState({},"",A.toString()!==""?`${location.pathname}?${A}`:`${location.pathname}`)}}enable(){this.flag=!0}get flag(){return!!this.value}set flag(A){this.value=A}}class GA extends Oe{constructor(A,e,t,n,s,i,o,a=()=>{}){super(A,e,t,i,a),this._min=n,this._max=s;const l=new URLSearchParams(window.location.search);if(o&&l.has(this.id)){const d=Number.parseInt(l.get(this.id));this.number=Number.isNaN(d)?i:d}else this.number=i;this.useUrlParams=o}updateURLParams(){if(this.useUrlParams){const A=new URLSearchParams(window.location.search);A.set(this.id,this.number.toString()),window.history.replaceState({},"",A.toString()!==""?`${location.pathname}?${A}`:`${location.pathname}`)}}set number(A){this.value=this.clamp(A)}get number(){return this.value}clamp(A){return this._min==null&&this._max==null?A:this._min==null?Math.min(this._max,A):this._max==null?Math.max(this._min,A):Math.max(Math.min(this._max,A),this._min)}get min(){return this._min}get max(){return this._max}addOnChangedListener(A){this.onChange=A}}class qo extends Oe{constructor(A,e,t,n,s,i=()=>{}){super(A,e,t,n,i);const o=new URLSearchParams(window.location.search);if(s&&o.has(this.id)){const a=this.getUrlParamText();this.text=a}else this.text=n;this.useUrlParams=s}getUrlParamText(){var A;const e=new URLSearchParams(window.location.search);return e.has(this.id)&&(A=e.get(this.id))!==null&&A!==void 0?A:""}updateURLParams(){if(this.useUrlParams){const A=new URLSearchParams(window.location.search);A.set(this.id,this.text),window.history.replaceState({},"",A.toString()!==""?`${location.pathname}?${A}`:`${location.pathname}`)}}get text(){return this.value}set text(A){this.value=A}}class In extends Oe{constructor(A,e,t,n,s,i,o=()=>{}){super(A,e,t,[n,n],o),this.options=s;const a=new URLSearchParams(window.location.search),l=i&&a.has(this.id)?this.getUrlParamText():n;this.selected=l,this.useUrlParams=i}getUrlParamText(){var A;const e=new URLSearchParams(window.location.search);return e.has(this.id)&&(A=e.get(this.id))!==null&&A!==void 0?A:""}updateURLParams(){if(this.useUrlParams){const A=new URLSearchParams(window.location.search);A.set(this.id,this.selected),window.history.replaceState({},"",A.toString()!==""?`${location.pathname}?${A}`:`${location.pathname}`)}}addOnChangedListener(A){this.onChange=A}get options(){return this._options}set options(A){this._options=A,this.onChangeEmit(this.selected)}get selected(){return this.value}set selected(A){let e=this.options.filter(t=>t.indexOf(A)!==-1);e.length?this.value=e[0]:(e=this.options.filter(t=>t.indexOf(A.split(" ")[0])!==-1),e.length&&(this.value=e[0]))}}class jo extends Event{constructor(A){super("afkWarningActivate"),this.data=A}}let Tn=class extends Event{constructor(A){super("afkWarningUpdate"),this.data=A}};class Aa extends Event{constructor(){super("afkWarningDeactivate")}}let ea=class extends Event{constructor(){super("afkTimedOut")}},ta=class extends Event{constructor(A){super("videoEncoderAvgQP"),this.data=A}};class ra extends Event{constructor(){super("webRtcSdp")}}class na extends Event{constructor(){super("webRtcAutoConnect")}}let sa=class extends Event{constructor(){super("webRtcConnecting")}};class ia extends Event{constructor(){super("webRtcConnected")}}class oa extends Event{constructor(){super("webRtcFailed")}}let aa=class extends Event{constructor(A){super("webRtcDisconnected"),this.data=A}};class la extends Event{constructor(A){super("dataChannelOpen"),this.data=A}}class ca extends Event{constructor(A){super("dataChannelClose"),this.data=A}}class da extends Event{constructor(A){super("dataChannelError"),this.data=A}}class ua extends Event{constructor(){super("videoInitialized")}}let ha=class extends Event{constructor(){super("streamLoading")}};class ga extends Event{constructor(){super("streamConnect")}}class Ba extends Event{constructor(){super("streamDisconnect")}}class fa extends Event{constructor(){super("streamReconnect")}}class wa extends Event{constructor(A){super("playStreamError"),this.data=A}}class pa extends Event{constructor(){super("playStream")}}class Hn extends Event{constructor(A){super("playStreamRejected"),this.data=A}}class Ca extends Event{constructor(A){super("loadFreezeFrame"),this.data=A}}class va extends Event{constructor(){super("hideFreezeFrame")}}class ma extends Event{constructor(A){super("statsReceived"),this.data=A}}let Fa=class extends Event{constructor(A){super("streamerListMessage"),this.data=A}};class Qa extends Event{constructor(A){super("latencyTestResult"),this.data=A}}class Ua extends Event{constructor(A){super("initialSettings"),this.data=A}}class We extends Event{constructor(A){super("settingsChanged"),this.data=A}}class Fd extends Event{constructor(){super("xrSessionStarted")}}class Qd extends Event{constructor(){super("xrSessionEnded")}}class Ea extends Event{constructor(A){super("xrFrame"),this.data=A}}class ya extends Event{constructor(A){super("playerCount"),this.data=A}}class Sa extends EventTarget{dispatchEvent(A){return super.dispatchEvent(A)}addEventListener(A,e){super.addEventListener(A,e)}removeEventListener(A,e){super.removeEventListener(A,e)}}class Q{}Q.AutoConnect="AutoConnect",Q.AutoPlayVideo="AutoPlayVideo",Q.AFKDetection="TimeoutIfIdle",Q.BrowserSendOffer="OfferToReceive",Q.HoveringMouseMode="HoveringMouse",Q.ForceMonoAudio="ForceMonoAudio",Q.ForceTURN="ForceTURN",Q.FakeMouseWithTouches="FakeMouseWithTouches",Q.IsQualityController="ControlsQuality",Q.MatchViewportResolution="MatchViewportRes",Q.PreferSFU="preferSFU",Q.StartVideoMuted="StartVideoMuted",Q.SuppressBrowserKeys="SuppressBrowserKeys",Q.UseMic="UseMic",Q.KeyboardInput="KeyboardInput",Q.MouseInput="MouseInput",Q.TouchInput="TouchInput",Q.GamepadInput="GamepadInput",Q.XRControllerInput="XRControllerInput";const Ud=r=>Object.getOwnPropertyNames(Q).some(A=>Q[A]===r);class M{}M.AFKTimeoutSecs="AFKTimeout",M.MinQP="MinQP",M.MaxQP="MaxQP",M.WebRTCFPS="WebRTCFPS",M.WebRTCMinBitrate="WebRTCMinBitrate",M.WebRTCMaxBitrate="WebRTCMaxBitrate",M.MaxReconnectAttempts="MaxReconnectAttempts";const Ed=r=>Object.getOwnPropertyNames(M).some(A=>M[A]===r);class ZA{}ZA.SignallingServerUrl="ss";const yd=r=>Object.getOwnPropertyNames(ZA).some(A=>ZA[A]===r);class _{}_.PreferredCodec="PreferredCodec",_.StreamerId="StreamerId";const Sd=r=>Object.getOwnPropertyNames(_).some(A=>_[A]===r);class Id{constructor(A={}){this.flags=new Map,this.numericParameters=new Map,this.textParameters=new Map,this.optionParameters=new Map;const{initialSettings:e,useUrlParams:t}=A;this._useUrlParams=!!t,this.populateDefaultSettings(this._useUrlParams),e&&this.setSettings(e)}get useUrlParams(){return this._useUrlParams}populateDefaultSettings(A){this.textParameters.set(ZA.SignallingServerUrl,new qo(ZA.SignallingServerUrl,"Signalling url","Url of the signalling server",(location.protocol==="https:"?"wss://":"ws://")+window.location.hostname+(window.location.port==="80"||window.location.port===""?"":`:${window.location.port}`),A)),this.optionParameters.set(_.StreamerId,new In(_.StreamerId,"Streamer ID","The ID of the streamer to stream.","",[],A)),this.optionParameters.set(_.PreferredCodec,new In(_.PreferredCodec,"Preferred Codec","The preferred codec to be used during codec negotiation","H264 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f",function(){const e=[];if(!RTCRtpReceiver.getCapabilities)return e.push("Only available on Chrome"),e;const t=/(VP\d|H26\d|AV1).*/;return RTCRtpReceiver.getCapabilities("video").codecs.forEach(n=>{const s=n.mimeType.split("/")[1]+" "+(n.sdpFmtpLine||"");t.exec(s)!==null&&e.push(s)}),e}(),A)),this.flags.set(Q.AutoConnect,new z(Q.AutoConnect,"Auto connect to stream","Whether we should attempt to auto connect to the signalling server or show a click to start prompt.",!1,A)),this.flags.set(Q.AutoPlayVideo,new z(Q.AutoPlayVideo,"Auto play video","When video is ready automatically start playing it as opposed to showing a play button.",!0,A)),this.flags.set(Q.BrowserSendOffer,new z(Q.BrowserSendOffer,"Browser send offer","Browser will initiate the WebRTC handshake by sending the offer to the streamer",!1,A)),this.flags.set(Q.UseMic,new z(Q.UseMic,"Use microphone","Make browser request microphone access and open an input audio track.",!1,A)),this.flags.set(Q.StartVideoMuted,new z(Q.StartVideoMuted,"Start video muted","Video will start muted if true.",!1,A)),this.flags.set(Q.SuppressBrowserKeys,new z(Q.SuppressBrowserKeys,"Suppress browser keys","Suppress certain browser keys that we use in UE, for example F5 to show shader complexity instead of refresh the page.",!0,A)),this.flags.set(Q.PreferSFU,new z(Q.PreferSFU,"Prefer SFU","Try to connect to the SFU instead of P2P.",!1,A)),this.flags.set(Q.IsQualityController,new z(Q.IsQualityController,"Is quality controller?","True if this peer controls stream quality",!0,A)),this.flags.set(Q.ForceMonoAudio,new z(Q.ForceMonoAudio,"Force mono audio","Force browser to request mono audio in the SDP",!1,A)),this.flags.set(Q.ForceTURN,new z(Q.ForceTURN,"Force TURN","Only generate TURN/Relayed ICE candidates.",!1,A)),this.flags.set(Q.AFKDetection,new z(Q.AFKDetection,"AFK if idle","Timeout the experience if user is AFK for a period.",!1,A)),this.flags.set(Q.MatchViewportResolution,new z(Q.MatchViewportResolution,"Match viewport resolution","Pixel Streaming will be instructed to dynamically resize the video stream to match the size of the video element.",!1,A)),this.flags.set(Q.HoveringMouseMode,new z(Q.HoveringMouseMode,"Control Scheme: Locked Mouse","Either locked mouse, where the pointer is consumed by the video and locked to it, or hovering mouse, where the mouse is not consumed.",!1,A,(e,t)=>{t.label=`Control Scheme: ${e?"Hovering":"Locked"} Mouse`})),this.flags.set(Q.FakeMouseWithTouches,new z(Q.FakeMouseWithTouches,"Fake mouse with touches","A single finger touch is converted into a mouse event. This allows a non-touch application to be controlled partially via a touch device.",!1,A)),this.flags.set(Q.KeyboardInput,new z(Q.KeyboardInput,"Keyboard input","If enabled, send keyboard events to streamer",!0,A)),this.flags.set(Q.MouseInput,new z(Q.MouseInput,"Mouse input","If enabled, send mouse events to streamer",!0,A)),this.flags.set(Q.TouchInput,new z(Q.TouchInput,"Touch input","If enabled, send touch events to streamer",!0,A)),this.flags.set(Q.GamepadInput,new z(Q.GamepadInput,"Gamepad input","If enabled, send gamepad events to streamer",!0,A)),this.flags.set(Q.XRControllerInput,new z(Q.XRControllerInput,"XR controller input","If enabled, send XR controller events to streamer",!0,A)),this.numericParameters.set(M.AFKTimeoutSecs,new GA(M.AFKTimeoutSecs,"AFK timeout","The time (in seconds) it takes for the application to time out if AFK timeout is enabled.",0,null,120,A)),this.numericParameters.set(M.MaxReconnectAttempts,new GA(M.MaxReconnectAttempts,"Max Reconnects","Maximum number of reconnects the application will attempt when a streamer disconnects.",0,999,3,A)),this.numericParameters.set(M.MinQP,new GA(M.MinQP,"Min QP","The lower bound for the quantization parameter (QP) of the encoder. 0 = Best quality, 51 = worst quality.",0,51,0,A)),this.numericParameters.set(M.MaxQP,new GA(M.MaxQP,"Max QP","The upper bound for the quantization parameter (QP) of the encoder. 0 = Best quality, 51 = worst quality.",0,51,51,A)),this.numericParameters.set(M.WebRTCFPS,new GA(M.WebRTCFPS,"Max FPS","The maximum FPS that WebRTC will try to transmit frames at.",1,999,60,A)),this.numericParameters.set(M.WebRTCMinBitrate,new GA(M.WebRTCMinBitrate,"Min Bitrate (kbps)","The minimum bitrate that WebRTC should use.",0,5e5,0,A)),this.numericParameters.set(M.WebRTCMaxBitrate,new GA(M.WebRTCMaxBitrate,"Max Bitrate (kbps)","The maximum bitrate that WebRTC should use.",0,5e5,0,A))}_addOnNumericSettingChangedListener(A,e){this.numericParameters.has(A)&&this.numericParameters.get(A).addOnChangedListener(e)}_addOnOptionSettingChangedListener(A,e){this.optionParameters.has(A)&&this.optionParameters.get(A).addOnChangedListener(e)}getNumericSettingValue(A){if(this.numericParameters.has(A))return this.numericParameters.get(A).number;throw new Error(`There is no numeric setting with the id of ${A}`)}getTextSettingValue(A){if(this.textParameters.has(A))return this.textParameters.get(A).value;throw new Error(`There is no numeric setting with the id of ${A}`)}setNumericSetting(A,e){if(!this.numericParameters.has(A))throw new Error(`There is no numeric setting with the id of ${A}`);this.numericParameters.get(A).number=e}_addOnSettingChangedListener(A,e){this.flags.has(A)&&(this.flags.get(A).onChange=e)}_addOnTextSettingChangedListener(A,e){this.textParameters.has(A)&&(this.textParameters.get(A).onChange=e)}getSettingOption(A){return this.optionParameters.get(A)}isFlagEnabled(A){return this.flags.get(A).flag}setFlagEnabled(A,e){this.flags.has(A)?this.flags.get(A).flag=e:g.Warning(g.GetStackTrace(),`Cannot toggle flag called ${A} - it does not exist in the Config.flags map.`)}setTextSetting(A,e){this.textParameters.has(A)?this.textParameters.get(A).text=e:g.Warning(g.GetStackTrace(),`Cannot set text setting called ${A} - it does not exist in the Config.textParameters map.`)}setOptionSettingOptions(A,e){this.optionParameters.has(A)?this.optionParameters.get(A).options=e:g.Warning(g.GetStackTrace(),`Cannot set text setting called ${A} - it does not exist in the Config.optionParameters map.`)}setOptionSettingValue(A,e){this.optionParameters.has(A)?this.optionParameters.get(A).selected=e:g.Warning(g.GetStackTrace(),`Cannot set text setting called ${A} - it does not exist in the Config.enumParameters map.`)}setFlagLabel(A,e){this.flags.has(A)?this.flags.get(A).label=e:g.Warning(g.GetStackTrace(),`Cannot set label for flag called ${A} - it does not exist in the Config.flags map.`)}setSettings(A){for(const e of Object.keys(A))Ud(e)?this.setFlagEnabled(e,A[e]):Ed(e)?this.setNumericSetting(e,A[e]):yd(e)?this.setTextSetting(e,A[e]):Sd(e)&&this.setOptionSettingValue(e,A[e])}getSettings(){const A={};for(const[e,t]of this.flags.entries())A[e]=t.flag;for(const[e,t]of this.numericParameters.entries())A[e]=t.number;for(const[e,t]of this.textParameters.entries())A[e]=t.text;for(const[e,t]of this.optionParameters.entries())A[e]=t.selected;return A}getFlags(){return Array.from(this.flags.values())}getTextSettings(){return Array.from(this.textParameters.values())}getNumericSettings(){return Array.from(this.numericParameters.values())}getOptionSettings(){return Array.from(this.optionParameters.values())}_registerOnChangeEvents(A){for(const e of this.flags.keys()){const t=this.flags.get(e);t&&(t.onChangeEmit=n=>A.dispatchEvent(new We({id:t.id,type:"flag",value:n,target:t})))}for(const e of this.numericParameters.keys()){const t=this.numericParameters.get(e);t&&(t.onChangeEmit=n=>A.dispatchEvent(new We({id:t.id,type:"number",value:n,target:t})))}for(const e of this.textParameters.keys()){const t=this.textParameters.get(e);t&&(t.onChangeEmit=n=>A.dispatchEvent(new We({id:t.id,type:"text",value:n,target:t})))}for(const e of this.optionParameters.keys()){const t=this.optionParameters.get(e);t&&(t.onChangeEmit=n=>A.dispatchEvent(new We({id:t.id,type:"option",value:n,target:t})))}}}var qA;(function(r){r[r.LockedMouse=0]="LockedMouse",r[r.HoveringMouse=1]="HoveringMouse"})(qA||(qA={}));class Ia{constructor(A,e,t){this.closeTimeout=10,this.active=!1,this.countdownActive=!1,this.warnTimer=void 0,this.countDown=0,this.countDownTimer=void 0,this.config=A,this.pixelStreaming=e,this.onDismissAfk=t,this.onAFKTimedOutCallback=()=>{console.log("AFK timed out, did you want to override this callback?")}}onAfkClick(){clearInterval(this.countDownTimer),(this.active||this.countdownActive)&&(this.startAfkWarningTimer(),this.pixelStreaming.dispatchEvent(new Aa))}startAfkWarningTimer(){this.config.getNumericSettingValue(M.AFKTimeoutSecs)>0&&this.config.isFlagEnabled(Q.AFKDetection)?this.active=!0:this.active=!1,this.resetAfkWarningTimer()}stopAfkWarningTimer(){this.active=!1,this.countdownActive=!1,clearTimeout(this.warnTimer),clearInterval(this.countDownTimer)}pauseAfkWarningTimer(){this.active=!1}resetAfkWarningTimer(){this.active&&this.config.isFlagEnabled(Q.AFKDetection)&&(clearTimeout(this.warnTimer),this.warnTimer=setTimeout(()=>this.activateAfkEvent(),1e3*this.config.getNumericSettingValue(M.AFKTimeoutSecs)))}activateAfkEvent(){this.pauseAfkWarningTimer(),this.pixelStreaming.dispatchEvent(new jo({countDown:this.countDown,dismissAfk:this.onDismissAfk})),this.countDown=this.closeTimeout,this.countdownActive=!0,this.pixelStreaming.dispatchEvent(new Tn({countDown:this.countDown})),this.config.isFlagEnabled(Q.HoveringMouseMode)||document.exitPointerLock&&document.exitPointerLock(),this.countDownTimer=setInterval(()=>{this.countDown--,this.countDown==0?(this.pixelStreaming.dispatchEvent(new ea),this.onAFKTimedOutCallback(),g.Log(g.GetStackTrace(),"You have been disconnected due to inactivity"),this.stopAfkWarningTimer()):this.pixelStreaming.dispatchEvent(new Tn({countDown:this.countDown}))},1e3)}}class Ta{constructor(){this.isReceivingFreezeFrame=!1}getDataChannelInstance(){return this}createDataChannel(A,e,t){this.peerConnection=A,this.label=e,this.datachannelOptions=t,t==null&&(this.datachannelOptions={},this.datachannelOptions.ordered=!0),this.dataChannel=this.peerConnection.createDataChannel(this.label,this.datachannelOptions),this.setupDataChannel()}setupDataChannel(){this.dataChannel.binaryType="arraybuffer",this.dataChannel.onopen=A=>this.handleOnOpen(A),this.dataChannel.onclose=A=>this.handleOnClose(A),this.dataChannel.onmessage=A=>this.handleOnMessage(A),this.dataChannel.onerror=A=>this.handleOnError(A)}handleOnOpen(A){var e;g.Log(g.GetStackTrace(),`Data Channel (${this.label}) opened.`,7),this.onOpen((e=this.dataChannel)===null||e===void 0?void 0:e.label,A)}handleOnClose(A){var e;g.Log(g.GetStackTrace(),`Data Channel (${this.label}) closed.`,7),this.onClose((e=this.dataChannel)===null||e===void 0?void 0:e.label,A)}handleOnMessage(A){g.Log(g.GetStackTrace(),`Data Channel (${this.label}) message: ${A}`,8)}handleOnError(A){var e;g.Log(g.GetStackTrace(),`Data Channel (${this.label}) error: ${A}`,7),this.onError((e=this.dataChannel)===null||e===void 0?void 0:e.label,A)}onOpen(A,e){}onClose(A,e){}onError(A,e){}}class Ha{}class La{}class ba{}class Ln{}class Ma{}class Da{}class Td{}class Hd{}class Ra{constructor(){this.inboundVideoStats=new La,this.inboundAudioStats=new Ha,this.candidatePair=new Ma,this.DataChannelStats=new ba,this.outBoundVideoStats=new Da,this.sessionStats=new Td,this.streamStats=new Hd,this.codecs=new Map}processStats(A){this.localCandidates=new Array,this.remoteCandidates=new Array,A.forEach(e=>{switch(e.type){case"candidate-pair":this.handleCandidatePair(e);break;case"certificate":case"media-source":case"media-playout":case"outbound-rtp":case"peer-connection":case"remote-inbound-rtp":case"transport":break;case"codec":this.handleCodec(e);break;case"data-channel":this.handleDataChannel(e);break;case"inbound-rtp":this.handleInBoundRTP(e);break;case"local-candidate":this.handleLocalCandidate(e);break;case"remote-candidate":this.handleRemoteCandidate(e);break;case"remote-outbound-rtp":this.handleRemoteOutBound(e);break;case"track":this.handleTrack(e);break;case"stream":this.handleStream(e);break;default:g.Error(g.GetStackTrace(),"unhandled Stat Type"),g.Log(g.GetStackTrace(),e)}})}handleStream(A){this.streamStats=A}handleCandidatePair(A){this.candidatePair.bytesReceived=A.bytesReceived,this.candidatePair.bytesSent=A.bytesSent,this.candidatePair.localCandidateId=A.localCandidateId,this.candidatePair.remoteCandidateId=A.remoteCandidateId,this.candidatePair.nominated=A.nominated,this.candidatePair.readable=A.readable,this.candidatePair.selected=A.selected,this.candidatePair.writable=A.writable,this.candidatePair.state=A.state,this.candidatePair.currentRoundTripTime=A.currentRoundTripTime}handleDataChannel(A){this.DataChannelStats.bytesReceived=A.bytesReceived,this.DataChannelStats.bytesSent=A.bytesSent,this.DataChannelStats.dataChannelIdentifier=A.dataChannelIdentifier,this.DataChannelStats.id=A.id,this.DataChannelStats.label=A.label,this.DataChannelStats.messagesReceived=A.messagesReceived,this.DataChannelStats.messagesSent=A.messagesSent,this.DataChannelStats.protocol=A.protocol,this.DataChannelStats.state=A.state,this.DataChannelStats.timestamp=A.timestamp}handleLocalCandidate(A){const e=new Ln;e.label="local-candidate",e.address=A.address,e.port=A.port,e.protocol=A.protocol,e.candidateType=A.candidateType,e.id=A.id,this.localCandidates.push(e)}handleRemoteCandidate(A){const e=new Ln;e.label="local-candidate",e.address=A.address,e.port=A.port,e.protocol=A.protocol,e.id=A.id,e.candidateType=A.candidateType,this.remoteCandidates.push(e)}handleInBoundRTP(A){switch(A.kind){case"video":this.inboundVideoStats=A,this.lastVideoStats!=null&&(this.inboundVideoStats.bitrate=8*(this.inboundVideoStats.bytesReceived-this.lastVideoStats.bytesReceived)/(this.inboundVideoStats.timestamp-this.lastVideoStats.timestamp),this.inboundVideoStats.bitrate=Math.floor(this.inboundVideoStats.bitrate)),this.lastVideoStats=Object.assign({},this.inboundVideoStats);break;case"audio":this.inboundAudioStats=A,this.lastAudioStats!=null&&(this.inboundAudioStats.bitrate=8*(this.inboundAudioStats.bytesReceived-this.lastAudioStats.bytesReceived)/(this.inboundAudioStats.timestamp-this.lastAudioStats.timestamp),this.inboundAudioStats.bitrate=Math.floor(this.inboundAudioStats.bitrate)),this.lastAudioStats=Object.assign({},this.inboundAudioStats);break;default:g.Log(g.GetStackTrace(),"Kind is not handled")}}handleRemoteOutBound(A){A.kind==="video"&&(this.outBoundVideoStats.bytesSent=A.bytesSent,this.outBoundVideoStats.id=A.id,this.outBoundVideoStats.localId=A.localId,this.outBoundVideoStats.packetsSent=A.packetsSent,this.outBoundVideoStats.remoteTimestamp=A.remoteTimestamp,this.outBoundVideoStats.timestamp=A.timestamp)}handleTrack(A){A.type!=="track"||A.trackIdentifier!=="video_label"&&A.kind!=="video"||(this.inboundVideoStats.framesDropped=A.framesDropped,this.inboundVideoStats.framesReceived=A.framesReceived,this.inboundVideoStats.frameHeight=A.frameHeight,this.inboundVideoStats.frameWidth=A.frameWidth)}handleCodec(A){const e=A.id,t=`${A.mimeType.replace("video/","").replace("audio/","")}${A.sdpFmtpLine?` ${A.sdpFmtpLine}`:""}`;this.codecs.set(e,t)}handleSessionStatistics(A,e,t){const n=Date.now()-A;this.sessionStats.runTime=new Date(n).toISOString().substr(11,8).toString();const s=e===null?"Not sent yet":e?"true":"false";this.sessionStats.controlsStreamInput=s,this.sessionStats.videoEncoderAvgQP=t}isNumber(A){return typeof A=="number"&&isFinite(A)}}const xa=(Pa={parseRtpParameters:()=>Yo.parseRtpParameters,splitSections:()=>Yo.splitSections},bn={},mr.d(bn,Pa),bn);var Pa,bn,we,L,Mn=function(r,A,e,t){return new(e||(e=Promise))(function(n,s){function i(l){try{a(t.next(l))}catch(d){s(d)}}function o(l){try{a(t.throw(l))}catch(d){s(d)}}function a(l){var d;l.done?n(l.value):(d=l.value,d instanceof e?d:new e(function(h){h(d)})).then(i,o)}a((t=t.apply(r,[])).next())})};class Ld{constructor(A,e,t){this.config=e,this.createPeerConnection(A,t)}createPeerConnection(A,e){this.config.isFlagEnabled(Q.ForceTURN)&&(A.iceTransportPolicy="relay",g.Log(g.GetStackTrace(),"Forcing TURN usage by setting ICE Transport Policy in peer connection config.")),this.peerConnection=new RTCPeerConnection(A),this.peerConnection.onsignalingstatechange=t=>this.handleSignalStateChange(t),this.peerConnection.oniceconnectionstatechange=t=>this.handleIceConnectionStateChange(t),this.peerConnection.onicegatheringstatechange=t=>this.handleIceGatheringStateChange(t),this.peerConnection.ontrack=t=>this.handleOnTrack(t),this.peerConnection.onicecandidate=t=>this.handleIceCandidate(t),this.peerConnection.ondatachannel=t=>this.handleDataChannel(t),this.aggregatedStats=new Ra,this.preferredCodec=e,this.updateCodecSelection=!0}createOffer(A,e){return Mn(this,void 0,void 0,function*(){g.Log(g.GetStackTrace(),"Create Offer",6);const t=location.hostname==="localhost"||location.hostname==="127.0.0.1",n=location.protocol==="https:";let s=e.isFlagEnabled(Q.UseMic);!s||t||n||(s=!1,g.Error(g.GetStackTrace(),"Microphone access in the browser will not work if you are not on HTTPS or localhost. Disabling mic access."),g.Error(g.GetStackTrace(),"For testing you can enable HTTP microphone access Chrome by visiting chrome://flags/ and enabling 'unsafely-treat-insecure-origin-as-secure'")),this.setupTransceiversAsync(s).finally(()=>{var i;(i=this.peerConnection)===null||i===void 0||i.createOffer(A).then(o=>{var a;this.showTextOverlayConnecting(),o.sdp=this.mungeSDP(o.sdp,s),(a=this.peerConnection)===null||a===void 0||a.setLocalDescription(o),this.onSendWebRTCOffer(o)}).catch(()=>{this.showTextOverlaySetupFailure()})})})}receiveOffer(A,e){var t;return Mn(this,void 0,void 0,function*(){g.Log(g.GetStackTrace(),"Receive Offer",6),(t=this.peerConnection)===null||t===void 0||t.setRemoteDescription(A).then(()=>{const n=location.hostname==="localhost"||location.hostname==="127.0.0.1",s=location.protocol==="https:";let i=e.isFlagEnabled(Q.UseMic);!i||n||s||(i=!1,g.Error(g.GetStackTrace(),"Microphone access in the browser will not work if you are not on HTTPS or localhost. Disabling mic access."),g.Error(g.GetStackTrace(),"For testing you can enable HTTP microphone access Chrome by visiting chrome://flags/ and enabling 'unsafely-treat-insecure-origin-as-secure'")),this.config.setOptionSettingOptions(_.PreferredCodec,this.fuzzyIntersectUEAndBrowserCodecs(A)),this.setupTransceiversAsync(i).finally(()=>{var o;(o=this.peerConnection)===null||o===void 0||o.createAnswer().then(a=>{var l;return a.sdp=this.mungeSDP(a.sdp,i),(l=this.peerConnection)===null||l===void 0?void 0:l.setLocalDescription(a)}).then(()=>{var a;this.onSendWebRTCAnswer((a=this.peerConnection)===null||a===void 0?void 0:a.currentLocalDescription)}).catch(()=>{g.Error(g.GetStackTrace(),"createAnswer() failed")})})})})}receiveAnswer(A){var e;(e=this.peerConnection)===null||e===void 0||e.setRemoteDescription(A),this.config.setOptionSettingOptions(_.PreferredCodec,this.fuzzyIntersectUEAndBrowserCodecs(A))}generateStats(){var A;(A=this.peerConnection)===null||A===void 0||A.getStats(null).then(e=>{this.aggregatedStats.processStats(e),this.onVideoStats(this.aggregatedStats),this.updateCodecSelection&&this.config.setOptionSettingValue(_.PreferredCodec,this.aggregatedStats.codecs.get(this.aggregatedStats.inboundVideoStats.codecId))})}close(){this.peerConnection&&(this.peerConnection.close(),this.peerConnection=null)}mungeSDP(A,e){let t=A.replace(/(a=fmtp:\d+ .*level-asymmetry-allowed=.*)\r\n/gm,`$1;x-google-start-bitrate=10000;x-google-max-bitrate=100000\r
|
|
43
|
+
`),n="maxaveragebitrate=510000;";return e&&(n+="sprop-maxcapturerate=48000;"),n+=this.config.isFlagEnabled(Q.ForceMonoAudio)?"stereo=0;":"stereo=1;",n+="useinbandfec=1",t=t.replace("useinbandfec=1",n),t}handleOnIce(A){var e;g.Log(g.GetStackTrace(),"peerconnection handleOnIce",6),this.config.isFlagEnabled(Q.ForceTURN)&&A.candidate.indexOf("relay")<0?g.Info(g.GetStackTrace(),`Dropping candidate because it was not TURN relay. | Type= ${A.type} | Protocol= ${A.protocol} | Address=${A.address} | Port=${A.port} |`,6):(e=this.peerConnection)===null||e===void 0||e.addIceCandidate(A)}handleSignalStateChange(A){g.Log(g.GetStackTrace(),"signaling state change: "+A,6)}handleIceConnectionStateChange(A){g.Log(g.GetStackTrace(),"ice connection state change: "+A,6),this.onIceConnectionStateChange(A)}handleIceGatheringStateChange(A){g.Log(g.GetStackTrace(),"ice gathering state change: "+JSON.stringify(A),6)}handleOnTrack(A){this.onTrack(A)}handleIceCandidate(A){this.onPeerIceCandidate(A)}handleDataChannel(A){this.onDataChannel(A)}onTrack(A){}onIceConnectionStateChange(A){}onPeerIceCandidate(A){}onDataChannel(A){}fuzzyIntersectUEAndBrowserCodecs(A){const e=new Array,t=this.parseAvailableCodecs(A),n=this.config.getSettingOption(_.PreferredCodec).options;for(const s of t)if(n.includes(s))e.push(s);else{const i=s.split(" ")[0];for(const o of n)if(o.includes(i)){e.push(o);break}}return e}setupTransceiversAsync(A){var e,t,n,s,i,o,a,l,d,h,u,f;return Mn(this,void 0,void 0,function*(){let B=!1;for(const v of(t=(e=this.peerConnection)===null||e===void 0?void 0:e.getTransceivers())!==null&&t!==void 0?t:[])if(v&&v.receiver&&v.receiver.track&&v.receiver.track.kind==="video"){B=!0;break}if(B||(n=this.peerConnection)===null||n===void 0||n.addTransceiver("video",{direction:"recvonly"}),RTCRtpReceiver.getCapabilities&&this.preferredCodec!=""){for(const v of(i=(s=this.peerConnection)===null||s===void 0?void 0:s.getTransceivers())!==null&&i!==void 0?i:[])if(v&&v.receiver&&v.receiver.track&&v.receiver.track.kind==="video"&&v.setCodecPreferences){const m=this.preferredCodec.split(" "),F=[{mimeType:"video/"+m[0],clockRate:9e4,sdpFmtpLine:m[1]?m[1]:""}];this.config.getSettingOption(_.PreferredCodec).options.filter(E=>E!=this.preferredCodec).forEach(E=>{const H=E.split(" ");F.push({mimeType:"video/"+H[0],clockRate:9e4,sdpFmtpLine:H[1]?H[1]:""})});for(const E of F)E.sdpFmtpLine===""&&delete E.sdpFmtpLine;v.setCodecPreferences(F)}}let w=!1;for(const v of(a=(o=this.peerConnection)===null||o===void 0?void 0:o.getTransceivers())!==null&&a!==void 0?a:[])if(v&&v.receiver&&v.receiver.track&&v.receiver.track.kind==="audio"){w=!0;break}if(A){const v={video:!1,audio:!!A&&{autoGainControl:!1,channelCount:1,echoCancellation:!1,latency:0,noiseSuppression:!1,sampleRate:48e3,sampleSize:16,volume:1}},m=yield navigator.mediaDevices.getUserMedia(v);if(m)if(w){for(const F of(h=(d=this.peerConnection)===null||d===void 0?void 0:d.getTransceivers())!==null&&h!==void 0?h:[])if(F&&F.receiver&&F.receiver.track&&F.receiver.track.kind==="audio")for(const E of m.getTracks())E.kind&&E.kind=="audio"&&(F.sender.replaceTrack(E),F.direction="sendrecv")}else for(const F of m.getTracks())F.kind&&F.kind=="audio"&&((u=this.peerConnection)===null||u===void 0||u.addTransceiver(F,{direction:"sendrecv"}));else w||(f=this.peerConnection)===null||f===void 0||f.addTransceiver("audio",{direction:"recvonly"})}else w||(l=this.peerConnection)===null||l===void 0||l.addTransceiver("audio",{direction:"recvonly"})})}onVideoStats(A){}onSendWebRTCOffer(A){}onSendWebRTCAnswer(A){}showTextOverlayConnecting(){}showTextOverlaySetupFailure(){}parseAvailableCodecs(A){if(!RTCRtpReceiver.getCapabilities)return["Only available on Chrome"];const e=[],t=(0,xa.splitSections)(A.sdp);return t.shift(),t.forEach(n=>{const{codecs:s}=(0,xa.parseRtpParameters)(n),i=/(VP\d|H26\d|AV1).*/;s.forEach(o=>{const a=o.name+" "+Object.keys(o.parameters||{}).map(l=>l+"="+o.parameters[l]).join(";");if(i.exec(a)!==null){o.name=="VP9"&&(o.parameters={"profile-id":"0"});const l=o.name+" "+Object.keys(o.parameters||{}).map(d=>d+"="+o.parameters[d]).join(";");e.push(l)}})}),e}}class Ka{constructor(){this.PixelStreamingSettings=new bd,this.EncoderSettings=new Ga,this.WebRTCSettings=new ka}ueCompatible(){this.WebRTCSettings.MaxFPS!=null&&(this.WebRTCSettings.FPS=this.WebRTCSettings.MaxFPS)}}class bd{}class Ga{}class ka{}class Na{constructor(){this.ReceiptTimeMs=null,this.TransmissionTimeMs=null,this.PreCaptureTimeMs=null,this.PostCaptureTimeMs=null,this.PreEncodeTimeMs=null,this.PostEncodeTimeMs=null,this.EncodeMs=null,this.CaptureToSendMs=null,this.testStartTimeMs=0,this.browserReceiptTimeMs=0,this.latencyExcludingDecode=0,this.testDuration=0,this.networkLatency=0,this.browserSendLatency=0,this.frameDisplayDeltaTimeMs=0,this.endToEndLatency=0,this.encodeLatency=0}setFrameDisplayDeltaTime(A){this.frameDisplayDeltaTimeMs==0&&(this.frameDisplayDeltaTimeMs=Math.round(A))}processFields(){this.EncodeMs!=null||this.PreEncodeTimeMs==null&&this.PostEncodeTimeMs==null||(g.Log(g.GetStackTrace(),`Setting Encode Ms
|
|
44
44
|
${this.PostEncodeTimeMs}
|
|
45
45
|
${this.PreEncodeTimeMs}`,6),this.EncodeMs=this.PostEncodeTimeMs-this.PreEncodeTimeMs),this.CaptureToSendMs!=null||this.PreCaptureTimeMs==null&&this.PostCaptureTimeMs==null||(g.Log(g.GetStackTrace(),`Setting CaptureToSendMs Ms
|
|
46
46
|
${this.PostCaptureTimeMs}
|
|
47
|
-
${this.PreCaptureTimeMs}`,6),this.CaptureToSendMs=this.PostCaptureTimeMs-this.PreCaptureTimeMs)}}class Rn{static setExtensionFromBytes(A,e){e.receiving||(e.mimetype="",e.extension="",e.receiving=!0,e.valid=!1,e.size=0,e.data=[],e.timestampStart=new Date().getTime(),g.Log(g.GetStackTrace(),"Received first chunk of file",6));const t=new TextDecoder("utf-16").decode(A.slice(1));g.Log(g.GetStackTrace(),t,6),e.extension=t}static setMimeTypeFromBytes(A,e){e.receiving||(e.mimetype="",e.extension="",e.receiving=!0,e.valid=!1,e.size=0,e.data=[],e.timestampStart=new Date().getTime(),g.Log(g.GetStackTrace(),"Received first chunk of file",6));const t=new TextDecoder("utf-16").decode(A.slice(1));g.Log(g.GetStackTrace(),t,6),e.mimetype=t}static setContentsFromBytes(A,e){if(!e.receiving)return;e.size=Math.ceil(new DataView(A.slice(1,5).buffer).getInt32(0,!0)/16379);const t=A.slice(5);if(e.data.push(t),g.Log(g.GetStackTrace(),`Received file chunk: ${e.data.length}/${e.size}`,6),e.data.length===e.size){e.receiving=!1,e.valid=!0,g.Log(g.GetStackTrace(),"Received complete file",6);const n=new Date().getTime()-e.timestampStart,s=Math.round(16*e.size*1024/n);g.Log(g.GetStackTrace(),`Average transfer bitrate: ${s}kb/s over ${n/1e3} seconds`,6);const i=new Blob(e.data,{type:e.mimetype}),o=document.createElement("a");o.setAttribute("href",URL.createObjectURL(i)),o.setAttribute("download",`transfer.${e.extension}`),document.body.append(o),o.remove()}else e.data.length>e.size&&(e.receiving=!1,g.Error(g.GetStackTrace(),`Received bigger file than advertised: ${e.data.length}/${e.size}`))}}class Md{constructor(){this.mimetype="",this.extension="",this.receiving=!1,this.size=0,this.data=[],this.valid=!1}}class AA{}AA.mainButton=0,AA.auxiliaryButton=1,AA.secondaryButton=2,AA.fourthButton=3,AA.fifthButton=4;class lA{}lA.primaryButton=1,lA.secondaryButton=2,lA.auxiliaryButton=4,lA.fourthButton=8,lA.fifthButton=16;class pe{constructor(){this.unregisterCallbacks=[]}addUnregisterCallback(A){this.unregisterCallbacks.push(A)}unregisterAll(){for(const A of this.unregisterCallbacks)A();this.unregisterCallbacks=[]}}class Dd{constructor(A,e,t){this.touchEventListenerTracker=new pe,this.toStreamerMessagesProvider=A,this.videoElementProvider=e,this.coordinateConverter=t;const n=o=>this.onTouchStart(o),s=o=>this.onTouchEnd(o),i=o=>this.onTouchMove(o);document.addEventListener("touchstart",n,{passive:!1}),document.addEventListener("touchend",s,{passive:!1}),document.addEventListener("touchmove",i,{passive:!1}),this.touchEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("touchstart",n)),this.touchEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("touchend",s)),this.touchEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("touchmove",i))}unregisterTouchEvents(){this.touchEventListenerTracker.unregisterAll()}setVideoElementParentClientRect(A){this.videoElementParentClientRect=A}onTouchStart(A){if(this.videoElementProvider.isVideoReady()){if(this.fakeTouchFinger==null){const e=A.changedTouches[0];this.fakeTouchFinger=new Rd(e.identifier,e.clientX-this.videoElementParentClientRect.left,e.clientY-this.videoElementParentClientRect.top);const t=this.videoElementProvider.getVideoParentElement(),n=new MouseEvent("mouseenter",e);t.dispatchEvent(n);const s=this.coordinateConverter.normalizeAndQuantizeUnsigned(this.fakeTouchFinger.x,this.fakeTouchFinger.y);this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDown")([AA.mainButton,s.x,s.y])}A.preventDefault()}}onTouchEnd(A){if(!this.videoElementProvider.isVideoReady())return;const e=this.videoElementProvider.getVideoParentElement(),t=this.toStreamerMessagesProvider.toStreamerHandlers;for(let n=0;n<A.changedTouches.length;n++){const s=A.changedTouches[n];if(s.identifier===this.fakeTouchFinger.id){const i=s.clientX-this.videoElementParentClientRect.left,o=s.clientY-this.videoElementParentClientRect.top,a=this.coordinateConverter.normalizeAndQuantizeUnsigned(i,o);t.get("MouseUp")([AA.mainButton,a.x,a.y]);const l=new MouseEvent("mouseleave",s);e.dispatchEvent(l),this.fakeTouchFinger=null;break}}A.preventDefault()}onTouchMove(A){if(!this.videoElementProvider.isVideoReady())return;const e=this.toStreamerMessagesProvider.toStreamerHandlers;for(let t=0;t<A.touches.length;t++){const n=A.touches[t];if(n.identifier===this.fakeTouchFinger.id){const s=n.clientX-this.videoElementParentClientRect.left,i=n.clientY-this.videoElementParentClientRect.top,o=this.coordinateConverter.normalizeAndQuantizeUnsigned(s,i),a=this.coordinateConverter.normalizeAndQuantizeSigned(s-this.fakeTouchFinger.x,i-this.fakeTouchFinger.y);e.get("MouseMove")([o.x,o.y,a.x,a.y]),this.fakeTouchFinger.x=s,this.fakeTouchFinger.y=i;break}}A.preventDefault()}}class Rd{constructor(A,e,t){this.id=A,this.x=e,this.y=t}}class cA{}cA.backSpace=8,cA.shift=16,cA.control=17,cA.alt=18,cA.rightShift=253,cA.rightControl=254,cA.rightAlt=255;class xd{constructor(A,e,t){this.keyboardEventListenerTracker=new pe,this.CodeToKeyCode={Escape:27,Digit0:48,Digit1:49,Digit2:50,Digit3:51,Digit4:52,Digit5:53,Digit6:54,Digit7:55,Digit8:56,Digit9:57,Minus:173,Equal:187,Backspace:8,Tab:9,KeyQ:81,KeyW:87,KeyE:69,KeyR:82,KeyT:84,KeyY:89,KeyU:85,KeyI:73,KeyO:79,KeyP:80,BracketLeft:219,BracketRight:221,Enter:13,ControlLeft:17,KeyA:65,KeyS:83,KeyD:68,KeyF:70,KeyG:71,KeyH:72,KeyJ:74,KeyK:75,KeyL:76,Semicolon:186,Quote:222,Backquote:192,ShiftLeft:16,Backslash:220,KeyZ:90,KeyX:88,KeyC:67,KeyV:86,KeyB:66,KeyN:78,KeyM:77,Comma:188,Period:190,Slash:191,ShiftRight:253,AltLeft:18,Space:32,CapsLock:20,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,Pause:19,ScrollLock:145,NumpadDivide:111,NumpadMultiply:106,NumpadSubtract:109,NumpadAdd:107,NumpadDecimal:110,Numpad9:105,Numpad8:104,Numpad7:103,Numpad6:102,Numpad5:101,Numpad4:100,Numpad3:99,Numpad2:98,Numpad1:97,Numpad0:96,NumLock:144,ControlRight:254,AltRight:255,Home:36,End:35,ArrowUp:38,ArrowLeft:37,ArrowRight:39,ArrowDown:40,PageUp:33,PageDown:34,Insert:45,Delete:46,ContextMenu:93},this.toStreamerMessagesProvider=A,this.config=e,this.activeKeysProvider=t}registerKeyBoardEvents(){const A=n=>this.handleOnKeyDown(n),e=n=>this.handleOnKeyUp(n),t=n=>this.handleOnKeyPress(n);document.addEventListener("keydown",A),document.addEventListener("keyup",e),document.addEventListener("keypress",t),this.keyboardEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("keydown",A)),this.keyboardEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("keyup",e)),this.keyboardEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("keypress",t))}unregisterKeyBoardEvents(){this.keyboardEventListenerTracker.unregisterAll()}handleOnKeyDown(A){const e=this.getKeycode(A);e&&(g.Log(g.GetStackTrace(),`key down ${e}, repeat = ${A.repeat}`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get("KeyDown")([this.getKeycode(A),A.repeat?1:0]),this.activeKeysProvider.getActiveKeys().push(e),e===cA.backSpace&&document.dispatchEvent(new KeyboardEvent("keypress",{charCode:cA.backSpace})),this.config.isFlagEnabled(Q.SuppressBrowserKeys)&&this.isKeyCodeBrowserKey(e)&&A.preventDefault())}handleOnKeyUp(A){const e=this.getKeycode(A);e&&(g.Log(g.GetStackTrace(),`key up ${e}`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get("KeyUp")([e,A.repeat?1:0]),this.config.isFlagEnabled(Q.SuppressBrowserKeys)&&this.isKeyCodeBrowserKey(e)&&A.preventDefault())}handleOnKeyPress(A){if(!("charCode"in A))return void g.Warning(g.GetStackTrace(),"KeyboardEvent.charCode is deprecated in this browser, cannot send key press.");const e=A.charCode;g.Log(g.GetStackTrace(),`key press ${e}`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get("KeyPress")([e])}getKeycode(A){if(!("keyCode"in A)){const e=A;return e.code in this.CodeToKeyCode?this.CodeToKeyCode[e.code]:(g.Warning(g.GetStackTrace(),`Keyboard code of ${e.code} is not supported in our mapping, ignoring this key.`),null)}return A.keyCode===cA.shift&&A.code==="ShiftRight"?cA.rightShift:A.keyCode===cA.control&&A.code==="ControlRight"?cA.rightControl:A.keyCode===cA.alt&&A.code==="AltRight"?cA.rightAlt:A.keyCode}isKeyCodeBrowserKey(A){return A>=112&&A<=123||A===9}}class Pd{constructor(A,e,t){this.x=0,this.y=0,this.updateMouseMovePositionEvent=s=>{this.updateMouseMovePosition(s)},this.mouseEventListenerTracker=new pe,this.videoElementProvider=A,this.mouseController=e,this.activeKeysProvider=t;const n=this.videoElementProvider.getVideoParentElement();this.x=n.getBoundingClientRect().width/2,this.y=n.getBoundingClientRect().height/2,this.coord=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(this.x,this.y)}unregisterMouseEvents(){this.mouseEventListenerTracker.unregisterAll()}lockStateChange(){const A=this.videoElementProvider.getVideoParentElement(),e=this.mouseController.toStreamerMessagesProvider.toStreamerHandlers;if(document.pointerLockElement===A||document.mozPointerLockElement===A)g.Log(g.GetStackTrace(),"Pointer locked",6),document.addEventListener("mousemove",this.updateMouseMovePositionEvent,!1),this.mouseEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("mousemove",this.updateMouseMovePositionEvent,!1));else{g.Log(g.GetStackTrace(),"The pointer lock status is now unlocked",6),document.removeEventListener("mousemove",this.updateMouseMovePositionEvent,!1);let t=this.activeKeysProvider.getActiveKeys();const n=new Set(t),s=[];n.forEach(i=>{}),s.forEach(i=>{e.get("KeyUp")([i])}),t=[]}}updateMouseMovePosition(A){if(!this.videoElementProvider.isVideoReady())return;const e=this.mouseController.toStreamerMessagesProvider.toStreamerHandlers,t=this.videoElementProvider.getVideoParentElement().clientWidth,n=this.videoElementProvider.getVideoParentElement().clientHeight;this.x+=A.movementX,this.y+=A.movementY,this.x>t&&(this.x-=t),this.y>n&&(this.y-=n),this.x<0&&(this.x=t+this.x),this.y<0&&(this.y=n-this.y),this.coord=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(this.x,this.y);const s=this.mouseController.coordinateConverter.normalizeAndQuantizeSigned(A.movementX,A.movementY);e.get("MouseMove")([this.coord.x,this.coord.y,s.x,s.y])}handleMouseDown(A){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDown")([A.button,this.coord.x,this.coord.y])}handleMouseUp(A){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseUp")([A.button,this.coord.x,this.coord.y])}handleMouseWheel(A){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseWheel")([A.wheelDelta,this.coord.x,this.coord.y])}handleMouseDouble(A){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDouble")([A.button,this.coord.x,this.coord.y])}handlePressMouseButtons(A){this.videoElementProvider.isVideoReady()&&this.mouseController.pressMouseButtons(A.buttons,this.x,this.y)}handleReleaseMouseButtons(A){this.videoElementProvider.isVideoReady()&&this.mouseController.releaseMouseButtons(A.buttons,this.x,this.y)}}class Kd{constructor(A){this.mouseController=A}unregisterMouseEvents(){}updateMouseMovePosition(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;g.Log(g.GetStackTrace(),"MouseMove",6);const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY),t=this.mouseController.coordinateConverter.normalizeAndQuantizeSigned(A.movementX,A.movementY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseMove")([e.x,e.y,t.x,t.y]),A.preventDefault()}handleMouseDown(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;g.Log(g.GetStackTrace(),"onMouse Down",6);const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDown")([A.button,e.x,e.y]),A.preventDefault()}handleMouseUp(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;g.Log(g.GetStackTrace(),"onMouse Up",6);const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseUp")([A.button,e.x,e.y]),A.preventDefault()}handleContextMenu(A){this.mouseController.videoElementProvider.isVideoReady()&&A.preventDefault()}handleMouseWheel(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseWheel")([A.wheelDelta,e.x,e.y]),A.preventDefault()}handleMouseDouble(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDouble")([A.button,e.x,e.y])}handlePressMouseButtons(A){this.mouseController.videoElementProvider.isVideoReady()&&(g.Log(g.GetStackTrace(),"onMouse press",6),this.mouseController.pressMouseButtons(A.buttons,A.offsetX,A.offsetY))}handleReleaseMouseButtons(A){this.mouseController.videoElementProvider.isVideoReady()&&(g.Log(g.GetStackTrace(),"onMouse release",6),this.mouseController.releaseMouseButtons(A.buttons,A.offsetX,A.offsetY))}}class Gd{constructor(A,e,t,n){this.mouseEventListenerTracker=new pe,this.toStreamerMessagesProvider=A,this.coordinateConverter=t,this.videoElementProvider=e,this.activeKeysProvider=n,this.registerMouseEnterAndLeaveEvents()}unregisterMouseEvents(){this.mouseEventListenerTracker.unregisterAll()}registerLockedMouseEvents(A){const e=this.videoElementProvider.getVideoParentElement(),t=new Pd(this.videoElementProvider,A,this.activeKeysProvider);if(e.requestPointerLock=e.requestPointerLock||e.mozRequestPointerLock,document.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock,e.requestPointerLock){const l=()=>{e.requestPointerLock()};e.addEventListener("click",l),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("click",l))}const n=()=>t.lockStateChange();document.addEventListener("pointerlockchange",n,!1),document.addEventListener("mozpointerlockchange",n,!1),this.mouseEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("pointerlockchange",n,!1)),this.mouseEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("mozpointerlockchange",n,!1));const s=l=>t.handleMouseDown(l),i=l=>t.handleMouseUp(l),o=l=>t.handleMouseWheel(l),a=l=>t.handleMouseDouble(l);e.addEventListener("mousedown",s),e.addEventListener("mouseup",i),e.addEventListener("wheel",o),e.addEventListener("dblclick",a),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mousedown",s)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mouseup",i)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("wheel",o)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("dblclick",a)),this.mouseEventListenerTracker.addUnregisterCallback(()=>t.unregisterMouseEvents()),this.mouseEventListenerTracker.addUnregisterCallback(()=>{!document.exitPointerLock||document.pointerLockElement!==e&&document.mozPointerLockElement!==e||document.exitPointerLock()})}registerHoveringMouseEvents(A){const e=this.videoElementProvider.getVideoParentElement(),t=new Kd(A),n=d=>t.updateMouseMovePosition(d),s=d=>t.handleMouseDown(d),i=d=>t.handleMouseUp(d),o=d=>t.handleContextMenu(d),a=d=>t.handleMouseWheel(d),l=d=>t.handleMouseDouble(d);e.addEventListener("mousemove",n),e.addEventListener("mousedown",s),e.addEventListener("mouseup",i),e.addEventListener("contextmenu",o),e.addEventListener("wheel",a),e.addEventListener("dblclick",l),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mousemove",n)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mousedown",s)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mouseup",i)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("contextmenu",o)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("wheel",a)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("dblclick",l)),this.mouseEventListenerTracker.addUnregisterCallback(()=>t.unregisterMouseEvents())}registerMouseEnterAndLeaveEvents(){const A=this.videoElementProvider.getVideoParentElement(),e=n=>{this.videoElementProvider.isVideoReady()&&(g.Log(g.GetStackTrace(),"Mouse Entered",6),this.sendMouseEnter(),this.pressMouseButtons(n.buttons,n.x,n.y))},t=n=>{this.videoElementProvider.isVideoReady()&&(g.Log(g.GetStackTrace(),"Mouse Left",6),this.sendMouseLeave(),this.releaseMouseButtons(n.buttons,n.x,n.y))};A.addEventListener("mouseenter",e),A.addEventListener("mouseleave",t),this.mouseEventListenerTracker.addUnregisterCallback(()=>A.removeEventListener("mouseenter",e)),this.mouseEventListenerTracker.addUnregisterCallback(()=>A.removeEventListener("mouseleave",t))}releaseMouseButtons(A,e,t){const n=this.coordinateConverter.normalizeAndQuantizeUnsigned(e,t);A&lA.primaryButton&&this.sendMouseUp(AA.mainButton,n.x,n.y),A&lA.secondaryButton&&this.sendMouseUp(AA.secondaryButton,n.x,n.y),A&lA.auxiliaryButton&&this.sendMouseUp(AA.auxiliaryButton,n.x,n.y),A&lA.fourthButton&&this.sendMouseUp(AA.fourthButton,n.x,n.y),A&lA.fifthButton&&this.sendMouseUp(AA.fifthButton,n.x,n.y)}pressMouseButtons(A,e,t){if(!this.videoElementProvider.isVideoReady())return;const n=this.coordinateConverter.normalizeAndQuantizeUnsigned(e,t);A&lA.primaryButton&&this.sendMouseDown(AA.mainButton,n.x,n.y),A&lA.secondaryButton&&this.sendMouseDown(AA.secondaryButton,n.x,n.y),A&lA.auxiliaryButton&&this.sendMouseDown(AA.auxiliaryButton,n.x,n.y),A&lA.fourthButton&&this.sendMouseDown(AA.fourthButton,n.x,n.y),A&lA.fifthButton&&this.sendMouseDown(AA.fifthButton,n.x,n.y)}sendMouseEnter(){this.videoElementProvider.isVideoReady()&&this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseEnter")()}sendMouseLeave(){this.videoElementProvider.isVideoReady()&&this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseLeave")()}sendMouseDown(A,e,t){this.videoElementProvider.isVideoReady()&&(g.Log(g.GetStackTrace(),`mouse button ${A} down at (${e}, ${t})`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDown")([A,e,t]))}sendMouseUp(A,e,t){if(!this.videoElementProvider.isVideoReady())return;g.Log(g.GetStackTrace(),`mouse button ${A} up at (${e}, ${t})`,6);const n=this.coordinateConverter.normalizeAndQuantizeUnsigned(e,t);this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseUp")([A,n.x,n.y])}}class kd{constructor(A,e,t){this.fingers=[9,8,7,6,5,4,3,2,1,0],this.fingerIds=new Map,this.maxByteValue=255,this.touchEventListenerTracker=new pe,this.toStreamerMessagesProvider=A,this.videoElementProvider=e,this.coordinateConverter=t,this.videoElementParent=e.getVideoElement();const n=a=>this.onTouchStart(a),s=a=>this.onTouchEnd(a),i=a=>this.onTouchMove(a);this.videoElementParent.addEventListener("touchstart",n,{passive:!1}),this.videoElementParent.addEventListener("touchend",s,{passive:!1}),this.videoElementParent.addEventListener("touchmove",i,{passive:!1}),this.touchEventListenerTracker.addUnregisterCallback(()=>this.videoElementParent.removeEventListener("touchstart",n)),this.touchEventListenerTracker.addUnregisterCallback(()=>this.videoElementParent.removeEventListener("touchend",s)),this.touchEventListenerTracker.addUnregisterCallback(()=>this.videoElementParent.removeEventListener("touchmove",i)),g.Log(g.GetStackTrace(),"Touch Events Registered",6);const o=a=>{a.preventDefault()};document.addEventListener("touchmove",o,{passive:!1}),this.touchEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("touchmove",o))}unregisterTouchEvents(){this.touchEventListenerTracker.unregisterAll()}rememberTouch(A){const e=this.fingers.pop();e===void 0&&g.Log(g.GetStackTrace(),"exhausted touch identifiers",6),this.fingerIds.set(A.identifier,e)}forgetTouch(A){this.fingers.push(this.fingerIds.get(A.identifier)),this.fingers.sort(function(e,t){return t-e}),this.fingerIds.delete(A.identifier)}onTouchStart(A){if(this.videoElementProvider.isVideoReady()){for(let e=0;e<A.changedTouches.length;e++)this.rememberTouch(A.changedTouches[e]);g.Log(g.GetStackTrace(),"touch start",6),this.emitTouchData("TouchStart",A.changedTouches),A.preventDefault()}}onTouchEnd(A){if(this.videoElementProvider.isVideoReady()){g.Log(g.GetStackTrace(),"touch end",6),this.emitTouchData("TouchEnd",A.changedTouches);for(let e=0;e<A.changedTouches.length;e++)this.forgetTouch(A.changedTouches[e]);A.preventDefault()}}onTouchMove(A){this.videoElementProvider.isVideoReady()&&(g.Log(g.GetStackTrace(),"touch move",6),this.emitTouchData("TouchMove",A.touches),A.preventDefault())}emitTouchData(A,e){if(!this.videoElementProvider.isVideoReady())return;const t=this.videoElementProvider.getVideoParentElement().getBoundingClientRect(),n=this.toStreamerMessagesProvider.toStreamerHandlers;for(let s=0;s<e.length;s++){const o=e[s],a=o.clientX-t.left,l=o.clientY-t.top;g.Log(g.GetStackTrace(),`F${this.fingerIds.get(o.identifier)}=(${a}, ${l})`,6);const d=this.coordinateConverter.normalizeAndQuantizeUnsigned(a,l);switch(A){case"TouchStart":n.get("TouchStart")([1,d.x,d.y,this.fingerIds.get(o.identifier),this.maxByteValue*o.force,d.inRange?1:0]);break;case"TouchEnd":n.get("TouchEnd")([1,d.x,d.y,this.fingerIds.get(o.identifier),this.maxByteValue*o.force,d.inRange?1:0]);break;case"TouchMove":n.get("TouchMove")([1,d.x,d.y,this.fingerIds.get(o.identifier),this.maxByteValue*o.force,d.inRange?1:0])}}}}class Nd{constructor(A){this.gamePadEventListenerTracker=new pe,this.toStreamerMessagesProvider=A,this.requestAnimationFrame=(window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.requestAnimationFrame).bind(window);const e=window;if("GamepadEvent"in e){const t=s=>this.gamePadConnectHandler(s),n=s=>this.gamePadDisconnectHandler(s);window.addEventListener("gamepadconnected",t),window.addEventListener("gamepaddisconnected",n),this.gamePadEventListenerTracker.addUnregisterCallback(()=>window.removeEventListener("gamepadconnected",t)),this.gamePadEventListenerTracker.addUnregisterCallback(()=>window.removeEventListener("gamepaddisconnected",n))}else if("WebKitGamepadEvent"in e){const t=s=>this.gamePadConnectHandler(s),n=s=>this.gamePadDisconnectHandler(s);window.addEventListener("webkitgamepadconnected",t),window.addEventListener("webkitgamepaddisconnected",n),this.gamePadEventListenerTracker.addUnregisterCallback(()=>window.removeEventListener("webkitgamepadconnected",t)),this.gamePadEventListenerTracker.addUnregisterCallback(()=>window.removeEventListener("webkitgamepaddisconnected",n))}if(this.controllers=[],navigator.getGamepads)for(const t of navigator.getGamepads())t&&this.gamePadConnectHandler(new GamepadEvent("gamepadconnected",{gamepad:t}))}unregisterGamePadEvents(){this.gamePadEventListenerTracker.unregisterAll();for(const A of this.controllers)A.id!==void 0&&this.onGamepadDisconnected(A.id);this.controllers=[],this.onGamepadConnected=()=>{},this.onGamepadDisconnected=()=>{}}gamePadConnectHandler(A){g.Log(g.GetStackTrace(),"Gamepad connect handler",6);const e=A.gamepad,t={currentState:e,prevState:e,id:void 0};this.controllers.push(t),this.controllers[e.index].currentState=e,this.controllers[e.index].prevState=e,g.Log(g.GetStackTrace(),"gamepad: "+e.id+" connected",6),window.requestAnimationFrame(()=>this.updateStatus()),this.onGamepadConnected()}gamePadDisconnectHandler(A){g.Log(g.GetStackTrace(),"Gamepad disconnect handler",6),g.Log(g.GetStackTrace(),"gamepad: "+A.gamepad.id+" disconnected",6);const e=this.controllers[A.gamepad.index];delete this.controllers[A.gamepad.index],this.controllers=this.controllers.filter(t=>t!==void 0),this.onGamepadDisconnected(e.id)}scanGamePads(){const A=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():[];for(let e=0;e<A.length;e++)A[e]&&A[e].index in this.controllers&&(this.controllers[A[e].index].currentState=A[e])}updateStatus(){this.scanGamePads();const A=this.toStreamerMessagesProvider.toStreamerHandlers;for(const e of this.controllers){const t=e.id===void 0?this.controllers.indexOf(e):e.id,n=e.currentState;for(let s=0;s<e.currentState.buttons.length;s++){const i=e.currentState.buttons[s],o=e.prevState.buttons[s];i.pressed?s==we.LeftTrigger?A.get("GamepadAnalog")([t,5,i.value]):s==we.RightTrigger?A.get("GamepadAnalog")([t,6,i.value]):A.get("GamepadButtonPressed")([t,s,o.pressed?1:0]):!i.pressed&&o.pressed&&(s==we.LeftTrigger?A.get("GamepadAnalog")([t,5,0]):s==we.RightTrigger?A.get("GamepadAnalog")([t,6,0]):A.get("GamepadButtonReleased")([t,s]))}for(let s=0;s<n.axes.length;s+=2){const i=parseFloat(n.axes[s].toFixed(4)),o=-parseFloat(n.axes[s+1].toFixed(4));A.get("GamepadAnalog")([t,s+1,i]),A.get("GamepadAnalog")([t,s+2,o])}this.controllers[t].prevState=n}this.controllers.length>0&&this.requestAnimationFrame(()=>this.updateStatus())}onGamepadResponseReceived(A){for(const e of this.controllers)if(e.id===void 0){e.id=A;break}}onGamepadConnected(){}onGamepadDisconnected(A){}}(function(r){r[r.RightClusterBottomButton=0]="RightClusterBottomButton",r[r.RightClusterRightButton=1]="RightClusterRightButton",r[r.RightClusterLeftButton=2]="RightClusterLeftButton",r[r.RightClusterTopButton=3]="RightClusterTopButton",r[r.LeftShoulder=4]="LeftShoulder",r[r.RightShoulder=5]="RightShoulder",r[r.LeftTrigger=6]="LeftTrigger",r[r.RightTrigger=7]="RightTrigger",r[r.SelectOrBack=8]="SelectOrBack",r[r.StartOrForward=9]="StartOrForward",r[r.LeftAnalogPress=10]="LeftAnalogPress",r[r.RightAnalogPress=11]="RightAnalogPress",r[r.LeftClusterTopButton=12]="LeftClusterTopButton",r[r.LeftClusterBottomButton=13]="LeftClusterBottomButton",r[r.LeftClusterLeftButton=14]="LeftClusterLeftButton",r[r.LeftClusterRightButton=15]="LeftClusterRightButton",r[r.CentreButton=16]="CentreButton",r[r.LeftStickHorizontal=0]="LeftStickHorizontal",r[r.LeftStickVertical=1]="LeftStickVertical",r[r.RightStickHorizontal=2]="RightStickHorizontal",r[r.RightStickVertical=3]="RightStickVertical"})(we||(we={}));class _d{constructor(A,e,t){this.activeKeys=new Vd,this.toStreamerMessagesProvider=A,this.videoElementProvider=e,this.coordinateConverter=t}registerKeyBoard(A){g.Log(g.GetStackTrace(),"Register Keyboard Events",7);const e=new xd(this.toStreamerMessagesProvider,A,this.activeKeys);return e.registerKeyBoardEvents(),e}registerMouse(A){g.Log(g.GetStackTrace(),"Register Mouse Events",7);const e=new Gd(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter,this.activeKeys);switch(A){case ZA.LockedMouse:e.registerLockedMouseEvents(e);break;case ZA.HoveringMouse:e.registerHoveringMouseEvents(e);break;default:g.Info(g.GetStackTrace(),"unknown Control Scheme Type Defaulting to Locked Mouse Events"),e.registerLockedMouseEvents(e)}return e}registerTouch(A,e){if(g.Log(g.GetStackTrace(),"Registering Touch",6),A){const t=new Dd(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter);return t.setVideoElementParentClientRect(e),t}return new kd(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter)}registerGamePad(){return g.Log(g.GetStackTrace(),"Register Game Pad",7),new Nd(this.toStreamerMessagesProvider)}}class Vd{constructor(){this.activeKeys=[],this.activeKeys=[]}getActiveKeys(){return this.activeKeys}}class Od{constructor(A,e){this.lastTimeResized=new Date().getTime(),this.videoElement=document.createElement("video"),this.config=e,this.videoElement.id="streamingVideo",this.videoElement.disablePictureInPicture=!0,this.videoElement.playsInline=!0,this.videoElement.style.width="100%",this.videoElement.style.height="100%",this.videoElement.style.position="absolute",this.videoElement.style.pointerEvents="all",A.appendChild(this.videoElement),this.onResizePlayerCallback=()=>{console.log("Resolution changed, restyling player, did you forget to override this function?")},this.onMatchViewportResolutionCallback=()=>{console.log("Resolution changed and match viewport resolution is turned on, did you forget to override this function?")},this.videoElement.onclick=()=>{this.audioElement!=null&&this.audioElement.paused&&this.audioElement.play(),this.videoElement.paused&&this.videoElement.play()},this.videoElement.onloadedmetadata=()=>{this.onVideoInitialized()},window.addEventListener("resize",()=>this.resizePlayerStyle(),!0),window.addEventListener("orientationchange",()=>this.onOrientationChange())}setAudioElement(A){this.audioElement=A}play(){return this.videoElement.muted=this.config.isFlagEnabled(Q.StartVideoMuted),this.videoElement.autoplay=this.config.isFlagEnabled(Q.AutoPlayVideo),this.videoElement.play()}isPaused(){return this.videoElement.paused}isVideoReady(){return this.videoElement.readyState!==void 0&&this.videoElement.readyState>0}hasVideoSource(){return this.videoElement.srcObject!==void 0&&this.videoElement.srcObject!==null}getVideoElement(){return this.videoElement}getVideoParentElement(){return this.videoElement.parentElement}setVideoEnabled(A){this.videoElement.srcObject.getTracks().forEach(e=>e.enabled=A)}onVideoInitialized(){}onOrientationChange(){clearTimeout(this.orientationChangeTimeout),this.orientationChangeTimeout=window.setTimeout(()=>{this.resizePlayerStyle()},500)}resizePlayerStyle(){const A=this.getVideoParentElement();A&&(this.updateVideoStreamSize(),A.classList.contains("fixed-size")||this.resizePlayerStyleToFillParentElement(),this.onResizePlayerCallback())}resizePlayerStyleToFillParentElement(){this.getVideoParentElement().setAttribute("style","top: 0px; left: 0px; width: 100%; height: 100%; cursor: default;")}updateVideoStreamSize(){if(this.config.isFlagEnabled(Q.MatchViewportResolution))if(new Date().getTime()-this.lastTimeResized>300){const A=this.getVideoParentElement();if(!A)return;this.onMatchViewportResolutionCallback(A.clientWidth,A.clientHeight),this.lastTimeResized=new Date().getTime()}else g.Log(g.GetStackTrace(),"Resizing too often - skipping",6),clearTimeout(this.resizeTimeoutHandle),this.resizeTimeoutHandle=window.setTimeout(()=>this.updateVideoStreamSize(),100)}}class Va{constructor(){this.map=new Map,this.reverseMap=new Map}getFromKey(A){return this.map.get(A)}getFromValue(A){return this.reverseMap.get(A)}add(A,e){this.map.set(A,e),this.reverseMap.set(e,A)}remove(A,e){this.map.delete(A),this.reverseMap.delete(e)}}class Wd{constructor(){this.toStreamerHandlers=new Map,this.fromStreamerHandlers=new Map,this.toStreamerMessages=new Va,this.fromStreamerMessages=new Va}populateDefaultProtocol(){this.toStreamerMessages.add("IFrameRequest",{id:0,byteLength:0,structure:[]}),this.toStreamerMessages.add("RequestQualityControl",{id:1,byteLength:0,structure:[]}),this.toStreamerMessages.add("FpsRequest",{id:2,byteLength:0,structure:[]}),this.toStreamerMessages.add("AverageBitrateRequest",{id:3,byteLength:0,structure:[]}),this.toStreamerMessages.add("StartStreaming",{id:4,byteLength:0,structure:[]}),this.toStreamerMessages.add("StopStreaming",{id:5,byteLength:0,structure:[]}),this.toStreamerMessages.add("LatencyTest",{id:6,byteLength:0,structure:[]}),this.toStreamerMessages.add("RequestInitialSettings",{id:7,byteLength:0,structure:[]}),this.toStreamerMessages.add("TestEcho",{id:8,byteLength:0,structure:[]}),this.toStreamerMessages.add("UIInteraction",{id:50,byteLength:0,structure:[]}),this.toStreamerMessages.add("Command",{id:51,byteLength:0,structure:[]}),this.toStreamerMessages.add("KeyDown",{id:60,byteLength:2,structure:["uint8","uint8"]}),this.toStreamerMessages.add("KeyUp",{id:61,byteLength:1,structure:["uint8"]}),this.toStreamerMessages.add("KeyPress",{id:62,byteLength:2,structure:["uint16"]}),this.toStreamerMessages.add("MouseEnter",{id:70,byteLength:0,structure:[]}),this.toStreamerMessages.add("MouseLeave",{id:71,byteLength:0,structure:[]}),this.toStreamerMessages.add("MouseDown",{id:72,byteLength:5,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.add("MouseUp",{id:73,byteLength:5,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.add("MouseMove",{id:74,byteLength:8,structure:["uint16","uint16","int16","int16"]}),this.toStreamerMessages.add("MouseWheel",{id:75,byteLength:6,structure:["int16","uint16","uint16"]}),this.toStreamerMessages.add("MouseDouble",{id:76,byteLength:5,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.add("TouchStart",{id:80,byteLength:8,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.add("TouchEnd",{id:81,byteLength:8,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.add("TouchMove",{id:82,byteLength:8,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.add("GamepadConnected",{id:93,byteLength:0,structure:[]}),this.toStreamerMessages.add("GamepadButtonPressed",{id:90,byteLength:3,structure:["uint8","uint8","uint8"]}),this.toStreamerMessages.add("GamepadButtonReleased",{id:91,byteLength:3,structure:["uint8","uint8","uint8"]}),this.toStreamerMessages.add("GamepadAnalog",{id:92,byteLength:10,structure:["uint8","uint8","double"]}),this.toStreamerMessages.add("GamepadDisconnected",{id:94,byteLength:1,structure:["uint8"]}),this.fromStreamerMessages.add("QualityControlOwnership",0),this.fromStreamerMessages.add("Response",1),this.fromStreamerMessages.add("Command",2),this.fromStreamerMessages.add("FreezeFrame",3),this.fromStreamerMessages.add("UnfreezeFrame",4),this.fromStreamerMessages.add("VideoEncoderAvgQP",5),this.fromStreamerMessages.add("LatencyTest",6),this.fromStreamerMessages.add("InitialSettings",7),this.fromStreamerMessages.add("FileExtension",8),this.fromStreamerMessages.add("FileMimeType",9),this.fromStreamerMessages.add("FileContents",10),this.fromStreamerMessages.add("TestEcho",11),this.fromStreamerMessages.add("InputControlOwnership",12),this.fromStreamerMessages.add("GamepadResponse",13),this.fromStreamerMessages.add("Protocol",255)}registerMessageHandler(A,e,t){switch(A){case L.ToStreamer:this.toStreamerHandlers.set(e,t);break;case L.FromStreamer:this.fromStreamerHandlers.set(e,t);break;default:g.Log(g.GetStackTrace(),`Unknown message direction ${A}`)}}}(function(r){r[r.ToStreamer=0]="ToStreamer",r[r.FromStreamer=1]="FromStreamer"})(L||(L={}));class Xd{constructor(){this.responseEventListeners=new Map}addResponseEventListener(A,e){this.responseEventListeners.set(A,e)}removeResponseEventListener(A){this.responseEventListeners.delete(A)}onResponse(A){g.Log(g.GetStackTrace(),"DataChannelReceiveMessageType.Response",6);const e=new TextDecoder("utf-16").decode(A.slice(1));g.Log(g.GetStackTrace(),e,6),this.responseEventListeners.forEach(t=>{t(e)})}}class Jd{constructor(A,e){this.dataChannelSender=A,this.toStreamerMessagesMapProvider=e}sendLatencyTest(A){this.sendDescriptor("LatencyTest",A)}emitCommand(A){this.sendDescriptor("Command",A)}emitUIInteraction(A){this.sendDescriptor("UIInteraction",A)}sendDescriptor(A,e){const t=JSON.stringify(e),n=this.toStreamerMessagesMapProvider.toStreamerMessages.getFromKey(A);n===void 0&&g.Error(g.GetStackTrace(),`Attempted to emit descriptor with message type: ${A}, but the frontend hasn't been configured to send such a message. Check you've added the message type in your cpp`),g.Log(g.GetStackTrace(),"Sending: "+e,6);const s=new DataView(new ArrayBuffer(3+2*t.length));let i=0;s.setUint8(i,n.id),i++,s.setUint16(i,t.length,!0),i+=2;for(let o=0;o<t.length;o++)s.setUint16(i,t.charCodeAt(o),!0),i+=2;this.dataChannelSender.canSend()?this.dataChannelSender.sendData(s.buffer):g.Info(g.GetStackTrace(),`Data channel cannot send yet, skipping sending descriptor message: ${A} - ${t}`)}}class zd{constructor(A,e){this.dataChannelSender=A,this.toStreamerMessagesMapProvider=e}sendMessageToStreamer(A,e){e===void 0&&(e=[]);const t=this.toStreamerMessagesMapProvider.toStreamerMessages.getFromKey(A);if(t===void 0)return void g.Error(g.GetStackTrace(),`Attempted to send a message to the streamer with message type: ${A}, but the frontend hasn't been configured to send such a message. Check you've added the message type in your cpp`);const n=new DataView(new ArrayBuffer(t.byteLength+1));n.setUint8(0,t.id);let s=1;e.forEach((i,o)=>{switch(t.structure[o]){case"uint8":n.setUint8(s,i),s+=1;break;case"uint16":n.setUint16(s,i,!0),s+=2;break;case"int16":n.setInt16(s,i,!0),s+=2;break;case"float":n.setFloat32(s,i,!0),s+=4;break;case"double":n.setFloat64(s,i,!0),s+=8}}),this.dataChannelSender.canSend()?this.dataChannelSender.sendData(n.buffer):g.Info(g.GetStackTrace(),`Data channel cannot send yet, skipping sending message: ${A} - ${new Uint8Array(n.buffer)}`)}}class Yd{constructor(A){this.sendMessageController=A}SendRequestQualityControl(){this.sendMessageController.sendMessageToStreamer("RequestQualityControl")}SendMaxFpsRequest(){this.sendMessageController.sendMessageToStreamer("FpsRequest")}SendAverageBitrateRequest(){this.sendMessageController.sendMessageToStreamer("AverageBitrateRequest")}SendStartStreaming(){this.sendMessageController.sendMessageToStreamer("StartStreaming")}SendStopStreaming(){this.sendMessageController.sendMessageToStreamer("StopStreaming")}SendRequestInitialSettings(){this.sendMessageController.sendMessageToStreamer("RequestInitialSettings")}}class $d{constructor(A){this.dataChannelProvider=A}canSend(){return this.dataChannelProvider.getDataChannelInstance().dataChannel!==void 0&&this.dataChannelProvider.getDataChannelInstance().dataChannel.readyState=="open"}sendData(A){const e=this.dataChannelProvider.getDataChannelInstance();e.dataChannel.readyState=="open"?(e.dataChannel.send(A),g.Log(g.GetStackTrace(),`Message Sent: ${new Uint8Array(A)}`,6),this.resetAfkWarningTimerOnDataSend()):g.Error(g.GetStackTrace(),`Message Failed: ${new Uint8Array(A)}`)}resetAfkWarningTimerOnDataSend(){}}class Zd{constructor(A){this.videoElementProvider=A,this.normalizeAndQuantizeUnsignedFunc=()=>{throw new Error("Normalize and quantize unsigned, method not implemented.")},this.normalizeAndQuantizeSignedFunc=()=>{throw new Error("Normalize and unquantize signed, method not implemented.")},this.denormalizeAndUnquantizeUnsignedFunc=()=>{throw new Error("Denormalize and unquantize unsigned, method not implemented.")}}normalizeAndQuantizeUnsigned(A,e){return this.normalizeAndQuantizeUnsignedFunc(A,e)}unquantizeAndDenormalizeUnsigned(A,e){return this.denormalizeAndUnquantizeUnsignedFunc(A,e)}normalizeAndQuantizeSigned(A,e){return this.normalizeAndQuantizeSignedFunc(A,e)}setupNormalizeAndQuantize(){if(this.videoElementParent=this.videoElementProvider.getVideoParentElement(),this.videoElement=this.videoElementProvider.getVideoElement(),this.videoElementParent&&this.videoElement){const A=this.videoElementParent.clientWidth||1,e=this.videoElementParent.clientHeight||1,t=this.videoElement.videoWidth||1,n=e/A,s=(this.videoElement.videoHeight||1)/t;n>s?(g.Log(g.GetStackTrace(),"Setup Normalize and Quantize for playerAspectRatio > videoAspectRatio",6),this.ratio=n/s,this.normalizeAndQuantizeUnsignedFunc=(i,o)=>this.normalizeAndQuantizeUnsignedPlayerBigger(i,o),this.normalizeAndQuantizeSignedFunc=(i,o)=>this.normalizeAndQuantizeSignedPlayerBigger(i,o),this.denormalizeAndUnquantizeUnsignedFunc=(i,o)=>this.denormalizeAndUnquantizeUnsignedPlayerBigger(i,o)):(g.Log(g.GetStackTrace(),"Setup Normalize and Quantize for playerAspectRatio <= videoAspectRatio",6),this.ratio=s/n,this.normalizeAndQuantizeUnsignedFunc=(i,o)=>this.normalizeAndQuantizeUnsignedPlayerSmaller(i,o),this.normalizeAndQuantizeSignedFunc=(i,o)=>this.normalizeAndQuantizeSignedPlayerSmaller(i,o),this.denormalizeAndUnquantizeUnsignedFunc=(i,o)=>this.denormalizeAndUnquantizeUnsignedPlayerSmaller(i,o))}}normalizeAndQuantizeUnsignedPlayerBigger(A,e){const t=A/this.videoElementParent.clientWidth,n=this.ratio*(e/this.videoElementParent.clientHeight-.5)+.5;return t<0||t>1||n<0||n>1?new Qr(!1,65535,65535):new Qr(!0,65536*t,65536*n)}denormalizeAndUnquantizeUnsignedPlayerBigger(A,e){const t=A/65536,n=(e/65536-.5)/this.ratio+.5;return new xn(t*this.videoElementParent.clientWidth,n*this.videoElementParent.clientHeight)}normalizeAndQuantizeSignedPlayerBigger(A,e){const t=A/(.5*this.videoElementParent.clientWidth),n=this.ratio*e/(.5*this.videoElementParent.clientHeight);return new Oa(32767*t,32767*n)}normalizeAndQuantizeUnsignedPlayerSmaller(A,e){const t=this.ratio*(A/this.videoElementParent.clientWidth-.5)+.5,n=e/this.videoElementParent.clientHeight;return t<0||t>1||n<0||n>1?new Qr(!1,65535,65535):new Qr(!0,65536*t,65536*n)}denormalizeAndUnquantizeUnsignedPlayerSmaller(A,e){const t=(A/65536-.5)/this.ratio+.5,n=e/65536;return new xn(t*this.videoElementParent.clientWidth,n*this.videoElementParent.clientHeight)}normalizeAndQuantizeSignedPlayerSmaller(A,e){const t=this.ratio*A/(.5*this.videoElementParent.clientWidth),n=e/(.5*this.videoElementParent.clientHeight);return new Oa(32767*t,32767*n)}}class Qr{constructor(A,e,t){this.inRange=A,this.x=e,this.y=t}}class xn{constructor(A,e){this.x=A,this.y=e}}class Oa{constructor(A,e){this.x=A,this.y=e}}class Wa{constructor(A,e){this.shouldShowPlayOverlay=!0,this.config=A,this.pixelStreaming=e,this.responseController=new Xd,this.file=new Md,this.sdpConstraints={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this.afkController=new Ta(this.config,this.pixelStreaming,this.onAfkTriggered.bind(this)),this.afkController.onAFKTimedOutCallback=()=>{this.setDisconnectMessageOverride("You have been disconnected due to inactivity"),this.closeSignalingServer()},this.freezeFrameController=new md(this.pixelStreaming.videoElementParent),this.videoPlayer=new Od(this.pixelStreaming.videoElementParent,this.config),this.videoPlayer.onVideoInitialized=()=>this.handleVideoInitialized(),this.videoPlayer.onMatchViewportResolutionCallback=(t,n)=>{const s={"Resolution.Width":t,"Resolution.Height":n};this.sendDescriptorController.emitCommand(s)},this.videoPlayer.onResizePlayerCallback=()=>{this.setUpMouseAndFreezeFrame()},this.streamController=new Cd(this.videoPlayer),this.coordinateConverter=new Zd(this.videoPlayer),this.sendrecvDataChannelController=new Ha,this.recvDataChannelController=new Ha,this.registerDataChannelEventEmitters(this.sendrecvDataChannelController),this.registerDataChannelEventEmitters(this.recvDataChannelController),this.dataChannelSender=new $d(this.sendrecvDataChannelController),this.dataChannelSender.resetAfkWarningTimerOnDataSend=()=>this.afkController.resetAfkWarningTimer(),this.streamMessageController=new Wd,this.webSocketController=new qo,this.webSocketController.onConfig=t=>this.handleOnConfigMessage(t),this.webSocketController.onStreamerList=t=>this.handleStreamerListMessage(t),this.webSocketController.onWebSocketOncloseOverlayMessage=t=>{this.pixelStreaming._onDisconnect(`Websocket disconnect (${t.code}) ${t.reason!=""?"- "+t.reason:""}`),this.setVideoEncoderAvgQP(0)},this.webSocketController.onPlayerCount=t=>{this.pixelStreaming._onPlayerCount(t.count)},this.webSocketController.onOpen.addEventListener("open",()=>{this.config.isFlagEnabled(Q.BrowserSendOffer)||this.webSocketController.requestStreamerList()}),this.webSocketController.onClose.addEventListener("close",()=>{this.afkController.stopAfkWarningTimer(),this.statsTimerHandle&&this.statsTimerHandle!==void 0&&window.clearInterval(this.statsTimerHandle),this.setTouchInputEnabled(!1),this.setMouseInputEnabled(!1),this.setKeyboardInputEnabled(!1),this.setGamePadInputEnabled(!1),this.shouldReconnect&&this.config.getNumericSettingValue(b.MaxReconnectAttempts)>0&&(this.isReconnecting=!0,this.reconnectAttempt++,this.restartStreamAutomatically())}),this.sendDescriptorController=new Jd(this.dataChannelSender,this.streamMessageController),this.sendMessageController=new zd(this.dataChannelSender,this.streamMessageController),this.toStreamerMessagesController=new Yd(this.sendMessageController),this.registerMessageHandlers(),this.streamMessageController.populateDefaultProtocol(),this.inputClassesFactory=new _d(this.streamMessageController,this.videoPlayer,this.coordinateConverter),this.isUsingSFU=!1,this.isQualityController=!1,this.preferredCodec="",this.shouldReconnect=!0,this.isReconnecting=!1,this.reconnectAttempt=0,this.config._addOnOptionSettingChangedListener(_.StreamerId,t=>{t!==""&&(this.peerConnectionController.peerConnection.close(),this.peerConnectionController.createPeerConnection(this.peerConfig,this.preferredCodec),this.subscribedStream=t,this.webSocketController.sendSubscribe(t))}),this.setVideoEncoderAvgQP(-1),this.signallingUrlBuilder=()=>{let t=this.config.getTextSettingValue($A.SignallingServerUrl);return this.config.isFlagEnabled(Q.BrowserSendOffer)&&(t+="?"+Q.BrowserSendOffer+"=true"),t}}requestUnquantizedAndDenormalizeUnsigned(A,e){return this.coordinateConverter.unquantizeAndDenormalizeUnsigned(A,e)}handleOnMessage(A){const e=new Uint8Array(A.data);g.Log(g.GetStackTrace(),"Message incoming:"+e,6);const t=this.streamMessageController.fromStreamerMessages.getFromValue(e[0]);this.streamMessageController.fromStreamerHandlers.get(t)(A.data)}registerMessageHandlers(){this.streamMessageController.registerMessageHandler(L.FromStreamer,"QualityControlOwnership",A=>this.onQualityControlOwnership(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"Response",A=>this.responseController.onResponse(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"Command",A=>{this.onCommand(A)}),this.streamMessageController.registerMessageHandler(L.FromStreamer,"FreezeFrame",A=>this.onFreezeFrameMessage(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"UnfreezeFrame",()=>this.invalidateFreezeFrameAndEnableVideo()),this.streamMessageController.registerMessageHandler(L.FromStreamer,"VideoEncoderAvgQP",A=>this.handleVideoEncoderAvgQP(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"LatencyTest",A=>this.handleLatencyTestResult(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"InitialSettings",A=>this.handleInitialSettings(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"FileExtension",A=>this.onFileExtension(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"FileMimeType",A=>this.onFileMimeType(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"FileContents",A=>this.onFileContents(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"TestEcho",()=>{}),this.streamMessageController.registerMessageHandler(L.FromStreamer,"InputControlOwnership",A=>this.onInputControlOwnership(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"GamepadResponse",A=>this.onGamepadResponse(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"Protocol",A=>this.onProtocolMessage(A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"IFrameRequest",()=>this.sendMessageController.sendMessageToStreamer("IFrameRequest")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"RequestQualityControl",()=>this.sendMessageController.sendMessageToStreamer("RequestQualityControl")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"FpsRequest",()=>this.sendMessageController.sendMessageToStreamer("FpsRequest")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"AverageBitrateRequest",()=>this.sendMessageController.sendMessageToStreamer("AverageBitrateRequest")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"StartStreaming",()=>this.sendMessageController.sendMessageToStreamer("StartStreaming")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"StopStreaming",()=>this.sendMessageController.sendMessageToStreamer("StopStreaming")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"LatencyTest",()=>this.sendMessageController.sendMessageToStreamer("LatencyTest")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"RequestInitialSettings",()=>this.sendMessageController.sendMessageToStreamer("RequestInitialSettings")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"TestEcho",()=>{}),this.streamMessageController.registerMessageHandler(L.ToStreamer,"UIInteraction",A=>this.sendDescriptorController.emitUIInteraction(A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"Command",A=>this.sendDescriptorController.emitCommand(A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"KeyDown",A=>this.sendMessageController.sendMessageToStreamer("KeyDown",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"KeyUp",A=>this.sendMessageController.sendMessageToStreamer("KeyUp",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"KeyPress",A=>this.sendMessageController.sendMessageToStreamer("KeyPress",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"MouseEnter",A=>this.sendMessageController.sendMessageToStreamer("MouseEnter",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"MouseLeave",A=>this.sendMessageController.sendMessageToStreamer("MouseLeave",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"MouseDown",A=>this.sendMessageController.sendMessageToStreamer("MouseDown",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"MouseUp",A=>this.sendMessageController.sendMessageToStreamer("MouseUp",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"MouseMove",A=>this.sendMessageController.sendMessageToStreamer("MouseMove",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"MouseWheel",A=>this.sendMessageController.sendMessageToStreamer("MouseWheel",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"MouseDouble",A=>this.sendMessageController.sendMessageToStreamer("MouseDouble",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"TouchStart",A=>this.sendMessageController.sendMessageToStreamer("TouchStart",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"TouchEnd",A=>this.sendMessageController.sendMessageToStreamer("TouchEnd",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"TouchMove",A=>this.sendMessageController.sendMessageToStreamer("TouchMove",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"GamepadConnected",()=>this.sendMessageController.sendMessageToStreamer("GamepadConnected")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"GamepadButtonPressed",A=>this.sendMessageController.sendMessageToStreamer("GamepadButtonPressed",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"GamepadButtonReleased",A=>this.sendMessageController.sendMessageToStreamer("GamepadButtonReleased",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"GamepadAnalog",A=>this.sendMessageController.sendMessageToStreamer("GamepadAnalog",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"GamepadDisconnected",A=>this.sendMessageController.sendMessageToStreamer("GamepadDisconnected",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"XRHMDTransform",A=>this.sendMessageController.sendMessageToStreamer("XRHMDTransform",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"XRControllerTransform",A=>this.sendMessageController.sendMessageToStreamer("XRControllerTransform",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"XRSystem",A=>this.sendMessageController.sendMessageToStreamer("XRSystem",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"XRButtonTouched",A=>this.sendMessageController.sendMessageToStreamer("XRButtonTouched",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"XRButtonPressed",A=>this.sendMessageController.sendMessageToStreamer("XRButtonPressed",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"XRButtonReleased",A=>this.sendMessageController.sendMessageToStreamer("XRButtonReleased",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"XRAnalog",A=>this.sendMessageController.sendMessageToStreamer("XRAnalog",A))}onCommand(A){g.Log(g.GetStackTrace(),"DataChannelReceiveMessageType.Command",6);const e=new TextDecoder("utf-16").decode(A.slice(1));g.Log(g.GetStackTrace(),"Data Channel Command: "+e,6);const t=JSON.parse(e);t.command==="onScreenKeyboard"&&this.pixelStreaming._activateOnScreenKeyboard(t)}onProtocolMessage(A){try{const e=new TextDecoder("utf-16").decode(A.slice(1)),t=JSON.parse(e);Object.prototype.hasOwnProperty.call(t,"Direction")||g.Error(g.GetStackTrace(),"Malformed protocol received. Ensure the protocol message contains a direction");const n=t.Direction;delete t.Direction,g.Log(g.GetStackTrace(),`Received new ${n==L.FromStreamer?"FromStreamer":"ToStreamer"} protocol. Updating existing protocol...`),Object.keys(t).forEach(s=>{const i=t[s];switch(n){case L.ToStreamer:if(!Object.prototype.hasOwnProperty.call(i,"id")||!Object.prototype.hasOwnProperty.call(i,"byteLength"))return void g.Error(g.GetStackTrace(),`ToStreamer->${s} protocol definition was malformed as it didn't contain at least an id and a byteLength
|
|
47
|
+
${this.PreCaptureTimeMs}`,6),this.CaptureToSendMs=this.PostCaptureTimeMs-this.PreCaptureTimeMs)}}class Dn{static setExtensionFromBytes(A,e){e.receiving||(e.mimetype="",e.extension="",e.receiving=!0,e.valid=!1,e.size=0,e.data=[],e.timestampStart=new Date().getTime(),g.Log(g.GetStackTrace(),"Received first chunk of file",6));const t=new TextDecoder("utf-16").decode(A.slice(1));g.Log(g.GetStackTrace(),t,6),e.extension=t}static setMimeTypeFromBytes(A,e){e.receiving||(e.mimetype="",e.extension="",e.receiving=!0,e.valid=!1,e.size=0,e.data=[],e.timestampStart=new Date().getTime(),g.Log(g.GetStackTrace(),"Received first chunk of file",6));const t=new TextDecoder("utf-16").decode(A.slice(1));g.Log(g.GetStackTrace(),t,6),e.mimetype=t}static setContentsFromBytes(A,e){if(!e.receiving)return;e.size=Math.ceil(new DataView(A.slice(1,5).buffer).getInt32(0,!0)/16379);const t=A.slice(5);if(e.data.push(t),g.Log(g.GetStackTrace(),`Received file chunk: ${e.data.length}/${e.size}`,6),e.data.length===e.size){e.receiving=!1,e.valid=!0,g.Log(g.GetStackTrace(),"Received complete file",6);const n=new Date().getTime()-e.timestampStart,s=Math.round(16*e.size*1024/n);g.Log(g.GetStackTrace(),`Average transfer bitrate: ${s}kb/s over ${n/1e3} seconds`,6);const i=new Blob(e.data,{type:e.mimetype}),o=document.createElement("a");o.setAttribute("href",URL.createObjectURL(i)),o.setAttribute("download",`transfer.${e.extension}`),document.body.append(o),o.remove()}else e.data.length>e.size&&(e.receiving=!1,g.Error(g.GetStackTrace(),`Received bigger file than advertised: ${e.data.length}/${e.size}`))}}class Md{constructor(){this.mimetype="",this.extension="",this.receiving=!1,this.size=0,this.data=[],this.valid=!1}}class j{}j.mainButton=0,j.auxiliaryButton=1,j.secondaryButton=2,j.fourthButton=3,j.fifthButton=4;class cA{}cA.primaryButton=1,cA.secondaryButton=2,cA.auxiliaryButton=4,cA.fourthButton=8,cA.fifthButton=16;class pe{constructor(){this.unregisterCallbacks=[]}addUnregisterCallback(A){this.unregisterCallbacks.push(A)}unregisterAll(){for(const A of this.unregisterCallbacks)A();this.unregisterCallbacks=[]}}class Dd{constructor(A,e,t){this.touchEventListenerTracker=new pe,this.toStreamerMessagesProvider=A,this.videoElementProvider=e,this.coordinateConverter=t;const n=o=>this.onTouchStart(o),s=o=>this.onTouchEnd(o),i=o=>this.onTouchMove(o);document.addEventListener("touchstart",n,{passive:!1}),document.addEventListener("touchend",s,{passive:!1}),document.addEventListener("touchmove",i,{passive:!1}),this.touchEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("touchstart",n)),this.touchEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("touchend",s)),this.touchEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("touchmove",i))}unregisterTouchEvents(){this.touchEventListenerTracker.unregisterAll()}setVideoElementParentClientRect(A){this.videoElementParentClientRect=A}onTouchStart(A){if(this.videoElementProvider.isVideoReady()){if(this.fakeTouchFinger==null){const e=A.changedTouches[0];this.fakeTouchFinger=new Rd(e.identifier,e.clientX-this.videoElementParentClientRect.left,e.clientY-this.videoElementParentClientRect.top);const t=this.videoElementProvider.getVideoParentElement(),n=new MouseEvent("mouseenter",e);t.dispatchEvent(n);const s=this.coordinateConverter.normalizeAndQuantizeUnsigned(this.fakeTouchFinger.x,this.fakeTouchFinger.y);this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDown")([j.mainButton,s.x,s.y])}A.preventDefault()}}onTouchEnd(A){if(!this.videoElementProvider.isVideoReady())return;const e=this.videoElementProvider.getVideoParentElement(),t=this.toStreamerMessagesProvider.toStreamerHandlers;for(let n=0;n<A.changedTouches.length;n++){const s=A.changedTouches[n];if(s.identifier===this.fakeTouchFinger.id){const i=s.clientX-this.videoElementParentClientRect.left,o=s.clientY-this.videoElementParentClientRect.top,a=this.coordinateConverter.normalizeAndQuantizeUnsigned(i,o);t.get("MouseUp")([j.mainButton,a.x,a.y]);const l=new MouseEvent("mouseleave",s);e.dispatchEvent(l),this.fakeTouchFinger=null;break}}A.preventDefault()}onTouchMove(A){if(!this.videoElementProvider.isVideoReady())return;const e=this.toStreamerMessagesProvider.toStreamerHandlers;for(let t=0;t<A.touches.length;t++){const n=A.touches[t];if(n.identifier===this.fakeTouchFinger.id){const s=n.clientX-this.videoElementParentClientRect.left,i=n.clientY-this.videoElementParentClientRect.top,o=this.coordinateConverter.normalizeAndQuantizeUnsigned(s,i),a=this.coordinateConverter.normalizeAndQuantizeSigned(s-this.fakeTouchFinger.x,i-this.fakeTouchFinger.y);e.get("MouseMove")([o.x,o.y,a.x,a.y]),this.fakeTouchFinger.x=s,this.fakeTouchFinger.y=i;break}}A.preventDefault()}}class Rd{constructor(A,e,t){this.id=A,this.x=e,this.y=t}}class dA{}dA.backSpace=8,dA.shift=16,dA.control=17,dA.alt=18,dA.rightShift=253,dA.rightControl=254,dA.rightAlt=255;class xd{constructor(A,e,t){this.keyboardEventListenerTracker=new pe,this.CodeToKeyCode={Escape:27,Digit0:48,Digit1:49,Digit2:50,Digit3:51,Digit4:52,Digit5:53,Digit6:54,Digit7:55,Digit8:56,Digit9:57,Minus:173,Equal:187,Backspace:8,Tab:9,KeyQ:81,KeyW:87,KeyE:69,KeyR:82,KeyT:84,KeyY:89,KeyU:85,KeyI:73,KeyO:79,KeyP:80,BracketLeft:219,BracketRight:221,Enter:13,ControlLeft:17,KeyA:65,KeyS:83,KeyD:68,KeyF:70,KeyG:71,KeyH:72,KeyJ:74,KeyK:75,KeyL:76,Semicolon:186,Quote:222,Backquote:192,ShiftLeft:16,Backslash:220,KeyZ:90,KeyX:88,KeyC:67,KeyV:86,KeyB:66,KeyN:78,KeyM:77,Comma:188,Period:190,Slash:191,ShiftRight:253,AltLeft:18,Space:32,CapsLock:20,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,Pause:19,ScrollLock:145,NumpadDivide:111,NumpadMultiply:106,NumpadSubtract:109,NumpadAdd:107,NumpadDecimal:110,Numpad9:105,Numpad8:104,Numpad7:103,Numpad6:102,Numpad5:101,Numpad4:100,Numpad3:99,Numpad2:98,Numpad1:97,Numpad0:96,NumLock:144,ControlRight:254,AltRight:255,Home:36,End:35,ArrowUp:38,ArrowLeft:37,ArrowRight:39,ArrowDown:40,PageUp:33,PageDown:34,Insert:45,Delete:46,ContextMenu:93},this.toStreamerMessagesProvider=A,this.config=e,this.activeKeysProvider=t}registerKeyBoardEvents(){const A=n=>this.handleOnKeyDown(n),e=n=>this.handleOnKeyUp(n),t=n=>this.handleOnKeyPress(n);document.addEventListener("keydown",A),document.addEventListener("keyup",e),document.addEventListener("keypress",t),this.keyboardEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("keydown",A)),this.keyboardEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("keyup",e)),this.keyboardEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("keypress",t))}unregisterKeyBoardEvents(){this.keyboardEventListenerTracker.unregisterAll()}handleOnKeyDown(A){const e=this.getKeycode(A);e&&(g.Log(g.GetStackTrace(),`key down ${e}, repeat = ${A.repeat}`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get("KeyDown")([this.getKeycode(A),A.repeat?1:0]),this.activeKeysProvider.getActiveKeys().push(e),e===dA.backSpace&&document.dispatchEvent(new KeyboardEvent("keypress",{charCode:dA.backSpace})),this.config.isFlagEnabled(Q.SuppressBrowserKeys)&&this.isKeyCodeBrowserKey(e)&&A.preventDefault())}handleOnKeyUp(A){const e=this.getKeycode(A);e&&(g.Log(g.GetStackTrace(),`key up ${e}`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get("KeyUp")([e,A.repeat?1:0]),this.config.isFlagEnabled(Q.SuppressBrowserKeys)&&this.isKeyCodeBrowserKey(e)&&A.preventDefault())}handleOnKeyPress(A){if(!("charCode"in A))return void g.Warning(g.GetStackTrace(),"KeyboardEvent.charCode is deprecated in this browser, cannot send key press.");const e=A.charCode;g.Log(g.GetStackTrace(),`key press ${e}`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get("KeyPress")([e])}getKeycode(A){if(!("keyCode"in A)){const e=A;return e.code in this.CodeToKeyCode?this.CodeToKeyCode[e.code]:(g.Warning(g.GetStackTrace(),`Keyboard code of ${e.code} is not supported in our mapping, ignoring this key.`),null)}return A.keyCode===dA.shift&&A.code==="ShiftRight"?dA.rightShift:A.keyCode===dA.control&&A.code==="ControlRight"?dA.rightControl:A.keyCode===dA.alt&&A.code==="AltRight"?dA.rightAlt:A.keyCode}isKeyCodeBrowserKey(A){return A>=112&&A<=123||A===9}}class Pd{constructor(A,e,t){this.x=0,this.y=0,this.updateMouseMovePositionEvent=s=>{this.updateMouseMovePosition(s)},this.mouseEventListenerTracker=new pe,this.videoElementProvider=A,this.mouseController=e,this.activeKeysProvider=t;const n=this.videoElementProvider.getVideoParentElement();this.x=n.getBoundingClientRect().width/2,this.y=n.getBoundingClientRect().height/2,this.coord=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(this.x,this.y)}unregisterMouseEvents(){this.mouseEventListenerTracker.unregisterAll()}lockStateChange(){const A=this.videoElementProvider.getVideoParentElement(),e=this.mouseController.toStreamerMessagesProvider.toStreamerHandlers;if(document.pointerLockElement===A||document.mozPointerLockElement===A)g.Log(g.GetStackTrace(),"Pointer locked",6),document.addEventListener("mousemove",this.updateMouseMovePositionEvent,!1),this.mouseEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("mousemove",this.updateMouseMovePositionEvent,!1));else{g.Log(g.GetStackTrace(),"The pointer lock status is now unlocked",6),document.removeEventListener("mousemove",this.updateMouseMovePositionEvent,!1);let t=this.activeKeysProvider.getActiveKeys();const n=new Set(t),s=[];n.forEach(i=>{}),s.forEach(i=>{e.get("KeyUp")([i])}),t=[]}}updateMouseMovePosition(A){if(!this.videoElementProvider.isVideoReady())return;const e=this.mouseController.toStreamerMessagesProvider.toStreamerHandlers,t=this.videoElementProvider.getVideoParentElement().clientWidth,n=this.videoElementProvider.getVideoParentElement().clientHeight;this.x+=A.movementX,this.y+=A.movementY,this.x>t&&(this.x-=t),this.y>n&&(this.y-=n),this.x<0&&(this.x=t+this.x),this.y<0&&(this.y=n-this.y),this.coord=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(this.x,this.y);const s=this.mouseController.coordinateConverter.normalizeAndQuantizeSigned(A.movementX,A.movementY);e.get("MouseMove")([this.coord.x,this.coord.y,s.x,s.y])}handleMouseDown(A){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDown")([A.button,this.coord.x,this.coord.y])}handleMouseUp(A){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseUp")([A.button,this.coord.x,this.coord.y])}handleMouseWheel(A){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseWheel")([A.wheelDelta,this.coord.x,this.coord.y])}handleMouseDouble(A){this.videoElementProvider.isVideoReady()&&this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDouble")([A.button,this.coord.x,this.coord.y])}handlePressMouseButtons(A){this.videoElementProvider.isVideoReady()&&this.mouseController.pressMouseButtons(A.buttons,this.x,this.y)}handleReleaseMouseButtons(A){this.videoElementProvider.isVideoReady()&&this.mouseController.releaseMouseButtons(A.buttons,this.x,this.y)}}class Kd{constructor(A){this.mouseController=A}unregisterMouseEvents(){}updateMouseMovePosition(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;g.Log(g.GetStackTrace(),"MouseMove",6);const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY),t=this.mouseController.coordinateConverter.normalizeAndQuantizeSigned(A.movementX,A.movementY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseMove")([e.x,e.y,t.x,t.y]),A.preventDefault()}handleMouseDown(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;g.Log(g.GetStackTrace(),"onMouse Down",6);const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDown")([A.button,e.x,e.y]),A.preventDefault()}handleMouseUp(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;g.Log(g.GetStackTrace(),"onMouse Up",6);const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseUp")([A.button,e.x,e.y]),A.preventDefault()}handleContextMenu(A){this.mouseController.videoElementProvider.isVideoReady()&&A.preventDefault()}handleMouseWheel(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseWheel")([A.wheelDelta,e.x,e.y]),A.preventDefault()}handleMouseDouble(A){if(!this.mouseController.videoElementProvider.isVideoReady())return;const e=this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(A.offsetX,A.offsetY);this.mouseController.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDouble")([A.button,e.x,e.y])}handlePressMouseButtons(A){this.mouseController.videoElementProvider.isVideoReady()&&(g.Log(g.GetStackTrace(),"onMouse press",6),this.mouseController.pressMouseButtons(A.buttons,A.offsetX,A.offsetY))}handleReleaseMouseButtons(A){this.mouseController.videoElementProvider.isVideoReady()&&(g.Log(g.GetStackTrace(),"onMouse release",6),this.mouseController.releaseMouseButtons(A.buttons,A.offsetX,A.offsetY))}}class Gd{constructor(A,e,t,n){this.mouseEventListenerTracker=new pe,this.toStreamerMessagesProvider=A,this.coordinateConverter=t,this.videoElementProvider=e,this.activeKeysProvider=n,this.registerMouseEnterAndLeaveEvents()}unregisterMouseEvents(){this.mouseEventListenerTracker.unregisterAll()}registerLockedMouseEvents(A){const e=this.videoElementProvider.getVideoParentElement(),t=new Pd(this.videoElementProvider,A,this.activeKeysProvider);if(e.requestPointerLock=e.requestPointerLock||e.mozRequestPointerLock,document.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock,e.requestPointerLock){const l=()=>{e.requestPointerLock()};e.addEventListener("click",l),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("click",l))}const n=()=>t.lockStateChange();document.addEventListener("pointerlockchange",n,!1),document.addEventListener("mozpointerlockchange",n,!1),this.mouseEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("pointerlockchange",n,!1)),this.mouseEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("mozpointerlockchange",n,!1));const s=l=>t.handleMouseDown(l),i=l=>t.handleMouseUp(l),o=l=>t.handleMouseWheel(l),a=l=>t.handleMouseDouble(l);e.addEventListener("mousedown",s),e.addEventListener("mouseup",i),e.addEventListener("wheel",o),e.addEventListener("dblclick",a),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mousedown",s)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mouseup",i)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("wheel",o)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("dblclick",a)),this.mouseEventListenerTracker.addUnregisterCallback(()=>t.unregisterMouseEvents()),this.mouseEventListenerTracker.addUnregisterCallback(()=>{!document.exitPointerLock||document.pointerLockElement!==e&&document.mozPointerLockElement!==e||document.exitPointerLock()})}registerHoveringMouseEvents(A){const e=this.videoElementProvider.getVideoParentElement(),t=new Kd(A),n=d=>t.updateMouseMovePosition(d),s=d=>t.handleMouseDown(d),i=d=>t.handleMouseUp(d),o=d=>t.handleContextMenu(d),a=d=>t.handleMouseWheel(d),l=d=>t.handleMouseDouble(d);e.addEventListener("mousemove",n),e.addEventListener("mousedown",s),e.addEventListener("mouseup",i),e.addEventListener("contextmenu",o),e.addEventListener("wheel",a),e.addEventListener("dblclick",l),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mousemove",n)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mousedown",s)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("mouseup",i)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("contextmenu",o)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("wheel",a)),this.mouseEventListenerTracker.addUnregisterCallback(()=>e.removeEventListener("dblclick",l)),this.mouseEventListenerTracker.addUnregisterCallback(()=>t.unregisterMouseEvents())}registerMouseEnterAndLeaveEvents(){const A=this.videoElementProvider.getVideoParentElement(),e=n=>{this.videoElementProvider.isVideoReady()&&(g.Log(g.GetStackTrace(),"Mouse Entered",6),this.sendMouseEnter(),this.pressMouseButtons(n.buttons,n.x,n.y))},t=n=>{this.videoElementProvider.isVideoReady()&&(g.Log(g.GetStackTrace(),"Mouse Left",6),this.sendMouseLeave(),this.releaseMouseButtons(n.buttons,n.x,n.y))};A.addEventListener("mouseenter",e),A.addEventListener("mouseleave",t),this.mouseEventListenerTracker.addUnregisterCallback(()=>A.removeEventListener("mouseenter",e)),this.mouseEventListenerTracker.addUnregisterCallback(()=>A.removeEventListener("mouseleave",t))}releaseMouseButtons(A,e,t){const n=this.coordinateConverter.normalizeAndQuantizeUnsigned(e,t);A&cA.primaryButton&&this.sendMouseUp(j.mainButton,n.x,n.y),A&cA.secondaryButton&&this.sendMouseUp(j.secondaryButton,n.x,n.y),A&cA.auxiliaryButton&&this.sendMouseUp(j.auxiliaryButton,n.x,n.y),A&cA.fourthButton&&this.sendMouseUp(j.fourthButton,n.x,n.y),A&cA.fifthButton&&this.sendMouseUp(j.fifthButton,n.x,n.y)}pressMouseButtons(A,e,t){if(!this.videoElementProvider.isVideoReady())return;const n=this.coordinateConverter.normalizeAndQuantizeUnsigned(e,t);A&cA.primaryButton&&this.sendMouseDown(j.mainButton,n.x,n.y),A&cA.secondaryButton&&this.sendMouseDown(j.secondaryButton,n.x,n.y),A&cA.auxiliaryButton&&this.sendMouseDown(j.auxiliaryButton,n.x,n.y),A&cA.fourthButton&&this.sendMouseDown(j.fourthButton,n.x,n.y),A&cA.fifthButton&&this.sendMouseDown(j.fifthButton,n.x,n.y)}sendMouseEnter(){this.videoElementProvider.isVideoReady()&&this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseEnter")()}sendMouseLeave(){this.videoElementProvider.isVideoReady()&&this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseLeave")()}sendMouseDown(A,e,t){this.videoElementProvider.isVideoReady()&&(g.Log(g.GetStackTrace(),`mouse button ${A} down at (${e}, ${t})`,6),this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseDown")([A,e,t]))}sendMouseUp(A,e,t){if(!this.videoElementProvider.isVideoReady())return;g.Log(g.GetStackTrace(),`mouse button ${A} up at (${e}, ${t})`,6);const n=this.coordinateConverter.normalizeAndQuantizeUnsigned(e,t);this.toStreamerMessagesProvider.toStreamerHandlers.get("MouseUp")([A,n.x,n.y])}}class kd{constructor(A,e,t){this.fingers=[9,8,7,6,5,4,3,2,1,0],this.fingerIds=new Map,this.maxByteValue=255,this.touchEventListenerTracker=new pe,this.toStreamerMessagesProvider=A,this.videoElementProvider=e,this.coordinateConverter=t,this.videoElementParent=e.getVideoElement();const n=a=>this.onTouchStart(a),s=a=>this.onTouchEnd(a),i=a=>this.onTouchMove(a);this.videoElementParent.addEventListener("touchstart",n,{passive:!1}),this.videoElementParent.addEventListener("touchend",s,{passive:!1}),this.videoElementParent.addEventListener("touchmove",i,{passive:!1}),this.touchEventListenerTracker.addUnregisterCallback(()=>this.videoElementParent.removeEventListener("touchstart",n)),this.touchEventListenerTracker.addUnregisterCallback(()=>this.videoElementParent.removeEventListener("touchend",s)),this.touchEventListenerTracker.addUnregisterCallback(()=>this.videoElementParent.removeEventListener("touchmove",i)),g.Log(g.GetStackTrace(),"Touch Events Registered",6);const o=a=>{a.preventDefault()};document.addEventListener("touchmove",o,{passive:!1}),this.touchEventListenerTracker.addUnregisterCallback(()=>document.removeEventListener("touchmove",o))}unregisterTouchEvents(){this.touchEventListenerTracker.unregisterAll()}rememberTouch(A){const e=this.fingers.pop();e===void 0&&g.Log(g.GetStackTrace(),"exhausted touch identifiers",6),this.fingerIds.set(A.identifier,e)}forgetTouch(A){this.fingers.push(this.fingerIds.get(A.identifier)),this.fingers.sort(function(e,t){return t-e}),this.fingerIds.delete(A.identifier)}onTouchStart(A){if(this.videoElementProvider.isVideoReady()){for(let e=0;e<A.changedTouches.length;e++)this.rememberTouch(A.changedTouches[e]);g.Log(g.GetStackTrace(),"touch start",6),this.emitTouchData("TouchStart",A.changedTouches),A.preventDefault()}}onTouchEnd(A){if(this.videoElementProvider.isVideoReady()){g.Log(g.GetStackTrace(),"touch end",6),this.emitTouchData("TouchEnd",A.changedTouches);for(let e=0;e<A.changedTouches.length;e++)this.forgetTouch(A.changedTouches[e]);A.preventDefault()}}onTouchMove(A){this.videoElementProvider.isVideoReady()&&(g.Log(g.GetStackTrace(),"touch move",6),this.emitTouchData("TouchMove",A.touches),A.preventDefault())}emitTouchData(A,e){if(!this.videoElementProvider.isVideoReady())return;const t=this.videoElementProvider.getVideoParentElement().getBoundingClientRect(),n=this.toStreamerMessagesProvider.toStreamerHandlers;for(let s=0;s<e.length;s++){const o=e[s],a=o.clientX-t.left,l=o.clientY-t.top;g.Log(g.GetStackTrace(),`F${this.fingerIds.get(o.identifier)}=(${a}, ${l})`,6);const d=this.coordinateConverter.normalizeAndQuantizeUnsigned(a,l);switch(A){case"TouchStart":n.get("TouchStart")([1,d.x,d.y,this.fingerIds.get(o.identifier),this.maxByteValue*o.force,d.inRange?1:0]);break;case"TouchEnd":n.get("TouchEnd")([1,d.x,d.y,this.fingerIds.get(o.identifier),this.maxByteValue*o.force,d.inRange?1:0]);break;case"TouchMove":n.get("TouchMove")([1,d.x,d.y,this.fingerIds.get(o.identifier),this.maxByteValue*o.force,d.inRange?1:0])}}}}class Nd{constructor(A){this.gamePadEventListenerTracker=new pe,this.toStreamerMessagesProvider=A,this.requestAnimationFrame=(window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.requestAnimationFrame).bind(window);const e=window;if("GamepadEvent"in e){const t=s=>this.gamePadConnectHandler(s),n=s=>this.gamePadDisconnectHandler(s);window.addEventListener("gamepadconnected",t),window.addEventListener("gamepaddisconnected",n),this.gamePadEventListenerTracker.addUnregisterCallback(()=>window.removeEventListener("gamepadconnected",t)),this.gamePadEventListenerTracker.addUnregisterCallback(()=>window.removeEventListener("gamepaddisconnected",n))}else if("WebKitGamepadEvent"in e){const t=s=>this.gamePadConnectHandler(s),n=s=>this.gamePadDisconnectHandler(s);window.addEventListener("webkitgamepadconnected",t),window.addEventListener("webkitgamepaddisconnected",n),this.gamePadEventListenerTracker.addUnregisterCallback(()=>window.removeEventListener("webkitgamepadconnected",t)),this.gamePadEventListenerTracker.addUnregisterCallback(()=>window.removeEventListener("webkitgamepaddisconnected",n))}if(this.controllers=[],navigator.getGamepads)for(const t of navigator.getGamepads())t&&this.gamePadConnectHandler(new GamepadEvent("gamepadconnected",{gamepad:t}))}unregisterGamePadEvents(){this.gamePadEventListenerTracker.unregisterAll();for(const A of this.controllers)A.id!==void 0&&this.onGamepadDisconnected(A.id);this.controllers=[],this.onGamepadConnected=()=>{},this.onGamepadDisconnected=()=>{}}gamePadConnectHandler(A){g.Log(g.GetStackTrace(),"Gamepad connect handler",6);const e=A.gamepad,t={currentState:e,prevState:e,id:void 0};this.controllers.push(t),this.controllers[e.index].currentState=e,this.controllers[e.index].prevState=e,g.Log(g.GetStackTrace(),"gamepad: "+e.id+" connected",6),window.requestAnimationFrame(()=>this.updateStatus()),this.onGamepadConnected()}gamePadDisconnectHandler(A){g.Log(g.GetStackTrace(),"Gamepad disconnect handler",6),g.Log(g.GetStackTrace(),"gamepad: "+A.gamepad.id+" disconnected",6);const e=this.controllers[A.gamepad.index];delete this.controllers[A.gamepad.index],this.controllers=this.controllers.filter(t=>t!==void 0),this.onGamepadDisconnected(e.id)}scanGamePads(){const A=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():[];for(let e=0;e<A.length;e++)A[e]&&A[e].index in this.controllers&&(this.controllers[A[e].index].currentState=A[e])}updateStatus(){this.scanGamePads();const A=this.toStreamerMessagesProvider.toStreamerHandlers;for(const e of this.controllers){const t=e.id===void 0?this.controllers.indexOf(e):e.id,n=e.currentState;for(let s=0;s<e.currentState.buttons.length;s++){const i=e.currentState.buttons[s],o=e.prevState.buttons[s];i.pressed?s==we.LeftTrigger?A.get("GamepadAnalog")([t,5,i.value]):s==we.RightTrigger?A.get("GamepadAnalog")([t,6,i.value]):A.get("GamepadButtonPressed")([t,s,o.pressed?1:0]):!i.pressed&&o.pressed&&(s==we.LeftTrigger?A.get("GamepadAnalog")([t,5,0]):s==we.RightTrigger?A.get("GamepadAnalog")([t,6,0]):A.get("GamepadButtonReleased")([t,s]))}for(let s=0;s<n.axes.length;s+=2){const i=parseFloat(n.axes[s].toFixed(4)),o=-parseFloat(n.axes[s+1].toFixed(4));A.get("GamepadAnalog")([t,s+1,i]),A.get("GamepadAnalog")([t,s+2,o])}this.controllers[t].prevState=n}this.controllers.length>0&&this.requestAnimationFrame(()=>this.updateStatus())}onGamepadResponseReceived(A){for(const e of this.controllers)if(e.id===void 0){e.id=A;break}}onGamepadConnected(){}onGamepadDisconnected(A){}}(function(r){r[r.RightClusterBottomButton=0]="RightClusterBottomButton",r[r.RightClusterRightButton=1]="RightClusterRightButton",r[r.RightClusterLeftButton=2]="RightClusterLeftButton",r[r.RightClusterTopButton=3]="RightClusterTopButton",r[r.LeftShoulder=4]="LeftShoulder",r[r.RightShoulder=5]="RightShoulder",r[r.LeftTrigger=6]="LeftTrigger",r[r.RightTrigger=7]="RightTrigger",r[r.SelectOrBack=8]="SelectOrBack",r[r.StartOrForward=9]="StartOrForward",r[r.LeftAnalogPress=10]="LeftAnalogPress",r[r.RightAnalogPress=11]="RightAnalogPress",r[r.LeftClusterTopButton=12]="LeftClusterTopButton",r[r.LeftClusterBottomButton=13]="LeftClusterBottomButton",r[r.LeftClusterLeftButton=14]="LeftClusterLeftButton",r[r.LeftClusterRightButton=15]="LeftClusterRightButton",r[r.CentreButton=16]="CentreButton",r[r.LeftStickHorizontal=0]="LeftStickHorizontal",r[r.LeftStickVertical=1]="LeftStickVertical",r[r.RightStickHorizontal=2]="RightStickHorizontal",r[r.RightStickVertical=3]="RightStickVertical"})(we||(we={}));class _d{constructor(A,e,t){this.activeKeys=new Vd,this.toStreamerMessagesProvider=A,this.videoElementProvider=e,this.coordinateConverter=t}registerKeyBoard(A){g.Log(g.GetStackTrace(),"Register Keyboard Events",7);const e=new xd(this.toStreamerMessagesProvider,A,this.activeKeys);return e.registerKeyBoardEvents(),e}registerMouse(A){g.Log(g.GetStackTrace(),"Register Mouse Events",7);const e=new Gd(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter,this.activeKeys);switch(A){case qA.LockedMouse:e.registerLockedMouseEvents(e);break;case qA.HoveringMouse:e.registerHoveringMouseEvents(e);break;default:g.Info(g.GetStackTrace(),"unknown Control Scheme Type Defaulting to Locked Mouse Events"),e.registerLockedMouseEvents(e)}return e}registerTouch(A,e){if(g.Log(g.GetStackTrace(),"Registering Touch",6),A){const t=new Dd(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter);return t.setVideoElementParentClientRect(e),t}return new kd(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter)}registerGamePad(){return g.Log(g.GetStackTrace(),"Register Game Pad",7),new Nd(this.toStreamerMessagesProvider)}}class Vd{constructor(){this.activeKeys=[],this.activeKeys=[]}getActiveKeys(){return this.activeKeys}}class Od{constructor(A,e){this.lastTimeResized=new Date().getTime(),this.videoElement=document.createElement("video"),this.config=e,this.videoElement.id="streamingVideo",this.videoElement.disablePictureInPicture=!0,this.videoElement.playsInline=!0,this.videoElement.style.width="100%",this.videoElement.style.height="100%",this.videoElement.style.position="absolute",this.videoElement.style.pointerEvents="all",A.appendChild(this.videoElement),this.onResizePlayerCallback=()=>{console.log("Resolution changed, restyling player, did you forget to override this function?")},this.onMatchViewportResolutionCallback=()=>{console.log("Resolution changed and match viewport resolution is turned on, did you forget to override this function?")},this.videoElement.onclick=()=>{this.audioElement!=null&&this.audioElement.paused&&this.audioElement.play(),this.videoElement.paused&&this.videoElement.play()},this.videoElement.onloadedmetadata=()=>{this.onVideoInitialized()},window.addEventListener("resize",()=>this.resizePlayerStyle(),!0),window.addEventListener("orientationchange",()=>this.onOrientationChange())}setAudioElement(A){this.audioElement=A}play(){return this.videoElement.muted=this.config.isFlagEnabled(Q.StartVideoMuted),this.videoElement.autoplay=this.config.isFlagEnabled(Q.AutoPlayVideo),this.videoElement.play()}isPaused(){return this.videoElement.paused}isVideoReady(){return this.videoElement.readyState!==void 0&&this.videoElement.readyState>0}hasVideoSource(){return this.videoElement.srcObject!==void 0&&this.videoElement.srcObject!==null}getVideoElement(){return this.videoElement}getVideoParentElement(){return this.videoElement.parentElement}setVideoEnabled(A){this.videoElement.srcObject.getTracks().forEach(e=>e.enabled=A)}onVideoInitialized(){}onOrientationChange(){clearTimeout(this.orientationChangeTimeout),this.orientationChangeTimeout=window.setTimeout(()=>{this.resizePlayerStyle()},500)}resizePlayerStyle(){const A=this.getVideoParentElement();A&&(this.updateVideoStreamSize(),A.classList.contains("fixed-size")||this.resizePlayerStyleToFillParentElement(),this.onResizePlayerCallback())}resizePlayerStyleToFillParentElement(){this.getVideoParentElement().setAttribute("style","top: 0px; left: 0px; width: 100%; height: 100%; cursor: default;")}updateVideoStreamSize(){if(this.config.isFlagEnabled(Q.MatchViewportResolution))if(new Date().getTime()-this.lastTimeResized>300){const A=this.getVideoParentElement();if(!A)return;this.onMatchViewportResolutionCallback(A.clientWidth,A.clientHeight),this.lastTimeResized=new Date().getTime()}else g.Log(g.GetStackTrace(),"Resizing too often - skipping",6),clearTimeout(this.resizeTimeoutHandle),this.resizeTimeoutHandle=window.setTimeout(()=>this.updateVideoStreamSize(),100)}}class _a{constructor(){this.map=new Map,this.reverseMap=new Map}getFromKey(A){return this.map.get(A)}getFromValue(A){return this.reverseMap.get(A)}add(A,e){this.map.set(A,e),this.reverseMap.set(e,A)}remove(A,e){this.map.delete(A),this.reverseMap.delete(e)}}class Wd{constructor(){this.toStreamerHandlers=new Map,this.fromStreamerHandlers=new Map,this.toStreamerMessages=new _a,this.fromStreamerMessages=new _a}populateDefaultProtocol(){this.toStreamerMessages.add("IFrameRequest",{id:0,byteLength:0,structure:[]}),this.toStreamerMessages.add("RequestQualityControl",{id:1,byteLength:0,structure:[]}),this.toStreamerMessages.add("FpsRequest",{id:2,byteLength:0,structure:[]}),this.toStreamerMessages.add("AverageBitrateRequest",{id:3,byteLength:0,structure:[]}),this.toStreamerMessages.add("StartStreaming",{id:4,byteLength:0,structure:[]}),this.toStreamerMessages.add("StopStreaming",{id:5,byteLength:0,structure:[]}),this.toStreamerMessages.add("LatencyTest",{id:6,byteLength:0,structure:[]}),this.toStreamerMessages.add("RequestInitialSettings",{id:7,byteLength:0,structure:[]}),this.toStreamerMessages.add("TestEcho",{id:8,byteLength:0,structure:[]}),this.toStreamerMessages.add("UIInteraction",{id:50,byteLength:0,structure:[]}),this.toStreamerMessages.add("Command",{id:51,byteLength:0,structure:[]}),this.toStreamerMessages.add("KeyDown",{id:60,byteLength:2,structure:["uint8","uint8"]}),this.toStreamerMessages.add("KeyUp",{id:61,byteLength:1,structure:["uint8"]}),this.toStreamerMessages.add("KeyPress",{id:62,byteLength:2,structure:["uint16"]}),this.toStreamerMessages.add("MouseEnter",{id:70,byteLength:0,structure:[]}),this.toStreamerMessages.add("MouseLeave",{id:71,byteLength:0,structure:[]}),this.toStreamerMessages.add("MouseDown",{id:72,byteLength:5,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.add("MouseUp",{id:73,byteLength:5,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.add("MouseMove",{id:74,byteLength:8,structure:["uint16","uint16","int16","int16"]}),this.toStreamerMessages.add("MouseWheel",{id:75,byteLength:6,structure:["int16","uint16","uint16"]}),this.toStreamerMessages.add("MouseDouble",{id:76,byteLength:5,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.add("TouchStart",{id:80,byteLength:8,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.add("TouchEnd",{id:81,byteLength:8,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.add("TouchMove",{id:82,byteLength:8,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.add("GamepadConnected",{id:93,byteLength:0,structure:[]}),this.toStreamerMessages.add("GamepadButtonPressed",{id:90,byteLength:3,structure:["uint8","uint8","uint8"]}),this.toStreamerMessages.add("GamepadButtonReleased",{id:91,byteLength:3,structure:["uint8","uint8","uint8"]}),this.toStreamerMessages.add("GamepadAnalog",{id:92,byteLength:10,structure:["uint8","uint8","double"]}),this.toStreamerMessages.add("GamepadDisconnected",{id:94,byteLength:1,structure:["uint8"]}),this.fromStreamerMessages.add("QualityControlOwnership",0),this.fromStreamerMessages.add("Response",1),this.fromStreamerMessages.add("Command",2),this.fromStreamerMessages.add("FreezeFrame",3),this.fromStreamerMessages.add("UnfreezeFrame",4),this.fromStreamerMessages.add("VideoEncoderAvgQP",5),this.fromStreamerMessages.add("LatencyTest",6),this.fromStreamerMessages.add("InitialSettings",7),this.fromStreamerMessages.add("FileExtension",8),this.fromStreamerMessages.add("FileMimeType",9),this.fromStreamerMessages.add("FileContents",10),this.fromStreamerMessages.add("TestEcho",11),this.fromStreamerMessages.add("InputControlOwnership",12),this.fromStreamerMessages.add("GamepadResponse",13),this.fromStreamerMessages.add("Protocol",255)}registerMessageHandler(A,e,t){switch(A){case L.ToStreamer:this.toStreamerHandlers.set(e,t);break;case L.FromStreamer:this.fromStreamerHandlers.set(e,t);break;default:g.Log(g.GetStackTrace(),`Unknown message direction ${A}`)}}}(function(r){r[r.ToStreamer=0]="ToStreamer",r[r.FromStreamer=1]="FromStreamer"})(L||(L={}));class Xd{constructor(){this.responseEventListeners=new Map}addResponseEventListener(A,e){this.responseEventListeners.set(A,e)}removeResponseEventListener(A){this.responseEventListeners.delete(A)}onResponse(A){g.Log(g.GetStackTrace(),"DataChannelReceiveMessageType.Response",6);const e=new TextDecoder("utf-16").decode(A.slice(1));g.Log(g.GetStackTrace(),e,6),this.responseEventListeners.forEach(t=>{t(e)})}}class Jd{constructor(A,e){this.dataChannelSender=A,this.toStreamerMessagesMapProvider=e}sendLatencyTest(A){this.sendDescriptor("LatencyTest",A)}emitCommand(A){this.sendDescriptor("Command",A)}emitUIInteraction(A){this.sendDescriptor("UIInteraction",A)}sendDescriptor(A,e){const t=JSON.stringify(e),n=this.toStreamerMessagesMapProvider.toStreamerMessages.getFromKey(A);n===void 0&&g.Error(g.GetStackTrace(),`Attempted to emit descriptor with message type: ${A}, but the frontend hasn't been configured to send such a message. Check you've added the message type in your cpp`),g.Log(g.GetStackTrace(),"Sending: "+e,6);const s=new DataView(new ArrayBuffer(3+2*t.length));let i=0;s.setUint8(i,n.id),i++,s.setUint16(i,t.length,!0),i+=2;for(let o=0;o<t.length;o++)s.setUint16(i,t.charCodeAt(o),!0),i+=2;this.dataChannelSender.canSend()?this.dataChannelSender.sendData(s.buffer):g.Info(g.GetStackTrace(),`Data channel cannot send yet, skipping sending descriptor message: ${A} - ${t}`)}}class zd{constructor(A,e){this.dataChannelSender=A,this.toStreamerMessagesMapProvider=e}sendMessageToStreamer(A,e){e===void 0&&(e=[]);const t=this.toStreamerMessagesMapProvider.toStreamerMessages.getFromKey(A);if(t===void 0)return void g.Error(g.GetStackTrace(),`Attempted to send a message to the streamer with message type: ${A}, but the frontend hasn't been configured to send such a message. Check you've added the message type in your cpp`);const n=new DataView(new ArrayBuffer(t.byteLength+1));n.setUint8(0,t.id);let s=1;e.forEach((i,o)=>{switch(t.structure[o]){case"uint8":n.setUint8(s,i),s+=1;break;case"uint16":n.setUint16(s,i,!0),s+=2;break;case"int16":n.setInt16(s,i,!0),s+=2;break;case"float":n.setFloat32(s,i,!0),s+=4;break;case"double":n.setFloat64(s,i,!0),s+=8}}),this.dataChannelSender.canSend()?this.dataChannelSender.sendData(n.buffer):g.Info(g.GetStackTrace(),`Data channel cannot send yet, skipping sending message: ${A} - ${new Uint8Array(n.buffer)}`)}}class Yd{constructor(A){this.sendMessageController=A}SendRequestQualityControl(){this.sendMessageController.sendMessageToStreamer("RequestQualityControl")}SendMaxFpsRequest(){this.sendMessageController.sendMessageToStreamer("FpsRequest")}SendAverageBitrateRequest(){this.sendMessageController.sendMessageToStreamer("AverageBitrateRequest")}SendStartStreaming(){this.sendMessageController.sendMessageToStreamer("StartStreaming")}SendStopStreaming(){this.sendMessageController.sendMessageToStreamer("StopStreaming")}SendRequestInitialSettings(){this.sendMessageController.sendMessageToStreamer("RequestInitialSettings")}}class $d{constructor(A){this.dataChannelProvider=A}canSend(){return this.dataChannelProvider.getDataChannelInstance().dataChannel!==void 0&&this.dataChannelProvider.getDataChannelInstance().dataChannel.readyState=="open"}sendData(A){const e=this.dataChannelProvider.getDataChannelInstance();e.dataChannel.readyState=="open"?(e.dataChannel.send(A),g.Log(g.GetStackTrace(),`Message Sent: ${new Uint8Array(A)}`,6),this.resetAfkWarningTimerOnDataSend()):g.Error(g.GetStackTrace(),`Message Failed: ${new Uint8Array(A)}`)}resetAfkWarningTimerOnDataSend(){}}class Zd{constructor(A){this.videoElementProvider=A,this.normalizeAndQuantizeUnsignedFunc=()=>{throw new Error("Normalize and quantize unsigned, method not implemented.")},this.normalizeAndQuantizeSignedFunc=()=>{throw new Error("Normalize and unquantize signed, method not implemented.")},this.denormalizeAndUnquantizeUnsignedFunc=()=>{throw new Error("Denormalize and unquantize unsigned, method not implemented.")}}normalizeAndQuantizeUnsigned(A,e){return this.normalizeAndQuantizeUnsignedFunc(A,e)}unquantizeAndDenormalizeUnsigned(A,e){return this.denormalizeAndUnquantizeUnsignedFunc(A,e)}normalizeAndQuantizeSigned(A,e){return this.normalizeAndQuantizeSignedFunc(A,e)}setupNormalizeAndQuantize(){if(this.videoElementParent=this.videoElementProvider.getVideoParentElement(),this.videoElement=this.videoElementProvider.getVideoElement(),this.videoElementParent&&this.videoElement){const A=this.videoElementParent.clientWidth||1,e=this.videoElementParent.clientHeight||1,t=this.videoElement.videoWidth||1,n=e/A,s=(this.videoElement.videoHeight||1)/t;n>s?(g.Log(g.GetStackTrace(),"Setup Normalize and Quantize for playerAspectRatio > videoAspectRatio",6),this.ratio=n/s,this.normalizeAndQuantizeUnsignedFunc=(i,o)=>this.normalizeAndQuantizeUnsignedPlayerBigger(i,o),this.normalizeAndQuantizeSignedFunc=(i,o)=>this.normalizeAndQuantizeSignedPlayerBigger(i,o),this.denormalizeAndUnquantizeUnsignedFunc=(i,o)=>this.denormalizeAndUnquantizeUnsignedPlayerBigger(i,o)):(g.Log(g.GetStackTrace(),"Setup Normalize and Quantize for playerAspectRatio <= videoAspectRatio",6),this.ratio=s/n,this.normalizeAndQuantizeUnsignedFunc=(i,o)=>this.normalizeAndQuantizeUnsignedPlayerSmaller(i,o),this.normalizeAndQuantizeSignedFunc=(i,o)=>this.normalizeAndQuantizeSignedPlayerSmaller(i,o),this.denormalizeAndUnquantizeUnsignedFunc=(i,o)=>this.denormalizeAndUnquantizeUnsignedPlayerSmaller(i,o))}}normalizeAndQuantizeUnsignedPlayerBigger(A,e){const t=A/this.videoElementParent.clientWidth,n=this.ratio*(e/this.videoElementParent.clientHeight-.5)+.5;return t<0||t>1||n<0||n>1?new Fr(!1,65535,65535):new Fr(!0,65536*t,65536*n)}denormalizeAndUnquantizeUnsignedPlayerBigger(A,e){const t=A/65536,n=(e/65536-.5)/this.ratio+.5;return new Rn(t*this.videoElementParent.clientWidth,n*this.videoElementParent.clientHeight)}normalizeAndQuantizeSignedPlayerBigger(A,e){const t=A/(.5*this.videoElementParent.clientWidth),n=this.ratio*e/(.5*this.videoElementParent.clientHeight);return new Va(32767*t,32767*n)}normalizeAndQuantizeUnsignedPlayerSmaller(A,e){const t=this.ratio*(A/this.videoElementParent.clientWidth-.5)+.5,n=e/this.videoElementParent.clientHeight;return t<0||t>1||n<0||n>1?new Fr(!1,65535,65535):new Fr(!0,65536*t,65536*n)}denormalizeAndUnquantizeUnsignedPlayerSmaller(A,e){const t=(A/65536-.5)/this.ratio+.5,n=e/65536;return new Rn(t*this.videoElementParent.clientWidth,n*this.videoElementParent.clientHeight)}normalizeAndQuantizeSignedPlayerSmaller(A,e){const t=this.ratio*A/(.5*this.videoElementParent.clientWidth),n=e/(.5*this.videoElementParent.clientHeight);return new Va(32767*t,32767*n)}}class Fr{constructor(A,e,t){this.inRange=A,this.x=e,this.y=t}}class Rn{constructor(A,e){this.x=A,this.y=e}}class Va{constructor(A,e){this.x=A,this.y=e}}class Oa{constructor(A,e){this.shouldShowPlayOverlay=!0,this.config=A,this.pixelStreaming=e,this.responseController=new Xd,this.file=new Md,this.sdpConstraints={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this.afkController=new Ia(this.config,this.pixelStreaming,this.onAfkTriggered.bind(this)),this.afkController.onAFKTimedOutCallback=()=>{this.setDisconnectMessageOverride("You have been disconnected due to inactivity"),this.closeSignalingServer()},this.freezeFrameController=new md(this.pixelStreaming.videoElementParent),this.videoPlayer=new Od(this.pixelStreaming.videoElementParent,this.config),this.videoPlayer.onVideoInitialized=()=>this.handleVideoInitialized(),this.videoPlayer.onMatchViewportResolutionCallback=(t,n)=>{const s={"Resolution.Width":t,"Resolution.Height":n};this.sendDescriptorController.emitCommand(s)},this.videoPlayer.onResizePlayerCallback=()=>{this.setUpMouseAndFreezeFrame()},this.streamController=new Cd(this.videoPlayer),this.coordinateConverter=new Zd(this.videoPlayer),this.sendrecvDataChannelController=new Ta,this.recvDataChannelController=new Ta,this.registerDataChannelEventEmitters(this.sendrecvDataChannelController),this.registerDataChannelEventEmitters(this.recvDataChannelController),this.dataChannelSender=new $d(this.sendrecvDataChannelController),this.dataChannelSender.resetAfkWarningTimerOnDataSend=()=>this.afkController.resetAfkWarningTimer(),this.streamMessageController=new Wd,this.webSocketController=new Zo,this.webSocketController.onConfig=t=>this.handleOnConfigMessage(t),this.webSocketController.onStreamerList=t=>this.handleStreamerListMessage(t),this.webSocketController.onWebSocketOncloseOverlayMessage=t=>{this.pixelStreaming._onDisconnect(`Websocket disconnect (${t.code}) ${t.reason!=""?"- "+t.reason:""}`),this.setVideoEncoderAvgQP(0)},this.webSocketController.onPlayerCount=t=>{this.pixelStreaming._onPlayerCount(t.count)},this.webSocketController.onOpen.addEventListener("open",()=>{this.config.isFlagEnabled(Q.BrowserSendOffer)||this.webSocketController.requestStreamerList()}),this.webSocketController.onClose.addEventListener("close",()=>{this.afkController.stopAfkWarningTimer(),this.statsTimerHandle&&this.statsTimerHandle!==void 0&&window.clearInterval(this.statsTimerHandle),this.setTouchInputEnabled(!1),this.setMouseInputEnabled(!1),this.setKeyboardInputEnabled(!1),this.setGamePadInputEnabled(!1),this.shouldReconnect&&this.config.getNumericSettingValue(M.MaxReconnectAttempts)>0&&(this.isReconnecting=!0,this.reconnectAttempt++,this.restartStreamAutomatically())}),this.sendDescriptorController=new Jd(this.dataChannelSender,this.streamMessageController),this.sendMessageController=new zd(this.dataChannelSender,this.streamMessageController),this.toStreamerMessagesController=new Yd(this.sendMessageController),this.registerMessageHandlers(),this.streamMessageController.populateDefaultProtocol(),this.inputClassesFactory=new _d(this.streamMessageController,this.videoPlayer,this.coordinateConverter),this.isUsingSFU=!1,this.isQualityController=!1,this.preferredCodec="",this.shouldReconnect=!0,this.isReconnecting=!1,this.reconnectAttempt=0,this.config._addOnOptionSettingChangedListener(_.StreamerId,t=>{t!==""&&(this.peerConnectionController.peerConnection.close(),this.peerConnectionController.createPeerConnection(this.peerConfig,this.preferredCodec),this.subscribedStream=t,this.webSocketController.sendSubscribe(t))}),this.setVideoEncoderAvgQP(-1),this.signallingUrlBuilder=()=>{let t=this.config.getTextSettingValue(ZA.SignallingServerUrl);return this.config.isFlagEnabled(Q.BrowserSendOffer)&&(t+="?"+Q.BrowserSendOffer+"=true"),t}}requestUnquantizedAndDenormalizeUnsigned(A,e){return this.coordinateConverter.unquantizeAndDenormalizeUnsigned(A,e)}handleOnMessage(A){const e=new Uint8Array(A.data);g.Log(g.GetStackTrace(),"Message incoming:"+e,6);const t=this.streamMessageController.fromStreamerMessages.getFromValue(e[0]);this.streamMessageController.fromStreamerHandlers.get(t)(A.data)}registerMessageHandlers(){this.streamMessageController.registerMessageHandler(L.FromStreamer,"QualityControlOwnership",A=>this.onQualityControlOwnership(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"Response",A=>this.responseController.onResponse(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"Command",A=>{this.onCommand(A)}),this.streamMessageController.registerMessageHandler(L.FromStreamer,"FreezeFrame",A=>this.onFreezeFrameMessage(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"UnfreezeFrame",()=>this.invalidateFreezeFrameAndEnableVideo()),this.streamMessageController.registerMessageHandler(L.FromStreamer,"VideoEncoderAvgQP",A=>this.handleVideoEncoderAvgQP(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"LatencyTest",A=>this.handleLatencyTestResult(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"InitialSettings",A=>this.handleInitialSettings(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"FileExtension",A=>this.onFileExtension(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"FileMimeType",A=>this.onFileMimeType(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"FileContents",A=>this.onFileContents(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"TestEcho",()=>{}),this.streamMessageController.registerMessageHandler(L.FromStreamer,"InputControlOwnership",A=>this.onInputControlOwnership(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"GamepadResponse",A=>this.onGamepadResponse(A)),this.streamMessageController.registerMessageHandler(L.FromStreamer,"Protocol",A=>this.onProtocolMessage(A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"IFrameRequest",()=>this.sendMessageController.sendMessageToStreamer("IFrameRequest")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"RequestQualityControl",()=>this.sendMessageController.sendMessageToStreamer("RequestQualityControl")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"FpsRequest",()=>this.sendMessageController.sendMessageToStreamer("FpsRequest")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"AverageBitrateRequest",()=>this.sendMessageController.sendMessageToStreamer("AverageBitrateRequest")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"StartStreaming",()=>this.sendMessageController.sendMessageToStreamer("StartStreaming")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"StopStreaming",()=>this.sendMessageController.sendMessageToStreamer("StopStreaming")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"LatencyTest",()=>this.sendMessageController.sendMessageToStreamer("LatencyTest")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"RequestInitialSettings",()=>this.sendMessageController.sendMessageToStreamer("RequestInitialSettings")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"TestEcho",()=>{}),this.streamMessageController.registerMessageHandler(L.ToStreamer,"UIInteraction",A=>this.sendDescriptorController.emitUIInteraction(A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"Command",A=>this.sendDescriptorController.emitCommand(A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"KeyDown",A=>this.sendMessageController.sendMessageToStreamer("KeyDown",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"KeyUp",A=>this.sendMessageController.sendMessageToStreamer("KeyUp",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"KeyPress",A=>this.sendMessageController.sendMessageToStreamer("KeyPress",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"MouseEnter",A=>this.sendMessageController.sendMessageToStreamer("MouseEnter",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"MouseLeave",A=>this.sendMessageController.sendMessageToStreamer("MouseLeave",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"MouseDown",A=>this.sendMessageController.sendMessageToStreamer("MouseDown",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"MouseUp",A=>this.sendMessageController.sendMessageToStreamer("MouseUp",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"MouseMove",A=>this.sendMessageController.sendMessageToStreamer("MouseMove",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"MouseWheel",A=>this.sendMessageController.sendMessageToStreamer("MouseWheel",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"MouseDouble",A=>this.sendMessageController.sendMessageToStreamer("MouseDouble",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"TouchStart",A=>this.sendMessageController.sendMessageToStreamer("TouchStart",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"TouchEnd",A=>this.sendMessageController.sendMessageToStreamer("TouchEnd",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"TouchMove",A=>this.sendMessageController.sendMessageToStreamer("TouchMove",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"GamepadConnected",()=>this.sendMessageController.sendMessageToStreamer("GamepadConnected")),this.streamMessageController.registerMessageHandler(L.ToStreamer,"GamepadButtonPressed",A=>this.sendMessageController.sendMessageToStreamer("GamepadButtonPressed",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"GamepadButtonReleased",A=>this.sendMessageController.sendMessageToStreamer("GamepadButtonReleased",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"GamepadAnalog",A=>this.sendMessageController.sendMessageToStreamer("GamepadAnalog",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"GamepadDisconnected",A=>this.sendMessageController.sendMessageToStreamer("GamepadDisconnected",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"XRHMDTransform",A=>this.sendMessageController.sendMessageToStreamer("XRHMDTransform",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"XRControllerTransform",A=>this.sendMessageController.sendMessageToStreamer("XRControllerTransform",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"XRSystem",A=>this.sendMessageController.sendMessageToStreamer("XRSystem",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"XRButtonTouched",A=>this.sendMessageController.sendMessageToStreamer("XRButtonTouched",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"XRButtonPressed",A=>this.sendMessageController.sendMessageToStreamer("XRButtonPressed",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"XRButtonReleased",A=>this.sendMessageController.sendMessageToStreamer("XRButtonReleased",A)),this.streamMessageController.registerMessageHandler(L.ToStreamer,"XRAnalog",A=>this.sendMessageController.sendMessageToStreamer("XRAnalog",A))}onCommand(A){g.Log(g.GetStackTrace(),"DataChannelReceiveMessageType.Command",6);const e=new TextDecoder("utf-16").decode(A.slice(1));g.Log(g.GetStackTrace(),"Data Channel Command: "+e,6);const t=JSON.parse(e);t.command==="onScreenKeyboard"&&this.pixelStreaming._activateOnScreenKeyboard(t)}onProtocolMessage(A){try{const e=new TextDecoder("utf-16").decode(A.slice(1)),t=JSON.parse(e);Object.prototype.hasOwnProperty.call(t,"Direction")||g.Error(g.GetStackTrace(),"Malformed protocol received. Ensure the protocol message contains a direction");const n=t.Direction;delete t.Direction,g.Log(g.GetStackTrace(),`Received new ${n==L.FromStreamer?"FromStreamer":"ToStreamer"} protocol. Updating existing protocol...`),Object.keys(t).forEach(s=>{const i=t[s];switch(n){case L.ToStreamer:if(!Object.prototype.hasOwnProperty.call(i,"id")||!Object.prototype.hasOwnProperty.call(i,"byteLength"))return void g.Error(g.GetStackTrace(),`ToStreamer->${s} protocol definition was malformed as it didn't contain at least an id and a byteLength
|
|
48
48
|
|
|
49
49
|
Definition was: ${JSON.stringify(i,null,2)}`);if(i.byteLength>0&&!Object.prototype.hasOwnProperty.call(i,"structure"))return void g.Error(g.GetStackTrace(),`ToStreamer->${s} protocol definition was malformed as it specified a byteLength but no accompanying structure`);this.streamMessageController.toStreamerHandlers.get(s)?this.streamMessageController.toStreamerMessages.add(s,i):g.Error(g.GetStackTrace(),`There was no registered handler for "${s}" - try adding one using registerMessageHandler(MessageDirection.ToStreamer, "${s}", myHandler)`);break;case L.FromStreamer:if(!Object.prototype.hasOwnProperty.call(i,"id"))return void g.Error(g.GetStackTrace(),`FromStreamer->${s} protocol definition was malformed as it didn't contain at least an id
|
|
50
50
|
|
|
51
|
-
Definition was: ${JSON.stringify(i,null,2)}`);this.streamMessageController.fromStreamerHandlers.get(s)?this.streamMessageController.fromStreamerMessages.add(s,i.id):g.Error(g.GetStackTrace(),`There was no registered handler for "${i}" - try adding one using registerMessageHandler(MessageDirection.FromStreamer, "${s}", myHandler)`);break;default:g.Error(g.GetStackTrace(),`Unknown direction: ${n}`)}}),this.toStreamerMessagesController.SendRequestInitialSettings(),this.toStreamerMessagesController.SendRequestQualityControl()}catch(e){g.Log(g.GetStackTrace(),e)}}onInputControlOwnership(A){const e=new Uint8Array(A);g.Log(g.GetStackTrace(),"DataChannelReceiveMessageType.InputControlOwnership",6);const t=new Boolean(e[1]).valueOf();g.Log(g.GetStackTrace(),`Received input controller message - will your input control the stream: ${t}`),this.pixelStreaming._onInputControlOwnership(t)}onGamepadResponse(A){const e=new TextDecoder("utf-16").decode(A.slice(1)),t=JSON.parse(e);this.gamePadController.onGamepadResponseReceived(t.controllerId)}onAfkTriggered(){this.afkController.onAfkClick(),this.videoPlayer.isPaused()&&this.videoPlayer.hasVideoSource()&&this.playStream()}setAfkEnabled(A){A?this.onAfkTriggered():this.afkController.stopAfkWarningTimer()}restartStreamAutomatically(){if(this.webSocketController)if(this.webSocketController.webSocket&&this.webSocketController.webSocket.readyState!==WebSocket.CLOSED){this.pixelStreaming._showActionOrErrorOnDisconnect=!1,this.setDisconnectMessageOverride("Restarting stream..."),this.closeSignalingServer();const A=setTimeout(()=>{this.pixelStreaming._onWebRtcAutoConnect(),this.connectToSignallingServer(),clearTimeout(A)},3e3)}else g.Log(g.GetStackTrace(),"A websocket connection has not been made yet so we will start the stream"),this.pixelStreaming._onWebRtcAutoConnect(),this.connectToSignallingServer();else g.Log(g.GetStackTrace(),"The Web Socket Controller does not exist so this will not work right now.")}loadFreezeFrameOrShowPlayOverlay(){this.pixelStreaming.dispatchEvent(new va({shouldShowPlayOverlay:this.shouldShowPlayOverlay,isValid:this.freezeFrameController.valid,jpegData:this.freezeFrameController.jpeg})),this.shouldShowPlayOverlay===!0?(g.Log(g.GetStackTrace(),"showing play overlay"),this.resizePlayerStyle()):(g.Log(g.GetStackTrace(),"showing freeze frame"),this.freezeFrameController.showFreezeFrame()),setTimeout(()=>{this.videoPlayer.setVideoEnabled(!1)},this.freezeFrameController.freezeFrameDelay)}onFreezeFrameMessage(A){g.Log(g.GetStackTrace(),"DataChannelReceiveMessageType.FreezeFrame",6);const e=new Uint8Array(A);this.freezeFrameController.processFreezeFrameMessage(e,()=>this.loadFreezeFrameOrShowPlayOverlay())}invalidateFreezeFrameAndEnableVideo(){g.Log(g.GetStackTrace(),"DataChannelReceiveMessageType.FreezeFrame",6),setTimeout(()=>{this.pixelStreaming.dispatchEvent(new ma),this.freezeFrameController.hideFreezeFrame()},this.freezeFrameController.freezeFrameDelay),this.videoPlayer.getVideoElement()&&this.videoPlayer.setVideoEnabled(!0)}onFileExtension(A){const e=new Uint8Array(A);Rn.setExtensionFromBytes(e,this.file)}onFileMimeType(A){const e=new Uint8Array(A);Rn.setMimeTypeFromBytes(e,this.file)}onFileContents(A){const e=new Uint8Array(A);Rn.setContentsFromBytes(e,this.file)}playStream(){if(!this.videoPlayer.getVideoElement()){const A="Could not play video stream because the video player was not initialized correctly.";return this.pixelStreaming.dispatchEvent(new pa({message:A})),g.Error(g.GetStackTrace(),A),this.setDisconnectMessageOverride("Stream not initialized correctly"),void this.closeSignalingServer()}if(this.videoPlayer.hasVideoSource()){if(this.setTouchInputEnabled(this.config.isFlagEnabled(Q.TouchInput)),this.pixelStreaming.dispatchEvent(new Ca),this.streamController.audioElement.srcObject){const A=this.config.isFlagEnabled(Q.StartVideoMuted);this.streamController.audioElement.muted=A,A?this.playVideo():this.streamController.audioElement.play().then(()=>{this.playVideo()}).catch(e=>{g.Log(g.GetStackTrace(),e),g.Log(g.GetStackTrace(),"Browser does not support autoplaying video without interaction - to resolve this we are going to show the play button overlay."),this.pixelStreaming.dispatchEvent(new Ln({reason:e}))})}else this.playVideo();this.shouldShowPlayOverlay=!1,this.freezeFrameController.showFreezeFrame()}else g.Warning(g.GetStackTrace(),"Cannot play stream, the video element has no srcObject to play.")}playVideo(){this.videoPlayer.play().catch(A=>{this.streamController.audioElement.srcObject&&this.streamController.audioElement.pause(),g.Log(g.GetStackTrace(),A),g.Log(g.GetStackTrace(),"Browser does not support autoplaying video without interaction - to resolve this we are going to show the play button overlay."),this.pixelStreaming.dispatchEvent(new Ln({reason:A}))})}autoPlayVideoOrSetUpPlayOverlay(){this.config.isFlagEnabled(Q.AutoPlayVideo)&&this.playStream(),this.resizePlayerStyle()}connectToSignallingServer(){const A=this.signallingUrlBuilder();this.webSocketController.connect(A)}startSession(A){if(this.peerConfig=A,this.config.isFlagEnabled(Q.ForceTURN)&&!this.checkTurnServerAvailability(A))return g.Info(g.GetStackTrace(),"No turn server was found in the Peer Connection Options. TURN cannot be forced, closing connection. Please use STUN instead"),this.setDisconnectMessageOverride("TURN cannot be forced, closing connection. Please use STUN instead."),void this.closeSignalingServer();this.peerConnectionController=new Ld(this.peerConfig,this.config,this.preferredCodec),this.peerConnectionController.onVideoStats=t=>this.handleVideoStats(t),this.peerConnectionController.onSendWebRTCOffer=t=>this.handleSendWebRTCOffer(t),this.peerConnectionController.onSendWebRTCAnswer=t=>this.handleSendWebRTCAnswer(t),this.peerConnectionController.onPeerIceCandidate=t=>this.handleSendIceCandidate(t),this.peerConnectionController.onDataChannel=t=>this.handleDataChannel(t),this.peerConnectionController.showTextOverlayConnecting=()=>this.pixelStreaming._onWebRtcConnecting(),this.peerConnectionController.showTextOverlaySetupFailure=()=>this.pixelStreaming._onWebRtcFailed();let e=!1;this.peerConnectionController.onIceConnectionStateChange=()=>{!e&&["connected","completed"].includes(this.peerConnectionController.peerConnection.iceConnectionState)&&(this.pixelStreaming._onWebRtcConnected(),e=!0)},this.peerConnectionController.onTrack=t=>this.streamController.handleOnTrack(t),this.config.isFlagEnabled(Q.BrowserSendOffer)&&(this.sendrecvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,"cirrus",this.datachannelOptions),this.sendrecvDataChannelController.handleOnMessage=t=>this.handleOnMessage(t),this.peerConnectionController.createOffer(this.sdpConstraints,this.config))}checkTurnServerAvailability(A){if(!A.iceServers)return g.Info(g.GetStackTrace(),"A turn sever was not found"),!1;for(const e of A.iceServers)for(const t of e.urls)if(t.includes("turn"))return g.Log(g.GetStackTrace(),`A turn sever was found at ${t}`),!0;return g.Info(g.GetStackTrace(),"A turn sever was not found"),!1}handleOnConfigMessage(A){this.resizePlayerStyle(),this.startSession(A.peerConnectionOptions),this.webSocketController.onWebRtcAnswer=e=>this.handleWebRtcAnswer(e),this.webSocketController.onWebRtcOffer=e=>this.handleWebRtcOffer(e),this.webSocketController.onWebRtcPeerDataChannels=e=>this.handleWebRtcSFUPeerDatachannels(e),this.webSocketController.onIceCandidate=e=>this.handleIceCandidate(e)}handleStreamerListMessage(A){if(g.Log(g.GetStackTrace(),`Got streamer list ${A.ids}`,6),this.isReconnecting)A.ids.includes(this.subscribedStream)?(this.isReconnecting=!1,this.reconnectAttempt=0,this.webSocketController.sendSubscribe(this.subscribedStream)):this.reconnectAttempt<this.config.getNumericSettingValue(b.MaxReconnectAttempts)?(this.reconnectAttempt++,setTimeout(()=>{this.webSocketController.requestStreamerList()},2e3)):(this.reconnectAttempt=0,this.isReconnecting=!1,this.shouldReconnect=!1,this.webSocketController.close(),this.config.setOptionSettingValue(_.StreamerId,""),this.config.setOptionSettingOptions(_.StreamerId,[]));else{const e=[...A.ids];e.unshift(""),this.config.setOptionSettingOptions(_.StreamerId,e);const t=new URLSearchParams(window.location.search);let n=null;A.ids.length==1?n=A.ids[0]:this.config.isFlagEnabled(Q.PreferSFU)&&A.ids.includes("SFU")?n="SFU":t.has(_.StreamerId)&&A.ids.includes(t.get(_.StreamerId))&&(n=t.get(_.StreamerId)),n!==null&&this.config.setOptionSettingValue(_.StreamerId,n),this.pixelStreaming.dispatchEvent(new Qa({messageStreamerList:A,autoSelectedStreamerId:n}))}}handleWebRtcAnswer(A){g.Log(g.GetStackTrace(),`Got answer sdp ${A.sdp}`,6);const e={sdp:A.sdp,type:"answer"};this.peerConnectionController.receiveAnswer(e),this.handlePostWebrtcNegotiation()}handleWebRtcOffer(A){g.Log(g.GetStackTrace(),`Got offer sdp ${A.sdp}`,6),this.isUsingSFU=!!A.sfu&&A.sfu,this.isUsingSFU&&(this.peerConnectionController.preferredCodec="");const e={sdp:A.sdp,type:"offer"};this.peerConnectionController.receiveOffer(e,this.config),this.handlePostWebrtcNegotiation()}handleWebRtcSFUPeerDatachannels(A){const e={ordered:!0,negotiated:!0,id:A.sendStreamId},t=A.sendStreamId!=A.recvStreamId;if(this.sendrecvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,t?"send-datachannel":"datachannel",e),t){const n={ordered:!0,negotiated:!0,id:A.recvStreamId};this.recvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,"recv-datachannel",n),this.recvDataChannelController.handleOnOpen=()=>this.webSocketController.sendSFURecvDataChannelReady(),this.recvDataChannelController.handleOnMessage=s=>this.handleOnMessage(s)}else this.sendrecvDataChannelController.handleOnMessage=n=>this.handleOnMessage(n)}handlePostWebrtcNegotiation(){this.afkController.startAfkWarningTimer(),this.pixelStreaming._onWebRtcSdp(),this.statsTimerHandle&&this.statsTimerHandle!==void 0&&window.clearInterval(this.statsTimerHandle),this.statsTimerHandle=window.setInterval(()=>this.getStats(),1e3),this.setMouseInputEnabled(this.config.isFlagEnabled(Q.MouseInput)),this.setKeyboardInputEnabled(this.config.isFlagEnabled(Q.KeyboardInput)),this.setGamePadInputEnabled(this.config.isFlagEnabled(Q.GamepadInput))}handleIceCandidate(A){g.Log(g.GetStackTrace(),"Web RTC Controller: onWebRtcIce",6);const e=new RTCIceCandidate(A);this.peerConnectionController.handleOnIce(e)}handleSendIceCandidate(A){g.Log(g.GetStackTrace(),"OnIceCandidate",6),A.candidate&&A.candidate.candidate&&this.webSocketController.sendIceCandidate(A.candidate)}handleDataChannel(A){g.Log(g.GetStackTrace(),"Data channel created for us by browser as we are a receiving peer.",6),this.sendrecvDataChannelController.dataChannel=A.channel,this.sendrecvDataChannelController.setupDataChannel(),this.sendrecvDataChannelController.handleOnMessage=e=>this.handleOnMessage(e)}handleSendWebRTCOffer(A){g.Log(g.GetStackTrace(),"Sending the offer to the Server",6),this.webSocketController.sendWebRtcOffer(A)}handleSendWebRTCAnswer(A){g.Log(g.GetStackTrace(),"Sending the answer to the Server",6),this.webSocketController.sendWebRtcAnswer(A),this.isUsingSFU&&this.webSocketController.sendWebRtcDatachannelRequest()}setUpMouseAndFreezeFrame(){this.videoElementParentClientRect=this.videoPlayer.getVideoParentElement().getBoundingClientRect(),this.coordinateConverter.setupNormalizeAndQuantize(),this.freezeFrameController.freezeFrame.resize()}closeSignalingServer(){var A;this.shouldReconnect=!1,(A=this.webSocketController)===null||A===void 0||A.close()}closePeerConnection(){var A;(A=this.peerConnectionController)===null||A===void 0||A.close()}close(){this.closeSignalingServer(),this.closePeerConnection()}getStats(){this.peerConnectionController.generateStats()}sendLatencyTest(){this.latencyStartTime=Date.now(),this.sendDescriptorController.sendLatencyTest({StartTime:this.latencyStartTime})}sendEncoderMinQP(A){g.Log(g.GetStackTrace(),`MinQP=${A}
|
|
51
|
+
Definition was: ${JSON.stringify(i,null,2)}`);this.streamMessageController.fromStreamerHandlers.get(s)?this.streamMessageController.fromStreamerMessages.add(s,i.id):g.Error(g.GetStackTrace(),`There was no registered handler for "${i}" - try adding one using registerMessageHandler(MessageDirection.FromStreamer, "${s}", myHandler)`);break;default:g.Error(g.GetStackTrace(),`Unknown direction: ${n}`)}}),this.toStreamerMessagesController.SendRequestInitialSettings(),this.toStreamerMessagesController.SendRequestQualityControl()}catch(e){g.Log(g.GetStackTrace(),e)}}onInputControlOwnership(A){const e=new Uint8Array(A);g.Log(g.GetStackTrace(),"DataChannelReceiveMessageType.InputControlOwnership",6);const t=new Boolean(e[1]).valueOf();g.Log(g.GetStackTrace(),`Received input controller message - will your input control the stream: ${t}`),this.pixelStreaming._onInputControlOwnership(t)}onGamepadResponse(A){const e=new TextDecoder("utf-16").decode(A.slice(1)),t=JSON.parse(e);this.gamePadController.onGamepadResponseReceived(t.controllerId)}onAfkTriggered(){this.afkController.onAfkClick(),this.videoPlayer.isPaused()&&this.videoPlayer.hasVideoSource()&&this.playStream()}setAfkEnabled(A){A?this.onAfkTriggered():this.afkController.stopAfkWarningTimer()}restartStreamAutomatically(){if(this.webSocketController)if(this.webSocketController.webSocket&&this.webSocketController.webSocket.readyState!==WebSocket.CLOSED){this.pixelStreaming._showActionOrErrorOnDisconnect=!1,this.setDisconnectMessageOverride("Restarting stream..."),this.closeSignalingServer();const A=setTimeout(()=>{this.pixelStreaming._onWebRtcAutoConnect(),this.connectToSignallingServer(),clearTimeout(A)},3e3)}else g.Log(g.GetStackTrace(),"A websocket connection has not been made yet so we will start the stream"),this.pixelStreaming._onWebRtcAutoConnect(),this.connectToSignallingServer();else g.Log(g.GetStackTrace(),"The Web Socket Controller does not exist so this will not work right now.")}loadFreezeFrameOrShowPlayOverlay(){this.pixelStreaming.dispatchEvent(new Ca({shouldShowPlayOverlay:this.shouldShowPlayOverlay,isValid:this.freezeFrameController.valid,jpegData:this.freezeFrameController.jpeg})),this.shouldShowPlayOverlay===!0?(g.Log(g.GetStackTrace(),"showing play overlay"),this.resizePlayerStyle()):(g.Log(g.GetStackTrace(),"showing freeze frame"),this.freezeFrameController.showFreezeFrame()),setTimeout(()=>{this.videoPlayer.setVideoEnabled(!1)},this.freezeFrameController.freezeFrameDelay)}onFreezeFrameMessage(A){g.Log(g.GetStackTrace(),"DataChannelReceiveMessageType.FreezeFrame",6);const e=new Uint8Array(A);this.freezeFrameController.processFreezeFrameMessage(e,()=>this.loadFreezeFrameOrShowPlayOverlay())}invalidateFreezeFrameAndEnableVideo(){g.Log(g.GetStackTrace(),"DataChannelReceiveMessageType.FreezeFrame",6),setTimeout(()=>{this.pixelStreaming.dispatchEvent(new va),this.freezeFrameController.hideFreezeFrame()},this.freezeFrameController.freezeFrameDelay),this.videoPlayer.getVideoElement()&&this.videoPlayer.setVideoEnabled(!0)}onFileExtension(A){const e=new Uint8Array(A);Dn.setExtensionFromBytes(e,this.file)}onFileMimeType(A){const e=new Uint8Array(A);Dn.setMimeTypeFromBytes(e,this.file)}onFileContents(A){const e=new Uint8Array(A);Dn.setContentsFromBytes(e,this.file)}playStream(){if(!this.videoPlayer.getVideoElement()){const A="Could not play video stream because the video player was not initialized correctly.";return this.pixelStreaming.dispatchEvent(new wa({message:A})),g.Error(g.GetStackTrace(),A),this.setDisconnectMessageOverride("Stream not initialized correctly"),void this.closeSignalingServer()}if(this.videoPlayer.hasVideoSource()){if(this.setTouchInputEnabled(this.config.isFlagEnabled(Q.TouchInput)),this.pixelStreaming.dispatchEvent(new pa),this.streamController.audioElement.srcObject){const A=this.config.isFlagEnabled(Q.StartVideoMuted);this.streamController.audioElement.muted=A,A?this.playVideo():this.streamController.audioElement.play().then(()=>{this.playVideo()}).catch(e=>{g.Log(g.GetStackTrace(),e),g.Log(g.GetStackTrace(),"Browser does not support autoplaying video without interaction - to resolve this we are going to show the play button overlay."),this.pixelStreaming.dispatchEvent(new Hn({reason:e}))})}else this.playVideo();this.shouldShowPlayOverlay=!1,this.freezeFrameController.showFreezeFrame()}else g.Warning(g.GetStackTrace(),"Cannot play stream, the video element has no srcObject to play.")}playVideo(){this.videoPlayer.play().catch(A=>{this.streamController.audioElement.srcObject&&this.streamController.audioElement.pause(),g.Log(g.GetStackTrace(),A),g.Log(g.GetStackTrace(),"Browser does not support autoplaying video without interaction - to resolve this we are going to show the play button overlay."),this.pixelStreaming.dispatchEvent(new Hn({reason:A}))})}autoPlayVideoOrSetUpPlayOverlay(){this.config.isFlagEnabled(Q.AutoPlayVideo)&&this.playStream(),this.resizePlayerStyle()}connectToSignallingServer(){const A=this.signallingUrlBuilder();this.webSocketController.connect(A)}startSession(A){if(this.peerConfig=A,this.config.isFlagEnabled(Q.ForceTURN)&&!this.checkTurnServerAvailability(A))return g.Info(g.GetStackTrace(),"No turn server was found in the Peer Connection Options. TURN cannot be forced, closing connection. Please use STUN instead"),this.setDisconnectMessageOverride("TURN cannot be forced, closing connection. Please use STUN instead."),void this.closeSignalingServer();this.peerConnectionController=new Ld(this.peerConfig,this.config,this.preferredCodec),this.peerConnectionController.onVideoStats=t=>this.handleVideoStats(t),this.peerConnectionController.onSendWebRTCOffer=t=>this.handleSendWebRTCOffer(t),this.peerConnectionController.onSendWebRTCAnswer=t=>this.handleSendWebRTCAnswer(t),this.peerConnectionController.onPeerIceCandidate=t=>this.handleSendIceCandidate(t),this.peerConnectionController.onDataChannel=t=>this.handleDataChannel(t),this.peerConnectionController.showTextOverlayConnecting=()=>this.pixelStreaming._onWebRtcConnecting(),this.peerConnectionController.showTextOverlaySetupFailure=()=>this.pixelStreaming._onWebRtcFailed();let e=!1;this.peerConnectionController.onIceConnectionStateChange=()=>{!e&&["connected","completed"].includes(this.peerConnectionController.peerConnection.iceConnectionState)&&(this.pixelStreaming._onWebRtcConnected(),e=!0)},this.peerConnectionController.onTrack=t=>this.streamController.handleOnTrack(t),this.config.isFlagEnabled(Q.BrowserSendOffer)&&(this.sendrecvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,"cirrus",this.datachannelOptions),this.sendrecvDataChannelController.handleOnMessage=t=>this.handleOnMessage(t),this.peerConnectionController.createOffer(this.sdpConstraints,this.config))}checkTurnServerAvailability(A){if(!A.iceServers)return g.Info(g.GetStackTrace(),"A turn sever was not found"),!1;for(const e of A.iceServers)for(const t of e.urls)if(t.includes("turn"))return g.Log(g.GetStackTrace(),`A turn sever was found at ${t}`),!0;return g.Info(g.GetStackTrace(),"A turn sever was not found"),!1}handleOnConfigMessage(A){this.resizePlayerStyle(),this.startSession(A.peerConnectionOptions),this.webSocketController.onWebRtcAnswer=e=>this.handleWebRtcAnswer(e),this.webSocketController.onWebRtcOffer=e=>this.handleWebRtcOffer(e),this.webSocketController.onWebRtcPeerDataChannels=e=>this.handleWebRtcSFUPeerDatachannels(e),this.webSocketController.onIceCandidate=e=>this.handleIceCandidate(e)}handleStreamerListMessage(A){if(g.Log(g.GetStackTrace(),`Got streamer list ${A.ids}`,6),this.isReconnecting)A.ids.includes(this.subscribedStream)?(this.isReconnecting=!1,this.reconnectAttempt=0,this.webSocketController.sendSubscribe(this.subscribedStream)):this.reconnectAttempt<this.config.getNumericSettingValue(M.MaxReconnectAttempts)?(this.reconnectAttempt++,setTimeout(()=>{this.webSocketController.requestStreamerList()},2e3)):(this.reconnectAttempt=0,this.isReconnecting=!1,this.shouldReconnect=!1,this.webSocketController.close(),this.config.setOptionSettingValue(_.StreamerId,""),this.config.setOptionSettingOptions(_.StreamerId,[]));else{const e=[...A.ids];e.unshift(""),this.config.setOptionSettingOptions(_.StreamerId,e);const t=new URLSearchParams(window.location.search);let n=null;A.ids.length==1?n=A.ids[0]:this.config.isFlagEnabled(Q.PreferSFU)&&A.ids.includes("SFU")?n="SFU":t.has(_.StreamerId)&&A.ids.includes(t.get(_.StreamerId))&&(n=t.get(_.StreamerId)),n!==null&&this.config.setOptionSettingValue(_.StreamerId,n),this.pixelStreaming.dispatchEvent(new Fa({messageStreamerList:A,autoSelectedStreamerId:n}))}}handleWebRtcAnswer(A){g.Log(g.GetStackTrace(),`Got answer sdp ${A.sdp}`,6);const e={sdp:A.sdp,type:"answer"};this.peerConnectionController.receiveAnswer(e),this.handlePostWebrtcNegotiation()}handleWebRtcOffer(A){g.Log(g.GetStackTrace(),`Got offer sdp ${A.sdp}`,6),this.isUsingSFU=!!A.sfu&&A.sfu,this.isUsingSFU&&(this.peerConnectionController.preferredCodec="");const e={sdp:A.sdp,type:"offer"};this.peerConnectionController.receiveOffer(e,this.config),this.handlePostWebrtcNegotiation()}handleWebRtcSFUPeerDatachannels(A){const e={ordered:!0,negotiated:!0,id:A.sendStreamId},t=A.sendStreamId!=A.recvStreamId;if(this.sendrecvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,t?"send-datachannel":"datachannel",e),t){const n={ordered:!0,negotiated:!0,id:A.recvStreamId};this.recvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,"recv-datachannel",n),this.recvDataChannelController.handleOnOpen=()=>this.webSocketController.sendSFURecvDataChannelReady(),this.recvDataChannelController.handleOnMessage=s=>this.handleOnMessage(s)}else this.sendrecvDataChannelController.handleOnMessage=n=>this.handleOnMessage(n)}handlePostWebrtcNegotiation(){this.afkController.startAfkWarningTimer(),this.pixelStreaming._onWebRtcSdp(),this.statsTimerHandle&&this.statsTimerHandle!==void 0&&window.clearInterval(this.statsTimerHandle),this.statsTimerHandle=window.setInterval(()=>this.getStats(),1e3),this.setMouseInputEnabled(this.config.isFlagEnabled(Q.MouseInput)),this.setKeyboardInputEnabled(this.config.isFlagEnabled(Q.KeyboardInput)),this.setGamePadInputEnabled(this.config.isFlagEnabled(Q.GamepadInput))}handleIceCandidate(A){g.Log(g.GetStackTrace(),"Web RTC Controller: onWebRtcIce",6);const e=new RTCIceCandidate(A);this.peerConnectionController.handleOnIce(e)}handleSendIceCandidate(A){g.Log(g.GetStackTrace(),"OnIceCandidate",6),A.candidate&&A.candidate.candidate&&this.webSocketController.sendIceCandidate(A.candidate)}handleDataChannel(A){g.Log(g.GetStackTrace(),"Data channel created for us by browser as we are a receiving peer.",6),this.sendrecvDataChannelController.dataChannel=A.channel,this.sendrecvDataChannelController.setupDataChannel(),this.sendrecvDataChannelController.handleOnMessage=e=>this.handleOnMessage(e)}handleSendWebRTCOffer(A){g.Log(g.GetStackTrace(),"Sending the offer to the Server",6),this.webSocketController.sendWebRtcOffer(A)}handleSendWebRTCAnswer(A){g.Log(g.GetStackTrace(),"Sending the answer to the Server",6),this.webSocketController.sendWebRtcAnswer(A),this.isUsingSFU&&this.webSocketController.sendWebRtcDatachannelRequest()}setUpMouseAndFreezeFrame(){this.videoElementParentClientRect=this.videoPlayer.getVideoParentElement().getBoundingClientRect(),this.coordinateConverter.setupNormalizeAndQuantize(),this.freezeFrameController.freezeFrame.resize()}closeSignalingServer(){var A;this.shouldReconnect=!1,(A=this.webSocketController)===null||A===void 0||A.close()}closePeerConnection(){var A;(A=this.peerConnectionController)===null||A===void 0||A.close()}close(){this.closeSignalingServer(),this.closePeerConnection()}getStats(){this.peerConnectionController.generateStats()}sendLatencyTest(){this.latencyStartTime=Date.now(),this.sendDescriptorController.sendLatencyTest({StartTime:this.latencyStartTime})}sendEncoderMinQP(A){g.Log(g.GetStackTrace(),`MinQP=${A}
|
|
52
52
|
`,6),A!=null&&this.sendDescriptorController.emitCommand({"Encoder.MinQP":A})}sendEncoderMaxQP(A){g.Log(g.GetStackTrace(),`MaxQP=${A}
|
|
53
|
-
`,6),A!=null&&this.sendDescriptorController.emitCommand({"Encoder.MaxQP":A})}sendWebRTCMinBitrate(A){g.Log(g.GetStackTrace(),`WebRTC Min Bitrate=${A}`,6),A!=null&&this.sendDescriptorController.emitCommand({"WebRTC.MinBitrate":A})}sendWebRTCMaxBitrate(A){g.Log(g.GetStackTrace(),`WebRTC Max Bitrate=${A}`,6),A!=null&&this.sendDescriptorController.emitCommand({"WebRTC.MaxBitrate":A})}sendWebRTCFps(A){g.Log(g.GetStackTrace(),`WebRTC FPS=${A}`,6),A!=null&&(this.sendDescriptorController.emitCommand({"WebRTC.Fps":A}),this.sendDescriptorController.emitCommand({"WebRTC.MaxFps":A}))}sendShowFps(){g.Log(g.GetStackTrace(),"---- Sending show stat to UE ----",6),this.sendDescriptorController.emitCommand({"stat.fps":""})}sendIframeRequest(){g.Log(g.GetStackTrace(),"---- Sending Request for an IFrame ----",6),this.streamMessageController.toStreamerHandlers.get("IFrameRequest")()}emitUIInteraction(A){g.Log(g.GetStackTrace(),"---- Sending custom UIInteraction message ----",6),this.sendDescriptorController.emitUIInteraction(A)}emitCommand(A){g.Log(g.GetStackTrace(),"---- Sending custom Command message ----",6),this.sendDescriptorController.emitCommand(A)}emitConsoleCommand(A){g.Log(g.GetStackTrace(),"---- Sending custom Command:ConsoleCommand message ----",6),this.sendDescriptorController.emitCommand({ConsoleCommand:A})}sendRequestQualityControlOwnership(){g.Log(g.GetStackTrace(),"---- Sending Request to Control Quality ----",6),this.toStreamerMessagesController.SendRequestQualityControl()}handleLatencyTestResult(A){g.Log(g.GetStackTrace(),"DataChannelReceiveMessageType.latencyTest",6);const e=new TextDecoder("utf-16").decode(A.slice(1)),t=new
|
|
53
|
+
`,6),A!=null&&this.sendDescriptorController.emitCommand({"Encoder.MaxQP":A})}sendWebRTCMinBitrate(A){g.Log(g.GetStackTrace(),`WebRTC Min Bitrate=${A}`,6),A!=null&&this.sendDescriptorController.emitCommand({"WebRTC.MinBitrate":A})}sendWebRTCMaxBitrate(A){g.Log(g.GetStackTrace(),`WebRTC Max Bitrate=${A}`,6),A!=null&&this.sendDescriptorController.emitCommand({"WebRTC.MaxBitrate":A})}sendWebRTCFps(A){g.Log(g.GetStackTrace(),`WebRTC FPS=${A}`,6),A!=null&&(this.sendDescriptorController.emitCommand({"WebRTC.Fps":A}),this.sendDescriptorController.emitCommand({"WebRTC.MaxFps":A}))}sendShowFps(){g.Log(g.GetStackTrace(),"---- Sending show stat to UE ----",6),this.sendDescriptorController.emitCommand({"stat.fps":""})}sendIframeRequest(){g.Log(g.GetStackTrace(),"---- Sending Request for an IFrame ----",6),this.streamMessageController.toStreamerHandlers.get("IFrameRequest")()}emitUIInteraction(A){g.Log(g.GetStackTrace(),"---- Sending custom UIInteraction message ----",6),this.sendDescriptorController.emitUIInteraction(A)}emitCommand(A){g.Log(g.GetStackTrace(),"---- Sending custom Command message ----",6),this.sendDescriptorController.emitCommand(A)}emitConsoleCommand(A){g.Log(g.GetStackTrace(),"---- Sending custom Command:ConsoleCommand message ----",6),this.sendDescriptorController.emitCommand({ConsoleCommand:A})}sendRequestQualityControlOwnership(){g.Log(g.GetStackTrace(),"---- Sending Request to Control Quality ----",6),this.toStreamerMessagesController.SendRequestQualityControl()}handleLatencyTestResult(A){g.Log(g.GetStackTrace(),"DataChannelReceiveMessageType.latencyTest",6);const e=new TextDecoder("utf-16").decode(A.slice(1)),t=new Na;Object.assign(t,JSON.parse(e)),t.processFields(),t.testStartTimeMs=this.latencyStartTime,t.browserReceiptTimeMs=Date.now(),t.latencyExcludingDecode=~~(t.browserReceiptTimeMs-t.testStartTimeMs),t.testDuration=~~(t.TransmissionTimeMs-t.ReceiptTimeMs),t.networkLatency=~~(t.latencyExcludingDecode-t.testDuration),t.frameDisplayDeltaTimeMs&&t.browserReceiptTimeMs&&(t.endToEndLatency=(t.frameDisplayDeltaTimeMs,t.networkLatency,~~+t.CaptureToSendMs)),this.pixelStreaming._onLatencyTestResult(t)}handleInitialSettings(A){g.Log(g.GetStackTrace(),"DataChannelReceiveMessageType.InitialSettings",6);const e=new TextDecoder("utf-16").decode(A.slice(1)),t=JSON.parse(e),n=new Ka;t.Encoder&&(n.EncoderSettings=t.Encoder),t.WebRTC&&(n.WebRTCSettings=t.WebRTC),t.PixelStreaming&&(n.PixelStreamingSettings=t.PixelStreaming),t.ConfigOptions&&t.ConfigOptions.DefaultToHover!==void 0&&this.config.setFlagEnabled(Q.HoveringMouseMode,!!t.ConfigOptions.DefaultToHover),n.ueCompatible(),g.Log(g.GetStackTrace(),e,6),this.pixelStreaming._onInitialSettings(n)}handleVideoEncoderAvgQP(A){g.Log(g.GetStackTrace(),"DataChannelReceiveMessageType.VideoEncoderAvgQP",6);const e=Number(new TextDecoder("utf-16").decode(A.slice(1)));this.setVideoEncoderAvgQP(e)}handleVideoInitialized(){this.pixelStreaming._onVideoInitialized(),this.autoPlayVideoOrSetUpPlayOverlay(),this.resizePlayerStyle(),this.videoPlayer.updateVideoStreamSize()}onQualityControlOwnership(A){const e=new Uint8Array(A);g.Log(g.GetStackTrace(),"DataChannelReceiveMessageType.QualityControlOwnership",6),this.isQualityController=new Boolean(e[1]).valueOf(),g.Log(g.GetStackTrace(),`Received quality controller message, will control quality: ${this.isQualityController}`),this.pixelStreaming._onQualityControlOwnership(this.isQualityController)}handleVideoStats(A){this.pixelStreaming._onVideoStats(A)}resizePlayerStyle(){this.videoPlayer.resizePlayerStyle()}getDisconnectMessageOverride(){return this.disconnectMessageOverride}setDisconnectMessageOverride(A){this.disconnectMessageOverride=A}setPreferredCodec(A){this.preferredCodec=A,this.peerConnectionController&&(this.peerConnectionController.preferredCodec=A,this.peerConnectionController.updateCodecSelection=!1)}setVideoEncoderAvgQP(A){this.videoAvgQp=A,this.pixelStreaming._onVideoEncoderAvgQP(this.videoAvgQp)}setKeyboardInputEnabled(A){var e;(e=this.keyboardController)===null||e===void 0||e.unregisterKeyBoardEvents(),A&&(this.keyboardController=this.inputClassesFactory.registerKeyBoard(this.config))}setMouseInputEnabled(A){var e;if((e=this.mouseController)===null||e===void 0||e.unregisterMouseEvents(),A){const t=this.config.isFlagEnabled(Q.HoveringMouseMode)?qA.HoveringMouse:qA.LockedMouse;this.mouseController=this.inputClassesFactory.registerMouse(t)}}setTouchInputEnabled(A){var e;(e=this.touchController)===null||e===void 0||e.unregisterTouchEvents(),A&&(this.touchController=this.inputClassesFactory.registerTouch(this.config.isFlagEnabled(Q.FakeMouseWithTouches),this.videoElementParentClientRect))}setGamePadInputEnabled(A){var e;(e=this.gamePadController)===null||e===void 0||e.unregisterGamePadEvents(),A&&(this.gamePadController=this.inputClassesFactory.registerGamePad(),this.gamePadController.onGamepadConnected=()=>{this.streamMessageController.toStreamerHandlers.get("GamepadConnected")()},this.gamePadController.onGamepadDisconnected=t=>{this.streamMessageController.toStreamerHandlers.get("GamepadDisconnected")([t])})}registerDataChannelEventEmitters(A){A.onOpen=(e,t)=>this.pixelStreaming.dispatchEvent(new la({label:e,event:t})),A.onClose=(e,t)=>this.pixelStreaming.dispatchEvent(new ca({label:e,event:t})),A.onError=(e,t)=>this.pixelStreaming.dispatchEvent(new da({label:e,event:t}))}}class Wa{static vertexShader(){return`
|
|
54
54
|
attribute vec2 a_position;
|
|
55
55
|
attribute vec2 a_texCoord;
|
|
56
56
|
|
|
@@ -88,7 +88,7 @@ Msg: ${e}`;console.warn(t)}};g.verboseLogLevel=5,function(r){r.LIST_STREAMERS="l
|
|
|
88
88
|
void main() {
|
|
89
89
|
gl_FragColor = texture2D(u_image, v_texCoord);
|
|
90
90
|
}
|
|
91
|
-
`}}class Ja{static deepCopyGamepad(A){return JSON.parse(JSON.stringify({buttons:A.buttons.map(e=>JSON.parse(JSON.stringify({pressed:e.pressed,touched:e.touched}))),axes:A.axes}))}}class qd{constructor(A){this.toStreamerMessagesProvider=A,this.controllers=[]}updateStatus(A,e,t){if(A.gamepad){const n=e.getPose(A.gripSpace,t);if(!n)return;let s=0;A.profiles.includes("htc-vive")?s=1:A.profiles.includes("oculus-touch")&&(s=2),this.toStreamerMessagesProvider.toStreamerHandlers.get("XRSystem")([s]);let i=2;switch(A.handedness){case"left":i=0;break;case"right":i=1}const o=n.transform.matrix,a=[];for(let u=0;u<16;u++)a[u]=new Float32Array([o[u]])[0];this.toStreamerMessagesProvider.toStreamerHandlers.get("XRControllerTransform")([a[0],a[4],a[8],a[12],a[1],a[5],a[9],a[13],a[2],a[6],a[10],a[14],a[3],a[7],a[11],a[15],i]),this.controllers[i]===void 0&&(this.controllers[i]={prevState:void 0,currentState:void 0,id:void 0},this.controllers[i].prevState=Ja.deepCopyGamepad(A.gamepad)),this.controllers[i].currentState=Ja.deepCopyGamepad(A.gamepad);const l=this.controllers[i],d=l.currentState,h=l.prevState;for(let u=0;u<d.buttons.length;u++){const f=d.buttons[u],B=h.buttons[u];f.pressed?this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonPressed")([i,u,B.pressed?1:0]):!f.pressed&&B.pressed&&this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonReleased")([i,u,0]),f.touched&&!f.pressed?this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonPressed")([i,3,B.touched?1:0]):!f.touched&&B.touched&&this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonReleased")([i,3,0])}for(let u=0;u<d.axes.length;u++)this.toStreamerMessagesProvider.toStreamerHandlers.get("XRAnalog")([i,u,d.axes[u]]);this.controllers[i].prevState=d}}}class za{constructor(A){this.xrSession=null,this.webRtcController=A,this.xrControllers=[],this.xrGamepadController=new qd(this.webRtcController.streamMessageController),this.onSessionEnded=new EventTarget,this.onSessionStarted=new EventTarget,this.onFrame=new EventTarget}xrClicked(){this.xrSession?this.xrSession.end():navigator.xr.requestSession("immersive-vr").then(A=>{this.onXrSessionStarted(A)})}onXrSessionEnded(){g.Log(g.GetStackTrace(),"XR Session ended"),this.xrSession=null,this.onSessionEnded.dispatchEvent(new Event("xrSessionEnded"))}onXrSessionStarted(A){g.Log(g.GetStackTrace(),"XR Session started"),this.xrSession=A,this.xrSession.addEventListener("end",()=>{this.onXrSessionEnded()});const e=document.createElement("canvas");this.gl=e.getContext("webgl2",{xrCompatible:!0}),this.xrSession.updateRenderState({baseLayer:new XRWebGLLayer(this.xrSession,this.gl)});const t=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(t,Xa.vertexShader()),this.gl.compileShader(t);const n=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(n,Xa.fragmentShader()),this.gl.compileShader(n);const s=this.gl.createProgram();this.gl.attachShader(s,t),this.gl.attachShader(s,n),this.gl.linkProgram(s),this.gl.useProgram(s),this.positionLocation=this.gl.getAttribLocation(s,"a_position"),this.texcoordLocation=this.gl.getAttribLocation(s,"a_texCoord"),this.positionBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionBuffer),this.gl.enableVertexAttribArray(this.positionLocation);const i=this.gl.createTexture();this.gl.bindTexture(this.gl.TEXTURE_2D,i),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.NEAREST),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.NEAREST),this.texcoordBuffer=this.gl.createBuffer(),this.resolutionLocation=this.gl.getUniformLocation(s,"u_resolution"),this.offsetLocation=this.gl.getUniformLocation(s,"u_offset"),A.requestReferenceSpace("local").then(o=>{this.xrRefSpace=o,this.xrSession.requestAnimationFrame((a,l)=>this.onXrFrame(a,l))}),this.onSessionStarted.dispatchEvent(new Event("xrSessionStarted"))}onXrFrame(A,e){const t=e.getViewerPose(this.xrRefSpace);if(t){const n=t.transform.matrix,s=[];for(let o=0;o<16;o++)s[o]=new Float32Array([n[o]])[0];this.webRtcController.streamMessageController.toStreamerHandlers.get("XRHMDTransform")([s[0],s[4],s[8],s[12],s[1],s[5],s[9],s[13],s[2],s[6],s[10],s[14],s[3],s[7],s[11],s[15]]);const i=this.xrSession.renderState.baseLayer;this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,i.framebuffer),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.webRtcController.videoPlayer.getVideoElement()),this.render(this.webRtcController.videoPlayer.getVideoElement())}this.webRtcController.config.isFlagEnabled(Q.XRControllerInput)&&this.xrSession.inputSources.forEach((n,s,i)=>{this.xrGamepadController.updateStatus(n,e,this.xrRefSpace)},this),this.xrSession.requestAnimationFrame((n,s)=>this.onXrFrame(n,s)),this.onFrame.dispatchEvent(new ya({time:A,frame:e}))}render(A){if(!this.gl)return;const e=this.xrSession.renderState.baseLayer;let t,n,s,i,o;this.gl.viewport(0,0,e.framebufferWidth,e.framebufferHeight),this.gl.uniform4f(this.offsetLocation,1,1,0,0),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,A.videoWidth,0,0,A.videoHeight,0,A.videoHeight,A.videoWidth,0,A.videoWidth,A.videoHeight]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texcoordBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionBuffer),t=2,n=this.gl.FLOAT,s=!1,i=0,o=0,this.gl.vertexAttribPointer(this.positionLocation,t,n,s,i,o),this.gl.enableVertexAttribArray(this.texcoordLocation),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texcoordBuffer),t=2,n=this.gl.FLOAT,s=!1,i=0,o=0,this.gl.vertexAttribPointer(this.texcoordLocation,t,n,s,i,o),this.gl.uniform2f(this.resolutionLocation,A.videoWidth,A.videoHeight);const a=this.gl.TRIANGLES;o=0,this.gl.drawArrays(a,o,6)}static isSessionSupported(A){return navigator.xr?navigator.xr.isSessionSupported(A):new Promise(()=>!1)}}class jd{constructor(A){this.editTextButton=null,this.hiddenInput=null,"ontouchstart"in document.documentElement&&this.createOnScreenKeyboardHelpers(A)}unquantizeAndDenormalizeUnsigned(A,e){return null}createOnScreenKeyboardHelpers(A){this.hiddenInput||(this.hiddenInput=document.createElement("input"),this.hiddenInput.id="hiddenInput",this.hiddenInput.maxLength=0,A.appendChild(this.hiddenInput)),this.editTextButton||(this.editTextButton=document.createElement("button"),this.editTextButton.id="editTextButton",this.editTextButton.innerHTML="edit text",A.appendChild(this.editTextButton),this.editTextButton.classList.add("hiddenState"),this.editTextButton.addEventListener("touchend",e=>{this.hiddenInput.focus(),e.preventDefault()}))}showOnScreenKeyboard(A){if(A.showOnScreenKeyboard){this.editTextButton.classList.remove("hiddenState");const e=this.unquantizeAndDenormalizeUnsigned(A.x,A.y);this.editTextButton.style.top=e.y.toString()+"px",this.editTextButton.style.left=(e.x-40).toString()+"px"}else this.editTextButton.classList.add("hiddenState"),this.hiddenInput.blur()}}class Au{constructor(A,e){this._showActionOrErrorOnDisconnect=!0,this.allowConsoleCommands=!1,this.config=A,e!=null&&e.videoElementParent&&(this._videoElementParent=e.videoElementParent),this._eventEmitter=new Ia,this.configureSettings(),this.setWebRtcPlayerController(new Wa(this.config,this)),this.onScreenKeyboardHelper=new jd(this.videoElementParent),this.onScreenKeyboardHelper.unquantizeAndDenormalizeUnsigned=(t,n)=>this._webRtcController.requestUnquantizedAndDenormalizeUnsigned(t,n),this._activateOnScreenKeyboard=t=>this.onScreenKeyboardHelper.showOnScreenKeyboard(t),this._webXrController=new za(this._webRtcController)}get videoElementParent(){return this._videoElementParent||(this._videoElementParent=document.createElement("div"),this._videoElementParent.id="videoElementParent"),this._videoElementParent}configureSettings(){this.config._addOnSettingChangedListener(Q.IsQualityController,A=>{A!==!0||this._webRtcController.isQualityController||this._webRtcController.sendRequestQualityControlOwnership()}),this.config._addOnSettingChangedListener(Q.AFKDetection,A=>{this._webRtcController.setAfkEnabled(A)}),this.config._addOnSettingChangedListener(Q.MatchViewportResolution,()=>{this._webRtcController.videoPlayer.updateVideoStreamSize()}),this.config._addOnSettingChangedListener(Q.HoveringMouseMode,A=>{this.config.setFlagLabel(Q.HoveringMouseMode,`Control Scheme: ${A?"Hovering":"Locked"} Mouse`),this._webRtcController.setMouseInputEnabled(this.config.isFlagEnabled(Q.MouseInput))}),this.config._addOnSettingChangedListener(Q.KeyboardInput,A=>{this._webRtcController.setKeyboardInputEnabled(A)}),this.config._addOnSettingChangedListener(Q.MouseInput,A=>{this._webRtcController.setMouseInputEnabled(A)}),this.config._addOnSettingChangedListener(Q.TouchInput,A=>{this._webRtcController.setTouchInputEnabled(A)}),this.config._addOnSettingChangedListener(Q.GamepadInput,A=>{this._webRtcController.setGamePadInputEnabled(A)}),this.config._addOnNumericSettingChangedListener(b.MinQP,A=>{g.Log(g.GetStackTrace(),"-------- Sending MinQP --------",7),this._webRtcController.sendEncoderMinQP(A),g.Log(g.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnNumericSettingChangedListener(b.MaxQP,A=>{g.Log(g.GetStackTrace(),"-------- Sending encoder settings --------",7),this._webRtcController.sendEncoderMaxQP(A),g.Log(g.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnNumericSettingChangedListener(b.WebRTCMinBitrate,A=>{g.Log(g.GetStackTrace(),"-------- Sending web rtc settings --------",7),this._webRtcController.sendWebRTCMinBitrate(1e3*A),g.Log(g.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnNumericSettingChangedListener(b.WebRTCMaxBitrate,A=>{g.Log(g.GetStackTrace(),"-------- Sending web rtc settings --------",7),this._webRtcController.sendWebRTCMaxBitrate(1e3*A),g.Log(g.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnNumericSettingChangedListener(b.WebRTCFPS,A=>{g.Log(g.GetStackTrace(),"-------- Sending web rtc settings --------",7),this._webRtcController.sendWebRTCFps(A),g.Log(g.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnOptionSettingChangedListener(_.PreferredCodec,A=>{this._webRtcController&&this._webRtcController.setPreferredCodec(A)}),this.config._registerOnChangeEvents(this._eventEmitter)}_activateOnScreenKeyboard(A){throw new Error("Method not implemented.")}_onInputControlOwnership(A){this._inputController=A}setWebRtcPlayerController(A){this._webRtcController=A,this._webRtcController.setPreferredCodec(this.config.getSettingOption(_.PreferredCodec).selected),this._webRtcController.resizePlayerStyle(),this.checkForAutoConnect()}connect(){this._eventEmitter.dispatchEvent(new Ba),this._webRtcController.connectToSignallingServer()}reconnect(){this._eventEmitter.dispatchEvent(new wa),this._webRtcController.restartStreamAutomatically()}disconnect(){this._eventEmitter.dispatchEvent(new fa),this._webRtcController.close()}play(){this._onStreamLoading(),this._webRtcController.playStream()}checkForAutoConnect(){this.config.isFlagEnabled(Q.AutoConnect)&&(this._onWebRtcAutoConnect(),this._webRtcController.connectToSignallingServer())}_onWebRtcAutoConnect(){this._eventEmitter.dispatchEvent(new sa),this._showActionOrErrorOnDisconnect=!0}_onWebRtcSdp(){this._eventEmitter.dispatchEvent(new na)}_onStreamLoading(){this._eventEmitter.dispatchEvent(new ga)}_onDisconnect(A){this._webRtcController.getDisconnectMessageOverride()!=""&&this._webRtcController.getDisconnectMessageOverride()!==void 0&&this._webRtcController.getDisconnectMessageOverride()!=null&&(A=this._webRtcController.getDisconnectMessageOverride(),this._webRtcController.setDisconnectMessageOverride("")),this._eventEmitter.dispatchEvent(new la({eventString:A,showActionOrErrorOnDisconnect:this._showActionOrErrorOnDisconnect})),this._showActionOrErrorOnDisconnect==0&&(this._showActionOrErrorOnDisconnect=!0)}_onWebRtcConnecting(){this._eventEmitter.dispatchEvent(new ia)}_onWebRtcConnected(){this._eventEmitter.dispatchEvent(new oa)}_onWebRtcFailed(){this._eventEmitter.dispatchEvent(new aa)}_onVideoInitialized(){this._eventEmitter.dispatchEvent(new ha),this._videoStartTime=Date.now()}_onLatencyTestResult(A){this._eventEmitter.dispatchEvent(new Ua({latencyTimings:A}))}_onVideoStats(A){this._videoStartTime&&this._videoStartTime!==void 0||(this._videoStartTime=Date.now()),A.handleSessionStatistics(this._videoStartTime,this._inputController,this._webRtcController.videoAvgQp),this._eventEmitter.dispatchEvent(new Fa({aggregatedStats:A}))}_onVideoEncoderAvgQP(A){this._eventEmitter.dispatchEvent(new ra({avgQP:A}))}_onInitialSettings(A){var e;this._eventEmitter.dispatchEvent(new Ea({settings:A})),A.PixelStreamingSettings&&(this.allowConsoleCommands=(e=A.PixelStreamingSettings.AllowPixelStreamingCommands)!==null&&e!==void 0&&e,this.allowConsoleCommands===!1&&g.Info(g.GetStackTrace(),"-AllowPixelStreamingCommands=false, sending arbitrary console commands from browser to UE is disabled."));const t=this.config.useUrlParams,n=new URLSearchParams(window.location.search);A.EncoderSettings&&(this.config.setNumericSetting(b.MinQP,t&&n.has(b.MinQP)?Number.parseInt(n.get(b.MinQP)):A.EncoderSettings.MinQP),this.config.setNumericSetting(b.MaxQP,t&&n.has(b.MaxQP)?Number.parseInt(n.get(b.MaxQP)):A.EncoderSettings.MaxQP)),A.WebRTCSettings&&(this.config.setNumericSetting(b.WebRTCMinBitrate,t&&n.has(b.WebRTCMinBitrate)?Number.parseInt(n.get(b.WebRTCMinBitrate)):A.WebRTCSettings.MinBitrate/1e3),this.config.setNumericSetting(b.WebRTCMaxBitrate,t&&n.has(b.WebRTCMaxBitrate)?Number.parseInt(n.get(b.WebRTCMaxBitrate)):A.WebRTCSettings.MaxBitrate/1e3),this.config.setNumericSetting(b.WebRTCFPS,t&&n.has(b.WebRTCFPS)?Number.parseInt(n.get(b.WebRTCFPS)):A.WebRTCSettings.FPS))}_onQualityControlOwnership(A){this.config.setFlagEnabled(Q.IsQualityController,A)}_onPlayerCount(A){this._eventEmitter.dispatchEvent(new Sa({count:A}))}requestLatencyTest(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendLatencyTest(),!0)}requestShowFps(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendShowFps(),!0)}requestIframe(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendIframeRequest(),!0)}emitUIInteraction(A){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.emitUIInteraction(A),!0)}emitCommand(A){return!(!this._webRtcController.videoPlayer.isVideoReady()||!this.allowConsoleCommands&&"ConsoleCommand"in A||(this._webRtcController.emitCommand(A),0))}emitConsoleCommand(A){return!(!this.allowConsoleCommands||!this._webRtcController.videoPlayer.isVideoReady()||(this._webRtcController.emitConsoleCommand(A),0))}addResponseEventListener(A,e){this._webRtcController.responseController.addResponseEventListener(A,e)}removeResponseEventListener(A){this._webRtcController.responseController.removeResponseEventListener(A)}dispatchEvent(A){return this._eventEmitter.dispatchEvent(A)}addEventListener(A,e){this._eventEmitter.addEventListener(A,e)}removeEventListener(A,e){this._eventEmitter.removeEventListener(A,e)}toggleXR(){this.webXrController.xrClicked()}setSignallingUrlBuilder(A){this._webRtcController.signallingUrlBuilder=A}get webSocketController(){return this._webRtcController.webSocketController}get webXrController(){return this._webXrController}}H.Dz,H.g$,H.Lt,H.Q9,H.qf,H.hV,H.z$,H.J0;var Ya=H.De;H.$C,H.al,H._W,H.tz,H.Nu,H.zg,H.vp;var Ce=H.vU;H.wF,H.rv,H.Nh,H.ss,H.qW,H.QL,H.cf,H.eM;var $a=H.Yd;H.iM,H.qy,H.ce;var Za=H.sK;H.Ok,H.q5;var qa=H.g;H.xl,H.I,H.bx,H.dD,H.Ib,H.Az,H.Iw,H.qY,H.db,H.mR,H.Tn,H.rV,H.gh,H.Mi,H.j,H.YB,H.i5;var eu=H.x_;H.Am,H.eR,H.r8,H.u3,H.vd,H.iV,H.jZ,H.SW,H.ZH,H.Ni,H.lh,H.bq,H.$f,H.eu,H.Ax,H.Mc;const tu={Response:1},Ur={UIInteraction:50,MouseWheel:75};class ru extends c.HasOwner{constructor(e,t){super(e);p(this,"_processResponseFn",e=>this.esUeViewer.processResponse(e));p(this,"_inner");this._uri=t,this._inner=new WebSocket(this._uri),this.d(()=>{this._inner.close()}),this._innerInit()}get esUeViewer(){return this.owner}get uri(){return this._uri}get inner(){return this._inner}_innerInit(){this.inner.onmessage=e=>{if(this.isDestroyed())return;let t=new FileReader;t.onload=n=>{if(this.isDestroyed())return;let s=n.target.result,i=new Uint32Array(s),o=0;if(i[0]===tu.Response){o+=4;let a=i[o/4];o+=4;for(let l=0;l<a;l++){let d=i[o/4];o+=4;let h=new TextDecoder("utf-8").decode(s.slice(o,o+d));o+=d,this._processResponseFn(h)}}},t.readAsArrayBuffer(e.data)},this.inner.onopen=()=>{this.isDestroyed()||(console.warn("earthsdk message websocket server connected:",this.uri),console.log("%c[EarthSDK websocket open]","background: #a6ec99; color: black","open"),this.owner.dispatchEvent(new CustomEvent("esmsgwsopen",{detail:"websocket open"})))},this._inner.onclose=e=>{this.isDestroyed()||(console.log("%c[EarthSDK websocket close ]","background: red; color: black","error"),this.owner.dispatchEvent(new CustomEvent("error",{detail:"websocket close"})))},this._inner.onerror=e=>{this.isDestroyed()||(console.log("%c[EarthSDK websocket error ]","background: red; color: black","error"),this.owner.dispatchEvent(new CustomEvent("error",{detail:"websocket error"})))}}sendInputData(e){const t=this.inner;if(t.readyState!==WebSocket.OPEN)return;const s=new Uint8Array(e)[0];if(s>=Ur.UIInteraction&&s<=Ur.MouseWheel){const i=new ArrayBuffer(e.byteLength+4);return new DataView(i).setUint32(0,e.byteLength,!0),new Uint8Array(i,4).set(new Uint8Array(e)),t.send(new DataView(i)),!0}else return!1}emitDescriptorWithString(e,t){let n=new TextEncoder().encode(t),s=new DataView(new ArrayBuffer(3+n.length)),i=0;s.setUint8(i,e),i++,s.setUint16(i,n.length,!0),i+=2;for(let o=0;o<n.length;o++)s.setUint8(i,n[o]),i+=1;try{this.sendInputData(s.buffer)}catch(o){console.error(`data.buffer.size: ${s.buffer.byteLength} 独立通道 sendInputData error: ${o}`,o)}}destroyImpl(){this._inner&&this._inner.close()}}window.g_emitDescriptor_maxBytes=3e4;let nu=-1;$a.SetLoggerVerbosity(1);class su extends c.Destroyable{constructor(e,t){super();p(this,"_eventTarget",new EventTarget);p(this,"debug",!1);p(this,"uiInteractionCallbacks",new Map);p(this,"_pixelStream");p(this,"_esMsgWsWrapper");this._domOrDomId=e,this._options=t;const n=typeof this._domOrDomId=="string"?document.getElementById(this._domOrDomId):this._domOrDomId;if(!n)throw new Error(`ESUEViewer container${this._domOrDomId} error!`);console.log(`PSUEViewer init _options ${this._options}`);const{url:s,esmsgWsUri:i}=this._options;this._pixelStream=this._initPixelStream(n,s),this.d(()=>{this._pixelStream.disconnect()}),this._handerPixelStreamEvent(),this._esMsgWsWrapper=this._initEsMsgWsWrapper(i);const o=this;if(o.esMsgWsWrapper){const a=o.webRtcController.sendMessageController.dataChannelSender.sendData;o.webRtcController.sendMessageController.dataChannelSender.constructor.prototype.sendData=function(l){o.esMsgWsWrapper?o.esMsgWsWrapper.sendInputData(l):a.call(this,l)}}}get eventTarget(){return this._eventTarget}addEventListener(e,t,n){return this.eventTarget.addEventListener(e,t,n)}removeEventListener(e,t,n){return this.eventTarget.removeEventListener(e,t,n)}dispatchEvent(e){return this.eventTarget.dispatchEvent(e)}_initPixelStream(e,t){const n=new Ya({initialSettings:{AutoPlayVideo:!0,AutoConnect:!0,StartVideoMuted:!1,SuppressBrowserKeys:!1,[eu.SignallingServerUrl]:t}});return n.setFlagEnabled(Ce.BrowserSendOffer,!1),n.setFlagEnabled(Ce.HoveringMouseMode,!0),n.setFlagEnabled(Ce.MatchViewportResolution,!0),n.setNumericSetting(Za.MaxReconnectAttempts,0),new qa(n,{videoElementParent:e})}get pixelStream(){return this._pixelStream}_initEsMsgWsWrapper(e){return e?this.dv(new ru(this,e)):void 0}get esMsgWsWrapper(){return this._esMsgWsWrapper}get esWebSocketReady(){var e;return((e=this.esMsgWsWrapper)==null?void 0:e.inner.readyState)===1}_handerPixelStreamEvent(){this.pixelStream.addEventListener("videoInitialized",()=>{console.log("%c[EarthSDK webrtc videoInitialized]","background: #a6ec99; color: black","videoInitialized"),this.dispatchEvent(new CustomEvent("videoinited",{detail:"videoinited"}))}),this.pixelStream.addEventListener("webRtcFailed",()=>{this.isDestroyed()||(console.log("%c[EarthSDK webRtc webRtcFailed]","background: red; color: black","webRtcFailed"),this.dispatchEvent(new CustomEvent("error",{detail:"webRtcFailed"})),this.pixelStream.disconnect())}),this.pixelStream.addEventListener("webRtcDisconnected",()=>{this.isDestroyed()||(console.log("%c[EarthSDK webRtc webRtcDisconnected]","background: red; color: black","webRtcDisconnected"),this.dispatchEvent(new CustomEvent("error",{detail:"webRtcDisconnected"})),this.pixelStream.disconnect())}),this.pixelStream.addEventListener("webRtcConnected",()=>{this.isDestroyed()||(console.log("%c[EarthSDK webrtc webRtcConnected]","background: #a6ec99; color: black","webRtcConnected"),this.dispatchEvent(new CustomEvent("webRtcConnected",{detail:"webRtcConnected"})))}),this.pixelStream.addResponseEventListener("esueviewer",e=>{this.processResponse(e)})}resolveCallback(e){let t={};try{t=JSON.parse(e)}catch{return!1}let n=t.callid;if(typeof n!="string"||!this.uiInteractionCallbacks.has(n))return!1;let s=this.uiInteractionCallbacks.get(n);return typeof s!="function"?!1:(s(t),this.uiInteractionCallbacks.delete(n),!0)}processResponse(e){if(this.debug??!1)try{const t=JSON.parse(e);if(t.ers=t.ers&&t.ers.filter(n=>n.et!=="mouseMoveEvent"),!(t.ers&&t.ers.length>0||t.frs&&t.frs.length>0))return;console.group("%cUE => JS"," background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(t,void 0,"")}`," border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;"),console.groupEnd()}catch(t){console.error(`processResponse(${e}) error: ${t}`,t)}this.resolveCallback(e)||this.dispatchEvent(new CustomEvent("ueevent",{detail:e}))}emitUIInteraction(e,t){typeof t=="function"&&(e.callid=c.createGuid(),this.uiInteractionCallbacks.set(e.callid,t)),this.pixelStream.emitUIInteraction(e)}get webRtcController(){return this.pixelStream._webRtcController}emitUIInteractionForBigData(e,t){typeof t=="function"&&(e.callid=c.createGuid(),this.uiInteractionCallbacks.set(e.callid,t));const n=JSON.stringify(e),s=window.g_emitDescriptor_maxBytes,i=n.length,o=++nu;if(this.esMsgWsWrapper){if(i<s){this.esMsgWsWrapper.emitDescriptorWithString(Ur.UIInteraction,`${o}-0/1-`+n);return}const a=Math.ceil(i/s)|0;[...new Array(a).keys()].map(d=>n.slice(d*s,(d+1)*s)).forEach((d,h)=>{this.esMsgWsWrapper&&this.esMsgWsWrapper.emitDescriptorWithString(Ur.UIInteraction,`${o}-${h}/${a}-`+d)})}}emitCommand(e){this.pixelStream.emitCommand(e)}getVideoSize(){const e=this.webRtcController.videoPlayer.getVideoElement();return{width:e.videoWidth,height:e.videoHeight}}resizeUEVideo(e,t){let n={Resolution:{Width:e,Height:t}};console.log(`resizeUEVideo emitCommand ${e} ${t} begin`),this.emitCommand(n)}}class iu extends c.Destroyable{constructor(e,t,n){super();p(this,"_instance");p(this,"_event",this.dv(new c.Event));this._container=e,this._wsuri=t,this._esmsgWsUri=n,this._instance=this.dv(new su(this._container,{url:this._wsuri,esmsgWsUri:this._esmsgWsUri})),this.instanceInit()}get webSocketReady(){return this._instance.esWebSocketReady}get event(){return this._event}get debug(){return this._instance.debug}set debug(e){this._instance.debug=e}instanceInit(){if("addEventListener"in this._instance){["esmsgwsopen","error","videoinited","ueevent","webRtcConnected"].forEach(t=>{const n=s=>{this._event.emit(t,s.detail)};this._instance.addEventListener(t,n),this.dispose(()=>this._instance.removeEventListener(t,n))});return}this.dispose(this._instance.errorEvent.disposableOn(e=>{this._event.emit("error",e.detail)})),this.dispose(this._instance.webRtcConnectedEvent.disposableOn(e=>{this._event.emit("webRtcConnected",e.detail)})),this.dispose(this._instance.videoinitedEvent.disposableOn(e=>{this._event.emit("videoinited",e.detail)})),this.dispose(this._instance.ueevent.disposableOn(e=>{this._event.emit("ueevent",e.detail)}))}emitUIInteractionForBigData(e,t){return new Promise((n,s)=>{const i=(...o)=>{n(o),t&&t(...o)};try{this._instance.emitUIInteractionForBigData(e,i)}catch(o){console.warn(`emitUIInteraction发生错误:${o}`),s(o)}})}getVideoSize(){return this._instance.getVideoSize()}resize(e,t){this._instance.resizeUEVideo(e,t)}}class ou extends Oe{constructor(e,t,n,s){super();p(this,"_esueViewerWrapper");p(this,"_ueFuncResultWithIdsEvent",this.dv(new c.Event));p(this,"_ueFuncWithIdAndResultCallbacks",[]);p(this,"_waitingUeFuncIdAndResultCallbacks",new Map);p(this,"_waitingUeCalls",new Set);p(this,"_ueEvent",this.dv(new c.Event));p(this,"_errorEvent",this.dv(new c.Event));p(this,"_readyEvent",this.dv(new c.Event));p(this,"_esmsgwsopen",this.dv(c.react(!1)));p(this,"_videoinited",this.dv(c.react(!1)));p(this,"_webRtcConnected",this.dv(c.react(!1)));this._ueViewer=s,console.log("CSTMPSViewer init ! 以官方像素流 + 独立通信的模式启动!");const i=this._ueViewer;this._esueViewerWrapper=this.dv(new iu(e,t,n));const o=this._esueViewerWrapper;{const f=()=>o.debug=i.debug??!1;f(),this.d(i.debugChanged.don(f))}let a=!1;{const f=()=>{if(a)return;const B=o.webSocketReady;if(this.videoinited&&this.webRtcConnected&&B){console.log("%c[EarthSDK: esmsgWebSocket && videoinited && webRtcConnected]","background: #a6ec99; color: black");const w={eventType:"init",params:{}};o.emitUIInteractionForBigData(w),this._readyEvent.emit(),a=!0}};this.d(this.videoinitedChanged.don(()=>{f()})),this.d(this.webRtcConnectedChanged.don(()=>{f()})),this.d(this.esmsgwsopenChanged.don(()=>{f()}))}this.d(o.event.don((f,B)=>{if(f==="error")this._errorEvent.emit(B);else if(f==="ueevent"){const w=JSON.parse(B);if(w.t==="cr"){const v=w;if(v.frs&&this._ueFuncResultWithIdsEvent.emit(v.frs),v.ers)for(let m of v.ers)this._ueEvent.emit(m)}}else f==="webRtcConnected"?this.webRtcConnected=!0:f==="videoinited"?this.videoinited=!0:f==="esmsgwsopen"&&(this.esmsgwsopen=!0)}));{const f=this.dv(c.createAnimateFrame());let B,w;f.start(()=>{if(B!==e.offsetWidth||w!==e.offsetHeight){if(B=e.offsetWidth,w=e.offsetHeight,B===void 0||w===void 0||!Number.isFinite(B)||!Number.isFinite(w)||B<0||w<0){console.warn(`lastWidth === undefined || lastHeight === undefined || !Number.isFinite(lastWidth) || !Number.isFinite(lastHeight) || lastWidth < 0 || lastHeight < 0 ${B} ${w}`);return}o.resize(B,w),console.log(`resize: ${B} ${w}`)}})}this.d(this._ueFuncResultWithIdsEvent.don(f=>{for(const B of f){const w=this._waitingUeFuncIdAndResultCallbacks.get(B.fid);w&&(this._waitingUeFuncIdAndResultCallbacks.delete(B.fid),w.resultCallback(B.r))}}));let l=0;const d=f=>{const B={n:l++,tt:Date.now(),t:"c",fs:f};this._waitingUeCalls.add(B),i.debug&&(console.group("%cxe2 => ue"," background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(B,void 0,"")}`," border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;"),console.groupEnd()),this._esueViewerWrapper.emitUIInteractionForBigData(B,()=>{this._waitingUeCalls.delete(B)})},h=()=>{if(!a||this._ueFuncWithIdAndResultCallbacks.length===0)return;const f=this._ueFuncWithIdAndResultCallbacks.map(([B])=>B);for(const[B,w]of this._ueFuncWithIdAndResultCallbacks)this._waitingUeFuncIdAndResultCallbacks.set(B.fid,w);this._ueFuncWithIdAndResultCallbacks.length=0;{const B=window.g_emitDescriptor_maxBytes,w=f.map(I=>({f:I,s:JSON.stringify(I).length}));let v=w.length,m=0,F=0,E=[];do{do{const{f:I,s:y}=w[m];if(E.push(I),++m,F+y>B||E.length>=20)break}while(m<v);E.length>0&&(i.debug&&console.log(`传送${E.length}条消息...`),d([...E]),E.length=0,F=0)}while(m<v)}};this.dv(c.createInterval()).start(h,50),this.d(()=>console.log("UeCloudViewer正在销毁..."))}get esueViewerWrapper(){return this._esueViewerWrapper}get errorEvent(){return this._errorEvent}get readyEvent(){return this._readyEvent}get esmsgwsopen(){return this._esmsgwsopen.value}set esmsgwsopen(e){this._esmsgwsopen.value=e}get esmsgwsopenChanged(){return this._esmsgwsopen.changed}get videoinited(){return this._videoinited.value}set videoinited(e){this._videoinited.value=e}get videoinitedChanged(){return this._videoinited.changed}get webRtcConnected(){return this._webRtcConnected.value}set webRtcConnected(e){this._webRtcConnected.value=e}get webRtcConnectedChanged(){return this._webRtcConnected.changed}resize(e,t){this.esueViewerWrapper.resize(e,t)}callUeFunc(e){return new Promise(t=>{const s={fid:c.createGuid(),...e};this._ueFuncWithIdAndResultCallbacks.push([s,{timeStamp:Date.now(),ueFunc:e,resultCallback:t}])})}disposableOnUeEvent(e,t){(this._ueViewer.debug??!1)&&console.log(`disposableOnUeEvent from UeCloudViewer, type:${e}`);const n=c.createGuid();this.callUeFunc({f:"addEventListener",p:{et:e,eid:n}});const s=()=>{this.callUeFunc({f:"removeEventListener",p:{eid:n}})},i=this._ueEvent.don(o=>{o.et===e&&o.eid===n&&t(o)});return()=>{i(),s()}}}function au(r){let A="";const e=new Uint8Array(r),t=e.length;for(let n=0;n<t;n++)A+=String.fromCharCode(e[n]);return btoa(A)}const lu=r=>{const A={type:"input",inputdata:au(r)};return JSON.stringify(A)};function cu(r){return typeof r=="string"?document.getElementById(r):r}window.g_emitDescriptor_maxBytes=3e4;let du=-1;$a.SetLoggerVerbosity(1);class uu extends c.Destroyable{constructor(e,t){super();p(this,"debug",!1);p(this,"_error",this.dv(new c.Event));p(this,"_connected",this.dv(new c.Event));p(this,"_ueevent",this.dv(new c.Event));p(this,"_pixelStream");p(this,"uiInteractionCallbacks",new Map);this._container=e,this._option=t;const n=new Ya({initialSettings:{HoveringMouse:!0,AutoPlayVideo:!0,AutoConnect:!0,StartVideoMuted:!1,SuppressBrowserKeys:!1,ss:this._option.ws},useUrlParams:!0});n.setFlagEnabled(Ce.BrowserSendOffer,!1),n.setFlagEnabled(Ce.HoveringMouseMode,!0),n.setFlagEnabled(Ce.MatchViewportResolution,!0),n.setNumericSetting(Za.MaxReconnectAttempts,0),this._pixelStream=new qa(n,{videoElementParent:this.container}),this.d(()=>{this._pixelStream.disconnect()});{const s=this.pixelStream.webSocketController.webSocket,i=this._pixelStream._webRtcController.sendMessageController.dataChannelSender.sendData;this._pixelStream._webRtcController.sendMessageController.dataChannelSender.constructor.prototype.sendData=function(o){s?s.send(lu(o)):i.call(this,o)}}{const s=i=>{const o=this._pixelStream._webRtcController.mouseController;setTimeout(()=>{const a=o.coordinateConverter.normalizeAndQuantizeUnsigned(i.offsetX,i.offsetY),d=o.toStreamerMessagesProvider.toStreamerHandlers.get("MouseUp");d&&d([i.button,a.x,a.y]),i.preventDefault()})};this.container.addEventListener("dblclick",s),this.d(()=>{this.container.removeEventListener("dblclick",s)})}["error","close","open"].forEach(i=>{const o=()=>{this.isDestroyed()||(i==="open"?this.connected.emit("webSocketOpen"):i==="close"?this.error.emit("webSocketClose"):i==="error"&&this.error.emit("webSocketError"))};this.pixelStream.webSocketController.webSocket.addEventListener(i,o),this.d(()=>{this.pixelStream.webSocketController.webSocket.removeEventListener(i,o)})}),["videoInitialized","webRtcConnected","webRtcDisconnected","webRtcFailed"].forEach(i=>{const o=()=>{this.isDestroyed()||(i==="webRtcConnected"||i==="videoInitialized"?this.connected.emit(i):(i==="webRtcDisconnected"||i==="webRtcFailed")&&(this.error.emit(i),this.pixelStream.disconnect()))};this.pixelStream.addEventListener(i,o),this.d(()=>{this.pixelStream.removeEventListener(i,o)})}),this.pixelStream.addResponseEventListener("handle_responses",s=>{this.processResponse(s)}),this.d(()=>{this.pixelStream.removeResponseEventListener("handle_responses")})}get error(){return this._error}get connected(){return this._connected}get ueevent(){return this._ueevent}get container(){return cu(this._container)}get pixelStream(){return this._pixelStream}get webSocketReady(){return this.pixelStream.webSocketController.webSocket.readyState===1}processResponse(e){if(this.debug??!1)try{const t=JSON.parse(e);console.group("%cUE => JS"," background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(t,void 0,"")}`," border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;"),console.groupEnd()}catch(t){console.error(`processResponse(${e}) error: ${t}`,t)}this.resolveCallback(e)||this.ueevent.emit(e)}emitUIInteractionForBigData(e,t){typeof t=="function"&&(e.callid=c.createGuid(),this.uiInteractionCallbacks.set(e.callid,t));const n=JSON.stringify(e),s=window.g_emitDescriptor_maxBytes??3e4,i=n.length,o=++du;if(i<s){const d={type:"earthsdk",time:new Date().getTime(),params:`${o}-0/1-`+n};this.sendData(JSON.stringify(d));return}const a=Math.ceil(i/s)|0;[...new Array(a).keys()].map(d=>n.slice(d*s,(d+1)*s)).forEach((d,h)=>{const u={type:"earthsdk",time:new Date().getTime(),params:`${o}-${h}/${a}-`+d};this.sendData(JSON.stringify(u))})}sendData(e){this.pixelStream.webSocketController.webSocket.send(e)}resolveCallback(e){let t={};try{t=JSON.parse(e)}catch{return!1}let n=t.callid;if(typeof n!="string"||!this.uiInteractionCallbacks.has(n))return!1;let s=this.uiInteractionCallbacks.get(n);return typeof s!="function"?!1:(s(t),this.uiInteractionCallbacks.delete(n),!0)}getVideoSize(){const e=this._pixelStream._webRtcController.videoPlayer.getVideoElement();return{width:e.videoWidth,height:e.videoHeight}}emitCommand(e){this.pixelStream.emitCommand(e)}emitUIInteraction(){console.log("emitUIInteraction 像素流初始化"),this.pixelStream.emitUIInteraction("像素流初始化")}resizeUEVideo(e,t){const n={Resolution:{Width:e,Height:t}};console.log(`resizeUEVideo emitCommand ${e} ${t} begin`),this.emitCommand(n)}}class hu extends c.Destroyable{constructor(e,t,n){super();p(this,"_instance");p(this,"_event",this.dv(new c.Event));this._container=e,this._wsuri=t,this._esmsgWsUri=n,this._instance=this.dv(new uu(this._container,{ws:this._wsuri})),this.d(this._instance.connected.don(s=>{this._event.emit(s,s),console.log(`%c[EarthSDK] ${s}`,"background: #a6ec99; color: black")})),this.d(this._instance.error.don(s=>{this._event.emit("errorEvent",s),console.log(`%c[EarthSDK] ${s}`,"background: red; color: black")})),this.d(this._instance.ueevent.don(s=>{this._event.emit("ueevent",s)}))}get instance(){return this._instance}get event(){return this._event}get debug(){return this._instance.debug}set debug(e){this._instance.debug=e}emitUIInteractionForBigData(e,t){return new Promise((n,s)=>{const i=(...o)=>{n(o),t&&t(...o)};try{this._instance.emitUIInteractionForBigData(e,i)}catch(o){console.warn(`emitUIInteraction发生错误:${o}`),s(o)}})}getVideoSize(){return this._instance.getVideoSize()}resize(e,t){this._instance.resizeUEVideo(e,t)}}class gu extends Oe{constructor(e,t,n,s){super();p(this,"_videoInitialized",this.dv(c.react(!1)));p(this,"_webRtcConnected",this.dv(c.react(!1)));p(this,"_webSocketOpen",this.dv(c.react(!1)));p(this,"_ue5ViewerWrapper");p(this,"_ueFuncResultWithIdsEvent",this.dv(new c.Event));p(this,"_ueFuncWithIdAndResultCallbacks",[]);p(this,"_waitingUeFuncIdAndResultCallbacks",new Map);p(this,"_waitingUeCalls",new Set);p(this,"_ueEvent",this.dv(new c.Event));p(this,"_errorEvent",this.dv(new c.Event));p(this,"_readyEvent",this.dv(new c.Event));this._ueViewer=s,console.log("INNPSViewer init ! 以内置信令服务器模式启动!");const i=this._ueViewer,o=this.dv(new hu(e,t,n));this._ue5ViewerWrapper=o;{const u=()=>o.debug=i.debug??!1;u(),this.d(i.debugChanged.don(u))}{let u=!1;const f=this.dv(c.createNextAnimateFrameEvent(this._videoInitialized.changed,this._webRtcConnected.changed,this._webSocketOpen.changed));this.d(f.don(()=>{if(u)return;const B=this._ue5ViewerWrapper.instance.webSocketReady;if(this.videoInitialized&&this.webRtcConnected&&B){this._ue5ViewerWrapper.instance.emitUIInteraction(),this._readyEvent.emit(),u=!0,console.log("%c[EarthSDK videoInitialized && webRtcConnected && webSocketReady]","background: #a6ec99; color: black");const w={eventType:"init",params:{}};this._ue5ViewerWrapper.emitUIInteractionForBigData(w)}else console.warn("webSocketReady",B),u=!1}))}this.d(o.event.don((u,f)=>{if(u==="errorEvent")this._errorEvent.emit(f);else if(u==="videoInitialized")this._videoInitialized.value=!0;else if(u==="webRtcConnected")this._webRtcConnected.value=!0;else if(u==="webSocketOpen")this._webSocketOpen.value=!0;else if(u==="ueevent"){const B=JSON.parse(f);if(B.t==="cr"){const w=B;if(w.frs&&this._ueFuncResultWithIdsEvent.emit(w.frs),w.ers)for(let v of w.ers)this._ueEvent.emit(v)}}}));{const u=this.dv(c.createAnimateFrame());let f,B,w;u.start(()=>{if(f!==e.offsetWidth||B!==e.offsetHeight||w!==i.resolutionScale){if(f=e.offsetWidth,B=e.offsetHeight,f===void 0||B===void 0||!Number.isFinite(f)||!Number.isFinite(B)||f<0||B<0){console.warn(`lastWidth === undefined || lastHeight === undefined || !Number.isFinite(lastWidth) || !Number.isFinite(lastHeight) || lastWidth < 0 || lastHeight < 0 ${f} ${B}`);return}w=i.resolutionScale,o.resize(f/w,B/w)}})}this.d(this._ueFuncResultWithIdsEvent.don(u=>{for(const f of u){const B=this._waitingUeFuncIdAndResultCallbacks.get(f.fid);B&&(this._waitingUeFuncIdAndResultCallbacks.delete(f.fid),B.resultCallback(f.r))}}));let a=0;const l=u=>{const f={n:a++,tt:Date.now(),t:"c",fs:u};this._waitingUeCalls.add(f),i.debug&&(console.group("%cxe2 => ue"," background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(f,void 0,"")}`," border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;"),console.groupEnd()),this._ue5ViewerWrapper.emitUIInteractionForBigData(f,()=>{this._waitingUeCalls.delete(f)})},d=()=>{if(!this._ue5ViewerWrapper.instance.webSocketReady||this._ueFuncWithIdAndResultCallbacks.length===0)return;const f=this._ueFuncWithIdAndResultCallbacks.map(([B])=>B);for(const[B,w]of this._ueFuncWithIdAndResultCallbacks)this._waitingUeFuncIdAndResultCallbacks.set(B.fid,w);this._ueFuncWithIdAndResultCallbacks.length=0;{const B=window.g_emitDescriptor_maxBytes,w=f.map(I=>({f:I,s:JSON.stringify(I).length}));let v=w.length,m=0,F=0,E=[];do{do{const{f:I,s:y}=w[m];if(E.push(I),++m,F+y>B||E.length>=20)break}while(m<v);E.length>0&&(i.debug&&console.log(`传送${E.length}条消息...`),l([...E]),E.length=0,F=0)}while(m<v)}};this.dv(c.createInterval()).start(d,50),this.d(()=>console.log("UeCloudViewer正在销毁..."))}get videoInitialized(){return this._videoInitialized.value}get webRtcConnected(){return this._webRtcConnected.value}get webSocketOpen(){return this._webSocketOpen.value}get ue5ViewerWrapper(){return this._ue5ViewerWrapper}get errorEvent(){return this._errorEvent}get readyEvent(){return this._readyEvent}resize(e,t){this.ue5ViewerWrapper.resize(e,t)}callUeFunc(e){return new Promise(t=>{const s={fid:c.createGuid(),...e};this._ueFuncWithIdAndResultCallbacks.push([s,{timeStamp:Date.now(),ueFunc:e,resultCallback:t}])})}disposableOnUeEvent(e,t){const n=c.createGuid();this.callUeFunc({f:"addEventListener",p:{et:e,eid:n}});const s=()=>{this.callUeFunc({f:"removeEventListener",p:{eid:n}})},i=this._ueEvent.don(o=>{o.et===e&&o.eid===n&&t(o)});return()=>{i(),s()}}}class Bu extends c.Destroyable{constructor(e,t,n,s){super();p(this,"_onRuntimeInitialized",this.dv(new c.Event));p(this,"_vIframe",null);this._ueViewer=s;const i=this._ueViewer;{const o=document.createElement("iframe");this._vIframe=o,o.style.cssText="width: 100%; height: 100%; margin: 0; padding: 0; border: none; outline: none;",e.appendChild(o),this.d(()=>{o&&e.removeChild(o)});const a=c.ESSceneObject.getStrFromEnv(n+`/web/${t}.html`);o.src=a,o.onload=()=>{const l=o.contentWindow;if(!l){console.error("iframeWindow is null");return}console.log("iwindow.Module",l.Module),l.Module.onRuntimeInitialized=()=>{this._onRuntimeInitialized.emit(),i.setStatus("Created"),i.setStatusLog("创建成功"),l.Module.UE4_resizeCanvas(),l.console.log("创建成功__________________________________________")}}}}get onRuntimeInitialized(){return this._onRuntimeInitialized}get vIframe(){return this._vIframe}}const ja=typeof TextDecoder<"u"?new TextDecoder:void 0,fu=(r,A=0,e=NaN)=>{const t=A+e;let n=A;for(;r[n]&&!(n>=t);)++n;if(n-A>16&&r.buffer&&ja)return ja.decode(r.subarray(A,n));let s="";for(;A<n;){var i=r[A++];if(!(i&128)){s+=String.fromCharCode(i);continue}var o=r[A++]&63;if((i&224)==192){s+=String.fromCharCode((i&31)<<6|o);continue}var a=r[A++]&63;if((i&240)==224?i=(i&15)<<12|o<<6|a:((i&248)!=240&&console.warn("Invalid UTF-8 leading byte encountered when deserializing a UTF-8 string in wasm memory to a JS string!"),i=(i&7)<<18|o<<12|a<<6|r[A++]&63),i<65536)s+=String.fromCharCode(i);else{var l=i-65536;s+=String.fromCharCode(55296|l>>10,56320|l&1023)}}return s};class wu extends c.Destroyable{constructor(A,e,t){super();{const n=()=>{const a=Qn(e);e.setGlobalProperty(a)};n();const s=mr(),i=[];s.forEach(a=>{const l=e[a+"Changed"];i.push(l)});const o=this.dv(c.createNextAnimateFrameEvent(...i));this.d(o.don(n))}this.d(e.propChanged.don(n=>{if(n.objId==="")try{Object.keys(n.props).forEach(s=>{const i=n.props[s]===null?void 0:n.props[s];e[s]=i})}catch(s){console.error("ueViewer propChanged:"+s)}})),e.useCustomInteraction=!1,this.dv(new c.ViewerCustomInteraction(e,A)),this.dv(new c.ObjResettingWithEvent(e.statusUpdateIntervalChanged,n=>{if((e.statusUpdateInterval??.5)===0)return;const i=new c.Destroyable;return i.d(t.disposableOnUeEvent("statusUpdate",o=>{e.statusUpdateEvent.emit(o)})),i})),this.dv(new c.ObjResettingWithEvent(e.propChangedListeningChanged,()=>{if(!(e.propChangedListening??!0))return;const s=new c.Destroyable;return s.d(t.disposableOnUeEvent("propChanged",i=>{e.propChanged.emit(i)})),s})),this.dv(new c.ObjResettingWithEvent(e.objectEventListeningChanged,()=>{if(!(e.objectEventListening??!0))return;const s=new c.Destroyable;return s.d(t.disposableOnUeEvent("objectEvent",i=>{e.objectEvent.emit(i)})),s})),this.dv(new c.ObjResettingWithEvent(e.widgetEventListeningChanged,()=>{if(!(e.widgetEventListening??!0))return;const s=new c.Destroyable;return s.d(t.disposableOnUeEvent("widgetEvent",i=>{e.widgetEvent.emit(i)})),s})),this.dv(new c.ObjResettingWithEvent(e.speechRecognitionListeningChanged,()=>{if(!(e.speechRecognitionListening??!0))return;const s=new c.Destroyable;return s.d(t.disposableOnUeEvent("speechRecognition",i=>{e.speechRecognition.emit(i)})),s})),this.dv(new c.ObjResettingWithEvent(e.customMessageListeningChanged,()=>{if(!(e.customMessageListening??!0))return;const s=new c.Destroyable;return s.d(t.disposableOnUeEvent("customMessage",i=>{e.customMessage.emit(i)})),s})),this.dv(new c.ObjResettingWithEvent(e.editingEventListeningChanged,()=>{if(!(e.editingEventListening??!0))return;const s=new c.Destroyable;return s.d(t.disposableOnUeEvent("editingEvent",i=>{i.objectIDs=i.objectIDs.map(o=>{var a;return((a=c.ESSceneObject.getSceneObjById(o))==null?void 0:a.parentID)??o}),e.editingEvent.emit(i)})),s})),this.ad(t.disposableOnUeEvent("cameraChanged",()=>{e.cameraChanged.emit()}))}}let pu=-1;class Cu extends Oe{constructor(e,t,n="${earthsdk3-ue-h5-assets-script-dir}",s){super();p(this,"_ueFuncResultWithIdsEvent",this.dv(new c.Event));p(this,"_ueFuncWithIdAndResultCallbacks",[]);p(this,"_waitingUeFuncIdAndResultCallbacks",new Map);p(this,"_waitingUeCalls",new Map);p(this,"_ueEvent",this.dv(new c.Event));this._ueViewer=s;const i=this._ueViewer,o=this.dv(new Bu(e,t,n,i));let a=!1,l=null;this.d(o.onRuntimeInitialized.don(()=>{var f;if(a=!0,(f=o==null?void 0:o.vIframe)!=null&&f.contentWindow){l=o.vIframe.contentWindow;const B=o.vIframe.contentWindow.document.getElementById("mainarea");B?this.dv(new wu(B,i,this)):console.error("h5Container is null")}else{console.error("iframeWindow is null");return}l.UE_JSHTML5Communication?l.UE_JSHTML5Communication.UESendMessageToJS=B=>{try{const w=fu(l.HEAPU8,B),v=JSON.parse(w);if(i.debug&&(console.group("%cUE => JS"," background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(v,void 0,"")}`," border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;"),console.groupEnd()),v.t==="cr"){const m=v;if(m.frs&&this._ueFuncResultWithIdsEvent.emit(m.frs),m.ers)for(let F of m.ers)this._ueEvent.emit(F)}v.callid&&this._waitingUeCalls.has(v.callid)&&(this._waitingUeCalls.delete(v.callid),console.log(`waitingUeCalls.delete:${v.callid} end`))}catch(w){console.error("UE_JSHTML5Communication.UESendMessageToJS error:",w)}}:console.error("UE_JSHTML5Communication UESendMessageToJS not found")})),this.dispose(this._ueFuncResultWithIdsEvent.disposableOn(f=>{for(const B of f){const w=this._waitingUeFuncIdAndResultCallbacks.get(B.fid);w&&(this._waitingUeFuncIdAndResultCallbacks.delete(B.fid),w(B.r))}}));let d=0;const h=()=>{if(!a||!l||!l.UE_JSHTML5Communication||!l.UE_JSHTML5Communication.JSSendMessageToUE||this._ueFuncWithIdAndResultCallbacks.length===0)return;const f=this._ueFuncWithIdAndResultCallbacks.map(([y])=>y),B={n:d++,tt:Date.now(),t:"c",fs:f,callid:c.createGuid()};for(const[y,U]of this._ueFuncWithIdAndResultCallbacks)this._waitingUeFuncIdAndResultCallbacks.set(y.fid,U);this._ueFuncWithIdAndResultCallbacks.length=0,this._waitingUeCalls.set(B.callid,B),i.debug&&(console.group("%cxe2 => ue"," background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(B,void 0,"")}`," border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;"),console.groupEnd());const w=JSON.stringify(B),v=window.g_emitDescriptor_maxBytes??3e4,m=w.length,F=++pu;if(m<v){const y=`${F}-0/1-`+w;l.UE_JSHTML5Communication.JSSendMessageToUE(y);return}const E=Math.ceil(m/v)|0;[...new Array(E).keys()].map(y=>w.slice(y*v,(y+1)*v)).forEach((y,U)=>{const D=`${F}-${U}/${E}-`+y;l.UE_JSHTML5Communication.JSSendMessageToUE(D)})};this.dv(c.createInterval()).start(h,50)}processResponse(e){if(this._ueViewer.debug??!1)try{const t=JSON.parse(e);console.group("%cUE => JS"," background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(t,void 0,"")}`," border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;"),console.groupEnd()}catch(t){console.error(`processResponse(${e}) error: ${t}`,t)}}callUeFunc(e){return new Promise(t=>{const s={fid:c.createGuid(),...e};this._ueFuncWithIdAndResultCallbacks.push([s,t])})}disposableOnUeEvent(e,t){const n=c.createGuid();this.callUeFunc({f:"addEventListener",p:{et:e,eid:n}});const s=()=>{this.callUeFunc({f:"removeEventListener",p:{eid:n}})},i=this._ueEvent.disposableOn(o=>{o.et===e&&o.eid===n&&((this._ueViewer.debug??!1)&&console.log(`callback, type:${e} eid:${n} ueEvent:${JSON.stringify(o)}`),t(o))});return()=>{i(),s()}}}let vu=-1;class mu extends Oe{constructor(e,t){super();p(this,"_ueFuncResultWithIdsEvent",this.dv(new c.Event));p(this,"_ueFuncWithIdAndResultCallbacks",[]);p(this,"_waitingUeFuncIdAndResultCallbacks",new Map);p(this,"_waitingUeCalls",new Set);p(this,"_ueEvent",this.dv(new c.Event));this._ueViewer=t;const n=this._ueViewer;let s=!1;const i={eventType:"init",params:{}};window.ue.es.oncommand(JSON.stringify(i)),s=!0,window.calljs=(d,h)=>{if(n.debug&&console.log(`calljs eventName:${d} eventDetailStr:${h}`),d==="ueevent"||d==="commanFinish")try{const u=JSON.parse(h);if(u.t==="cr"){const f=u;if(f.frs&&this._ueFuncResultWithIdsEvent.emit(f.frs),f.ers)for(let B of f.ers)this._ueEvent.emit(B)}}catch(u){console.error(u)}},this.dispose(this._ueFuncResultWithIdsEvent.disposableOn(d=>{for(const h of d){const u=this._waitingUeFuncIdAndResultCallbacks.get(h.fid);u&&(this._waitingUeFuncIdAndResultCallbacks.delete(h.fid),u(h.r))}}));let o=0;const a=()=>{if(!s||this._ueFuncWithIdAndResultCallbacks.length===0)return;const d=this._ueFuncWithIdAndResultCallbacks.map(([f])=>f),h={n:o++,tt:Date.now(),t:"c",fs:d};for(const[f,B]of this._ueFuncWithIdAndResultCallbacks)this._waitingUeFuncIdAndResultCallbacks.set(f.fid,B);this._ueFuncWithIdAndResultCallbacks.length=0,this._waitingUeCalls.add(h),n.debug&&(console.group("%cxe2 => ue"," background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(h,void 0,"")}`," border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;"),console.groupEnd());const u=++vu;window.ue.es.oncommand(`${u}-0/1-`+JSON.stringify(h)).then(()=>{this._waitingUeCalls.delete(h)})};this.dv(c.createInterval()).start(a,50)}callUeFunc(e){return new Promise(t=>{const s={fid:c.createGuid(),...e};this._ueFuncWithIdAndResultCallbacks.push([s,t])})}disposableOnUeEvent(e,t){const n=c.createGuid();this.callUeFunc({f:"addEventListener",p:{et:e,eid:n}});const s=()=>{this.callUeFunc({f:"removeEventListener",p:{eid:n}})},i=this._ueEvent.disposableOn(o=>{o.et===e&&o.eid===n&&((this._ueViewer.debug??!1)&&console.log(`callback, type:${e} eid:${n} ueEvent:${JSON.stringify(o)}`),t(o))});return()=>{i(),s()}}}class Fu extends c.Destroyable{constructor(A,e){super();{const t=()=>{const o=Qn(A);A.setGlobalProperty(o)};t();const n=mr(),s=[];n.forEach(o=>{const a=A[o+"Changed"];s.push(a)});const i=this.dv(c.createNextAnimateFrameEvent(...s));this.d(i.don(t))}this.d(A.propChanged.don(t=>{if(t.objId==="")try{Object.keys(t.props).forEach(n=>{const s=t.props[n]===null?void 0:t.props[n];A[n]=s})}catch(n){console.error("ueViewer propChanged:"+n)}})),this.dv(new c.ObjResettingWithEvent(A.statusUpdateIntervalChanged,t=>{if((A.statusUpdateInterval??.5)===0)return;const s=new c.Destroyable;return s.d(e.disposableOnUeEvent("statusUpdate",i=>{A.statusUpdateEvent.emit(i)})),s})),this.dv(new c.ObjResettingWithEvent(A.propChangedListeningChanged,()=>{if(!(A.propChangedListening??!0))return;const n=new c.Destroyable;return n.d(e.disposableOnUeEvent("propChanged",s=>{A.propChanged.emit(s)})),n})),this.dv(new c.ObjResettingWithEvent(A.objectEventListeningChanged,()=>{if(!(A.objectEventListening??!0))return;const n=new c.Destroyable;return n.d(e.disposableOnUeEvent("objectEvent",s=>{A.objectEvent.emit(s)})),n})),this.dv(new c.ObjResettingWithEvent(A.widgetEventListeningChanged,()=>{if(!(A.widgetEventListening??!0))return;const n=new c.Destroyable;return n.d(e.disposableOnUeEvent("widgetEvent",s=>{A.widgetEvent.emit(s)})),n})),this.dv(new c.ObjResettingWithEvent(A.speechRecognitionListeningChanged,()=>{if(!(A.speechRecognitionListening??!0))return;const n=new c.Destroyable;return n.d(e.disposableOnUeEvent("speechRecognition",s=>{A.speechRecognition.emit(s)})),n})),this.dv(new c.ObjResettingWithEvent(A.customMessageListeningChanged,()=>{if(!(A.customMessageListening??!0))return;const n=new c.Destroyable;return n.d(e.disposableOnUeEvent("customMessage",s=>{A.customMessage.emit(s)})),n})),this.dv(new c.ObjResettingWithEvent(A.editingEventListeningChanged,()=>{if(!(A.editingEventListening??!0))return;const n=new c.Destroyable;return n.d(e.disposableOnUeEvent("editingEvent",s=>{s.objectIDs=s.objectIDs.map(i=>{var o;return((o=c.ESSceneObject.getSceneObjById(i))==null?void 0:o.parentID)??i}),A.editingEvent.emit(s)})),n})),this.ad(e.disposableOnUeEvent("cameraChanged",()=>{A.cameraChanged.emit()}))}}class Qu extends c.Destroyable{constructor(A,e,t){super();{const s=()=>{const l=Qn(e);e.setGlobalProperty(l)};s();const i=mr(),o=[];i.forEach(l=>{const d=e[l+"Changed"];o.push(d)});const a=this.dv(c.createNextAnimateFrameEvent(...o));this.d(a.don(s))}this.d(e.propChanged.don(s=>{if(s.objId==="")try{Object.keys(s.props).forEach(i=>{const o=s.props[i]===null?void 0:s.props[i];e[i]=o})}catch(i){console.error("ueViewer propChanged:"+i)}}));const n=document.createElement("div");n.style.width="100%",n.style.height="100%",n.style.position="absolute",n.style.overflow="hidden",n.style.top="0",n.style.left="0",n.style.zIndex="0",n.style.backgroundColor="rgba(255,0,0,0)",n.setAttribute("masker","大屏顶层div,用于模拟鼠标事件和控制UE鼠标事件是否生效"),A.appendChild(n),this.d(()=>{n&&A&&A.removeChild(n)});{const s=(l,d)=>{window.ue.esinput.setinterceptevent(d),l.preventDefault()},i=l=>{s(l,!1)},o=l=>{s(l,!0)},a=l=>{s(l,!1)};n.addEventListener("mouseenter",i),n.addEventListener("mouseleave",o),n.addEventListener("mousemove",a),this.d(()=>{n.removeEventListener("mouseenter",i),n.removeEventListener("mouseleave",o),n.removeEventListener("mousemove",a)})}e.useCustomInteraction=!1,this.dv(new c.ViewerCustomInteraction(e,n)),this.dv(new c.ObjResettingWithEvent(e.statusUpdateIntervalChanged,s=>{if((e.statusUpdateInterval??.5)===0)return;const o=new c.Destroyable;return o.d(t.disposableOnUeEvent("statusUpdate",a=>{e.statusUpdateEvent.emit(a)})),o})),this.dv(new c.ObjResettingWithEvent(e.propChangedListeningChanged,()=>{if(!(e.propChangedListening??!0))return;const i=new c.Destroyable;return i.d(t.disposableOnUeEvent("propChanged",o=>{e.propChanged.emit(o)})),i})),this.dv(new c.ObjResettingWithEvent(e.objectEventListeningChanged,()=>{if(!(e.objectEventListening??!0))return;const i=new c.Destroyable;return i.d(t.disposableOnUeEvent("objectEvent",o=>{e.objectEvent.emit(o)})),i})),this.dv(new c.ObjResettingWithEvent(e.widgetEventListeningChanged,()=>{if(!(e.widgetEventListening??!0))return;const i=new c.Destroyable;return i.d(t.disposableOnUeEvent("widgetEvent",o=>{e.widgetEvent.emit(o)})),i})),this.dv(new c.ObjResettingWithEvent(e.speechRecognitionListeningChanged,()=>{if(!(e.speechRecognitionListening??!0))return;const i=new c.Destroyable;return i.d(t.disposableOnUeEvent("speechRecognition",o=>{e.speechRecognition.emit(o)})),i})),this.dv(new c.ObjResettingWithEvent(e.customMessageListeningChanged,()=>{if(!(e.customMessageListening??!0))return;const i=new c.Destroyable;return i.d(t.disposableOnUeEvent("customMessage",o=>{e.customMessage.emit(o)})),i})),this.dv(new c.ObjResettingWithEvent(e.editingEventListeningChanged,()=>{if(!(e.editingEventListening??!0))return;const i=new c.Destroyable;return i.d(t.disposableOnUeEvent("editingEvent",o=>{o.objectIDs=o.objectIDs.map(a=>{var l;return((l=c.ESSceneObject.getSceneObjById(a))==null?void 0:l.parentID)??a}),e.editingEvent.emit(o)})),i})),this.ad(t.disposableOnUeEvent("cameraChanged",()=>{e.cameraChanged.emit()}))}}class Uu extends c.Destroyable{constructor(e,t,n){super();p(this,"_reconnectEvent",this.dv(new c.Event));const s=(h,u)=>h.hasOwnProperty(u);let i=0,o;this.d(()=>{o&&clearTimeout(o)});const l=new URLSearchParams(window.location.search).get("eswebview")==="true",d=()=>{if(window.ue.esinput){n.setStatus("Creating"),console.log("存在(window.ue && window.ue.es && window.ue.esinput 需要适配新版ESWebView 鼠标穿透), 开始创建UeFalseCloudViewer..."),n.setStatusLog("开始创建本地视口...");const h=this.dv(new mu(e,n));this.d(()=>n.viewer=void 0),n.viewer=h,n.setStatus("Created"),n.setStatusLog("本地视口创建成功!"),this.dv(new Qu(e,n,h))}else n.setStatus("Error"),n.setStatusLog("请升级 ESWebView !"),this.d(()=>n.viewer=void 0),n.viewer=void 0};if(window.ue&&window.ue.es)d();else if(l){const h=setInterval(()=>{window.ue&&window.ue.es&&(clearInterval(h),d())},200)}else if(s(t.options,"ws")||s(t.options,"uri")&&s(t.options,"app")){n.setStatus("Creating"),n.setStatusLog("开始创建云渲染视口...");let h;this.d(()=>{n.setStatus("Raw"),n.setStatusLog(""),e&&h&&e.removeChild(h)&&(h=void 0)});const u=this.dv(c.createProcessingFromAsyncFunc(async f=>{n.viewer&&!n.viewer.isDestroyed()&&n.viewer.destroy(),n.viewer=void 0,h&&e.removeChild(h)&&(h=void 0),h=document.createElement("div"),h.setAttribute("earthsdk3-ue","earthsdk3-ue-videoContainer"),h.style.cssText="position:relative; height: 100%;width:100%;",e.appendChild(h);let B,w,v;if(s(t.options,"ws")){const{ws:I,esmsg:y,uselnternalSignallingServer:U}=t.options;B=I,w=y,v=U??!1}if(s(t.options,"uri")&&s(t.options,"app")){const{offsetWidth:I,offsetHeight:y}=h;let{uri:U,app:D,token:R}=t.options;U.endsWith("/")||(U+="/");const M=R?`?essstoken=${R}`:"",O=`/${D}/${I??1920}/${y??1080}`+M;console.log(`请求信令服务器: ${U}instance${O}`);const oA=await f.promise(fetch(`${U}instance${O}`,{method:"GET"})),Y=await f.promise(oA.json());if(Y&&Y.status!=="ok"){n.setStatus("Error"),n.setStatusLog(`信令服务器请求失败 ${Y.status}`),this._reconnectEvent.emit(void 0);return}else{console.log(`信令服务器请求成功! ${JSON.stringify(Y,void 0," ")}`),await c.sleep(2e3);const{server:G,esmsg:q,instanceId:SA,useInternalSignallingServer:aA}=Y;if(!SA){n.setStatus("Error"),n.setStatusLog("检查信令服务器版本,返回数据错误! "),console.log("信令服务器返回数据错误!不包含instanceId!请升级到 ESSS V3.0+ 版本!"),this._reconnectEvent.emit(void 0);return}B=G,w=q,v=aA??!1,n.esssResponse=Y}}const m=this.dv(v?new gu(h,B,w,n):new ou(h,B,w,n));this.d(()=>n.viewer=void 0),this.d(m.errorEvent.don(I=>{const y=`[${I}]:像素流连接错误!`;n.setStatus("Error"),n.setStatusLog(y),this._reconnectEvent.emit(m)})),await f.promise(new Promise(I=>this.d(m.readyEvent.donce(I)))),n.setStatus("Created"),n.setStatusLog("云渲染视口创建成功!"),i=0,o&&clearTimeout(o),o=void 0;const{offsetWidth:F,offsetHeight:E}=h;m.resize(F*window.devicePixelRatio,E*window.devicePixelRatio),n.viewer=m,this.d(()=>n.viewer=void 0),this.dv(new Fu(n,m))}));u.start(),this.d(this._reconnectEvent.don(f=>{o===void 0&&(f&&!f.isDestroyed()&&f.destroy(),n.viewer&&!n.viewer.isDestroyed()&&n.viewer.destroy(),n.viewer=void 0,n.autoReconnect&&(n.setStatus("Reconnecting"),n.setStatusLog("正在尝试重新连接..."),i=i+5e3>3e4?3e4:i+5e3,console.warn(`间隔:${i/1e3}s,正在尝试重新连接...`),o=window.setTimeout(()=>{u.restart()},i)))})),this.d(u.errorEvent.don(f=>{n.setStatus("Error"),n.setStatusLog("云渲染视口创建失败!"),console.warn("云渲染视口创建失败!",f),this._reconnectEvent.emit(void 0)}))}else if(s(t.options,"project")){const h=t,u=h.options.project,f=h.options.baseUrl;n.setStatus("Creating"),n.setStatusLog("下载编译中...");const B=this.dv(new Cu(e,u,f,n));n.viewer=B,this.d(()=>n.viewer=void 0)}else n.setStatus("Error"),n.setStatusLog("视口创建失败!"),console.warn("视口创建失败: 参数错误!")}}const ne=class ne extends c.ESViewer{constructor(e){super(e);p(this,"_viewer",this.dv(c.react(void 0)));p(this,"_esssResponse");p(this,"_speechRecognition",this.dv(new c.Event));p(this,"_propChanged",this.dv(new c.Event));p(this,"_objectEvent",this.dv(new c.Event));p(this,"_widgetEvent",this.dv(new c.Event));p(this,"_customMessage",this.dv(new c.Event));p(this,"_statusUpdateEvent",this.dv(new c.Event));p(this,"_statusUpdateEventdon",(()=>{this.d(this.statusUpdateEvent.don(e=>{this._statusInfo.fps=e.FPS??0,this._statusInfo.length=e.length??0,this._statusInfo.position=e.position??[0,0,0],this._statusInfo.rotation=e.rotation??[0,0,0]}))})());if(e.type!=="ESUeViewer")throw new Error("option.type must be ESUeViewer");const t=e;this.d(this._viewer.changed.don(()=>{this.viewerChanged.emit(this.viewer)})),this.dv(new c.ObjResettingWithEvent(this.subContainerChanged,()=>{if(this.setStatus("Raw"),this.setStatusLog(""),!!this.subContainer)return new Uu(this.subContainer,t,this)}))}get defaultProps(){return ne.createDefaultProps()}set viewer(e){this._viewer.value=e}get viewer(){return this._viewer.value}get esssResponse(){return this._esssResponse}set esssResponse(e){this._esssResponse=e}get speechRecognition(){return this._speechRecognition}get propChanged(){return this._propChanged}get objectEvent(){return this._objectEvent}get widgetEvent(){return this._widgetEvent}get customMessage(){return this._customMessage}get statusUpdateEvent(){return this._statusUpdateEvent}async uePositionToLonLatAlt(e){if(!this.viewer){console.warn("UEPositionToLonLatAlt: viewer is undefined");return}return await Co(this.viewer,e)}async changeNavigationMode(e){if(!this.viewer){console.warn("ChangeNavigationMode: viewer is undefined");return}const t=await TA(this.viewer,e);return t&&!t.error&&(this._navigationMode.value=e.mode),t}async resetWithCurrentCamera(e){if(!this.viewer){console.warn("resetWithCurrentCamera: viewer is undefined");return}return await En(this.viewer,e)}async getAllSocketNamesByActorTag(e){if(!this.viewer){console.warn("GetAllSocketNamesByActorTag: viewer is undefined");return}return await vo(this.viewer,e)}async getBoundSphere(e){if(!this.viewer){console.warn("getBoundSphere: viewer is undefined");return}return await Fo(this.viewer,e)}async getBoundSphereWithChildren(e){if(!this.viewer){console.warn("getBoundSphereWithChildren: viewer is undefined");return}return await Qo(this.viewer,e)}async getStrokeMaterialParamInfo(e){if(!this.viewer){console.warn("GetStrokeMaterialParamInfo: viewer is undefined");return}return await Uo(this.viewer,e)}async getFillMaterialParamInfo(e){if(!this.viewer){console.warn("getFillMaterialParamInfo: viewer is undefined");return}return await Eo(this.viewer,e)}async getGlobalProperty(e){if(!this.viewer){console.warn("getGlobalProperty: viewer is undefined");return}return await yo(this.viewer,e)}async getObjectByInfo(e){if(!this.viewer){console.warn("GetObjectByInfo: viewer is undefined");return}return await So(this.viewer,e)}async defaultCameraFlyIn(e=1){if(!this.viewer){console.warn("DefaultCameraFlyIn: viewer is undefined");return}return await Zi(this.viewer,e)}async startVoice(){if(!this.viewer){console.warn("startVoice:viewer is undefined");return}return await qi(this.viewer)}async stopVoice(){if(!this.viewer){console.warn("startVoice:viewer is undefined");return}return await ji(this.viewer)}async mountPakFiles(e){if(!this.viewer){console.warn("mountPakFiles:viewer is undefined");return}return await Ao(this.viewer,e)}async generateMemReport(){if(!this.viewer){console.warn("generateMemReport:viewer is undefined");return}return await eo(this.viewer)}async quit(){if(!this.viewer){console.warn("Quit: viewer is undefined");return}return await co(this.viewer)}async bindActorByTag(e,t){if(!this.viewer){console.warn("BindActorByTag: viewer is undefined");return}return await Io(this.viewer,e,t)}async restoreOriginalScene(){if(!this.viewer){console.warn("RestoreOriginalScene: viewer is undefined");return}return await To(this.viewer)}async unBindActorByID(e){if(!this.viewer){console.warn("UnBindActorByID: viewer is undefined");return}return await Ho(this.viewer,e)}async unBindActorByTag(e){if(!this.viewer){console.warn("UnBindActorByTag: viewer is undefined");return}return await Lo(this.viewer,e)}async createActorByClass(e,t){if(!this.viewer){console.warn("CreateActorByClass: viewer is undefined");return}return await bo(this.viewer,e,t)}async bind3DTilesetByTag(e,t){if(!this.viewer){console.warn("Bind3DTilesetByTag: viewer is undefined");return}return await Mo(this.viewer,e,t)}async unBind3DTilesetByTag(e){if(!this.viewer){console.warn("UnBind3DTilesetByTag: viewer is undefined");return}return await Do(this.viewer,e)}async unBind3DTilesetById(e){if(!this.viewer){console.warn("UnBind3DTilesetById: viewer is undefined");return}return await Ro(this.viewer,e)}async bindImageryByTag(e,t,n){if(!this.viewer){console.warn("BindImageryByTag: viewer is undefined");return}return await xo(this.viewer,e,t,n)}async unBindImageryByTag(e,t){if(!this.viewer){console.warn("UnBindImageryByTag: viewer is undefined");return}return await Po(this.viewer,e,t)}async unBindImageryById(e){if(!this.viewer){console.warn("UnBindImageryById: viewer is undefined");return}return await Ko(this.viewer,e)}async getIdByComponentNameAndHitItem(e,t,n){if(!this.viewer){console.warn("GetIdByComponentNameAndHitItem: viewer is undefined");return}return await Go(this.viewer,e,t,n)}async getCameraRelativeHeight(e="ECC_Visibility"){if(!this.viewer){console.warn("GetCameraRelativeHeight: viewer is undefined");return}return await ko(this.viewer,e)}async saveStringToFile(e,t,n){if(!this.viewer){console.warn("SaveStringToFile: viewer is undefined");return}return await No(this.viewer,e,t,n)}async highlightActorByTag(e,t=!0){if(!this.viewer){console.warn("HighlightActorByTag: viewer is undefined");return}return await _o(this.viewer,e,t)}async sendCustomMessage(e){if(!this.viewer){console.warn("SendCustomMessage: viewer is undefined");return}return await Vo(this.viewer,e)}async getStatus(){if(!this.viewer){console.warn("GetStatus:viewer is undefined");return}return await Oo(this.viewer)}async getTilesetMaterialIDList(){if(!this.viewer){console.warn("GetTilesetMaterialIDList:viewer is undefined");return}return await zo(this.viewer)}async pick(e,t,n){if(!this.viewer)return;let s=e;if(e&&window.ue&&this.container){const[i,o]=e,{x:a,y:l}=this.container.getBoundingClientRect();s=[a+i,l+o]}return await uo(this.viewer,s,t,n)}async pickPosition(e){if(!this.viewer)return;let t=e;if(e&&window.ue&&this.container){const[n,s]=e,{x:i,y:o}=this.container.getBoundingClientRect();t=[i+n,o+s]}return await ho(this.viewer,t)}async quickPickPosition(e){return await this.pickPosition(e)}async getTerrainHeight(e){return await this.getHeightByLonLat(e[0],e[1])??void 0}async flyIn(e,t=[0,0,0],n=1,s="default"){if(!this.viewer)return;const i=await Ge(this.viewer,void 0,e,t,n,s);if(i)return i.endType===0&&console.warn(`flyTo:flyTo is end! endType:${i.endType}`),i.endType===1&&console.warn(`flyTo:飞行中断! endType:${i.endType}`),i}async flyTo(e,t,n="default"){if(!this.viewer)return;const s=await fe(this.viewer,void 0,void 0,e,t,n);if(s)return s.endType===0&&console.warn(`flyTo:flyTo is end! endType:${s.endType}`),s.endType===1&&console.warn(`flyTo:飞行中断! endType:${s.endType}`),s}flyToBoundingSphere(e,t,n=1){const s=[[e[0],e[1],0],[e[0],e[3],0],[e[2],e[3],0],[e[2],e[1],0]],i=c.getGeoBoundingSphereFromPositions(s);if(!i)return;const{center:o,radius:a}=i,l={distance:t??a,heading:0,pitch:-90,flyDuration:n,hDelta:0,pDelta:0};this.flyTo(l,o)}getCurrentCameraInfo(){const{position:e,rotation:t}=this._statusInfo;return{position:e,rotation:t}}transformFlyParam(e,t){}getLengthInPixel(){return this._statusInfo.length}async changeToWalk(e,t=4.2,n=1.6){if(!this.viewer)return;const s={mode:"Walk",position:e,jumpZVelocity:t,eyeHeight:n},i=await TA(this.viewer,s);return i&&!i.error&&(this._navigationMode.value=s.mode),i}async changeToMap(){if(!this.viewer)return;const e={mode:"Map"},t=await TA(this.viewer,e);return t&&!t.error&&(this._navigationMode.value=e.mode),t}async changeToRotateGlobe(e=38,t=1e7,n=60){if(!this.viewer)return;const s={mode:"RotateGlobe",latitude:e,height:t,cycleTime:n},i=await TA(this.viewer,s);return i&&!i.error&&(this._navigationMode.value=s.mode),i}async changeToLine(e,t=10,n=10,s=!0,i=10,o="auto"){if(!this.viewer)return;const a={mode:"Line",geoLineStringId:e,speed:t,heightOffset:n,loop:s,turnRateDPS:i,lineMode:o},l=await TA(this.viewer,a);return l&&!l.error&&(this._navigationMode.value=a.mode),l}async changeToUserDefined(e){if(!this.viewer)return;const t={mode:"UserDefined",userDefinedPawn:e},n=await TA(this.viewer,t);return n&&!n.error&&(this._navigationMode.value=t.mode),n}async changeToRotatePoint(e,t=5e4,n=60,s=0,i=-30){if(!this.viewer)return;const o={mode:"RotatePoint",position:e,distance:t,orbitPeriod:n,heading:s,pitch:i},a=await TA(this.viewer,o);return a&&!a.error&&(this._navigationMode.value=o.mode),a}async changeToFollow(e,t=0,n=0,s=-30,i=!0){if(!this.viewer)return;const o={mode:"Follow",objectId:e,distance:t,heading:n,pitch:s,relativeRotation:i},a=await TA(this.viewer,o);return a&&!a.error&&(this._navigationMode.value=o.mode),a}getFPS(){return this._statusInfo.fps}async getVersion(){const e=window.g_XE3CopyRights??{};if(!this.viewer)return e;const t=await mo(this.viewer);return e.esforue=t,e}async getHeightByLonLat(e,t,n="ECC_Visibility"){if(!this.viewer)return null;const s=await go(this.viewer,e,t,n);return s&&s.height!==void 0?s.height:null}async getHeightsByLonLats(e,t="ECC_Visibility"){return this.viewer?await Bo(this.viewer,e,t):void 0}async capture(e=64,t=64){return this.viewer?await fo(this.viewer,e,t):void 0}async partialCapture(e,t=[64,64]){if(!this.viewer){console.warn("partialCapture:viewer is undefined");return}return await wo(this.viewer,e,t)}async lonLatAltToScreenPosition(e){if(!this.viewer)return;const t=await po(this.viewer,e);return t&&[t.X,t.Y]}async setGlobalProperty(e){if(this.viewer)return await lo(this.viewer,e)}async startEditing(e,t,n){n=Object.assign({useKeyToSwitch:!0,callSource:"outer"},n);const s=e.components.main??e;if(!s||!this.viewer||t==null)return;const i=Array.isArray(t)?[...t]:[t];return s.editingID=`${n.callSource}_${c.createGuid()}`,await Wo(this.viewer,s.id,s.editingID,i,n.useKeyToSwitch)}async stopEditing(){if(this.viewer)return await Xo(this.viewer)}async moveObjects(e){if(!this.viewer)return;const t=[],n=c.createGuid();for(let s=0;s<e.length;s++){const i=e[s],o=i.components.main??i;o.editingID=n,o&&t.push(o.id)}if(t.length!==0)return await Jo(this.viewer,t,n)}};p(ne,"type",ne.register("ESUeViewer",ne)),p(ne,"defaults",{...Be});let LA=ne;(r=>{r.createDefaultProps=()=>({...c.ESViewer.createDefaultProps(),...Yi(),resolutionScale:1,autoReconnect:!1,propChangedListening:void 0,objectEventListening:void 0,widgetEventListening:void 0,speechRecognitionListening:void 0,customMessageListening:void 0})})(LA||(LA={})),c.extendClassProps(LA.prototype,LA.createDefaultProps);class qA extends c.EngineObject{constructor(A,e){super(A,e);const t=e.viewer;if(!t)return;const n=this.ad(c.react(!1));A.components.main||this.d(this.createdEvent.don(()=>{const s=this.constructor.propValFuncs,i=A.defaultProps,o=Object.keys(i).filter(f=>s[f]!==null);o.push(...this.constructor.forceUeUpdateProps);const a=A.constructor.defaults,l={val:{}},d=[];for(let f of o){const B=f+"Changed",w=A[B];d.push(w);const v=s[f];if(v===null)throw console.error("vf === null error"),new Error("vf === null error");const m=()=>{const F=A[f]??a[f]??A.constructor[`default${f.charAt(0).toUpperCase()+f.slice(1)}`];let E=v?v(F,this,e,A):F;if(E===void 0){console.warn(`UE自动更新的属性,不应该为undefined! 属性名:${f} 对象名:${A.name} 对象id: ${A.id}`);return}l.val[f]=E};m(),this.d(w.don(m))}const h=()=>{t.callUeFunc({f:"update",p:{id:A.id,...l.val}}),l.val={}},u=this.dv(c.createNextAnimateFrameEvent(...d));this.d(u.don(h)),this.d(n.changed.don(h)),this.d(A.flushEvent.don(()=>u.flush()))})),A.components.main||(this.d(()=>{n.value&&Un(t,A.id)}),t.callUeFunc({f:"create",p:{type:A.typeName,id:A.id}}).then(()=>{n.value=!0}).catch(s=>console.error(s)))}}p(qA,"propValFuncs",{ref:null,devTags:null,extras:null,execOnceFuncStr:null,updateFuncStr:null,toDestroyFuncStr:null}),p(qA,"forceUeUpdateProps",[]);class eA extends qA{constructor(A,e){super(A,e);const t=e.viewer;t&&(this.d(A.flyToEvent.don(n=>{fe(t,A.id,n)})),this.d(A.flyInEvent.don(n=>{var s,i;Ge(t,A.id,(s=A.flyInParam)==null?void 0:s.position,(i=A.flyInParam)==null?void 0:i.rotation,n??1)})),this.d(A.calcFlyToParamEvent.don(()=>{YA(t,A.id)})),this.d(A.calcFlyInParamEvent.don(()=>{const n=e.getCurrentCameraInfo();if(!n)return;const{position:s,rotation:i}=n;A.flyInParam={position:s,rotation:i,flyDuration:1}})),this.d(e.propChanged.don(n=>{n.objId===A.id&&Object.keys(n.props).forEach(s=>{const i=n.props[s]===null?void 0:n.props[s];A[s]=i})})))}}class P extends eA{constructor(A,e){super(A,e);const t=e.viewer;if(!t)return;const n=()=>{A.editing||t.callUeFunc({f:"update",p:{id:A.id,position:A.position,rotation:A.rotation}})},s=this.dv(c.createNextAnimateFrameEvent(A.positionChanged,A.rotationChanged,A.editingChanged));this.d(s.don(()=>{setTimeout(n,0)})),this.d(A.smoothMoveEvent.don((a,l)=>{Ve(t,A.id,a,l)})),this.d(A.smoothMoveWithRotationEvent.don((a,l,d)=>{ke(t,A.id,a,l,d)})),this.d(A.smoothMoveOnGroundEvent.don((a,l,d,h)=>{Ne(t,A.id,a,l,h,d)})),this.d(A.smoothMoveWithRotationOnGroundEvent.don((a,l,d,h,u)=>{_e(t,A.id,a,l,d,h,u)})),this.d(A.smoothMoveKeepPitchEvent.don(async(a,l)=>{const d=await t.callUeFunc({f:"SmoothMoveKeepPitch",p:{id:A.id,Destination:a,Time:l}});d.error&&console.error("SmoothMoveKeepPitch:",d.error)})),this.d(A.automaticLandingEvent.don(a=>{const l=[A.position[0],A.position[1]];e.getHeightByLonLat(A.position[0],A.position[1],"Visibility").then(d=>{d!==null&&(A.position=[...l,d],A.collision=a)})}));const i=async(a,l,d,h)=>{const{viewer:u}=a;if(!u){console.error("SmoothMoveRelatively: ueViewer.viewer is undefined");return}const f=await u.callUeFunc({f:"SmoothMoveRelatively",p:{id:l,RelativePosition:d,Time:h}});return f.error&&console.error("SmoothMoveRelatively:",f.error),f};this.d(A.smoothMoveRelativelyEvent.don((a,l)=>{i(e,A.id,a,l)}));const o=async(a,l,d,h,u)=>{const{viewer:f}=a;if(!f){console.error("SmoothMoveRelativelyWithRotation: ueViewer.viewer is undefined");return}const B=await f.callUeFunc({f:"SmoothMoveRelativelyWithRotation",p:{id:l,RelativePosition:d,NewRotation:h,Time:u}});return B.error&&console.error("SmoothMoveRelativelyWithRotation:",B.error),B};this.d(A.smoothMoveRelativelyWithRotationEvent.don((a,l,d)=>{o(e,A.id,a,l,d)}))}}class nA extends eA{constructor(A,e){super(A,e);const t=e.viewer;if(!t)return;const n=()=>{A.editing||t.callUeFunc({f:"update",p:{id:A.id,points:A.points}})},s=this.dv(c.createNextAnimateFrameEvent(A.pointsChanged,A.editingChanged));this.d(s.don(()=>{setTimeout(n,0)}))}}p(nA,"propValFuncs",{...eA.propValFuncs,pointStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})}),strokeStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})}),fillStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})})});class QA extends P{constructor(A,e){super(A,e),e.viewer&&this.d(e.widgetEvent.don(n=>{if(n.objId!==A.id)return;const{type:s,add:i}=n;A.widgetEvent.emit({type:s,add:i})}))}}class Pn extends P{constructor(A,e){super(A,e),e.viewer}}p(Pn,"propValFuncs",{...P.propValFuncs,pointStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})}),strokeStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})}),fillStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})})});class Er extends Pn{constructor(A,e){super(A,e),e.viewer}}const Al=r=>{switch(r){case 0:return"成功绑定";case 1:return"解绑之前的内容,成功绑定";case 2:return"没搜索到ActorTag,无法绑定";case 3:return"搜索到ActorTag但对应的Actor不是3dTileset,无法绑定";default:return"未知错误"}},gt=class gt extends c.EngineObject{constructor(e,t){super(e,t);p(this,"_styleColor",this.dv(c.react([])));p(this,"_styleVisable",this.dv(c.react([])));const n=t.viewer;if(!n){console.warn("UeES3DTileset: viewer is undefined!");return}let s,i;const o=async()=>{!s&&!i||await n.callUeFunc({f:"update",p:{id:e.id,url:e.url,show:e.show,collision:e.collision,allowPicking:e.allowPicking,flyToParam:e.flyToParam??c.ES3DTileset.defaultFlyToParam,flyInParam:e.flyInParam??c.ES3DTileset.defaultFlyInParam,highlightID:e.highlightID,highlightColor:e.highlightColor,highlight:e.highlight,materialMode:e.materialMode,maximumScreenSpaceError:e.maximumScreenSpaceError,colorMode:Reflect.has(e,"colorMode")?e.colorMode:void 0,offset:e.offset,rotation:e.rotation,cacheBytes:e.cacheBytes,colorBlendMode:e.colorBlendMode,materialOverrideMap:e.materialOverrideMap}})},a=this.dv(c.createNextAnimateFrameEvent(e.urlChanged,e.showChanged,e.flyToParamChanged,e.flyInParamChanged,e.collisionChanged,e.allowPickingChanged,e.highlightIDChanged,e.highlightColorChanged,e.highlightChanged,e.materialModeChanged,e.maximumScreenSpaceErrorChanged,e.offsetChanged,e.rotationChanged,e.cacheBytesChanged,e.colorBlendModeChanged,e.materialOverrideMapChanged));o(),this.d(a.don(o)),Reflect.has(e,"colorMode")&&this.d(e.colorModeChanged.don(()=>o()));const l=this.dv(c.react(void 0));{const h=this.dv(c.createNextAnimateFrameEvent(e.actorTagChanged,e.urlChanged)),u=()=>{e.actorTag?l.value={type:"ActorTag",actorTag:e.actorTag}:e.url?l.value={type:"CreatedUrl",url:e.url}:l.value=void 0,e.editing=!1};u(),this.d(h.don(u))}const d=async()=>{const{id:h}=e;if(s!==void 0){s=void 0;try{const u=await t.unBind3DTilesetById(h);if(!u)return;if(u.error!==""){console.warn(`UeES3DTileset UnBind3DTilesetById: ${u.error}`);return}}catch(u){console.warn(`UeES3DTileset UnBind3DTilesetById: ${u}`);return}}if(i!==void 0){i=void 0;try{const u=await n.callUeFunc({f:"destroy",p:{id:h}});if(!u)return;if(u.error!==""){console.warn(`UeES3DTileset Destroy: ${u.error}`);return}}catch(u){console.warn(`UeES3DTileset Destroy: ${u}`);return}}};this.d(()=>{d()});{const h=this.dv(c.createProcessingFromAsyncFunc(async f=>{if(l.value===void 0){await f.promise(d());return}if(l.value.type==="ActorTag"){const{actorTag:B}=l.value;if(s!==B&&await f.promise(d()),s!==void 0||B===void 0)return;try{s=B;const w=await f.promise(t.bind3DTilesetByTag(e.id,B));if(!w)return;if(w.error!==""){console.warn(`UeES3DTileset Bind3DTilesetByTag: ${w.error}`);return}if(w.re.type!==0)if(w.re.type===1)console.warn(`UeES3DTileset Bind3DTilesetByTag: ${Al(w.re.type)}`);else{console.warn(`UeES3DTileset Bind3DTilesetByTag: ${Al(w.re.type)}`);return}}catch(w){console.warn(`UeES3DTileset Bind3DTilesetByTag: ${w}`);return}}else if(l.value.type==="CreatedUrl"){const{url:B}=l.value;if(B!==i&&await d(),i!==void 0||B===void 0)return;try{i=B;const w=await f.promise(n.callUeFunc({f:"create",p:{type:e.typeName,id:e.id}}));if(!w)return;if(w.error!==""){console.warn(`UeES3DTileset create: ${w.error}`);return}}catch(w){console.warn(`UeES3DTileset create: ${w}`);return}}await f.promise(o())})),u=async()=>{h.restart()};u(),this.d(l.changed.don(u))}this.d(e.refreshTilesetEvent.don(()=>{$i(n,e.id)})),this.d(e.flyToEvent.don(async(h,u)=>{if(!s&&!i)return;const f=await fe(n,e.id,h);let B="over";f===void 0?B="error":f.endType===0?B="over":f.endType===1&&(B="cancelled"),e.flyOverEvent.emit(u,B,t)})),this.d(e.calcFlyToParamEvent.don(()=>{!s&&!i||YA(n,e.id)})),this.d(e.calcFlyInParamEvent.don(async()=>{if(!s&&!i||!t.actived)return;const h=await t.getCurrentCameraInfo();if(!h)return;const{position:u,rotation:f}=h;e.flyInParam={position:u,rotation:f,flyDuration:1}})),this.d(t.propChanged.don(h=>{!s&&!i||h.objId===e.id&&Object.keys(h.props).forEach(u=>{const f=h.props[u]===null?void 0:h.props[u];e[u]=f})})),this.d(t.objectEvent.don(h=>{!s&&!i||h.id!==e.id||h.type!=="3DTilesetReady"||e.tilesetReady.emit(h.p)}));{const h=async(w,v)=>{if(!s&&!i)return;const m=await n.callUeFunc({f:"SetFeatureColor",p:{id:e.id,featureName:w,json:v}});if(m&&m.error!==""){console.warn(`UeES3DTileset SetFeatureColor: ${m.error}`);return}},u=async(w,v)=>{if(!s&&!i)return;const m=await n.callUeFunc({f:"SetFeatureVisable",p:{id:e.id,featureName:w,json:v}});if(m&&m.error!==""){console.warn(`UeES3DTileset SetFeatureVisable: ${m.error}`);return}},f=async()=>{if(!s&&!i)return;const w=await n.callUeFunc({f:"ResetFeatureStyle",p:{id:e.id}});if(w&&w.error!==""){console.warn(`UeES3DTileset ResetFeatureStyle: ${w.error}`);return}},B=async w=>{if(!s&&!i)return;const v=await n.callUeFunc({f:"SetFeatureStyle",p:{id:e.id,json:w}});if(v&&v.error!==""){console.warn(`UeES3DTileset SetFeatureStyle: ${v.error}`);return}};this.d(e.setFeatureColorEvent.don((w,v)=>{const m=[...this.styleColor,...v];this.styleColor=[...m],h(w,m)})),this.d(e.setFeatureVisableEvent.don((w,v)=>{const m=[...this.styleVisable,...v];this.styleVisable=[...m],u(w,m)})),this.d(e.resetFeatureStyleEvent.don(()=>{f(),this.styleColor=[],this.styleVisable=[]})),this.d(e.setFeatureStyleEvent.don(w=>{B(w)}))}{const h=async()=>{if(!s&&!i){e._featureTableResultEvent.emit(void 0);return}try{const u=await n.callUeFunc({f:"GetFeatureTable",p:{id:e.id}});u.error!==""&&console.warn(`UeES3DTileset GetFeatureTable: ${u.error}`),e._featureTableResultEvent.emit(u.re.table)}catch(u){console.warn(`UeES3DTileset GetFeatureTable: ${u}`),e._featureTableResultEvent.emit(void 0)}};this.d(e.getFeatureTableEvent.don(()=>{h()}))}{const h=async()=>{if(!s&&!i){e.getMaterialNameListEvent.emit(void 0);return}try{const u=await n.callUeFunc({f:"GetMaterialNameList",p:{id:e.id}});u.error!==""&&console.warn(`UeES3DTileset GetMaterialNameList: ${u.error}`),e.getMaterialNameListEvent.emit(u.re.materialNameList)}catch(u){console.warn(`UeES3DTileset GetMaterialNameList: ${u}`),e.getMaterialNameListEvent.emit(void 0)}};this.ad(e.getMaterialNameListEvent.don(u=>{u=="start"&&h()}))}}get styleColor(){return this._styleColor.value}set styleColor(e){this._styleColor.value=e}get styleVisable(){return this._styleVisable.value}set styleVisable(e){this._styleVisable.value=e}};p(gt,"type",gt.register("ESUeViewer",c.ES3DTileset.type,gt));let yr=gt;const el=r=>{switch(r){case 0:return"成功绑定";case 1:return"解绑之前的内容,成功绑定";case 2:return"没搜索到ActorTag,无法绑定";case 3:return"搜索到ActorTag对应的Actor是地形,无法绑定";case 4:return"没搜索到ComponentTag,无法绑定";default:return"未知错误"}},Bt=class Bt extends c.EngineObject{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}let n,s;const i=this.dv(c.react(void 0)),o=this.ad(c.reactJson(""));{const h=()=>{if(typeof A.url=="string")o.value=c.ESSceneObject.context.getStrFromEnv(A.url);else{const u=A.url;u.url=c.ESSceneObject.context.getStrFromEnv(u.url),o.value=u}};h(),this.ad(A.urlChanged.don(h))}const a=async()=>{if(!n&&!s)return;let h=A.targetID??c.ESImageryLayer.defaults.targetID;if(h&&h!=""){const u=c.ESSceneObject.getSceneObject(h);h=u?(u.components.main??u).id:h}await t.callUeFunc({f:"update",p:{id:A.id,show:A.show??!0,rectangle:A.rectangle??[-180,-90,180,90],collision:A.collision??!0,allowPicking:A.allowPicking??!1,flyToParam:A.flyToParam??c.ESImageryLayer.defaultFlyToParam,flyInParam:A.flyInParam??c.ESImageryLayer.defaultFlyInParam,url:o.value??"",zIndex:A.zIndex??0,maximumLevel:A.maximumLevel??c.ESImageryLayer.defaults.maximumLevel,minimumLevel:A.minimumLevel??c.ESImageryLayer.defaults.minimumLevel,options:A.options??c.ESImageryLayer.defaults.options,targetID:h,opacity:A.opacity??c.ESImageryLayer.defaults.opacity,splitDirection:A.splitDirection??c.ESImageryLayer.defaults.splitDirection}})},l=this.dv(c.createNextAnimateFrameEvent(A.showChanged,o.changed,A.flyToParamChanged,A.flyInParamChanged,A.zIndexChanged,A.collisionChanged,A.allowPickingChanged,A.maximumLevelChanged,A.minimumLevelChanged,A.rectangleChanged,A.optionsChanged,A.targetIDChanged,A.opacityChanged,A.splitDirectionChanged));this.d(l.don(a));const d=async()=>{const{id:h}=A;if(n!==void 0){n=void 0;try{const u=await e.unBindImageryById(h);if(!u)return;if(u.error!==""){console.warn(`UeESImageryLayer UnImageryByID: ${u.error}`);return}}catch(u){console.warn(`UeESImageryLayer UnImageryByID promise: ${u}`);return}}if(s!==void 0){s=void 0;try{const u=await t.callUeFunc({f:"destroy",p:{id:h,test:"UeESImageryLayer"}});if(!u)return;if(u.error!==""){console.warn(`UeESImageryLayer Destroy: ${u.error}`);return}}catch(u){console.warn(`UeESImageryLayer Destroy promise: ${u}`);return}}};this.d(()=>{d()});{const h=this.dv(c.createProcessingFromAsyncFunc(async f=>{if(i.value===void 0){await f.promise(d());return}if(i.value.type==="ActorTag"){const{actorTag:B,componentTag:w}=i.value;if(n!==B&&await f.promise(d()),n!==void 0||B===void 0)return;try{n=B;const v=await f.promise(e.bindImageryByTag(A.id,B,w));if(!v)return;if(v.error!==""){console.warn(`ESImageryLayer BindImageryByTag: ${v.error}`);return}if(v.re.type!==0)if(v.re.type===1)console.warn(`ESImageryLayer BindImageryByTag: ${el(v.re.type)}`);else{console.warn(`ESImageryLayer BindImageryByTag: ${el(v.re.type)}`);return}}catch(v){console.warn(`ESImageryLayer BindImageryByTag promise: ${v}`);return}}else if(i.value.type==="CreatedUrl"){const{url:B}=i.value;if(B!==s&&await f.promise(d()),s!==void 0||B===void 0)return;try{s=B;const w=await f.promise(t.callUeFunc({f:"create",p:{type:"ESImageryLayer",id:A.id}}));if(!w)return;if(w.error!==""){console.warn(`ESImageryLayer create: ${w.error}`);return}}catch{console.warn("ESImageryLayer create: create promise error");return}}await f.promise(a())})),u=async()=>{h.restart()};u(),this.d(i.changed.don(u))}{const h=this.dv(c.createNextAnimateFrameEvent(A.actorTagChanged,o.changed,A.componentTagChanged)),u=()=>{A.actorTag&&A.componentTag?i.value={type:"ActorTag",actorTag:A.actorTag,componentTag:A.componentTag}:o.value?i.value={type:"CreatedUrl",url:o.value}:i.value=void 0};u(),this.d(h.don(u))}this.d(A.flyToEvent.don(async(h,u)=>{if(!n&&!s)return;const f=await fe(t,A.id,h);let B="over";f===void 0?B="error":f.endType===0?B="over":f.endType===1&&(B="cancelled"),A.flyOverEvent.emit(u,B,e)})),this.d(A.flyInEvent.don(async(h,u)=>{var w,v;if(!n&&!s)return;const f=await Ge(t,A.id,(w=A.flyInParam)==null?void 0:w.position,(v=A.flyInParam)==null?void 0:v.rotation,h??1);let B="over";f===void 0?B="error":f.endType===0?B="over":f.endType===1&&(B="cancelled"),A.flyOverEvent.emit(u,B,e)})),this.d(A.calcFlyToParamEvent.don(()=>{!n&&!s||YA(t,A.id)})),this.d(A.calcFlyInParamEvent.don(async()=>{if(!e.actived)return;const h=await e.getCurrentCameraInfo();if(!h)return;const{position:u,rotation:f}=h;A.flyInParam={position:u,rotation:f,flyDuration:1}})),this.d(e.propChanged.don(h=>{!n&&!s||h.objId===A.id&&Object.keys(h.props).forEach(u=>{const f=h.props[u]===null?void 0:h.props[u];A[u]=f})}))}};p(Bt,"type",Bt.register("ESUeViewer",c.ESImageryLayer.type,Bt));let Kn=Bt;const se=class se extends eA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(se,"type",se.register("ESUeViewer",c.ESTerrainLayer.type,se)),p(se,"forceUeUpdateProps",[...eA.forceUeUpdateProps,"url"]),p(se,"propValFuncs",{...eA.propValFuncs,url:A=>typeof A=="string"?c.ESSceneObject.context.getStrFromEnv(A):(A.url=c.ESSceneObject.context.getStrFromEnv(A.url),A),czmMaxzoom:null,czmMinzoom:null});let Gn=se;const ft=class ft extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(ft,"type",ft.register("ESUeViewer",c.ESAlarm.type,ft));let kn=ft;const wt=class wt extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(wt,"type",wt.register("ESUeViewer",c.ESApertureEffect.type,wt));let Nn=wt;const pt=class pt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(pt,"type",pt.register("ESUeViewer",c.ESGeoPolygon.type,pt));let dA=pt;const Ct=class Ct extends dA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=()=>{let i=c.ESAreaMeasurement.defaults.fillStyle;try{i={...A.fillStyle??c.ESAreaMeasurement.defaults.fillStyle}}catch(o){console.error("ESAreaMeasurement fillStyle 属性类型错误!",o),i={...c.ESAreaMeasurement.defaults.fillStyle}}i.materialParams=JSON.stringify(i.materialParams),t.callUeFunc({f:"update",p:{id:A.id,stroked:A.stroked??c.ESAreaMeasurement.defaults.stroked,fillStyle:i,filled:A.filled??c.ESAreaMeasurement.defaults.filled}}),console.log(i)},s=this.dv(c.createNextAnimateFrameEvent(A.fillStyleChanged,A.strokedChanged,A.filledChanged));this.d(s.don(n)),this.d(A.createdEvent.don(n))}};p(Ct,"type",Ct.register("ESUeViewer",c.ESAreaMeasurement.type,Ct));let _n=Ct;const vt=class vt extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(vt,"type",vt.register("ESUeViewer",c.ESBlastParticleSystem.type,vt));let Vn=vt;const be=class be extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is underfined!");return}}};p(be,"type",be.register("ESUeViewer",c.ESBoxClipping.type,be)),p(be,"propValFuncs",{...P.propValFuncs,targetID:A=>{if(!A)return"";const e=c.ESSceneObject.getSceneObject(A);return e?(e.components.main??e).id:A}});let On=be;const mt=class mt extends P{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.dispose(A.flyInEvent.don((n,s,i="default")=>{const{id:o,duration:a,position:l,rotation:d}=A;Ge(t,o,l,d,a??n,i)})),this.dispose(A.resetWithCurrentCameraEvent.don(()=>{En(t,A.id)})),this.dispose(A.captureEvent.don((n,s)=>{e.capture(n,s).then(o=>{o&&(A.thumbnail=o)})}))}};p(mt,"type",mt.register("ESUeViewer",c.ESCameraView.type,mt));let Wn=mt;const Ft=class Ft extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Ft,"type",Ft.register("ESUeViewer",c.ESCameraVisibleRange.type,Ft));let Xn=Ft;const Qt=class Qt extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Qt,"type",Qt.register("ESUeViewer",c.ESCar.type,Qt));let Jn=Qt;const Ut=class Ut extends nA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=()=>{let i=c.ESClassification.defaults.fillStyle;try{i={...A.fillStyle??c.ESClassification.defaults.fillStyle}}catch(o){console.error("ESClassification fillStyle 属性类型错误!",o),i={...c.ESClassification.defaults.fillStyle}}i.materialParams=JSON.stringify(i.materialParams),t.callUeFunc({f:"update",p:{id:A.id,filled:A.filled??c.ESClassification.defaults.filled,fillStyle:i}})},s=this.dv(c.createNextAnimateFrameEvent(A.fillStyleChanged,A.filledChanged));this.d(s.don(n)),this.d(A.createdEvent.don(n))}};p(Ut,"type",Ut.register("ESUeViewer",c.ESClassification.type,Ut));let zn=Ut;const Me=class Me extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is underfined!");return}}};p(Me,"type",Me.register("ESUeViewer",c.ESClippingPlane.type,Me)),p(Me,"propValFuncs",{...P.propValFuncs,targetID:A=>{if(!A)return"";const e=c.ESSceneObject.getSceneObject(A);return e?(e.components.main??e).id:A}});let Yn=Me;const Et=class Et extends P{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=this.ad(c.reactJson(""));{const o=()=>{if(typeof A.url=="string")n.value=c.ESSceneObject.context.getStrFromEnv(A.url??c.ESDataMesh.defaults.url);else{const a=A.url;a.url=c.ESSceneObject.context.getStrFromEnv(a.url??c.ESDataMesh.defaults.url),n.value=a}};o(),this.ad(A.urlChanged.don(o))}const s=()=>{const o=A.colorStops??c.ESDataMesh.defaults.colorStops;t.callUeFunc({f:"update",p:{id:A.id,url:n.value??c.ESDataMesh.defaults.url,currentTime:A.currentTime??c.ESDataMesh.defaults.currentTime,minPropValue:A.minPropValue??c.ESDataMesh.defaults.minPropValue,maxPropValue:A.maxPropValue??c.ESDataMesh.defaults.maxPropValue,colorStops:JSON.stringify(o)}})},i=this.dv(c.createNextAnimateFrameEvent(n.changed,A.currentTimeChanged,A.minPropValueChanged,A.maxPropValueChanged,A.colorStopsChanged));this.d(i.don(s)),this.d(A.createdEvent.don(s))}};p(Et,"type",Et.register("ESUeViewer",c.ESDataMesh.type,Et));let $n=Et;const yt=class yt extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(yt,"type",yt.register("ESUeViewer",c.ESDatasmithRuntimeModel.type,yt));let Zn=yt;const St=class St extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(St,"type",St.register("ESUeViewer",c.ESDirectionMeasurement.type,St));let qn=St;const It=class It extends nA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=()=>{let i;try{i={...A.strokeStyle??c.ESDistanceMeasurement.defaults.strokeStyle}}catch(o){console.error("ESDistanceMeasurement strokeStyle 属性类型错误!",o),i={...c.ESDistanceMeasurement.defaults.strokeStyle}}t.callUeFunc({f:"update",p:{id:A.id,strokeStyle:i}})},s=this.dv(c.createNextAnimateFrameEvent(A.strokeStyleChanged));this.d(s.don(n)),this.d(A.createdEvent.don(n))}};p(It,"type",It.register("ESUeViewer",c.ESDistanceMeasurement.type,It));let jn=It;const Tt=class Tt extends Er{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Tt,"type",Tt.register("ESUeViewer",c.ESLocalPolygon.type,Tt));let Sr=Tt;const Ht=class Ht extends Sr{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Ht,"type",Ht.register("ESUeViewer",c.ESDynamicWater.type,Ht));let As=Ht;const Lt=class Lt extends eA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}this.d(e.widgetEvent.don(n=>{if(n.objId!==A.id)return;const{type:s,properties:i}=n;A.widgetEvent.emit({type:s,properties:i})}))}};p(Lt,"type",Lt.register("ESUeViewer",c.ESEntityCluster.type,Lt));let es=Lt;const De=class De extends dA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(De,"type",De.register("ESUeViewer",c.ESExcavate.type,De)),p(De,"propValFuncs",{...dA.propValFuncs,targetID:A=>{if(!A)return"";const e=c.ESSceneObject.getSceneObject(A);return e?(e.components.main??e).id:A}});let ts=De;const bt=class bt extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(bt,"type",bt.register("ESUeViewer",c.ESFireParticleSystem.type,bt));let rs=bt;const Mt=class Mt extends eA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=this.ad(c.reactJson(""));{const o=()=>{if(typeof A.url=="string")n.value=c.ESSceneObject.context.getStrFromEnv(A.url);else{const a=A.url;a.url=c.ESSceneObject.context.getStrFromEnv(a.url),n.value=a}};o(),this.ad(A.urlChanged.don(o))}const s=()=>{t.callUeFunc({f:"update",p:{id:A.id,url:n.value??c.ESForestTileset.defaults.url,treeTypes:A.treeTypes??c.ESForestTileset.defaults.treeTypes,xiaoBanWidget:A.xiaoBanWidget??c.ESForestTileset.defaults.xiaoBanWidget,youShiSZ:A.youShiSZ??c.ESForestTileset.defaults.youShiSZ,diLei:A.diLei??c.ESForestTileset.defaults.diLei,senLinLB:A.senLinLB??c.ESForestTileset.defaults.senLinLB,labelMaterial:A.labelMaterial??c.ESForestTileset.defaults.labelMaterial,heightOffset:A.heightOffset??c.ESForestTileset.defaults.heightOffset}})},i=this.dv(c.createNextAnimateFrameEvent(n.changed,A.treeTypesChanged,A.xiaoBanWidgetChanged,A.youShiSZChanged,A.diLeiChanged,A.senLinLBChanged,A.labelMaterialChanged,A.heightOffsetChanged));this.d(i.don(s)),this.d(A.createdEvent.don(s))}};p(Mt,"type",Mt.register("ESUeViewer",c.ESForestTileset.type,Mt));let ns=Mt;/*!
|
|
91
|
+
`}}class Xa{static deepCopyGamepad(A){return JSON.parse(JSON.stringify({buttons:A.buttons.map(e=>JSON.parse(JSON.stringify({pressed:e.pressed,touched:e.touched}))),axes:A.axes}))}}class qd{constructor(A){this.toStreamerMessagesProvider=A,this.controllers=[]}updateStatus(A,e,t){if(A.gamepad){const n=e.getPose(A.gripSpace,t);if(!n)return;let s=0;A.profiles.includes("htc-vive")?s=1:A.profiles.includes("oculus-touch")&&(s=2),this.toStreamerMessagesProvider.toStreamerHandlers.get("XRSystem")([s]);let i=2;switch(A.handedness){case"left":i=0;break;case"right":i=1}const o=n.transform.matrix,a=[];for(let u=0;u<16;u++)a[u]=new Float32Array([o[u]])[0];this.toStreamerMessagesProvider.toStreamerHandlers.get("XRControllerTransform")([a[0],a[4],a[8],a[12],a[1],a[5],a[9],a[13],a[2],a[6],a[10],a[14],a[3],a[7],a[11],a[15],i]),this.controllers[i]===void 0&&(this.controllers[i]={prevState:void 0,currentState:void 0,id:void 0},this.controllers[i].prevState=Xa.deepCopyGamepad(A.gamepad)),this.controllers[i].currentState=Xa.deepCopyGamepad(A.gamepad);const l=this.controllers[i],d=l.currentState,h=l.prevState;for(let u=0;u<d.buttons.length;u++){const f=d.buttons[u],B=h.buttons[u];f.pressed?this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonPressed")([i,u,B.pressed?1:0]):!f.pressed&&B.pressed&&this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonReleased")([i,u,0]),f.touched&&!f.pressed?this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonPressed")([i,3,B.touched?1:0]):!f.touched&&B.touched&&this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonReleased")([i,3,0])}for(let u=0;u<d.axes.length;u++)this.toStreamerMessagesProvider.toStreamerHandlers.get("XRAnalog")([i,u,d.axes[u]]);this.controllers[i].prevState=d}}}class Ja{constructor(A){this.xrSession=null,this.webRtcController=A,this.xrControllers=[],this.xrGamepadController=new qd(this.webRtcController.streamMessageController),this.onSessionEnded=new EventTarget,this.onSessionStarted=new EventTarget,this.onFrame=new EventTarget}xrClicked(){this.xrSession?this.xrSession.end():navigator.xr.requestSession("immersive-vr").then(A=>{this.onXrSessionStarted(A)})}onXrSessionEnded(){g.Log(g.GetStackTrace(),"XR Session ended"),this.xrSession=null,this.onSessionEnded.dispatchEvent(new Event("xrSessionEnded"))}onXrSessionStarted(A){g.Log(g.GetStackTrace(),"XR Session started"),this.xrSession=A,this.xrSession.addEventListener("end",()=>{this.onXrSessionEnded()});const e=document.createElement("canvas");this.gl=e.getContext("webgl2",{xrCompatible:!0}),this.xrSession.updateRenderState({baseLayer:new XRWebGLLayer(this.xrSession,this.gl)});const t=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(t,Wa.vertexShader()),this.gl.compileShader(t);const n=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(n,Wa.fragmentShader()),this.gl.compileShader(n);const s=this.gl.createProgram();this.gl.attachShader(s,t),this.gl.attachShader(s,n),this.gl.linkProgram(s),this.gl.useProgram(s),this.positionLocation=this.gl.getAttribLocation(s,"a_position"),this.texcoordLocation=this.gl.getAttribLocation(s,"a_texCoord"),this.positionBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionBuffer),this.gl.enableVertexAttribArray(this.positionLocation);const i=this.gl.createTexture();this.gl.bindTexture(this.gl.TEXTURE_2D,i),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.NEAREST),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.NEAREST),this.texcoordBuffer=this.gl.createBuffer(),this.resolutionLocation=this.gl.getUniformLocation(s,"u_resolution"),this.offsetLocation=this.gl.getUniformLocation(s,"u_offset"),A.requestReferenceSpace("local").then(o=>{this.xrRefSpace=o,this.xrSession.requestAnimationFrame((a,l)=>this.onXrFrame(a,l))}),this.onSessionStarted.dispatchEvent(new Event("xrSessionStarted"))}onXrFrame(A,e){const t=e.getViewerPose(this.xrRefSpace);if(t){const n=t.transform.matrix,s=[];for(let o=0;o<16;o++)s[o]=new Float32Array([n[o]])[0];this.webRtcController.streamMessageController.toStreamerHandlers.get("XRHMDTransform")([s[0],s[4],s[8],s[12],s[1],s[5],s[9],s[13],s[2],s[6],s[10],s[14],s[3],s[7],s[11],s[15]]);const i=this.xrSession.renderState.baseLayer;this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,i.framebuffer),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.webRtcController.videoPlayer.getVideoElement()),this.render(this.webRtcController.videoPlayer.getVideoElement())}this.webRtcController.config.isFlagEnabled(Q.XRControllerInput)&&this.xrSession.inputSources.forEach((n,s,i)=>{this.xrGamepadController.updateStatus(n,e,this.xrRefSpace)},this),this.xrSession.requestAnimationFrame((n,s)=>this.onXrFrame(n,s)),this.onFrame.dispatchEvent(new Ea({time:A,frame:e}))}render(A){if(!this.gl)return;const e=this.xrSession.renderState.baseLayer;let t,n,s,i,o;this.gl.viewport(0,0,e.framebufferWidth,e.framebufferHeight),this.gl.uniform4f(this.offsetLocation,1,1,0,0),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,A.videoWidth,0,0,A.videoHeight,0,A.videoHeight,A.videoWidth,0,A.videoWidth,A.videoHeight]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texcoordBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionBuffer),t=2,n=this.gl.FLOAT,s=!1,i=0,o=0,this.gl.vertexAttribPointer(this.positionLocation,t,n,s,i,o),this.gl.enableVertexAttribArray(this.texcoordLocation),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texcoordBuffer),t=2,n=this.gl.FLOAT,s=!1,i=0,o=0,this.gl.vertexAttribPointer(this.texcoordLocation,t,n,s,i,o),this.gl.uniform2f(this.resolutionLocation,A.videoWidth,A.videoHeight);const a=this.gl.TRIANGLES;o=0,this.gl.drawArrays(a,o,6)}static isSessionSupported(A){return navigator.xr?navigator.xr.isSessionSupported(A):new Promise(()=>!1)}}class jd{constructor(A){this.editTextButton=null,this.hiddenInput=null,"ontouchstart"in document.documentElement&&this.createOnScreenKeyboardHelpers(A)}unquantizeAndDenormalizeUnsigned(A,e){return null}createOnScreenKeyboardHelpers(A){this.hiddenInput||(this.hiddenInput=document.createElement("input"),this.hiddenInput.id="hiddenInput",this.hiddenInput.maxLength=0,A.appendChild(this.hiddenInput)),this.editTextButton||(this.editTextButton=document.createElement("button"),this.editTextButton.id="editTextButton",this.editTextButton.innerHTML="edit text",A.appendChild(this.editTextButton),this.editTextButton.classList.add("hiddenState"),this.editTextButton.addEventListener("touchend",e=>{this.hiddenInput.focus(),e.preventDefault()}))}showOnScreenKeyboard(A){if(A.showOnScreenKeyboard){this.editTextButton.classList.remove("hiddenState");const e=this.unquantizeAndDenormalizeUnsigned(A.x,A.y);this.editTextButton.style.top=e.y.toString()+"px",this.editTextButton.style.left=(e.x-40).toString()+"px"}else this.editTextButton.classList.add("hiddenState"),this.hiddenInput.blur()}}class Au{constructor(A,e){this._showActionOrErrorOnDisconnect=!0,this.allowConsoleCommands=!1,this.config=A,e!=null&&e.videoElementParent&&(this._videoElementParent=e.videoElementParent),this._eventEmitter=new Sa,this.configureSettings(),this.setWebRtcPlayerController(new Oa(this.config,this)),this.onScreenKeyboardHelper=new jd(this.videoElementParent),this.onScreenKeyboardHelper.unquantizeAndDenormalizeUnsigned=(t,n)=>this._webRtcController.requestUnquantizedAndDenormalizeUnsigned(t,n),this._activateOnScreenKeyboard=t=>this.onScreenKeyboardHelper.showOnScreenKeyboard(t),this._webXrController=new Ja(this._webRtcController)}get videoElementParent(){return this._videoElementParent||(this._videoElementParent=document.createElement("div"),this._videoElementParent.id="videoElementParent"),this._videoElementParent}configureSettings(){this.config._addOnSettingChangedListener(Q.IsQualityController,A=>{A!==!0||this._webRtcController.isQualityController||this._webRtcController.sendRequestQualityControlOwnership()}),this.config._addOnSettingChangedListener(Q.AFKDetection,A=>{this._webRtcController.setAfkEnabled(A)}),this.config._addOnSettingChangedListener(Q.MatchViewportResolution,()=>{this._webRtcController.videoPlayer.updateVideoStreamSize()}),this.config._addOnSettingChangedListener(Q.HoveringMouseMode,A=>{this.config.setFlagLabel(Q.HoveringMouseMode,`Control Scheme: ${A?"Hovering":"Locked"} Mouse`),this._webRtcController.setMouseInputEnabled(this.config.isFlagEnabled(Q.MouseInput))}),this.config._addOnSettingChangedListener(Q.KeyboardInput,A=>{this._webRtcController.setKeyboardInputEnabled(A)}),this.config._addOnSettingChangedListener(Q.MouseInput,A=>{this._webRtcController.setMouseInputEnabled(A)}),this.config._addOnSettingChangedListener(Q.TouchInput,A=>{this._webRtcController.setTouchInputEnabled(A)}),this.config._addOnSettingChangedListener(Q.GamepadInput,A=>{this._webRtcController.setGamePadInputEnabled(A)}),this.config._addOnNumericSettingChangedListener(M.MinQP,A=>{g.Log(g.GetStackTrace(),"-------- Sending MinQP --------",7),this._webRtcController.sendEncoderMinQP(A),g.Log(g.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnNumericSettingChangedListener(M.MaxQP,A=>{g.Log(g.GetStackTrace(),"-------- Sending encoder settings --------",7),this._webRtcController.sendEncoderMaxQP(A),g.Log(g.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnNumericSettingChangedListener(M.WebRTCMinBitrate,A=>{g.Log(g.GetStackTrace(),"-------- Sending web rtc settings --------",7),this._webRtcController.sendWebRTCMinBitrate(1e3*A),g.Log(g.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnNumericSettingChangedListener(M.WebRTCMaxBitrate,A=>{g.Log(g.GetStackTrace(),"-------- Sending web rtc settings --------",7),this._webRtcController.sendWebRTCMaxBitrate(1e3*A),g.Log(g.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnNumericSettingChangedListener(M.WebRTCFPS,A=>{g.Log(g.GetStackTrace(),"-------- Sending web rtc settings --------",7),this._webRtcController.sendWebRTCFps(A),g.Log(g.GetStackTrace(),"-------------------------------------------",7)}),this.config._addOnOptionSettingChangedListener(_.PreferredCodec,A=>{this._webRtcController&&this._webRtcController.setPreferredCodec(A)}),this.config._registerOnChangeEvents(this._eventEmitter)}_activateOnScreenKeyboard(A){throw new Error("Method not implemented.")}_onInputControlOwnership(A){this._inputController=A}setWebRtcPlayerController(A){this._webRtcController=A,this._webRtcController.setPreferredCodec(this.config.getSettingOption(_.PreferredCodec).selected),this._webRtcController.resizePlayerStyle(),this.checkForAutoConnect()}connect(){this._eventEmitter.dispatchEvent(new ga),this._webRtcController.connectToSignallingServer()}reconnect(){this._eventEmitter.dispatchEvent(new fa),this._webRtcController.restartStreamAutomatically()}disconnect(){this._eventEmitter.dispatchEvent(new Ba),this._webRtcController.close()}play(){this._onStreamLoading(),this._webRtcController.playStream()}checkForAutoConnect(){this.config.isFlagEnabled(Q.AutoConnect)&&(this._onWebRtcAutoConnect(),this._webRtcController.connectToSignallingServer())}_onWebRtcAutoConnect(){this._eventEmitter.dispatchEvent(new na),this._showActionOrErrorOnDisconnect=!0}_onWebRtcSdp(){this._eventEmitter.dispatchEvent(new ra)}_onStreamLoading(){this._eventEmitter.dispatchEvent(new ha)}_onDisconnect(A){this._webRtcController.getDisconnectMessageOverride()!=""&&this._webRtcController.getDisconnectMessageOverride()!==void 0&&this._webRtcController.getDisconnectMessageOverride()!=null&&(A=this._webRtcController.getDisconnectMessageOverride(),this._webRtcController.setDisconnectMessageOverride("")),this._eventEmitter.dispatchEvent(new aa({eventString:A,showActionOrErrorOnDisconnect:this._showActionOrErrorOnDisconnect})),this._showActionOrErrorOnDisconnect==0&&(this._showActionOrErrorOnDisconnect=!0)}_onWebRtcConnecting(){this._eventEmitter.dispatchEvent(new sa)}_onWebRtcConnected(){this._eventEmitter.dispatchEvent(new ia)}_onWebRtcFailed(){this._eventEmitter.dispatchEvent(new oa)}_onVideoInitialized(){this._eventEmitter.dispatchEvent(new ua),this._videoStartTime=Date.now()}_onLatencyTestResult(A){this._eventEmitter.dispatchEvent(new Qa({latencyTimings:A}))}_onVideoStats(A){this._videoStartTime&&this._videoStartTime!==void 0||(this._videoStartTime=Date.now()),A.handleSessionStatistics(this._videoStartTime,this._inputController,this._webRtcController.videoAvgQp),this._eventEmitter.dispatchEvent(new ma({aggregatedStats:A}))}_onVideoEncoderAvgQP(A){this._eventEmitter.dispatchEvent(new ta({avgQP:A}))}_onInitialSettings(A){var e;this._eventEmitter.dispatchEvent(new Ua({settings:A})),A.PixelStreamingSettings&&(this.allowConsoleCommands=(e=A.PixelStreamingSettings.AllowPixelStreamingCommands)!==null&&e!==void 0&&e,this.allowConsoleCommands===!1&&g.Info(g.GetStackTrace(),"-AllowPixelStreamingCommands=false, sending arbitrary console commands from browser to UE is disabled."));const t=this.config.useUrlParams,n=new URLSearchParams(window.location.search);A.EncoderSettings&&(this.config.setNumericSetting(M.MinQP,t&&n.has(M.MinQP)?Number.parseInt(n.get(M.MinQP)):A.EncoderSettings.MinQP),this.config.setNumericSetting(M.MaxQP,t&&n.has(M.MaxQP)?Number.parseInt(n.get(M.MaxQP)):A.EncoderSettings.MaxQP)),A.WebRTCSettings&&(this.config.setNumericSetting(M.WebRTCMinBitrate,t&&n.has(M.WebRTCMinBitrate)?Number.parseInt(n.get(M.WebRTCMinBitrate)):A.WebRTCSettings.MinBitrate/1e3),this.config.setNumericSetting(M.WebRTCMaxBitrate,t&&n.has(M.WebRTCMaxBitrate)?Number.parseInt(n.get(M.WebRTCMaxBitrate)):A.WebRTCSettings.MaxBitrate/1e3),this.config.setNumericSetting(M.WebRTCFPS,t&&n.has(M.WebRTCFPS)?Number.parseInt(n.get(M.WebRTCFPS)):A.WebRTCSettings.FPS))}_onQualityControlOwnership(A){this.config.setFlagEnabled(Q.IsQualityController,A)}_onPlayerCount(A){this._eventEmitter.dispatchEvent(new ya({count:A}))}requestLatencyTest(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendLatencyTest(),!0)}requestShowFps(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendShowFps(),!0)}requestIframe(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendIframeRequest(),!0)}emitUIInteraction(A){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.emitUIInteraction(A),!0)}emitCommand(A){return!(!this._webRtcController.videoPlayer.isVideoReady()||!this.allowConsoleCommands&&"ConsoleCommand"in A||(this._webRtcController.emitCommand(A),0))}emitConsoleCommand(A){return!(!this.allowConsoleCommands||!this._webRtcController.videoPlayer.isVideoReady()||(this._webRtcController.emitConsoleCommand(A),0))}addResponseEventListener(A,e){this._webRtcController.responseController.addResponseEventListener(A,e)}removeResponseEventListener(A){this._webRtcController.responseController.removeResponseEventListener(A)}dispatchEvent(A){return this._eventEmitter.dispatchEvent(A)}addEventListener(A,e){this._eventEmitter.addEventListener(A,e)}removeEventListener(A,e){this._eventEmitter.removeEventListener(A,e)}toggleXR(){this.webXrController.xrClicked()}setSignallingUrlBuilder(A){this._webRtcController.signallingUrlBuilder=A}get webSocketController(){return this._webRtcController.webSocketController}get webXrController(){return this._webXrController}}T.Dz,T.g$,T.Lt,T.Q9,T.qf,T.hV,T.z$,T.J0;var za=T.De;T.$C,T.al,T._W,T.tz,T.Nu,T.zg,T.vp,T.vU,T.wF,T.rv,T.Nh,T.ss,T.qW,T.QL,T.cf,T.eM;var Ya=T.Yd;T.iM,T.qy,T.ce;var $a=T.sK;T.Ok,T.q5;var Za=T.g;T.xl,T.I,T.bx,T.dD,T.Ib,T.Az,T.Iw,T.qY,T.db,T.mR,T.Tn,T.rV,T.gh,T.Mi,T.j,T.YB,T.i5;var qa=T.x_;T.Am,T.eR,T.r8,T.u3,T.vd,T.iV,T.jZ,T.SW,T.ZH,T.Ni,T.lh,T.bq,T.$f,T.eu,T.Ax,T.Mc;const eu={Response:1},Qr={UIInteraction:50,MouseWheel:75};class tu extends c.HasOwner{constructor(e,t){super(e);p(this,"_processResponseFn",e=>this.esUeViewer.processResponse(e));p(this,"_inner");this._uri=t,this._inner=new WebSocket(this._uri),this.d(()=>{this._inner.close()}),this._innerInit()}get esUeViewer(){return this.owner}get uri(){return this._uri}get inner(){return this._inner}_innerInit(){this.inner.onmessage=e=>{if(this.isDestroyed())return;let t=new FileReader;t.onload=n=>{if(this.isDestroyed())return;let s=n.target.result,i=new Uint32Array(s),o=0;if(i[0]===eu.Response){o+=4;let a=i[o/4];o+=4;for(let l=0;l<a;l++){let d=i[o/4];o+=4;let h=new TextDecoder("utf-8").decode(s.slice(o,o+d));o+=d,this._processResponseFn(h)}}},t.readAsArrayBuffer(e.data)},this.inner.onopen=()=>{this.isDestroyed()||(console.warn("earthsdk message websocket server connected:",this.uri),console.log("%c[EarthSDK websocket open]","background: #a6ec99; color: black","open"),this.owner.dispatchEvent(new CustomEvent("esmsgwsopen",{detail:"websocket open"})))},this._inner.onclose=e=>{this.isDestroyed()||(console.log("%c[EarthSDK websocket close ]","background: red; color: black","error"),this.owner.dispatchEvent(new CustomEvent("error",{detail:"websocket close"})))},this._inner.onerror=e=>{this.isDestroyed()||(console.log("%c[EarthSDK websocket error ]","background: red; color: black","error"),this.owner.dispatchEvent(new CustomEvent("error",{detail:"websocket error"})))}}sendInputData(e){const t=this.inner;if(t.readyState!==WebSocket.OPEN)return;const s=new Uint8Array(e)[0];if(s>=Qr.UIInteraction&&s<=Qr.MouseWheel){const i=new ArrayBuffer(e.byteLength+4);return new DataView(i).setUint32(0,e.byteLength,!0),new Uint8Array(i,4).set(new Uint8Array(e)),t.send(new DataView(i)),!0}else return!1}emitDescriptorWithString(e,t){let n=new TextEncoder().encode(t),s=new DataView(new ArrayBuffer(3+n.length)),i=0;s.setUint8(i,e),i++,s.setUint16(i,n.length,!0),i+=2;for(let o=0;o<n.length;o++)s.setUint8(i,n[o]),i+=1;try{this.sendInputData(s.buffer)}catch(o){console.error(`data.buffer.size: ${s.buffer.byteLength} 独立通道 sendInputData error: ${o}`,o)}}destroyImpl(){this._inner&&this._inner.close()}}window.g_emitDescriptor_maxBytes=3e4;let ru=-1;Ya.SetLoggerVerbosity(1);class nu extends c.Destroyable{constructor(e,t){super();p(this,"_eventTarget",new EventTarget);p(this,"debug",!1);p(this,"uiInteractionCallbacks",new Map);p(this,"_pixelStream");p(this,"_esMsgWsWrapper");this._domOrDomId=e,this._options=t;const n=typeof this._domOrDomId=="string"?document.getElementById(this._domOrDomId):this._domOrDomId;if(!n)throw new Error(`ESUEViewer container${this._domOrDomId} error!`);console.log(`PSUEViewer init _options ${this._options}`);const{url:s,esmsgWsUri:i}=this._options;this._pixelStream=this._initPixelStream(n,s),this.d(()=>{this._pixelStream.disconnect()}),this._handerPixelStreamEvent(),this._esMsgWsWrapper=this._initEsMsgWsWrapper(i);const o=this;if(o.esMsgWsWrapper){const a=o.webRtcController.sendMessageController.dataChannelSender.sendData;o.webRtcController.sendMessageController.dataChannelSender.constructor.prototype.sendData=function(l){o.esMsgWsWrapper?o.esMsgWsWrapper.sendInputData(l):a.call(this,l)}}}get eventTarget(){return this._eventTarget}addEventListener(e,t,n){return this.eventTarget.addEventListener(e,t,n)}removeEventListener(e,t,n){return this.eventTarget.removeEventListener(e,t,n)}dispatchEvent(e){return this.eventTarget.dispatchEvent(e)}_initPixelStream(e,t){const n=new za({initialSettings:{AutoConnect:!0,AutoPlayVideo:!0,StartVideoMuted:!0,UseMic:!1,ForceMonoAudio:!1,KeyboardInput:!0,MouseInput:!0,TouchInput:!0,GamepadInput:!0,XRControllerInput:!0,SuppressBrowserKeys:!1,HoveringMouse:!0,FakeMouseWithTouches:!1,BrowserSendOffer:!1,ForceTURN:!1,PreferSFU:!1,IsQualityController:!0,MatchViewportResolution:!0,AFKDetection:!1,[qa.SignallingServerUrl]:t}});return n.setNumericSetting($a.MaxReconnectAttempts,0),new Za(n,{videoElementParent:e})}get pixelStream(){return this._pixelStream}_initEsMsgWsWrapper(e){return e?this.dv(new tu(this,e)):void 0}get esMsgWsWrapper(){return this._esMsgWsWrapper}get esWebSocketReady(){var e;return((e=this.esMsgWsWrapper)==null?void 0:e.inner.readyState)===1}_handerPixelStreamEvent(){this.pixelStream.addEventListener("videoInitialized",()=>{console.log("%c[EarthSDK webrtc videoInitialized]","background: #a6ec99; color: black","videoInitialized"),this.dispatchEvent(new CustomEvent("videoinited",{detail:"videoinited"}))}),this.pixelStream.addEventListener("webRtcFailed",()=>{this.isDestroyed()||(console.log("%c[EarthSDK webRtc webRtcFailed]","background: red; color: black","webRtcFailed"),this.dispatchEvent(new CustomEvent("error",{detail:"webRtcFailed"})),this.pixelStream.disconnect())}),this.pixelStream.addEventListener("webRtcDisconnected",()=>{this.isDestroyed()||(console.log("%c[EarthSDK webRtc webRtcDisconnected]","background: red; color: black","webRtcDisconnected"),this.dispatchEvent(new CustomEvent("error",{detail:"webRtcDisconnected"})),this.pixelStream.disconnect())}),this.pixelStream.addEventListener("webRtcConnected",()=>{this.isDestroyed()||(console.log("%c[EarthSDK webrtc webRtcConnected]","background: #a6ec99; color: black","webRtcConnected"),this.dispatchEvent(new CustomEvent("webRtcConnected",{detail:"webRtcConnected"})))}),this.pixelStream.addResponseEventListener("esueviewer",e=>{this.processResponse(e)})}resolveCallback(e){let t={};try{t=JSON.parse(e)}catch{return!1}let n=t.callid;if(typeof n!="string"||!this.uiInteractionCallbacks.has(n))return!1;let s=this.uiInteractionCallbacks.get(n);return typeof s!="function"?!1:(s(t),this.uiInteractionCallbacks.delete(n),!0)}processResponse(e){if(this.debug??!1)try{const t=JSON.parse(e);if(t.ers=t.ers&&t.ers.filter(n=>n.et!=="mouseMoveEvent"),!(t.ers&&t.ers.length>0||t.frs&&t.frs.length>0))return;console.group("%cUE => JS"," background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(t,void 0,"")}`," border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;"),console.groupEnd()}catch(t){console.error(`processResponse(${e}) error: ${t}`,t)}this.resolveCallback(e)||this.dispatchEvent(new CustomEvent("ueevent",{detail:e}))}emitUIInteraction(e,t){typeof t=="function"&&(e.callid=c.createGuid(),this.uiInteractionCallbacks.set(e.callid,t)),this.pixelStream.emitUIInteraction(e)}get webRtcController(){return this.pixelStream._webRtcController}emitUIInteractionForBigData(e,t){typeof t=="function"&&(e.callid=c.createGuid(),this.uiInteractionCallbacks.set(e.callid,t));const n=JSON.stringify(e),s=window.g_emitDescriptor_maxBytes,i=n.length,o=++ru;if(this.esMsgWsWrapper){if(i<s){this.esMsgWsWrapper.emitDescriptorWithString(Qr.UIInteraction,`${o}-0/1-`+n);return}const a=Math.ceil(i/s)|0;[...new Array(a).keys()].map(d=>n.slice(d*s,(d+1)*s)).forEach((d,h)=>{this.esMsgWsWrapper&&this.esMsgWsWrapper.emitDescriptorWithString(Qr.UIInteraction,`${o}-${h}/${a}-`+d)})}}emitCommand(e){this.pixelStream.emitCommand(e)}getVideoSize(){const e=this.webRtcController.videoPlayer.getVideoElement();return{width:e.videoWidth,height:e.videoHeight}}resizeUEVideo(e,t){let n={Resolution:{Width:e,Height:t}};console.log(`resizeUEVideo emitCommand ${e} ${t} begin`),this.emitCommand(n)}}class su extends c.Destroyable{constructor(e,t,n){super();p(this,"_instance");p(this,"_event",this.dv(new c.Event));this._container=e,this._wsuri=t,this._esmsgWsUri=n,this._instance=this.dv(new nu(this._container,{url:this._wsuri,esmsgWsUri:this._esmsgWsUri})),this.instanceInit()}get webSocketReady(){return this._instance.esWebSocketReady}get event(){return this._event}get debug(){return this._instance.debug}set debug(e){this._instance.debug=e}instanceInit(){if("addEventListener"in this._instance){["esmsgwsopen","error","videoinited","ueevent","webRtcConnected"].forEach(t=>{const n=s=>{this._event.emit(t,s.detail)};this._instance.addEventListener(t,n),this.dispose(()=>this._instance.removeEventListener(t,n))});return}this.dispose(this._instance.errorEvent.disposableOn(e=>{this._event.emit("error",e.detail)})),this.dispose(this._instance.webRtcConnectedEvent.disposableOn(e=>{this._event.emit("webRtcConnected",e.detail)})),this.dispose(this._instance.videoinitedEvent.disposableOn(e=>{this._event.emit("videoinited",e.detail)})),this.dispose(this._instance.ueevent.disposableOn(e=>{this._event.emit("ueevent",e.detail)}))}emitUIInteractionForBigData(e,t){return new Promise((n,s)=>{const i=(...o)=>{n(o),t&&t(...o)};try{this._instance.emitUIInteractionForBigData(e,i)}catch(o){console.warn(`emitUIInteraction发生错误:${o}`),s(o)}})}getVideoSize(){return this._instance.getVideoSize()}resize(e,t){this._instance.resizeUEVideo(e,t)}}class iu extends Ve{constructor(e,t,n,s){super();p(this,"_esueViewerWrapper");p(this,"_ueFuncResultWithIdsEvent",this.dv(new c.Event));p(this,"_ueFuncWithIdAndResultCallbacks",[]);p(this,"_waitingUeFuncIdAndResultCallbacks",new Map);p(this,"_waitingUeCalls",new Set);p(this,"_ueEvent",this.dv(new c.Event));p(this,"_errorEvent",this.dv(new c.Event));p(this,"_readyEvent",this.dv(new c.Event));p(this,"_esmsgwsopen",this.dv(c.react(!1)));p(this,"_videoinited",this.dv(c.react(!1)));p(this,"_webRtcConnected",this.dv(c.react(!1)));this._ueViewer=s,console.log("CSTMPSViewer init ! 以官方像素流 + 独立通信的模式启动!");const i=this._ueViewer;this._esueViewerWrapper=this.dv(new su(e,t,n));const o=this._esueViewerWrapper;{const f=()=>o.debug=i.debug??!1;f(),this.d(i.debugChanged.don(f))}let a=!1;{const f=()=>{if(a)return;const B=o.webSocketReady;if(this.videoinited&&this.webRtcConnected&&B){console.log("%c[EarthSDK: esmsgWebSocket && videoinited && webRtcConnected]","background: #a6ec99; color: black");const w={eventType:"init",params:{}};o.emitUIInteractionForBigData(w),this._readyEvent.emit(),a=!0}};this.d(this.videoinitedChanged.don(()=>{f()})),this.d(this.webRtcConnectedChanged.don(()=>{f()})),this.d(this.esmsgwsopenChanged.don(()=>{f()}))}this.d(o.event.don((f,B)=>{if(f==="error")this._errorEvent.emit(B);else if(f==="ueevent"){const w=JSON.parse(B);if(w.t==="cr"){const v=w;if(v.frs&&this._ueFuncResultWithIdsEvent.emit(v.frs),v.ers)for(let m of v.ers)this._ueEvent.emit(m)}}else f==="webRtcConnected"?this.webRtcConnected=!0:f==="videoinited"?this.videoinited=!0:f==="esmsgwsopen"&&(this.esmsgwsopen=!0)}));{const f=this.dv(c.createAnimateFrame());let B,w;f.start(()=>{if(B!==e.offsetWidth||w!==e.offsetHeight){if(B=e.offsetWidth,w=e.offsetHeight,B===void 0||w===void 0||!Number.isFinite(B)||!Number.isFinite(w)||B<0||w<0){console.warn(`lastWidth === undefined || lastHeight === undefined || !Number.isFinite(lastWidth) || !Number.isFinite(lastHeight) || lastWidth < 0 || lastHeight < 0 ${B} ${w}`);return}o.resize(B,w),console.log(`resize: ${B} ${w}`)}})}this.d(this._ueFuncResultWithIdsEvent.don(f=>{for(const B of f){const w=this._waitingUeFuncIdAndResultCallbacks.get(B.fid);w&&(this._waitingUeFuncIdAndResultCallbacks.delete(B.fid),w.resultCallback(B.r))}}));let l=0;const d=f=>{const B={n:l++,tt:Date.now(),t:"c",fs:f};this._waitingUeCalls.add(B),i.debug&&(console.group("%cxe2 => ue"," background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(B,void 0,"")}`," border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;"),console.groupEnd()),this._esueViewerWrapper.emitUIInteractionForBigData(B,()=>{this._waitingUeCalls.delete(B)})},h=()=>{if(!a||this._ueFuncWithIdAndResultCallbacks.length===0)return;const f=this._ueFuncWithIdAndResultCallbacks.map(([B])=>B);for(const[B,w]of this._ueFuncWithIdAndResultCallbacks)this._waitingUeFuncIdAndResultCallbacks.set(B.fid,w);this._ueFuncWithIdAndResultCallbacks.length=0;{const B=window.g_emitDescriptor_maxBytes,w=f.map(H=>({f:H,s:JSON.stringify(H).length}));let v=w.length,m=0,F=0,E=[];do{do{const{f:H,s:y}=w[m];if(E.push(H),++m,F+y>B||E.length>=20)break}while(m<v);E.length>0&&(i.debug&&console.log(`传送${E.length}条消息...`),d([...E]),E.length=0,F=0)}while(m<v)}};this.dv(c.createInterval()).start(h,50),this.d(()=>console.log("UeCloudViewer正在销毁..."))}get esueViewerWrapper(){return this._esueViewerWrapper}get errorEvent(){return this._errorEvent}get readyEvent(){return this._readyEvent}get esmsgwsopen(){return this._esmsgwsopen.value}set esmsgwsopen(e){this._esmsgwsopen.value=e}get esmsgwsopenChanged(){return this._esmsgwsopen.changed}get videoinited(){return this._videoinited.value}set videoinited(e){this._videoinited.value=e}get videoinitedChanged(){return this._videoinited.changed}get webRtcConnected(){return this._webRtcConnected.value}set webRtcConnected(e){this._webRtcConnected.value=e}get webRtcConnectedChanged(){return this._webRtcConnected.changed}resize(e,t){this.esueViewerWrapper.resize(e,t)}callUeFunc(e){return new Promise(t=>{const s={fid:c.createGuid(),...e};this._ueFuncWithIdAndResultCallbacks.push([s,{timeStamp:Date.now(),ueFunc:e,resultCallback:t}])})}disposableOnUeEvent(e,t){(this._ueViewer.debug??!1)&&console.log(`disposableOnUeEvent from UeCloudViewer, type:${e}`);const n=c.createGuid();this.callUeFunc({f:"addEventListener",p:{et:e,eid:n}});const s=()=>{this.callUeFunc({f:"removeEventListener",p:{eid:n}})},i=this._ueEvent.don(o=>{o.et===e&&o.eid===n&&t(o)});return()=>{i(),s()}}}function ou(r){let A="";const e=new Uint8Array(r),t=e.length;for(let n=0;n<t;n++)A+=String.fromCharCode(e[n]);return btoa(A)}const au=r=>{const A={type:"input",inputdata:ou(r)};return JSON.stringify(A)};function lu(r){return typeof r=="string"?document.getElementById(r):r}window.g_emitDescriptor_maxBytes=3e4;let cu=-1;Ya.SetLoggerVerbosity(1);class du extends c.Destroyable{constructor(e,t){super();p(this,"debug",!1);p(this,"_error",this.dv(new c.Event));p(this,"_connected",this.dv(new c.Event));p(this,"_ueevent",this.dv(new c.Event));p(this,"_pixelStream");p(this,"uiInteractionCallbacks",new Map);this._container=e,this._option=t;const n=new za({initialSettings:{AutoConnect:!0,AutoPlayVideo:!0,StartVideoMuted:!0,UseMic:!1,ForceMonoAudio:!1,KeyboardInput:!0,MouseInput:!0,TouchInput:!0,GamepadInput:!0,XRControllerInput:!0,SuppressBrowserKeys:!1,HoveringMouse:!0,FakeMouseWithTouches:!1,BrowserSendOffer:!1,ForceTURN:!1,PreferSFU:!1,IsQualityController:!0,MatchViewportResolution:!0,AFKDetection:!1,[qa.SignallingServerUrl]:this._option.ws}});n.setNumericSetting($a.MaxReconnectAttempts,0),this._pixelStream=new Za(n,{videoElementParent:this.container}),this.d(()=>{this._pixelStream.disconnect()});{const s=this.pixelStream.webSocketController.webSocket,i=this._pixelStream._webRtcController.sendMessageController.dataChannelSender.sendData;this._pixelStream._webRtcController.sendMessageController.dataChannelSender.constructor.prototype.sendData=function(o){s?s.send(au(o)):i.call(this,o)}}{const s=i=>{const o=this._pixelStream._webRtcController.mouseController;setTimeout(()=>{const a=o.coordinateConverter.normalizeAndQuantizeUnsigned(i.offsetX,i.offsetY),d=o.toStreamerMessagesProvider.toStreamerHandlers.get("MouseUp");d&&d([i.button,a.x,a.y]),i.preventDefault()})};this.container.addEventListener("dblclick",s),this.d(()=>{this.container.removeEventListener("dblclick",s)})}["error","close","open"].forEach(i=>{const o=()=>{this.isDestroyed()||(i==="open"?this.connected.emit("webSocketOpen"):i==="close"?this.error.emit("webSocketClose"):i==="error"&&this.error.emit("webSocketError"))};this.pixelStream.webSocketController.webSocket.addEventListener(i,o),this.d(()=>{this.pixelStream.webSocketController.webSocket.removeEventListener(i,o)})}),["videoInitialized","webRtcConnected","webRtcDisconnected","webRtcFailed"].forEach(i=>{const o=()=>{this.isDestroyed()||(i==="webRtcConnected"||i==="videoInitialized"?this.connected.emit(i):(i==="webRtcDisconnected"||i==="webRtcFailed")&&(this.error.emit(i),this.pixelStream.disconnect()))};this.pixelStream.addEventListener(i,o),this.d(()=>{this.pixelStream.removeEventListener(i,o)})}),this.pixelStream.addResponseEventListener("handle_responses",s=>{this.processResponse(s)}),this.d(()=>{this.pixelStream.removeResponseEventListener("handle_responses")})}get error(){return this._error}get connected(){return this._connected}get ueevent(){return this._ueevent}get container(){return lu(this._container)}get pixelStream(){return this._pixelStream}get webSocketReady(){return this.pixelStream.webSocketController.webSocket.readyState===1}processResponse(e){if(this.debug??!1)try{const t=JSON.parse(e);console.group("%cUE => JS"," background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(t,void 0,"")}`," border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;"),console.groupEnd()}catch(t){console.error(`processResponse(${e}) error: ${t}`,t)}this.resolveCallback(e)||this.ueevent.emit(e)}emitUIInteractionForBigData(e,t){typeof t=="function"&&(e.callid=c.createGuid(),this.uiInteractionCallbacks.set(e.callid,t));const n=JSON.stringify(e),s=window.g_emitDescriptor_maxBytes??3e4,i=n.length,o=++cu;if(i<s){const d={type:"earthsdk",time:new Date().getTime(),params:`${o}-0/1-`+n};this.sendData(JSON.stringify(d));return}const a=Math.ceil(i/s)|0;[...new Array(a).keys()].map(d=>n.slice(d*s,(d+1)*s)).forEach((d,h)=>{const u={type:"earthsdk",time:new Date().getTime(),params:`${o}-${h}/${a}-`+d};this.sendData(JSON.stringify(u))})}sendData(e){this.pixelStream.webSocketController.webSocket.send(e)}resolveCallback(e){let t={};try{t=JSON.parse(e)}catch{return!1}let n=t.callid;if(typeof n!="string"||!this.uiInteractionCallbacks.has(n))return!1;let s=this.uiInteractionCallbacks.get(n);return typeof s!="function"?!1:(s(t),this.uiInteractionCallbacks.delete(n),!0)}getVideoSize(){const e=this._pixelStream._webRtcController.videoPlayer.getVideoElement();return{width:e.videoWidth,height:e.videoHeight}}emitCommand(e){this.pixelStream.emitCommand(e)}emitUIInteraction(){console.log("emitUIInteraction 像素流初始化"),this.pixelStream.emitUIInteraction("像素流初始化")}resizeUEVideo(e,t){const n={Resolution:{Width:e,Height:t}};console.log(`resizeUEVideo emitCommand ${e} ${t} begin`),this.emitCommand(n)}}class uu extends c.Destroyable{constructor(e,t,n){super();p(this,"_instance");p(this,"_event",this.dv(new c.Event));this._container=e,this._wsuri=t,this._esmsgWsUri=n,this._instance=this.dv(new du(this._container,{ws:this._wsuri})),this.d(this._instance.connected.don(s=>{this._event.emit(s,s),console.log(`%c[EarthSDK] ${s}`,"background: #a6ec99; color: black")})),this.d(this._instance.error.don(s=>{this._event.emit("errorEvent",s),console.log(`%c[EarthSDK] ${s}`,"background: red; color: black")})),this.d(this._instance.ueevent.don(s=>{this._event.emit("ueevent",s)}))}get instance(){return this._instance}get event(){return this._event}get debug(){return this._instance.debug}set debug(e){this._instance.debug=e}emitUIInteractionForBigData(e,t){return new Promise((n,s)=>{const i=(...o)=>{n(o),t&&t(...o)};try{this._instance.emitUIInteractionForBigData(e,i)}catch(o){console.warn(`emitUIInteraction发生错误:${o}`),s(o)}})}getVideoSize(){return this._instance.getVideoSize()}resize(e,t){this._instance.resizeUEVideo(e,t)}}class hu extends Ve{constructor(e,t,n,s){super();p(this,"_videoInitialized",this.dv(c.react(!1)));p(this,"_webRtcConnected",this.dv(c.react(!1)));p(this,"_webSocketOpen",this.dv(c.react(!1)));p(this,"_ue5ViewerWrapper");p(this,"_ueFuncResultWithIdsEvent",this.dv(new c.Event));p(this,"_ueFuncWithIdAndResultCallbacks",[]);p(this,"_waitingUeFuncIdAndResultCallbacks",new Map);p(this,"_waitingUeCalls",new Set);p(this,"_ueEvent",this.dv(new c.Event));p(this,"_errorEvent",this.dv(new c.Event));p(this,"_readyEvent",this.dv(new c.Event));this._ueViewer=s,console.log("INNPSViewer init ! 以内置信令服务器模式启动!");const i=this._ueViewer,o=this.dv(new uu(e,t,n));this._ue5ViewerWrapper=o;{const u=()=>o.debug=i.debug??!1;u(),this.d(i.debugChanged.don(u))}{let u=!1;const f=this.dv(c.createNextAnimateFrameEvent(this._videoInitialized.changed,this._webRtcConnected.changed,this._webSocketOpen.changed));this.d(f.don(()=>{if(u)return;const B=this._ue5ViewerWrapper.instance.webSocketReady;if(this.videoInitialized&&this.webRtcConnected&&B){this._ue5ViewerWrapper.instance.emitUIInteraction(),this._readyEvent.emit(),u=!0,console.log("%c[EarthSDK videoInitialized && webRtcConnected && webSocketReady]","background: #a6ec99; color: black");const w={eventType:"init",params:{}};this._ue5ViewerWrapper.emitUIInteractionForBigData(w)}else console.warn("webSocketReady",B),u=!1}))}this.d(o.event.don((u,f)=>{if(u==="errorEvent")this._errorEvent.emit(f);else if(u==="videoInitialized")this._videoInitialized.value=!0;else if(u==="webRtcConnected")this._webRtcConnected.value=!0;else if(u==="webSocketOpen")this._webSocketOpen.value=!0;else if(u==="ueevent"){const B=JSON.parse(f);if(B.t==="cr"){const w=B;if(w.frs&&this._ueFuncResultWithIdsEvent.emit(w.frs),w.ers)for(let v of w.ers)this._ueEvent.emit(v)}}}));{const u=this.dv(c.createAnimateFrame());let f,B,w;u.start(()=>{if(f!==e.offsetWidth||B!==e.offsetHeight||w!==i.resolutionScale){if(f=e.offsetWidth,B=e.offsetHeight,f===void 0||B===void 0||!Number.isFinite(f)||!Number.isFinite(B)||f<0||B<0){console.warn(`lastWidth === undefined || lastHeight === undefined || !Number.isFinite(lastWidth) || !Number.isFinite(lastHeight) || lastWidth < 0 || lastHeight < 0 ${f} ${B}`);return}w=i.resolutionScale,o.resize(f/w,B/w)}})}this.d(this._ueFuncResultWithIdsEvent.don(u=>{for(const f of u){const B=this._waitingUeFuncIdAndResultCallbacks.get(f.fid);B&&(this._waitingUeFuncIdAndResultCallbacks.delete(f.fid),B.resultCallback(f.r))}}));let a=0;const l=u=>{const f={n:a++,tt:Date.now(),t:"c",fs:u};this._waitingUeCalls.add(f),i.debug&&(console.group("%cxe2 => ue"," background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(f,void 0,"")}`," border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;"),console.groupEnd()),this._ue5ViewerWrapper.emitUIInteractionForBigData(f,()=>{this._waitingUeCalls.delete(f)})},d=()=>{if(!this._ue5ViewerWrapper.instance.webSocketReady||this._ueFuncWithIdAndResultCallbacks.length===0)return;const f=this._ueFuncWithIdAndResultCallbacks.map(([B])=>B);for(const[B,w]of this._ueFuncWithIdAndResultCallbacks)this._waitingUeFuncIdAndResultCallbacks.set(B.fid,w);this._ueFuncWithIdAndResultCallbacks.length=0;{const B=window.g_emitDescriptor_maxBytes,w=f.map(H=>({f:H,s:JSON.stringify(H).length}));let v=w.length,m=0,F=0,E=[];do{do{const{f:H,s:y}=w[m];if(E.push(H),++m,F+y>B||E.length>=20)break}while(m<v);E.length>0&&(i.debug&&console.log(`传送${E.length}条消息...`),l([...E]),E.length=0,F=0)}while(m<v)}};this.dv(c.createInterval()).start(d,50),this.d(()=>console.log("UeCloudViewer正在销毁..."))}get videoInitialized(){return this._videoInitialized.value}get webRtcConnected(){return this._webRtcConnected.value}get webSocketOpen(){return this._webSocketOpen.value}get ue5ViewerWrapper(){return this._ue5ViewerWrapper}get errorEvent(){return this._errorEvent}get readyEvent(){return this._readyEvent}resize(e,t){this.ue5ViewerWrapper.resize(e,t)}callUeFunc(e){return new Promise(t=>{const s={fid:c.createGuid(),...e};this._ueFuncWithIdAndResultCallbacks.push([s,{timeStamp:Date.now(),ueFunc:e,resultCallback:t}])})}disposableOnUeEvent(e,t){const n=c.createGuid();this.callUeFunc({f:"addEventListener",p:{et:e,eid:n}});const s=()=>{this.callUeFunc({f:"removeEventListener",p:{eid:n}})},i=this._ueEvent.don(o=>{o.et===e&&o.eid===n&&t(o)});return()=>{i(),s()}}}class gu extends c.Destroyable{constructor(e,t,n,s){super();p(this,"_onRuntimeInitialized",this.dv(new c.Event));p(this,"_vIframe",null);this._ueViewer=s;const i=this._ueViewer;{const o=document.createElement("iframe");this._vIframe=o,o.style.cssText="width: 100%; height: 100%; margin: 0; padding: 0; border: none; outline: none;",e.appendChild(o),this.d(()=>{o&&e.removeChild(o)});const a=c.ESSceneObject.getStrFromEnv(n+`/web/${t}.html`);o.src=a,o.onload=()=>{const l=o.contentWindow;if(!l){console.error("iframeWindow is null");return}console.log("iwindow.Module",l.Module),l.Module.onRuntimeInitialized=()=>{this._onRuntimeInitialized.emit(),i.setStatus("Created"),i.setStatusLog("创建成功"),l.Module.UE4_resizeCanvas(),l.console.log("创建成功__________________________________________")}}}}get onRuntimeInitialized(){return this._onRuntimeInitialized}get vIframe(){return this._vIframe}}const ja=typeof TextDecoder<"u"?new TextDecoder:void 0,Bu=(r,A=0,e=NaN)=>{const t=A+e;let n=A;for(;r[n]&&!(n>=t);)++n;if(n-A>16&&r.buffer&&ja)return ja.decode(r.subarray(A,n));let s="";for(;A<n;){var i=r[A++];if(!(i&128)){s+=String.fromCharCode(i);continue}var o=r[A++]&63;if((i&224)==192){s+=String.fromCharCode((i&31)<<6|o);continue}var a=r[A++]&63;if((i&240)==224?i=(i&15)<<12|o<<6|a:((i&248)!=240&&console.warn("Invalid UTF-8 leading byte encountered when deserializing a UTF-8 string in wasm memory to a JS string!"),i=(i&7)<<18|o<<12|a<<6|r[A++]&63),i<65536)s+=String.fromCharCode(i);else{var l=i-65536;s+=String.fromCharCode(55296|l>>10,56320|l&1023)}}return s};class fu extends c.Destroyable{constructor(A,e,t){super();{const n=()=>{const a=Fn(e);e.setGlobalProperty(a)};n();const s=vr(),i=[];s.forEach(a=>{const l=e[a+"Changed"];i.push(l)});const o=this.dv(c.createNextAnimateFrameEvent(...i));this.d(o.don(n))}this.d(e.propChanged.don(n=>{if(n.objId==="")try{Object.keys(n.props).forEach(s=>{const i=n.props[s]===null?void 0:n.props[s];e[s]=i})}catch(s){console.error("ueViewer propChanged:"+s)}})),e.useCustomInteraction=!1,this.dv(new c.ViewerCustomInteraction(e,A)),this.dv(new c.ObjResettingWithEvent(e.statusUpdateIntervalChanged,n=>{if((e.statusUpdateInterval??.5)===0)return;const i=new c.Destroyable;return i.d(t.disposableOnUeEvent("statusUpdate",o=>{e.statusUpdateEvent.emit(o)})),i})),this.dv(new c.ObjResettingWithEvent(e.propChangedListeningChanged,()=>{if(!(e.propChangedListening??!0))return;const s=new c.Destroyable;return s.d(t.disposableOnUeEvent("propChanged",i=>{e.propChanged.emit(i)})),s})),this.dv(new c.ObjResettingWithEvent(e.objectEventListeningChanged,()=>{if(!(e.objectEventListening??!0))return;const s=new c.Destroyable;return s.d(t.disposableOnUeEvent("objectEvent",i=>{e.objectEvent.emit(i)})),s})),this.dv(new c.ObjResettingWithEvent(e.widgetEventListeningChanged,()=>{if(!(e.widgetEventListening??!0))return;const s=new c.Destroyable;return s.d(t.disposableOnUeEvent("widgetEvent",i=>{e.widgetEvent.emit(i)})),s})),this.dv(new c.ObjResettingWithEvent(e.speechRecognitionListeningChanged,()=>{if(!(e.speechRecognitionListening??!0))return;const s=new c.Destroyable;return s.d(t.disposableOnUeEvent("speechRecognition",i=>{e.speechRecognition.emit(i)})),s})),this.dv(new c.ObjResettingWithEvent(e.customMessageListeningChanged,()=>{if(!(e.customMessageListening??!0))return;const s=new c.Destroyable;return s.d(t.disposableOnUeEvent("customMessage",i=>{e.customMessage.emit(i)})),s})),this.dv(new c.ObjResettingWithEvent(e.editingEventListeningChanged,()=>{if(!(e.editingEventListening??!0))return;const s=new c.Destroyable;return s.d(t.disposableOnUeEvent("editingEvent",i=>{i.objectIDs=i.objectIDs.map(o=>{var a;return((a=c.ESSceneObject.getSceneObjById(o))==null?void 0:a.parentID)??o}),e.editingEvent.emit(i)})),s})),this.ad(t.disposableOnUeEvent("cameraChanged",()=>{e.cameraChanged.emit()}))}}let wu=-1;class pu extends Ve{constructor(e,t,n="${earthsdk3-ue-h5-assets-script-dir}",s){super();p(this,"_ueFuncResultWithIdsEvent",this.dv(new c.Event));p(this,"_ueFuncWithIdAndResultCallbacks",[]);p(this,"_waitingUeFuncIdAndResultCallbacks",new Map);p(this,"_waitingUeCalls",new Map);p(this,"_ueEvent",this.dv(new c.Event));this._ueViewer=s;const i=this._ueViewer,o=this.dv(new gu(e,t,n,i));let a=!1,l=null;this.d(o.onRuntimeInitialized.don(()=>{var f;if(a=!0,(f=o==null?void 0:o.vIframe)!=null&&f.contentWindow){l=o.vIframe.contentWindow;const B=o.vIframe.contentWindow.document.getElementById("mainarea");B?this.dv(new fu(B,i,this)):console.error("h5Container is null")}else{console.error("iframeWindow is null");return}l.UE_JSHTML5Communication?l.UE_JSHTML5Communication.UESendMessageToJS=B=>{try{const w=Bu(l.HEAPU8,B),v=JSON.parse(w);if(i.debug&&(console.group("%cUE => JS"," background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(v,void 0,"")}`," border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;"),console.groupEnd()),v.t==="cr"){const m=v;if(m.frs&&this._ueFuncResultWithIdsEvent.emit(m.frs),m.ers)for(let F of m.ers)this._ueEvent.emit(F)}v.callid&&this._waitingUeCalls.has(v.callid)&&(this._waitingUeCalls.delete(v.callid),console.log(`waitingUeCalls.delete:${v.callid} end`))}catch(w){console.error("UE_JSHTML5Communication.UESendMessageToJS error:",w)}}:console.error("UE_JSHTML5Communication UESendMessageToJS not found")})),this.dispose(this._ueFuncResultWithIdsEvent.disposableOn(f=>{for(const B of f){const w=this._waitingUeFuncIdAndResultCallbacks.get(B.fid);w&&(this._waitingUeFuncIdAndResultCallbacks.delete(B.fid),w(B.r))}}));let d=0;const h=()=>{if(!a||!l||!l.UE_JSHTML5Communication||!l.UE_JSHTML5Communication.JSSendMessageToUE||this._ueFuncWithIdAndResultCallbacks.length===0)return;const f=this._ueFuncWithIdAndResultCallbacks.map(([y])=>y),B={n:d++,tt:Date.now(),t:"c",fs:f,callid:c.createGuid()};for(const[y,U]of this._ueFuncWithIdAndResultCallbacks)this._waitingUeFuncIdAndResultCallbacks.set(y.fid,U);this._ueFuncWithIdAndResultCallbacks.length=0,this._waitingUeCalls.set(B.callid,B),i.debug&&(console.group("%cxe2 => ue"," background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(B,void 0,"")}`," border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;"),console.groupEnd());const w=JSON.stringify(B),v=window.g_emitDescriptor_maxBytes??3e4,m=w.length,F=++wu;if(m<v){const y=`${F}-0/1-`+w;l.UE_JSHTML5Communication.JSSendMessageToUE(y);return}const E=Math.ceil(m/v)|0;[...new Array(E).keys()].map(y=>w.slice(y*v,(y+1)*v)).forEach((y,U)=>{const D=`${F}-${U}/${E}-`+y;l.UE_JSHTML5Communication.JSSendMessageToUE(D)})};this.dv(c.createInterval()).start(h,50)}processResponse(e){if(this._ueViewer.debug??!1)try{const t=JSON.parse(e);console.group("%cUE => JS"," background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(t,void 0,"")}`," border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;"),console.groupEnd()}catch(t){console.error(`processResponse(${e}) error: ${t}`,t)}}callUeFunc(e){return new Promise(t=>{const s={fid:c.createGuid(),...e};this._ueFuncWithIdAndResultCallbacks.push([s,t])})}disposableOnUeEvent(e,t){const n=c.createGuid();this.callUeFunc({f:"addEventListener",p:{et:e,eid:n}});const s=()=>{this.callUeFunc({f:"removeEventListener",p:{eid:n}})},i=this._ueEvent.disposableOn(o=>{o.et===e&&o.eid===n&&((this._ueViewer.debug??!1)&&console.log(`callback, type:${e} eid:${n} ueEvent:${JSON.stringify(o)}`),t(o))});return()=>{i(),s()}}}let Cu=-1;class vu extends Ve{constructor(e,t){super();p(this,"_ueFuncResultWithIdsEvent",this.dv(new c.Event));p(this,"_ueFuncWithIdAndResultCallbacks",[]);p(this,"_waitingUeFuncIdAndResultCallbacks",new Map);p(this,"_waitingUeCalls",new Set);p(this,"_ueEvent",this.dv(new c.Event));this._ueViewer=t;const n=this._ueViewer;let s=!1;const i={eventType:"init",params:{}};window.ue.es.oncommand(JSON.stringify(i)),s=!0,window.calljs=(d,h)=>{if(n.debug&&console.log(`calljs eventName:${d} eventDetailStr:${h}`),d==="ueevent"||d==="commanFinish")try{const u=JSON.parse(h);if(u.t==="cr"){const f=u;if(f.frs&&this._ueFuncResultWithIdsEvent.emit(f.frs),f.ers)for(let B of f.ers)this._ueEvent.emit(B)}}catch(u){console.error(u)}},this.dispose(this._ueFuncResultWithIdsEvent.disposableOn(d=>{for(const h of d){const u=this._waitingUeFuncIdAndResultCallbacks.get(h.fid);u&&(this._waitingUeFuncIdAndResultCallbacks.delete(h.fid),u(h.r))}}));let o=0;const a=()=>{if(!s||this._ueFuncWithIdAndResultCallbacks.length===0)return;const d=this._ueFuncWithIdAndResultCallbacks.map(([f])=>f),h={n:o++,tt:Date.now(),t:"c",fs:d};for(const[f,B]of this._ueFuncWithIdAndResultCallbacks)this._waitingUeFuncIdAndResultCallbacks.set(f.fid,B);this._ueFuncWithIdAndResultCallbacks.length=0,this._waitingUeCalls.add(h),n.debug&&(console.group("%cxe2 => ue"," background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;"),console.log(`%c${JSON.stringify(h,void 0,"")}`," border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;"),console.groupEnd());const u=++Cu;window.ue.es.oncommand(`${u}-0/1-`+JSON.stringify(h)).then(()=>{this._waitingUeCalls.delete(h)})};this.dv(c.createInterval()).start(a,50)}callUeFunc(e){return new Promise(t=>{const s={fid:c.createGuid(),...e};this._ueFuncWithIdAndResultCallbacks.push([s,t])})}disposableOnUeEvent(e,t){const n=c.createGuid();this.callUeFunc({f:"addEventListener",p:{et:e,eid:n}});const s=()=>{this.callUeFunc({f:"removeEventListener",p:{eid:n}})},i=this._ueEvent.disposableOn(o=>{o.et===e&&o.eid===n&&((this._ueViewer.debug??!1)&&console.log(`callback, type:${e} eid:${n} ueEvent:${JSON.stringify(o)}`),t(o))});return()=>{i(),s()}}}class mu extends c.Destroyable{constructor(A,e){super();{const t=()=>{const o=Fn(A);A.setGlobalProperty(o)};t();const n=vr(),s=[];n.forEach(o=>{const a=A[o+"Changed"];s.push(a)});const i=this.dv(c.createNextAnimateFrameEvent(...s));this.d(i.don(t))}this.d(A.propChanged.don(t=>{if(t.objId==="")try{Object.keys(t.props).forEach(n=>{const s=t.props[n]===null?void 0:t.props[n];A[n]=s})}catch(n){console.error("ueViewer propChanged:"+n)}})),this.dv(new c.ObjResettingWithEvent(A.statusUpdateIntervalChanged,t=>{if((A.statusUpdateInterval??.5)===0)return;const s=new c.Destroyable;return s.d(e.disposableOnUeEvent("statusUpdate",i=>{A.statusUpdateEvent.emit(i)})),s})),this.dv(new c.ObjResettingWithEvent(A.propChangedListeningChanged,()=>{if(!(A.propChangedListening??!0))return;const n=new c.Destroyable;return n.d(e.disposableOnUeEvent("propChanged",s=>{A.propChanged.emit(s)})),n})),this.dv(new c.ObjResettingWithEvent(A.objectEventListeningChanged,()=>{if(!(A.objectEventListening??!0))return;const n=new c.Destroyable;return n.d(e.disposableOnUeEvent("objectEvent",s=>{A.objectEvent.emit(s)})),n})),this.dv(new c.ObjResettingWithEvent(A.widgetEventListeningChanged,()=>{if(!(A.widgetEventListening??!0))return;const n=new c.Destroyable;return n.d(e.disposableOnUeEvent("widgetEvent",s=>{A.widgetEvent.emit(s)})),n})),this.dv(new c.ObjResettingWithEvent(A.speechRecognitionListeningChanged,()=>{if(!(A.speechRecognitionListening??!0))return;const n=new c.Destroyable;return n.d(e.disposableOnUeEvent("speechRecognition",s=>{A.speechRecognition.emit(s)})),n})),this.dv(new c.ObjResettingWithEvent(A.customMessageListeningChanged,()=>{if(!(A.customMessageListening??!0))return;const n=new c.Destroyable;return n.d(e.disposableOnUeEvent("customMessage",s=>{A.customMessage.emit(s)})),n})),this.dv(new c.ObjResettingWithEvent(A.editingEventListeningChanged,()=>{if(!(A.editingEventListening??!0))return;const n=new c.Destroyable;return n.d(e.disposableOnUeEvent("editingEvent",s=>{s.objectIDs=s.objectIDs.map(i=>{var o;return((o=c.ESSceneObject.getSceneObjById(i))==null?void 0:o.parentID)??i}),A.editingEvent.emit(s)})),n})),this.ad(e.disposableOnUeEvent("cameraChanged",()=>{A.cameraChanged.emit()}))}}class Fu extends c.Destroyable{constructor(A,e,t){super();{const s=()=>{const l=Fn(e);e.setGlobalProperty(l)};s();const i=vr(),o=[];i.forEach(l=>{const d=e[l+"Changed"];o.push(d)});const a=this.dv(c.createNextAnimateFrameEvent(...o));this.d(a.don(s))}this.d(e.propChanged.don(s=>{if(s.objId==="")try{Object.keys(s.props).forEach(i=>{const o=s.props[i]===null?void 0:s.props[i];e[i]=o})}catch(i){console.error("ueViewer propChanged:"+i)}}));const n=document.createElement("div");n.style.width="100%",n.style.height="100%",n.style.position="absolute",n.style.overflow="hidden",n.style.top="0",n.style.left="0",n.style.zIndex="0",n.style.backgroundColor="rgba(255,0,0,0)",n.setAttribute("masker","大屏顶层div,用于模拟鼠标事件和控制UE鼠标事件是否生效"),A.appendChild(n),this.d(()=>{n&&A&&A.removeChild(n)});{const s=(l,d)=>{window.ue.esinput.setinterceptevent(d),l.preventDefault()},i=l=>{s(l,!1)},o=l=>{s(l,!0)},a=l=>{s(l,!1)};n.addEventListener("mouseenter",i),n.addEventListener("mouseleave",o),n.addEventListener("mousemove",a),this.d(()=>{n.removeEventListener("mouseenter",i),n.removeEventListener("mouseleave",o),n.removeEventListener("mousemove",a)})}e.useCustomInteraction=!1,this.dv(new c.ViewerCustomInteraction(e,n)),this.dv(new c.ObjResettingWithEvent(e.statusUpdateIntervalChanged,s=>{if((e.statusUpdateInterval??.5)===0)return;const o=new c.Destroyable;return o.d(t.disposableOnUeEvent("statusUpdate",a=>{e.statusUpdateEvent.emit(a)})),o})),this.dv(new c.ObjResettingWithEvent(e.propChangedListeningChanged,()=>{if(!(e.propChangedListening??!0))return;const i=new c.Destroyable;return i.d(t.disposableOnUeEvent("propChanged",o=>{e.propChanged.emit(o)})),i})),this.dv(new c.ObjResettingWithEvent(e.objectEventListeningChanged,()=>{if(!(e.objectEventListening??!0))return;const i=new c.Destroyable;return i.d(t.disposableOnUeEvent("objectEvent",o=>{e.objectEvent.emit(o)})),i})),this.dv(new c.ObjResettingWithEvent(e.widgetEventListeningChanged,()=>{if(!(e.widgetEventListening??!0))return;const i=new c.Destroyable;return i.d(t.disposableOnUeEvent("widgetEvent",o=>{e.widgetEvent.emit(o)})),i})),this.dv(new c.ObjResettingWithEvent(e.speechRecognitionListeningChanged,()=>{if(!(e.speechRecognitionListening??!0))return;const i=new c.Destroyable;return i.d(t.disposableOnUeEvent("speechRecognition",o=>{e.speechRecognition.emit(o)})),i})),this.dv(new c.ObjResettingWithEvent(e.customMessageListeningChanged,()=>{if(!(e.customMessageListening??!0))return;const i=new c.Destroyable;return i.d(t.disposableOnUeEvent("customMessage",o=>{e.customMessage.emit(o)})),i})),this.dv(new c.ObjResettingWithEvent(e.editingEventListeningChanged,()=>{if(!(e.editingEventListening??!0))return;const i=new c.Destroyable;return i.d(t.disposableOnUeEvent("editingEvent",o=>{o.objectIDs=o.objectIDs.map(a=>{var l;return((l=c.ESSceneObject.getSceneObjById(a))==null?void 0:l.parentID)??a}),e.editingEvent.emit(o)})),i})),this.ad(t.disposableOnUeEvent("cameraChanged",()=>{e.cameraChanged.emit()}))}}class Qu extends c.Destroyable{constructor(e,t,n){super();p(this,"_reconnectEvent",this.dv(new c.Event));const s=(h,u)=>h.hasOwnProperty(u);let i=0,o;this.d(()=>{o&&clearTimeout(o)});const l=new URLSearchParams(window.location.search).get("eswebview")==="true",d=()=>{if(window.ue.esinput){n.setStatus("Creating"),console.log("存在(window.ue && window.ue.es && window.ue.esinput 需要适配新版ESWebView 鼠标穿透), 开始创建UeFalseCloudViewer..."),n.setStatusLog("开始创建本地视口...");const h=this.dv(new vu(e,n));this.d(()=>n.viewer=void 0),n.viewer=h,n.setStatus("Created"),n.setStatusLog("本地视口创建成功!"),this.dv(new Fu(e,n,h))}else n.setStatus("Error"),n.setStatusLog("请升级 ESWebView !"),this.d(()=>n.viewer=void 0),n.viewer=void 0};if(window.ue&&window.ue.es)d();else if(l){const h=setInterval(()=>{window.ue&&window.ue.es&&(clearInterval(h),d())},200)}else if(s(t.options,"ws")||s(t.options,"uri")&&s(t.options,"app")){n.setStatus("Creating"),n.setStatusLog("开始创建云渲染视口...");let h;this.d(()=>{n.setStatus("Raw"),n.setStatusLog(""),e&&h&&e.removeChild(h)&&(h=void 0)});const u=this.dv(c.createProcessingFromAsyncFunc(async f=>{n.viewer&&!n.viewer.isDestroyed()&&n.viewer.destroy(),n.viewer=void 0,h&&e.removeChild(h)&&(h=void 0),h=document.createElement("div"),h.setAttribute("earthsdk3-ue","earthsdk3-ue-videoContainer"),h.style.cssText="position:relative; height: 100%;width:100%;",e.appendChild(h);let B,w,v,m;if(s(t.options,"ws")){const{ws:y,esmsg:U,uselnternalSignallingServer:D,silentTime:R}=t.options;B=y,w=U,v=D??!1,m=R??0}if(s(t.options,"uri")&&s(t.options,"app")){const{offsetWidth:y,offsetHeight:U}=h;let{uri:D,app:R,token:b,silentTime:W}=t.options;D.endsWith("/")||(D+="/");const iA=b?`?essstoken=${b}`:"",oA=`/${R}/${y??1920}/${U??1080}`+iA;console.log(`请求信令服务器: ${D}instance${oA}`);const G=await f.promise(fetch(`${D}instance${oA}`,{method:"GET"})),O=await f.promise(G.json());if(O&&O.status!=="ok"){n.setStatus("Error"),n.setStatusLog(`信令服务器请求失败 ${O.status}`),this._reconnectEvent.emit(void 0);return}else{console.log(`信令服务器请求成功! ${JSON.stringify(O,void 0," ")}`);const{server:SA,esmsg:aA,instanceId:lA,useInternalSignallingServer:xA}=O;if(!lA){n.setStatus("Error"),n.setStatusLog("检查信令服务器版本,返回数据错误! "),console.log("信令服务器返回数据错误!不包含instanceId!请升级到 ESSS V3.0+ 版本!"),this._reconnectEvent.emit(void 0);return}B=SA,w=aA,v=xA??!1,m=W??0,n.esssResponse=O}}console.log(`静默 ${m}s...`),await f.promise(c.sleep((m??0)*1e3)),console.log(`静默 ${m}s...done!`);const F=this.dv(v?new hu(h,B,w,n):new iu(h,B,w,n));this.d(()=>n.viewer=void 0),this.d(F.errorEvent.don(y=>{const U=`[${y}]:像素流连接错误!`;n.setStatus("Error"),n.setStatusLog(U),this._reconnectEvent.emit(F)})),await f.promise(new Promise(y=>this.d(F.readyEvent.donce(y)))),n.setStatus("Created"),n.setStatusLog("云渲染视口创建成功!"),i=0,o&&clearTimeout(o),o=void 0;const{offsetWidth:E,offsetHeight:H}=h;F.resize(E*window.devicePixelRatio,H*window.devicePixelRatio),n.viewer=F,this.d(()=>n.viewer=void 0),this.dv(new mu(n,F))}));u.start(),this.d(this._reconnectEvent.don(f=>{o===void 0&&(f&&!f.isDestroyed()&&f.destroy(),n.viewer&&!n.viewer.isDestroyed()&&n.viewer.destroy(),n.viewer=void 0,n.autoReconnect&&(n.setStatus("Reconnecting"),n.setStatusLog("正在尝试重新连接..."),i=i+5e3>3e4?3e4:i+5e3,console.warn(`间隔:${i/1e3}s,正在尝试重新连接...`),o=window.setTimeout(()=>{u.restart()},i)))})),this.d(u.errorEvent.don(f=>{n.setStatus("Error"),n.setStatusLog("云渲染视口创建失败!"),console.warn("云渲染视口创建失败!",f),this._reconnectEvent.emit(void 0)}))}else if(s(t.options,"project")){const h=t,u=h.options.project,f=h.options.baseUrl;n.setStatus("Creating"),n.setStatusLog("下载编译中...");const B=this.dv(new pu(e,u,f,n));n.viewer=B,this.d(()=>n.viewer=void 0)}else n.setStatus("Error"),n.setStatusLog("视口创建失败!"),console.warn("视口创建失败: 参数错误!")}}const se=class se extends c.ESViewer{constructor(e){super(e);p(this,"_viewer",this.dv(c.react(void 0)));p(this,"_esssResponse");p(this,"_speechRecognition",this.dv(new c.Event));p(this,"_propChanged",this.dv(new c.Event));p(this,"_objectEvent",this.dv(new c.Event));p(this,"_widgetEvent",this.dv(new c.Event));p(this,"_customMessage",this.dv(new c.Event));p(this,"_statusUpdateEvent",this.dv(new c.Event));p(this,"_statusUpdateEventdon",(()=>{this.d(this.statusUpdateEvent.don(e=>{this._statusInfo.fps=e.FPS??0,this._statusInfo.length=e.length??0,this._statusInfo.position=e.position??[0,0,0],this._statusInfo.rotation=e.rotation??[0,0,0]}))})());if(e.type!=="ESUeViewer")throw new Error("option.type must be ESUeViewer");const t=e;this.d(this._viewer.changed.don(()=>{this.viewerChanged.emit(this.viewer)})),this.dv(new c.ObjResettingWithEvent(this.subContainerChanged,()=>{if(this.setStatus("Raw"),this.setStatusLog(""),!!this.subContainer)return new Qu(this.subContainer,t,this)}))}get defaultProps(){return se.createDefaultProps()}set viewer(e){this._viewer.value=e}get viewer(){return this._viewer.value}get esssResponse(){return this._esssResponse}set esssResponse(e){this._esssResponse=e}get speechRecognition(){return this._speechRecognition}get propChanged(){return this._propChanged}get objectEvent(){return this._objectEvent}get widgetEvent(){return this._widgetEvent}get customMessage(){return this._customMessage}get statusUpdateEvent(){return this._statusUpdateEvent}async uePositionToLonLatAlt(e){if(!this.viewer){console.warn("UEPositionToLonLatAlt: viewer is undefined");return}return await po(this.viewer,e)}async changeNavigationMode(e){if(!this.viewer){console.warn("ChangeNavigationMode: viewer is undefined");return}const t=await TA(this.viewer,e);return t&&!t.error&&(this._navigationMode.value=e.mode),t}async resetWithCurrentCamera(e){if(!this.viewer){console.warn("resetWithCurrentCamera: viewer is undefined");return}return await Un(this.viewer,e)}async getAllSocketNamesByActorTag(e){if(!this.viewer){console.warn("GetAllSocketNamesByActorTag: viewer is undefined");return}return await Co(this.viewer,e)}async getBoundSphere(e){if(!this.viewer){console.warn("getBoundSphere: viewer is undefined");return}return await mo(this.viewer,e)}async getBoundSphereWithChildren(e){if(!this.viewer){console.warn("getBoundSphereWithChildren: viewer is undefined");return}return await Fo(this.viewer,e)}async getStrokeMaterialParamInfo(e){if(!this.viewer){console.warn("GetStrokeMaterialParamInfo: viewer is undefined");return}return await Qo(this.viewer,e)}async getFillMaterialParamInfo(e){if(!this.viewer){console.warn("getFillMaterialParamInfo: viewer is undefined");return}return await Uo(this.viewer,e)}async getGlobalProperty(e){if(!this.viewer){console.warn("getGlobalProperty: viewer is undefined");return}return await Eo(this.viewer,e)}async getObjectByInfo(e){if(!this.viewer){console.warn("GetObjectByInfo: viewer is undefined");return}return await yo(this.viewer,e)}async defaultCameraFlyIn(e=1){if(!this.viewer){console.warn("DefaultCameraFlyIn: viewer is undefined");return}return await $i(this.viewer,e)}async startVoice(){if(!this.viewer){console.warn("startVoice:viewer is undefined");return}return await Zi(this.viewer)}async stopVoice(){if(!this.viewer){console.warn("startVoice:viewer is undefined");return}return await qi(this.viewer)}async mountPakFiles(e){if(!this.viewer){console.warn("mountPakFiles:viewer is undefined");return}return await ji(this.viewer,e)}async generateMemReport(){if(!this.viewer){console.warn("generateMemReport:viewer is undefined");return}return await Ao(this.viewer)}async quit(){if(!this.viewer){console.warn("Quit: viewer is undefined");return}return await lo(this.viewer)}async bindActorByTag(e,t){if(!this.viewer){console.warn("BindActorByTag: viewer is undefined");return}return await So(this.viewer,e,t)}async restoreOriginalScene(){if(!this.viewer){console.warn("RestoreOriginalScene: viewer is undefined");return}return await Io(this.viewer)}async unBindActorByID(e){if(!this.viewer){console.warn("UnBindActorByID: viewer is undefined");return}return await To(this.viewer,e)}async unBindActorByTag(e){if(!this.viewer){console.warn("UnBindActorByTag: viewer is undefined");return}return await Ho(this.viewer,e)}async createActorByClass(e,t){if(!this.viewer){console.warn("CreateActorByClass: viewer is undefined");return}return await Lo(this.viewer,e,t)}async bind3DTilesetByTag(e,t){if(!this.viewer){console.warn("Bind3DTilesetByTag: viewer is undefined");return}return await bo(this.viewer,e,t)}async unBind3DTilesetByTag(e){if(!this.viewer){console.warn("UnBind3DTilesetByTag: viewer is undefined");return}return await Mo(this.viewer,e)}async unBind3DTilesetById(e){if(!this.viewer){console.warn("UnBind3DTilesetById: viewer is undefined");return}return await Do(this.viewer,e)}async bindImageryByTag(e,t,n){if(!this.viewer){console.warn("BindImageryByTag: viewer is undefined");return}return await Ro(this.viewer,e,t,n)}async unBindImageryByTag(e,t){if(!this.viewer){console.warn("UnBindImageryByTag: viewer is undefined");return}return await xo(this.viewer,e,t)}async unBindImageryById(e){if(!this.viewer){console.warn("UnBindImageryById: viewer is undefined");return}return await Po(this.viewer,e)}async getIdByComponentNameAndHitItem(e,t,n){if(!this.viewer){console.warn("GetIdByComponentNameAndHitItem: viewer is undefined");return}return await Ko(this.viewer,e,t,n)}async getCameraRelativeHeight(e="ECC_Visibility"){if(!this.viewer){console.warn("GetCameraRelativeHeight: viewer is undefined");return}return await Go(this.viewer,e)}async saveStringToFile(e,t,n){if(!this.viewer){console.warn("SaveStringToFile: viewer is undefined");return}return await ko(this.viewer,e,t,n)}async highlightActorByTag(e,t=!0){if(!this.viewer){console.warn("HighlightActorByTag: viewer is undefined");return}return await No(this.viewer,e,t)}async sendCustomMessage(e){if(!this.viewer){console.warn("SendCustomMessage: viewer is undefined");return}return await _o(this.viewer,e)}async getStatus(){if(!this.viewer){console.warn("GetStatus:viewer is undefined");return}return await Vo(this.viewer)}async getTilesetMaterialIDList(){if(!this.viewer){console.warn("GetTilesetMaterialIDList:viewer is undefined");return}return await Jo(this.viewer)}async pick(e,t,n){if(!this.viewer)return;let s=e;if(e&&window.ue&&this.container){const[i,o]=e,{x:a,y:l}=this.container.getBoundingClientRect();s=[a+i,l+o]}return await co(this.viewer,s,t,n)}async pickPosition(e){if(!this.viewer)return;let t=e;if(e&&window.ue&&this.container){const[n,s]=e,{x:i,y:o}=this.container.getBoundingClientRect();t=[i+n,o+s]}return await uo(this.viewer,t)}async quickPickPosition(e){return await this.pickPosition(e)}async getTerrainHeight(e){return await this.getHeightByLonLat(e[0],e[1])??void 0}async flyIn(e,t=[0,0,0],n=1,s="default"){if(!this.viewer)return;const i=await Ke(this.viewer,void 0,e,t,n,s);if(i)return i.endType===0&&console.warn(`flyTo:flyTo is end! endType:${i.endType}`),i.endType===1&&console.warn(`flyTo:飞行中断! endType:${i.endType}`),i}async flyTo(e,t,n="default"){if(!this.viewer)return;const s=await fe(this.viewer,void 0,void 0,e,t,n);if(s)return s.endType===0&&console.warn(`flyTo:flyTo is end! endType:${s.endType}`),s.endType===1&&console.warn(`flyTo:飞行中断! endType:${s.endType}`),s}flyToBoundingSphere(e,t,n=1){const s=[[e[0],e[1],0],[e[0],e[3],0],[e[2],e[3],0],[e[2],e[1],0]],i=c.getGeoBoundingSphereFromPositions(s);if(!i)return;const{center:o,radius:a}=i,l={distance:t??a,heading:0,pitch:-90,flyDuration:n,hDelta:0,pDelta:0};this.flyTo(l,o)}getCurrentCameraInfo(){const{position:e,rotation:t}=this._statusInfo;return{position:e,rotation:t}}transformFlyParam(e,t){}getLengthInPixel(){return this._statusInfo.length}async changeToWalk(e,t=4.2,n=1.6){if(!this.viewer)return;const s={mode:"Walk",position:e,jumpZVelocity:t,eyeHeight:n},i=await TA(this.viewer,s);return i&&!i.error&&(this._navigationMode.value=s.mode),i}async changeToMap(){if(!this.viewer)return;const e={mode:"Map"},t=await TA(this.viewer,e);return t&&!t.error&&(this._navigationMode.value=e.mode),t}async changeToRotateGlobe(e=38,t=1e7,n=60){if(!this.viewer)return;const s={mode:"RotateGlobe",latitude:e,height:t,cycleTime:n},i=await TA(this.viewer,s);return i&&!i.error&&(this._navigationMode.value=s.mode),i}async changeToLine(e,t=10,n=10,s=!0,i=10,o="auto"){if(!this.viewer)return;const a={mode:"Line",geoLineStringId:e,speed:t,heightOffset:n,loop:s,turnRateDPS:i,lineMode:o},l=await TA(this.viewer,a);return l&&!l.error&&(this._navigationMode.value=a.mode),l}async changeToUserDefined(e){if(!this.viewer)return;const t={mode:"UserDefined",userDefinedPawn:e},n=await TA(this.viewer,t);return n&&!n.error&&(this._navigationMode.value=t.mode),n}async changeToRotatePoint(e,t=5e4,n=60,s=0,i=-30){if(!this.viewer)return;const o={mode:"RotatePoint",position:e,distance:t,orbitPeriod:n,heading:s,pitch:i},a=await TA(this.viewer,o);return a&&!a.error&&(this._navigationMode.value=o.mode),a}async changeToFollow(e,t=0,n=0,s=-30,i=!0){if(!this.viewer)return;const o={mode:"Follow",objectId:e,distance:t,heading:n,pitch:s,relativeRotation:i},a=await TA(this.viewer,o);return a&&!a.error&&(this._navigationMode.value=o.mode),a}getFPS(){return this._statusInfo.fps}async getVersion(){const e=window.g_XE3CopyRights??{};if(!this.viewer)return e;const t=await vo(this.viewer);return e.esforue=t,e}async getHeightByLonLat(e,t,n="ECC_Visibility"){if(!this.viewer)return null;const s=await ho(this.viewer,e,t,n);return s&&s.height!==void 0?s.height:null}async getHeightsByLonLats(e,t="ECC_Visibility"){return this.viewer?await go(this.viewer,e,t):void 0}async capture(e=64,t=64){return this.viewer?await Bo(this.viewer,e,t):void 0}async partialCapture(e,t=[64,64]){if(!this.viewer){console.warn("partialCapture:viewer is undefined");return}return await fo(this.viewer,e,t)}async lonLatAltToScreenPosition(e){if(!this.viewer)return;const t=await wo(this.viewer,e);return t&&[t.X,t.Y]}async setGlobalProperty(e){if(this.viewer)return await ao(this.viewer,e)}async startEditing(e,t,n){n=Object.assign({useKeyToSwitch:!0,callSource:"outer"},n);const s=e.components.main??e;if(!s||!this.viewer||t==null)return;const i=Array.isArray(t)?[...t]:[t];return s.editingID=`${n.callSource}_${c.createGuid()}`,await Oo(this.viewer,s.id,s.editingID,i,n.useKeyToSwitch)}async stopEditing(){if(this.viewer)return await Wo(this.viewer)}async moveObjects(e){if(!this.viewer)return;const t=[],n=c.createGuid();for(let s=0;s<e.length;s++){const i=e[s],o=i.components.main??i;o.editingID=n,o&&t.push(o.id)}if(t.length!==0)return await Xo(this.viewer,t,n)}};p(se,"type",se.register("ESUeViewer",se)),p(se,"defaults",{...Be});let LA=se;(r=>{r.createDefaultProps=()=>({...c.ESViewer.createDefaultProps(),...zi(),resolutionScale:1,autoReconnect:!1,propChangedListening:void 0,objectEventListening:void 0,widgetEventListening:void 0,speechRecognitionListening:void 0,customMessageListening:void 0})})(LA||(LA={})),c.extendClassProps(LA.prototype,LA.createDefaultProps);class jA extends c.EngineObject{constructor(A,e){super(A,e);const t=e.viewer;if(!t)return;const n=this.ad(c.react(!1));A.components.main||this.d(this.createdEvent.don(()=>{const s=this.constructor.propValFuncs,i=A.defaultProps,o=Object.keys(i).filter(f=>s[f]!==null);o.push(...this.constructor.forceUeUpdateProps);const a=A.constructor.defaults,l={val:{}},d=[];for(let f of o){const B=f+"Changed",w=A[B];d.push(w);const v=s[f];if(v===null)throw console.error("vf === null error"),new Error("vf === null error");const m=()=>{const F=A[f]??a[f]??A.constructor[`default${f.charAt(0).toUpperCase()+f.slice(1)}`];let E=v?v(F,this,e,A):F;if(E===void 0){console.warn(`UE自动更新的属性,不应该为undefined! 属性名:${f} 对象名:${A.name} 对象id: ${A.id}`);return}l.val[f]=E};m(),this.d(w.don(m))}const h=()=>{t.callUeFunc({f:"update",p:{id:A.id,...l.val}}),l.val={}},u=this.dv(c.createNextAnimateFrameEvent(...d));this.d(u.don(h)),this.d(n.changed.don(h)),this.d(A.flushEvent.don(()=>u.flush()))})),A.components.main||(this.d(()=>{n.value&&Qn(t,A.id)}),t.callUeFunc({f:"create",p:{type:A.typeName,id:A.id}}).then(()=>{n.value=!0}).catch(s=>console.error(s)))}}p(jA,"propValFuncs",{ref:null,devTags:null,extras:null,execOnceFuncStr:null,updateFuncStr:null,toDestroyFuncStr:null}),p(jA,"forceUeUpdateProps",[]);class AA extends jA{constructor(A,e){super(A,e);const t=e.viewer;t&&(this.d(A.flyToEvent.don(n=>{fe(t,A.id,n)})),this.d(A.flyInEvent.don(n=>{var s,i;Ke(t,A.id,(s=A.flyInParam)==null?void 0:s.position,(i=A.flyInParam)==null?void 0:i.rotation,n??1)})),this.d(A.calcFlyToParamEvent.don(()=>{$A(t,A.id)})),this.d(A.calcFlyInParamEvent.don(()=>{const n=e.getCurrentCameraInfo();if(!n)return;const{position:s,rotation:i}=n;A.flyInParam={position:s,rotation:i,flyDuration:1}})),this.d(e.propChanged.don(n=>{n.objId===A.id&&Object.keys(n.props).forEach(s=>{const i=n.props[s]===null?void 0:n.props[s];A[s]=i})})))}}class P extends AA{constructor(A,e){super(A,e);const t=e.viewer;if(!t)return;const n=()=>{A.editing||t.callUeFunc({f:"update",p:{id:A.id,position:A.position,rotation:A.rotation}})},s=this.dv(c.createNextAnimateFrameEvent(A.positionChanged,A.rotationChanged,A.editingChanged));this.d(s.don(()=>{setTimeout(n,0)})),this.d(A.smoothMoveEvent.don((a,l)=>{_e(t,A.id,a,l)})),this.d(A.smoothMoveWithRotationEvent.don((a,l,d)=>{Ge(t,A.id,a,l,d)})),this.d(A.smoothMoveOnGroundEvent.don((a,l,d,h)=>{ke(t,A.id,a,l,h,d)})),this.d(A.smoothMoveWithRotationOnGroundEvent.don((a,l,d,h,u)=>{Ne(t,A.id,a,l,d,h,u)})),this.d(A.smoothMoveKeepPitchEvent.don(async(a,l)=>{const d=await t.callUeFunc({f:"SmoothMoveKeepPitch",p:{id:A.id,Destination:a,Time:l}});d.error&&console.error("SmoothMoveKeepPitch:",d.error)})),this.d(A.automaticLandingEvent.don(a=>{const l=[A.position[0],A.position[1]];e.getHeightByLonLat(A.position[0],A.position[1],"Visibility").then(d=>{d!==null&&(A.position=[...l,d],A.collision=a)})}));const i=async(a,l,d,h)=>{const{viewer:u}=a;if(!u){console.error("SmoothMoveRelatively: ueViewer.viewer is undefined");return}const f=await u.callUeFunc({f:"SmoothMoveRelatively",p:{id:l,RelativePosition:d,Time:h}});return f.error&&console.error("SmoothMoveRelatively:",f.error),f};this.d(A.smoothMoveRelativelyEvent.don((a,l)=>{i(e,A.id,a,l)}));const o=async(a,l,d,h,u)=>{const{viewer:f}=a;if(!f){console.error("SmoothMoveRelativelyWithRotation: ueViewer.viewer is undefined");return}const B=await f.callUeFunc({f:"SmoothMoveRelativelyWithRotation",p:{id:l,RelativePosition:d,NewRotation:h,Time:u}});return B.error&&console.error("SmoothMoveRelativelyWithRotation:",B.error),B};this.d(A.smoothMoveRelativelyWithRotationEvent.don((a,l,d)=>{o(e,A.id,a,l,d)}))}}class rA extends AA{constructor(A,e){super(A,e);const t=e.viewer;if(!t)return;const n=()=>{A.editing||t.callUeFunc({f:"update",p:{id:A.id,points:A.points}})},s=this.dv(c.createNextAnimateFrameEvent(A.pointsChanged,A.editingChanged));this.d(s.don(()=>{setTimeout(n,0)}))}}p(rA,"propValFuncs",{...AA.propValFuncs,pointStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})}),strokeStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})}),fillStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})})});class QA extends P{constructor(A,e){super(A,e),e.viewer&&this.d(e.widgetEvent.don(n=>{if(n.objId!==A.id)return;const{type:s,add:i}=n;A.widgetEvent.emit({type:s,add:i})}))}}class xn extends P{constructor(A,e){super(A,e),e.viewer}}p(xn,"propValFuncs",{...P.propValFuncs,pointStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})}),strokeStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})}),fillStyle:A=>({...A,materialParams:JSON.stringify(A.materialParams??{})})});class Ur extends xn{constructor(A,e){super(A,e),e.viewer}}const Al=r=>{switch(r){case 0:return"成功绑定";case 1:return"解绑之前的内容,成功绑定";case 2:return"没搜索到ActorTag,无法绑定";case 3:return"搜索到ActorTag但对应的Actor不是3dTileset,无法绑定";default:return"未知错误"}},ht=class ht extends c.EngineObject{constructor(e,t){super(e,t);p(this,"_styleColor",this.dv(c.react([])));p(this,"_styleVisable",this.dv(c.react([])));const n=t.viewer;if(!n){console.warn("UeES3DTileset: viewer is undefined!");return}let s,i;const o=async()=>{!s&&!i||await n.callUeFunc({f:"update",p:{id:e.id,url:e.url,show:e.show,collision:e.collision,allowPicking:e.allowPicking,flyToParam:e.flyToParam??c.ES3DTileset.defaultFlyToParam,flyInParam:e.flyInParam??c.ES3DTileset.defaultFlyInParam,highlightID:e.highlightID,highlightColor:e.highlightColor,highlight:e.highlight,materialMode:e.materialMode,maximumScreenSpaceError:e.maximumScreenSpaceError,colorMode:Reflect.has(e,"colorMode")?e.colorMode:void 0,offset:e.offset,rotation:e.rotation,cacheBytes:e.cacheBytes,colorBlendMode:e.colorBlendMode,materialOverrideMap:e.materialOverrideMap}})},a=this.dv(c.createNextAnimateFrameEvent(e.urlChanged,e.showChanged,e.flyToParamChanged,e.flyInParamChanged,e.collisionChanged,e.allowPickingChanged,e.highlightIDChanged,e.highlightColorChanged,e.highlightChanged,e.materialModeChanged,e.maximumScreenSpaceErrorChanged,e.offsetChanged,e.rotationChanged,e.cacheBytesChanged,e.colorBlendModeChanged,e.materialOverrideMapChanged));o(),this.d(a.don(o)),Reflect.has(e,"colorMode")&&this.d(e.colorModeChanged.don(()=>o()));const l=this.dv(c.react(void 0));{const h=this.dv(c.createNextAnimateFrameEvent(e.actorTagChanged,e.urlChanged)),u=()=>{e.actorTag?l.value={type:"ActorTag",actorTag:e.actorTag}:e.url?l.value={type:"CreatedUrl",url:e.url}:l.value=void 0,e.editing=!1};u(),this.d(h.don(u))}const d=async()=>{const{id:h}=e;if(s!==void 0){s=void 0;try{const u=await t.unBind3DTilesetById(h);if(!u)return;if(u.error!==""){console.warn(`UeES3DTileset UnBind3DTilesetById: ${u.error}`);return}}catch(u){console.warn(`UeES3DTileset UnBind3DTilesetById: ${u}`);return}}if(i!==void 0){i=void 0;try{const u=await n.callUeFunc({f:"destroy",p:{id:h}});if(!u)return;if(u.error!==""){console.warn(`UeES3DTileset Destroy: ${u.error}`);return}}catch(u){console.warn(`UeES3DTileset Destroy: ${u}`);return}}};this.d(()=>{d()});{const h=this.dv(c.createProcessingFromAsyncFunc(async f=>{if(l.value===void 0){await f.promise(d());return}if(l.value.type==="ActorTag"){const{actorTag:B}=l.value;if(s!==B&&await f.promise(d()),s!==void 0||B===void 0)return;try{s=B;const w=await f.promise(t.bind3DTilesetByTag(e.id,B));if(!w)return;if(w.error!==""){console.warn(`UeES3DTileset Bind3DTilesetByTag: ${w.error}`);return}if(w.re.type!==0)if(w.re.type===1)console.warn(`UeES3DTileset Bind3DTilesetByTag: ${Al(w.re.type)}`);else{console.warn(`UeES3DTileset Bind3DTilesetByTag: ${Al(w.re.type)}`);return}}catch(w){console.warn(`UeES3DTileset Bind3DTilesetByTag: ${w}`);return}}else if(l.value.type==="CreatedUrl"){const{url:B}=l.value;if(B!==i&&await d(),i!==void 0||B===void 0)return;try{i=B;const w=await f.promise(n.callUeFunc({f:"create",p:{type:e.typeName,id:e.id}}));if(!w)return;if(w.error!==""){console.warn(`UeES3DTileset create: ${w.error}`);return}}catch(w){console.warn(`UeES3DTileset create: ${w}`);return}}await f.promise(o())})),u=async()=>{h.restart()};u(),this.d(l.changed.don(u))}this.d(e.refreshTilesetEvent.don(()=>{Yi(n,e.id)})),this.d(e.flyToEvent.don(async(h,u)=>{if(!s&&!i)return;const f=await fe(n,e.id,h);let B="over";f===void 0?B="error":f.endType===0?B="over":f.endType===1&&(B="cancelled"),e.flyOverEvent.emit(u,B,t)})),this.d(e.calcFlyToParamEvent.don(()=>{!s&&!i||$A(n,e.id)})),this.d(e.calcFlyInParamEvent.don(async()=>{if(!s&&!i||!t.actived)return;const h=await t.getCurrentCameraInfo();if(!h)return;const{position:u,rotation:f}=h;e.flyInParam={position:u,rotation:f,flyDuration:1}})),this.d(t.propChanged.don(h=>{!s&&!i||h.objId===e.id&&Object.keys(h.props).forEach(u=>{const f=h.props[u]===null?void 0:h.props[u];e[u]=f})})),this.d(t.objectEvent.don(h=>{!s&&!i||h.id!==e.id||h.type!=="3DTilesetReady"||e.tilesetReady.emit(h.p)}));{const h=async(w,v)=>{if(!s&&!i)return;const m=await n.callUeFunc({f:"SetFeatureColor",p:{id:e.id,featureName:w,json:v}});if(m&&m.error!==""){console.warn(`UeES3DTileset SetFeatureColor: ${m.error}`);return}},u=async(w,v)=>{if(!s&&!i)return;const m=await n.callUeFunc({f:"SetFeatureVisable",p:{id:e.id,featureName:w,json:v}});if(m&&m.error!==""){console.warn(`UeES3DTileset SetFeatureVisable: ${m.error}`);return}},f=async()=>{if(!s&&!i)return;const w=await n.callUeFunc({f:"ResetFeatureStyle",p:{id:e.id}});if(w&&w.error!==""){console.warn(`UeES3DTileset ResetFeatureStyle: ${w.error}`);return}},B=async w=>{if(!s&&!i)return;const v=await n.callUeFunc({f:"SetFeatureStyle",p:{id:e.id,json:w}});if(v&&v.error!==""){console.warn(`UeES3DTileset SetFeatureStyle: ${v.error}`);return}};this.d(e.setFeatureColorEvent.don((w,v)=>{const m=[...this.styleColor,...v];this.styleColor=[...m],h(w,m)})),this.d(e.setFeatureVisableEvent.don((w,v)=>{const m=[...this.styleVisable,...v];this.styleVisable=[...m],u(w,m)})),this.d(e.resetFeatureStyleEvent.don(()=>{f(),this.styleColor=[],this.styleVisable=[]})),this.d(e.setFeatureStyleEvent.don(w=>{B(w)}))}{const h=async()=>{if(!s&&!i){e._featureTableResultEvent.emit(void 0);return}try{const u=await n.callUeFunc({f:"GetFeatureTable",p:{id:e.id}});u.error!==""&&console.warn(`UeES3DTileset GetFeatureTable: ${u.error}`),e._featureTableResultEvent.emit(u.re.table)}catch(u){console.warn(`UeES3DTileset GetFeatureTable: ${u}`),e._featureTableResultEvent.emit(void 0)}};this.d(e.getFeatureTableEvent.don(()=>{h()}))}{const h=async()=>{if(!s&&!i){e.getMaterialNameListEvent.emit(void 0);return}try{const u=await n.callUeFunc({f:"GetMaterialNameList",p:{id:e.id}});u.error!==""&&console.warn(`UeES3DTileset GetMaterialNameList: ${u.error}`),e.getMaterialNameListEvent.emit(u.re.materialNameList)}catch(u){console.warn(`UeES3DTileset GetMaterialNameList: ${u}`),e.getMaterialNameListEvent.emit(void 0)}};this.ad(e.getMaterialNameListEvent.don(u=>{u=="start"&&h()}))}}get styleColor(){return this._styleColor.value}set styleColor(e){this._styleColor.value=e}get styleVisable(){return this._styleVisable.value}set styleVisable(e){this._styleVisable.value=e}};p(ht,"type",ht.register("ESUeViewer",c.ES3DTileset.type,ht));let Er=ht;const el=r=>{switch(r){case 0:return"成功绑定";case 1:return"解绑之前的内容,成功绑定";case 2:return"没搜索到ActorTag,无法绑定";case 3:return"搜索到ActorTag对应的Actor是地形,无法绑定";case 4:return"没搜索到ComponentTag,无法绑定";default:return"未知错误"}},gt=class gt extends c.EngineObject{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}let n,s;const i=this.dv(c.react(void 0)),o=this.ad(c.reactJson(""));{const h=()=>{if(typeof A.url=="string")o.value=c.ESSceneObject.context.getStrFromEnv(A.url);else{const u=A.url;u.url=c.ESSceneObject.context.getStrFromEnv(u.url),o.value=u}};h(),this.ad(A.urlChanged.don(h))}const a=async()=>{if(!n&&!s)return;let h=A.targetID??c.ESImageryLayer.defaults.targetID;if(h&&h!=""){const u=c.ESSceneObject.getSceneObject(h);h=u?(u.components.main??u).id:h}await t.callUeFunc({f:"update",p:{id:A.id,show:A.show??!0,rectangle:A.rectangle??[-180,-90,180,90],collision:A.collision??!0,allowPicking:A.allowPicking??!1,flyToParam:A.flyToParam??c.ESImageryLayer.defaultFlyToParam,flyInParam:A.flyInParam??c.ESImageryLayer.defaultFlyInParam,url:o.value??"",zIndex:A.zIndex??0,maximumLevel:A.maximumLevel??c.ESImageryLayer.defaults.maximumLevel,minimumLevel:A.minimumLevel??c.ESImageryLayer.defaults.minimumLevel,options:A.options??c.ESImageryLayer.defaults.options,targetID:h,opacity:A.opacity??c.ESImageryLayer.defaults.opacity,splitDirection:A.splitDirection??c.ESImageryLayer.defaults.splitDirection}})},l=this.dv(c.createNextAnimateFrameEvent(A.showChanged,o.changed,A.flyToParamChanged,A.flyInParamChanged,A.zIndexChanged,A.collisionChanged,A.allowPickingChanged,A.maximumLevelChanged,A.minimumLevelChanged,A.rectangleChanged,A.optionsChanged,A.targetIDChanged,A.opacityChanged,A.splitDirectionChanged));this.d(l.don(a));const d=async()=>{const{id:h}=A;if(n!==void 0){n=void 0;try{const u=await e.unBindImageryById(h);if(!u)return;if(u.error!==""){console.warn(`UeESImageryLayer UnImageryByID: ${u.error}`);return}}catch(u){console.warn(`UeESImageryLayer UnImageryByID promise: ${u}`);return}}if(s!==void 0){s=void 0;try{const u=await t.callUeFunc({f:"destroy",p:{id:h,test:"UeESImageryLayer"}});if(!u)return;if(u.error!==""){console.warn(`UeESImageryLayer Destroy: ${u.error}`);return}}catch(u){console.warn(`UeESImageryLayer Destroy promise: ${u}`);return}}};this.d(()=>{d()});{const h=this.dv(c.createProcessingFromAsyncFunc(async f=>{if(i.value===void 0){await f.promise(d());return}if(i.value.type==="ActorTag"){const{actorTag:B,componentTag:w}=i.value;if(n!==B&&await f.promise(d()),n!==void 0||B===void 0)return;try{n=B;const v=await f.promise(e.bindImageryByTag(A.id,B,w));if(!v)return;if(v.error!==""){console.warn(`ESImageryLayer BindImageryByTag: ${v.error}`);return}if(v.re.type!==0)if(v.re.type===1)console.warn(`ESImageryLayer BindImageryByTag: ${el(v.re.type)}`);else{console.warn(`ESImageryLayer BindImageryByTag: ${el(v.re.type)}`);return}}catch(v){console.warn(`ESImageryLayer BindImageryByTag promise: ${v}`);return}}else if(i.value.type==="CreatedUrl"){const{url:B}=i.value;if(B!==s&&await f.promise(d()),s!==void 0||B===void 0)return;try{s=B;const w=await f.promise(t.callUeFunc({f:"create",p:{type:"ESImageryLayer",id:A.id}}));if(!w)return;if(w.error!==""){console.warn(`ESImageryLayer create: ${w.error}`);return}}catch{console.warn("ESImageryLayer create: create promise error");return}}await f.promise(a())})),u=async()=>{h.restart()};u(),this.d(i.changed.don(u))}{const h=this.dv(c.createNextAnimateFrameEvent(A.actorTagChanged,o.changed,A.componentTagChanged)),u=()=>{A.actorTag&&A.componentTag?i.value={type:"ActorTag",actorTag:A.actorTag,componentTag:A.componentTag}:o.value?i.value={type:"CreatedUrl",url:o.value}:i.value=void 0};u(),this.d(h.don(u))}this.d(A.flyToEvent.don(async(h,u)=>{if(!n&&!s)return;const f=await fe(t,A.id,h);let B="over";f===void 0?B="error":f.endType===0?B="over":f.endType===1&&(B="cancelled"),A.flyOverEvent.emit(u,B,e)})),this.d(A.flyInEvent.don(async(h,u)=>{var w,v;if(!n&&!s)return;const f=await Ke(t,A.id,(w=A.flyInParam)==null?void 0:w.position,(v=A.flyInParam)==null?void 0:v.rotation,h??1);let B="over";f===void 0?B="error":f.endType===0?B="over":f.endType===1&&(B="cancelled"),A.flyOverEvent.emit(u,B,e)})),this.d(A.calcFlyToParamEvent.don(()=>{!n&&!s||$A(t,A.id)})),this.d(A.calcFlyInParamEvent.don(async()=>{if(!e.actived)return;const h=await e.getCurrentCameraInfo();if(!h)return;const{position:u,rotation:f}=h;A.flyInParam={position:u,rotation:f,flyDuration:1}})),this.d(e.propChanged.don(h=>{!n&&!s||h.objId===A.id&&Object.keys(h.props).forEach(u=>{const f=h.props[u]===null?void 0:h.props[u];A[u]=f})}))}};p(gt,"type",gt.register("ESUeViewer",c.ESImageryLayer.type,gt));let Pn=gt;const ie=class ie extends AA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(ie,"type",ie.register("ESUeViewer",c.ESTerrainLayer.type,ie)),p(ie,"forceUeUpdateProps",[...AA.forceUeUpdateProps,"url"]),p(ie,"propValFuncs",{...AA.propValFuncs,url:A=>typeof A=="string"?c.ESSceneObject.context.getStrFromEnv(A):(A.url=c.ESSceneObject.context.getStrFromEnv(A.url),A),czmMaxzoom:null,czmMinzoom:null});let Kn=ie;const Bt=class Bt extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Bt,"type",Bt.register("ESUeViewer",c.ESAlarm.type,Bt));let Gn=Bt;const ft=class ft extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(ft,"type",ft.register("ESUeViewer",c.ESApertureEffect.type,ft));let kn=ft;const wt=class wt extends rA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(wt,"type",wt.register("ESUeViewer",c.ESGeoPolygon.type,wt));let uA=wt;const pt=class pt extends uA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=()=>{let i=c.ESAreaMeasurement.defaults.fillStyle;try{i={...A.fillStyle??c.ESAreaMeasurement.defaults.fillStyle}}catch(o){console.error("ESAreaMeasurement fillStyle 属性类型错误!",o),i={...c.ESAreaMeasurement.defaults.fillStyle}}i.materialParams=JSON.stringify(i.materialParams),t.callUeFunc({f:"update",p:{id:A.id,stroked:A.stroked??c.ESAreaMeasurement.defaults.stroked,fillStyle:i,filled:A.filled??c.ESAreaMeasurement.defaults.filled}}),console.log(i)},s=this.dv(c.createNextAnimateFrameEvent(A.fillStyleChanged,A.strokedChanged,A.filledChanged));this.d(s.don(n)),this.d(A.createdEvent.don(n))}};p(pt,"type",pt.register("ESUeViewer",c.ESAreaMeasurement.type,pt));let Nn=pt;const Ct=class Ct extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Ct,"type",Ct.register("ESUeViewer",c.ESBlastParticleSystem.type,Ct));let _n=Ct;const Le=class Le extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is underfined!");return}}};p(Le,"type",Le.register("ESUeViewer",c.ESBoxClipping.type,Le)),p(Le,"propValFuncs",{...P.propValFuncs,targetID:A=>{if(!A)return"";const e=c.ESSceneObject.getSceneObject(A);return e?(e.components.main??e).id:A}});let Vn=Le;const vt=class vt extends P{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.dispose(A.flyInEvent.don((n,s,i="default")=>{const{id:o,duration:a,position:l,rotation:d}=A;Ke(t,o,l,d,a??n,i)})),this.dispose(A.resetWithCurrentCameraEvent.don(()=>{Un(t,A.id)})),this.dispose(A.captureEvent.don((n,s)=>{e.capture(n,s).then(o=>{o&&(A.thumbnail=o)})}))}};p(vt,"type",vt.register("ESUeViewer",c.ESCameraView.type,vt));let On=vt;const mt=class mt extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(mt,"type",mt.register("ESUeViewer",c.ESCameraVisibleRange.type,mt));let Wn=mt;const Ft=class Ft extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Ft,"type",Ft.register("ESUeViewer",c.ESCar.type,Ft));let Xn=Ft;const Qt=class Qt extends rA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=()=>{let i=c.ESClassification.defaults.fillStyle;try{i={...A.fillStyle??c.ESClassification.defaults.fillStyle}}catch(o){console.error("ESClassification fillStyle 属性类型错误!",o),i={...c.ESClassification.defaults.fillStyle}}i.materialParams=JSON.stringify(i.materialParams),t.callUeFunc({f:"update",p:{id:A.id,filled:A.filled??c.ESClassification.defaults.filled,fillStyle:i}})},s=this.dv(c.createNextAnimateFrameEvent(A.fillStyleChanged,A.filledChanged));this.d(s.don(n)),this.d(A.createdEvent.don(n))}};p(Qt,"type",Qt.register("ESUeViewer",c.ESClassification.type,Qt));let Jn=Qt;const be=class be extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is underfined!");return}}};p(be,"type",be.register("ESUeViewer",c.ESClippingPlane.type,be)),p(be,"propValFuncs",{...P.propValFuncs,targetID:A=>{if(!A)return"";const e=c.ESSceneObject.getSceneObject(A);return e?(e.components.main??e).id:A}});let zn=be;const Ut=class Ut extends P{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=this.ad(c.reactJson(""));{const o=()=>{if(typeof A.url=="string")n.value=c.ESSceneObject.context.getStrFromEnv(A.url??c.ESDataMesh.defaults.url);else{const a=A.url;a.url=c.ESSceneObject.context.getStrFromEnv(a.url??c.ESDataMesh.defaults.url),n.value=a}};o(),this.ad(A.urlChanged.don(o))}const s=()=>{const o=A.colorStops??c.ESDataMesh.defaults.colorStops;t.callUeFunc({f:"update",p:{id:A.id,url:n.value??c.ESDataMesh.defaults.url,currentTime:A.currentTime??c.ESDataMesh.defaults.currentTime,minPropValue:A.minPropValue??c.ESDataMesh.defaults.minPropValue,maxPropValue:A.maxPropValue??c.ESDataMesh.defaults.maxPropValue,colorStops:JSON.stringify(o)}})},i=this.dv(c.createNextAnimateFrameEvent(n.changed,A.currentTimeChanged,A.minPropValueChanged,A.maxPropValueChanged,A.colorStopsChanged));this.d(i.don(s)),this.d(A.createdEvent.don(s))}};p(Ut,"type",Ut.register("ESUeViewer",c.ESDataMesh.type,Ut));let Yn=Ut;const Et=class Et extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Et,"type",Et.register("ESUeViewer",c.ESDatasmithRuntimeModel.type,Et));let $n=Et;const yt=class yt extends rA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(yt,"type",yt.register("ESUeViewer",c.ESDirectionMeasurement.type,yt));let Zn=yt;const St=class St extends rA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=()=>{let i;try{i={...A.strokeStyle??c.ESDistanceMeasurement.defaults.strokeStyle}}catch(o){console.error("ESDistanceMeasurement strokeStyle 属性类型错误!",o),i={...c.ESDistanceMeasurement.defaults.strokeStyle}}t.callUeFunc({f:"update",p:{id:A.id,strokeStyle:i}})},s=this.dv(c.createNextAnimateFrameEvent(A.strokeStyleChanged));this.d(s.don(n)),this.d(A.createdEvent.don(n))}};p(St,"type",St.register("ESUeViewer",c.ESDistanceMeasurement.type,St));let qn=St;const It=class It extends Ur{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(It,"type",It.register("ESUeViewer",c.ESLocalPolygon.type,It));let yr=It;const Tt=class Tt extends yr{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Tt,"type",Tt.register("ESUeViewer",c.ESDynamicWater.type,Tt));let jn=Tt;const Ht=class Ht extends AA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}this.d(e.widgetEvent.don(n=>{if(n.objId!==A.id)return;const{type:s,properties:i}=n;A.widgetEvent.emit({type:s,properties:i})}))}};p(Ht,"type",Ht.register("ESUeViewer",c.ESEntityCluster.type,Ht));let As=Ht;const Me=class Me extends uA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Me,"type",Me.register("ESUeViewer",c.ESExcavate.type,Me)),p(Me,"propValFuncs",{...uA.propValFuncs,targetID:A=>{if(!A)return"";const e=c.ESSceneObject.getSceneObject(A);return e?(e.components.main??e).id:A}});let es=Me;const Lt=class Lt extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Lt,"type",Lt.register("ESUeViewer",c.ESFireParticleSystem.type,Lt));let ts=Lt;const bt=class bt extends AA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=this.ad(c.reactJson(""));{const o=()=>{if(typeof A.url=="string")n.value=c.ESSceneObject.context.getStrFromEnv(A.url);else{const a=A.url;a.url=c.ESSceneObject.context.getStrFromEnv(a.url),n.value=a}};o(),this.ad(A.urlChanged.don(o))}const s=()=>{t.callUeFunc({f:"update",p:{id:A.id,url:n.value??c.ESForestTileset.defaults.url,treeTypes:A.treeTypes??c.ESForestTileset.defaults.treeTypes,xiaoBanWidget:A.xiaoBanWidget??c.ESForestTileset.defaults.xiaoBanWidget,youShiSZ:A.youShiSZ??c.ESForestTileset.defaults.youShiSZ,diLei:A.diLei??c.ESForestTileset.defaults.diLei,senLinLB:A.senLinLB??c.ESForestTileset.defaults.senLinLB,labelMaterial:A.labelMaterial??c.ESForestTileset.defaults.labelMaterial,heightOffset:A.heightOffset??c.ESForestTileset.defaults.heightOffset}})},i=this.dv(c.createNextAnimateFrameEvent(n.changed,A.treeTypesChanged,A.xiaoBanWidgetChanged,A.youShiSZChanged,A.diLeiChanged,A.senLinLBChanged,A.labelMaterialChanged,A.heightOffsetChanged));this.d(i.don(s)),this.d(A.createdEvent.don(s))}};p(bt,"type",bt.register("ESUeViewer",c.ESForestTileset.type,bt));let rs=bt;/*!
|
|
92
92
|
* html2canvas 1.4.1 <https://html2canvas.hertzen.com>
|
|
93
93
|
* Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
|
|
94
94
|
* Released under MIT License
|
|
@@ -105,14 +105,14 @@ Msg: ${e}`;console.warn(t)}};g.verboseLogLevel=5,function(r){r.LIST_STREAMERS="l
|
|
|
105
105
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
106
106
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
107
107
|
PERFORMANCE OF THIS SOFTWARE.
|
|
108
|
-
***************************************************************************** */var ss=function(r,A){return ss=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},ss(r,A)};function mA(r,A){if(typeof A!="function"&&A!==null)throw new TypeError("Class extends value "+String(A)+" is not a constructor or null");ss(r,A);function e(){this.constructor=r}r.prototype=A===null?Object.create(A):(e.prototype=A.prototype,new e)}var is=function(){return is=Object.assign||function(A){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&(A[s]=e[s])}return A},is.apply(this,arguments)};function uA(r,A,e,t){function n(s){return s instanceof e?s:new e(function(i){i(s)})}return new(e||(e=Promise))(function(s,i){function o(d){try{l(t.next(d))}catch(h){i(h)}}function a(d){try{l(t.throw(d))}catch(h){i(h)}}function l(d){d.done?s(d.value):n(d.value).then(o,a)}l((t=t.apply(r,[])).next())})}function sA(r,A){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},t,n,s,i;return i={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(i[Symbol.iterator]=function(){return this}),i;function o(l){return function(d){return a([l,d])}}function a(l){if(t)throw new TypeError("Generator is already executing.");for(;e;)try{if(t=1,n&&(s=l[0]&2?n.return:l[0]?n.throw||((s=n.return)&&s.call(n),0):n.next)&&!(s=s.call(n,l[1])).done)return s;switch(n=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return e.label++,{value:l[1],done:!1};case 5:e.label++,n=l[1],l=[0];continue;case 7:l=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){e=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){e.label=l[1];break}if(l[0]===6&&e.label<s[1]){e.label=s[1],s=l;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(l);break}s[2]&&e.ops.pop(),e.trys.pop();continue}l=A.call(r,e)}catch(d){l=[6,d],n=0}finally{t=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}function Ir(r,A,e){if(arguments.length===2)for(var t=0,n=A.length,s;t<n;t++)(s||!(t in A))&&(s||(s=Array.prototype.slice.call(A,0,t)),s[t]=A[t]);return r.concat(s||A)}for(var bA=function(){function r(A,e,t,n){this.left=A,this.top=e,this.width=t,this.height=n}return r.prototype.add=function(A,e,t,n){return new r(this.left+A,this.top+e,this.width+t,this.height+n)},r.fromClientRect=function(A,e){return new r(e.left+A.windowBounds.left,e.top+A.windowBounds.top,e.width,e.height)},r.fromDOMRectList=function(A,e){var t=Array.from(e).find(function(n){return n.width!==0});return t?new r(t.left+A.windowBounds.left,t.top+A.windowBounds.top,t.width,t.height):r.EMPTY},r.EMPTY=new r(0,0,0,0),r}(),Tr=function(r,A){return bA.fromClientRect(r,A.getBoundingClientRect())},Eu=function(r){var A=r.body,e=r.documentElement;if(!A||!e)throw new Error("Unable to get document size");var t=Math.max(Math.max(A.scrollWidth,e.scrollWidth),Math.max(A.offsetWidth,e.offsetWidth),Math.max(A.clientWidth,e.clientWidth)),n=Math.max(Math.max(A.scrollHeight,e.scrollHeight),Math.max(A.offsetHeight,e.offsetHeight),Math.max(A.clientHeight,e.clientHeight));return new bA(0,0,t,n)},Hr=function(r){for(var A=[],e=0,t=r.length;e<t;){var n=r.charCodeAt(e++);if(n>=55296&&n<=56319&&e<t){var s=r.charCodeAt(e++);(s&64512)===56320?A.push(((n&1023)<<10)+(s&1023)+65536):(A.push(n),e--)}else A.push(n)}return A},W=function(){for(var r=[],A=0;A<arguments.length;A++)r[A]=arguments[A];if(String.fromCodePoint)return String.fromCodePoint.apply(String,r);var e=r.length;if(!e)return"";for(var t=[],n=-1,s="";++n<e;){var i=r[n];i<=65535?t.push(i):(i-=65536,t.push((i>>10)+55296,i%1024+56320)),(n+1===e||t.length>16384)&&(s+=String.fromCharCode.apply(String,t),t.length=0)}return s},tl="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",yu=typeof Uint8Array>"u"?[]:new Uint8Array(256),Lr=0;Lr<tl.length;Lr++)yu[tl.charCodeAt(Lr)]=Lr;for(var rl="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Je=typeof Uint8Array>"u"?[]:new Uint8Array(256),br=0;br<rl.length;br++)Je[rl.charCodeAt(br)]=br;for(var Su=function(r){var A=r.length*.75,e=r.length,t,n=0,s,i,o,a;r[r.length-1]==="="&&(A--,r[r.length-2]==="="&&A--);var l=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u"&&typeof Uint8Array.prototype.slice<"u"?new ArrayBuffer(A):new Array(A),d=Array.isArray(l)?l:new Uint8Array(l);for(t=0;t<e;t+=4)s=Je[r.charCodeAt(t)],i=Je[r.charCodeAt(t+1)],o=Je[r.charCodeAt(t+2)],a=Je[r.charCodeAt(t+3)],d[n++]=s<<2|i>>4,d[n++]=(i&15)<<4|o>>2,d[n++]=(o&3)<<6|a&63;return l},Iu=function(r){for(var A=r.length,e=[],t=0;t<A;t+=2)e.push(r[t+1]<<8|r[t]);return e},Tu=function(r){for(var A=r.length,e=[],t=0;t<A;t+=4)e.push(r[t+3]<<24|r[t+2]<<16|r[t+1]<<8|r[t]);return e},jA=5,os=11,as=2,Hu=os-jA,nl=65536>>jA,Lu=1<<jA,ls=Lu-1,bu=1024>>jA,Mu=nl+bu,Du=Mu,Ru=32,xu=Du+Ru,Pu=65536>>os,Ku=1<<Hu,Gu=Ku-1,sl=function(r,A,e){return r.slice?r.slice(A,e):new Uint16Array(Array.prototype.slice.call(r,A,e))},ku=function(r,A,e){return r.slice?r.slice(A,e):new Uint32Array(Array.prototype.slice.call(r,A,e))},Nu=function(r,A){var e=Su(r),t=Array.isArray(e)?Tu(e):new Uint32Array(e),n=Array.isArray(e)?Iu(e):new Uint16Array(e),s=24,i=sl(n,s/2,t[4]/2),o=t[5]===2?sl(n,(s+t[4])/2):ku(t,Math.ceil((s+t[4])/4));return new _u(t[0],t[1],t[2],t[3],i,o)},_u=function(){function r(A,e,t,n,s,i){this.initialValue=A,this.errorValue=e,this.highStart=t,this.highValueIndex=n,this.index=s,this.data=i}return r.prototype.get=function(A){var e;if(A>=0){if(A<55296||A>56319&&A<=65535)return e=this.index[A>>jA],e=(e<<as)+(A&ls),this.data[e];if(A<=65535)return e=this.index[nl+(A-55296>>jA)],e=(e<<as)+(A&ls),this.data[e];if(A<this.highStart)return e=xu-Pu+(A>>os),e=this.index[e],e+=A>>jA&Gu,e=this.index[e],e=(e<<as)+(A&ls),this.data[e];if(A<=1114111)return this.data[this.highValueIndex]}return this.errorValue},r}(),il="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Vu=typeof Uint8Array>"u"?[]:new Uint8Array(256),Mr=0;Mr<il.length;Mr++)Vu[il.charCodeAt(Mr)]=Mr;var Ou="KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==",ol=50,Wu=1,al=2,ll=3,Xu=4,Ju=5,cl=7,dl=8,ul=9,GA=10,cs=11,hl=12,ds=13,zu=14,ze=15,us=16,Dr=17,Ye=18,Yu=19,gl=20,hs=21,$e=22,gs=23,ve=24,BA=25,Ze=26,qe=27,me=28,$u=29,Ae=30,Zu=31,Rr=32,xr=33,Bs=34,fs=35,ws=36,je=37,ps=38,Pr=39,Kr=40,Cs=41,Bl=42,qu=43,ju=[9001,65288],fl="!",x="×",Gr="÷",vs=Nu(Ou),MA=[Ae,ws],ms=[Wu,al,ll,Ju],wl=[GA,dl],pl=[qe,Ze],Ah=ms.concat(wl),Cl=[ps,Pr,Kr,Bs,fs],eh=[ze,ds],th=function(r,A){A===void 0&&(A="strict");var e=[],t=[],n=[];return r.forEach(function(s,i){var o=vs.get(s);if(o>ol?(n.push(!0),o-=ol):n.push(!1),["normal","auto","loose"].indexOf(A)!==-1&&[8208,8211,12316,12448].indexOf(s)!==-1)return t.push(i),e.push(us);if(o===Xu||o===cs){if(i===0)return t.push(i),e.push(Ae);var a=e[i-1];return Ah.indexOf(a)===-1?(t.push(t[i-1]),e.push(a)):(t.push(i),e.push(Ae))}if(t.push(i),o===Zu)return e.push(A==="strict"?hs:je);if(o===Bl||o===$u)return e.push(Ae);if(o===qu)return s>=131072&&s<=196605||s>=196608&&s<=262141?e.push(je):e.push(Ae);e.push(o)}),[t,e,n]},Fs=function(r,A,e,t){var n=t[e];if(Array.isArray(r)?r.indexOf(n)!==-1:r===n)for(var s=e;s<=t.length;){s++;var i=t[s];if(i===A)return!0;if(i!==GA)break}if(n===GA)for(var s=e;s>0;){s--;var o=t[s];if(Array.isArray(r)?r.indexOf(o)!==-1:r===o)for(var a=e;a<=t.length;){a++;var i=t[a];if(i===A)return!0;if(i!==GA)break}if(o!==GA)break}return!1},vl=function(r,A){for(var e=r;e>=0;){var t=A[e];if(t===GA)e--;else return t}return 0},rh=function(r,A,e,t,n){if(e[t]===0)return x;var s=t-1;if(Array.isArray(n)&&n[s]===!0)return x;var i=s-1,o=s+1,a=A[s],l=i>=0?A[i]:0,d=A[o];if(a===al&&d===ll)return x;if(ms.indexOf(a)!==-1)return fl;if(ms.indexOf(d)!==-1||wl.indexOf(d)!==-1)return x;if(vl(s,A)===dl)return Gr;if(vs.get(r[s])===cs||(a===Rr||a===xr)&&vs.get(r[o])===cs||a===cl||d===cl||a===ul||[GA,ds,ze].indexOf(a)===-1&&d===ul||[Dr,Ye,Yu,ve,me].indexOf(d)!==-1||vl(s,A)===$e||Fs(gs,$e,s,A)||Fs([Dr,Ye],hs,s,A)||Fs(hl,hl,s,A))return x;if(a===GA)return Gr;if(a===gs||d===gs)return x;if(d===us||a===us)return Gr;if([ds,ze,hs].indexOf(d)!==-1||a===zu||l===ws&&eh.indexOf(a)!==-1||a===me&&d===ws||d===gl||MA.indexOf(d)!==-1&&a===BA||MA.indexOf(a)!==-1&&d===BA||a===qe&&[je,Rr,xr].indexOf(d)!==-1||[je,Rr,xr].indexOf(a)!==-1&&d===Ze||MA.indexOf(a)!==-1&&pl.indexOf(d)!==-1||pl.indexOf(a)!==-1&&MA.indexOf(d)!==-1||[qe,Ze].indexOf(a)!==-1&&(d===BA||[$e,ze].indexOf(d)!==-1&&A[o+1]===BA)||[$e,ze].indexOf(a)!==-1&&d===BA||a===BA&&[BA,me,ve].indexOf(d)!==-1)return x;if([BA,me,ve,Dr,Ye].indexOf(d)!==-1)for(var h=s;h>=0;){var u=A[h];if(u===BA)return x;if([me,ve].indexOf(u)!==-1)h--;else break}if([qe,Ze].indexOf(d)!==-1)for(var h=[Dr,Ye].indexOf(a)!==-1?i:s;h>=0;){var u=A[h];if(u===BA)return x;if([me,ve].indexOf(u)!==-1)h--;else break}if(ps===a&&[ps,Pr,Bs,fs].indexOf(d)!==-1||[Pr,Bs].indexOf(a)!==-1&&[Pr,Kr].indexOf(d)!==-1||[Kr,fs].indexOf(a)!==-1&&d===Kr||Cl.indexOf(a)!==-1&&[gl,Ze].indexOf(d)!==-1||Cl.indexOf(d)!==-1&&a===qe||MA.indexOf(a)!==-1&&MA.indexOf(d)!==-1||a===ve&&MA.indexOf(d)!==-1||MA.concat(BA).indexOf(a)!==-1&&d===$e&&ju.indexOf(r[o])===-1||MA.concat(BA).indexOf(d)!==-1&&a===Ye)return x;if(a===Cs&&d===Cs){for(var f=e[s],B=1;f>0&&(f--,A[f]===Cs);)B++;if(B%2!==0)return x}return a===Rr&&d===xr?x:Gr},nh=function(r,A){A||(A={lineBreak:"normal",wordBreak:"normal"});var e=th(r,A.lineBreak),t=e[0],n=e[1],s=e[2];(A.wordBreak==="break-all"||A.wordBreak==="break-word")&&(n=n.map(function(o){return[BA,Ae,Bl].indexOf(o)!==-1?je:o}));var i=A.wordBreak==="keep-all"?s.map(function(o,a){return o&&r[a]>=19968&&r[a]<=40959}):void 0;return[t,n,i]},sh=function(){function r(A,e,t,n){this.codePoints=A,this.required=e===fl,this.start=t,this.end=n}return r.prototype.slice=function(){return W.apply(void 0,this.codePoints.slice(this.start,this.end))},r}(),ih=function(r,A){var e=Hr(r),t=nh(e,A),n=t[0],s=t[1],i=t[2],o=e.length,a=0,l=0;return{next:function(){if(l>=o)return{done:!0,value:null};for(var d=x;l<o&&(d=rh(e,s,n,++l,i))===x;);if(d!==x||l===o){var h=new sh(e,d,a,l);return a=l,{value:h,done:!1}}return{done:!0,value:null}}}},oh=1,ah=2,At=4,ml=8,kr=10,Fl=47,et=92,lh=9,ch=32,Nr=34,tt=61,dh=35,uh=36,hh=37,_r=39,Vr=40,rt=41,gh=95,hA=45,Bh=33,fh=60,wh=62,ph=64,Ch=91,vh=93,mh=61,Fh=123,Or=63,Qh=125,Ql=124,Uh=126,Eh=128,Ul=65533,Qs=42,ee=43,yh=44,Sh=58,Ih=59,nt=46,Th=0,Hh=8,Lh=11,bh=14,Mh=31,Dh=127,UA=-1,El=48,yl=97,Sl=101,Rh=102,xh=117,Ph=122,Il=65,Tl=69,Hl=70,Kh=85,Gh=90,iA=function(r){return r>=El&&r<=57},kh=function(r){return r>=55296&&r<=57343},Fe=function(r){return iA(r)||r>=Il&&r<=Hl||r>=yl&&r<=Rh},Nh=function(r){return r>=yl&&r<=Ph},_h=function(r){return r>=Il&&r<=Gh},Vh=function(r){return Nh(r)||_h(r)},Oh=function(r){return r>=Eh},Wr=function(r){return r===kr||r===lh||r===ch},Xr=function(r){return Vh(r)||Oh(r)||r===gh},Ll=function(r){return Xr(r)||iA(r)||r===hA},Wh=function(r){return r>=Th&&r<=Hh||r===Lh||r>=bh&&r<=Mh||r===Dh},kA=function(r,A){return r!==et?!1:A!==kr},Jr=function(r,A,e){return r===hA?Xr(A)||kA(A,e):Xr(r)?!0:!!(r===et&&kA(r,A))},Us=function(r,A,e){return r===ee||r===hA?iA(A)?!0:A===nt&&iA(e):iA(r===nt?A:r)},Xh=function(r){var A=0,e=1;(r[A]===ee||r[A]===hA)&&(r[A]===hA&&(e=-1),A++);for(var t=[];iA(r[A]);)t.push(r[A++]);var n=t.length?parseInt(W.apply(void 0,t),10):0;r[A]===nt&&A++;for(var s=[];iA(r[A]);)s.push(r[A++]);var i=s.length,o=i?parseInt(W.apply(void 0,s),10):0;(r[A]===Tl||r[A]===Sl)&&A++;var a=1;(r[A]===ee||r[A]===hA)&&(r[A]===hA&&(a=-1),A++);for(var l=[];iA(r[A]);)l.push(r[A++]);var d=l.length?parseInt(W.apply(void 0,l),10):0;return e*(n+o*Math.pow(10,-i))*Math.pow(10,a*d)},Jh={type:2},zh={type:3},Yh={type:4},$h={type:13},Zh={type:8},qh={type:21},jh={type:9},Ag={type:10},eg={type:11},tg={type:12},rg={type:14},zr={type:23},ng={type:1},sg={type:25},ig={type:24},og={type:26},ag={type:27},lg={type:28},cg={type:29},dg={type:31},Es={type:32},bl=function(){function r(){this._value=[]}return r.prototype.write=function(A){this._value=this._value.concat(Hr(A))},r.prototype.read=function(){for(var A=[],e=this.consumeToken();e!==Es;)A.push(e),e=this.consumeToken();return A},r.prototype.consumeToken=function(){var A=this.consumeCodePoint();switch(A){case Nr:return this.consumeStringToken(Nr);case dh:var e=this.peekCodePoint(0),t=this.peekCodePoint(1),n=this.peekCodePoint(2);if(Ll(e)||kA(t,n)){var s=Jr(e,t,n)?ah:oh,i=this.consumeName();return{type:5,value:i,flags:s}}break;case uh:if(this.peekCodePoint(0)===tt)return this.consumeCodePoint(),$h;break;case _r:return this.consumeStringToken(_r);case Vr:return Jh;case rt:return zh;case Qs:if(this.peekCodePoint(0)===tt)return this.consumeCodePoint(),rg;break;case ee:if(Us(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case yh:return Yh;case hA:var o=A,a=this.peekCodePoint(0),l=this.peekCodePoint(1);if(Us(o,a,l))return this.reconsumeCodePoint(A),this.consumeNumericToken();if(Jr(o,a,l))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();if(a===hA&&l===wh)return this.consumeCodePoint(),this.consumeCodePoint(),ig;break;case nt:if(Us(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case Fl:if(this.peekCodePoint(0)===Qs)for(this.consumeCodePoint();;){var d=this.consumeCodePoint();if(d===Qs&&(d=this.consumeCodePoint(),d===Fl))return this.consumeToken();if(d===UA)return this.consumeToken()}break;case Sh:return og;case Ih:return ag;case fh:if(this.peekCodePoint(0)===Bh&&this.peekCodePoint(1)===hA&&this.peekCodePoint(2)===hA)return this.consumeCodePoint(),this.consumeCodePoint(),sg;break;case ph:var h=this.peekCodePoint(0),u=this.peekCodePoint(1),f=this.peekCodePoint(2);if(Jr(h,u,f)){var i=this.consumeName();return{type:7,value:i}}break;case Ch:return lg;case et:if(kA(A,this.peekCodePoint(0)))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();break;case vh:return cg;case mh:if(this.peekCodePoint(0)===tt)return this.consumeCodePoint(),Zh;break;case Fh:return eg;case Qh:return tg;case xh:case Kh:var B=this.peekCodePoint(0),w=this.peekCodePoint(1);return B===ee&&(Fe(w)||w===Or)&&(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(A),this.consumeIdentLikeToken();case Ql:if(this.peekCodePoint(0)===tt)return this.consumeCodePoint(),jh;if(this.peekCodePoint(0)===Ql)return this.consumeCodePoint(),qh;break;case Uh:if(this.peekCodePoint(0)===tt)return this.consumeCodePoint(),Ag;break;case UA:return Es}return Wr(A)?(this.consumeWhiteSpace(),dg):iA(A)?(this.reconsumeCodePoint(A),this.consumeNumericToken()):Xr(A)?(this.reconsumeCodePoint(A),this.consumeIdentLikeToken()):{type:6,value:W(A)}},r.prototype.consumeCodePoint=function(){var A=this._value.shift();return typeof A>"u"?-1:A},r.prototype.reconsumeCodePoint=function(A){this._value.unshift(A)},r.prototype.peekCodePoint=function(A){return A>=this._value.length?-1:this._value[A]},r.prototype.consumeUnicodeRangeToken=function(){for(var A=[],e=this.consumeCodePoint();Fe(e)&&A.length<6;)A.push(e),e=this.consumeCodePoint();for(var t=!1;e===Or&&A.length<6;)A.push(e),e=this.consumeCodePoint(),t=!0;if(t){var n=parseInt(W.apply(void 0,A.map(function(a){return a===Or?El:a})),16),s=parseInt(W.apply(void 0,A.map(function(a){return a===Or?Hl:a})),16);return{type:30,start:n,end:s}}var i=parseInt(W.apply(void 0,A),16);if(this.peekCodePoint(0)===hA&&Fe(this.peekCodePoint(1))){this.consumeCodePoint(),e=this.consumeCodePoint();for(var o=[];Fe(e)&&o.length<6;)o.push(e),e=this.consumeCodePoint();var s=parseInt(W.apply(void 0,o),16);return{type:30,start:i,end:s}}else return{type:30,start:i,end:i}},r.prototype.consumeIdentLikeToken=function(){var A=this.consumeName();return A.toLowerCase()==="url"&&this.peekCodePoint(0)===Vr?(this.consumeCodePoint(),this.consumeUrlToken()):this.peekCodePoint(0)===Vr?(this.consumeCodePoint(),{type:19,value:A}):{type:20,value:A}},r.prototype.consumeUrlToken=function(){var A=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===UA)return{type:22,value:""};var e=this.peekCodePoint(0);if(e===_r||e===Nr){var t=this.consumeStringToken(this.consumeCodePoint());return t.type===0&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===UA||this.peekCodePoint(0)===rt)?(this.consumeCodePoint(),{type:22,value:t.value}):(this.consumeBadUrlRemnants(),zr)}for(;;){var n=this.consumeCodePoint();if(n===UA||n===rt)return{type:22,value:W.apply(void 0,A)};if(Wr(n))return this.consumeWhiteSpace(),this.peekCodePoint(0)===UA||this.peekCodePoint(0)===rt?(this.consumeCodePoint(),{type:22,value:W.apply(void 0,A)}):(this.consumeBadUrlRemnants(),zr);if(n===Nr||n===_r||n===Vr||Wh(n))return this.consumeBadUrlRemnants(),zr;if(n===et)if(kA(n,this.peekCodePoint(0)))A.push(this.consumeEscapedCodePoint());else return this.consumeBadUrlRemnants(),zr;else A.push(n)}},r.prototype.consumeWhiteSpace=function(){for(;Wr(this.peekCodePoint(0));)this.consumeCodePoint()},r.prototype.consumeBadUrlRemnants=function(){for(;;){var A=this.consumeCodePoint();if(A===rt||A===UA)return;kA(A,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},r.prototype.consumeStringSlice=function(A){for(var e=5e4,t="";A>0;){var n=Math.min(e,A);t+=W.apply(void 0,this._value.splice(0,n)),A-=n}return this._value.shift(),t},r.prototype.consumeStringToken=function(A){var e="",t=0;do{var n=this._value[t];if(n===UA||n===void 0||n===A)return e+=this.consumeStringSlice(t),{type:0,value:e};if(n===kr)return this._value.splice(0,t),ng;if(n===et){var s=this._value[t+1];s!==UA&&s!==void 0&&(s===kr?(e+=this.consumeStringSlice(t),t=-1,this._value.shift()):kA(n,s)&&(e+=this.consumeStringSlice(t),e+=W(this.consumeEscapedCodePoint()),t=-1))}t++}while(!0)},r.prototype.consumeNumber=function(){var A=[],e=At,t=this.peekCodePoint(0);for((t===ee||t===hA)&&A.push(this.consumeCodePoint());iA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());t=this.peekCodePoint(0);var n=this.peekCodePoint(1);if(t===nt&&iA(n))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),e=ml;iA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());t=this.peekCodePoint(0),n=this.peekCodePoint(1);var s=this.peekCodePoint(2);if((t===Tl||t===Sl)&&((n===ee||n===hA)&&iA(s)||iA(n)))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),e=ml;iA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());return[Xh(A),e]},r.prototype.consumeNumericToken=function(){var A=this.consumeNumber(),e=A[0],t=A[1],n=this.peekCodePoint(0),s=this.peekCodePoint(1),i=this.peekCodePoint(2);if(Jr(n,s,i)){var o=this.consumeName();return{type:15,number:e,flags:t,unit:o}}return n===hh?(this.consumeCodePoint(),{type:16,number:e,flags:t}):{type:17,number:e,flags:t}},r.prototype.consumeEscapedCodePoint=function(){var A=this.consumeCodePoint();if(Fe(A)){for(var e=W(A);Fe(this.peekCodePoint(0))&&e.length<6;)e+=W(this.consumeCodePoint());Wr(this.peekCodePoint(0))&&this.consumeCodePoint();var t=parseInt(e,16);return t===0||kh(t)||t>1114111?Ul:t}return A===UA?Ul:A},r.prototype.consumeName=function(){for(var A="";;){var e=this.consumeCodePoint();if(Ll(e))A+=W(e);else if(kA(e,this.peekCodePoint(0)))A+=W(this.consumeEscapedCodePoint());else return this.reconsumeCodePoint(e),A}},r}(),Ml=function(){function r(A){this._tokens=A}return r.create=function(A){var e=new bl;return e.write(A),new r(e.read())},r.parseValue=function(A){return r.create(A).parseComponentValue()},r.parseValues=function(A){return r.create(A).parseComponentValues()},r.prototype.parseComponentValue=function(){for(var A=this.consumeToken();A.type===31;)A=this.consumeToken();if(A.type===32)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(A);var e=this.consumeComponentValue();do A=this.consumeToken();while(A.type===31);if(A.type===32)return e;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},r.prototype.parseComponentValues=function(){for(var A=[];;){var e=this.consumeComponentValue();if(e.type===32)return A;A.push(e),A.push()}},r.prototype.consumeComponentValue=function(){var A=this.consumeToken();switch(A.type){case 11:case 28:case 2:return this.consumeSimpleBlock(A.type);case 19:return this.consumeFunction(A)}return A},r.prototype.consumeSimpleBlock=function(A){for(var e={type:A,values:[]},t=this.consumeToken();;){if(t.type===32||hg(t,A))return e;this.reconsumeToken(t),e.values.push(this.consumeComponentValue()),t=this.consumeToken()}},r.prototype.consumeFunction=function(A){for(var e={name:A.value,values:[],type:18};;){var t=this.consumeToken();if(t.type===32||t.type===3)return e;this.reconsumeToken(t),e.values.push(this.consumeComponentValue())}},r.prototype.consumeToken=function(){var A=this._tokens.shift();return typeof A>"u"?Es:A},r.prototype.reconsumeToken=function(A){this._tokens.unshift(A)},r}(),st=function(r){return r.type===15},Qe=function(r){return r.type===17},k=function(r){return r.type===20},ug=function(r){return r.type===0},ys=function(r,A){return k(r)&&r.value===A},Dl=function(r){return r.type!==31},Ue=function(r){return r.type!==31&&r.type!==4},EA=function(r){var A=[],e=[];return r.forEach(function(t){if(t.type===4){if(e.length===0)throw new Error("Error parsing function args, zero tokens for arg");A.push(e),e=[];return}t.type!==31&&e.push(t)}),e.length&&A.push(e),A},hg=function(r,A){return A===11&&r.type===12||A===28&&r.type===29?!0:A===2&&r.type===3},NA=function(r){return r.type===17||r.type===15},z=function(r){return r.type===16||NA(r)},Rl=function(r){return r.length>1?[r[0],r[1]]:[r[0]]},tA={type:17,number:0,flags:At},Ss={type:16,number:50,flags:At},_A={type:16,number:100,flags:At},it=function(r,A,e){var t=r[0],n=r[1];return[N(t,A),N(typeof n<"u"?n:t,e)]},N=function(r,A){if(r.type===16)return r.number/100*A;if(st(r))switch(r.unit){case"rem":case"em":return 16*r.number;case"px":default:return r.number}return r.number},xl="deg",Pl="grad",Kl="rad",Gl="turn",Yr={name:"angle",parse:function(r,A){if(A.type===15)switch(A.unit){case xl:return Math.PI*A.number/180;case Pl:return Math.PI/200*A.number;case Kl:return A.number;case Gl:return Math.PI*2*A.number}throw new Error("Unsupported angle type")}},kl=function(r){return r.type===15&&(r.unit===xl||r.unit===Pl||r.unit===Kl||r.unit===Gl)},Nl=function(r){var A=r.filter(k).map(function(e){return e.value}).join(" ");switch(A){case"to bottom right":case"to right bottom":case"left top":case"top left":return[tA,tA];case"to top":case"bottom":return fA(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[tA,_A];case"to right":case"left":return fA(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[_A,_A];case"to bottom":case"top":return fA(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[_A,tA];case"to left":case"right":return fA(270)}return 0},fA=function(r){return Math.PI*r/180},VA={name:"color",parse:function(r,A){if(A.type===18){var e=gg[A.name];if(typeof e>"u")throw new Error('Attempting to parse an unsupported color function "'+A.name+'"');return e(r,A.values)}if(A.type===5){if(A.value.length===3){var t=A.value.substring(0,1),n=A.value.substring(1,2),s=A.value.substring(2,3);return WA(parseInt(t+t,16),parseInt(n+n,16),parseInt(s+s,16),1)}if(A.value.length===4){var t=A.value.substring(0,1),n=A.value.substring(1,2),s=A.value.substring(2,3),i=A.value.substring(3,4);return WA(parseInt(t+t,16),parseInt(n+n,16),parseInt(s+s,16),parseInt(i+i,16)/255)}if(A.value.length===6){var t=A.value.substring(0,2),n=A.value.substring(2,4),s=A.value.substring(4,6);return WA(parseInt(t,16),parseInt(n,16),parseInt(s,16),1)}if(A.value.length===8){var t=A.value.substring(0,2),n=A.value.substring(2,4),s=A.value.substring(4,6),i=A.value.substring(6,8);return WA(parseInt(t,16),parseInt(n,16),parseInt(s,16),parseInt(i,16)/255)}}if(A.type===20){var o=DA[A.value.toUpperCase()];if(typeof o<"u")return o}return DA.TRANSPARENT}},OA=function(r){return(255&r)===0},j=function(r){var A=255&r,e=255&r>>8,t=255&r>>16,n=255&r>>24;return A<255?"rgba("+n+","+t+","+e+","+A/255+")":"rgb("+n+","+t+","+e+")"},WA=function(r,A,e,t){return(r<<24|A<<16|e<<8|Math.round(t*255)<<0)>>>0},_l=function(r,A){if(r.type===17)return r.number;if(r.type===16){var e=A===3?1:255;return A===3?r.number/100*e:Math.round(r.number/100*e)}return 0},Vl=function(r,A){var e=A.filter(Ue);if(e.length===3){var t=e.map(_l),n=t[0],s=t[1],i=t[2];return WA(n,s,i,1)}if(e.length===4){var o=e.map(_l),n=o[0],s=o[1],i=o[2],a=o[3];return WA(n,s,i,a)}return 0};function Is(r,A,e){return e<0&&(e+=1),e>=1&&(e-=1),e<.16666666666666666?(A-r)*e*6+r:e<.5?A:e<.6666666666666666?(A-r)*6*(.6666666666666666-e)+r:r}var Ol=function(r,A){var e=A.filter(Ue),t=e[0],n=e[1],s=e[2],i=e[3],o=(t.type===17?fA(t.number):Yr.parse(r,t))/(Math.PI*2),a=z(n)?n.number/100:0,l=z(s)?s.number/100:0,d=typeof i<"u"&&z(i)?N(i,1):1;if(a===0)return WA(l*255,l*255,l*255,1);var h=l<=.5?l*(a+1):l+a-l*a,u=l*2-h,f=Is(u,h,o+1/3),B=Is(u,h,o),w=Is(u,h,o-1/3);return WA(f*255,B*255,w*255,d)},gg={hsl:Ol,hsla:Ol,rgb:Vl,rgba:Vl},ot=function(r,A){return VA.parse(r,Ml.create(A).parseComponentValue())},DA={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},Bg={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(r,A){return A.map(function(e){if(k(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},fg={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},$r=function(r,A){var e=VA.parse(r,A[0]),t=A[1];return t&&z(t)?{color:e,stop:t}:{color:e,stop:null}},Wl=function(r,A){var e=r[0],t=r[r.length-1];e.stop===null&&(e.stop=tA),t.stop===null&&(t.stop=_A);for(var n=[],s=0,i=0;i<r.length;i++){var o=r[i].stop;if(o!==null){var a=N(o,A);a>s?n.push(a):n.push(s),s=a}else n.push(null)}for(var l=null,i=0;i<n.length;i++){var d=n[i];if(d===null)l===null&&(l=i);else if(l!==null){for(var h=i-l,u=n[l-1],f=(d-u)/(h+1),B=1;B<=h;B++)n[l+B-1]=f*B;l=null}}return r.map(function(w,v){var m=w.color;return{color:m,stop:Math.max(Math.min(1,n[v]/A),0)}})},wg=function(r,A,e){var t=A/2,n=e/2,s=N(r[0],A)-t,i=n-N(r[1],e);return(Math.atan2(i,s)+Math.PI*2)%(Math.PI*2)},pg=function(r,A,e){var t=typeof r=="number"?r:wg(r,A,e),n=Math.abs(A*Math.sin(t))+Math.abs(e*Math.cos(t)),s=A/2,i=e/2,o=n/2,a=Math.sin(t-Math.PI/2)*o,l=Math.cos(t-Math.PI/2)*o;return[n,s-l,s+l,i-a,i+a]},FA=function(r,A){return Math.sqrt(r*r+A*A)},Xl=function(r,A,e,t,n){var s=[[0,0],[0,A],[r,0],[r,A]];return s.reduce(function(i,o){var a=o[0],l=o[1],d=FA(e-a,t-l);return(n?d<i.optimumDistance:d>i.optimumDistance)?{optimumCorner:o,optimumDistance:d}:i},{optimumDistance:n?1/0:-1/0,optimumCorner:null}).optimumCorner},Cg=function(r,A,e,t,n){var s=0,i=0;switch(r.size){case 0:r.shape===0?s=i=Math.min(Math.abs(A),Math.abs(A-t),Math.abs(e),Math.abs(e-n)):r.shape===1&&(s=Math.min(Math.abs(A),Math.abs(A-t)),i=Math.min(Math.abs(e),Math.abs(e-n)));break;case 2:if(r.shape===0)s=i=Math.min(FA(A,e),FA(A,e-n),FA(A-t,e),FA(A-t,e-n));else if(r.shape===1){var o=Math.min(Math.abs(e),Math.abs(e-n))/Math.min(Math.abs(A),Math.abs(A-t)),a=Xl(t,n,A,e,!0),l=a[0],d=a[1];s=FA(l-A,(d-e)/o),i=o*s}break;case 1:r.shape===0?s=i=Math.max(Math.abs(A),Math.abs(A-t),Math.abs(e),Math.abs(e-n)):r.shape===1&&(s=Math.max(Math.abs(A),Math.abs(A-t)),i=Math.max(Math.abs(e),Math.abs(e-n)));break;case 3:if(r.shape===0)s=i=Math.max(FA(A,e),FA(A,e-n),FA(A-t,e),FA(A-t,e-n));else if(r.shape===1){var o=Math.max(Math.abs(e),Math.abs(e-n))/Math.max(Math.abs(A),Math.abs(A-t)),h=Xl(t,n,A,e,!1),l=h[0],d=h[1];s=FA(l-A,(d-e)/o),i=o*s}break}return Array.isArray(r.size)&&(s=N(r.size[0],t),i=r.size.length===2?N(r.size[1],n):s),[s,i]},vg=function(r,A){var e=fA(180),t=[];return EA(A).forEach(function(n,s){if(s===0){var i=n[0];if(i.type===20&&i.value==="to"){e=Nl(n);return}else if(kl(i)){e=Yr.parse(r,i);return}}var o=$r(r,n);t.push(o)}),{angle:e,stops:t,type:1}},Zr=function(r,A){var e=fA(180),t=[];return EA(A).forEach(function(n,s){if(s===0){var i=n[0];if(i.type===20&&["top","left","right","bottom"].indexOf(i.value)!==-1){e=Nl(n);return}else if(kl(i)){e=(Yr.parse(r,i)+fA(270))%fA(360);return}}var o=$r(r,n);t.push(o)}),{angle:e,stops:t,type:1}},mg=function(r,A){var e=fA(180),t=[],n=1,s=0,i=3,o=[];return EA(A).forEach(function(a,l){var d=a[0];if(l===0){if(k(d)&&d.value==="linear"){n=1;return}else if(k(d)&&d.value==="radial"){n=2;return}}if(d.type===18){if(d.name==="from"){var h=VA.parse(r,d.values[0]);t.push({stop:tA,color:h})}else if(d.name==="to"){var h=VA.parse(r,d.values[0]);t.push({stop:_A,color:h})}else if(d.name==="color-stop"){var u=d.values.filter(Ue);if(u.length===2){var h=VA.parse(r,u[1]),f=u[0];Qe(f)&&t.push({stop:{type:16,number:f.number*100,flags:f.flags},color:h})}}}}),n===1?{angle:(e+fA(180))%fA(360),stops:t,type:n}:{size:i,shape:s,stops:t,position:o,type:n}},Jl="closest-side",zl="farthest-side",Yl="closest-corner",$l="farthest-corner",Zl="circle",ql="ellipse",jl="cover",Ac="contain",Fg=function(r,A){var e=0,t=3,n=[],s=[];return EA(A).forEach(function(i,o){var a=!0;if(o===0){var l=!1;a=i.reduce(function(h,u){if(l)if(k(u))switch(u.value){case"center":return s.push(Ss),h;case"top":case"left":return s.push(tA),h;case"right":case"bottom":return s.push(_A),h}else(z(u)||NA(u))&&s.push(u);else if(k(u))switch(u.value){case Zl:return e=0,!1;case ql:return e=1,!1;case"at":return l=!0,!1;case Jl:return t=0,!1;case jl:case zl:return t=1,!1;case Ac:case Yl:return t=2,!1;case $l:return t=3,!1}else if(NA(u)||z(u))return Array.isArray(t)||(t=[]),t.push(u),!1;return h},a)}if(a){var d=$r(r,i);n.push(d)}}),{size:t,shape:e,stops:n,position:s,type:2}},qr=function(r,A){var e=0,t=3,n=[],s=[];return EA(A).forEach(function(i,o){var a=!0;if(o===0?a=i.reduce(function(d,h){if(k(h))switch(h.value){case"center":return s.push(Ss),!1;case"top":case"left":return s.push(tA),!1;case"right":case"bottom":return s.push(_A),!1}else if(z(h)||NA(h))return s.push(h),!1;return d},a):o===1&&(a=i.reduce(function(d,h){if(k(h))switch(h.value){case Zl:return e=0,!1;case ql:return e=1,!1;case Ac:case Jl:return t=0,!1;case zl:return t=1,!1;case Yl:return t=2,!1;case jl:case $l:return t=3,!1}else if(NA(h)||z(h))return Array.isArray(t)||(t=[]),t.push(h),!1;return d},a)),a){var l=$r(r,i);n.push(l)}}),{size:t,shape:e,stops:n,position:s,type:2}},Qg=function(r){return r.type===1},Ug=function(r){return r.type===2},Ts={name:"image",parse:function(r,A){if(A.type===22){var e={url:A.value,type:0};return r.cache.addImage(A.value),e}if(A.type===18){var t=ec[A.name];if(typeof t>"u")throw new Error('Attempting to parse an unsupported image function "'+A.name+'"');return t(r,A.values)}throw new Error("Unsupported image type "+A.type)}};function Eg(r){return!(r.type===20&&r.value==="none")&&(r.type!==18||!!ec[r.name])}var ec={"linear-gradient":vg,"-moz-linear-gradient":Zr,"-ms-linear-gradient":Zr,"-o-linear-gradient":Zr,"-webkit-linear-gradient":Zr,"radial-gradient":Fg,"-moz-radial-gradient":qr,"-ms-radial-gradient":qr,"-o-radial-gradient":qr,"-webkit-radial-gradient":qr,"-webkit-gradient":mg},yg={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(r,A){if(A.length===0)return[];var e=A[0];return e.type===20&&e.value==="none"?[]:A.filter(function(t){return Ue(t)&&Eg(t)}).map(function(t){return Ts.parse(r,t)})}},Sg={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(r,A){return A.map(function(e){if(k(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},Ig={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(r,A){return EA(A).map(function(e){return e.filter(z)}).map(Rl)}},Tg={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(r,A){return EA(A).map(function(e){return e.filter(k).map(function(t){return t.value}).join(" ")}).map(Hg)}},Hg=function(r){switch(r){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;case"repeat":default:return 0}},Ee;(function(r){r.AUTO="auto",r.CONTAIN="contain",r.COVER="cover"})(Ee||(Ee={}));var Lg={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(r,A){return EA(A).map(function(e){return e.filter(bg)})}},bg=function(r){return k(r)||z(r)},jr=function(r){return{name:"border-"+r+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},Mg=jr("top"),Dg=jr("right"),Rg=jr("bottom"),xg=jr("left"),An=function(r){return{name:"border-radius-"+r,initialValue:"0 0",prefix:!1,type:1,parse:function(A,e){return Rl(e.filter(z))}}},Pg=An("top-left"),Kg=An("top-right"),Gg=An("bottom-right"),kg=An("bottom-left"),en=function(r){return{name:"border-"+r+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(A,e){switch(e){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},Ng=en("top"),_g=en("right"),Vg=en("bottom"),Og=en("left"),tn=function(r){return{name:"border-"+r+"-width",initialValue:"0",type:0,prefix:!1,parse:function(A,e){return st(e)?e.number:0}}},Wg=tn("top"),Xg=tn("right"),Jg=tn("bottom"),zg=tn("left"),Yg={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},$g={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(r,A){switch(A){case"rtl":return 1;case"ltr":default:return 0}}},Zg={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(r,A){return A.filter(k).reduce(function(e,t){return e|qg(t.value)},0)}},qg=function(r){switch(r){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},jg={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(r,A){switch(A){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},AB={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(r,A){return A.type===20&&A.value==="normal"?0:A.type===17||A.type===15?A.number:0}},rn;(function(r){r.NORMAL="normal",r.STRICT="strict"})(rn||(rn={}));var eB={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(r,A){switch(A){case"strict":return rn.STRICT;case"normal":default:return rn.NORMAL}}},tB={name:"line-height",initialValue:"normal",prefix:!1,type:4},tc=function(r,A){return k(r)&&r.value==="normal"?1.2*A:r.type===17?A*r.number:z(r)?N(r,A):A},rB={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(r,A){return A.type===20&&A.value==="none"?null:Ts.parse(r,A)}},nB={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(r,A){switch(A){case"inside":return 0;case"outside":default:return 1}}},Hs={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(r,A){switch(A){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":return 22;case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;case"none":default:return-1}}},nn=function(r){return{name:"margin-"+r,initialValue:"0",prefix:!1,type:4}},sB=nn("top"),iB=nn("right"),oB=nn("bottom"),aB=nn("left"),lB={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(r,A){return A.filter(k).map(function(e){switch(e.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;case"visible":default:return 0}})}},cB={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(r,A){switch(A){case"break-word":return"break-word";case"normal":default:return"normal"}}},sn=function(r){return{name:"padding-"+r,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},dB=sn("top"),uB=sn("right"),hB=sn("bottom"),gB=sn("left"),BB={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(r,A){switch(A){case"right":return 2;case"center":case"justify":return 1;case"left":default:return 0}}},fB={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(r,A){switch(A){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},wB={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(r,A){return A.length===1&&ys(A[0],"none")?[]:EA(A).map(function(e){for(var t={color:DA.TRANSPARENT,offsetX:tA,offsetY:tA,blur:tA},n=0,s=0;s<e.length;s++){var i=e[s];NA(i)?(n===0?t.offsetX=i:n===1?t.offsetY=i:t.blur=i,n++):t.color=VA.parse(r,i)}return t})}},pB={name:"text-transform",initialValue:"none",prefix:!1,type:2,parse:function(r,A){switch(A){case"uppercase":return 2;case"lowercase":return 1;case"capitalize":return 3}return 0}},CB={name:"transform",initialValue:"none",prefix:!0,type:0,parse:function(r,A){if(A.type===20&&A.value==="none")return null;if(A.type===18){var e=FB[A.name];if(typeof e>"u")throw new Error('Attempting to parse an unsupported transform function "'+A.name+'"');return e(A.values)}return null}},vB=function(r){var A=r.filter(function(e){return e.type===17}).map(function(e){return e.number});return A.length===6?A:null},mB=function(r){var A=r.filter(function(a){return a.type===17}).map(function(a){return a.number}),e=A[0],t=A[1];A[2],A[3];var n=A[4],s=A[5];A[6],A[7],A[8],A[9],A[10],A[11];var i=A[12],o=A[13];return A[14],A[15],A.length===16?[e,t,n,s,i,o]:null},FB={matrix:vB,matrix3d:mB},rc={type:16,number:50,flags:At},QB=[rc,rc],UB={name:"transform-origin",initialValue:"50% 50%",prefix:!0,type:1,parse:function(r,A){var e=A.filter(z);return e.length!==2?QB:[e[0],e[1]]}},EB={name:"visible",initialValue:"none",prefix:!1,type:2,parse:function(r,A){switch(A){case"hidden":return 1;case"collapse":return 2;case"visible":default:return 0}}},at;(function(r){r.NORMAL="normal",r.BREAK_ALL="break-all",r.KEEP_ALL="keep-all"})(at||(at={}));for(var yB={name:"word-break",initialValue:"normal",prefix:!1,type:2,parse:function(r,A){switch(A){case"break-all":return at.BREAK_ALL;case"keep-all":return at.KEEP_ALL;case"normal":default:return at.NORMAL}}},SB={name:"z-index",initialValue:"auto",prefix:!1,type:0,parse:function(r,A){if(A.type===20)return{auto:!0,order:0};if(Qe(A))return{auto:!1,order:A.number};throw new Error("Invalid z-index number parsed")}},nc={name:"time",parse:function(r,A){if(A.type===15)switch(A.unit.toLowerCase()){case"s":return 1e3*A.number;case"ms":return A.number}throw new Error("Unsupported time type")}},IB={name:"opacity",initialValue:"1",type:0,prefix:!1,parse:function(r,A){return Qe(A)?A.number:1}},TB={name:"text-decoration-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},HB={name:"text-decoration-line",initialValue:"none",prefix:!1,type:1,parse:function(r,A){return A.filter(k).map(function(e){switch(e.value){case"underline":return 1;case"overline":return 2;case"line-through":return 3;case"none":return 4}return 0}).filter(function(e){return e!==0})}},LB={name:"font-family",initialValue:"",prefix:!1,type:1,parse:function(r,A){var e=[],t=[];return A.forEach(function(n){switch(n.type){case 20:case 0:e.push(n.value);break;case 17:e.push(n.number.toString());break;case 4:t.push(e.join(" ")),e.length=0;break}}),e.length&&t.push(e.join(" ")),t.map(function(n){return n.indexOf(" ")===-1?n:"'"+n+"'"})}},bB={name:"font-size",initialValue:"0",prefix:!1,type:3,format:"length"},MB={name:"font-weight",initialValue:"normal",type:0,prefix:!1,parse:function(r,A){if(Qe(A))return A.number;if(k(A))switch(A.value){case"bold":return 700;case"normal":default:return 400}return 400}},DB={name:"font-variant",initialValue:"none",type:1,prefix:!1,parse:function(r,A){return A.filter(k).map(function(e){return e.value})}},RB={name:"font-style",initialValue:"normal",prefix:!1,type:2,parse:function(r,A){switch(A){case"oblique":return"oblique";case"italic":return"italic";case"normal":default:return"normal"}}},Z=function(r,A){return(r&A)!==0},xB={name:"content",initialValue:"none",type:1,prefix:!1,parse:function(r,A){if(A.length===0)return[];var e=A[0];return e.type===20&&e.value==="none"?[]:A}},PB={name:"counter-increment",initialValue:"none",prefix:!0,type:1,parse:function(r,A){if(A.length===0)return null;var e=A[0];if(e.type===20&&e.value==="none")return null;for(var t=[],n=A.filter(Dl),s=0;s<n.length;s++){var i=n[s],o=n[s+1];if(i.type===20){var a=o&&Qe(o)?o.number:1;t.push({counter:i.value,increment:a})}}return t}},KB={name:"counter-reset",initialValue:"none",prefix:!0,type:1,parse:function(r,A){if(A.length===0)return[];for(var e=[],t=A.filter(Dl),n=0;n<t.length;n++){var s=t[n],i=t[n+1];if(k(s)&&s.value!=="none"){var o=i&&Qe(i)?i.number:0;e.push({counter:s.value,reset:o})}}return e}},GB={name:"duration",initialValue:"0s",prefix:!1,type:1,parse:function(r,A){return A.filter(st).map(function(e){return nc.parse(r,e)})}},kB={name:"quotes",initialValue:"none",prefix:!0,type:1,parse:function(r,A){if(A.length===0)return null;var e=A[0];if(e.type===20&&e.value==="none")return null;var t=[],n=A.filter(ug);if(n.length%2!==0)return null;for(var s=0;s<n.length;s+=2){var i=n[s].value,o=n[s+1].value;t.push({open:i,close:o})}return t}},sc=function(r,A,e){if(!r)return"";var t=r[Math.min(A,r.length-1)];return t?e?t.open:t.close:""},NB={name:"box-shadow",initialValue:"none",type:1,prefix:!1,parse:function(r,A){return A.length===1&&ys(A[0],"none")?[]:EA(A).map(function(e){for(var t={color:255,offsetX:tA,offsetY:tA,blur:tA,spread:tA,inset:!1},n=0,s=0;s<e.length;s++){var i=e[s];ys(i,"inset")?t.inset=!0:NA(i)?(n===0?t.offsetX=i:n===1?t.offsetY=i:n===2?t.blur=i:t.spread=i,n++):t.color=VA.parse(r,i)}return t})}},_B={name:"paint-order",initialValue:"normal",prefix:!1,type:1,parse:function(r,A){var e=[0,1,2],t=[];return A.filter(k).forEach(function(n){switch(n.value){case"stroke":t.push(1);break;case"fill":t.push(0);break;case"markers":t.push(2);break}}),e.forEach(function(n){t.indexOf(n)===-1&&t.push(n)}),t}},VB={name:"-webkit-text-stroke-color",initialValue:"currentcolor",prefix:!1,type:3,format:"color"},OB={name:"-webkit-text-stroke-width",initialValue:"0",type:0,prefix:!1,parse:function(r,A){return st(A)?A.number:0}},WB=function(){function r(A,e){var t,n;this.animationDuration=T(A,GB,e.animationDuration),this.backgroundClip=T(A,Bg,e.backgroundClip),this.backgroundColor=T(A,fg,e.backgroundColor),this.backgroundImage=T(A,yg,e.backgroundImage),this.backgroundOrigin=T(A,Sg,e.backgroundOrigin),this.backgroundPosition=T(A,Ig,e.backgroundPosition),this.backgroundRepeat=T(A,Tg,e.backgroundRepeat),this.backgroundSize=T(A,Lg,e.backgroundSize),this.borderTopColor=T(A,Mg,e.borderTopColor),this.borderRightColor=T(A,Dg,e.borderRightColor),this.borderBottomColor=T(A,Rg,e.borderBottomColor),this.borderLeftColor=T(A,xg,e.borderLeftColor),this.borderTopLeftRadius=T(A,Pg,e.borderTopLeftRadius),this.borderTopRightRadius=T(A,Kg,e.borderTopRightRadius),this.borderBottomRightRadius=T(A,Gg,e.borderBottomRightRadius),this.borderBottomLeftRadius=T(A,kg,e.borderBottomLeftRadius),this.borderTopStyle=T(A,Ng,e.borderTopStyle),this.borderRightStyle=T(A,_g,e.borderRightStyle),this.borderBottomStyle=T(A,Vg,e.borderBottomStyle),this.borderLeftStyle=T(A,Og,e.borderLeftStyle),this.borderTopWidth=T(A,Wg,e.borderTopWidth),this.borderRightWidth=T(A,Xg,e.borderRightWidth),this.borderBottomWidth=T(A,Jg,e.borderBottomWidth),this.borderLeftWidth=T(A,zg,e.borderLeftWidth),this.boxShadow=T(A,NB,e.boxShadow),this.color=T(A,Yg,e.color),this.direction=T(A,$g,e.direction),this.display=T(A,Zg,e.display),this.float=T(A,jg,e.cssFloat),this.fontFamily=T(A,LB,e.fontFamily),this.fontSize=T(A,bB,e.fontSize),this.fontStyle=T(A,RB,e.fontStyle),this.fontVariant=T(A,DB,e.fontVariant),this.fontWeight=T(A,MB,e.fontWeight),this.letterSpacing=T(A,AB,e.letterSpacing),this.lineBreak=T(A,eB,e.lineBreak),this.lineHeight=T(A,tB,e.lineHeight),this.listStyleImage=T(A,rB,e.listStyleImage),this.listStylePosition=T(A,nB,e.listStylePosition),this.listStyleType=T(A,Hs,e.listStyleType),this.marginTop=T(A,sB,e.marginTop),this.marginRight=T(A,iB,e.marginRight),this.marginBottom=T(A,oB,e.marginBottom),this.marginLeft=T(A,aB,e.marginLeft),this.opacity=T(A,IB,e.opacity);var s=T(A,lB,e.overflow);this.overflowX=s[0],this.overflowY=s[s.length>1?1:0],this.overflowWrap=T(A,cB,e.overflowWrap),this.paddingTop=T(A,dB,e.paddingTop),this.paddingRight=T(A,uB,e.paddingRight),this.paddingBottom=T(A,hB,e.paddingBottom),this.paddingLeft=T(A,gB,e.paddingLeft),this.paintOrder=T(A,_B,e.paintOrder),this.position=T(A,fB,e.position),this.textAlign=T(A,BB,e.textAlign),this.textDecorationColor=T(A,TB,(t=e.textDecorationColor)!==null&&t!==void 0?t:e.color),this.textDecorationLine=T(A,HB,(n=e.textDecorationLine)!==null&&n!==void 0?n:e.textDecoration),this.textShadow=T(A,wB,e.textShadow),this.textTransform=T(A,pB,e.textTransform),this.transform=T(A,CB,e.transform),this.transformOrigin=T(A,UB,e.transformOrigin),this.visibility=T(A,EB,e.visibility),this.webkitTextStrokeColor=T(A,VB,e.webkitTextStrokeColor),this.webkitTextStrokeWidth=T(A,OB,e.webkitTextStrokeWidth),this.wordBreak=T(A,yB,e.wordBreak),this.zIndex=T(A,SB,e.zIndex)}return r.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&this.visibility===0},r.prototype.isTransparent=function(){return OA(this.backgroundColor)},r.prototype.isTransformed=function(){return this.transform!==null},r.prototype.isPositioned=function(){return this.position!==0},r.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},r.prototype.isFloating=function(){return this.float!==0},r.prototype.isInlineLevel=function(){return Z(this.display,4)||Z(this.display,33554432)||Z(this.display,268435456)||Z(this.display,536870912)||Z(this.display,67108864)||Z(this.display,134217728)},r}(),XB=function(){function r(A,e){this.content=T(A,xB,e.content),this.quotes=T(A,kB,e.quotes)}return r}(),ic=function(){function r(A,e){this.counterIncrement=T(A,PB,e.counterIncrement),this.counterReset=T(A,KB,e.counterReset)}return r}(),T=function(r,A,e){var t=new bl,n=e!==null&&typeof e<"u"?e.toString():A.initialValue;t.write(n);var s=new Ml(t.read());switch(A.type){case 2:var i=s.parseComponentValue();return A.parse(r,k(i)?i.value:A.initialValue);case 0:return A.parse(r,s.parseComponentValue());case 1:return A.parse(r,s.parseComponentValues());case 4:return s.parseComponentValue();case 3:switch(A.format){case"angle":return Yr.parse(r,s.parseComponentValue());case"color":return VA.parse(r,s.parseComponentValue());case"image":return Ts.parse(r,s.parseComponentValue());case"length":var o=s.parseComponentValue();return NA(o)?o:tA;case"length-percentage":var a=s.parseComponentValue();return z(a)?a:tA;case"time":return nc.parse(r,s.parseComponentValue())}break}},JB="data-html2canvas-debug",zB=function(r){var A=r.getAttribute(JB);switch(A){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}},Ls=function(r,A){var e=zB(r);return e===1||A===e},yA=function(){function r(A,e){if(this.context=A,this.textNodes=[],this.elements=[],this.flags=0,Ls(e,3))debugger;this.styles=new WB(A,window.getComputedStyle(e,null)),Ws(e)&&(this.styles.animationDuration.some(function(t){return t>0})&&(e.style.animationDuration="0s"),this.styles.transform!==null&&(e.style.transform="none")),this.bounds=Tr(this.context,e),Ls(e,4)&&(this.flags|=16)}return r}(),YB="AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=",oc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",lt=typeof Uint8Array>"u"?[]:new Uint8Array(256),on=0;on<oc.length;on++)lt[oc.charCodeAt(on)]=on;for(var $B=function(r){var A=r.length*.75,e=r.length,t,n=0,s,i,o,a;r[r.length-1]==="="&&(A--,r[r.length-2]==="="&&A--);var l=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u"&&typeof Uint8Array.prototype.slice<"u"?new ArrayBuffer(A):new Array(A),d=Array.isArray(l)?l:new Uint8Array(l);for(t=0;t<e;t+=4)s=lt[r.charCodeAt(t)],i=lt[r.charCodeAt(t+1)],o=lt[r.charCodeAt(t+2)],a=lt[r.charCodeAt(t+3)],d[n++]=s<<2|i>>4,d[n++]=(i&15)<<4|o>>2,d[n++]=(o&3)<<6|a&63;return l},ZB=function(r){for(var A=r.length,e=[],t=0;t<A;t+=2)e.push(r[t+1]<<8|r[t]);return e},qB=function(r){for(var A=r.length,e=[],t=0;t<A;t+=4)e.push(r[t+3]<<24|r[t+2]<<16|r[t+1]<<8|r[t]);return e},te=5,bs=11,Ms=2,jB=bs-te,ac=65536>>te,Af=1<<te,Ds=Af-1,ef=1024>>te,tf=ac+ef,rf=tf,nf=32,sf=rf+nf,of=65536>>bs,af=1<<jB,lf=af-1,lc=function(r,A,e){return r.slice?r.slice(A,e):new Uint16Array(Array.prototype.slice.call(r,A,e))},cf=function(r,A,e){return r.slice?r.slice(A,e):new Uint32Array(Array.prototype.slice.call(r,A,e))},df=function(r,A){var e=$B(r),t=Array.isArray(e)?qB(e):new Uint32Array(e),n=Array.isArray(e)?ZB(e):new Uint16Array(e),s=24,i=lc(n,s/2,t[4]/2),o=t[5]===2?lc(n,(s+t[4])/2):cf(t,Math.ceil((s+t[4])/4));return new uf(t[0],t[1],t[2],t[3],i,o)},uf=function(){function r(A,e,t,n,s,i){this.initialValue=A,this.errorValue=e,this.highStart=t,this.highValueIndex=n,this.index=s,this.data=i}return r.prototype.get=function(A){var e;if(A>=0){if(A<55296||A>56319&&A<=65535)return e=this.index[A>>te],e=(e<<Ms)+(A&Ds),this.data[e];if(A<=65535)return e=this.index[ac+(A-55296>>te)],e=(e<<Ms)+(A&Ds),this.data[e];if(A<this.highStart)return e=sf-of+(A>>bs),e=this.index[e],e+=A>>te&lf,e=this.index[e],e=(e<<Ms)+(A&Ds),this.data[e];if(A<=1114111)return this.data[this.highValueIndex]}return this.errorValue},r}(),cc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",hf=typeof Uint8Array>"u"?[]:new Uint8Array(256),an=0;an<cc.length;an++)hf[cc.charCodeAt(an)]=an;var gf=1,Rs=2,xs=3,dc=4,uc=5,Bf=7,hc=8,Ps=9,Ks=10,gc=11,Bc=12,fc=13,wc=14,Gs=15,ff=function(r){for(var A=[],e=0,t=r.length;e<t;){var n=r.charCodeAt(e++);if(n>=55296&&n<=56319&&e<t){var s=r.charCodeAt(e++);(s&64512)===56320?A.push(((n&1023)<<10)+(s&1023)+65536):(A.push(n),e--)}else A.push(n)}return A},wf=function(){for(var r=[],A=0;A<arguments.length;A++)r[A]=arguments[A];if(String.fromCodePoint)return String.fromCodePoint.apply(String,r);var e=r.length;if(!e)return"";for(var t=[],n=-1,s="";++n<e;){var i=r[n];i<=65535?t.push(i):(i-=65536,t.push((i>>10)+55296,i%1024+56320)),(n+1===e||t.length>16384)&&(s+=String.fromCharCode.apply(String,t),t.length=0)}return s},pf=df(YB),wA="×",ks="÷",Cf=function(r){return pf.get(r)},vf=function(r,A,e){var t=e-2,n=A[t],s=A[e-1],i=A[e];if(s===Rs&&i===xs)return wA;if(s===Rs||s===xs||s===dc||i===Rs||i===xs||i===dc)return ks;if(s===hc&&[hc,Ps,gc,Bc].indexOf(i)!==-1||(s===gc||s===Ps)&&(i===Ps||i===Ks)||(s===Bc||s===Ks)&&i===Ks||i===fc||i===uc||i===Bf||s===gf)return wA;if(s===fc&&i===wc){for(;n===uc;)n=A[--t];if(n===wc)return wA}if(s===Gs&&i===Gs){for(var o=0;n===Gs;)o++,n=A[--t];if(o%2===0)return wA}return ks},mf=function(r){var A=ff(r),e=A.length,t=0,n=0,s=A.map(Cf);return{next:function(){if(t>=e)return{done:!0,value:null};for(var i=wA;t<e&&(i=vf(A,s,++t))===wA;);if(i!==wA||t===e){var o=wf.apply(null,A.slice(n,t));return n=t,{value:o,done:!1}}return{done:!0,value:null}}}},Ff=function(r){for(var A=mf(r),e=[],t;!(t=A.next()).done;)t.value&&e.push(t.value.slice());return e},Qf=function(r){var A=123;if(r.createRange){var e=r.createRange();if(e.getBoundingClientRect){var t=r.createElement("boundtest");t.style.height=A+"px",t.style.display="block",r.body.appendChild(t),e.selectNode(t);var n=e.getBoundingClientRect(),s=Math.round(n.height);if(r.body.removeChild(t),s===A)return!0}}return!1},Uf=function(r){var A=r.createElement("boundtest");A.style.width="50px",A.style.display="block",A.style.fontSize="12px",A.style.letterSpacing="0px",A.style.wordSpacing="0px",r.body.appendChild(A);var e=r.createRange();A.innerHTML=typeof"".repeat=="function"?"👨".repeat(10):"";var t=A.firstChild,n=Hr(t.data).map(function(a){return W(a)}),s=0,i={},o=n.every(function(a,l){e.setStart(t,s),e.setEnd(t,s+a.length);var d=e.getBoundingClientRect();s+=a.length;var h=d.x>i.x||d.y>i.y;return i=d,l===0?!0:h});return r.body.removeChild(A),o},Ef=function(){return typeof new Image().crossOrigin<"u"},yf=function(){return typeof new XMLHttpRequest().responseType=="string"},Sf=function(r){var A=new Image,e=r.createElement("canvas"),t=e.getContext("2d");if(!t)return!1;A.src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";try{t.drawImage(A,0,0),e.toDataURL()}catch{return!1}return!0},pc=function(r){return r[0]===0&&r[1]===255&&r[2]===0&&r[3]===255},If=function(r){var A=r.createElement("canvas"),e=100;A.width=e,A.height=e;var t=A.getContext("2d");if(!t)return Promise.reject(!1);t.fillStyle="rgb(0, 255, 0)",t.fillRect(0,0,e,e);var n=new Image,s=A.toDataURL();n.src=s;var i=Ns(e,e,0,0,n);return t.fillStyle="red",t.fillRect(0,0,e,e),Cc(i).then(function(o){t.drawImage(o,0,0);var a=t.getImageData(0,0,e,e).data;t.fillStyle="red",t.fillRect(0,0,e,e);var l=r.createElement("div");return l.style.backgroundImage="url("+s+")",l.style.height=e+"px",pc(a)?Cc(Ns(e,e,0,0,l)):Promise.reject(!1)}).then(function(o){return t.drawImage(o,0,0),pc(t.getImageData(0,0,e,e).data)}).catch(function(){return!1})},Ns=function(r,A,e,t,n){var s="http://www.w3.org/2000/svg",i=document.createElementNS(s,"svg"),o=document.createElementNS(s,"foreignObject");return i.setAttributeNS(null,"width",r.toString()),i.setAttributeNS(null,"height",A.toString()),o.setAttributeNS(null,"width","100%"),o.setAttributeNS(null,"height","100%"),o.setAttributeNS(null,"x",e.toString()),o.setAttributeNS(null,"y",t.toString()),o.setAttributeNS(null,"externalResourcesRequired","true"),i.appendChild(o),o.appendChild(n),i},Cc=function(r){return new Promise(function(A,e){var t=new Image;t.onload=function(){return A(t)},t.onerror=e,t.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(r))})},rA={get SUPPORT_RANGE_BOUNDS(){var r=Qf(document);return Object.defineProperty(rA,"SUPPORT_RANGE_BOUNDS",{value:r}),r},get SUPPORT_WORD_BREAKING(){var r=rA.SUPPORT_RANGE_BOUNDS&&Uf(document);return Object.defineProperty(rA,"SUPPORT_WORD_BREAKING",{value:r}),r},get SUPPORT_SVG_DRAWING(){var r=Sf(document);return Object.defineProperty(rA,"SUPPORT_SVG_DRAWING",{value:r}),r},get SUPPORT_FOREIGNOBJECT_DRAWING(){var r=typeof Array.from=="function"&&typeof window.fetch=="function"?If(document):Promise.resolve(!1);return Object.defineProperty(rA,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:r}),r},get SUPPORT_CORS_IMAGES(){var r=Ef();return Object.defineProperty(rA,"SUPPORT_CORS_IMAGES",{value:r}),r},get SUPPORT_RESPONSE_TYPE(){var r=yf();return Object.defineProperty(rA,"SUPPORT_RESPONSE_TYPE",{value:r}),r},get SUPPORT_CORS_XHR(){var r="withCredentials"in new XMLHttpRequest;return Object.defineProperty(rA,"SUPPORT_CORS_XHR",{value:r}),r},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var r=!!(typeof Intl<"u"&&Intl.Segmenter);return Object.defineProperty(rA,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:r}),r}},ct=function(){function r(A,e){this.text=A,this.bounds=e}return r}(),Tf=function(r,A,e,t){var n=bf(A,e),s=[],i=0;return n.forEach(function(o){if(e.textDecorationLine.length||o.trim().length>0)if(rA.SUPPORT_RANGE_BOUNDS){var a=vc(t,i,o.length).getClientRects();if(a.length>1){var l=_s(o),d=0;l.forEach(function(u){s.push(new ct(u,bA.fromDOMRectList(r,vc(t,d+i,u.length).getClientRects()))),d+=u.length})}else s.push(new ct(o,bA.fromDOMRectList(r,a)))}else{var h=t.splitText(o.length);s.push(new ct(o,Hf(r,t))),t=h}else rA.SUPPORT_RANGE_BOUNDS||(t=t.splitText(o.length));i+=o.length}),s},Hf=function(r,A){var e=A.ownerDocument;if(e){var t=e.createElement("html2canvaswrapper");t.appendChild(A.cloneNode(!0));var n=A.parentNode;if(n){n.replaceChild(t,A);var s=Tr(r,t);return t.firstChild&&n.replaceChild(t.firstChild,t),s}}return bA.EMPTY},vc=function(r,A,e){var t=r.ownerDocument;if(!t)throw new Error("Node has no owner document");var n=t.createRange();return n.setStart(r,A),n.setEnd(r,A+e),n},_s=function(r){if(rA.SUPPORT_NATIVE_TEXT_SEGMENTATION){var A=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(A.segment(r)).map(function(e){return e.segment})}return Ff(r)},Lf=function(r,A){if(rA.SUPPORT_NATIVE_TEXT_SEGMENTATION){var e=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(e.segment(r)).map(function(t){return t.segment})}return Df(r,A)},bf=function(r,A){return A.letterSpacing!==0?_s(r):Lf(r,A)},Mf=[32,160,4961,65792,65793,4153,4241],Df=function(r,A){for(var e=ih(r,{lineBreak:A.lineBreak,wordBreak:A.overflowWrap==="break-word"?"break-word":A.wordBreak}),t=[],n,s=function(){if(n.value){var i=n.value.slice(),o=Hr(i),a="";o.forEach(function(l){Mf.indexOf(l)===-1?a+=W(l):(a.length&&t.push(a),t.push(W(l)),a="")}),a.length&&t.push(a)}};!(n=e.next()).done;)s();return t},Rf=function(){function r(A,e,t){this.text=xf(e.data,t.textTransform),this.textBounds=Tf(A,this.text,t,e)}return r}(),xf=function(r,A){switch(A){case 1:return r.toLowerCase();case 3:return r.replace(Pf,Kf);case 2:return r.toUpperCase();default:return r}},Pf=/(^|\s|:|-|\(|\))([a-z])/g,Kf=function(r,A,e){return r.length>0?A+e.toUpperCase():r},mc=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.src=t.currentSrc||t.src,n.intrinsicWidth=t.naturalWidth,n.intrinsicHeight=t.naturalHeight,n.context.cache.addImage(n.src),n}return A}(yA),Fc=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.canvas=t,n.intrinsicWidth=t.width,n.intrinsicHeight=t.height,n}return A}(yA),Qc=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this,s=new XMLSerializer,i=Tr(e,t);return t.setAttribute("width",i.width+"px"),t.setAttribute("height",i.height+"px"),n.svg="data:image/svg+xml,"+encodeURIComponent(s.serializeToString(t)),n.intrinsicWidth=t.width.baseVal.value,n.intrinsicHeight=t.height.baseVal.value,n.context.cache.addImage(n.svg),n}return A}(yA),Uc=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.value=t.value,n}return A}(yA),Vs=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.start=t.start,n.reversed=typeof t.reversed=="boolean"&&t.reversed===!0,n}return A}(yA),Gf=[{type:15,flags:0,unit:"px",number:3}],kf=[{type:16,flags:0,number:50}],Nf=function(r){return r.width>r.height?new bA(r.left+(r.width-r.height)/2,r.top,r.height,r.height):r.width<r.height?new bA(r.left,r.top+(r.height-r.width)/2,r.width,r.width):r},_f=function(r){var A=r.type===Vf?new Array(r.value.length+1).join("•"):r.value;return A.length===0?r.placeholder||"":A},ln="checkbox",cn="radio",Vf="password",Ec=707406591,Os=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;switch(n.type=t.type.toLowerCase(),n.checked=t.checked,n.value=_f(t),(n.type===ln||n.type===cn)&&(n.styles.backgroundColor=3739148031,n.styles.borderTopColor=n.styles.borderRightColor=n.styles.borderBottomColor=n.styles.borderLeftColor=2779096575,n.styles.borderTopWidth=n.styles.borderRightWidth=n.styles.borderBottomWidth=n.styles.borderLeftWidth=1,n.styles.borderTopStyle=n.styles.borderRightStyle=n.styles.borderBottomStyle=n.styles.borderLeftStyle=1,n.styles.backgroundClip=[0],n.styles.backgroundOrigin=[0],n.bounds=Nf(n.bounds)),n.type){case ln:n.styles.borderTopRightRadius=n.styles.borderTopLeftRadius=n.styles.borderBottomRightRadius=n.styles.borderBottomLeftRadius=Gf;break;case cn:n.styles.borderTopRightRadius=n.styles.borderTopLeftRadius=n.styles.borderBottomRightRadius=n.styles.borderBottomLeftRadius=kf;break}return n}return A}(yA),yc=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this,s=t.options[t.selectedIndex||0];return n.value=s&&s.text||"",n}return A}(yA),Sc=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.value=t.value,n}return A}(yA),Ic=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;n.src=t.src,n.width=parseInt(t.width,10)||0,n.height=parseInt(t.height,10)||0,n.backgroundColor=n.styles.backgroundColor;try{if(t.contentWindow&&t.contentWindow.document&&t.contentWindow.document.documentElement){n.tree=Hc(e,t.contentWindow.document.documentElement);var s=t.contentWindow.document.documentElement?ot(e,getComputedStyle(t.contentWindow.document.documentElement).backgroundColor):DA.TRANSPARENT,i=t.contentWindow.document.body?ot(e,getComputedStyle(t.contentWindow.document.body).backgroundColor):DA.TRANSPARENT;n.backgroundColor=OA(s)?OA(i)?n.styles.backgroundColor:i:s}}catch{}return n}return A}(yA),Of=["OL","UL","MENU"],dn=function(r,A,e,t){for(var n=A.firstChild,s=void 0;n;n=s)if(s=n.nextSibling,Lc(n)&&n.data.trim().length>0)e.textNodes.push(new Rf(r,n,e.styles));else if(ye(n))if(Pc(n)&&n.assignedNodes)n.assignedNodes().forEach(function(o){return dn(r,o,e,t)});else{var i=Tc(r,n);i.styles.isVisible()&&(Wf(n,i,t)?i.flags|=4:Xf(i.styles)&&(i.flags|=2),Of.indexOf(n.tagName)!==-1&&(i.flags|=8),e.elements.push(i),n.slot,n.shadowRoot?dn(r,n.shadowRoot,i,t):!hn(n)&&!bc(n)&&!gn(n)&&dn(r,n,i,t))}},Tc=function(r,A){return Js(A)?new mc(r,A):Mc(A)?new Fc(r,A):bc(A)?new Qc(r,A):Jf(A)?new Uc(r,A):zf(A)?new Vs(r,A):Yf(A)?new Os(r,A):gn(A)?new yc(r,A):hn(A)?new Sc(r,A):Rc(A)?new Ic(r,A):new yA(r,A)},Hc=function(r,A){var e=Tc(r,A);return e.flags|=4,dn(r,A,e,e),e},Wf=function(r,A,e){return A.styles.isPositionedWithZIndex()||A.styles.opacity<1||A.styles.isTransformed()||Xs(r)&&e.styles.isTransparent()},Xf=function(r){return r.isPositioned()||r.isFloating()},Lc=function(r){return r.nodeType===Node.TEXT_NODE},ye=function(r){return r.nodeType===Node.ELEMENT_NODE},Ws=function(r){return ye(r)&&typeof r.style<"u"&&!un(r)},un=function(r){return typeof r.className=="object"},Jf=function(r){return r.tagName==="LI"},zf=function(r){return r.tagName==="OL"},Yf=function(r){return r.tagName==="INPUT"},$f=function(r){return r.tagName==="HTML"},bc=function(r){return r.tagName==="svg"},Xs=function(r){return r.tagName==="BODY"},Mc=function(r){return r.tagName==="CANVAS"},Dc=function(r){return r.tagName==="VIDEO"},Js=function(r){return r.tagName==="IMG"},Rc=function(r){return r.tagName==="IFRAME"},xc=function(r){return r.tagName==="STYLE"},Zf=function(r){return r.tagName==="SCRIPT"},hn=function(r){return r.tagName==="TEXTAREA"},gn=function(r){return r.tagName==="SELECT"},Pc=function(r){return r.tagName==="SLOT"},Kc=function(r){return r.tagName.indexOf("-")>0},qf=function(){function r(){this.counters={}}return r.prototype.getCounterValue=function(A){var e=this.counters[A];return e&&e.length?e[e.length-1]:1},r.prototype.getCounterValues=function(A){var e=this.counters[A];return e||[]},r.prototype.pop=function(A){var e=this;A.forEach(function(t){return e.counters[t].pop()})},r.prototype.parse=function(A){var e=this,t=A.counterIncrement,n=A.counterReset,s=!0;t!==null&&t.forEach(function(o){var a=e.counters[o.counter];a&&o.increment!==0&&(s=!1,a.length||a.push(1),a[Math.max(0,a.length-1)]+=o.increment)});var i=[];return s&&n.forEach(function(o){var a=e.counters[o.counter];i.push(o.counter),a||(a=e.counters[o.counter]=[]),a.push(o.reset)}),i},r}(),Gc={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},kc={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},jf={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},Aw={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},Se=function(r,A,e,t,n,s){return r<A||r>e?ut(r,n,s.length>0):t.integers.reduce(function(i,o,a){for(;r>=o;)r-=o,i+=t.values[a];return i},"")+s},Nc=function(r,A,e,t){var n="";do e||r--,n=t(r)+n,r/=A;while(r*A>=A);return n},X=function(r,A,e,t,n){var s=e-A+1;return(r<0?"-":"")+(Nc(Math.abs(r),s,t,function(i){return W(Math.floor(i%s)+A)})+n)},re=function(r,A,e){e===void 0&&(e=". ");var t=A.length;return Nc(Math.abs(r),t,!1,function(n){return A[Math.floor(n%t)]})+e},Ie=1,XA=2,JA=4,dt=8,RA=function(r,A,e,t,n,s){if(r<-9999||r>9999)return ut(r,4,n.length>0);var i=Math.abs(r),o=n;if(i===0)return A[0]+o;for(var a=0;i>0&&a<=4;a++){var l=i%10;l===0&&Z(s,Ie)&&o!==""?o=A[l]+o:l>1||l===1&&a===0||l===1&&a===1&&Z(s,XA)||l===1&&a===1&&Z(s,JA)&&r>100||l===1&&a>1&&Z(s,dt)?o=A[l]+(a>0?e[a-1]:"")+o:l===1&&a>0&&(o=e[a-1]+o),i=Math.floor(i/10)}return(r<0?t:"")+o},_c="十百千萬",Vc="拾佰仟萬",Oc="マイナス",zs="마이너스",ut=function(r,A,e){var t=e?". ":"",n=e?"、":"",s=e?", ":"",i=e?" ":"";switch(A){case 0:return"•"+i;case 1:return"◦"+i;case 2:return"◾"+i;case 5:var o=X(r,48,57,!0,t);return o.length<4?"0"+o:o;case 4:return re(r,"〇一二三四五六七八九",n);case 6:return Se(r,1,3999,Gc,3,t).toLowerCase();case 7:return Se(r,1,3999,Gc,3,t);case 8:return X(r,945,969,!1,t);case 9:return X(r,97,122,!1,t);case 10:return X(r,65,90,!1,t);case 11:return X(r,1632,1641,!0,t);case 12:case 49:return Se(r,1,9999,kc,3,t);case 35:return Se(r,1,9999,kc,3,t).toLowerCase();case 13:return X(r,2534,2543,!0,t);case 14:case 30:return X(r,6112,6121,!0,t);case 15:return re(r,"子丑寅卯辰巳午未申酉戌亥",n);case 16:return re(r,"甲乙丙丁戊己庚辛壬癸",n);case 17:case 48:return RA(r,"零一二三四五六七八九",_c,"負",n,XA|JA|dt);case 47:return RA(r,"零壹貳參肆伍陸柒捌玖",Vc,"負",n,Ie|XA|JA|dt);case 42:return RA(r,"零一二三四五六七八九",_c,"负",n,XA|JA|dt);case 41:return RA(r,"零壹贰叁肆伍陆柒捌玖",Vc,"负",n,Ie|XA|JA|dt);case 26:return RA(r,"〇一二三四五六七八九","十百千万",Oc,n,0);case 25:return RA(r,"零壱弐参四伍六七八九","拾百千万",Oc,n,Ie|XA|JA);case 31:return RA(r,"영일이삼사오육칠팔구","십백천만",zs,s,Ie|XA|JA);case 33:return RA(r,"零一二三四五六七八九","十百千萬",zs,s,0);case 32:return RA(r,"零壹貳參四五六七八九","拾百千",zs,s,Ie|XA|JA);case 18:return X(r,2406,2415,!0,t);case 20:return Se(r,1,19999,Aw,3,t);case 21:return X(r,2790,2799,!0,t);case 22:return X(r,2662,2671,!0,t);case 22:return Se(r,1,10999,jf,3,t);case 23:return re(r,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return re(r,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return X(r,3302,3311,!0,t);case 28:return re(r,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",n);case 29:return re(r,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",n);case 34:return X(r,3792,3801,!0,t);case 37:return X(r,6160,6169,!0,t);case 38:return X(r,4160,4169,!0,t);case 39:return X(r,2918,2927,!0,t);case 40:return X(r,1776,1785,!0,t);case 43:return X(r,3046,3055,!0,t);case 44:return X(r,3174,3183,!0,t);case 45:return X(r,3664,3673,!0,t);case 46:return X(r,3872,3881,!0,t);case 3:default:return X(r,48,57,!0,t)}},Wc="data-html2canvas-ignore",Xc=function(){function r(A,e,t){if(this.context=A,this.options=t,this.scrolledElements=[],this.referenceElement=e,this.counters=new qf,this.quoteDepth=0,!e.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(e.ownerDocument.documentElement,!1)}return r.prototype.toIFrame=function(A,e){var t=this,n=ew(A,e);if(!n.contentWindow)return Promise.reject("Unable to find iframe window");var s=A.defaultView.pageXOffset,i=A.defaultView.pageYOffset,o=n.contentWindow,a=o.document,l=nw(n).then(function(){return uA(t,void 0,void 0,function(){var d,h;return sA(this,function(u){switch(u.label){case 0:return this.scrolledElements.forEach(aw),o&&(o.scrollTo(e.left,e.top),/(iPad|iPhone|iPod)/g.test(navigator.userAgent)&&(o.scrollY!==e.top||o.scrollX!==e.left)&&(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(o.scrollX-e.left,o.scrollY-e.top,0,0))),d=this.options.onclone,h=this.clonedReferenceElement,typeof h>"u"?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:a.fonts&&a.fonts.ready?[4,a.fonts.ready]:[3,2];case 1:u.sent(),u.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,rw(a)]:[3,4];case 3:u.sent(),u.label=4;case 4:return typeof d=="function"?[2,Promise.resolve().then(function(){return d(a,h)}).then(function(){return n})]:[2,n]}})})});return a.open(),a.write(iw(document.doctype)+"<html></html>"),ow(this.referenceElement.ownerDocument,s,i),a.replaceChild(a.adoptNode(this.documentElement),a.documentElement),a.close(),l},r.prototype.createElementClone=function(A){if(Ls(A,2))debugger;if(Mc(A))return this.createCanvasClone(A);if(Dc(A))return this.createVideoClone(A);if(xc(A))return this.createStyleClone(A);var e=A.cloneNode(!1);return Js(e)&&(Js(A)&&A.currentSrc&&A.currentSrc!==A.src&&(e.src=A.currentSrc,e.srcset=""),e.loading==="lazy"&&(e.loading="eager")),Kc(e)?this.createCustomElementClone(e):e},r.prototype.createCustomElementClone=function(A){var e=document.createElement("html2canvascustomelement");return Ys(A.style,e),e},r.prototype.createStyleClone=function(A){try{var e=A.sheet;if(e&&e.cssRules){var t=[].slice.call(e.cssRules,0).reduce(function(s,i){return i&&typeof i.cssText=="string"?s+i.cssText:s},""),n=A.cloneNode(!1);return n.textContent=t,n}}catch(s){if(this.context.logger.error("Unable to access cssRules property",s),s.name!=="SecurityError")throw s}return A.cloneNode(!1)},r.prototype.createCanvasClone=function(A){var e;if(this.options.inlineImages&&A.ownerDocument){var t=A.ownerDocument.createElement("img");try{return t.src=A.toDataURL(),t}catch{this.context.logger.info("Unable to inline canvas contents, canvas is tainted",A)}}var n=A.cloneNode(!1);try{n.width=A.width,n.height=A.height;var s=A.getContext("2d"),i=n.getContext("2d");if(i)if(!this.options.allowTaint&&s)i.putImageData(s.getImageData(0,0,A.width,A.height),0,0);else{var o=(e=A.getContext("webgl2"))!==null&&e!==void 0?e:A.getContext("webgl");if(o){var a=o.getContextAttributes();(a==null?void 0:a.preserveDrawingBuffer)===!1&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",A)}i.drawImage(A,0,0)}return n}catch{this.context.logger.info("Unable to clone canvas as it is tainted",A)}return n},r.prototype.createVideoClone=function(A){var e=A.ownerDocument.createElement("canvas");e.width=A.offsetWidth,e.height=A.offsetHeight;var t=e.getContext("2d");try{return t&&(t.drawImage(A,0,0,e.width,e.height),this.options.allowTaint||t.getImageData(0,0,e.width,e.height)),e}catch{this.context.logger.info("Unable to clone video as it is tainted",A)}var n=A.ownerDocument.createElement("canvas");return n.width=A.offsetWidth,n.height=A.offsetHeight,n},r.prototype.appendChildNode=function(A,e,t){(!ye(e)||!Zf(e)&&!e.hasAttribute(Wc)&&(typeof this.options.ignoreElements!="function"||!this.options.ignoreElements(e)))&&(!this.options.copyStyles||!ye(e)||!xc(e))&&A.appendChild(this.cloneNode(e,t))},r.prototype.cloneChildNodes=function(A,e,t){for(var n=this,s=A.shadowRoot?A.shadowRoot.firstChild:A.firstChild;s;s=s.nextSibling)if(ye(s)&&Pc(s)&&typeof s.assignedNodes=="function"){var i=s.assignedNodes();i.length&&i.forEach(function(o){return n.appendChildNode(e,o,t)})}else this.appendChildNode(e,s,t)},r.prototype.cloneNode=function(A,e){if(Lc(A))return document.createTextNode(A.data);if(!A.ownerDocument)return A.cloneNode(!1);var t=A.ownerDocument.defaultView;if(t&&ye(A)&&(Ws(A)||un(A))){var n=this.createElementClone(A);n.style.transitionProperty="none";var s=t.getComputedStyle(A),i=t.getComputedStyle(A,":before"),o=t.getComputedStyle(A,":after");this.referenceElement===A&&Ws(n)&&(this.clonedReferenceElement=n),Xs(n)&&dw(n);var a=this.counters.parse(new ic(this.context,s)),l=this.resolvePseudoContent(A,n,i,ht.BEFORE);Kc(A)&&(e=!0),Dc(A)||this.cloneChildNodes(A,n,e),l&&n.insertBefore(l,n.firstChild);var d=this.resolvePseudoContent(A,n,o,ht.AFTER);return d&&n.appendChild(d),this.counters.pop(a),(s&&(this.options.copyStyles||un(A))&&!Rc(A)||e)&&Ys(s,n),(A.scrollTop!==0||A.scrollLeft!==0)&&this.scrolledElements.push([n,A.scrollLeft,A.scrollTop]),(hn(A)||gn(A))&&(hn(n)||gn(n))&&(n.value=A.value),n}return A.cloneNode(!1)},r.prototype.resolvePseudoContent=function(A,e,t,n){var s=this;if(t){var i=t.content,o=e.ownerDocument;if(!(!o||!i||i==="none"||i==="-moz-alt-content"||t.display==="none")){this.counters.parse(new ic(this.context,t));var a=new XB(this.context,t),l=o.createElement("html2canvaspseudoelement");Ys(t,l),a.content.forEach(function(h){if(h.type===0)l.appendChild(o.createTextNode(h.value));else if(h.type===22){var u=o.createElement("img");u.src=h.value,u.style.opacity="1",l.appendChild(u)}else if(h.type===18){if(h.name==="attr"){var f=h.values.filter(k);f.length&&l.appendChild(o.createTextNode(A.getAttribute(f[0].value)||""))}else if(h.name==="counter"){var B=h.values.filter(Ue),w=B[0],v=B[1];if(w&&k(w)){var m=s.counters.getCounterValue(w.value),F=v&&k(v)?Hs.parse(s.context,v.value):3;l.appendChild(o.createTextNode(ut(m,F,!1)))}}else if(h.name==="counters"){var E=h.values.filter(Ue),w=E[0],I=E[1],v=E[2];if(w&&k(w)){var y=s.counters.getCounterValues(w.value),U=v&&k(v)?Hs.parse(s.context,v.value):3,D=I&&I.type===0?I.value:"",R=y.map(function(oA){return ut(oA,U,!1)}).join(D);l.appendChild(o.createTextNode(R))}}}else if(h.type===20)switch(h.value){case"open-quote":l.appendChild(o.createTextNode(sc(a.quotes,s.quoteDepth++,!0)));break;case"close-quote":l.appendChild(o.createTextNode(sc(a.quotes,--s.quoteDepth,!1)));break;default:l.appendChild(o.createTextNode(h.value))}}),l.className=$s+" "+Zs;var d=n===ht.BEFORE?" "+$s:" "+Zs;return un(e)?e.className.baseValue+=d:e.className+=d,l}}},r.destroy=function(A){return A.parentNode?(A.parentNode.removeChild(A),!0):!1},r}(),ht;(function(r){r[r.BEFORE=0]="BEFORE",r[r.AFTER=1]="AFTER"})(ht||(ht={}));var ew=function(r,A){var e=r.createElement("iframe");return e.className="html2canvas-container",e.style.visibility="hidden",e.style.position="fixed",e.style.left="-10000px",e.style.top="0px",e.style.border="0",e.width=A.width.toString(),e.height=A.height.toString(),e.scrolling="no",e.setAttribute(Wc,"true"),r.body.appendChild(e),e},tw=function(r){return new Promise(function(A){if(r.complete){A();return}if(!r.src){A();return}r.onload=A,r.onerror=A})},rw=function(r){return Promise.all([].slice.call(r.images,0).map(tw))},nw=function(r){return new Promise(function(A,e){var t=r.contentWindow;if(!t)return e("No window assigned for iframe");var n=t.document;t.onload=r.onload=function(){t.onload=r.onload=null;var s=setInterval(function(){n.body.childNodes.length>0&&n.readyState==="complete"&&(clearInterval(s),A(r))},50)}})},sw=["all","d","content"],Ys=function(r,A){for(var e=r.length-1;e>=0;e--){var t=r.item(e);sw.indexOf(t)===-1&&A.style.setProperty(t,r.getPropertyValue(t))}return A},iw=function(r){var A="";return r&&(A+="<!DOCTYPE ",r.name&&(A+=r.name),r.internalSubset&&(A+=r.internalSubset),r.publicId&&(A+='"'+r.publicId+'"'),r.systemId&&(A+='"'+r.systemId+'"'),A+=">"),A},ow=function(r,A,e){r&&r.defaultView&&(A!==r.defaultView.pageXOffset||e!==r.defaultView.pageYOffset)&&r.defaultView.scrollTo(A,e)},aw=function(r){var A=r[0],e=r[1],t=r[2];A.scrollLeft=e,A.scrollTop=t},lw=":before",cw=":after",$s="___html2canvas___pseudoelement_before",Zs="___html2canvas___pseudoelement_after",Jc=`{
|
|
108
|
+
***************************************************************************** */var ns=function(r,A){return ns=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},ns(r,A)};function mA(r,A){if(typeof A!="function"&&A!==null)throw new TypeError("Class extends value "+String(A)+" is not a constructor or null");ns(r,A);function e(){this.constructor=r}r.prototype=A===null?Object.create(A):(e.prototype=A.prototype,new e)}var ss=function(){return ss=Object.assign||function(A){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&(A[s]=e[s])}return A},ss.apply(this,arguments)};function hA(r,A,e,t){function n(s){return s instanceof e?s:new e(function(i){i(s)})}return new(e||(e=Promise))(function(s,i){function o(d){try{l(t.next(d))}catch(h){i(h)}}function a(d){try{l(t.throw(d))}catch(h){i(h)}}function l(d){d.done?s(d.value):n(d.value).then(o,a)}l((t=t.apply(r,[])).next())})}function nA(r,A){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},t,n,s,i;return i={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(i[Symbol.iterator]=function(){return this}),i;function o(l){return function(d){return a([l,d])}}function a(l){if(t)throw new TypeError("Generator is already executing.");for(;e;)try{if(t=1,n&&(s=l[0]&2?n.return:l[0]?n.throw||((s=n.return)&&s.call(n),0):n.next)&&!(s=s.call(n,l[1])).done)return s;switch(n=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return e.label++,{value:l[1],done:!1};case 5:e.label++,n=l[1],l=[0];continue;case 7:l=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){e=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){e.label=l[1];break}if(l[0]===6&&e.label<s[1]){e.label=s[1],s=l;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(l);break}s[2]&&e.ops.pop(),e.trys.pop();continue}l=A.call(r,e)}catch(d){l=[6,d],n=0}finally{t=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}function Sr(r,A,e){if(arguments.length===2)for(var t=0,n=A.length,s;t<n;t++)(s||!(t in A))&&(s||(s=Array.prototype.slice.call(A,0,t)),s[t]=A[t]);return r.concat(s||A)}for(var bA=function(){function r(A,e,t,n){this.left=A,this.top=e,this.width=t,this.height=n}return r.prototype.add=function(A,e,t,n){return new r(this.left+A,this.top+e,this.width+t,this.height+n)},r.fromClientRect=function(A,e){return new r(e.left+A.windowBounds.left,e.top+A.windowBounds.top,e.width,e.height)},r.fromDOMRectList=function(A,e){var t=Array.from(e).find(function(n){return n.width!==0});return t?new r(t.left+A.windowBounds.left,t.top+A.windowBounds.top,t.width,t.height):r.EMPTY},r.EMPTY=new r(0,0,0,0),r}(),Ir=function(r,A){return bA.fromClientRect(r,A.getBoundingClientRect())},Uu=function(r){var A=r.body,e=r.documentElement;if(!A||!e)throw new Error("Unable to get document size");var t=Math.max(Math.max(A.scrollWidth,e.scrollWidth),Math.max(A.offsetWidth,e.offsetWidth),Math.max(A.clientWidth,e.clientWidth)),n=Math.max(Math.max(A.scrollHeight,e.scrollHeight),Math.max(A.offsetHeight,e.offsetHeight),Math.max(A.clientHeight,e.clientHeight));return new bA(0,0,t,n)},Tr=function(r){for(var A=[],e=0,t=r.length;e<t;){var n=r.charCodeAt(e++);if(n>=55296&&n<=56319&&e<t){var s=r.charCodeAt(e++);(s&64512)===56320?A.push(((n&1023)<<10)+(s&1023)+65536):(A.push(n),e--)}else A.push(n)}return A},X=function(){for(var r=[],A=0;A<arguments.length;A++)r[A]=arguments[A];if(String.fromCodePoint)return String.fromCodePoint.apply(String,r);var e=r.length;if(!e)return"";for(var t=[],n=-1,s="";++n<e;){var i=r[n];i<=65535?t.push(i):(i-=65536,t.push((i>>10)+55296,i%1024+56320)),(n+1===e||t.length>16384)&&(s+=String.fromCharCode.apply(String,t),t.length=0)}return s},tl="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Eu=typeof Uint8Array>"u"?[]:new Uint8Array(256),Hr=0;Hr<tl.length;Hr++)Eu[tl.charCodeAt(Hr)]=Hr;for(var rl="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Xe=typeof Uint8Array>"u"?[]:new Uint8Array(256),Lr=0;Lr<rl.length;Lr++)Xe[rl.charCodeAt(Lr)]=Lr;for(var yu=function(r){var A=r.length*.75,e=r.length,t,n=0,s,i,o,a;r[r.length-1]==="="&&(A--,r[r.length-2]==="="&&A--);var l=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u"&&typeof Uint8Array.prototype.slice<"u"?new ArrayBuffer(A):new Array(A),d=Array.isArray(l)?l:new Uint8Array(l);for(t=0;t<e;t+=4)s=Xe[r.charCodeAt(t)],i=Xe[r.charCodeAt(t+1)],o=Xe[r.charCodeAt(t+2)],a=Xe[r.charCodeAt(t+3)],d[n++]=s<<2|i>>4,d[n++]=(i&15)<<4|o>>2,d[n++]=(o&3)<<6|a&63;return l},Su=function(r){for(var A=r.length,e=[],t=0;t<A;t+=2)e.push(r[t+1]<<8|r[t]);return e},Iu=function(r){for(var A=r.length,e=[],t=0;t<A;t+=4)e.push(r[t+3]<<24|r[t+2]<<16|r[t+1]<<8|r[t]);return e},Ae=5,is=11,os=2,Tu=is-Ae,nl=65536>>Ae,Hu=1<<Ae,as=Hu-1,Lu=1024>>Ae,bu=nl+Lu,Mu=bu,Du=32,Ru=Mu+Du,xu=65536>>is,Pu=1<<Tu,Ku=Pu-1,sl=function(r,A,e){return r.slice?r.slice(A,e):new Uint16Array(Array.prototype.slice.call(r,A,e))},Gu=function(r,A,e){return r.slice?r.slice(A,e):new Uint32Array(Array.prototype.slice.call(r,A,e))},ku=function(r,A){var e=yu(r),t=Array.isArray(e)?Iu(e):new Uint32Array(e),n=Array.isArray(e)?Su(e):new Uint16Array(e),s=24,i=sl(n,s/2,t[4]/2),o=t[5]===2?sl(n,(s+t[4])/2):Gu(t,Math.ceil((s+t[4])/4));return new Nu(t[0],t[1],t[2],t[3],i,o)},Nu=function(){function r(A,e,t,n,s,i){this.initialValue=A,this.errorValue=e,this.highStart=t,this.highValueIndex=n,this.index=s,this.data=i}return r.prototype.get=function(A){var e;if(A>=0){if(A<55296||A>56319&&A<=65535)return e=this.index[A>>Ae],e=(e<<os)+(A&as),this.data[e];if(A<=65535)return e=this.index[nl+(A-55296>>Ae)],e=(e<<os)+(A&as),this.data[e];if(A<this.highStart)return e=Ru-xu+(A>>is),e=this.index[e],e+=A>>Ae&Ku,e=this.index[e],e=(e<<os)+(A&as),this.data[e];if(A<=1114111)return this.data[this.highValueIndex]}return this.errorValue},r}(),il="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",_u=typeof Uint8Array>"u"?[]:new Uint8Array(256),br=0;br<il.length;br++)_u[il.charCodeAt(br)]=br;var Vu="KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==",ol=50,Ou=1,al=2,ll=3,Wu=4,Xu=5,cl=7,dl=8,ul=9,kA=10,ls=11,hl=12,cs=13,Ju=14,Je=15,ds=16,Mr=17,ze=18,zu=19,gl=20,us=21,Ye=22,hs=23,Ce=24,BA=25,$e=26,Ze=27,ve=28,Yu=29,ee=30,$u=31,Dr=32,Rr=33,gs=34,Bs=35,fs=36,qe=37,ws=38,xr=39,Pr=40,ps=41,Bl=42,Zu=43,qu=[9001,65288],fl="!",x="×",Kr="÷",Cs=ku(Vu),MA=[ee,fs],vs=[Ou,al,ll,Xu],wl=[kA,dl],pl=[Ze,$e],ju=vs.concat(wl),Cl=[ws,xr,Pr,gs,Bs],Ah=[Je,cs],eh=function(r,A){A===void 0&&(A="strict");var e=[],t=[],n=[];return r.forEach(function(s,i){var o=Cs.get(s);if(o>ol?(n.push(!0),o-=ol):n.push(!1),["normal","auto","loose"].indexOf(A)!==-1&&[8208,8211,12316,12448].indexOf(s)!==-1)return t.push(i),e.push(ds);if(o===Wu||o===ls){if(i===0)return t.push(i),e.push(ee);var a=e[i-1];return ju.indexOf(a)===-1?(t.push(t[i-1]),e.push(a)):(t.push(i),e.push(ee))}if(t.push(i),o===$u)return e.push(A==="strict"?us:qe);if(o===Bl||o===Yu)return e.push(ee);if(o===Zu)return s>=131072&&s<=196605||s>=196608&&s<=262141?e.push(qe):e.push(ee);e.push(o)}),[t,e,n]},ms=function(r,A,e,t){var n=t[e];if(Array.isArray(r)?r.indexOf(n)!==-1:r===n)for(var s=e;s<=t.length;){s++;var i=t[s];if(i===A)return!0;if(i!==kA)break}if(n===kA)for(var s=e;s>0;){s--;var o=t[s];if(Array.isArray(r)?r.indexOf(o)!==-1:r===o)for(var a=e;a<=t.length;){a++;var i=t[a];if(i===A)return!0;if(i!==kA)break}if(o!==kA)break}return!1},vl=function(r,A){for(var e=r;e>=0;){var t=A[e];if(t===kA)e--;else return t}return 0},th=function(r,A,e,t,n){if(e[t]===0)return x;var s=t-1;if(Array.isArray(n)&&n[s]===!0)return x;var i=s-1,o=s+1,a=A[s],l=i>=0?A[i]:0,d=A[o];if(a===al&&d===ll)return x;if(vs.indexOf(a)!==-1)return fl;if(vs.indexOf(d)!==-1||wl.indexOf(d)!==-1)return x;if(vl(s,A)===dl)return Kr;if(Cs.get(r[s])===ls||(a===Dr||a===Rr)&&Cs.get(r[o])===ls||a===cl||d===cl||a===ul||[kA,cs,Je].indexOf(a)===-1&&d===ul||[Mr,ze,zu,Ce,ve].indexOf(d)!==-1||vl(s,A)===Ye||ms(hs,Ye,s,A)||ms([Mr,ze],us,s,A)||ms(hl,hl,s,A))return x;if(a===kA)return Kr;if(a===hs||d===hs)return x;if(d===ds||a===ds)return Kr;if([cs,Je,us].indexOf(d)!==-1||a===Ju||l===fs&&Ah.indexOf(a)!==-1||a===ve&&d===fs||d===gl||MA.indexOf(d)!==-1&&a===BA||MA.indexOf(a)!==-1&&d===BA||a===Ze&&[qe,Dr,Rr].indexOf(d)!==-1||[qe,Dr,Rr].indexOf(a)!==-1&&d===$e||MA.indexOf(a)!==-1&&pl.indexOf(d)!==-1||pl.indexOf(a)!==-1&&MA.indexOf(d)!==-1||[Ze,$e].indexOf(a)!==-1&&(d===BA||[Ye,Je].indexOf(d)!==-1&&A[o+1]===BA)||[Ye,Je].indexOf(a)!==-1&&d===BA||a===BA&&[BA,ve,Ce].indexOf(d)!==-1)return x;if([BA,ve,Ce,Mr,ze].indexOf(d)!==-1)for(var h=s;h>=0;){var u=A[h];if(u===BA)return x;if([ve,Ce].indexOf(u)!==-1)h--;else break}if([Ze,$e].indexOf(d)!==-1)for(var h=[Mr,ze].indexOf(a)!==-1?i:s;h>=0;){var u=A[h];if(u===BA)return x;if([ve,Ce].indexOf(u)!==-1)h--;else break}if(ws===a&&[ws,xr,gs,Bs].indexOf(d)!==-1||[xr,gs].indexOf(a)!==-1&&[xr,Pr].indexOf(d)!==-1||[Pr,Bs].indexOf(a)!==-1&&d===Pr||Cl.indexOf(a)!==-1&&[gl,$e].indexOf(d)!==-1||Cl.indexOf(d)!==-1&&a===Ze||MA.indexOf(a)!==-1&&MA.indexOf(d)!==-1||a===Ce&&MA.indexOf(d)!==-1||MA.concat(BA).indexOf(a)!==-1&&d===Ye&&qu.indexOf(r[o])===-1||MA.concat(BA).indexOf(d)!==-1&&a===ze)return x;if(a===ps&&d===ps){for(var f=e[s],B=1;f>0&&(f--,A[f]===ps);)B++;if(B%2!==0)return x}return a===Dr&&d===Rr?x:Kr},rh=function(r,A){A||(A={lineBreak:"normal",wordBreak:"normal"});var e=eh(r,A.lineBreak),t=e[0],n=e[1],s=e[2];(A.wordBreak==="break-all"||A.wordBreak==="break-word")&&(n=n.map(function(o){return[BA,ee,Bl].indexOf(o)!==-1?qe:o}));var i=A.wordBreak==="keep-all"?s.map(function(o,a){return o&&r[a]>=19968&&r[a]<=40959}):void 0;return[t,n,i]},nh=function(){function r(A,e,t,n){this.codePoints=A,this.required=e===fl,this.start=t,this.end=n}return r.prototype.slice=function(){return X.apply(void 0,this.codePoints.slice(this.start,this.end))},r}(),sh=function(r,A){var e=Tr(r),t=rh(e,A),n=t[0],s=t[1],i=t[2],o=e.length,a=0,l=0;return{next:function(){if(l>=o)return{done:!0,value:null};for(var d=x;l<o&&(d=th(e,s,n,++l,i))===x;);if(d!==x||l===o){var h=new nh(e,d,a,l);return a=l,{value:h,done:!1}}return{done:!0,value:null}}}},ih=1,oh=2,je=4,ml=8,Gr=10,Fl=47,At=92,ah=9,lh=32,kr=34,et=61,ch=35,dh=36,uh=37,Nr=39,_r=40,tt=41,hh=95,gA=45,gh=33,Bh=60,fh=62,wh=64,ph=91,Ch=93,vh=61,mh=123,Vr=63,Fh=125,Ql=124,Qh=126,Uh=128,Ul=65533,Fs=42,te=43,Eh=44,yh=58,Sh=59,rt=46,Ih=0,Th=8,Hh=11,Lh=14,bh=31,Mh=127,UA=-1,El=48,yl=97,Sl=101,Dh=102,Rh=117,xh=122,Il=65,Tl=69,Hl=70,Ph=85,Kh=90,sA=function(r){return r>=El&&r<=57},Gh=function(r){return r>=55296&&r<=57343},me=function(r){return sA(r)||r>=Il&&r<=Hl||r>=yl&&r<=Dh},kh=function(r){return r>=yl&&r<=xh},Nh=function(r){return r>=Il&&r<=Kh},_h=function(r){return kh(r)||Nh(r)},Vh=function(r){return r>=Uh},Or=function(r){return r===Gr||r===ah||r===lh},Wr=function(r){return _h(r)||Vh(r)||r===hh},Ll=function(r){return Wr(r)||sA(r)||r===gA},Oh=function(r){return r>=Ih&&r<=Th||r===Hh||r>=Lh&&r<=bh||r===Mh},NA=function(r,A){return r!==At?!1:A!==Gr},Xr=function(r,A,e){return r===gA?Wr(A)||NA(A,e):Wr(r)?!0:!!(r===At&&NA(r,A))},Qs=function(r,A,e){return r===te||r===gA?sA(A)?!0:A===rt&&sA(e):sA(r===rt?A:r)},Wh=function(r){var A=0,e=1;(r[A]===te||r[A]===gA)&&(r[A]===gA&&(e=-1),A++);for(var t=[];sA(r[A]);)t.push(r[A++]);var n=t.length?parseInt(X.apply(void 0,t),10):0;r[A]===rt&&A++;for(var s=[];sA(r[A]);)s.push(r[A++]);var i=s.length,o=i?parseInt(X.apply(void 0,s),10):0;(r[A]===Tl||r[A]===Sl)&&A++;var a=1;(r[A]===te||r[A]===gA)&&(r[A]===gA&&(a=-1),A++);for(var l=[];sA(r[A]);)l.push(r[A++]);var d=l.length?parseInt(X.apply(void 0,l),10):0;return e*(n+o*Math.pow(10,-i))*Math.pow(10,a*d)},Xh={type:2},Jh={type:3},zh={type:4},Yh={type:13},$h={type:8},Zh={type:21},qh={type:9},jh={type:10},Ag={type:11},eg={type:12},tg={type:14},Jr={type:23},rg={type:1},ng={type:25},sg={type:24},ig={type:26},og={type:27},ag={type:28},lg={type:29},cg={type:31},Us={type:32},bl=function(){function r(){this._value=[]}return r.prototype.write=function(A){this._value=this._value.concat(Tr(A))},r.prototype.read=function(){for(var A=[],e=this.consumeToken();e!==Us;)A.push(e),e=this.consumeToken();return A},r.prototype.consumeToken=function(){var A=this.consumeCodePoint();switch(A){case kr:return this.consumeStringToken(kr);case ch:var e=this.peekCodePoint(0),t=this.peekCodePoint(1),n=this.peekCodePoint(2);if(Ll(e)||NA(t,n)){var s=Xr(e,t,n)?oh:ih,i=this.consumeName();return{type:5,value:i,flags:s}}break;case dh:if(this.peekCodePoint(0)===et)return this.consumeCodePoint(),Yh;break;case Nr:return this.consumeStringToken(Nr);case _r:return Xh;case tt:return Jh;case Fs:if(this.peekCodePoint(0)===et)return this.consumeCodePoint(),tg;break;case te:if(Qs(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case Eh:return zh;case gA:var o=A,a=this.peekCodePoint(0),l=this.peekCodePoint(1);if(Qs(o,a,l))return this.reconsumeCodePoint(A),this.consumeNumericToken();if(Xr(o,a,l))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();if(a===gA&&l===fh)return this.consumeCodePoint(),this.consumeCodePoint(),sg;break;case rt:if(Qs(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case Fl:if(this.peekCodePoint(0)===Fs)for(this.consumeCodePoint();;){var d=this.consumeCodePoint();if(d===Fs&&(d=this.consumeCodePoint(),d===Fl))return this.consumeToken();if(d===UA)return this.consumeToken()}break;case yh:return ig;case Sh:return og;case Bh:if(this.peekCodePoint(0)===gh&&this.peekCodePoint(1)===gA&&this.peekCodePoint(2)===gA)return this.consumeCodePoint(),this.consumeCodePoint(),ng;break;case wh:var h=this.peekCodePoint(0),u=this.peekCodePoint(1),f=this.peekCodePoint(2);if(Xr(h,u,f)){var i=this.consumeName();return{type:7,value:i}}break;case ph:return ag;case At:if(NA(A,this.peekCodePoint(0)))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();break;case Ch:return lg;case vh:if(this.peekCodePoint(0)===et)return this.consumeCodePoint(),$h;break;case mh:return Ag;case Fh:return eg;case Rh:case Ph:var B=this.peekCodePoint(0),w=this.peekCodePoint(1);return B===te&&(me(w)||w===Vr)&&(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(A),this.consumeIdentLikeToken();case Ql:if(this.peekCodePoint(0)===et)return this.consumeCodePoint(),qh;if(this.peekCodePoint(0)===Ql)return this.consumeCodePoint(),Zh;break;case Qh:if(this.peekCodePoint(0)===et)return this.consumeCodePoint(),jh;break;case UA:return Us}return Or(A)?(this.consumeWhiteSpace(),cg):sA(A)?(this.reconsumeCodePoint(A),this.consumeNumericToken()):Wr(A)?(this.reconsumeCodePoint(A),this.consumeIdentLikeToken()):{type:6,value:X(A)}},r.prototype.consumeCodePoint=function(){var A=this._value.shift();return typeof A>"u"?-1:A},r.prototype.reconsumeCodePoint=function(A){this._value.unshift(A)},r.prototype.peekCodePoint=function(A){return A>=this._value.length?-1:this._value[A]},r.prototype.consumeUnicodeRangeToken=function(){for(var A=[],e=this.consumeCodePoint();me(e)&&A.length<6;)A.push(e),e=this.consumeCodePoint();for(var t=!1;e===Vr&&A.length<6;)A.push(e),e=this.consumeCodePoint(),t=!0;if(t){var n=parseInt(X.apply(void 0,A.map(function(a){return a===Vr?El:a})),16),s=parseInt(X.apply(void 0,A.map(function(a){return a===Vr?Hl:a})),16);return{type:30,start:n,end:s}}var i=parseInt(X.apply(void 0,A),16);if(this.peekCodePoint(0)===gA&&me(this.peekCodePoint(1))){this.consumeCodePoint(),e=this.consumeCodePoint();for(var o=[];me(e)&&o.length<6;)o.push(e),e=this.consumeCodePoint();var s=parseInt(X.apply(void 0,o),16);return{type:30,start:i,end:s}}else return{type:30,start:i,end:i}},r.prototype.consumeIdentLikeToken=function(){var A=this.consumeName();return A.toLowerCase()==="url"&&this.peekCodePoint(0)===_r?(this.consumeCodePoint(),this.consumeUrlToken()):this.peekCodePoint(0)===_r?(this.consumeCodePoint(),{type:19,value:A}):{type:20,value:A}},r.prototype.consumeUrlToken=function(){var A=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===UA)return{type:22,value:""};var e=this.peekCodePoint(0);if(e===Nr||e===kr){var t=this.consumeStringToken(this.consumeCodePoint());return t.type===0&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===UA||this.peekCodePoint(0)===tt)?(this.consumeCodePoint(),{type:22,value:t.value}):(this.consumeBadUrlRemnants(),Jr)}for(;;){var n=this.consumeCodePoint();if(n===UA||n===tt)return{type:22,value:X.apply(void 0,A)};if(Or(n))return this.consumeWhiteSpace(),this.peekCodePoint(0)===UA||this.peekCodePoint(0)===tt?(this.consumeCodePoint(),{type:22,value:X.apply(void 0,A)}):(this.consumeBadUrlRemnants(),Jr);if(n===kr||n===Nr||n===_r||Oh(n))return this.consumeBadUrlRemnants(),Jr;if(n===At)if(NA(n,this.peekCodePoint(0)))A.push(this.consumeEscapedCodePoint());else return this.consumeBadUrlRemnants(),Jr;else A.push(n)}},r.prototype.consumeWhiteSpace=function(){for(;Or(this.peekCodePoint(0));)this.consumeCodePoint()},r.prototype.consumeBadUrlRemnants=function(){for(;;){var A=this.consumeCodePoint();if(A===tt||A===UA)return;NA(A,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},r.prototype.consumeStringSlice=function(A){for(var e=5e4,t="";A>0;){var n=Math.min(e,A);t+=X.apply(void 0,this._value.splice(0,n)),A-=n}return this._value.shift(),t},r.prototype.consumeStringToken=function(A){var e="",t=0;do{var n=this._value[t];if(n===UA||n===void 0||n===A)return e+=this.consumeStringSlice(t),{type:0,value:e};if(n===Gr)return this._value.splice(0,t),rg;if(n===At){var s=this._value[t+1];s!==UA&&s!==void 0&&(s===Gr?(e+=this.consumeStringSlice(t),t=-1,this._value.shift()):NA(n,s)&&(e+=this.consumeStringSlice(t),e+=X(this.consumeEscapedCodePoint()),t=-1))}t++}while(!0)},r.prototype.consumeNumber=function(){var A=[],e=je,t=this.peekCodePoint(0);for((t===te||t===gA)&&A.push(this.consumeCodePoint());sA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());t=this.peekCodePoint(0);var n=this.peekCodePoint(1);if(t===rt&&sA(n))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),e=ml;sA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());t=this.peekCodePoint(0),n=this.peekCodePoint(1);var s=this.peekCodePoint(2);if((t===Tl||t===Sl)&&((n===te||n===gA)&&sA(s)||sA(n)))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),e=ml;sA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());return[Wh(A),e]},r.prototype.consumeNumericToken=function(){var A=this.consumeNumber(),e=A[0],t=A[1],n=this.peekCodePoint(0),s=this.peekCodePoint(1),i=this.peekCodePoint(2);if(Xr(n,s,i)){var o=this.consumeName();return{type:15,number:e,flags:t,unit:o}}return n===uh?(this.consumeCodePoint(),{type:16,number:e,flags:t}):{type:17,number:e,flags:t}},r.prototype.consumeEscapedCodePoint=function(){var A=this.consumeCodePoint();if(me(A)){for(var e=X(A);me(this.peekCodePoint(0))&&e.length<6;)e+=X(this.consumeCodePoint());Or(this.peekCodePoint(0))&&this.consumeCodePoint();var t=parseInt(e,16);return t===0||Gh(t)||t>1114111?Ul:t}return A===UA?Ul:A},r.prototype.consumeName=function(){for(var A="";;){var e=this.consumeCodePoint();if(Ll(e))A+=X(e);else if(NA(e,this.peekCodePoint(0)))A+=X(this.consumeEscapedCodePoint());else return this.reconsumeCodePoint(e),A}},r}(),Ml=function(){function r(A){this._tokens=A}return r.create=function(A){var e=new bl;return e.write(A),new r(e.read())},r.parseValue=function(A){return r.create(A).parseComponentValue()},r.parseValues=function(A){return r.create(A).parseComponentValues()},r.prototype.parseComponentValue=function(){for(var A=this.consumeToken();A.type===31;)A=this.consumeToken();if(A.type===32)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(A);var e=this.consumeComponentValue();do A=this.consumeToken();while(A.type===31);if(A.type===32)return e;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},r.prototype.parseComponentValues=function(){for(var A=[];;){var e=this.consumeComponentValue();if(e.type===32)return A;A.push(e),A.push()}},r.prototype.consumeComponentValue=function(){var A=this.consumeToken();switch(A.type){case 11:case 28:case 2:return this.consumeSimpleBlock(A.type);case 19:return this.consumeFunction(A)}return A},r.prototype.consumeSimpleBlock=function(A){for(var e={type:A,values:[]},t=this.consumeToken();;){if(t.type===32||ug(t,A))return e;this.reconsumeToken(t),e.values.push(this.consumeComponentValue()),t=this.consumeToken()}},r.prototype.consumeFunction=function(A){for(var e={name:A.value,values:[],type:18};;){var t=this.consumeToken();if(t.type===32||t.type===3)return e;this.reconsumeToken(t),e.values.push(this.consumeComponentValue())}},r.prototype.consumeToken=function(){var A=this._tokens.shift();return typeof A>"u"?Us:A},r.prototype.reconsumeToken=function(A){this._tokens.unshift(A)},r}(),nt=function(r){return r.type===15},Fe=function(r){return r.type===17},k=function(r){return r.type===20},dg=function(r){return r.type===0},Es=function(r,A){return k(r)&&r.value===A},Dl=function(r){return r.type!==31},Qe=function(r){return r.type!==31&&r.type!==4},EA=function(r){var A=[],e=[];return r.forEach(function(t){if(t.type===4){if(e.length===0)throw new Error("Error parsing function args, zero tokens for arg");A.push(e),e=[];return}t.type!==31&&e.push(t)}),e.length&&A.push(e),A},ug=function(r,A){return A===11&&r.type===12||A===28&&r.type===29?!0:A===2&&r.type===3},_A=function(r){return r.type===17||r.type===15},Y=function(r){return r.type===16||_A(r)},Rl=function(r){return r.length>1?[r[0],r[1]]:[r[0]]},eA={type:17,number:0,flags:je},ys={type:16,number:50,flags:je},VA={type:16,number:100,flags:je},st=function(r,A,e){var t=r[0],n=r[1];return[N(t,A),N(typeof n<"u"?n:t,e)]},N=function(r,A){if(r.type===16)return r.number/100*A;if(nt(r))switch(r.unit){case"rem":case"em":return 16*r.number;case"px":default:return r.number}return r.number},xl="deg",Pl="grad",Kl="rad",Gl="turn",zr={name:"angle",parse:function(r,A){if(A.type===15)switch(A.unit){case xl:return Math.PI*A.number/180;case Pl:return Math.PI/200*A.number;case Kl:return A.number;case Gl:return Math.PI*2*A.number}throw new Error("Unsupported angle type")}},kl=function(r){return r.type===15&&(r.unit===xl||r.unit===Pl||r.unit===Kl||r.unit===Gl)},Nl=function(r){var A=r.filter(k).map(function(e){return e.value}).join(" ");switch(A){case"to bottom right":case"to right bottom":case"left top":case"top left":return[eA,eA];case"to top":case"bottom":return fA(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[eA,VA];case"to right":case"left":return fA(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[VA,VA];case"to bottom":case"top":return fA(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[VA,eA];case"to left":case"right":return fA(270)}return 0},fA=function(r){return Math.PI*r/180},OA={name:"color",parse:function(r,A){if(A.type===18){var e=hg[A.name];if(typeof e>"u")throw new Error('Attempting to parse an unsupported color function "'+A.name+'"');return e(r,A.values)}if(A.type===5){if(A.value.length===3){var t=A.value.substring(0,1),n=A.value.substring(1,2),s=A.value.substring(2,3);return XA(parseInt(t+t,16),parseInt(n+n,16),parseInt(s+s,16),1)}if(A.value.length===4){var t=A.value.substring(0,1),n=A.value.substring(1,2),s=A.value.substring(2,3),i=A.value.substring(3,4);return XA(parseInt(t+t,16),parseInt(n+n,16),parseInt(s+s,16),parseInt(i+i,16)/255)}if(A.value.length===6){var t=A.value.substring(0,2),n=A.value.substring(2,4),s=A.value.substring(4,6);return XA(parseInt(t,16),parseInt(n,16),parseInt(s,16),1)}if(A.value.length===8){var t=A.value.substring(0,2),n=A.value.substring(2,4),s=A.value.substring(4,6),i=A.value.substring(6,8);return XA(parseInt(t,16),parseInt(n,16),parseInt(s,16),parseInt(i,16)/255)}}if(A.type===20){var o=DA[A.value.toUpperCase()];if(typeof o<"u")return o}return DA.TRANSPARENT}},WA=function(r){return(255&r)===0},q=function(r){var A=255&r,e=255&r>>8,t=255&r>>16,n=255&r>>24;return A<255?"rgba("+n+","+t+","+e+","+A/255+")":"rgb("+n+","+t+","+e+")"},XA=function(r,A,e,t){return(r<<24|A<<16|e<<8|Math.round(t*255)<<0)>>>0},_l=function(r,A){if(r.type===17)return r.number;if(r.type===16){var e=A===3?1:255;return A===3?r.number/100*e:Math.round(r.number/100*e)}return 0},Vl=function(r,A){var e=A.filter(Qe);if(e.length===3){var t=e.map(_l),n=t[0],s=t[1],i=t[2];return XA(n,s,i,1)}if(e.length===4){var o=e.map(_l),n=o[0],s=o[1],i=o[2],a=o[3];return XA(n,s,i,a)}return 0};function Ss(r,A,e){return e<0&&(e+=1),e>=1&&(e-=1),e<.16666666666666666?(A-r)*e*6+r:e<.5?A:e<.6666666666666666?(A-r)*6*(.6666666666666666-e)+r:r}var Ol=function(r,A){var e=A.filter(Qe),t=e[0],n=e[1],s=e[2],i=e[3],o=(t.type===17?fA(t.number):zr.parse(r,t))/(Math.PI*2),a=Y(n)?n.number/100:0,l=Y(s)?s.number/100:0,d=typeof i<"u"&&Y(i)?N(i,1):1;if(a===0)return XA(l*255,l*255,l*255,1);var h=l<=.5?l*(a+1):l+a-l*a,u=l*2-h,f=Ss(u,h,o+1/3),B=Ss(u,h,o),w=Ss(u,h,o-1/3);return XA(f*255,B*255,w*255,d)},hg={hsl:Ol,hsla:Ol,rgb:Vl,rgba:Vl},it=function(r,A){return OA.parse(r,Ml.create(A).parseComponentValue())},DA={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},gg={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(r,A){return A.map(function(e){if(k(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},Bg={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Yr=function(r,A){var e=OA.parse(r,A[0]),t=A[1];return t&&Y(t)?{color:e,stop:t}:{color:e,stop:null}},Wl=function(r,A){var e=r[0],t=r[r.length-1];e.stop===null&&(e.stop=eA),t.stop===null&&(t.stop=VA);for(var n=[],s=0,i=0;i<r.length;i++){var o=r[i].stop;if(o!==null){var a=N(o,A);a>s?n.push(a):n.push(s),s=a}else n.push(null)}for(var l=null,i=0;i<n.length;i++){var d=n[i];if(d===null)l===null&&(l=i);else if(l!==null){for(var h=i-l,u=n[l-1],f=(d-u)/(h+1),B=1;B<=h;B++)n[l+B-1]=f*B;l=null}}return r.map(function(w,v){var m=w.color;return{color:m,stop:Math.max(Math.min(1,n[v]/A),0)}})},fg=function(r,A,e){var t=A/2,n=e/2,s=N(r[0],A)-t,i=n-N(r[1],e);return(Math.atan2(i,s)+Math.PI*2)%(Math.PI*2)},wg=function(r,A,e){var t=typeof r=="number"?r:fg(r,A,e),n=Math.abs(A*Math.sin(t))+Math.abs(e*Math.cos(t)),s=A/2,i=e/2,o=n/2,a=Math.sin(t-Math.PI/2)*o,l=Math.cos(t-Math.PI/2)*o;return[n,s-l,s+l,i-a,i+a]},FA=function(r,A){return Math.sqrt(r*r+A*A)},Xl=function(r,A,e,t,n){var s=[[0,0],[0,A],[r,0],[r,A]];return s.reduce(function(i,o){var a=o[0],l=o[1],d=FA(e-a,t-l);return(n?d<i.optimumDistance:d>i.optimumDistance)?{optimumCorner:o,optimumDistance:d}:i},{optimumDistance:n?1/0:-1/0,optimumCorner:null}).optimumCorner},pg=function(r,A,e,t,n){var s=0,i=0;switch(r.size){case 0:r.shape===0?s=i=Math.min(Math.abs(A),Math.abs(A-t),Math.abs(e),Math.abs(e-n)):r.shape===1&&(s=Math.min(Math.abs(A),Math.abs(A-t)),i=Math.min(Math.abs(e),Math.abs(e-n)));break;case 2:if(r.shape===0)s=i=Math.min(FA(A,e),FA(A,e-n),FA(A-t,e),FA(A-t,e-n));else if(r.shape===1){var o=Math.min(Math.abs(e),Math.abs(e-n))/Math.min(Math.abs(A),Math.abs(A-t)),a=Xl(t,n,A,e,!0),l=a[0],d=a[1];s=FA(l-A,(d-e)/o),i=o*s}break;case 1:r.shape===0?s=i=Math.max(Math.abs(A),Math.abs(A-t),Math.abs(e),Math.abs(e-n)):r.shape===1&&(s=Math.max(Math.abs(A),Math.abs(A-t)),i=Math.max(Math.abs(e),Math.abs(e-n)));break;case 3:if(r.shape===0)s=i=Math.max(FA(A,e),FA(A,e-n),FA(A-t,e),FA(A-t,e-n));else if(r.shape===1){var o=Math.max(Math.abs(e),Math.abs(e-n))/Math.max(Math.abs(A),Math.abs(A-t)),h=Xl(t,n,A,e,!1),l=h[0],d=h[1];s=FA(l-A,(d-e)/o),i=o*s}break}return Array.isArray(r.size)&&(s=N(r.size[0],t),i=r.size.length===2?N(r.size[1],n):s),[s,i]},Cg=function(r,A){var e=fA(180),t=[];return EA(A).forEach(function(n,s){if(s===0){var i=n[0];if(i.type===20&&i.value==="to"){e=Nl(n);return}else if(kl(i)){e=zr.parse(r,i);return}}var o=Yr(r,n);t.push(o)}),{angle:e,stops:t,type:1}},$r=function(r,A){var e=fA(180),t=[];return EA(A).forEach(function(n,s){if(s===0){var i=n[0];if(i.type===20&&["top","left","right","bottom"].indexOf(i.value)!==-1){e=Nl(n);return}else if(kl(i)){e=(zr.parse(r,i)+fA(270))%fA(360);return}}var o=Yr(r,n);t.push(o)}),{angle:e,stops:t,type:1}},vg=function(r,A){var e=fA(180),t=[],n=1,s=0,i=3,o=[];return EA(A).forEach(function(a,l){var d=a[0];if(l===0){if(k(d)&&d.value==="linear"){n=1;return}else if(k(d)&&d.value==="radial"){n=2;return}}if(d.type===18){if(d.name==="from"){var h=OA.parse(r,d.values[0]);t.push({stop:eA,color:h})}else if(d.name==="to"){var h=OA.parse(r,d.values[0]);t.push({stop:VA,color:h})}else if(d.name==="color-stop"){var u=d.values.filter(Qe);if(u.length===2){var h=OA.parse(r,u[1]),f=u[0];Fe(f)&&t.push({stop:{type:16,number:f.number*100,flags:f.flags},color:h})}}}}),n===1?{angle:(e+fA(180))%fA(360),stops:t,type:n}:{size:i,shape:s,stops:t,position:o,type:n}},Jl="closest-side",zl="farthest-side",Yl="closest-corner",$l="farthest-corner",Zl="circle",ql="ellipse",jl="cover",Ac="contain",mg=function(r,A){var e=0,t=3,n=[],s=[];return EA(A).forEach(function(i,o){var a=!0;if(o===0){var l=!1;a=i.reduce(function(h,u){if(l)if(k(u))switch(u.value){case"center":return s.push(ys),h;case"top":case"left":return s.push(eA),h;case"right":case"bottom":return s.push(VA),h}else(Y(u)||_A(u))&&s.push(u);else if(k(u))switch(u.value){case Zl:return e=0,!1;case ql:return e=1,!1;case"at":return l=!0,!1;case Jl:return t=0,!1;case jl:case zl:return t=1,!1;case Ac:case Yl:return t=2,!1;case $l:return t=3,!1}else if(_A(u)||Y(u))return Array.isArray(t)||(t=[]),t.push(u),!1;return h},a)}if(a){var d=Yr(r,i);n.push(d)}}),{size:t,shape:e,stops:n,position:s,type:2}},Zr=function(r,A){var e=0,t=3,n=[],s=[];return EA(A).forEach(function(i,o){var a=!0;if(o===0?a=i.reduce(function(d,h){if(k(h))switch(h.value){case"center":return s.push(ys),!1;case"top":case"left":return s.push(eA),!1;case"right":case"bottom":return s.push(VA),!1}else if(Y(h)||_A(h))return s.push(h),!1;return d},a):o===1&&(a=i.reduce(function(d,h){if(k(h))switch(h.value){case Zl:return e=0,!1;case ql:return e=1,!1;case Ac:case Jl:return t=0,!1;case zl:return t=1,!1;case Yl:return t=2,!1;case jl:case $l:return t=3,!1}else if(_A(h)||Y(h))return Array.isArray(t)||(t=[]),t.push(h),!1;return d},a)),a){var l=Yr(r,i);n.push(l)}}),{size:t,shape:e,stops:n,position:s,type:2}},Fg=function(r){return r.type===1},Qg=function(r){return r.type===2},Is={name:"image",parse:function(r,A){if(A.type===22){var e={url:A.value,type:0};return r.cache.addImage(A.value),e}if(A.type===18){var t=ec[A.name];if(typeof t>"u")throw new Error('Attempting to parse an unsupported image function "'+A.name+'"');return t(r,A.values)}throw new Error("Unsupported image type "+A.type)}};function Ug(r){return!(r.type===20&&r.value==="none")&&(r.type!==18||!!ec[r.name])}var ec={"linear-gradient":Cg,"-moz-linear-gradient":$r,"-ms-linear-gradient":$r,"-o-linear-gradient":$r,"-webkit-linear-gradient":$r,"radial-gradient":mg,"-moz-radial-gradient":Zr,"-ms-radial-gradient":Zr,"-o-radial-gradient":Zr,"-webkit-radial-gradient":Zr,"-webkit-gradient":vg},Eg={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(r,A){if(A.length===0)return[];var e=A[0];return e.type===20&&e.value==="none"?[]:A.filter(function(t){return Qe(t)&&Ug(t)}).map(function(t){return Is.parse(r,t)})}},yg={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(r,A){return A.map(function(e){if(k(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},Sg={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(r,A){return EA(A).map(function(e){return e.filter(Y)}).map(Rl)}},Ig={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(r,A){return EA(A).map(function(e){return e.filter(k).map(function(t){return t.value}).join(" ")}).map(Tg)}},Tg=function(r){switch(r){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;case"repeat":default:return 0}},Ue;(function(r){r.AUTO="auto",r.CONTAIN="contain",r.COVER="cover"})(Ue||(Ue={}));var Hg={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(r,A){return EA(A).map(function(e){return e.filter(Lg)})}},Lg=function(r){return k(r)||Y(r)},qr=function(r){return{name:"border-"+r+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},bg=qr("top"),Mg=qr("right"),Dg=qr("bottom"),Rg=qr("left"),jr=function(r){return{name:"border-radius-"+r,initialValue:"0 0",prefix:!1,type:1,parse:function(A,e){return Rl(e.filter(Y))}}},xg=jr("top-left"),Pg=jr("top-right"),Kg=jr("bottom-right"),Gg=jr("bottom-left"),An=function(r){return{name:"border-"+r+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(A,e){switch(e){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},kg=An("top"),Ng=An("right"),_g=An("bottom"),Vg=An("left"),en=function(r){return{name:"border-"+r+"-width",initialValue:"0",type:0,prefix:!1,parse:function(A,e){return nt(e)?e.number:0}}},Og=en("top"),Wg=en("right"),Xg=en("bottom"),Jg=en("left"),zg={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Yg={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(r,A){switch(A){case"rtl":return 1;case"ltr":default:return 0}}},$g={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(r,A){return A.filter(k).reduce(function(e,t){return e|Zg(t.value)},0)}},Zg=function(r){switch(r){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},qg={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(r,A){switch(A){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},jg={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(r,A){return A.type===20&&A.value==="normal"?0:A.type===17||A.type===15?A.number:0}},tn;(function(r){r.NORMAL="normal",r.STRICT="strict"})(tn||(tn={}));var AB={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(r,A){switch(A){case"strict":return tn.STRICT;case"normal":default:return tn.NORMAL}}},eB={name:"line-height",initialValue:"normal",prefix:!1,type:4},tc=function(r,A){return k(r)&&r.value==="normal"?1.2*A:r.type===17?A*r.number:Y(r)?N(r,A):A},tB={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(r,A){return A.type===20&&A.value==="none"?null:Is.parse(r,A)}},rB={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(r,A){switch(A){case"inside":return 0;case"outside":default:return 1}}},Ts={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(r,A){switch(A){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":return 22;case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;case"none":default:return-1}}},rn=function(r){return{name:"margin-"+r,initialValue:"0",prefix:!1,type:4}},nB=rn("top"),sB=rn("right"),iB=rn("bottom"),oB=rn("left"),aB={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(r,A){return A.filter(k).map(function(e){switch(e.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;case"visible":default:return 0}})}},lB={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(r,A){switch(A){case"break-word":return"break-word";case"normal":default:return"normal"}}},nn=function(r){return{name:"padding-"+r,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},cB=nn("top"),dB=nn("right"),uB=nn("bottom"),hB=nn("left"),gB={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(r,A){switch(A){case"right":return 2;case"center":case"justify":return 1;case"left":default:return 0}}},BB={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(r,A){switch(A){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},fB={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(r,A){return A.length===1&&Es(A[0],"none")?[]:EA(A).map(function(e){for(var t={color:DA.TRANSPARENT,offsetX:eA,offsetY:eA,blur:eA},n=0,s=0;s<e.length;s++){var i=e[s];_A(i)?(n===0?t.offsetX=i:n===1?t.offsetY=i:t.blur=i,n++):t.color=OA.parse(r,i)}return t})}},wB={name:"text-transform",initialValue:"none",prefix:!1,type:2,parse:function(r,A){switch(A){case"uppercase":return 2;case"lowercase":return 1;case"capitalize":return 3}return 0}},pB={name:"transform",initialValue:"none",prefix:!0,type:0,parse:function(r,A){if(A.type===20&&A.value==="none")return null;if(A.type===18){var e=mB[A.name];if(typeof e>"u")throw new Error('Attempting to parse an unsupported transform function "'+A.name+'"');return e(A.values)}return null}},CB=function(r){var A=r.filter(function(e){return e.type===17}).map(function(e){return e.number});return A.length===6?A:null},vB=function(r){var A=r.filter(function(a){return a.type===17}).map(function(a){return a.number}),e=A[0],t=A[1];A[2],A[3];var n=A[4],s=A[5];A[6],A[7],A[8],A[9],A[10],A[11];var i=A[12],o=A[13];return A[14],A[15],A.length===16?[e,t,n,s,i,o]:null},mB={matrix:CB,matrix3d:vB},rc={type:16,number:50,flags:je},FB=[rc,rc],QB={name:"transform-origin",initialValue:"50% 50%",prefix:!0,type:1,parse:function(r,A){var e=A.filter(Y);return e.length!==2?FB:[e[0],e[1]]}},UB={name:"visible",initialValue:"none",prefix:!1,type:2,parse:function(r,A){switch(A){case"hidden":return 1;case"collapse":return 2;case"visible":default:return 0}}},ot;(function(r){r.NORMAL="normal",r.BREAK_ALL="break-all",r.KEEP_ALL="keep-all"})(ot||(ot={}));for(var EB={name:"word-break",initialValue:"normal",prefix:!1,type:2,parse:function(r,A){switch(A){case"break-all":return ot.BREAK_ALL;case"keep-all":return ot.KEEP_ALL;case"normal":default:return ot.NORMAL}}},yB={name:"z-index",initialValue:"auto",prefix:!1,type:0,parse:function(r,A){if(A.type===20)return{auto:!0,order:0};if(Fe(A))return{auto:!1,order:A.number};throw new Error("Invalid z-index number parsed")}},nc={name:"time",parse:function(r,A){if(A.type===15)switch(A.unit.toLowerCase()){case"s":return 1e3*A.number;case"ms":return A.number}throw new Error("Unsupported time type")}},SB={name:"opacity",initialValue:"1",type:0,prefix:!1,parse:function(r,A){return Fe(A)?A.number:1}},IB={name:"text-decoration-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},TB={name:"text-decoration-line",initialValue:"none",prefix:!1,type:1,parse:function(r,A){return A.filter(k).map(function(e){switch(e.value){case"underline":return 1;case"overline":return 2;case"line-through":return 3;case"none":return 4}return 0}).filter(function(e){return e!==0})}},HB={name:"font-family",initialValue:"",prefix:!1,type:1,parse:function(r,A){var e=[],t=[];return A.forEach(function(n){switch(n.type){case 20:case 0:e.push(n.value);break;case 17:e.push(n.number.toString());break;case 4:t.push(e.join(" ")),e.length=0;break}}),e.length&&t.push(e.join(" ")),t.map(function(n){return n.indexOf(" ")===-1?n:"'"+n+"'"})}},LB={name:"font-size",initialValue:"0",prefix:!1,type:3,format:"length"},bB={name:"font-weight",initialValue:"normal",type:0,prefix:!1,parse:function(r,A){if(Fe(A))return A.number;if(k(A))switch(A.value){case"bold":return 700;case"normal":default:return 400}return 400}},MB={name:"font-variant",initialValue:"none",type:1,prefix:!1,parse:function(r,A){return A.filter(k).map(function(e){return e.value})}},DB={name:"font-style",initialValue:"normal",prefix:!1,type:2,parse:function(r,A){switch(A){case"oblique":return"oblique";case"italic":return"italic";case"normal":default:return"normal"}}},Z=function(r,A){return(r&A)!==0},RB={name:"content",initialValue:"none",type:1,prefix:!1,parse:function(r,A){if(A.length===0)return[];var e=A[0];return e.type===20&&e.value==="none"?[]:A}},xB={name:"counter-increment",initialValue:"none",prefix:!0,type:1,parse:function(r,A){if(A.length===0)return null;var e=A[0];if(e.type===20&&e.value==="none")return null;for(var t=[],n=A.filter(Dl),s=0;s<n.length;s++){var i=n[s],o=n[s+1];if(i.type===20){var a=o&&Fe(o)?o.number:1;t.push({counter:i.value,increment:a})}}return t}},PB={name:"counter-reset",initialValue:"none",prefix:!0,type:1,parse:function(r,A){if(A.length===0)return[];for(var e=[],t=A.filter(Dl),n=0;n<t.length;n++){var s=t[n],i=t[n+1];if(k(s)&&s.value!=="none"){var o=i&&Fe(i)?i.number:0;e.push({counter:s.value,reset:o})}}return e}},KB={name:"duration",initialValue:"0s",prefix:!1,type:1,parse:function(r,A){return A.filter(nt).map(function(e){return nc.parse(r,e)})}},GB={name:"quotes",initialValue:"none",prefix:!0,type:1,parse:function(r,A){if(A.length===0)return null;var e=A[0];if(e.type===20&&e.value==="none")return null;var t=[],n=A.filter(dg);if(n.length%2!==0)return null;for(var s=0;s<n.length;s+=2){var i=n[s].value,o=n[s+1].value;t.push({open:i,close:o})}return t}},sc=function(r,A,e){if(!r)return"";var t=r[Math.min(A,r.length-1)];return t?e?t.open:t.close:""},kB={name:"box-shadow",initialValue:"none",type:1,prefix:!1,parse:function(r,A){return A.length===1&&Es(A[0],"none")?[]:EA(A).map(function(e){for(var t={color:255,offsetX:eA,offsetY:eA,blur:eA,spread:eA,inset:!1},n=0,s=0;s<e.length;s++){var i=e[s];Es(i,"inset")?t.inset=!0:_A(i)?(n===0?t.offsetX=i:n===1?t.offsetY=i:n===2?t.blur=i:t.spread=i,n++):t.color=OA.parse(r,i)}return t})}},NB={name:"paint-order",initialValue:"normal",prefix:!1,type:1,parse:function(r,A){var e=[0,1,2],t=[];return A.filter(k).forEach(function(n){switch(n.value){case"stroke":t.push(1);break;case"fill":t.push(0);break;case"markers":t.push(2);break}}),e.forEach(function(n){t.indexOf(n)===-1&&t.push(n)}),t}},_B={name:"-webkit-text-stroke-color",initialValue:"currentcolor",prefix:!1,type:3,format:"color"},VB={name:"-webkit-text-stroke-width",initialValue:"0",type:0,prefix:!1,parse:function(r,A){return nt(A)?A.number:0}},OB=function(){function r(A,e){var t,n;this.animationDuration=I(A,KB,e.animationDuration),this.backgroundClip=I(A,gg,e.backgroundClip),this.backgroundColor=I(A,Bg,e.backgroundColor),this.backgroundImage=I(A,Eg,e.backgroundImage),this.backgroundOrigin=I(A,yg,e.backgroundOrigin),this.backgroundPosition=I(A,Sg,e.backgroundPosition),this.backgroundRepeat=I(A,Ig,e.backgroundRepeat),this.backgroundSize=I(A,Hg,e.backgroundSize),this.borderTopColor=I(A,bg,e.borderTopColor),this.borderRightColor=I(A,Mg,e.borderRightColor),this.borderBottomColor=I(A,Dg,e.borderBottomColor),this.borderLeftColor=I(A,Rg,e.borderLeftColor),this.borderTopLeftRadius=I(A,xg,e.borderTopLeftRadius),this.borderTopRightRadius=I(A,Pg,e.borderTopRightRadius),this.borderBottomRightRadius=I(A,Kg,e.borderBottomRightRadius),this.borderBottomLeftRadius=I(A,Gg,e.borderBottomLeftRadius),this.borderTopStyle=I(A,kg,e.borderTopStyle),this.borderRightStyle=I(A,Ng,e.borderRightStyle),this.borderBottomStyle=I(A,_g,e.borderBottomStyle),this.borderLeftStyle=I(A,Vg,e.borderLeftStyle),this.borderTopWidth=I(A,Og,e.borderTopWidth),this.borderRightWidth=I(A,Wg,e.borderRightWidth),this.borderBottomWidth=I(A,Xg,e.borderBottomWidth),this.borderLeftWidth=I(A,Jg,e.borderLeftWidth),this.boxShadow=I(A,kB,e.boxShadow),this.color=I(A,zg,e.color),this.direction=I(A,Yg,e.direction),this.display=I(A,$g,e.display),this.float=I(A,qg,e.cssFloat),this.fontFamily=I(A,HB,e.fontFamily),this.fontSize=I(A,LB,e.fontSize),this.fontStyle=I(A,DB,e.fontStyle),this.fontVariant=I(A,MB,e.fontVariant),this.fontWeight=I(A,bB,e.fontWeight),this.letterSpacing=I(A,jg,e.letterSpacing),this.lineBreak=I(A,AB,e.lineBreak),this.lineHeight=I(A,eB,e.lineHeight),this.listStyleImage=I(A,tB,e.listStyleImage),this.listStylePosition=I(A,rB,e.listStylePosition),this.listStyleType=I(A,Ts,e.listStyleType),this.marginTop=I(A,nB,e.marginTop),this.marginRight=I(A,sB,e.marginRight),this.marginBottom=I(A,iB,e.marginBottom),this.marginLeft=I(A,oB,e.marginLeft),this.opacity=I(A,SB,e.opacity);var s=I(A,aB,e.overflow);this.overflowX=s[0],this.overflowY=s[s.length>1?1:0],this.overflowWrap=I(A,lB,e.overflowWrap),this.paddingTop=I(A,cB,e.paddingTop),this.paddingRight=I(A,dB,e.paddingRight),this.paddingBottom=I(A,uB,e.paddingBottom),this.paddingLeft=I(A,hB,e.paddingLeft),this.paintOrder=I(A,NB,e.paintOrder),this.position=I(A,BB,e.position),this.textAlign=I(A,gB,e.textAlign),this.textDecorationColor=I(A,IB,(t=e.textDecorationColor)!==null&&t!==void 0?t:e.color),this.textDecorationLine=I(A,TB,(n=e.textDecorationLine)!==null&&n!==void 0?n:e.textDecoration),this.textShadow=I(A,fB,e.textShadow),this.textTransform=I(A,wB,e.textTransform),this.transform=I(A,pB,e.transform),this.transformOrigin=I(A,QB,e.transformOrigin),this.visibility=I(A,UB,e.visibility),this.webkitTextStrokeColor=I(A,_B,e.webkitTextStrokeColor),this.webkitTextStrokeWidth=I(A,VB,e.webkitTextStrokeWidth),this.wordBreak=I(A,EB,e.wordBreak),this.zIndex=I(A,yB,e.zIndex)}return r.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&this.visibility===0},r.prototype.isTransparent=function(){return WA(this.backgroundColor)},r.prototype.isTransformed=function(){return this.transform!==null},r.prototype.isPositioned=function(){return this.position!==0},r.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},r.prototype.isFloating=function(){return this.float!==0},r.prototype.isInlineLevel=function(){return Z(this.display,4)||Z(this.display,33554432)||Z(this.display,268435456)||Z(this.display,536870912)||Z(this.display,67108864)||Z(this.display,134217728)},r}(),WB=function(){function r(A,e){this.content=I(A,RB,e.content),this.quotes=I(A,GB,e.quotes)}return r}(),ic=function(){function r(A,e){this.counterIncrement=I(A,xB,e.counterIncrement),this.counterReset=I(A,PB,e.counterReset)}return r}(),I=function(r,A,e){var t=new bl,n=e!==null&&typeof e<"u"?e.toString():A.initialValue;t.write(n);var s=new Ml(t.read());switch(A.type){case 2:var i=s.parseComponentValue();return A.parse(r,k(i)?i.value:A.initialValue);case 0:return A.parse(r,s.parseComponentValue());case 1:return A.parse(r,s.parseComponentValues());case 4:return s.parseComponentValue();case 3:switch(A.format){case"angle":return zr.parse(r,s.parseComponentValue());case"color":return OA.parse(r,s.parseComponentValue());case"image":return Is.parse(r,s.parseComponentValue());case"length":var o=s.parseComponentValue();return _A(o)?o:eA;case"length-percentage":var a=s.parseComponentValue();return Y(a)?a:eA;case"time":return nc.parse(r,s.parseComponentValue())}break}},XB="data-html2canvas-debug",JB=function(r){var A=r.getAttribute(XB);switch(A){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}},Hs=function(r,A){var e=JB(r);return e===1||A===e},yA=function(){function r(A,e){if(this.context=A,this.textNodes=[],this.elements=[],this.flags=0,Hs(e,3))debugger;this.styles=new OB(A,window.getComputedStyle(e,null)),Os(e)&&(this.styles.animationDuration.some(function(t){return t>0})&&(e.style.animationDuration="0s"),this.styles.transform!==null&&(e.style.transform="none")),this.bounds=Ir(this.context,e),Hs(e,4)&&(this.flags|=16)}return r}(),zB="AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=",oc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",at=typeof Uint8Array>"u"?[]:new Uint8Array(256),sn=0;sn<oc.length;sn++)at[oc.charCodeAt(sn)]=sn;for(var YB=function(r){var A=r.length*.75,e=r.length,t,n=0,s,i,o,a;r[r.length-1]==="="&&(A--,r[r.length-2]==="="&&A--);var l=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u"&&typeof Uint8Array.prototype.slice<"u"?new ArrayBuffer(A):new Array(A),d=Array.isArray(l)?l:new Uint8Array(l);for(t=0;t<e;t+=4)s=at[r.charCodeAt(t)],i=at[r.charCodeAt(t+1)],o=at[r.charCodeAt(t+2)],a=at[r.charCodeAt(t+3)],d[n++]=s<<2|i>>4,d[n++]=(i&15)<<4|o>>2,d[n++]=(o&3)<<6|a&63;return l},$B=function(r){for(var A=r.length,e=[],t=0;t<A;t+=2)e.push(r[t+1]<<8|r[t]);return e},ZB=function(r){for(var A=r.length,e=[],t=0;t<A;t+=4)e.push(r[t+3]<<24|r[t+2]<<16|r[t+1]<<8|r[t]);return e},re=5,Ls=11,bs=2,qB=Ls-re,ac=65536>>re,jB=1<<re,Ms=jB-1,Af=1024>>re,ef=ac+Af,tf=ef,rf=32,nf=tf+rf,sf=65536>>Ls,of=1<<qB,af=of-1,lc=function(r,A,e){return r.slice?r.slice(A,e):new Uint16Array(Array.prototype.slice.call(r,A,e))},lf=function(r,A,e){return r.slice?r.slice(A,e):new Uint32Array(Array.prototype.slice.call(r,A,e))},cf=function(r,A){var e=YB(r),t=Array.isArray(e)?ZB(e):new Uint32Array(e),n=Array.isArray(e)?$B(e):new Uint16Array(e),s=24,i=lc(n,s/2,t[4]/2),o=t[5]===2?lc(n,(s+t[4])/2):lf(t,Math.ceil((s+t[4])/4));return new df(t[0],t[1],t[2],t[3],i,o)},df=function(){function r(A,e,t,n,s,i){this.initialValue=A,this.errorValue=e,this.highStart=t,this.highValueIndex=n,this.index=s,this.data=i}return r.prototype.get=function(A){var e;if(A>=0){if(A<55296||A>56319&&A<=65535)return e=this.index[A>>re],e=(e<<bs)+(A&Ms),this.data[e];if(A<=65535)return e=this.index[ac+(A-55296>>re)],e=(e<<bs)+(A&Ms),this.data[e];if(A<this.highStart)return e=nf-sf+(A>>Ls),e=this.index[e],e+=A>>re&af,e=this.index[e],e=(e<<bs)+(A&Ms),this.data[e];if(A<=1114111)return this.data[this.highValueIndex]}return this.errorValue},r}(),cc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",uf=typeof Uint8Array>"u"?[]:new Uint8Array(256),on=0;on<cc.length;on++)uf[cc.charCodeAt(on)]=on;var hf=1,Ds=2,Rs=3,dc=4,uc=5,gf=7,hc=8,xs=9,Ps=10,gc=11,Bc=12,fc=13,wc=14,Ks=15,Bf=function(r){for(var A=[],e=0,t=r.length;e<t;){var n=r.charCodeAt(e++);if(n>=55296&&n<=56319&&e<t){var s=r.charCodeAt(e++);(s&64512)===56320?A.push(((n&1023)<<10)+(s&1023)+65536):(A.push(n),e--)}else A.push(n)}return A},ff=function(){for(var r=[],A=0;A<arguments.length;A++)r[A]=arguments[A];if(String.fromCodePoint)return String.fromCodePoint.apply(String,r);var e=r.length;if(!e)return"";for(var t=[],n=-1,s="";++n<e;){var i=r[n];i<=65535?t.push(i):(i-=65536,t.push((i>>10)+55296,i%1024+56320)),(n+1===e||t.length>16384)&&(s+=String.fromCharCode.apply(String,t),t.length=0)}return s},wf=cf(zB),wA="×",Gs="÷",pf=function(r){return wf.get(r)},Cf=function(r,A,e){var t=e-2,n=A[t],s=A[e-1],i=A[e];if(s===Ds&&i===Rs)return wA;if(s===Ds||s===Rs||s===dc||i===Ds||i===Rs||i===dc)return Gs;if(s===hc&&[hc,xs,gc,Bc].indexOf(i)!==-1||(s===gc||s===xs)&&(i===xs||i===Ps)||(s===Bc||s===Ps)&&i===Ps||i===fc||i===uc||i===gf||s===hf)return wA;if(s===fc&&i===wc){for(;n===uc;)n=A[--t];if(n===wc)return wA}if(s===Ks&&i===Ks){for(var o=0;n===Ks;)o++,n=A[--t];if(o%2===0)return wA}return Gs},vf=function(r){var A=Bf(r),e=A.length,t=0,n=0,s=A.map(pf);return{next:function(){if(t>=e)return{done:!0,value:null};for(var i=wA;t<e&&(i=Cf(A,s,++t))===wA;);if(i!==wA||t===e){var o=ff.apply(null,A.slice(n,t));return n=t,{value:o,done:!1}}return{done:!0,value:null}}}},mf=function(r){for(var A=vf(r),e=[],t;!(t=A.next()).done;)t.value&&e.push(t.value.slice());return e},Ff=function(r){var A=123;if(r.createRange){var e=r.createRange();if(e.getBoundingClientRect){var t=r.createElement("boundtest");t.style.height=A+"px",t.style.display="block",r.body.appendChild(t),e.selectNode(t);var n=e.getBoundingClientRect(),s=Math.round(n.height);if(r.body.removeChild(t),s===A)return!0}}return!1},Qf=function(r){var A=r.createElement("boundtest");A.style.width="50px",A.style.display="block",A.style.fontSize="12px",A.style.letterSpacing="0px",A.style.wordSpacing="0px",r.body.appendChild(A);var e=r.createRange();A.innerHTML=typeof"".repeat=="function"?"👨".repeat(10):"";var t=A.firstChild,n=Tr(t.data).map(function(a){return X(a)}),s=0,i={},o=n.every(function(a,l){e.setStart(t,s),e.setEnd(t,s+a.length);var d=e.getBoundingClientRect();s+=a.length;var h=d.x>i.x||d.y>i.y;return i=d,l===0?!0:h});return r.body.removeChild(A),o},Uf=function(){return typeof new Image().crossOrigin<"u"},Ef=function(){return typeof new XMLHttpRequest().responseType=="string"},yf=function(r){var A=new Image,e=r.createElement("canvas"),t=e.getContext("2d");if(!t)return!1;A.src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";try{t.drawImage(A,0,0),e.toDataURL()}catch{return!1}return!0},pc=function(r){return r[0]===0&&r[1]===255&&r[2]===0&&r[3]===255},Sf=function(r){var A=r.createElement("canvas"),e=100;A.width=e,A.height=e;var t=A.getContext("2d");if(!t)return Promise.reject(!1);t.fillStyle="rgb(0, 255, 0)",t.fillRect(0,0,e,e);var n=new Image,s=A.toDataURL();n.src=s;var i=ks(e,e,0,0,n);return t.fillStyle="red",t.fillRect(0,0,e,e),Cc(i).then(function(o){t.drawImage(o,0,0);var a=t.getImageData(0,0,e,e).data;t.fillStyle="red",t.fillRect(0,0,e,e);var l=r.createElement("div");return l.style.backgroundImage="url("+s+")",l.style.height=e+"px",pc(a)?Cc(ks(e,e,0,0,l)):Promise.reject(!1)}).then(function(o){return t.drawImage(o,0,0),pc(t.getImageData(0,0,e,e).data)}).catch(function(){return!1})},ks=function(r,A,e,t,n){var s="http://www.w3.org/2000/svg",i=document.createElementNS(s,"svg"),o=document.createElementNS(s,"foreignObject");return i.setAttributeNS(null,"width",r.toString()),i.setAttributeNS(null,"height",A.toString()),o.setAttributeNS(null,"width","100%"),o.setAttributeNS(null,"height","100%"),o.setAttributeNS(null,"x",e.toString()),o.setAttributeNS(null,"y",t.toString()),o.setAttributeNS(null,"externalResourcesRequired","true"),i.appendChild(o),o.appendChild(n),i},Cc=function(r){return new Promise(function(A,e){var t=new Image;t.onload=function(){return A(t)},t.onerror=e,t.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(r))})},tA={get SUPPORT_RANGE_BOUNDS(){var r=Ff(document);return Object.defineProperty(tA,"SUPPORT_RANGE_BOUNDS",{value:r}),r},get SUPPORT_WORD_BREAKING(){var r=tA.SUPPORT_RANGE_BOUNDS&&Qf(document);return Object.defineProperty(tA,"SUPPORT_WORD_BREAKING",{value:r}),r},get SUPPORT_SVG_DRAWING(){var r=yf(document);return Object.defineProperty(tA,"SUPPORT_SVG_DRAWING",{value:r}),r},get SUPPORT_FOREIGNOBJECT_DRAWING(){var r=typeof Array.from=="function"&&typeof window.fetch=="function"?Sf(document):Promise.resolve(!1);return Object.defineProperty(tA,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:r}),r},get SUPPORT_CORS_IMAGES(){var r=Uf();return Object.defineProperty(tA,"SUPPORT_CORS_IMAGES",{value:r}),r},get SUPPORT_RESPONSE_TYPE(){var r=Ef();return Object.defineProperty(tA,"SUPPORT_RESPONSE_TYPE",{value:r}),r},get SUPPORT_CORS_XHR(){var r="withCredentials"in new XMLHttpRequest;return Object.defineProperty(tA,"SUPPORT_CORS_XHR",{value:r}),r},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var r=!!(typeof Intl<"u"&&Intl.Segmenter);return Object.defineProperty(tA,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:r}),r}},lt=function(){function r(A,e){this.text=A,this.bounds=e}return r}(),If=function(r,A,e,t){var n=Lf(A,e),s=[],i=0;return n.forEach(function(o){if(e.textDecorationLine.length||o.trim().length>0)if(tA.SUPPORT_RANGE_BOUNDS){var a=vc(t,i,o.length).getClientRects();if(a.length>1){var l=Ns(o),d=0;l.forEach(function(u){s.push(new lt(u,bA.fromDOMRectList(r,vc(t,d+i,u.length).getClientRects()))),d+=u.length})}else s.push(new lt(o,bA.fromDOMRectList(r,a)))}else{var h=t.splitText(o.length);s.push(new lt(o,Tf(r,t))),t=h}else tA.SUPPORT_RANGE_BOUNDS||(t=t.splitText(o.length));i+=o.length}),s},Tf=function(r,A){var e=A.ownerDocument;if(e){var t=e.createElement("html2canvaswrapper");t.appendChild(A.cloneNode(!0));var n=A.parentNode;if(n){n.replaceChild(t,A);var s=Ir(r,t);return t.firstChild&&n.replaceChild(t.firstChild,t),s}}return bA.EMPTY},vc=function(r,A,e){var t=r.ownerDocument;if(!t)throw new Error("Node has no owner document");var n=t.createRange();return n.setStart(r,A),n.setEnd(r,A+e),n},Ns=function(r){if(tA.SUPPORT_NATIVE_TEXT_SEGMENTATION){var A=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(A.segment(r)).map(function(e){return e.segment})}return mf(r)},Hf=function(r,A){if(tA.SUPPORT_NATIVE_TEXT_SEGMENTATION){var e=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(e.segment(r)).map(function(t){return t.segment})}return Mf(r,A)},Lf=function(r,A){return A.letterSpacing!==0?Ns(r):Hf(r,A)},bf=[32,160,4961,65792,65793,4153,4241],Mf=function(r,A){for(var e=sh(r,{lineBreak:A.lineBreak,wordBreak:A.overflowWrap==="break-word"?"break-word":A.wordBreak}),t=[],n,s=function(){if(n.value){var i=n.value.slice(),o=Tr(i),a="";o.forEach(function(l){bf.indexOf(l)===-1?a+=X(l):(a.length&&t.push(a),t.push(X(l)),a="")}),a.length&&t.push(a)}};!(n=e.next()).done;)s();return t},Df=function(){function r(A,e,t){this.text=Rf(e.data,t.textTransform),this.textBounds=If(A,this.text,t,e)}return r}(),Rf=function(r,A){switch(A){case 1:return r.toLowerCase();case 3:return r.replace(xf,Pf);case 2:return r.toUpperCase();default:return r}},xf=/(^|\s|:|-|\(|\))([a-z])/g,Pf=function(r,A,e){return r.length>0?A+e.toUpperCase():r},mc=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.src=t.currentSrc||t.src,n.intrinsicWidth=t.naturalWidth,n.intrinsicHeight=t.naturalHeight,n.context.cache.addImage(n.src),n}return A}(yA),Fc=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.canvas=t,n.intrinsicWidth=t.width,n.intrinsicHeight=t.height,n}return A}(yA),Qc=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this,s=new XMLSerializer,i=Ir(e,t);return t.setAttribute("width",i.width+"px"),t.setAttribute("height",i.height+"px"),n.svg="data:image/svg+xml,"+encodeURIComponent(s.serializeToString(t)),n.intrinsicWidth=t.width.baseVal.value,n.intrinsicHeight=t.height.baseVal.value,n.context.cache.addImage(n.svg),n}return A}(yA),Uc=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.value=t.value,n}return A}(yA),_s=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.start=t.start,n.reversed=typeof t.reversed=="boolean"&&t.reversed===!0,n}return A}(yA),Kf=[{type:15,flags:0,unit:"px",number:3}],Gf=[{type:16,flags:0,number:50}],kf=function(r){return r.width>r.height?new bA(r.left+(r.width-r.height)/2,r.top,r.height,r.height):r.width<r.height?new bA(r.left,r.top+(r.height-r.width)/2,r.width,r.width):r},Nf=function(r){var A=r.type===_f?new Array(r.value.length+1).join("•"):r.value;return A.length===0?r.placeholder||"":A},an="checkbox",ln="radio",_f="password",Ec=707406591,Vs=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;switch(n.type=t.type.toLowerCase(),n.checked=t.checked,n.value=Nf(t),(n.type===an||n.type===ln)&&(n.styles.backgroundColor=3739148031,n.styles.borderTopColor=n.styles.borderRightColor=n.styles.borderBottomColor=n.styles.borderLeftColor=2779096575,n.styles.borderTopWidth=n.styles.borderRightWidth=n.styles.borderBottomWidth=n.styles.borderLeftWidth=1,n.styles.borderTopStyle=n.styles.borderRightStyle=n.styles.borderBottomStyle=n.styles.borderLeftStyle=1,n.styles.backgroundClip=[0],n.styles.backgroundOrigin=[0],n.bounds=kf(n.bounds)),n.type){case an:n.styles.borderTopRightRadius=n.styles.borderTopLeftRadius=n.styles.borderBottomRightRadius=n.styles.borderBottomLeftRadius=Kf;break;case ln:n.styles.borderTopRightRadius=n.styles.borderTopLeftRadius=n.styles.borderBottomRightRadius=n.styles.borderBottomLeftRadius=Gf;break}return n}return A}(yA),yc=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this,s=t.options[t.selectedIndex||0];return n.value=s&&s.text||"",n}return A}(yA),Sc=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.value=t.value,n}return A}(yA),Ic=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;n.src=t.src,n.width=parseInt(t.width,10)||0,n.height=parseInt(t.height,10)||0,n.backgroundColor=n.styles.backgroundColor;try{if(t.contentWindow&&t.contentWindow.document&&t.contentWindow.document.documentElement){n.tree=Hc(e,t.contentWindow.document.documentElement);var s=t.contentWindow.document.documentElement?it(e,getComputedStyle(t.contentWindow.document.documentElement).backgroundColor):DA.TRANSPARENT,i=t.contentWindow.document.body?it(e,getComputedStyle(t.contentWindow.document.body).backgroundColor):DA.TRANSPARENT;n.backgroundColor=WA(s)?WA(i)?n.styles.backgroundColor:i:s}}catch{}return n}return A}(yA),Vf=["OL","UL","MENU"],cn=function(r,A,e,t){for(var n=A.firstChild,s=void 0;n;n=s)if(s=n.nextSibling,Lc(n)&&n.data.trim().length>0)e.textNodes.push(new Df(r,n,e.styles));else if(Ee(n))if(Pc(n)&&n.assignedNodes)n.assignedNodes().forEach(function(o){return cn(r,o,e,t)});else{var i=Tc(r,n);i.styles.isVisible()&&(Of(n,i,t)?i.flags|=4:Wf(i.styles)&&(i.flags|=2),Vf.indexOf(n.tagName)!==-1&&(i.flags|=8),e.elements.push(i),n.slot,n.shadowRoot?cn(r,n.shadowRoot,i,t):!un(n)&&!bc(n)&&!hn(n)&&cn(r,n,i,t))}},Tc=function(r,A){return Xs(A)?new mc(r,A):Mc(A)?new Fc(r,A):bc(A)?new Qc(r,A):Xf(A)?new Uc(r,A):Jf(A)?new _s(r,A):zf(A)?new Vs(r,A):hn(A)?new yc(r,A):un(A)?new Sc(r,A):Rc(A)?new Ic(r,A):new yA(r,A)},Hc=function(r,A){var e=Tc(r,A);return e.flags|=4,cn(r,A,e,e),e},Of=function(r,A,e){return A.styles.isPositionedWithZIndex()||A.styles.opacity<1||A.styles.isTransformed()||Ws(r)&&e.styles.isTransparent()},Wf=function(r){return r.isPositioned()||r.isFloating()},Lc=function(r){return r.nodeType===Node.TEXT_NODE},Ee=function(r){return r.nodeType===Node.ELEMENT_NODE},Os=function(r){return Ee(r)&&typeof r.style<"u"&&!dn(r)},dn=function(r){return typeof r.className=="object"},Xf=function(r){return r.tagName==="LI"},Jf=function(r){return r.tagName==="OL"},zf=function(r){return r.tagName==="INPUT"},Yf=function(r){return r.tagName==="HTML"},bc=function(r){return r.tagName==="svg"},Ws=function(r){return r.tagName==="BODY"},Mc=function(r){return r.tagName==="CANVAS"},Dc=function(r){return r.tagName==="VIDEO"},Xs=function(r){return r.tagName==="IMG"},Rc=function(r){return r.tagName==="IFRAME"},xc=function(r){return r.tagName==="STYLE"},$f=function(r){return r.tagName==="SCRIPT"},un=function(r){return r.tagName==="TEXTAREA"},hn=function(r){return r.tagName==="SELECT"},Pc=function(r){return r.tagName==="SLOT"},Kc=function(r){return r.tagName.indexOf("-")>0},Zf=function(){function r(){this.counters={}}return r.prototype.getCounterValue=function(A){var e=this.counters[A];return e&&e.length?e[e.length-1]:1},r.prototype.getCounterValues=function(A){var e=this.counters[A];return e||[]},r.prototype.pop=function(A){var e=this;A.forEach(function(t){return e.counters[t].pop()})},r.prototype.parse=function(A){var e=this,t=A.counterIncrement,n=A.counterReset,s=!0;t!==null&&t.forEach(function(o){var a=e.counters[o.counter];a&&o.increment!==0&&(s=!1,a.length||a.push(1),a[Math.max(0,a.length-1)]+=o.increment)});var i=[];return s&&n.forEach(function(o){var a=e.counters[o.counter];i.push(o.counter),a||(a=e.counters[o.counter]=[]),a.push(o.reset)}),i},r}(),Gc={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},kc={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},qf={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},jf={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},ye=function(r,A,e,t,n,s){return r<A||r>e?dt(r,n,s.length>0):t.integers.reduce(function(i,o,a){for(;r>=o;)r-=o,i+=t.values[a];return i},"")+s},Nc=function(r,A,e,t){var n="";do e||r--,n=t(r)+n,r/=A;while(r*A>=A);return n},J=function(r,A,e,t,n){var s=e-A+1;return(r<0?"-":"")+(Nc(Math.abs(r),s,t,function(i){return X(Math.floor(i%s)+A)})+n)},ne=function(r,A,e){e===void 0&&(e=". ");var t=A.length;return Nc(Math.abs(r),t,!1,function(n){return A[Math.floor(n%t)]})+e},Se=1,JA=2,zA=4,ct=8,RA=function(r,A,e,t,n,s){if(r<-9999||r>9999)return dt(r,4,n.length>0);var i=Math.abs(r),o=n;if(i===0)return A[0]+o;for(var a=0;i>0&&a<=4;a++){var l=i%10;l===0&&Z(s,Se)&&o!==""?o=A[l]+o:l>1||l===1&&a===0||l===1&&a===1&&Z(s,JA)||l===1&&a===1&&Z(s,zA)&&r>100||l===1&&a>1&&Z(s,ct)?o=A[l]+(a>0?e[a-1]:"")+o:l===1&&a>0&&(o=e[a-1]+o),i=Math.floor(i/10)}return(r<0?t:"")+o},_c="十百千萬",Vc="拾佰仟萬",Oc="マイナス",Js="마이너스",dt=function(r,A,e){var t=e?". ":"",n=e?"、":"",s=e?", ":"",i=e?" ":"";switch(A){case 0:return"•"+i;case 1:return"◦"+i;case 2:return"◾"+i;case 5:var o=J(r,48,57,!0,t);return o.length<4?"0"+o:o;case 4:return ne(r,"〇一二三四五六七八九",n);case 6:return ye(r,1,3999,Gc,3,t).toLowerCase();case 7:return ye(r,1,3999,Gc,3,t);case 8:return J(r,945,969,!1,t);case 9:return J(r,97,122,!1,t);case 10:return J(r,65,90,!1,t);case 11:return J(r,1632,1641,!0,t);case 12:case 49:return ye(r,1,9999,kc,3,t);case 35:return ye(r,1,9999,kc,3,t).toLowerCase();case 13:return J(r,2534,2543,!0,t);case 14:case 30:return J(r,6112,6121,!0,t);case 15:return ne(r,"子丑寅卯辰巳午未申酉戌亥",n);case 16:return ne(r,"甲乙丙丁戊己庚辛壬癸",n);case 17:case 48:return RA(r,"零一二三四五六七八九",_c,"負",n,JA|zA|ct);case 47:return RA(r,"零壹貳參肆伍陸柒捌玖",Vc,"負",n,Se|JA|zA|ct);case 42:return RA(r,"零一二三四五六七八九",_c,"负",n,JA|zA|ct);case 41:return RA(r,"零壹贰叁肆伍陆柒捌玖",Vc,"负",n,Se|JA|zA|ct);case 26:return RA(r,"〇一二三四五六七八九","十百千万",Oc,n,0);case 25:return RA(r,"零壱弐参四伍六七八九","拾百千万",Oc,n,Se|JA|zA);case 31:return RA(r,"영일이삼사오육칠팔구","십백천만",Js,s,Se|JA|zA);case 33:return RA(r,"零一二三四五六七八九","十百千萬",Js,s,0);case 32:return RA(r,"零壹貳參四五六七八九","拾百千",Js,s,Se|JA|zA);case 18:return J(r,2406,2415,!0,t);case 20:return ye(r,1,19999,jf,3,t);case 21:return J(r,2790,2799,!0,t);case 22:return J(r,2662,2671,!0,t);case 22:return ye(r,1,10999,qf,3,t);case 23:return ne(r,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return ne(r,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return J(r,3302,3311,!0,t);case 28:return ne(r,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",n);case 29:return ne(r,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",n);case 34:return J(r,3792,3801,!0,t);case 37:return J(r,6160,6169,!0,t);case 38:return J(r,4160,4169,!0,t);case 39:return J(r,2918,2927,!0,t);case 40:return J(r,1776,1785,!0,t);case 43:return J(r,3046,3055,!0,t);case 44:return J(r,3174,3183,!0,t);case 45:return J(r,3664,3673,!0,t);case 46:return J(r,3872,3881,!0,t);case 3:default:return J(r,48,57,!0,t)}},Wc="data-html2canvas-ignore",Xc=function(){function r(A,e,t){if(this.context=A,this.options=t,this.scrolledElements=[],this.referenceElement=e,this.counters=new Zf,this.quoteDepth=0,!e.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(e.ownerDocument.documentElement,!1)}return r.prototype.toIFrame=function(A,e){var t=this,n=Aw(A,e);if(!n.contentWindow)return Promise.reject("Unable to find iframe window");var s=A.defaultView.pageXOffset,i=A.defaultView.pageYOffset,o=n.contentWindow,a=o.document,l=rw(n).then(function(){return hA(t,void 0,void 0,function(){var d,h;return nA(this,function(u){switch(u.label){case 0:return this.scrolledElements.forEach(ow),o&&(o.scrollTo(e.left,e.top),/(iPad|iPhone|iPod)/g.test(navigator.userAgent)&&(o.scrollY!==e.top||o.scrollX!==e.left)&&(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(o.scrollX-e.left,o.scrollY-e.top,0,0))),d=this.options.onclone,h=this.clonedReferenceElement,typeof h>"u"?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:a.fonts&&a.fonts.ready?[4,a.fonts.ready]:[3,2];case 1:u.sent(),u.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,tw(a)]:[3,4];case 3:u.sent(),u.label=4;case 4:return typeof d=="function"?[2,Promise.resolve().then(function(){return d(a,h)}).then(function(){return n})]:[2,n]}})})});return a.open(),a.write(sw(document.doctype)+"<html></html>"),iw(this.referenceElement.ownerDocument,s,i),a.replaceChild(a.adoptNode(this.documentElement),a.documentElement),a.close(),l},r.prototype.createElementClone=function(A){if(Hs(A,2))debugger;if(Mc(A))return this.createCanvasClone(A);if(Dc(A))return this.createVideoClone(A);if(xc(A))return this.createStyleClone(A);var e=A.cloneNode(!1);return Xs(e)&&(Xs(A)&&A.currentSrc&&A.currentSrc!==A.src&&(e.src=A.currentSrc,e.srcset=""),e.loading==="lazy"&&(e.loading="eager")),Kc(e)?this.createCustomElementClone(e):e},r.prototype.createCustomElementClone=function(A){var e=document.createElement("html2canvascustomelement");return zs(A.style,e),e},r.prototype.createStyleClone=function(A){try{var e=A.sheet;if(e&&e.cssRules){var t=[].slice.call(e.cssRules,0).reduce(function(s,i){return i&&typeof i.cssText=="string"?s+i.cssText:s},""),n=A.cloneNode(!1);return n.textContent=t,n}}catch(s){if(this.context.logger.error("Unable to access cssRules property",s),s.name!=="SecurityError")throw s}return A.cloneNode(!1)},r.prototype.createCanvasClone=function(A){var e;if(this.options.inlineImages&&A.ownerDocument){var t=A.ownerDocument.createElement("img");try{return t.src=A.toDataURL(),t}catch{this.context.logger.info("Unable to inline canvas contents, canvas is tainted",A)}}var n=A.cloneNode(!1);try{n.width=A.width,n.height=A.height;var s=A.getContext("2d"),i=n.getContext("2d");if(i)if(!this.options.allowTaint&&s)i.putImageData(s.getImageData(0,0,A.width,A.height),0,0);else{var o=(e=A.getContext("webgl2"))!==null&&e!==void 0?e:A.getContext("webgl");if(o){var a=o.getContextAttributes();(a==null?void 0:a.preserveDrawingBuffer)===!1&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",A)}i.drawImage(A,0,0)}return n}catch{this.context.logger.info("Unable to clone canvas as it is tainted",A)}return n},r.prototype.createVideoClone=function(A){var e=A.ownerDocument.createElement("canvas");e.width=A.offsetWidth,e.height=A.offsetHeight;var t=e.getContext("2d");try{return t&&(t.drawImage(A,0,0,e.width,e.height),this.options.allowTaint||t.getImageData(0,0,e.width,e.height)),e}catch{this.context.logger.info("Unable to clone video as it is tainted",A)}var n=A.ownerDocument.createElement("canvas");return n.width=A.offsetWidth,n.height=A.offsetHeight,n},r.prototype.appendChildNode=function(A,e,t){(!Ee(e)||!$f(e)&&!e.hasAttribute(Wc)&&(typeof this.options.ignoreElements!="function"||!this.options.ignoreElements(e)))&&(!this.options.copyStyles||!Ee(e)||!xc(e))&&A.appendChild(this.cloneNode(e,t))},r.prototype.cloneChildNodes=function(A,e,t){for(var n=this,s=A.shadowRoot?A.shadowRoot.firstChild:A.firstChild;s;s=s.nextSibling)if(Ee(s)&&Pc(s)&&typeof s.assignedNodes=="function"){var i=s.assignedNodes();i.length&&i.forEach(function(o){return n.appendChildNode(e,o,t)})}else this.appendChildNode(e,s,t)},r.prototype.cloneNode=function(A,e){if(Lc(A))return document.createTextNode(A.data);if(!A.ownerDocument)return A.cloneNode(!1);var t=A.ownerDocument.defaultView;if(t&&Ee(A)&&(Os(A)||dn(A))){var n=this.createElementClone(A);n.style.transitionProperty="none";var s=t.getComputedStyle(A),i=t.getComputedStyle(A,":before"),o=t.getComputedStyle(A,":after");this.referenceElement===A&&Os(n)&&(this.clonedReferenceElement=n),Ws(n)&&cw(n);var a=this.counters.parse(new ic(this.context,s)),l=this.resolvePseudoContent(A,n,i,ut.BEFORE);Kc(A)&&(e=!0),Dc(A)||this.cloneChildNodes(A,n,e),l&&n.insertBefore(l,n.firstChild);var d=this.resolvePseudoContent(A,n,o,ut.AFTER);return d&&n.appendChild(d),this.counters.pop(a),(s&&(this.options.copyStyles||dn(A))&&!Rc(A)||e)&&zs(s,n),(A.scrollTop!==0||A.scrollLeft!==0)&&this.scrolledElements.push([n,A.scrollLeft,A.scrollTop]),(un(A)||hn(A))&&(un(n)||hn(n))&&(n.value=A.value),n}return A.cloneNode(!1)},r.prototype.resolvePseudoContent=function(A,e,t,n){var s=this;if(t){var i=t.content,o=e.ownerDocument;if(!(!o||!i||i==="none"||i==="-moz-alt-content"||t.display==="none")){this.counters.parse(new ic(this.context,t));var a=new WB(this.context,t),l=o.createElement("html2canvaspseudoelement");zs(t,l),a.content.forEach(function(h){if(h.type===0)l.appendChild(o.createTextNode(h.value));else if(h.type===22){var u=o.createElement("img");u.src=h.value,u.style.opacity="1",l.appendChild(u)}else if(h.type===18){if(h.name==="attr"){var f=h.values.filter(k);f.length&&l.appendChild(o.createTextNode(A.getAttribute(f[0].value)||""))}else if(h.name==="counter"){var B=h.values.filter(Qe),w=B[0],v=B[1];if(w&&k(w)){var m=s.counters.getCounterValue(w.value),F=v&&k(v)?Ts.parse(s.context,v.value):3;l.appendChild(o.createTextNode(dt(m,F,!1)))}}else if(h.name==="counters"){var E=h.values.filter(Qe),w=E[0],H=E[1],v=E[2];if(w&&k(w)){var y=s.counters.getCounterValues(w.value),U=v&&k(v)?Ts.parse(s.context,v.value):3,D=H&&H.type===0?H.value:"",R=y.map(function(iA){return dt(iA,U,!1)}).join(D);l.appendChild(o.createTextNode(R))}}}else if(h.type===20)switch(h.value){case"open-quote":l.appendChild(o.createTextNode(sc(a.quotes,s.quoteDepth++,!0)));break;case"close-quote":l.appendChild(o.createTextNode(sc(a.quotes,--s.quoteDepth,!1)));break;default:l.appendChild(o.createTextNode(h.value))}}),l.className=Ys+" "+$s;var d=n===ut.BEFORE?" "+Ys:" "+$s;return dn(e)?e.className.baseValue+=d:e.className+=d,l}}},r.destroy=function(A){return A.parentNode?(A.parentNode.removeChild(A),!0):!1},r}(),ut;(function(r){r[r.BEFORE=0]="BEFORE",r[r.AFTER=1]="AFTER"})(ut||(ut={}));var Aw=function(r,A){var e=r.createElement("iframe");return e.className="html2canvas-container",e.style.visibility="hidden",e.style.position="fixed",e.style.left="-10000px",e.style.top="0px",e.style.border="0",e.width=A.width.toString(),e.height=A.height.toString(),e.scrolling="no",e.setAttribute(Wc,"true"),r.body.appendChild(e),e},ew=function(r){return new Promise(function(A){if(r.complete){A();return}if(!r.src){A();return}r.onload=A,r.onerror=A})},tw=function(r){return Promise.all([].slice.call(r.images,0).map(ew))},rw=function(r){return new Promise(function(A,e){var t=r.contentWindow;if(!t)return e("No window assigned for iframe");var n=t.document;t.onload=r.onload=function(){t.onload=r.onload=null;var s=setInterval(function(){n.body.childNodes.length>0&&n.readyState==="complete"&&(clearInterval(s),A(r))},50)}})},nw=["all","d","content"],zs=function(r,A){for(var e=r.length-1;e>=0;e--){var t=r.item(e);nw.indexOf(t)===-1&&A.style.setProperty(t,r.getPropertyValue(t))}return A},sw=function(r){var A="";return r&&(A+="<!DOCTYPE ",r.name&&(A+=r.name),r.internalSubset&&(A+=r.internalSubset),r.publicId&&(A+='"'+r.publicId+'"'),r.systemId&&(A+='"'+r.systemId+'"'),A+=">"),A},iw=function(r,A,e){r&&r.defaultView&&(A!==r.defaultView.pageXOffset||e!==r.defaultView.pageYOffset)&&r.defaultView.scrollTo(A,e)},ow=function(r){var A=r[0],e=r[1],t=r[2];A.scrollLeft=e,A.scrollTop=t},aw=":before",lw=":after",Ys="___html2canvas___pseudoelement_before",$s="___html2canvas___pseudoelement_after",Jc=`{
|
|
109
109
|
content: "" !important;
|
|
110
110
|
display: none !important;
|
|
111
|
-
}`,
|
|
112
|
-
.`+Zs+cw+Jc)},uw=function(r,A){var e=r.ownerDocument;if(e){var t=e.createElement("style");t.textContent=A,r.appendChild(t)}},zc=function(){function r(){}return r.getOrigin=function(A){var e=r._link;return e?(e.href=A,e.href=e.href,e.protocol+e.hostname+e.port):"about:blank"},r.isSameOrigin=function(A){return r.getOrigin(A)===r._origin},r.setContext=function(A){r._link=A.document.createElement("a"),r._origin=r.getOrigin(A.location.href)},r._origin="about:blank",r}(),hw=function(){function r(A,e){this.context=A,this._options=e,this._cache={}}return r.prototype.addImage=function(A){var e=Promise.resolve();return this.has(A)||(js(A)||ww(A))&&(this._cache[A]=this.loadImage(A)).catch(function(){}),e},r.prototype.match=function(A){return this._cache[A]},r.prototype.loadImage=function(A){return uA(this,void 0,void 0,function(){var e,t,n,s,i=this;return sA(this,function(o){switch(o.label){case 0:return e=zc.isSameOrigin(A),t=!qs(A)&&this._options.useCORS===!0&&rA.SUPPORT_CORS_IMAGES&&!e,n=!qs(A)&&!e&&!js(A)&&typeof this._options.proxy=="string"&&rA.SUPPORT_CORS_XHR&&!t,!e&&this._options.allowTaint===!1&&!qs(A)&&!js(A)&&!n&&!t?[2]:(s=A,n?[4,this.proxy(s)]:[3,2]);case 1:s=o.sent(),o.label=2;case 2:return this.context.logger.debug("Added image "+A.substring(0,256)),[4,new Promise(function(a,l){var d=new Image;d.onload=function(){return a(d)},d.onerror=l,(pw(s)||t)&&(d.crossOrigin="anonymous"),d.src=s,d.complete===!0&&setTimeout(function(){return a(d)},500),i._options.imageTimeout>0&&setTimeout(function(){return l("Timed out ("+i._options.imageTimeout+"ms) loading image")},i._options.imageTimeout)})];case 3:return[2,o.sent()]}})})},r.prototype.has=function(A){return typeof this._cache[A]<"u"},r.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},r.prototype.proxy=function(A){var e=this,t=this._options.proxy;if(!t)throw new Error("No proxy defined");var n=A.substring(0,256);return new Promise(function(s,i){var o=rA.SUPPORT_RESPONSE_TYPE?"blob":"text",a=new XMLHttpRequest;a.onload=function(){if(a.status===200)if(o==="text")s(a.response);else{var h=new FileReader;h.addEventListener("load",function(){return s(h.result)},!1),h.addEventListener("error",function(u){return i(u)},!1),h.readAsDataURL(a.response)}else i("Failed to proxy resource "+n+" with status code "+a.status)},a.onerror=i;var l=t.indexOf("?")>-1?"&":"?";if(a.open("GET",""+t+l+"url="+encodeURIComponent(A)+"&responseType="+o),o!=="text"&&a instanceof XMLHttpRequest&&(a.responseType=o),e._options.imageTimeout){var d=e._options.imageTimeout;a.timeout=d,a.ontimeout=function(){return i("Timed out ("+d+"ms) proxying "+n)}}a.send()})},r}(),gw=/^data:image\/svg\+xml/i,Bw=/^data:image\/.*;base64,/i,fw=/^data:image\/.*/i,ww=function(r){return rA.SUPPORT_SVG_DRAWING||!Cw(r)},qs=function(r){return fw.test(r)},pw=function(r){return Bw.test(r)},js=function(r){return r.substr(0,4)==="blob"},Cw=function(r){return r.substr(-3).toLowerCase()==="svg"||gw.test(r)},S=function(){function r(A,e){this.type=0,this.x=A,this.y=e}return r.prototype.add=function(A,e){return new r(this.x+A,this.y+e)},r}(),Te=function(r,A,e){return new S(r.x+(A.x-r.x)*e,r.y+(A.y-r.y)*e)},Bn=function(){function r(A,e,t,n){this.type=1,this.start=A,this.startControl=e,this.endControl=t,this.end=n}return r.prototype.subdivide=function(A,e){var t=Te(this.start,this.startControl,A),n=Te(this.startControl,this.endControl,A),s=Te(this.endControl,this.end,A),i=Te(t,n,A),o=Te(n,s,A),a=Te(i,o,A);return e?new r(this.start,t,i,a):new r(a,o,s,this.end)},r.prototype.add=function(A,e){return new r(this.start.add(A,e),this.startControl.add(A,e),this.endControl.add(A,e),this.end.add(A,e))},r.prototype.reverse=function(){return new r(this.end,this.endControl,this.startControl,this.start)},r}(),pA=function(r){return r.type===1},vw=function(){function r(A){var e=A.styles,t=A.bounds,n=it(e.borderTopLeftRadius,t.width,t.height),s=n[0],i=n[1],o=it(e.borderTopRightRadius,t.width,t.height),a=o[0],l=o[1],d=it(e.borderBottomRightRadius,t.width,t.height),h=d[0],u=d[1],f=it(e.borderBottomLeftRadius,t.width,t.height),B=f[0],w=f[1],v=[];v.push((s+a)/t.width),v.push((B+h)/t.width),v.push((i+w)/t.height),v.push((l+u)/t.height);var m=Math.max.apply(Math,v);m>1&&(s/=m,i/=m,a/=m,l/=m,h/=m,u/=m,B/=m,w/=m);var F=t.width-a,E=t.height-u,I=t.width-h,y=t.height-w,U=e.borderTopWidth,D=e.borderRightWidth,R=e.borderBottomWidth,M=e.borderLeftWidth,O=N(e.paddingTop,A.bounds.width),oA=N(e.paddingRight,A.bounds.width),Y=N(e.paddingBottom,A.bounds.width),G=N(e.paddingLeft,A.bounds.width);this.topLeftBorderDoubleOuterBox=s>0||i>0?V(t.left+M/3,t.top+U/3,s-M/3,i-U/3,K.TOP_LEFT):new S(t.left+M/3,t.top+U/3),this.topRightBorderDoubleOuterBox=s>0||i>0?V(t.left+F,t.top+U/3,a-D/3,l-U/3,K.TOP_RIGHT):new S(t.left+t.width-D/3,t.top+U/3),this.bottomRightBorderDoubleOuterBox=h>0||u>0?V(t.left+I,t.top+E,h-D/3,u-R/3,K.BOTTOM_RIGHT):new S(t.left+t.width-D/3,t.top+t.height-R/3),this.bottomLeftBorderDoubleOuterBox=B>0||w>0?V(t.left+M/3,t.top+y,B-M/3,w-R/3,K.BOTTOM_LEFT):new S(t.left+M/3,t.top+t.height-R/3),this.topLeftBorderDoubleInnerBox=s>0||i>0?V(t.left+M*2/3,t.top+U*2/3,s-M*2/3,i-U*2/3,K.TOP_LEFT):new S(t.left+M*2/3,t.top+U*2/3),this.topRightBorderDoubleInnerBox=s>0||i>0?V(t.left+F,t.top+U*2/3,a-D*2/3,l-U*2/3,K.TOP_RIGHT):new S(t.left+t.width-D*2/3,t.top+U*2/3),this.bottomRightBorderDoubleInnerBox=h>0||u>0?V(t.left+I,t.top+E,h-D*2/3,u-R*2/3,K.BOTTOM_RIGHT):new S(t.left+t.width-D*2/3,t.top+t.height-R*2/3),this.bottomLeftBorderDoubleInnerBox=B>0||w>0?V(t.left+M*2/3,t.top+y,B-M*2/3,w-R*2/3,K.BOTTOM_LEFT):new S(t.left+M*2/3,t.top+t.height-R*2/3),this.topLeftBorderStroke=s>0||i>0?V(t.left+M/2,t.top+U/2,s-M/2,i-U/2,K.TOP_LEFT):new S(t.left+M/2,t.top+U/2),this.topRightBorderStroke=s>0||i>0?V(t.left+F,t.top+U/2,a-D/2,l-U/2,K.TOP_RIGHT):new S(t.left+t.width-D/2,t.top+U/2),this.bottomRightBorderStroke=h>0||u>0?V(t.left+I,t.top+E,h-D/2,u-R/2,K.BOTTOM_RIGHT):new S(t.left+t.width-D/2,t.top+t.height-R/2),this.bottomLeftBorderStroke=B>0||w>0?V(t.left+M/2,t.top+y,B-M/2,w-R/2,K.BOTTOM_LEFT):new S(t.left+M/2,t.top+t.height-R/2),this.topLeftBorderBox=s>0||i>0?V(t.left,t.top,s,i,K.TOP_LEFT):new S(t.left,t.top),this.topRightBorderBox=a>0||l>0?V(t.left+F,t.top,a,l,K.TOP_RIGHT):new S(t.left+t.width,t.top),this.bottomRightBorderBox=h>0||u>0?V(t.left+I,t.top+E,h,u,K.BOTTOM_RIGHT):new S(t.left+t.width,t.top+t.height),this.bottomLeftBorderBox=B>0||w>0?V(t.left,t.top+y,B,w,K.BOTTOM_LEFT):new S(t.left,t.top+t.height),this.topLeftPaddingBox=s>0||i>0?V(t.left+M,t.top+U,Math.max(0,s-M),Math.max(0,i-U),K.TOP_LEFT):new S(t.left+M,t.top+U),this.topRightPaddingBox=a>0||l>0?V(t.left+Math.min(F,t.width-D),t.top+U,F>t.width+D?0:Math.max(0,a-D),Math.max(0,l-U),K.TOP_RIGHT):new S(t.left+t.width-D,t.top+U),this.bottomRightPaddingBox=h>0||u>0?V(t.left+Math.min(I,t.width-M),t.top+Math.min(E,t.height-R),Math.max(0,h-D),Math.max(0,u-R),K.BOTTOM_RIGHT):new S(t.left+t.width-D,t.top+t.height-R),this.bottomLeftPaddingBox=B>0||w>0?V(t.left+M,t.top+Math.min(y,t.height-R),Math.max(0,B-M),Math.max(0,w-R),K.BOTTOM_LEFT):new S(t.left+M,t.top+t.height-R),this.topLeftContentBox=s>0||i>0?V(t.left+M+G,t.top+U+O,Math.max(0,s-(M+G)),Math.max(0,i-(U+O)),K.TOP_LEFT):new S(t.left+M+G,t.top+U+O),this.topRightContentBox=a>0||l>0?V(t.left+Math.min(F,t.width+M+G),t.top+U+O,F>t.width+M+G?0:a-M+G,l-(U+O),K.TOP_RIGHT):new S(t.left+t.width-(D+oA),t.top+U+O),this.bottomRightContentBox=h>0||u>0?V(t.left+Math.min(I,t.width-(M+G)),t.top+Math.min(E,t.height+U+O),Math.max(0,h-(D+oA)),u-(R+Y),K.BOTTOM_RIGHT):new S(t.left+t.width-(D+oA),t.top+t.height-(R+Y)),this.bottomLeftContentBox=B>0||w>0?V(t.left+M+G,t.top+y,Math.max(0,B-(M+G)),w-(R+Y),K.BOTTOM_LEFT):new S(t.left+M+G,t.top+t.height-(R+Y))}return r}(),K;(function(r){r[r.TOP_LEFT=0]="TOP_LEFT",r[r.TOP_RIGHT=1]="TOP_RIGHT",r[r.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",r[r.BOTTOM_LEFT=3]="BOTTOM_LEFT"})(K||(K={}));var V=function(r,A,e,t,n){var s=4*((Math.sqrt(2)-1)/3),i=e*s,o=t*s,a=r+e,l=A+t;switch(n){case K.TOP_LEFT:return new Bn(new S(r,l),new S(r,l-o),new S(a-i,A),new S(a,A));case K.TOP_RIGHT:return new Bn(new S(r,A),new S(r+i,A),new S(a,l-o),new S(a,l));case K.BOTTOM_RIGHT:return new Bn(new S(a,A),new S(a,A+o),new S(r+i,l),new S(r,l));case K.BOTTOM_LEFT:default:return new Bn(new S(a,l),new S(a-i,l),new S(r,A+o),new S(r,A))}},fn=function(r){return[r.topLeftBorderBox,r.topRightBorderBox,r.bottomRightBorderBox,r.bottomLeftBorderBox]},mw=function(r){return[r.topLeftContentBox,r.topRightContentBox,r.bottomRightContentBox,r.bottomLeftContentBox]},wn=function(r){return[r.topLeftPaddingBox,r.topRightPaddingBox,r.bottomRightPaddingBox,r.bottomLeftPaddingBox]},Fw=function(){function r(A,e,t){this.offsetX=A,this.offsetY=e,this.matrix=t,this.type=0,this.target=6}return r}(),pn=function(){function r(A,e){this.path=A,this.target=e,this.type=1}return r}(),Qw=function(){function r(A){this.opacity=A,this.type=2,this.target=6}return r}(),Uw=function(r){return r.type===0},Yc=function(r){return r.type===1},Ew=function(r){return r.type===2},$c=function(r,A){return r.length===A.length?r.some(function(e,t){return e===A[t]}):!1},yw=function(r,A,e,t,n){return r.map(function(s,i){switch(i){case 0:return s.add(A,e);case 1:return s.add(A+t,e);case 2:return s.add(A+t,e+n);case 3:return s.add(A,e+n)}return s})},Zc=function(){function r(A){this.element=A,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]}return r}(),qc=function(){function r(A,e){if(this.container=A,this.parent=e,this.effects=[],this.curves=new vw(this.container),this.container.styles.opacity<1&&this.effects.push(new Qw(this.container.styles.opacity)),this.container.styles.transform!==null){var t=this.container.bounds.left+this.container.styles.transformOrigin[0].number,n=this.container.bounds.top+this.container.styles.transformOrigin[1].number,s=this.container.styles.transform;this.effects.push(new Fw(t,n,s))}if(this.container.styles.overflowX!==0){var i=fn(this.curves),o=wn(this.curves);$c(i,o)?this.effects.push(new pn(i,6)):(this.effects.push(new pn(i,2)),this.effects.push(new pn(o,4)))}}return r.prototype.getEffects=function(A){for(var e=[2,3].indexOf(this.container.styles.position)===-1,t=this.parent,n=this.effects.slice(0);t;){var s=t.effects.filter(function(a){return!Yc(a)});if(e||t.container.styles.position!==0||!t.parent){if(n.unshift.apply(n,s),e=[2,3].indexOf(t.container.styles.position)===-1,t.container.styles.overflowX!==0){var i=fn(t.curves),o=wn(t.curves);$c(i,o)||n.unshift(new pn(o,6))}}else n.unshift.apply(n,s);t=t.parent}return n.filter(function(a){return Z(a.target,A)})},r}(),Ai=function(r,A,e,t){r.container.elements.forEach(function(n){var s=Z(n.flags,4),i=Z(n.flags,2),o=new qc(n,r);Z(n.styles.display,2048)&&t.push(o);var a=Z(n.flags,8)?[]:t;if(s||i){var l=s||n.styles.isPositioned()?e:A,d=new Zc(o);if(n.styles.isPositioned()||n.styles.opacity<1||n.styles.isTransformed()){var h=n.styles.zIndex.order;if(h<0){var u=0;l.negativeZIndex.some(function(B,w){return h>B.element.container.styles.zIndex.order?(u=w,!1):u>0}),l.negativeZIndex.splice(u,0,d)}else if(h>0){var f=0;l.positiveZIndex.some(function(B,w){return h>=B.element.container.styles.zIndex.order?(f=w+1,!1):f>0}),l.positiveZIndex.splice(f,0,d)}else l.zeroOrAutoZIndexOrTransformedOrOpacity.push(d)}else n.styles.isFloating()?l.nonPositionedFloats.push(d):l.nonPositionedInlineLevel.push(d);Ai(o,d,s?d:e,a)}else n.styles.isInlineLevel()?A.inlineLevel.push(o):A.nonInlineLevel.push(o),Ai(o,A,e,a);Z(n.flags,8)&&jc(n,a)})},jc=function(r,A){for(var e=r instanceof Vs?r.start:1,t=r instanceof Vs?r.reversed:!1,n=0;n<A.length;n++){var s=A[n];s.container instanceof Uc&&typeof s.container.value=="number"&&s.container.value!==0&&(e=s.container.value),s.listValue=ut(e,s.container.styles.listStyleType,!0),e+=t?-1:1}},Sw=function(r){var A=new qc(r,null),e=new Zc(A),t=[];return Ai(A,e,e,t),jc(A.container,t),e},Ad=function(r,A){switch(A){case 0:return CA(r.topLeftBorderBox,r.topLeftPaddingBox,r.topRightBorderBox,r.topRightPaddingBox);case 1:return CA(r.topRightBorderBox,r.topRightPaddingBox,r.bottomRightBorderBox,r.bottomRightPaddingBox);case 2:return CA(r.bottomRightBorderBox,r.bottomRightPaddingBox,r.bottomLeftBorderBox,r.bottomLeftPaddingBox);case 3:default:return CA(r.bottomLeftBorderBox,r.bottomLeftPaddingBox,r.topLeftBorderBox,r.topLeftPaddingBox)}},Iw=function(r,A){switch(A){case 0:return CA(r.topLeftBorderBox,r.topLeftBorderDoubleOuterBox,r.topRightBorderBox,r.topRightBorderDoubleOuterBox);case 1:return CA(r.topRightBorderBox,r.topRightBorderDoubleOuterBox,r.bottomRightBorderBox,r.bottomRightBorderDoubleOuterBox);case 2:return CA(r.bottomRightBorderBox,r.bottomRightBorderDoubleOuterBox,r.bottomLeftBorderBox,r.bottomLeftBorderDoubleOuterBox);case 3:default:return CA(r.bottomLeftBorderBox,r.bottomLeftBorderDoubleOuterBox,r.topLeftBorderBox,r.topLeftBorderDoubleOuterBox)}},Tw=function(r,A){switch(A){case 0:return CA(r.topLeftBorderDoubleInnerBox,r.topLeftPaddingBox,r.topRightBorderDoubleInnerBox,r.topRightPaddingBox);case 1:return CA(r.topRightBorderDoubleInnerBox,r.topRightPaddingBox,r.bottomRightBorderDoubleInnerBox,r.bottomRightPaddingBox);case 2:return CA(r.bottomRightBorderDoubleInnerBox,r.bottomRightPaddingBox,r.bottomLeftBorderDoubleInnerBox,r.bottomLeftPaddingBox);case 3:default:return CA(r.bottomLeftBorderDoubleInnerBox,r.bottomLeftPaddingBox,r.topLeftBorderDoubleInnerBox,r.topLeftPaddingBox)}},Hw=function(r,A){switch(A){case 0:return Cn(r.topLeftBorderStroke,r.topRightBorderStroke);case 1:return Cn(r.topRightBorderStroke,r.bottomRightBorderStroke);case 2:return Cn(r.bottomRightBorderStroke,r.bottomLeftBorderStroke);case 3:default:return Cn(r.bottomLeftBorderStroke,r.topLeftBorderStroke)}},Cn=function(r,A){var e=[];return pA(r)?e.push(r.subdivide(.5,!1)):e.push(r),pA(A)?e.push(A.subdivide(.5,!0)):e.push(A),e},CA=function(r,A,e,t){var n=[];return pA(r)?n.push(r.subdivide(.5,!1)):n.push(r),pA(e)?n.push(e.subdivide(.5,!0)):n.push(e),pA(t)?n.push(t.subdivide(.5,!0).reverse()):n.push(t),pA(A)?n.push(A.subdivide(.5,!1).reverse()):n.push(A),n},ed=function(r){var A=r.bounds,e=r.styles;return A.add(e.borderLeftWidth,e.borderTopWidth,-(e.borderRightWidth+e.borderLeftWidth),-(e.borderTopWidth+e.borderBottomWidth))},vn=function(r){var A=r.styles,e=r.bounds,t=N(A.paddingLeft,e.width),n=N(A.paddingRight,e.width),s=N(A.paddingTop,e.width),i=N(A.paddingBottom,e.width);return e.add(t+A.borderLeftWidth,s+A.borderTopWidth,-(A.borderRightWidth+A.borderLeftWidth+t+n),-(A.borderTopWidth+A.borderBottomWidth+s+i))},Lw=function(r,A){return r===0?A.bounds:r===2?vn(A):ed(A)},bw=function(r,A){return r===0?A.bounds:r===2?vn(A):ed(A)},ei=function(r,A,e){var t=Lw(Le(r.styles.backgroundOrigin,A),r),n=bw(Le(r.styles.backgroundClip,A),r),s=Mw(Le(r.styles.backgroundSize,A),e,t),i=s[0],o=s[1],a=it(Le(r.styles.backgroundPosition,A),t.width-i,t.height-o),l=Dw(Le(r.styles.backgroundRepeat,A),a,s,t,n),d=Math.round(t.left+a[0]),h=Math.round(t.top+a[1]);return[l,d,h,i,o]},He=function(r){return k(r)&&r.value===Ee.AUTO},mn=function(r){return typeof r=="number"},Mw=function(r,A,e){var t=A[0],n=A[1],s=A[2],i=r[0],o=r[1];if(!i)return[0,0];if(z(i)&&o&&z(o))return[N(i,e.width),N(o,e.height)];var a=mn(s);if(k(i)&&(i.value===Ee.CONTAIN||i.value===Ee.COVER)){if(mn(s)){var l=e.width/e.height;return l<s!=(i.value===Ee.COVER)?[e.width,e.width/s]:[e.height*s,e.height]}return[e.width,e.height]}var d=mn(t),h=mn(n),u=d||h;if(He(i)&&(!o||He(o))){if(d&&h)return[t,n];if(!a&&!u)return[e.width,e.height];if(u&&a){var f=d?t:n*s,B=h?n:t/s;return[f,B]}var w=d?t:e.width,v=h?n:e.height;return[w,v]}if(a){var m=0,F=0;return z(i)?m=N(i,e.width):z(o)&&(F=N(o,e.height)),He(i)?m=F*s:(!o||He(o))&&(F=m/s),[m,F]}var E=null,I=null;if(z(i)?E=N(i,e.width):o&&z(o)&&(I=N(o,e.height)),E!==null&&(!o||He(o))&&(I=d&&h?E/t*n:e.height),I!==null&&He(i)&&(E=d&&h?I/n*t:e.width),E!==null&&I!==null)return[E,I];throw new Error("Unable to calculate background-size for element")},Le=function(r,A){var e=r[A];return typeof e>"u"?r[0]:e},Dw=function(r,A,e,t,n){var s=A[0],i=A[1],o=e[0],a=e[1];switch(r){case 2:return[new S(Math.round(t.left),Math.round(t.top+i)),new S(Math.round(t.left+t.width),Math.round(t.top+i)),new S(Math.round(t.left+t.width),Math.round(a+t.top+i)),new S(Math.round(t.left),Math.round(a+t.top+i))];case 3:return[new S(Math.round(t.left+s),Math.round(t.top)),new S(Math.round(t.left+s+o),Math.round(t.top)),new S(Math.round(t.left+s+o),Math.round(t.height+t.top)),new S(Math.round(t.left+s),Math.round(t.height+t.top))];case 1:return[new S(Math.round(t.left+s),Math.round(t.top+i)),new S(Math.round(t.left+s+o),Math.round(t.top+i)),new S(Math.round(t.left+s+o),Math.round(t.top+i+a)),new S(Math.round(t.left+s),Math.round(t.top+i+a))];default:return[new S(Math.round(n.left),Math.round(n.top)),new S(Math.round(n.left+n.width),Math.round(n.top)),new S(Math.round(n.left+n.width),Math.round(n.height+n.top)),new S(Math.round(n.left),Math.round(n.height+n.top))]}},Rw="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",td="Hidden Text",xw=function(){function r(A){this._data={},this._document=A}return r.prototype.parseMetrics=function(A,e){var t=this._document.createElement("div"),n=this._document.createElement("img"),s=this._document.createElement("span"),i=this._document.body;t.style.visibility="hidden",t.style.fontFamily=A,t.style.fontSize=e,t.style.margin="0",t.style.padding="0",t.style.whiteSpace="nowrap",i.appendChild(t),n.src=Rw,n.width=1,n.height=1,n.style.margin="0",n.style.padding="0",n.style.verticalAlign="baseline",s.style.fontFamily=A,s.style.fontSize=e,s.style.margin="0",s.style.padding="0",s.appendChild(this._document.createTextNode(td)),t.appendChild(s),t.appendChild(n);var o=n.offsetTop-s.offsetTop+2;t.removeChild(s),t.appendChild(this._document.createTextNode(td)),t.style.lineHeight="normal",n.style.verticalAlign="super";var a=n.offsetTop-t.offsetTop+2;return i.removeChild(t),{baseline:o,middle:a}},r.prototype.getMetrics=function(A,e){var t=A+" "+e;return typeof this._data[t]>"u"&&(this._data[t]=this.parseMetrics(A,e)),this._data[t]},r}(),rd=function(){function r(A,e){this.context=A,this.options=e}return r}(),Pw=1e4,Kw=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n._activeEffects=[],n.canvas=t.canvas?t.canvas:document.createElement("canvas"),n.ctx=n.canvas.getContext("2d"),t.canvas||(n.canvas.width=Math.floor(t.width*t.scale),n.canvas.height=Math.floor(t.height*t.scale),n.canvas.style.width=t.width+"px",n.canvas.style.height=t.height+"px"),n.fontMetrics=new xw(document),n.ctx.scale(n.options.scale,n.options.scale),n.ctx.translate(-t.x,-t.y),n.ctx.textBaseline="bottom",n._activeEffects=[],n.context.logger.debug("Canvas renderer initialized ("+t.width+"x"+t.height+") with scale "+t.scale),n}return A.prototype.applyEffects=function(e){for(var t=this;this._activeEffects.length;)this.popEffect();e.forEach(function(n){return t.applyEffect(n)})},A.prototype.applyEffect=function(e){this.ctx.save(),Ew(e)&&(this.ctx.globalAlpha=e.opacity),Uw(e)&&(this.ctx.translate(e.offsetX,e.offsetY),this.ctx.transform(e.matrix[0],e.matrix[1],e.matrix[2],e.matrix[3],e.matrix[4],e.matrix[5]),this.ctx.translate(-e.offsetX,-e.offsetY)),Yc(e)&&(this.path(e.path),this.ctx.clip()),this._activeEffects.push(e)},A.prototype.popEffect=function(){this._activeEffects.pop(),this.ctx.restore()},A.prototype.renderStack=function(e){return uA(this,void 0,void 0,function(){var t;return sA(this,function(n){switch(n.label){case 0:return t=e.element.container.styles,t.isVisible()?[4,this.renderStackContent(e)]:[3,2];case 1:n.sent(),n.label=2;case 2:return[2]}})})},A.prototype.renderNode=function(e){return uA(this,void 0,void 0,function(){return sA(this,function(t){switch(t.label){case 0:if(Z(e.container.flags,16))debugger;return e.container.styles.isVisible()?[4,this.renderNodeBackgroundAndBorders(e)]:[3,3];case 1:return t.sent(),[4,this.renderNodeContent(e)];case 2:t.sent(),t.label=3;case 3:return[2]}})})},A.prototype.renderTextWithLetterSpacing=function(e,t,n){var s=this;if(t===0)this.ctx.fillText(e.text,e.bounds.left,e.bounds.top+n);else{var i=_s(e.text);i.reduce(function(o,a){return s.ctx.fillText(a,o,e.bounds.top+n),o+s.ctx.measureText(a).width},e.bounds.left)}},A.prototype.createFontStyle=function(e){var t=e.fontVariant.filter(function(i){return i==="normal"||i==="small-caps"}).join(""),n=Vw(e.fontFamily).join(", "),s=st(e.fontSize)?""+e.fontSize.number+e.fontSize.unit:e.fontSize.number+"px";return[[e.fontStyle,t,e.fontWeight,s,n].join(" "),n,s]},A.prototype.renderTextNode=function(e,t){return uA(this,void 0,void 0,function(){var n,s,i,o,a,l,d,h,u=this;return sA(this,function(f){return n=this.createFontStyle(t),s=n[0],i=n[1],o=n[2],this.ctx.font=s,this.ctx.direction=t.direction===1?"rtl":"ltr",this.ctx.textAlign="left",this.ctx.textBaseline="alphabetic",a=this.fontMetrics.getMetrics(i,o),l=a.baseline,d=a.middle,h=t.paintOrder,e.textBounds.forEach(function(B){h.forEach(function(w){switch(w){case 0:u.ctx.fillStyle=j(t.color),u.renderTextWithLetterSpacing(B,t.letterSpacing,l);var v=t.textShadow;v.length&&B.text.trim().length&&(v.slice(0).reverse().forEach(function(m){u.ctx.shadowColor=j(m.color),u.ctx.shadowOffsetX=m.offsetX.number*u.options.scale,u.ctx.shadowOffsetY=m.offsetY.number*u.options.scale,u.ctx.shadowBlur=m.blur.number,u.renderTextWithLetterSpacing(B,t.letterSpacing,l)}),u.ctx.shadowColor="",u.ctx.shadowOffsetX=0,u.ctx.shadowOffsetY=0,u.ctx.shadowBlur=0),t.textDecorationLine.length&&(u.ctx.fillStyle=j(t.textDecorationColor||t.color),t.textDecorationLine.forEach(function(m){switch(m){case 1:u.ctx.fillRect(B.bounds.left,Math.round(B.bounds.top+l),B.bounds.width,1);break;case 2:u.ctx.fillRect(B.bounds.left,Math.round(B.bounds.top),B.bounds.width,1);break;case 3:u.ctx.fillRect(B.bounds.left,Math.ceil(B.bounds.top+d),B.bounds.width,1);break}}));break;case 1:t.webkitTextStrokeWidth&&B.text.trim().length&&(u.ctx.strokeStyle=j(t.webkitTextStrokeColor),u.ctx.lineWidth=t.webkitTextStrokeWidth,u.ctx.lineJoin=window.chrome?"miter":"round",u.ctx.strokeText(B.text,B.bounds.left,B.bounds.top+l)),u.ctx.strokeStyle="",u.ctx.lineWidth=0,u.ctx.lineJoin="miter";break}})}),[2]})})},A.prototype.renderReplacedElement=function(e,t,n){if(n&&e.intrinsicWidth>0&&e.intrinsicHeight>0){var s=vn(e),i=wn(t);this.path(i),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(n,0,0,e.intrinsicWidth,e.intrinsicHeight,s.left,s.top,s.width,s.height),this.ctx.restore()}},A.prototype.renderNodeContent=function(e){return uA(this,void 0,void 0,function(){var t,n,s,i,o,a,F,F,l,d,h,u,I,f,B,y,w,v,m,F,E,I,y;return sA(this,function(U){switch(U.label){case 0:this.applyEffects(e.getEffects(4)),t=e.container,n=e.curves,s=t.styles,i=0,o=t.textNodes,U.label=1;case 1:return i<o.length?(a=o[i],[4,this.renderTextNode(a,s)]):[3,4];case 2:U.sent(),U.label=3;case 3:return i++,[3,1];case 4:if(!(t instanceof mc))return[3,8];U.label=5;case 5:return U.trys.push([5,7,,8]),[4,this.context.cache.match(t.src)];case 6:return F=U.sent(),this.renderReplacedElement(t,n,F),[3,8];case 7:return U.sent(),this.context.logger.error("Error loading image "+t.src),[3,8];case 8:if(t instanceof Fc&&this.renderReplacedElement(t,n,t.canvas),!(t instanceof Qc))return[3,12];U.label=9;case 9:return U.trys.push([9,11,,12]),[4,this.context.cache.match(t.svg)];case 10:return F=U.sent(),this.renderReplacedElement(t,n,F),[3,12];case 11:return U.sent(),this.context.logger.error("Error loading svg "+t.svg.substring(0,255)),[3,12];case 12:return t instanceof Ic&&t.tree?(l=new A(this.context,{scale:this.options.scale,backgroundColor:t.backgroundColor,x:0,y:0,width:t.width,height:t.height}),[4,l.render(t.tree)]):[3,14];case 13:d=U.sent(),t.width&&t.height&&this.ctx.drawImage(d,0,0,t.width,t.height,t.bounds.left,t.bounds.top,t.bounds.width,t.bounds.height),U.label=14;case 14:if(t instanceof Os&&(h=Math.min(t.bounds.width,t.bounds.height),t.type===ln?t.checked&&(this.ctx.save(),this.path([new S(t.bounds.left+h*.39363,t.bounds.top+h*.79),new S(t.bounds.left+h*.16,t.bounds.top+h*.5549),new S(t.bounds.left+h*.27347,t.bounds.top+h*.44071),new S(t.bounds.left+h*.39694,t.bounds.top+h*.5649),new S(t.bounds.left+h*.72983,t.bounds.top+h*.23),new S(t.bounds.left+h*.84,t.bounds.top+h*.34085),new S(t.bounds.left+h*.39363,t.bounds.top+h*.79)]),this.ctx.fillStyle=j(Ec),this.ctx.fill(),this.ctx.restore()):t.type===cn&&t.checked&&(this.ctx.save(),this.ctx.beginPath(),this.ctx.arc(t.bounds.left+h/2,t.bounds.top+h/2,h/4,0,Math.PI*2,!0),this.ctx.fillStyle=j(Ec),this.ctx.fill(),this.ctx.restore())),Gw(t)&&t.value.length){switch(u=this.createFontStyle(s),I=u[0],f=u[1],B=this.fontMetrics.getMetrics(I,f).baseline,this.ctx.font=I,this.ctx.fillStyle=j(s.color),this.ctx.textBaseline="alphabetic",this.ctx.textAlign=Nw(t.styles.textAlign),y=vn(t),w=0,t.styles.textAlign){case 1:w+=y.width/2;break;case 2:w+=y.width;break}v=y.add(w,0,0,-y.height/2+1),this.ctx.save(),this.path([new S(y.left,y.top),new S(y.left+y.width,y.top),new S(y.left+y.width,y.top+y.height),new S(y.left,y.top+y.height)]),this.ctx.clip(),this.renderTextWithLetterSpacing(new ct(t.value,v),s.letterSpacing,B),this.ctx.restore(),this.ctx.textBaseline="alphabetic",this.ctx.textAlign="left"}if(!Z(t.styles.display,2048))return[3,20];if(t.styles.listStyleImage===null)return[3,19];if(m=t.styles.listStyleImage,m.type!==0)return[3,18];F=void 0,E=m.url,U.label=15;case 15:return U.trys.push([15,17,,18]),[4,this.context.cache.match(E)];case 16:return F=U.sent(),this.ctx.drawImage(F,t.bounds.left-(F.width+10),t.bounds.top),[3,18];case 17:return U.sent(),this.context.logger.error("Error loading list-style-image "+E),[3,18];case 18:return[3,20];case 19:e.listValue&&t.styles.listStyleType!==-1&&(I=this.createFontStyle(s)[0],this.ctx.font=I,this.ctx.fillStyle=j(s.color),this.ctx.textBaseline="middle",this.ctx.textAlign="right",y=new bA(t.bounds.left,t.bounds.top+N(t.styles.paddingTop,t.bounds.width),t.bounds.width,tc(s.lineHeight,s.fontSize.number)/2+1),this.renderTextWithLetterSpacing(new ct(e.listValue,y),s.letterSpacing,tc(s.lineHeight,s.fontSize.number)/2+2),this.ctx.textBaseline="bottom",this.ctx.textAlign="left"),U.label=20;case 20:return[2]}})})},A.prototype.renderStackContent=function(e){return uA(this,void 0,void 0,function(){var t,n,m,s,i,m,o,a,m,l,d,m,h,u,m,f,B,m,w,v,m;return sA(this,function(F){switch(F.label){case 0:if(Z(e.element.container.flags,16))debugger;return[4,this.renderNodeBackgroundAndBorders(e.element)];case 1:F.sent(),t=0,n=e.negativeZIndex,F.label=2;case 2:return t<n.length?(m=n[t],[4,this.renderStack(m)]):[3,5];case 3:F.sent(),F.label=4;case 4:return t++,[3,2];case 5:return[4,this.renderNodeContent(e.element)];case 6:F.sent(),s=0,i=e.nonInlineLevel,F.label=7;case 7:return s<i.length?(m=i[s],[4,this.renderNode(m)]):[3,10];case 8:F.sent(),F.label=9;case 9:return s++,[3,7];case 10:o=0,a=e.nonPositionedFloats,F.label=11;case 11:return o<a.length?(m=a[o],[4,this.renderStack(m)]):[3,14];case 12:F.sent(),F.label=13;case 13:return o++,[3,11];case 14:l=0,d=e.nonPositionedInlineLevel,F.label=15;case 15:return l<d.length?(m=d[l],[4,this.renderStack(m)]):[3,18];case 16:F.sent(),F.label=17;case 17:return l++,[3,15];case 18:h=0,u=e.inlineLevel,F.label=19;case 19:return h<u.length?(m=u[h],[4,this.renderNode(m)]):[3,22];case 20:F.sent(),F.label=21;case 21:return h++,[3,19];case 22:f=0,B=e.zeroOrAutoZIndexOrTransformedOrOpacity,F.label=23;case 23:return f<B.length?(m=B[f],[4,this.renderStack(m)]):[3,26];case 24:F.sent(),F.label=25;case 25:return f++,[3,23];case 26:w=0,v=e.positiveZIndex,F.label=27;case 27:return w<v.length?(m=v[w],[4,this.renderStack(m)]):[3,30];case 28:F.sent(),F.label=29;case 29:return w++,[3,27];case 30:return[2]}})})},A.prototype.mask=function(e){this.ctx.beginPath(),this.ctx.moveTo(0,0),this.ctx.lineTo(this.canvas.width,0),this.ctx.lineTo(this.canvas.width,this.canvas.height),this.ctx.lineTo(0,this.canvas.height),this.ctx.lineTo(0,0),this.formatPath(e.slice(0).reverse()),this.ctx.closePath()},A.prototype.path=function(e){this.ctx.beginPath(),this.formatPath(e),this.ctx.closePath()},A.prototype.formatPath=function(e){var t=this;e.forEach(function(n,s){var i=pA(n)?n.start:n;s===0?t.ctx.moveTo(i.x,i.y):t.ctx.lineTo(i.x,i.y),pA(n)&&t.ctx.bezierCurveTo(n.startControl.x,n.startControl.y,n.endControl.x,n.endControl.y,n.end.x,n.end.y)})},A.prototype.renderRepeat=function(e,t,n,s){this.path(e),this.ctx.fillStyle=t,this.ctx.translate(n,s),this.ctx.fill(),this.ctx.translate(-n,-s)},A.prototype.resizeImage=function(e,t,n){var s;if(e.width===t&&e.height===n)return e;var i=(s=this.canvas.ownerDocument)!==null&&s!==void 0?s:document,o=i.createElement("canvas");o.width=Math.max(1,t),o.height=Math.max(1,n);var a=o.getContext("2d");return a.drawImage(e,0,0,e.width,e.height,0,0,t,n),o},A.prototype.renderBackgroundImage=function(e){return uA(this,void 0,void 0,function(){var t,n,s,i,o,a;return sA(this,function(l){switch(l.label){case 0:t=e.styles.backgroundImage.length-1,n=function(d){var h,u,f,O,aA,gA,G,q,R,B,O,aA,gA,G,q,w,v,m,F,E,I,y,U,D,R,M,O,oA,Y,G,q,SA,aA,gA,de,IA,zA,ue,he,xA,ge,PA;return sA(this,function(Ke){switch(Ke.label){case 0:if(d.type!==0)return[3,5];h=void 0,u=d.url,Ke.label=1;case 1:return Ke.trys.push([1,3,,4]),[4,s.context.cache.match(u)];case 2:return h=Ke.sent(),[3,4];case 3:return Ke.sent(),s.context.logger.error("Error loading background-image "+u),[3,4];case 4:return h&&(f=ei(e,t,[h.width,h.height,h.width/h.height]),O=f[0],aA=f[1],gA=f[2],G=f[3],q=f[4],R=s.ctx.createPattern(s.resizeImage(h,G,q),"repeat"),s.renderRepeat(O,R,aA,gA)),[3,6];case 5:Qg(d)?(B=ei(e,t,[null,null,null]),O=B[0],aA=B[1],gA=B[2],G=B[3],q=B[4],w=pg(d.angle,G,q),v=w[0],m=w[1],F=w[2],E=w[3],I=w[4],y=document.createElement("canvas"),y.width=G,y.height=q,U=y.getContext("2d"),D=U.createLinearGradient(m,E,F,I),Wl(d.stops,v).forEach(function(vr){return D.addColorStop(vr.stop,j(vr.color))}),U.fillStyle=D,U.fillRect(0,0,G,q),G>0&&q>0&&(R=s.ctx.createPattern(y,"repeat"),s.renderRepeat(O,R,aA,gA))):Ug(d)&&(M=ei(e,t,[null,null,null]),O=M[0],oA=M[1],Y=M[2],G=M[3],q=M[4],SA=d.position.length===0?[Ss]:d.position,aA=N(SA[0],G),gA=N(SA[SA.length-1],q),de=Cg(d,aA,gA,G,q),IA=de[0],zA=de[1],IA>0&&zA>0&&(ue=s.ctx.createRadialGradient(oA+aA,Y+gA,0,oA+aA,Y+gA,IA),Wl(d.stops,IA*2).forEach(function(vr){return ue.addColorStop(vr.stop,j(vr.color))}),s.path(O),s.ctx.fillStyle=ue,IA!==zA?(he=e.bounds.left+.5*e.bounds.width,xA=e.bounds.top+.5*e.bounds.height,ge=zA/IA,PA=1/ge,s.ctx.save(),s.ctx.translate(he,xA),s.ctx.transform(1,0,0,ge,0,0),s.ctx.translate(-he,-xA),s.ctx.fillRect(oA,PA*(Y-xA)+xA,G,q*PA),s.ctx.restore()):s.ctx.fill())),Ke.label=6;case 6:return t--,[2]}})},s=this,i=0,o=e.styles.backgroundImage.slice(0).reverse(),l.label=1;case 1:return i<o.length?(a=o[i],[5,n(a)]):[3,4];case 2:l.sent(),l.label=3;case 3:return i++,[3,1];case 4:return[2]}})})},A.prototype.renderSolidBorder=function(e,t,n){return uA(this,void 0,void 0,function(){return sA(this,function(s){return this.path(Ad(n,t)),this.ctx.fillStyle=j(e),this.ctx.fill(),[2]})})},A.prototype.renderDoubleBorder=function(e,t,n,s){return uA(this,void 0,void 0,function(){var i,o;return sA(this,function(a){switch(a.label){case 0:return t<3?[4,this.renderSolidBorder(e,n,s)]:[3,2];case 1:return a.sent(),[2];case 2:return i=Iw(s,n),this.path(i),this.ctx.fillStyle=j(e),this.ctx.fill(),o=Tw(s,n),this.path(o),this.ctx.fill(),[2]}})})},A.prototype.renderNodeBackgroundAndBorders=function(e){return uA(this,void 0,void 0,function(){var t,n,s,i,o,a,l,d,h=this;return sA(this,function(u){switch(u.label){case 0:return this.applyEffects(e.getEffects(2)),t=e.container.styles,n=!OA(t.backgroundColor)||t.backgroundImage.length,s=[{style:t.borderTopStyle,color:t.borderTopColor,width:t.borderTopWidth},{style:t.borderRightStyle,color:t.borderRightColor,width:t.borderRightWidth},{style:t.borderBottomStyle,color:t.borderBottomColor,width:t.borderBottomWidth},{style:t.borderLeftStyle,color:t.borderLeftColor,width:t.borderLeftWidth}],i=kw(Le(t.backgroundClip,0),e.curves),n||t.boxShadow.length?(this.ctx.save(),this.path(i),this.ctx.clip(),OA(t.backgroundColor)||(this.ctx.fillStyle=j(t.backgroundColor),this.ctx.fill()),[4,this.renderBackgroundImage(e.container)]):[3,2];case 1:u.sent(),this.ctx.restore(),t.boxShadow.slice(0).reverse().forEach(function(f){h.ctx.save();var B=fn(e.curves),w=f.inset?0:Pw,v=yw(B,-w+(f.inset?1:-1)*f.spread.number,(f.inset?1:-1)*f.spread.number,f.spread.number*(f.inset?-2:2),f.spread.number*(f.inset?-2:2));f.inset?(h.path(B),h.ctx.clip(),h.mask(v)):(h.mask(B),h.ctx.clip(),h.path(v)),h.ctx.shadowOffsetX=f.offsetX.number+w,h.ctx.shadowOffsetY=f.offsetY.number,h.ctx.shadowColor=j(f.color),h.ctx.shadowBlur=f.blur.number,h.ctx.fillStyle=f.inset?j(f.color):"rgba(0,0,0,1)",h.ctx.fill(),h.ctx.restore()}),u.label=2;case 2:o=0,a=0,l=s,u.label=3;case 3:return a<l.length?(d=l[a],d.style!==0&&!OA(d.color)&&d.width>0?d.style!==2?[3,5]:[4,this.renderDashedDottedBorder(d.color,d.width,o,e.curves,2)]:[3,11]):[3,13];case 4:return u.sent(),[3,11];case 5:return d.style!==3?[3,7]:[4,this.renderDashedDottedBorder(d.color,d.width,o,e.curves,3)];case 6:return u.sent(),[3,11];case 7:return d.style!==4?[3,9]:[4,this.renderDoubleBorder(d.color,d.width,o,e.curves)];case 8:return u.sent(),[3,11];case 9:return[4,this.renderSolidBorder(d.color,o,e.curves)];case 10:u.sent(),u.label=11;case 11:o++,u.label=12;case 12:return a++,[3,3];case 13:return[2]}})})},A.prototype.renderDashedDottedBorder=function(e,t,n,s,i){return uA(this,void 0,void 0,function(){var o,a,l,d,h,u,f,B,w,v,m,F,E,I,y,U,y,U;return sA(this,function(D){return this.ctx.save(),o=Hw(s,n),a=Ad(s,n),i===2&&(this.path(a),this.ctx.clip()),pA(a[0])?(l=a[0].start.x,d=a[0].start.y):(l=a[0].x,d=a[0].y),pA(a[1])?(h=a[1].end.x,u=a[1].end.y):(h=a[1].x,u=a[1].y),n===0||n===2?f=Math.abs(l-h):f=Math.abs(d-u),this.ctx.beginPath(),i===3?this.formatPath(o):this.formatPath(a.slice(0,2)),B=t<3?t*3:t*2,w=t<3?t*2:t,i===3&&(B=t,w=t),v=!0,f<=B*2?v=!1:f<=B*2+w?(m=f/(2*B+w),B*=m,w*=m):(F=Math.floor((f+w)/(B+w)),E=(f-F*B)/(F-1),I=(f-(F+1)*B)/F,w=I<=0||Math.abs(w-E)<Math.abs(w-I)?E:I),v&&(i===3?this.ctx.setLineDash([0,B+w]):this.ctx.setLineDash([B,w])),i===3?(this.ctx.lineCap="round",this.ctx.lineWidth=t):this.ctx.lineWidth=t*2+1.1,this.ctx.strokeStyle=j(e),this.ctx.stroke(),this.ctx.setLineDash([]),i===2&&(pA(a[0])&&(y=a[3],U=a[0],this.ctx.beginPath(),this.formatPath([new S(y.end.x,y.end.y),new S(U.start.x,U.start.y)]),this.ctx.stroke()),pA(a[1])&&(y=a[1],U=a[2],this.ctx.beginPath(),this.formatPath([new S(y.end.x,y.end.y),new S(U.start.x,U.start.y)]),this.ctx.stroke())),this.ctx.restore(),[2]})})},A.prototype.render=function(e){return uA(this,void 0,void 0,function(){var t;return sA(this,function(n){switch(n.label){case 0:return this.options.backgroundColor&&(this.ctx.fillStyle=j(this.options.backgroundColor),this.ctx.fillRect(this.options.x,this.options.y,this.options.width,this.options.height)),t=Sw(e),[4,this.renderStack(t)];case 1:return n.sent(),this.applyEffects([]),[2,this.canvas]}})})},A}(rd),Gw=function(r){return r instanceof Sc||r instanceof yc?!0:r instanceof Os&&r.type!==cn&&r.type!==ln},kw=function(r,A){switch(r){case 0:return fn(A);case 2:return mw(A);case 1:default:return wn(A)}},Nw=function(r){switch(r){case 1:return"center";case 2:return"right";case 0:default:return"left"}},_w=["-apple-system","system-ui"],Vw=function(r){return/iPhone OS 15_(0|1)/.test(window.navigator.userAgent)?r.filter(function(A){return _w.indexOf(A)===-1}):r},Ow=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.canvas=t.canvas?t.canvas:document.createElement("canvas"),n.ctx=n.canvas.getContext("2d"),n.options=t,n.canvas.width=Math.floor(t.width*t.scale),n.canvas.height=Math.floor(t.height*t.scale),n.canvas.style.width=t.width+"px",n.canvas.style.height=t.height+"px",n.ctx.scale(n.options.scale,n.options.scale),n.ctx.translate(-t.x,-t.y),n.context.logger.debug("EXPERIMENTAL ForeignObject renderer initialized ("+t.width+"x"+t.height+" at "+t.x+","+t.y+") with scale "+t.scale),n}return A.prototype.render=function(e){return uA(this,void 0,void 0,function(){var t,n;return sA(this,function(s){switch(s.label){case 0:return t=Ns(this.options.width*this.options.scale,this.options.height*this.options.scale,this.options.scale,this.options.scale,e),[4,Ww(t)];case 1:return n=s.sent(),this.options.backgroundColor&&(this.ctx.fillStyle=j(this.options.backgroundColor),this.ctx.fillRect(0,0,this.options.width*this.options.scale,this.options.height*this.options.scale)),this.ctx.drawImage(n,-this.options.x*this.options.scale,-this.options.y*this.options.scale),[2,this.canvas]}})})},A}(rd),Ww=function(r){return new Promise(function(A,e){var t=new Image;t.onload=function(){A(t)},t.onerror=e,t.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(r))})},Xw=function(){function r(A){var e=A.id,t=A.enabled;this.id=e,this.enabled=t,this.start=Date.now()}return r.prototype.debug=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&(typeof window<"u"&&window.console&&typeof console.debug=="function"?console.debug.apply(console,Ir([this.id,this.getTime()+"ms"],A)):this.info.apply(this,A))},r.prototype.getTime=function(){return Date.now()-this.start},r.prototype.info=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&typeof window<"u"&&window.console&&typeof console.info=="function"&&console.info.apply(console,Ir([this.id,this.getTime()+"ms"],A))},r.prototype.warn=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&(typeof window<"u"&&window.console&&typeof console.warn=="function"?console.warn.apply(console,Ir([this.id,this.getTime()+"ms"],A)):this.info.apply(this,A))},r.prototype.error=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&(typeof window<"u"&&window.console&&typeof console.error=="function"?console.error.apply(console,Ir([this.id,this.getTime()+"ms"],A)):this.info.apply(this,A))},r.instances={},r}(),Jw=function(){function r(A,e){var t;this.windowBounds=e,this.instanceName="#"+r.instanceCount++,this.logger=new Xw({id:this.instanceName,enabled:A.logging}),this.cache=(t=A.cache)!==null&&t!==void 0?t:new hw(this,A)}return r.instanceCount=1,r}(),zw=function(r,A){return A===void 0&&(A={}),Yw(r,A)};typeof window<"u"&&zc.setContext(window);var Yw=function(r,A){return uA(void 0,void 0,void 0,function(){var e,t,n,s,i,o,a,l,d,h,u,f,B,w,v,m,F,E,I,y,D,U,D,R,M,O,oA,Y,G,q,SA,aA,gA,de,IA,zA,ue,he,xA,ge;return sA(this,function(PA){switch(PA.label){case 0:if(!r||typeof r!="object")return[2,Promise.reject("Invalid element provided as first argument")];if(e=r.ownerDocument,!e)throw new Error("Element is not attached to a Document");if(t=e.defaultView,!t)throw new Error("Document is not attached to a Window");return n={allowTaint:(R=A.allowTaint)!==null&&R!==void 0?R:!1,imageTimeout:(M=A.imageTimeout)!==null&&M!==void 0?M:15e3,proxy:A.proxy,useCORS:(O=A.useCORS)!==null&&O!==void 0?O:!1},s=is({logging:(oA=A.logging)!==null&&oA!==void 0?oA:!0,cache:A.cache},n),i={windowWidth:(Y=A.windowWidth)!==null&&Y!==void 0?Y:t.innerWidth,windowHeight:(G=A.windowHeight)!==null&&G!==void 0?G:t.innerHeight,scrollX:(q=A.scrollX)!==null&&q!==void 0?q:t.pageXOffset,scrollY:(SA=A.scrollY)!==null&&SA!==void 0?SA:t.pageYOffset},o=new bA(i.scrollX,i.scrollY,i.windowWidth,i.windowHeight),a=new Jw(s,o),l=(aA=A.foreignObjectRendering)!==null&&aA!==void 0?aA:!1,d={allowTaint:(gA=A.allowTaint)!==null&&gA!==void 0?gA:!1,onclone:A.onclone,ignoreElements:A.ignoreElements,inlineImages:l,copyStyles:l},a.logger.debug("Starting document clone with size "+o.width+"x"+o.height+" scrolled to "+-o.left+","+-o.top),h=new Xc(a,r,d),u=h.clonedReferenceElement,u?[4,h.toIFrame(e,o)]:[2,Promise.reject("Unable to find element in cloned iframe")];case 1:return f=PA.sent(),B=Xs(u)||$f(u)?Eu(u.ownerDocument):Tr(a,u),w=B.width,v=B.height,m=B.left,F=B.top,E=$w(a,u,A.backgroundColor),I={canvas:A.canvas,backgroundColor:E,scale:(IA=(de=A.scale)!==null&&de!==void 0?de:t.devicePixelRatio)!==null&&IA!==void 0?IA:1,x:((zA=A.x)!==null&&zA!==void 0?zA:0)+m,y:((ue=A.y)!==null&&ue!==void 0?ue:0)+F,width:(he=A.width)!==null&&he!==void 0?he:Math.ceil(w),height:(xA=A.height)!==null&&xA!==void 0?xA:Math.ceil(v)},l?(a.logger.debug("Document cloned, using foreign object rendering"),D=new Ow(a,I),[4,D.render(u)]):[3,3];case 2:return y=PA.sent(),[3,5];case 3:return a.logger.debug("Document cloned, element located at "+m+","+F+" with size "+w+"x"+v+" using computed rendering"),a.logger.debug("Starting DOM parsing"),U=Hc(a,u),E===U.styles.backgroundColor&&(U.styles.backgroundColor=DA.TRANSPARENT),a.logger.debug("Starting renderer for element at "+I.x+","+I.y+" with size "+I.width+"x"+I.height),D=new Kw(a,I),[4,D.render(U)];case 4:y=PA.sent(),PA.label=5;case 5:return(!((ge=A.removeContainer)!==null&&ge!==void 0)||ge)&&(Xc.destroy(f)||a.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore")),a.logger.debug("Finished rendering"),[2,y]}})})},$w=function(r,A,e){var t=A.ownerDocument,n=t.documentElement?ot(r,getComputedStyle(t.documentElement).backgroundColor):DA.TRANSPARENT,s=t.body?ot(r,getComputedStyle(t.body).backgroundColor):DA.TRANSPARENT,i=typeof e=="string"?ot(r,e):e===null?DA.TRANSPARENT:4294967295;return A===t.documentElement?OA(n)?OA(s)?i:s:n:i};const Dt=class Dt extends c.EngineObject{constructor(A,e){super(A,e),this.ad(new c.ObjResettingWithEvent(A.renderInUEChanged,()=>A.renderInUE?new sd(A,e):new nd(A,e)))}};p(Dt,"type",Dt.register("ESUeViewer",c.ESGeoDiv.type,Dt));let ti=Dt;class nd extends c.Destroyable{constructor(e,t){super();p(this,"_screenPosition",this.disposeVar(c.reactArrayWithUndefined(void 0)));const n=t.viewer;if(!n){console.warn("viewer is undefined!");return}const s=this.disposeVar(new c.ESTextLabel);s.parentID=e.id,this.ad(e.components.disposableAdd(s,!0)),s.show=!1,this.dispose(c.bind([s,"position"],[e,"position"])),this.dispose(c.bind([s,"rotation"],[e,"rotation"])),this.dispose(c.bind([s,"flyToParam"],[e,"flyToParam"])),this.dispose(c.bind([s,"flyInParam"],[e,"flyInParam"])),this.dispose(e.calcFlyToParamEvent.disposableOn(()=>{YA(n,s.id)})),this.dispose(e.calcFlyInParamEvent.disposableOn(async()=>{if(!t.actived)return;const a=await t.getCurrentCameraInfo();if(!a)return;const{position:l,rotation:d}=a;e.flyInParam={position:l,rotation:d,flyDuration:1}})),this.dispose(e.smoothMoveEvent.disposableOn((a,l)=>{Ve(n,s.id,a,l)})),this.dispose(e.smoothMoveWithRotationEvent.disposableOn((a,l,d)=>{ke(n,s.id,a,l,d)})),this.dispose(e.smoothMoveOnGroundEvent.disposableOn((a,l,d,h)=>{Ne(n,s.id,a,l,h,d)})),this.dispose(e.smoothMoveWithRotationOnGroundEvent.disposableOn((a,l,d,h,u)=>{_e(n,s.id,a,l,d,h,u)})),this.dispose(e.flyToEvent.disposableOn((a,l)=>{s.flyTo(a)})),this.dispose(e.flyInEvent.don(a=>{s.flyIn(a)}));const i=this._screenPosition,o=this.disposeVar(new c.ESCustomDiv);o.parentID=e.id,t.add(o),this.dispose(()=>t.delete(o)),this.dispose(c.bind([o,"allowPicking"],[e,"allowPicking"]));{const a=this.disposeVar(c.createAnimateFrame()),l=()=>{e.show?a.restart(void 0,async()=>{if(!e.position)return;const d=await t.lonLatAltToScreenPosition(e.position);if(!this.isDestroyed())if(!d)this._screenPosition.value=void 0;else{const[h,u]=d;h===-1&&u===-1?this._screenPosition.value=void 0:this._screenPosition.value=[h,u]}}):a.cancel()};l(),this.dispose(e.showChanged.disposableOn(l))}{const a=()=>class extends c.Destroyable{constructor(u,f,B){if(super(),this._subContainer=u,!B)return;if(!e.instanceClass)throw new Error("!sceneObject.instanceClass");const w=new c.PosFloatDiv,v=w.element;this._subContainer.appendChild(v),this.dispose(()=>this._subContainer.removeChild(v)),v.onclick=m=>{(e.allowPicking??!1)&&e.pickedEvent.emit(new c.ESJPickedResult({div:v,pointerEvent:m},e,void 0,void 0,void 0,[m.x,m.y]))};{const m=()=>{e.editing?v.children[0].style.pointerEvents="none":v.children[0].style.pointerEvents="all"};m(),this.d(e.editingChanged.don(m))}{const m=()=>{let E=e.show;if(!E)w.show=E,w.winPos=[0,0];else if(i.value){const I=t.getCurrentCameraInfo(),y=c.getDistancesFromPositions([e.position,I.position],"NONE")[0];e.minVisibleDistance<e.maxVisibleDistance?E=e.minVisibleDistance<y&&y<e.maxVisibleDistance:e.maxVisibleDistance==0&&(E=y>e.minVisibleDistance),w.show=E,w.winPos=[...i.value]}};m();const F=this.disposeVar(c.createNextAnimateFrameEvent(e.showChanged,i.changed,t.cameraChanged,e.maxVisibleDistanceChanged,e.minVisibleDistanceChanged));this.dispose(F.disposableOn(m))}{const m=()=>{const[F,E]=e.anchor??c.ESGeoDiv.defaults.anchor;w.originRatioX=F,w.originRatioY=E};m(),this.dispose(e.anchorChanged.disposableOn(m))}{const m=()=>{w.opacity=e.opacity??c.ESGeoDiv.defaults.opacity};m(),this.dispose(e.opacityChanged.disposableOn(m))}this.disposeVar(new e.instanceClass(w.contentDiv,e,B))}},l=()=>{try{e.instanceClass?o.instanceClass=a():o.instanceClass=void 0}catch(h){console.error(h)}};l();const d=this.dv(c.createNextAnimateFrameEvent(e.instanceClassChanged,e.opacityChanged,e.anchorChanged,e.editingChanged,e.showChanged,e.allowPickingChanged));this.d(d.don(l))}}get screenPosition(){return this._screenPosition.value}get screenPositionChanged(){return this._screenPosition.changed}set screenPosition(e){this._screenPosition.value=e}}class sd extends c.Destroyable{constructor(e,t){super();p(this,"_imageLabel");p(this,"_hasClassDivAndPos",{});this._imageLabel=this.dv(new c.ESImageLabel),this._imageLabel.isHoverZoom=!1,this._imageLabel.parentID=e.id;const n=t.viewer;if(!n){console.warn("viewer is undefined!");return}const s=this._imageLabel;this.ad(e.components.disposableAdd(s,!0));{const i=()=>{if(!n)return;if(!e.instanceClass)throw new Error("!sceneObject.instanceClass");const l=document.createElement("div"),d=this.dv(new e.instanceClass(l,e,t))._container;if(d.style.opacity=e.opacity.toString()??c.ESGeoDiv.defaults.opacity,d.style.position="fixed",d.style.zIndex="-1",d.style.top="0px",!document.body.contains(d)){document.body.appendChild(d);let u=d?d.querySelectorAll("*[class]"):[];for(let f=0;f<u.length;f++){const B=u[f];var h=B.getBoundingClientRect();this._hasClassDivAndPos[B.className]=[B.offsetLeft,B.offsetTop,B.offsetLeft+h.width,B.offsetTop+h.height]}}zw(d,{backgroundColor:null,allowTaint:!0,useCORS:!0,width:d.offsetWidth,height:d.offsetHeight,scale:1}).then(u=>{document.body.contains(d)&&document.body.removeChild(d),s.url=u.toDataURL(),s.show=e.show}).catch(()=>{document.body.contains(d)&&document.body.removeChild(d)})},o=()=>{try{e.instanceClass?i():(s.url="",s.show=!1)}catch(l){console.error(l)}};o();const a=this.dv(c.createNextAnimateFrameEvent(e.instanceClassChanged,e.opacityChanged));this.d(a.don(o))}{const i=()=>{s.show=e.show};s.show=!1,this.ad(e.showChanged.don(i))}this.d(c.track([s,"anchor"],[e,"anchor"])),this.d(c.bind([s,"position"],[e,"position"])),this.d(c.bind([s,"rotation"],[e,"rotation"])),this.d(c.bind([s,"flyToParam"],[e,"flyToParam"])),this.d(c.bind([s,"flyInParam"],[e,"flyInParam"])),this.d(c.bind([s,"allowPicking"],[e,"allowPicking"])),this.d(c.bind([s,"scale"],[e,"scale"])),this.d(c.track([s,"minVisibleDistance"],[e,"minVisibleDistance"])),this.d(c.track([s,"maxVisibleDistance"],[e,"maxVisibleDistance"])),this.ad(e.automaticLandingEvent.don(()=>{s.automaticLanding()})),this.d(t.widgetEvent.don(i=>{if(i.objId!==this._imageLabel.id)return;const{type:o,add:a}=i;if(o==="leftClick"&&a){const l=(a==null?void 0:a.classNames)??[],d=Object.keys(this._hasClassDivAndPos);for(let h=0;h<d.length;h++){const u=d[h];let f=this._hasClassDivAndPos[u];a&&a.mouseRelativePos&&a.mouseRelativePos[0]>=f[0]&&a.mouseRelativePos[0]<=f[2]&&a.mouseRelativePos[1]>=f[1]&&a.mouseRelativePos[1]<=f[3]&&l.push(u)}a.classNames=l}e.widgetEvent.emit({type:o,add:a})})),this.d(e.calcFlyToParamEvent.don(()=>{YA(n,s.id)})),this.d(e.calcFlyInParamEvent.don(()=>{const i=t.getCurrentCameraInfo();if(!i)return;const{position:o,rotation:a}=i;e.flyInParam={position:o,rotation:a,flyDuration:1}})),this.d(e.smoothMoveEvent.don((i,o)=>{Ve(n,s.id,i,o)})),this.d(e.smoothMoveWithRotationEvent.don((i,o,a)=>{ke(n,s.id,i,o,a)})),this.d(e.smoothMoveOnGroundEvent.don((i,o,a,l)=>{Ne(n,s.id,i,o,l,a)})),this.d(e.smoothMoveWithRotationOnGroundEvent.don((i,o,a,l,d)=>{_e(n,s.id,i,o,a,l,d)})),this.d(e.flyToEvent.don((i,o)=>{s.flyTo(i)})),this.d(e.flyInEvent.don(i=>{s.flyIn(i)}))}}const ie=class ie extends eA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.flyToFeatureIndexEvent.don((n,s)=>{t.callUeFunc({f:"flyToFeatureIndex",p:{id:A.id,index:n,duration:s}})})),this.d(A.flyToFeatureEvent.don((n,s,i)=>{t.callUeFunc({f:"flyToFeature",p:{id:A.id,key:n,value:s,duration:i}})}))}};p(ie,"type",ie.register("ESUeViewer",c.ESGeoJson.type,ie)),p(ie,"forceUeUpdateProps",[...eA.forceUeUpdateProps,"url"]),p(ie,"propValFuncs",{...eA.propValFuncs,url:A=>typeof A=="string"?c.ESSceneObject.context.getStrFromEnv(A):A});let ri=ie;const Rt=class Rt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Rt,"type",Rt.register("ESUeViewer",c.ESGeoLineString.type,Rt));let Fn=Rt;const xt=class xt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(xt,"type",xt.register("ESUeViewer",c.ESGeoRectangle.type,xt));let ni=xt;const Pt=class Pt extends dA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Pt,"type",Pt.register("ESUeViewer",c.ESGeoWater.type,Pt));let si=Pt;const oe=class oe extends P{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.setNodePositionEvent.don((n,s)=>{io(t,A.id,n,s)})),this.d(A.setNodeRotationEvent.don((n,s)=>{oo(t,A.id,n,s)})),this.d(A.setNodeScaleEvent.don((n,s)=>{ao(t,A.id,n,s)}))}};p(oe,"forceUeUpdateProps",[...P.forceUeUpdateProps,"url"]),p(oe,"propValFuncs",{...P.propValFuncs,url:A=>typeof A=="string"?c.ESSceneObject.context.getStrFromEnv(c.rpToap(A)):(A.url=c.ESSceneObject.context.getStrFromEnv(c.rpToap(A.url)),A),czmMaximumScale:null,czmMinimumPixelSize:null,czmNativeScale:null,czmColor:null}),p(oe,"type",oe.register("ESUeViewer",c.ESGltfModel.type,oe));let ii=oe;const Kt=class Kt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Kt,"type",Kt.register("ESUeViewer",c.ESHeightMeasurement.type,Kt));let oi=Kt;const Gt=class Gt extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}const n=async(i,o,a,l)=>{const{viewer:d}=i;if(!d){console.error("AIMoveTo: ueViewer.viewer is undefined");return}const h=await d.callUeFunc({f:"AIMoveTo",p:{id:o,Destination:a,Time:l}});return h.error&&console.error("AIMoveTo:",h.error),h};this.d(A.aiMoveToEvent.don((i,o)=>{n(e,A.id,i,o)}));const s=async(i,o)=>{const{viewer:a}=i;if(!a){console.error("StopAIMove: ueViewer.viewer is undefined");return}const l=await a.callUeFunc({f:"StopAIMove",p:{id:o}});return l.error&&console.error("StopAIMove:",l.error),l};this.d(A.stopAIMoveEvent.don(()=>{s(e,A.id)}))}};p(Gt,"type",Gt.register("ESUeViewer",c.ESHuman.type,Gt));let ai=Gt;const ae=class ae extends QA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}A.anchor=[.5,1]}};p(ae,"type",ae.register("ESUeViewer",c.ESImageLabel.type,ae)),p(ae,"forceUeUpdateProps",[...QA.forceUeUpdateProps,"url"]),p(ae,"propValFuncs",{...QA.propValFuncs,url:A=>typeof A=="string"?c.ESSceneObject.context.getStrFromEnv(c.rpToap(A)):(A.url=c.ESSceneObject.context.getStrFromEnv(c.rpToap(A.url)),A)});let li=ae;const kt=class kt extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(kt,"type",kt.register("ESUeViewer",c.ESLevelRuntimeModel.type,kt));let ci=kt;const Nt=class Nt extends Er{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Nt,"type",Nt.register("ESUeViewer",c.ESLocalCircle.type,Nt));let di=Nt;const _t=class _t extends eA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(_t,"type",_t.register("ESUeViewer",c.ESLocalPolygonZ.type,_t));let ui=_t;const Vt=class Vt extends Er{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Vt,"type",Vt.register("ESUeViewer",c.ESLocalRectangle.type,Vt));let hi=Vt;const Ot=class Ot extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Ot,"type",Ot.register("ESUeViewer",c.ESLocalSkyBox.type,Ot));let gi=Ot;const Wt=class Wt extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Wt,"type",Wt.register("ESUeViewer",c.ESLocationMeasurement.type,Wt));let Bi=Wt;const Xt=class Xt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Xt,"type",Xt.register("ESUeViewer",c.ESPipeFence.type,Xt));let fi=Xt;const Jt=class Jt extends Fn{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Jt,"type",Jt.register("ESUeViewer",c.ESPipeline.type,Jt));let wi=Jt;const zt=class zt extends yr{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.highlightFeatureEvent.don(n=>{const s=typeof n=="number"?n.toString():n;to(t,A.id,s)})),this.d(A.highlightFeatureAndFlyToEvent.don((n,s,i,o)=>{const a=typeof n=="number"?n.toString():n;ro(t,A.id,a,o??1)})),this.d(A.setLayerVisibleEvent.don((n,s)=>{let i="";typeof s!="string"?i=JSON.stringify(s):i=s,no(t,A.id,i)})),this.d(A.setLayerColorEvent.don((n,s)=>{let i="";typeof s!="string"?i=JSON.stringify(s):i=s,so(t,A.id,i)}))}};p(zt,"type",zt.register("ESUeViewer",c.ESPipeserTileset.type,zt));let pi=zt;const Yt=class Yt extends dA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Yt,"type",Yt.register("ESUeViewer",c.ESPit.type,Yt));let Ci=Yt;const $t=class $t extends QA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.ad(A.getInitialStyleEvent.don(async()=>{try{const n=await t.callUeFunc({f:"GetInitialStyle",p:{id:A.id}});n.error!=""&&console.error("getInitialStyleEvent:",n.error),A.initialStyle.value=structuredClone(n.re)}catch(n){console.error("getInitialStyleEvent:",n),A.initialStyle.value=void 0}}))}};p($t,"type",$t.register("ESUeViewer",c.ESPoi2D.type,$t));let vi=$t;const Zt=class Zt extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Zt,"type",Zt.register("ESUeViewer",c.ESPoi3D.type,Zt));let mi=Zt;const le=class le extends eA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(le,"type",le.register("ESUeViewer",c.ESPoiTileset.type,le)),p(le,"forceUeUpdateProps",[...eA.forceUeUpdateProps,"url"]),p(le,"propValFuncs",{...eA.propValFuncs,url:A=>typeof A=="string"?c.ESSceneObject.context.getStrFromEnv(A):(A.url=c.ESSceneObject.context.getStrFromEnv(A.url),A)});let Fi=le;const qt=class qt extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(qt,"type",qt.register("ESUeViewer",c.ESPolygonFence.type,qt));let Qi=qt;const Re=class Re extends dA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Re,"type",Re.register("ESUeViewer",c.ESPolygonFlattenedPlane.type,Re)),p(Re,"propValFuncs",{...dA.propValFuncs,targetID:A=>{if(!A)return"";const e=c.ESSceneObject.getSceneObject(A);return e?(e.components.main??e).id:A}});let Ui=Re;const jt=class jt extends dA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(jt,"type",jt.register("ESUeViewer",c.ESPolygonWithHole.type,jt));let Ei=jt;const Ar=class Ar extends qA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}this.d(()=>{A.ids=[]}),this.d(A.highlightInner3DtilesetEvent.don(n=>{n.highlight=!0})),this.d(A.removeHighlightInner3DtilesetEvent.don(n=>{n.highlight=!1}));{const n=o=>{o=o.toLocaleLowerCase();let a=[255,255,255,1];if(o.startsWith("#")){if(o.length===4){let l=parseInt(o[1]+o[1],16),d=parseInt(o[2]+o[2],16),h=parseInt(o[3]+o[3],16);a=[l,d,h,1]}else if(o.length===7){let l=parseInt(o.substring(1,3),16),d=parseInt(o.substring(3,5),16),h=parseInt(o.substring(5,7),16);a=[l,d,h,1]}}else if(o.startsWith("rgba")){let l=o.match(/^rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d.]+)\s*\)$/);if(l){let d=parseInt(l[1]),h=parseInt(l[2]),u=parseInt(l[3]),f=parseFloat(l[4]);a=[d,h,u,f]}}else if(o.startsWith("rgb")){let l=o.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/);if(l){let d=parseInt(l[1]),h=parseInt(l[2]),u=parseInt(l[3]);a=[d,h,u,1]}}else console.error("color类型只能为#rrggbb、#rgb、rgba(r,g,b,a)、rgb(r,g,b)");return[a[0]/255,a[1]/255,a[2]/255,a[3]]},s=()=>{const o=A.layerConfig;if(!o)return;const a=[];o.forEach(l=>{o.filter(h=>h.dataset==l.dataset).length==1?a.push({condition:[{field:"dataset",op:"==",value:l.dataset}],color:n(l.value.color??"rgb(255,255,255)"),show:l.value.visible}):a.push({condition:[{field:"layer",op:"==",value:l.layer},{field:"dataset",op:"==",value:l.dataset}],color:n(l.value.color??"rgb(255,255,255)"),show:l.value.visible})}),A.setFeatureStyle(a)};s();const i=this.dv(c.createNextAnimateFrameEvent(A.layerConfigChanged,A.colorBlendModeChanged));this.d(i.don(()=>{s()}))}}};p(Ar,"type",Ar.register("ESUeViewer",c.ESRtsTileset.type,Ar));let yi=Ar;const er=class er extends eA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}this.d(A.addTreesEvent.don(n=>{c.addTreesCallFunc(e,A.id,n)})),this.d(A.removeAllTreesEvent.don(()=>{c.removeAllTreesCallFunc(e,A.id)})),this.d(A.updateTreeParamsEvent.don(n=>{c.updateTreeParamsCallFunc(e,A.id,n)})),this.d(A.cutDownTreesEvent.don((n,s)=>{c.cutDownTreesCallFunc(e,A.id,n,s)})),this.d(A.growthSimulationEvent.don((n,s,i)=>{c.growthSimulationCallFunc(e,A.id,n,s,i)}))}};p(er,"type",er.register("ESUeViewer",c.ESSeparateFoliage.type,er));let Si=er;const tr=class tr extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(tr,"type",tr.register("ESUeViewer",c.ESSubmergingAnalysis.type,tr));let Ii=tr;const rr=class rr extends dA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.startEvent.don(()=>{t.callUeFunc({f:"Start",p:{id:A.id}})})),this.d(A.stopEvent.don(()=>{t.callUeFunc({f:"Stop",p:{id:A.id}})}))}};p(rr,"type",rr.register("ESUeViewer",c.ESSunshineAnalysis.type,rr));let Ti=rr;const nr=class nr extends dA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.startEvent.don(()=>{t.callUeFunc({f:"Start",p:{id:A.id}})}))}};p(nr,"type",nr.register("ESUeViewer",c.ESSurfaceAreaMeasurement.type,nr));let Hi=nr;const sr=class sr extends QA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(sr,"type",sr.register("ESUeViewer",c.ESTextLabel.type,sr));let Li=sr;const xe=class xe extends QA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.callFunctionEvent.don(async(n,s)=>{const i=await yn(t,A.id,n,s);A.__callFunctionResultEvent.emit(i)}))}};p(xe,"type",xe.register("ESUeViewer",c.ESUEWidget.type,xe)),p(xe,"propValFuncs",{...QA.propValFuncs,info:A=>JSON.stringify(A??{})});let bi=xe;const id=r=>{switch(r){case 0:return"成功绑定";case 1:return"解绑之前的内容,成功绑定";case 2:return"未搜索到ActorTag,无法绑定";case 3:return"搜索到ActorTag但对应的Actor不是场景原有的,而是新建的,无法绑定";case 4:return"搜索到ActorTag对应的Actor是地形或3DTileset,无法绑定";default:return"未知错误"}},Zw=r=>{switch(r){case 0:return"创建成功";case 1:return"未找到对应的资源,无法创建";case 2:return"Id与场景中现有的ActorTag重复,创建后可能出现问题,创建失败";default:return"未知错误"}},ir=class ir extends c.EngineObject{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn(`${A.id} UeESUnrealActor viewer is undefined!`);return}this.d(()=>{Un(t,A.id)});const n=async()=>{l()||await t.callUeFunc({f:"update",p:{id:A.id,name:A.name,show:A.show,rotation:A.rotation,flyToParam:A.flyToParam??c.ESUnrealActor.defaultFlyToParam,flyInParam:A.flyInParam??c.ESUnrealActor.defaultFlyInParam,highlight:A.highlight,collision:A.collision,scale:A.scale,minVisibleDistance:A.minVisibleDistance,maxVisibleDistance:A.maxVisibleDistance}})},s=this.dv(c.createNextAnimateFrameEvent(A.showChanged,A.nameChanged,A.rotationChanged,A.flyToParamChanged,A.flyInParamChanged,A.highlightChanged,A.collisionChanged,A.scaleChanged,A.minVisibleDistanceChanged,A.maxVisibleDistanceChanged));this.d(s.don(n)),this.d(A.flushEvent.don(()=>s.flush()));let i,o;const a=async()=>{l()||(await t.callUeFunc({f:"update",p:{id:A.id,position:A.position}}),(e.debug??!1)&&console.log(`updatePostion:${A.position},actorTag:${A.actorTag},actorClass:${A.actorClass}`))},l=()=>!i&&!o?(console.warn(`${A.id} 未绑定ActorTag或未创建ActorClass!`),!0):!1,d=async()=>{const{id:u}=A,f=await e.unBindActorByID(u);f&&f.error!==""&&console.warn(`${A.id} UeESUnrealActor UnBindActorByID: ${f.error}`),i=void 0;const B=await t.callUeFunc({f:"destroy",p:{id:u}});if(B&&B.error!==""){console.warn(`${A.id} UeESUnrealActor DestroyActorByID: ${B.error}`);return}o=void 0},h=this.dv(c.react({type:"ActorClass",actorClass:"default"}));{const u=this.dv(c.createNextAnimateFrameEvent(A.actorClassChanged,A.actorTagChanged)),f=async()=>{A.actorTag!==""?h.value={type:"ActorTag",actorTag:A.actorTag}:h.value={type:"ActorClass",actorClass:A.actorClass===""?"default":A.actorClass}};f(),this.d(u.don(f)),this.d(A.flushEvent.don(()=>u.flush()))}{const u=this.dv(c.createProcessingFromAsyncFunc(async B=>{if(await B.promise(d()),A.lastActorStatus="null",h.value.type==="ActorTag"){const{actorTag:w}=h.value;try{const v=await B.promise(e.bindActorByTag(A.id,w));if(!v)return;if(v.error!==""){console.warn(`${A.id} UeESUnrealActor BindActorByTag:${w},${v.error}`);return}if(v.re.type===0)A.lastActorStatus="bound",i=w;else if(v.re.type===1)A.lastActorStatus="bound",i=w,console.warn(`${A.id} UeESUnrealActor BindActorByTag:${w},${id(v.re.type)}`);else{i=void 0,console.warn(`${A.id} UeESUnrealActor BindActorByTag error:${w}, ${id(v.re.type)}`);return}}catch(v){console.warn(`${A.id} UeESUnrealActor BindActorByTag catch error:${w}, ${v}`);return}}else if(h.value.type==="ActorClass"){const{actorClass:w}=h.value;try{const v=await B.promise(e.createActorByClass(A.id,w));if(!v)return;if(v.error!==""){console.warn(`${A.id} UeESUnrealActor CreateActorByClass error :${w}, ${v.error}`);return}if(v.re.type===0)w!=="default"&&(A.lastActorStatus="created"),o=w;else{console.warn(`${A.id} UeESUnrealActor CreateActorByClass error type :${w},${Zw(v.re.type)}`);return}}catch(v){console.warn(`${A.id} UeESUnrealActor CreateActorByClass error catch :${w}, ${JSON.stringify(v)}`);return}}await B.promise(n()),await B.promise(a())})),f=async()=>{u.restart()};f(),this.d(h.changed.don(f))}this.d(A.positionChanged.don(a)),this.d(A.callFunctionEvent.don(async(u,f)=>{if(l()){A.__callFunctionResultEvent.emit(void 0);return}const B=await yn(t,A.id,u,f);A.__callFunctionResultEvent.emit(B)})),this.d(A.smoothMoveEvent.don((u,f)=>{l()||Ve(t,A.id,u,f)})),this.d(A.smoothMoveWithRotationEvent.don((u,f,B)=>{l()||ke(t,A.id,u,f,B)})),this.d(A.smoothMoveOnGroundEvent.don((u,f,B,w)=>{l()||Ne(t,A.id,u,f,w,B)})),this.d(A.smoothMoveWithRotationOnGroundEvent.don((u,f,B,w,v)=>{l()||_e(t,A.id,u,f,B,w,v)})),this.d(A.automaticLandingEvent.don(u=>{if(l())return;const f=[A.position[0],A.position[1]];e.getHeightByLonLat(A.position[0],A.position[1],"Visibility").then(B=>{B!==null&&(A.position=[...f,B],A.collision=u)})})),this.d(A.flyToEvent.don(async(u,f)=>{if(l())return;const B=await fe(t,A.id,u);let w="over";B===void 0?w="error":B.endType===0?w="over":B.endType===1&&(w="cancelled"),A.flyOverEvent.emit(f,w,e)})),this.d(A.calcFlyToParamEvent.don(()=>{l()||YA(t,A.id)})),this.d(A.calcFlyInParamEvent.don(async()=>{if(!e.actived)return;const u=await e.getCurrentCameraInfo();if(!u)return;const{position:f,rotation:B}=u;A.flyInParam={position:f,rotation:B,flyDuration:1}})),this.d(e.propChanged.don(u=>{l()||u.objId===A.id&&Object.keys(u.props).forEach(f=>{const B=u.props[f]===null?void 0:u.props[f];A[f]=B})}))}};p(ir,"type",ir.register("ESUeViewer",c.ESUnrealActor.type,ir));let Mi=ir;const or=class or extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(or,"type",or.register("ESUeViewer",c.ESVideoFusion.type,or));let Di=or;const ar=class ar extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(ar,"type",ar.register("ESUeViewer",c.ESViewShed.type,ar));let Ri=ar;const lr=class lr extends nA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is underfined!");return}}};p(lr,"type",lr.register("ESUeViewer",c.ESVisibilityAnalysis.type,lr));let xi=lr;const cr=class cr extends dA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.ad(c.track([A,"volume"],[A,"cutAndFillVolume"])),this.d(A.startEvent.don(()=>{t.callUeFunc({f:"Start",p:{id:A.id}})})),this.d(A.clearEvent.don(()=>{t.callUeFunc({f:"Clear",p:{id:A.id}})}))}};p(cr,"type",cr.register("ESUeViewer",c.ESVolumeMeasurement.type,cr));let Pi=cr;const Pe=class Pe extends QA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Pe,"type",Pe.register("ESUeViewer",c.ESWidget.type,Pe)),p(Pe,"propValFuncs",{...QA.propValFuncs,info:A=>JSON.stringify(A??{})});let Ki=Pe;const dr=class dr extends c.EngineObject{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}A.poi.actorTag=A.human.id,A.poi.positionOffset=[0,0,A.poiOffsetHeight-.8],this.d(A.poiOffsetHeightChanged.don(()=>{A.poi.positionOffset=[0,0,A.poiOffsetHeight-.8]})),this.d(()=>{A.poi.actorTag=""})}};p(dr,"type",dr.register("ESUeViewer",c.ESHumanPoi.type,dr));let Gi=dr;c.ESSceneObject.context.getStrFromEnv(c.ESNavigator.defaults.imgUrl);const ur=class ur extends c.EngineObject{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}const n=this.disposeVar(new c.ESCustomDiv);e.add(n),this.dispose(()=>e.delete(n)),this.dispose(c.track([n,"show"],[A,"show"])),n.instanceClass=class extends c.Destroyable{constructor(i,o,a){super(),this._subContainer=i;const l=document.createElement("div");this._subContainer.appendChild(l),this.dispose(()=>this._subContainer.removeChild(l));{const u=async()=>{const f=await e.getCurrentCameraInfo(),B=f==null?void 0:f.position,v=[...f==null?void 0:f.rotation];v[0]=360,e.flyIn(B,v)};l.addEventListener("click",u),l.style.cursor="pointer",this.dispose(()=>l.removeEventListener("click",u))}{const u=()=>{l.style.width=`${A.cssSize?A.cssSize:c.ESNavigator.defaults.cssSize}px`,l.style.height=`${A.cssSize?A.cssSize:c.ESNavigator.defaults.cssSize}px`};u(),A.dispose(A.cssSizeChanged.disposableOn(u))}l.style.position="fixed";{const u=()=>{l.style.top=`${A.cssPosition?A.cssPosition[0]:c.ESNavigator.defaults.cssPosition[0]}px`,l.style.right=`${A.cssPosition?A.cssPosition[1]:c.ESNavigator.defaults.cssPosition[1]}px`};u(),A.dispose(A.cssPositionChanged.disposableOn(u))}l.style.transition=" right 0.4s linear",l.style.cursor="pointer";const d=document.createElement("div");l.appendChild(d),this.dispose(()=>l.removeChild(d)),d.style.width="100%",d.style.height="100%",d.style.position="relative";const h=document.createElement("img");d.appendChild(h),this.dispose(()=>d.removeChild(h)),h.style.width="100%",h.style.height="100%",h.style.border="none";{const u=()=>h.src=A.imgUrl;u(),A.dispose(A.imgUrlChanged.disposableOn(u))}{const u=()=>{const v=-e.getCurrentCameraInfo().rotation[0];h.style.transform=`rotate(${v}deg)`};let f;const B=async()=>{u(),A.show?(l.style.display="block",f=setInterval(()=>{u()},1e3)):(l.style.display="none",clearInterval(f))};this.dispose(A.showChanged.disposableOn(B)),B(),this.dispose(()=>clearInterval(f))}h.style.transformOrigin="50% 50%"}}}};p(ur,"type",ur.register("ESUeViewer",c.ESNavigator.type,ur));let ki=ur;const ce=class ce extends nA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}{const n=()=>{t.callUeFunc({f:"update",p:{id:A.id,materialMode:A.materialMode}})};this.dispose(A.materialModeChanged.disposableOn(n))}}};p(ce,"type",ce.register("ESUeViewer",c.ESPath.type,ce)),p(ce,"forceUeUpdateProps",[...nA.forceUeUpdateProps]),p(ce,"propValFuncs",{...nA.propValFuncs});let Ni=ce;async function qw(r){navigator.clipboard.writeText(r).then(function(){console.log("复制成功")},function(A){console.log("复制失败")})}const hr=class hr extends c.EngineObject{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}const n=this.disposeVar(new c.ESCustomDiv);e.add(n),this.dispose(()=>e.delete(n)),n.instanceClass=class extends c.Destroyable{constructor(i,o,a){if(super(),this._subContainer=i,!a||!(a instanceof LA))return;const l=document.createElement("div");this._subContainer.appendChild(l),this.dispose(()=>this._subContainer.removeChild(l)),l.style.width="100%",l.style.position="absolute",l.style.height=`${c.ESViewerStatusBar.defaults.height}px`,l.style.left="0",l.style.bottom="0",l.style.color="#fff",l.style.padding="0 20px 0 0",l.style.boxSizing="border-box",l.style.lineHeight=`${c.ESViewerStatusBar.defaults.height}px`,l.style.zIndex="100",l.style.alignContent="center",l.style.justifyContent="space-between";const d=document.createElement("span");l.appendChild(d),this.dispose(()=>l.removeChild(d));const h=document.createElement("span");d.appendChild(h),this.dispose(()=>d.removeChild(h));const u=document.createElement("span");d.appendChild(u),u.addEventListener("dblclick",function(){let B=u.innerHTML;B.startsWith("鼠标位置")&&(B=B.slice(5)),qw(B)}),u.style.cursor="pointer",this.dispose(()=>d.removeChild(u));const f=document.createElement("span");l.appendChild(f),this.dispose(()=>l.removeChild(f));{const B=()=>{l.style.height=(A.height??c.ESViewerStatusBar.defaults.height)+"px",l.style.lineHeight=(A.height??c.ESViewerStatusBar.defaults.height)+"px"};this.dispose(A.heightChanged.disposableOn(B)),B()}{const B=()=>{l.style.fontSize=(A.fontSize??c.ESViewerStatusBar.defaults.fontSize)+"px"};this.dispose(A.fontSizeChanged.disposableOn(B)),B()}{const B=()=>{A.bgColor?l.style.background=`rgba(${A.bgColor[0]*255},${A.bgColor[1]*255},${A.bgColor[2]*255},${A.bgColor[3]})`:l.style.background=`rgba(${c.ESViewerStatusBar.defaults.bgColor[0]},${c.ESViewerStatusBar.defaults.bgColor[1]},${c.ESViewerStatusBar.defaults.bgColor[2]},${c.ESViewerStatusBar.defaults.bgColor[3]})`};this.dispose(A.bgColorChanged.disposableOn(B)),B()}a.getVersion().then(B=>{B&&(f.innerText=`Ue 版本 : ${B[0]} `)}).catch(B=>{console.log(B)});{const B=()=>{let m="",F="";m+=`帧率:${a.getFPS().toFixed(0)}FPS`,h.innerText=m;const E=e.getCurrentCameraInfo();m+=` 经度: ${E.position[0].toFixed(5)}° 纬度: ${E.position[1].toFixed(5)}° 高度: ${E.position[2].toFixed(2)}米 偏航角: ${E.rotation[0].toFixed(2)}° 俯仰角: ${E.rotation[1].toFixed(2)}° 翻滚角:${E.rotation[2].toFixed(2)}° `,h.innerText=m,e.pick().then(I=>{if(I){const{pickResult:y}=I;if(y&&y.position){const{position:U}=y;F+=`鼠标位置:${U[0].toFixed(5)}° ${U[1].toFixed(5)}° ${U[2].toFixed(2)}m`}else F+="暂时无法获取鼠标位置...";u.innerText=F}}).catch(I=>{console.log(I)})};let w;const v=async()=>{B(),A.show?(l.style.display="flex",w=setInterval(()=>{B()},1e3)):(l.style.display="none",clearInterval(w))};this.dispose(A.showChanged.disposableOn(v)),v(),this.dispose(()=>clearInterval(w))}}}}};p(hr,"type",hr.register("ESUeViewer",c.ESViewerStatusBar.type,hr));let _i=hr;const gr=class gr extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(gr,"type",gr.register("ESUeViewer",c.ESGaussianSplatting.type,gr));let Vi=gr;const Br=class Br extends qA{constructor(e,t){super(e,t);p(this,"_es3DTileset",this.dv(new c.ES3DTileset));if(!t.viewer){console.warn("viewer is undefined!");return}this.es3DTileset.parentID=e.id;{const s=this._es3DTileset;e.components.disposableAdd(s,!0),this.d(c.track([s,"allowPicking"],[e,"allowPicking"])),this.d(c.track([s,"collision"],[e,"collision"])),this.d(c.bind([s,"flyToParam"],[e,"flyToParam"])),this.d(c.bind([s,"flyToParam"],[e,"flyToParam"])),this.d(c.track([s,"url"],[e,"url"])),this.d(c.track([s,"actorTag"],[e,"actorTag"])),this.d(c.track([s,"materialMode"],[e,"materialMode"])),this.d(c.track([s,"highlight"],[e,"highlight"])),this.d(c.track([s,"maximumScreenSpaceError"],[e,"maximumScreenSpaceError"])),this.d(c.track([s,"highlightID"],[e,"highlightID"])),this.d(c.track([s,"highlightColor"],[e,"highlightColor"])),this.d(c.bind([s,"offset"],[e,"offset"])),this.d(c.bind([s,"rotation"],[e,"rotation"])),this.d(c.track([s,"czmImageBasedLightingFactor"],[e,"czmImageBasedLightingFactor"])),this.d(c.track([s,"czmLuminanceAtZenith"],[e,"czmLuminanceAtZenith"])),this.d(c.track([s,"czmMaximumMemoryUsage"],[e,"czmMaximumMemoryUsage"])),this.d(c.track([s,"czmClassificationType"],[e,"czmClassificationType"])),this.d(c.track([s,"czmStyleJson"],[e,"czmStyleJson"])),this.d(c.track([s,"czmBackFaceCulling"],[e,"czmBackFaceCulling"])),this.d(c.track([s,"czmDebugShowBoundingVolume"],[e,"czmDebugShowBoundingVolume"])),this.d(c.track([s,"czmDebugShowContentBoundingVolume"],[e,"czmDebugShowContentBoundingVolume"])),this.d(c.track([s,"colorBlendMode"],[e,"colorBlendMode"])),this.d(c.track([s,"cacheBytes"],[e,"cacheBytes"])),this.d(c.track([s,"clippingPlaneEnabled"],[e,"clippingPlaneEnabled"])),this.d(c.track([s,"unionClippingRegions"],[e,"unionClippingRegions"])),this.d(c.track([s,"clippingPlaneEdgeColor"],[e,"clippingPlaneEdgeColor"])),this.d(c.track([s,"clippingPlaneEdgeWidth"],[e,"clippingPlaneEdgeWidth"])),this.d(c.track([s,"materialParams"],[e,"materialParams"])),this.d(c.bind([s,"supportEdit"],[e,"supportEdit"])),this.d(c.bind([s,"clippingPlanesId"],[e,"clippingPlanesId"])),this.d(c.bind([s,"clippingPlaneIds"],[e,"clippingPlaneIds"])),this.d(c.bind([s,"flattenedPlaneId"],[e,"flattenedPlaneId"])),this.d(c.bind([s,"flattenedPlaneEnabled"],[e,"flattenedPlaneEnabled"])),this.d(c.bind([s,"clippingPlaneId"],[e,"clippingPlaneId"])),this.d(c.bind([s,"excavateId"],[e,"excavateId"]))}{const s=this._es3DTileset;this.d(e.refreshTilesetEvent.don(()=>{s.refreshTileset()})),this.d(e.highlightFeatureEvent.don((...i)=>{s.highlightFeature(...i)})),this.d(e.highlightFeatureAndFlyToEvent.don((...i)=>{s.highlightFeatureAndFlyTo(...i)})),this.d(e.setFeatureColorEvent.don((...i)=>{s.setFeatureColor(...i)})),this.d(e.setFeatureVisableEvent.don((...i)=>{s.setFeatureVisable(...i)})),this.d(e.resetFeatureStyleEvent.don((...i)=>{s.resetFeatureStyle(...i)})),this.d(e.flyInEvent.don((...i)=>{s.flyIn(i[0])})),this.d(e.flyToEvent.don((...i)=>{s.flyTo(i[0])})),this.d(e.calcFlyToParamEvent.don((...i)=>{s.calcFlyToParam(...i)})),this.d(e.calcFlyInParamEvent.don((...i)=>{s.calcFlyInParam(...i)}))}{const s=this._es3DTileset;this.d(s.tilesetReady.don(i=>{e.tilesetReady.emit(i)})),this.d(s.pickedEvent.don(i=>{i.assign({sceneObject:e}),e.pickedEvent.emit(i)}))}{const s=()=>{this.es3DTileset.show=e.show};s(),this.d(e.showChanged.don(()=>{s()}))}}get es3DTileset(){return this._es3DTileset}};p(Br,"type",Br.register("ESUeViewer",c.ESRtsFeatureEditing.type,Br));let Oi=Br;const fr=class fr extends qA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(fr,"type",fr.register("ESUeViewer",c.ESMsTileset.type,fr));let Wi=fr;const wr=class wr extends dA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=()=>{t.callUeFunc({f:"update",p:{id:A.id,height:A.height??c.ESGeoExtrudedPolygon.defaults.height,extrudedHeight:A.extrudedHeight??c.ESGeoExtrudedPolygon.defaults.extrudedHeight,perPositionHeight:A.perPositionHeight??c.ESGeoExtrudedPolygon.defaults.perPositionHeight}})},s=this.disposeVar(c.createNextAnimateFrameEvent(A.heightChanged,A.extrudedHeightChanged,A.perPositionHeightChanged));this.dispose(s.disposableOn(n)),this.dispose(A.createdEvent.disposableOn(n))}};p(wr,"type",wr.register("ESUeViewer",c.ESGeoExtrudedPolygon.type,wr));let Xi=wr;const pr=class pr extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(pr,"type",pr.register("ESUeViewer",c.ESStaticMesh.type,pr));let Ji=pr;const Cr=class Cr extends nA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.startEvent.don(()=>{t.callUeFunc({f:"Start",p:{id:A.id}})})),this.d(A.clearEvent.don(()=>{t.callUeFunc({f:"Clear",p:{id:A.id}})}))}};p(Cr,"type",Cr.register("ESUeViewer",c.ESSkylineAnalysis.type,Cr));let zi=Cr;C.copyright=void 0;try{const r="earthsdk3-ue",A="3.7.0-beta.14",e="2025-12-05T01:09:14.000Z",t="北京西部世界科技有限公司",n="地球可视化实验室 (EarthSDK&CesiumLab) https://www.bjxbsj.cn",s="c8c53546e91ee45f45a102e5f4f076c4f16e0d00",o=((Date.now()-1764896954e3)/36e5).toFixed(1),a=`%c🌏 ${r}%c ${A}.${s.slice(0,8)}.${e} (距今${o}个小时)
|
|
111
|
+
}`,cw=function(r){dw(r,"."+Ys+aw+Jc+`
|
|
112
|
+
.`+$s+lw+Jc)},dw=function(r,A){var e=r.ownerDocument;if(e){var t=e.createElement("style");t.textContent=A,r.appendChild(t)}},zc=function(){function r(){}return r.getOrigin=function(A){var e=r._link;return e?(e.href=A,e.href=e.href,e.protocol+e.hostname+e.port):"about:blank"},r.isSameOrigin=function(A){return r.getOrigin(A)===r._origin},r.setContext=function(A){r._link=A.document.createElement("a"),r._origin=r.getOrigin(A.location.href)},r._origin="about:blank",r}(),uw=function(){function r(A,e){this.context=A,this._options=e,this._cache={}}return r.prototype.addImage=function(A){var e=Promise.resolve();return this.has(A)||(qs(A)||fw(A))&&(this._cache[A]=this.loadImage(A)).catch(function(){}),e},r.prototype.match=function(A){return this._cache[A]},r.prototype.loadImage=function(A){return hA(this,void 0,void 0,function(){var e,t,n,s,i=this;return nA(this,function(o){switch(o.label){case 0:return e=zc.isSameOrigin(A),t=!Zs(A)&&this._options.useCORS===!0&&tA.SUPPORT_CORS_IMAGES&&!e,n=!Zs(A)&&!e&&!qs(A)&&typeof this._options.proxy=="string"&&tA.SUPPORT_CORS_XHR&&!t,!e&&this._options.allowTaint===!1&&!Zs(A)&&!qs(A)&&!n&&!t?[2]:(s=A,n?[4,this.proxy(s)]:[3,2]);case 1:s=o.sent(),o.label=2;case 2:return this.context.logger.debug("Added image "+A.substring(0,256)),[4,new Promise(function(a,l){var d=new Image;d.onload=function(){return a(d)},d.onerror=l,(ww(s)||t)&&(d.crossOrigin="anonymous"),d.src=s,d.complete===!0&&setTimeout(function(){return a(d)},500),i._options.imageTimeout>0&&setTimeout(function(){return l("Timed out ("+i._options.imageTimeout+"ms) loading image")},i._options.imageTimeout)})];case 3:return[2,o.sent()]}})})},r.prototype.has=function(A){return typeof this._cache[A]<"u"},r.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},r.prototype.proxy=function(A){var e=this,t=this._options.proxy;if(!t)throw new Error("No proxy defined");var n=A.substring(0,256);return new Promise(function(s,i){var o=tA.SUPPORT_RESPONSE_TYPE?"blob":"text",a=new XMLHttpRequest;a.onload=function(){if(a.status===200)if(o==="text")s(a.response);else{var h=new FileReader;h.addEventListener("load",function(){return s(h.result)},!1),h.addEventListener("error",function(u){return i(u)},!1),h.readAsDataURL(a.response)}else i("Failed to proxy resource "+n+" with status code "+a.status)},a.onerror=i;var l=t.indexOf("?")>-1?"&":"?";if(a.open("GET",""+t+l+"url="+encodeURIComponent(A)+"&responseType="+o),o!=="text"&&a instanceof XMLHttpRequest&&(a.responseType=o),e._options.imageTimeout){var d=e._options.imageTimeout;a.timeout=d,a.ontimeout=function(){return i("Timed out ("+d+"ms) proxying "+n)}}a.send()})},r}(),hw=/^data:image\/svg\+xml/i,gw=/^data:image\/.*;base64,/i,Bw=/^data:image\/.*/i,fw=function(r){return tA.SUPPORT_SVG_DRAWING||!pw(r)},Zs=function(r){return Bw.test(r)},ww=function(r){return gw.test(r)},qs=function(r){return r.substr(0,4)==="blob"},pw=function(r){return r.substr(-3).toLowerCase()==="svg"||hw.test(r)},S=function(){function r(A,e){this.type=0,this.x=A,this.y=e}return r.prototype.add=function(A,e){return new r(this.x+A,this.y+e)},r}(),Ie=function(r,A,e){return new S(r.x+(A.x-r.x)*e,r.y+(A.y-r.y)*e)},gn=function(){function r(A,e,t,n){this.type=1,this.start=A,this.startControl=e,this.endControl=t,this.end=n}return r.prototype.subdivide=function(A,e){var t=Ie(this.start,this.startControl,A),n=Ie(this.startControl,this.endControl,A),s=Ie(this.endControl,this.end,A),i=Ie(t,n,A),o=Ie(n,s,A),a=Ie(i,o,A);return e?new r(this.start,t,i,a):new r(a,o,s,this.end)},r.prototype.add=function(A,e){return new r(this.start.add(A,e),this.startControl.add(A,e),this.endControl.add(A,e),this.end.add(A,e))},r.prototype.reverse=function(){return new r(this.end,this.endControl,this.startControl,this.start)},r}(),pA=function(r){return r.type===1},Cw=function(){function r(A){var e=A.styles,t=A.bounds,n=st(e.borderTopLeftRadius,t.width,t.height),s=n[0],i=n[1],o=st(e.borderTopRightRadius,t.width,t.height),a=o[0],l=o[1],d=st(e.borderBottomRightRadius,t.width,t.height),h=d[0],u=d[1],f=st(e.borderBottomLeftRadius,t.width,t.height),B=f[0],w=f[1],v=[];v.push((s+a)/t.width),v.push((B+h)/t.width),v.push((i+w)/t.height),v.push((l+u)/t.height);var m=Math.max.apply(Math,v);m>1&&(s/=m,i/=m,a/=m,l/=m,h/=m,u/=m,B/=m,w/=m);var F=t.width-a,E=t.height-u,H=t.width-h,y=t.height-w,U=e.borderTopWidth,D=e.borderRightWidth,R=e.borderBottomWidth,b=e.borderLeftWidth,W=N(e.paddingTop,A.bounds.width),iA=N(e.paddingRight,A.bounds.width),oA=N(e.paddingBottom,A.bounds.width),G=N(e.paddingLeft,A.bounds.width);this.topLeftBorderDoubleOuterBox=s>0||i>0?V(t.left+b/3,t.top+U/3,s-b/3,i-U/3,K.TOP_LEFT):new S(t.left+b/3,t.top+U/3),this.topRightBorderDoubleOuterBox=s>0||i>0?V(t.left+F,t.top+U/3,a-D/3,l-U/3,K.TOP_RIGHT):new S(t.left+t.width-D/3,t.top+U/3),this.bottomRightBorderDoubleOuterBox=h>0||u>0?V(t.left+H,t.top+E,h-D/3,u-R/3,K.BOTTOM_RIGHT):new S(t.left+t.width-D/3,t.top+t.height-R/3),this.bottomLeftBorderDoubleOuterBox=B>0||w>0?V(t.left+b/3,t.top+y,B-b/3,w-R/3,K.BOTTOM_LEFT):new S(t.left+b/3,t.top+t.height-R/3),this.topLeftBorderDoubleInnerBox=s>0||i>0?V(t.left+b*2/3,t.top+U*2/3,s-b*2/3,i-U*2/3,K.TOP_LEFT):new S(t.left+b*2/3,t.top+U*2/3),this.topRightBorderDoubleInnerBox=s>0||i>0?V(t.left+F,t.top+U*2/3,a-D*2/3,l-U*2/3,K.TOP_RIGHT):new S(t.left+t.width-D*2/3,t.top+U*2/3),this.bottomRightBorderDoubleInnerBox=h>0||u>0?V(t.left+H,t.top+E,h-D*2/3,u-R*2/3,K.BOTTOM_RIGHT):new S(t.left+t.width-D*2/3,t.top+t.height-R*2/3),this.bottomLeftBorderDoubleInnerBox=B>0||w>0?V(t.left+b*2/3,t.top+y,B-b*2/3,w-R*2/3,K.BOTTOM_LEFT):new S(t.left+b*2/3,t.top+t.height-R*2/3),this.topLeftBorderStroke=s>0||i>0?V(t.left+b/2,t.top+U/2,s-b/2,i-U/2,K.TOP_LEFT):new S(t.left+b/2,t.top+U/2),this.topRightBorderStroke=s>0||i>0?V(t.left+F,t.top+U/2,a-D/2,l-U/2,K.TOP_RIGHT):new S(t.left+t.width-D/2,t.top+U/2),this.bottomRightBorderStroke=h>0||u>0?V(t.left+H,t.top+E,h-D/2,u-R/2,K.BOTTOM_RIGHT):new S(t.left+t.width-D/2,t.top+t.height-R/2),this.bottomLeftBorderStroke=B>0||w>0?V(t.left+b/2,t.top+y,B-b/2,w-R/2,K.BOTTOM_LEFT):new S(t.left+b/2,t.top+t.height-R/2),this.topLeftBorderBox=s>0||i>0?V(t.left,t.top,s,i,K.TOP_LEFT):new S(t.left,t.top),this.topRightBorderBox=a>0||l>0?V(t.left+F,t.top,a,l,K.TOP_RIGHT):new S(t.left+t.width,t.top),this.bottomRightBorderBox=h>0||u>0?V(t.left+H,t.top+E,h,u,K.BOTTOM_RIGHT):new S(t.left+t.width,t.top+t.height),this.bottomLeftBorderBox=B>0||w>0?V(t.left,t.top+y,B,w,K.BOTTOM_LEFT):new S(t.left,t.top+t.height),this.topLeftPaddingBox=s>0||i>0?V(t.left+b,t.top+U,Math.max(0,s-b),Math.max(0,i-U),K.TOP_LEFT):new S(t.left+b,t.top+U),this.topRightPaddingBox=a>0||l>0?V(t.left+Math.min(F,t.width-D),t.top+U,F>t.width+D?0:Math.max(0,a-D),Math.max(0,l-U),K.TOP_RIGHT):new S(t.left+t.width-D,t.top+U),this.bottomRightPaddingBox=h>0||u>0?V(t.left+Math.min(H,t.width-b),t.top+Math.min(E,t.height-R),Math.max(0,h-D),Math.max(0,u-R),K.BOTTOM_RIGHT):new S(t.left+t.width-D,t.top+t.height-R),this.bottomLeftPaddingBox=B>0||w>0?V(t.left+b,t.top+Math.min(y,t.height-R),Math.max(0,B-b),Math.max(0,w-R),K.BOTTOM_LEFT):new S(t.left+b,t.top+t.height-R),this.topLeftContentBox=s>0||i>0?V(t.left+b+G,t.top+U+W,Math.max(0,s-(b+G)),Math.max(0,i-(U+W)),K.TOP_LEFT):new S(t.left+b+G,t.top+U+W),this.topRightContentBox=a>0||l>0?V(t.left+Math.min(F,t.width+b+G),t.top+U+W,F>t.width+b+G?0:a-b+G,l-(U+W),K.TOP_RIGHT):new S(t.left+t.width-(D+iA),t.top+U+W),this.bottomRightContentBox=h>0||u>0?V(t.left+Math.min(H,t.width-(b+G)),t.top+Math.min(E,t.height+U+W),Math.max(0,h-(D+iA)),u-(R+oA),K.BOTTOM_RIGHT):new S(t.left+t.width-(D+iA),t.top+t.height-(R+oA)),this.bottomLeftContentBox=B>0||w>0?V(t.left+b+G,t.top+y,Math.max(0,B-(b+G)),w-(R+oA),K.BOTTOM_LEFT):new S(t.left+b+G,t.top+t.height-(R+oA))}return r}(),K;(function(r){r[r.TOP_LEFT=0]="TOP_LEFT",r[r.TOP_RIGHT=1]="TOP_RIGHT",r[r.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",r[r.BOTTOM_LEFT=3]="BOTTOM_LEFT"})(K||(K={}));var V=function(r,A,e,t,n){var s=4*((Math.sqrt(2)-1)/3),i=e*s,o=t*s,a=r+e,l=A+t;switch(n){case K.TOP_LEFT:return new gn(new S(r,l),new S(r,l-o),new S(a-i,A),new S(a,A));case K.TOP_RIGHT:return new gn(new S(r,A),new S(r+i,A),new S(a,l-o),new S(a,l));case K.BOTTOM_RIGHT:return new gn(new S(a,A),new S(a,A+o),new S(r+i,l),new S(r,l));case K.BOTTOM_LEFT:default:return new gn(new S(a,l),new S(a-i,l),new S(r,A+o),new S(r,A))}},Bn=function(r){return[r.topLeftBorderBox,r.topRightBorderBox,r.bottomRightBorderBox,r.bottomLeftBorderBox]},vw=function(r){return[r.topLeftContentBox,r.topRightContentBox,r.bottomRightContentBox,r.bottomLeftContentBox]},fn=function(r){return[r.topLeftPaddingBox,r.topRightPaddingBox,r.bottomRightPaddingBox,r.bottomLeftPaddingBox]},mw=function(){function r(A,e,t){this.offsetX=A,this.offsetY=e,this.matrix=t,this.type=0,this.target=6}return r}(),wn=function(){function r(A,e){this.path=A,this.target=e,this.type=1}return r}(),Fw=function(){function r(A){this.opacity=A,this.type=2,this.target=6}return r}(),Qw=function(r){return r.type===0},Yc=function(r){return r.type===1},Uw=function(r){return r.type===2},$c=function(r,A){return r.length===A.length?r.some(function(e,t){return e===A[t]}):!1},Ew=function(r,A,e,t,n){return r.map(function(s,i){switch(i){case 0:return s.add(A,e);case 1:return s.add(A+t,e);case 2:return s.add(A+t,e+n);case 3:return s.add(A,e+n)}return s})},Zc=function(){function r(A){this.element=A,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]}return r}(),qc=function(){function r(A,e){if(this.container=A,this.parent=e,this.effects=[],this.curves=new Cw(this.container),this.container.styles.opacity<1&&this.effects.push(new Fw(this.container.styles.opacity)),this.container.styles.transform!==null){var t=this.container.bounds.left+this.container.styles.transformOrigin[0].number,n=this.container.bounds.top+this.container.styles.transformOrigin[1].number,s=this.container.styles.transform;this.effects.push(new mw(t,n,s))}if(this.container.styles.overflowX!==0){var i=Bn(this.curves),o=fn(this.curves);$c(i,o)?this.effects.push(new wn(i,6)):(this.effects.push(new wn(i,2)),this.effects.push(new wn(o,4)))}}return r.prototype.getEffects=function(A){for(var e=[2,3].indexOf(this.container.styles.position)===-1,t=this.parent,n=this.effects.slice(0);t;){var s=t.effects.filter(function(a){return!Yc(a)});if(e||t.container.styles.position!==0||!t.parent){if(n.unshift.apply(n,s),e=[2,3].indexOf(t.container.styles.position)===-1,t.container.styles.overflowX!==0){var i=Bn(t.curves),o=fn(t.curves);$c(i,o)||n.unshift(new wn(o,6))}}else n.unshift.apply(n,s);t=t.parent}return n.filter(function(a){return Z(a.target,A)})},r}(),js=function(r,A,e,t){r.container.elements.forEach(function(n){var s=Z(n.flags,4),i=Z(n.flags,2),o=new qc(n,r);Z(n.styles.display,2048)&&t.push(o);var a=Z(n.flags,8)?[]:t;if(s||i){var l=s||n.styles.isPositioned()?e:A,d=new Zc(o);if(n.styles.isPositioned()||n.styles.opacity<1||n.styles.isTransformed()){var h=n.styles.zIndex.order;if(h<0){var u=0;l.negativeZIndex.some(function(B,w){return h>B.element.container.styles.zIndex.order?(u=w,!1):u>0}),l.negativeZIndex.splice(u,0,d)}else if(h>0){var f=0;l.positiveZIndex.some(function(B,w){return h>=B.element.container.styles.zIndex.order?(f=w+1,!1):f>0}),l.positiveZIndex.splice(f,0,d)}else l.zeroOrAutoZIndexOrTransformedOrOpacity.push(d)}else n.styles.isFloating()?l.nonPositionedFloats.push(d):l.nonPositionedInlineLevel.push(d);js(o,d,s?d:e,a)}else n.styles.isInlineLevel()?A.inlineLevel.push(o):A.nonInlineLevel.push(o),js(o,A,e,a);Z(n.flags,8)&&jc(n,a)})},jc=function(r,A){for(var e=r instanceof _s?r.start:1,t=r instanceof _s?r.reversed:!1,n=0;n<A.length;n++){var s=A[n];s.container instanceof Uc&&typeof s.container.value=="number"&&s.container.value!==0&&(e=s.container.value),s.listValue=dt(e,s.container.styles.listStyleType,!0),e+=t?-1:1}},yw=function(r){var A=new qc(r,null),e=new Zc(A),t=[];return js(A,e,e,t),jc(A.container,t),e},Ad=function(r,A){switch(A){case 0:return CA(r.topLeftBorderBox,r.topLeftPaddingBox,r.topRightBorderBox,r.topRightPaddingBox);case 1:return CA(r.topRightBorderBox,r.topRightPaddingBox,r.bottomRightBorderBox,r.bottomRightPaddingBox);case 2:return CA(r.bottomRightBorderBox,r.bottomRightPaddingBox,r.bottomLeftBorderBox,r.bottomLeftPaddingBox);case 3:default:return CA(r.bottomLeftBorderBox,r.bottomLeftPaddingBox,r.topLeftBorderBox,r.topLeftPaddingBox)}},Sw=function(r,A){switch(A){case 0:return CA(r.topLeftBorderBox,r.topLeftBorderDoubleOuterBox,r.topRightBorderBox,r.topRightBorderDoubleOuterBox);case 1:return CA(r.topRightBorderBox,r.topRightBorderDoubleOuterBox,r.bottomRightBorderBox,r.bottomRightBorderDoubleOuterBox);case 2:return CA(r.bottomRightBorderBox,r.bottomRightBorderDoubleOuterBox,r.bottomLeftBorderBox,r.bottomLeftBorderDoubleOuterBox);case 3:default:return CA(r.bottomLeftBorderBox,r.bottomLeftBorderDoubleOuterBox,r.topLeftBorderBox,r.topLeftBorderDoubleOuterBox)}},Iw=function(r,A){switch(A){case 0:return CA(r.topLeftBorderDoubleInnerBox,r.topLeftPaddingBox,r.topRightBorderDoubleInnerBox,r.topRightPaddingBox);case 1:return CA(r.topRightBorderDoubleInnerBox,r.topRightPaddingBox,r.bottomRightBorderDoubleInnerBox,r.bottomRightPaddingBox);case 2:return CA(r.bottomRightBorderDoubleInnerBox,r.bottomRightPaddingBox,r.bottomLeftBorderDoubleInnerBox,r.bottomLeftPaddingBox);case 3:default:return CA(r.bottomLeftBorderDoubleInnerBox,r.bottomLeftPaddingBox,r.topLeftBorderDoubleInnerBox,r.topLeftPaddingBox)}},Tw=function(r,A){switch(A){case 0:return pn(r.topLeftBorderStroke,r.topRightBorderStroke);case 1:return pn(r.topRightBorderStroke,r.bottomRightBorderStroke);case 2:return pn(r.bottomRightBorderStroke,r.bottomLeftBorderStroke);case 3:default:return pn(r.bottomLeftBorderStroke,r.topLeftBorderStroke)}},pn=function(r,A){var e=[];return pA(r)?e.push(r.subdivide(.5,!1)):e.push(r),pA(A)?e.push(A.subdivide(.5,!0)):e.push(A),e},CA=function(r,A,e,t){var n=[];return pA(r)?n.push(r.subdivide(.5,!1)):n.push(r),pA(e)?n.push(e.subdivide(.5,!0)):n.push(e),pA(t)?n.push(t.subdivide(.5,!0).reverse()):n.push(t),pA(A)?n.push(A.subdivide(.5,!1).reverse()):n.push(A),n},ed=function(r){var A=r.bounds,e=r.styles;return A.add(e.borderLeftWidth,e.borderTopWidth,-(e.borderRightWidth+e.borderLeftWidth),-(e.borderTopWidth+e.borderBottomWidth))},Cn=function(r){var A=r.styles,e=r.bounds,t=N(A.paddingLeft,e.width),n=N(A.paddingRight,e.width),s=N(A.paddingTop,e.width),i=N(A.paddingBottom,e.width);return e.add(t+A.borderLeftWidth,s+A.borderTopWidth,-(A.borderRightWidth+A.borderLeftWidth+t+n),-(A.borderTopWidth+A.borderBottomWidth+s+i))},Hw=function(r,A){return r===0?A.bounds:r===2?Cn(A):ed(A)},Lw=function(r,A){return r===0?A.bounds:r===2?Cn(A):ed(A)},Ai=function(r,A,e){var t=Hw(He(r.styles.backgroundOrigin,A),r),n=Lw(He(r.styles.backgroundClip,A),r),s=bw(He(r.styles.backgroundSize,A),e,t),i=s[0],o=s[1],a=st(He(r.styles.backgroundPosition,A),t.width-i,t.height-o),l=Mw(He(r.styles.backgroundRepeat,A),a,s,t,n),d=Math.round(t.left+a[0]),h=Math.round(t.top+a[1]);return[l,d,h,i,o]},Te=function(r){return k(r)&&r.value===Ue.AUTO},vn=function(r){return typeof r=="number"},bw=function(r,A,e){var t=A[0],n=A[1],s=A[2],i=r[0],o=r[1];if(!i)return[0,0];if(Y(i)&&o&&Y(o))return[N(i,e.width),N(o,e.height)];var a=vn(s);if(k(i)&&(i.value===Ue.CONTAIN||i.value===Ue.COVER)){if(vn(s)){var l=e.width/e.height;return l<s!=(i.value===Ue.COVER)?[e.width,e.width/s]:[e.height*s,e.height]}return[e.width,e.height]}var d=vn(t),h=vn(n),u=d||h;if(Te(i)&&(!o||Te(o))){if(d&&h)return[t,n];if(!a&&!u)return[e.width,e.height];if(u&&a){var f=d?t:n*s,B=h?n:t/s;return[f,B]}var w=d?t:e.width,v=h?n:e.height;return[w,v]}if(a){var m=0,F=0;return Y(i)?m=N(i,e.width):Y(o)&&(F=N(o,e.height)),Te(i)?m=F*s:(!o||Te(o))&&(F=m/s),[m,F]}var E=null,H=null;if(Y(i)?E=N(i,e.width):o&&Y(o)&&(H=N(o,e.height)),E!==null&&(!o||Te(o))&&(H=d&&h?E/t*n:e.height),H!==null&&Te(i)&&(E=d&&h?H/n*t:e.width),E!==null&&H!==null)return[E,H];throw new Error("Unable to calculate background-size for element")},He=function(r,A){var e=r[A];return typeof e>"u"?r[0]:e},Mw=function(r,A,e,t,n){var s=A[0],i=A[1],o=e[0],a=e[1];switch(r){case 2:return[new S(Math.round(t.left),Math.round(t.top+i)),new S(Math.round(t.left+t.width),Math.round(t.top+i)),new S(Math.round(t.left+t.width),Math.round(a+t.top+i)),new S(Math.round(t.left),Math.round(a+t.top+i))];case 3:return[new S(Math.round(t.left+s),Math.round(t.top)),new S(Math.round(t.left+s+o),Math.round(t.top)),new S(Math.round(t.left+s+o),Math.round(t.height+t.top)),new S(Math.round(t.left+s),Math.round(t.height+t.top))];case 1:return[new S(Math.round(t.left+s),Math.round(t.top+i)),new S(Math.round(t.left+s+o),Math.round(t.top+i)),new S(Math.round(t.left+s+o),Math.round(t.top+i+a)),new S(Math.round(t.left+s),Math.round(t.top+i+a))];default:return[new S(Math.round(n.left),Math.round(n.top)),new S(Math.round(n.left+n.width),Math.round(n.top)),new S(Math.round(n.left+n.width),Math.round(n.height+n.top)),new S(Math.round(n.left),Math.round(n.height+n.top))]}},Dw="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",td="Hidden Text",Rw=function(){function r(A){this._data={},this._document=A}return r.prototype.parseMetrics=function(A,e){var t=this._document.createElement("div"),n=this._document.createElement("img"),s=this._document.createElement("span"),i=this._document.body;t.style.visibility="hidden",t.style.fontFamily=A,t.style.fontSize=e,t.style.margin="0",t.style.padding="0",t.style.whiteSpace="nowrap",i.appendChild(t),n.src=Dw,n.width=1,n.height=1,n.style.margin="0",n.style.padding="0",n.style.verticalAlign="baseline",s.style.fontFamily=A,s.style.fontSize=e,s.style.margin="0",s.style.padding="0",s.appendChild(this._document.createTextNode(td)),t.appendChild(s),t.appendChild(n);var o=n.offsetTop-s.offsetTop+2;t.removeChild(s),t.appendChild(this._document.createTextNode(td)),t.style.lineHeight="normal",n.style.verticalAlign="super";var a=n.offsetTop-t.offsetTop+2;return i.removeChild(t),{baseline:o,middle:a}},r.prototype.getMetrics=function(A,e){var t=A+" "+e;return typeof this._data[t]>"u"&&(this._data[t]=this.parseMetrics(A,e)),this._data[t]},r}(),rd=function(){function r(A,e){this.context=A,this.options=e}return r}(),xw=1e4,Pw=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n._activeEffects=[],n.canvas=t.canvas?t.canvas:document.createElement("canvas"),n.ctx=n.canvas.getContext("2d"),t.canvas||(n.canvas.width=Math.floor(t.width*t.scale),n.canvas.height=Math.floor(t.height*t.scale),n.canvas.style.width=t.width+"px",n.canvas.style.height=t.height+"px"),n.fontMetrics=new Rw(document),n.ctx.scale(n.options.scale,n.options.scale),n.ctx.translate(-t.x,-t.y),n.ctx.textBaseline="bottom",n._activeEffects=[],n.context.logger.debug("Canvas renderer initialized ("+t.width+"x"+t.height+") with scale "+t.scale),n}return A.prototype.applyEffects=function(e){for(var t=this;this._activeEffects.length;)this.popEffect();e.forEach(function(n){return t.applyEffect(n)})},A.prototype.applyEffect=function(e){this.ctx.save(),Uw(e)&&(this.ctx.globalAlpha=e.opacity),Qw(e)&&(this.ctx.translate(e.offsetX,e.offsetY),this.ctx.transform(e.matrix[0],e.matrix[1],e.matrix[2],e.matrix[3],e.matrix[4],e.matrix[5]),this.ctx.translate(-e.offsetX,-e.offsetY)),Yc(e)&&(this.path(e.path),this.ctx.clip()),this._activeEffects.push(e)},A.prototype.popEffect=function(){this._activeEffects.pop(),this.ctx.restore()},A.prototype.renderStack=function(e){return hA(this,void 0,void 0,function(){var t;return nA(this,function(n){switch(n.label){case 0:return t=e.element.container.styles,t.isVisible()?[4,this.renderStackContent(e)]:[3,2];case 1:n.sent(),n.label=2;case 2:return[2]}})})},A.prototype.renderNode=function(e){return hA(this,void 0,void 0,function(){return nA(this,function(t){switch(t.label){case 0:if(Z(e.container.flags,16))debugger;return e.container.styles.isVisible()?[4,this.renderNodeBackgroundAndBorders(e)]:[3,3];case 1:return t.sent(),[4,this.renderNodeContent(e)];case 2:t.sent(),t.label=3;case 3:return[2]}})})},A.prototype.renderTextWithLetterSpacing=function(e,t,n){var s=this;if(t===0)this.ctx.fillText(e.text,e.bounds.left,e.bounds.top+n);else{var i=Ns(e.text);i.reduce(function(o,a){return s.ctx.fillText(a,o,e.bounds.top+n),o+s.ctx.measureText(a).width},e.bounds.left)}},A.prototype.createFontStyle=function(e){var t=e.fontVariant.filter(function(i){return i==="normal"||i==="small-caps"}).join(""),n=_w(e.fontFamily).join(", "),s=nt(e.fontSize)?""+e.fontSize.number+e.fontSize.unit:e.fontSize.number+"px";return[[e.fontStyle,t,e.fontWeight,s,n].join(" "),n,s]},A.prototype.renderTextNode=function(e,t){return hA(this,void 0,void 0,function(){var n,s,i,o,a,l,d,h,u=this;return nA(this,function(f){return n=this.createFontStyle(t),s=n[0],i=n[1],o=n[2],this.ctx.font=s,this.ctx.direction=t.direction===1?"rtl":"ltr",this.ctx.textAlign="left",this.ctx.textBaseline="alphabetic",a=this.fontMetrics.getMetrics(i,o),l=a.baseline,d=a.middle,h=t.paintOrder,e.textBounds.forEach(function(B){h.forEach(function(w){switch(w){case 0:u.ctx.fillStyle=q(t.color),u.renderTextWithLetterSpacing(B,t.letterSpacing,l);var v=t.textShadow;v.length&&B.text.trim().length&&(v.slice(0).reverse().forEach(function(m){u.ctx.shadowColor=q(m.color),u.ctx.shadowOffsetX=m.offsetX.number*u.options.scale,u.ctx.shadowOffsetY=m.offsetY.number*u.options.scale,u.ctx.shadowBlur=m.blur.number,u.renderTextWithLetterSpacing(B,t.letterSpacing,l)}),u.ctx.shadowColor="",u.ctx.shadowOffsetX=0,u.ctx.shadowOffsetY=0,u.ctx.shadowBlur=0),t.textDecorationLine.length&&(u.ctx.fillStyle=q(t.textDecorationColor||t.color),t.textDecorationLine.forEach(function(m){switch(m){case 1:u.ctx.fillRect(B.bounds.left,Math.round(B.bounds.top+l),B.bounds.width,1);break;case 2:u.ctx.fillRect(B.bounds.left,Math.round(B.bounds.top),B.bounds.width,1);break;case 3:u.ctx.fillRect(B.bounds.left,Math.ceil(B.bounds.top+d),B.bounds.width,1);break}}));break;case 1:t.webkitTextStrokeWidth&&B.text.trim().length&&(u.ctx.strokeStyle=q(t.webkitTextStrokeColor),u.ctx.lineWidth=t.webkitTextStrokeWidth,u.ctx.lineJoin=window.chrome?"miter":"round",u.ctx.strokeText(B.text,B.bounds.left,B.bounds.top+l)),u.ctx.strokeStyle="",u.ctx.lineWidth=0,u.ctx.lineJoin="miter";break}})}),[2]})})},A.prototype.renderReplacedElement=function(e,t,n){if(n&&e.intrinsicWidth>0&&e.intrinsicHeight>0){var s=Cn(e),i=fn(t);this.path(i),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(n,0,0,e.intrinsicWidth,e.intrinsicHeight,s.left,s.top,s.width,s.height),this.ctx.restore()}},A.prototype.renderNodeContent=function(e){return hA(this,void 0,void 0,function(){var t,n,s,i,o,a,F,F,l,d,h,u,H,f,B,y,w,v,m,F,E,H,y;return nA(this,function(U){switch(U.label){case 0:this.applyEffects(e.getEffects(4)),t=e.container,n=e.curves,s=t.styles,i=0,o=t.textNodes,U.label=1;case 1:return i<o.length?(a=o[i],[4,this.renderTextNode(a,s)]):[3,4];case 2:U.sent(),U.label=3;case 3:return i++,[3,1];case 4:if(!(t instanceof mc))return[3,8];U.label=5;case 5:return U.trys.push([5,7,,8]),[4,this.context.cache.match(t.src)];case 6:return F=U.sent(),this.renderReplacedElement(t,n,F),[3,8];case 7:return U.sent(),this.context.logger.error("Error loading image "+t.src),[3,8];case 8:if(t instanceof Fc&&this.renderReplacedElement(t,n,t.canvas),!(t instanceof Qc))return[3,12];U.label=9;case 9:return U.trys.push([9,11,,12]),[4,this.context.cache.match(t.svg)];case 10:return F=U.sent(),this.renderReplacedElement(t,n,F),[3,12];case 11:return U.sent(),this.context.logger.error("Error loading svg "+t.svg.substring(0,255)),[3,12];case 12:return t instanceof Ic&&t.tree?(l=new A(this.context,{scale:this.options.scale,backgroundColor:t.backgroundColor,x:0,y:0,width:t.width,height:t.height}),[4,l.render(t.tree)]):[3,14];case 13:d=U.sent(),t.width&&t.height&&this.ctx.drawImage(d,0,0,t.width,t.height,t.bounds.left,t.bounds.top,t.bounds.width,t.bounds.height),U.label=14;case 14:if(t instanceof Vs&&(h=Math.min(t.bounds.width,t.bounds.height),t.type===an?t.checked&&(this.ctx.save(),this.path([new S(t.bounds.left+h*.39363,t.bounds.top+h*.79),new S(t.bounds.left+h*.16,t.bounds.top+h*.5549),new S(t.bounds.left+h*.27347,t.bounds.top+h*.44071),new S(t.bounds.left+h*.39694,t.bounds.top+h*.5649),new S(t.bounds.left+h*.72983,t.bounds.top+h*.23),new S(t.bounds.left+h*.84,t.bounds.top+h*.34085),new S(t.bounds.left+h*.39363,t.bounds.top+h*.79)]),this.ctx.fillStyle=q(Ec),this.ctx.fill(),this.ctx.restore()):t.type===ln&&t.checked&&(this.ctx.save(),this.ctx.beginPath(),this.ctx.arc(t.bounds.left+h/2,t.bounds.top+h/2,h/4,0,Math.PI*2,!0),this.ctx.fillStyle=q(Ec),this.ctx.fill(),this.ctx.restore())),Kw(t)&&t.value.length){switch(u=this.createFontStyle(s),H=u[0],f=u[1],B=this.fontMetrics.getMetrics(H,f).baseline,this.ctx.font=H,this.ctx.fillStyle=q(s.color),this.ctx.textBaseline="alphabetic",this.ctx.textAlign=kw(t.styles.textAlign),y=Cn(t),w=0,t.styles.textAlign){case 1:w+=y.width/2;break;case 2:w+=y.width;break}v=y.add(w,0,0,-y.height/2+1),this.ctx.save(),this.path([new S(y.left,y.top),new S(y.left+y.width,y.top),new S(y.left+y.width,y.top+y.height),new S(y.left,y.top+y.height)]),this.ctx.clip(),this.renderTextWithLetterSpacing(new lt(t.value,v),s.letterSpacing,B),this.ctx.restore(),this.ctx.textBaseline="alphabetic",this.ctx.textAlign="left"}if(!Z(t.styles.display,2048))return[3,20];if(t.styles.listStyleImage===null)return[3,19];if(m=t.styles.listStyleImage,m.type!==0)return[3,18];F=void 0,E=m.url,U.label=15;case 15:return U.trys.push([15,17,,18]),[4,this.context.cache.match(E)];case 16:return F=U.sent(),this.ctx.drawImage(F,t.bounds.left-(F.width+10),t.bounds.top),[3,18];case 17:return U.sent(),this.context.logger.error("Error loading list-style-image "+E),[3,18];case 18:return[3,20];case 19:e.listValue&&t.styles.listStyleType!==-1&&(H=this.createFontStyle(s)[0],this.ctx.font=H,this.ctx.fillStyle=q(s.color),this.ctx.textBaseline="middle",this.ctx.textAlign="right",y=new bA(t.bounds.left,t.bounds.top+N(t.styles.paddingTop,t.bounds.width),t.bounds.width,tc(s.lineHeight,s.fontSize.number)/2+1),this.renderTextWithLetterSpacing(new lt(e.listValue,y),s.letterSpacing,tc(s.lineHeight,s.fontSize.number)/2+2),this.ctx.textBaseline="bottom",this.ctx.textAlign="left"),U.label=20;case 20:return[2]}})})},A.prototype.renderStackContent=function(e){return hA(this,void 0,void 0,function(){var t,n,m,s,i,m,o,a,m,l,d,m,h,u,m,f,B,m,w,v,m;return nA(this,function(F){switch(F.label){case 0:if(Z(e.element.container.flags,16))debugger;return[4,this.renderNodeBackgroundAndBorders(e.element)];case 1:F.sent(),t=0,n=e.negativeZIndex,F.label=2;case 2:return t<n.length?(m=n[t],[4,this.renderStack(m)]):[3,5];case 3:F.sent(),F.label=4;case 4:return t++,[3,2];case 5:return[4,this.renderNodeContent(e.element)];case 6:F.sent(),s=0,i=e.nonInlineLevel,F.label=7;case 7:return s<i.length?(m=i[s],[4,this.renderNode(m)]):[3,10];case 8:F.sent(),F.label=9;case 9:return s++,[3,7];case 10:o=0,a=e.nonPositionedFloats,F.label=11;case 11:return o<a.length?(m=a[o],[4,this.renderStack(m)]):[3,14];case 12:F.sent(),F.label=13;case 13:return o++,[3,11];case 14:l=0,d=e.nonPositionedInlineLevel,F.label=15;case 15:return l<d.length?(m=d[l],[4,this.renderStack(m)]):[3,18];case 16:F.sent(),F.label=17;case 17:return l++,[3,15];case 18:h=0,u=e.inlineLevel,F.label=19;case 19:return h<u.length?(m=u[h],[4,this.renderNode(m)]):[3,22];case 20:F.sent(),F.label=21;case 21:return h++,[3,19];case 22:f=0,B=e.zeroOrAutoZIndexOrTransformedOrOpacity,F.label=23;case 23:return f<B.length?(m=B[f],[4,this.renderStack(m)]):[3,26];case 24:F.sent(),F.label=25;case 25:return f++,[3,23];case 26:w=0,v=e.positiveZIndex,F.label=27;case 27:return w<v.length?(m=v[w],[4,this.renderStack(m)]):[3,30];case 28:F.sent(),F.label=29;case 29:return w++,[3,27];case 30:return[2]}})})},A.prototype.mask=function(e){this.ctx.beginPath(),this.ctx.moveTo(0,0),this.ctx.lineTo(this.canvas.width,0),this.ctx.lineTo(this.canvas.width,this.canvas.height),this.ctx.lineTo(0,this.canvas.height),this.ctx.lineTo(0,0),this.formatPath(e.slice(0).reverse()),this.ctx.closePath()},A.prototype.path=function(e){this.ctx.beginPath(),this.formatPath(e),this.ctx.closePath()},A.prototype.formatPath=function(e){var t=this;e.forEach(function(n,s){var i=pA(n)?n.start:n;s===0?t.ctx.moveTo(i.x,i.y):t.ctx.lineTo(i.x,i.y),pA(n)&&t.ctx.bezierCurveTo(n.startControl.x,n.startControl.y,n.endControl.x,n.endControl.y,n.end.x,n.end.y)})},A.prototype.renderRepeat=function(e,t,n,s){this.path(e),this.ctx.fillStyle=t,this.ctx.translate(n,s),this.ctx.fill(),this.ctx.translate(-n,-s)},A.prototype.resizeImage=function(e,t,n){var s;if(e.width===t&&e.height===n)return e;var i=(s=this.canvas.ownerDocument)!==null&&s!==void 0?s:document,o=i.createElement("canvas");o.width=Math.max(1,t),o.height=Math.max(1,n);var a=o.getContext("2d");return a.drawImage(e,0,0,e.width,e.height,0,0,t,n),o},A.prototype.renderBackgroundImage=function(e){return hA(this,void 0,void 0,function(){var t,n,s,i,o,a;return nA(this,function(l){switch(l.label){case 0:t=e.styles.backgroundImage.length-1,n=function(d){var h,u,f,W,aA,lA,G,O,R,B,W,aA,lA,G,O,w,v,m,F,E,H,y,U,D,R,b,W,iA,oA,G,O,SA,aA,lA,xA,IA,YA,ue,he,PA,ge,KA;return nA(this,function(Pe){switch(Pe.label){case 0:if(d.type!==0)return[3,5];h=void 0,u=d.url,Pe.label=1;case 1:return Pe.trys.push([1,3,,4]),[4,s.context.cache.match(u)];case 2:return h=Pe.sent(),[3,4];case 3:return Pe.sent(),s.context.logger.error("Error loading background-image "+u),[3,4];case 4:return h&&(f=Ai(e,t,[h.width,h.height,h.width/h.height]),W=f[0],aA=f[1],lA=f[2],G=f[3],O=f[4],R=s.ctx.createPattern(s.resizeImage(h,G,O),"repeat"),s.renderRepeat(W,R,aA,lA)),[3,6];case 5:Fg(d)?(B=Ai(e,t,[null,null,null]),W=B[0],aA=B[1],lA=B[2],G=B[3],O=B[4],w=wg(d.angle,G,O),v=w[0],m=w[1],F=w[2],E=w[3],H=w[4],y=document.createElement("canvas"),y.width=G,y.height=O,U=y.getContext("2d"),D=U.createLinearGradient(m,E,F,H),Wl(d.stops,v).forEach(function(Cr){return D.addColorStop(Cr.stop,q(Cr.color))}),U.fillStyle=D,U.fillRect(0,0,G,O),G>0&&O>0&&(R=s.ctx.createPattern(y,"repeat"),s.renderRepeat(W,R,aA,lA))):Qg(d)&&(b=Ai(e,t,[null,null,null]),W=b[0],iA=b[1],oA=b[2],G=b[3],O=b[4],SA=d.position.length===0?[ys]:d.position,aA=N(SA[0],G),lA=N(SA[SA.length-1],O),xA=pg(d,aA,lA,G,O),IA=xA[0],YA=xA[1],IA>0&&YA>0&&(ue=s.ctx.createRadialGradient(iA+aA,oA+lA,0,iA+aA,oA+lA,IA),Wl(d.stops,IA*2).forEach(function(Cr){return ue.addColorStop(Cr.stop,q(Cr.color))}),s.path(W),s.ctx.fillStyle=ue,IA!==YA?(he=e.bounds.left+.5*e.bounds.width,PA=e.bounds.top+.5*e.bounds.height,ge=YA/IA,KA=1/ge,s.ctx.save(),s.ctx.translate(he,PA),s.ctx.transform(1,0,0,ge,0,0),s.ctx.translate(-he,-PA),s.ctx.fillRect(iA,KA*(oA-PA)+PA,G,O*KA),s.ctx.restore()):s.ctx.fill())),Pe.label=6;case 6:return t--,[2]}})},s=this,i=0,o=e.styles.backgroundImage.slice(0).reverse(),l.label=1;case 1:return i<o.length?(a=o[i],[5,n(a)]):[3,4];case 2:l.sent(),l.label=3;case 3:return i++,[3,1];case 4:return[2]}})})},A.prototype.renderSolidBorder=function(e,t,n){return hA(this,void 0,void 0,function(){return nA(this,function(s){return this.path(Ad(n,t)),this.ctx.fillStyle=q(e),this.ctx.fill(),[2]})})},A.prototype.renderDoubleBorder=function(e,t,n,s){return hA(this,void 0,void 0,function(){var i,o;return nA(this,function(a){switch(a.label){case 0:return t<3?[4,this.renderSolidBorder(e,n,s)]:[3,2];case 1:return a.sent(),[2];case 2:return i=Sw(s,n),this.path(i),this.ctx.fillStyle=q(e),this.ctx.fill(),o=Iw(s,n),this.path(o),this.ctx.fill(),[2]}})})},A.prototype.renderNodeBackgroundAndBorders=function(e){return hA(this,void 0,void 0,function(){var t,n,s,i,o,a,l,d,h=this;return nA(this,function(u){switch(u.label){case 0:return this.applyEffects(e.getEffects(2)),t=e.container.styles,n=!WA(t.backgroundColor)||t.backgroundImage.length,s=[{style:t.borderTopStyle,color:t.borderTopColor,width:t.borderTopWidth},{style:t.borderRightStyle,color:t.borderRightColor,width:t.borderRightWidth},{style:t.borderBottomStyle,color:t.borderBottomColor,width:t.borderBottomWidth},{style:t.borderLeftStyle,color:t.borderLeftColor,width:t.borderLeftWidth}],i=Gw(He(t.backgroundClip,0),e.curves),n||t.boxShadow.length?(this.ctx.save(),this.path(i),this.ctx.clip(),WA(t.backgroundColor)||(this.ctx.fillStyle=q(t.backgroundColor),this.ctx.fill()),[4,this.renderBackgroundImage(e.container)]):[3,2];case 1:u.sent(),this.ctx.restore(),t.boxShadow.slice(0).reverse().forEach(function(f){h.ctx.save();var B=Bn(e.curves),w=f.inset?0:xw,v=Ew(B,-w+(f.inset?1:-1)*f.spread.number,(f.inset?1:-1)*f.spread.number,f.spread.number*(f.inset?-2:2),f.spread.number*(f.inset?-2:2));f.inset?(h.path(B),h.ctx.clip(),h.mask(v)):(h.mask(B),h.ctx.clip(),h.path(v)),h.ctx.shadowOffsetX=f.offsetX.number+w,h.ctx.shadowOffsetY=f.offsetY.number,h.ctx.shadowColor=q(f.color),h.ctx.shadowBlur=f.blur.number,h.ctx.fillStyle=f.inset?q(f.color):"rgba(0,0,0,1)",h.ctx.fill(),h.ctx.restore()}),u.label=2;case 2:o=0,a=0,l=s,u.label=3;case 3:return a<l.length?(d=l[a],d.style!==0&&!WA(d.color)&&d.width>0?d.style!==2?[3,5]:[4,this.renderDashedDottedBorder(d.color,d.width,o,e.curves,2)]:[3,11]):[3,13];case 4:return u.sent(),[3,11];case 5:return d.style!==3?[3,7]:[4,this.renderDashedDottedBorder(d.color,d.width,o,e.curves,3)];case 6:return u.sent(),[3,11];case 7:return d.style!==4?[3,9]:[4,this.renderDoubleBorder(d.color,d.width,o,e.curves)];case 8:return u.sent(),[3,11];case 9:return[4,this.renderSolidBorder(d.color,o,e.curves)];case 10:u.sent(),u.label=11;case 11:o++,u.label=12;case 12:return a++,[3,3];case 13:return[2]}})})},A.prototype.renderDashedDottedBorder=function(e,t,n,s,i){return hA(this,void 0,void 0,function(){var o,a,l,d,h,u,f,B,w,v,m,F,E,H,y,U,y,U;return nA(this,function(D){return this.ctx.save(),o=Tw(s,n),a=Ad(s,n),i===2&&(this.path(a),this.ctx.clip()),pA(a[0])?(l=a[0].start.x,d=a[0].start.y):(l=a[0].x,d=a[0].y),pA(a[1])?(h=a[1].end.x,u=a[1].end.y):(h=a[1].x,u=a[1].y),n===0||n===2?f=Math.abs(l-h):f=Math.abs(d-u),this.ctx.beginPath(),i===3?this.formatPath(o):this.formatPath(a.slice(0,2)),B=t<3?t*3:t*2,w=t<3?t*2:t,i===3&&(B=t,w=t),v=!0,f<=B*2?v=!1:f<=B*2+w?(m=f/(2*B+w),B*=m,w*=m):(F=Math.floor((f+w)/(B+w)),E=(f-F*B)/(F-1),H=(f-(F+1)*B)/F,w=H<=0||Math.abs(w-E)<Math.abs(w-H)?E:H),v&&(i===3?this.ctx.setLineDash([0,B+w]):this.ctx.setLineDash([B,w])),i===3?(this.ctx.lineCap="round",this.ctx.lineWidth=t):this.ctx.lineWidth=t*2+1.1,this.ctx.strokeStyle=q(e),this.ctx.stroke(),this.ctx.setLineDash([]),i===2&&(pA(a[0])&&(y=a[3],U=a[0],this.ctx.beginPath(),this.formatPath([new S(y.end.x,y.end.y),new S(U.start.x,U.start.y)]),this.ctx.stroke()),pA(a[1])&&(y=a[1],U=a[2],this.ctx.beginPath(),this.formatPath([new S(y.end.x,y.end.y),new S(U.start.x,U.start.y)]),this.ctx.stroke())),this.ctx.restore(),[2]})})},A.prototype.render=function(e){return hA(this,void 0,void 0,function(){var t;return nA(this,function(n){switch(n.label){case 0:return this.options.backgroundColor&&(this.ctx.fillStyle=q(this.options.backgroundColor),this.ctx.fillRect(this.options.x,this.options.y,this.options.width,this.options.height)),t=yw(e),[4,this.renderStack(t)];case 1:return n.sent(),this.applyEffects([]),[2,this.canvas]}})})},A}(rd),Kw=function(r){return r instanceof Sc||r instanceof yc?!0:r instanceof Vs&&r.type!==ln&&r.type!==an},Gw=function(r,A){switch(r){case 0:return Bn(A);case 2:return vw(A);case 1:default:return fn(A)}},kw=function(r){switch(r){case 1:return"center";case 2:return"right";case 0:default:return"left"}},Nw=["-apple-system","system-ui"],_w=function(r){return/iPhone OS 15_(0|1)/.test(window.navigator.userAgent)?r.filter(function(A){return Nw.indexOf(A)===-1}):r},Vw=function(r){mA(A,r);function A(e,t){var n=r.call(this,e,t)||this;return n.canvas=t.canvas?t.canvas:document.createElement("canvas"),n.ctx=n.canvas.getContext("2d"),n.options=t,n.canvas.width=Math.floor(t.width*t.scale),n.canvas.height=Math.floor(t.height*t.scale),n.canvas.style.width=t.width+"px",n.canvas.style.height=t.height+"px",n.ctx.scale(n.options.scale,n.options.scale),n.ctx.translate(-t.x,-t.y),n.context.logger.debug("EXPERIMENTAL ForeignObject renderer initialized ("+t.width+"x"+t.height+" at "+t.x+","+t.y+") with scale "+t.scale),n}return A.prototype.render=function(e){return hA(this,void 0,void 0,function(){var t,n;return nA(this,function(s){switch(s.label){case 0:return t=ks(this.options.width*this.options.scale,this.options.height*this.options.scale,this.options.scale,this.options.scale,e),[4,Ow(t)];case 1:return n=s.sent(),this.options.backgroundColor&&(this.ctx.fillStyle=q(this.options.backgroundColor),this.ctx.fillRect(0,0,this.options.width*this.options.scale,this.options.height*this.options.scale)),this.ctx.drawImage(n,-this.options.x*this.options.scale,-this.options.y*this.options.scale),[2,this.canvas]}})})},A}(rd),Ow=function(r){return new Promise(function(A,e){var t=new Image;t.onload=function(){A(t)},t.onerror=e,t.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(r))})},Ww=function(){function r(A){var e=A.id,t=A.enabled;this.id=e,this.enabled=t,this.start=Date.now()}return r.prototype.debug=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&(typeof window<"u"&&window.console&&typeof console.debug=="function"?console.debug.apply(console,Sr([this.id,this.getTime()+"ms"],A)):this.info.apply(this,A))},r.prototype.getTime=function(){return Date.now()-this.start},r.prototype.info=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&typeof window<"u"&&window.console&&typeof console.info=="function"&&console.info.apply(console,Sr([this.id,this.getTime()+"ms"],A))},r.prototype.warn=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&(typeof window<"u"&&window.console&&typeof console.warn=="function"?console.warn.apply(console,Sr([this.id,this.getTime()+"ms"],A)):this.info.apply(this,A))},r.prototype.error=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&(typeof window<"u"&&window.console&&typeof console.error=="function"?console.error.apply(console,Sr([this.id,this.getTime()+"ms"],A)):this.info.apply(this,A))},r.instances={},r}(),Xw=function(){function r(A,e){var t;this.windowBounds=e,this.instanceName="#"+r.instanceCount++,this.logger=new Ww({id:this.instanceName,enabled:A.logging}),this.cache=(t=A.cache)!==null&&t!==void 0?t:new uw(this,A)}return r.instanceCount=1,r}(),Jw=function(r,A){return A===void 0&&(A={}),zw(r,A)};typeof window<"u"&&zc.setContext(window);var zw=function(r,A){return hA(void 0,void 0,void 0,function(){var e,t,n,s,i,o,a,l,d,h,u,f,B,w,v,m,F,E,H,y,D,U,D,R,b,W,iA,oA,G,O,SA,aA,lA,xA,IA,YA,ue,he,PA,ge;return nA(this,function(KA){switch(KA.label){case 0:if(!r||typeof r!="object")return[2,Promise.reject("Invalid element provided as first argument")];if(e=r.ownerDocument,!e)throw new Error("Element is not attached to a Document");if(t=e.defaultView,!t)throw new Error("Document is not attached to a Window");return n={allowTaint:(R=A.allowTaint)!==null&&R!==void 0?R:!1,imageTimeout:(b=A.imageTimeout)!==null&&b!==void 0?b:15e3,proxy:A.proxy,useCORS:(W=A.useCORS)!==null&&W!==void 0?W:!1},s=ss({logging:(iA=A.logging)!==null&&iA!==void 0?iA:!0,cache:A.cache},n),i={windowWidth:(oA=A.windowWidth)!==null&&oA!==void 0?oA:t.innerWidth,windowHeight:(G=A.windowHeight)!==null&&G!==void 0?G:t.innerHeight,scrollX:(O=A.scrollX)!==null&&O!==void 0?O:t.pageXOffset,scrollY:(SA=A.scrollY)!==null&&SA!==void 0?SA:t.pageYOffset},o=new bA(i.scrollX,i.scrollY,i.windowWidth,i.windowHeight),a=new Xw(s,o),l=(aA=A.foreignObjectRendering)!==null&&aA!==void 0?aA:!1,d={allowTaint:(lA=A.allowTaint)!==null&&lA!==void 0?lA:!1,onclone:A.onclone,ignoreElements:A.ignoreElements,inlineImages:l,copyStyles:l},a.logger.debug("Starting document clone with size "+o.width+"x"+o.height+" scrolled to "+-o.left+","+-o.top),h=new Xc(a,r,d),u=h.clonedReferenceElement,u?[4,h.toIFrame(e,o)]:[2,Promise.reject("Unable to find element in cloned iframe")];case 1:return f=KA.sent(),B=Ws(u)||Yf(u)?Uu(u.ownerDocument):Ir(a,u),w=B.width,v=B.height,m=B.left,F=B.top,E=Yw(a,u,A.backgroundColor),H={canvas:A.canvas,backgroundColor:E,scale:(IA=(xA=A.scale)!==null&&xA!==void 0?xA:t.devicePixelRatio)!==null&&IA!==void 0?IA:1,x:((YA=A.x)!==null&&YA!==void 0?YA:0)+m,y:((ue=A.y)!==null&&ue!==void 0?ue:0)+F,width:(he=A.width)!==null&&he!==void 0?he:Math.ceil(w),height:(PA=A.height)!==null&&PA!==void 0?PA:Math.ceil(v)},l?(a.logger.debug("Document cloned, using foreign object rendering"),D=new Vw(a,H),[4,D.render(u)]):[3,3];case 2:return y=KA.sent(),[3,5];case 3:return a.logger.debug("Document cloned, element located at "+m+","+F+" with size "+w+"x"+v+" using computed rendering"),a.logger.debug("Starting DOM parsing"),U=Hc(a,u),E===U.styles.backgroundColor&&(U.styles.backgroundColor=DA.TRANSPARENT),a.logger.debug("Starting renderer for element at "+H.x+","+H.y+" with size "+H.width+"x"+H.height),D=new Pw(a,H),[4,D.render(U)];case 4:y=KA.sent(),KA.label=5;case 5:return(!((ge=A.removeContainer)!==null&&ge!==void 0)||ge)&&(Xc.destroy(f)||a.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore")),a.logger.debug("Finished rendering"),[2,y]}})})},Yw=function(r,A,e){var t=A.ownerDocument,n=t.documentElement?it(r,getComputedStyle(t.documentElement).backgroundColor):DA.TRANSPARENT,s=t.body?it(r,getComputedStyle(t.body).backgroundColor):DA.TRANSPARENT,i=typeof e=="string"?it(r,e):e===null?DA.TRANSPARENT:4294967295;return A===t.documentElement?WA(n)?WA(s)?i:s:n:i};const Mt=class Mt extends c.EngineObject{constructor(A,e){super(A,e),this.ad(new c.ObjResettingWithEvent(A.renderInUEChanged,()=>A.renderInUE?new sd(A,e):new nd(A,e)))}};p(Mt,"type",Mt.register("ESUeViewer",c.ESGeoDiv.type,Mt));let ei=Mt;class nd extends c.Destroyable{constructor(e,t){super();p(this,"_screenPosition",this.disposeVar(c.reactArrayWithUndefined(void 0)));const n=t.viewer;if(!n){console.warn("viewer is undefined!");return}const s=this.disposeVar(new c.ESTextLabel);s.parentID=e.id,this.ad(e.components.disposableAdd(s,!0)),s.show=!1,this.dispose(c.bind([s,"position"],[e,"position"])),this.dispose(c.bind([s,"rotation"],[e,"rotation"])),this.dispose(c.bind([s,"flyToParam"],[e,"flyToParam"])),this.dispose(c.bind([s,"flyInParam"],[e,"flyInParam"])),this.dispose(e.calcFlyToParamEvent.disposableOn(()=>{$A(n,s.id)})),this.dispose(e.calcFlyInParamEvent.disposableOn(async()=>{if(!t.actived)return;const a=await t.getCurrentCameraInfo();if(!a)return;const{position:l,rotation:d}=a;e.flyInParam={position:l,rotation:d,flyDuration:1}})),this.dispose(e.smoothMoveEvent.disposableOn((a,l)=>{_e(n,s.id,a,l)})),this.dispose(e.smoothMoveWithRotationEvent.disposableOn((a,l,d)=>{Ge(n,s.id,a,l,d)})),this.dispose(e.smoothMoveOnGroundEvent.disposableOn((a,l,d,h)=>{ke(n,s.id,a,l,h,d)})),this.dispose(e.smoothMoveWithRotationOnGroundEvent.disposableOn((a,l,d,h,u)=>{Ne(n,s.id,a,l,d,h,u)})),this.dispose(e.flyToEvent.disposableOn((a,l)=>{s.flyTo(a)})),this.dispose(e.flyInEvent.don(a=>{s.flyIn(a)}));const i=this._screenPosition,o=this.disposeVar(new c.ESCustomDiv);o.parentID=e.id,t.add(o),this.dispose(()=>t.delete(o)),this.dispose(c.bind([o,"allowPicking"],[e,"allowPicking"]));{const a=this.disposeVar(c.createAnimateFrame()),l=()=>{e.show?a.restart(void 0,async()=>{if(!e.position)return;const d=await t.lonLatAltToScreenPosition(e.position);if(!this.isDestroyed())if(!d)this._screenPosition.value=void 0;else{const[h,u]=d;h===-1&&u===-1?this._screenPosition.value=void 0:this._screenPosition.value=[h,u]}}):a.cancel()};l(),this.dispose(e.showChanged.disposableOn(l))}{const a=()=>class extends c.Destroyable{constructor(u,f,B){if(super(),this._subContainer=u,!B)return;if(!e.instanceClass)throw new Error("!sceneObject.instanceClass");const w=new c.PosFloatDiv,v=w.element;this._subContainer.appendChild(v),this.dispose(()=>this._subContainer.removeChild(v)),v.onclick=m=>{(e.allowPicking??!1)&&e.pickedEvent.emit(new c.ESJPickedResult({div:v,pointerEvent:m},e,void 0,void 0,void 0,[m.x,m.y]))};{const m=()=>{e.editing?v.children[0].style.pointerEvents="none":v.children[0].style.pointerEvents="all"};m(),this.d(e.editingChanged.don(m))}{const m=()=>{let E=e.show;if(!E)w.show=E,w.winPos=[0,0];else if(i.value){const H=t.getCurrentCameraInfo(),y=c.getDistancesFromPositions([e.position,H.position],"NONE")[0];e.minVisibleDistance<e.maxVisibleDistance?E=e.minVisibleDistance<y&&y<e.maxVisibleDistance:e.maxVisibleDistance==0&&(E=y>e.minVisibleDistance),w.show=E,w.winPos=[...i.value]}};m();const F=this.disposeVar(c.createNextAnimateFrameEvent(e.showChanged,i.changed,t.cameraChanged,e.maxVisibleDistanceChanged,e.minVisibleDistanceChanged));this.dispose(F.disposableOn(m))}{const m=()=>{const[F,E]=e.anchor??c.ESGeoDiv.defaults.anchor;w.originRatioX=F,w.originRatioY=E};m(),this.dispose(e.anchorChanged.disposableOn(m))}{const m=()=>{w.opacity=e.opacity??c.ESGeoDiv.defaults.opacity};m(),this.dispose(e.opacityChanged.disposableOn(m))}this.disposeVar(new e.instanceClass(w.contentDiv,e,B))}},l=()=>{try{e.instanceClass?o.instanceClass=a():o.instanceClass=void 0}catch(h){console.error(h)}};l();const d=this.dv(c.createNextAnimateFrameEvent(e.instanceClassChanged,e.opacityChanged,e.anchorChanged,e.editingChanged,e.showChanged,e.allowPickingChanged));this.d(d.don(l))}}get screenPosition(){return this._screenPosition.value}get screenPositionChanged(){return this._screenPosition.changed}set screenPosition(e){this._screenPosition.value=e}}class sd extends c.Destroyable{constructor(e,t){super();p(this,"_imageLabel");p(this,"_hasClassDivAndPos",{});this._imageLabel=this.dv(new c.ESImageLabel),this._imageLabel.isHoverZoom=!1,this._imageLabel.parentID=e.id;const n=t.viewer;if(!n){console.warn("viewer is undefined!");return}const s=this._imageLabel;this.ad(e.components.disposableAdd(s,!0));{const i=()=>{if(!n)return;if(!e.instanceClass)throw new Error("!sceneObject.instanceClass");const l=document.createElement("div"),d=this.dv(new e.instanceClass(l,e,t))._container;if(d.style.opacity=e.opacity.toString()??c.ESGeoDiv.defaults.opacity,d.style.position="fixed",d.style.zIndex="-1",d.style.top="0px",!document.body.contains(d)){document.body.appendChild(d);let u=d?d.querySelectorAll("*[class]"):[];for(let f=0;f<u.length;f++){const B=u[f];var h=B.getBoundingClientRect();this._hasClassDivAndPos[B.className]=[B.offsetLeft,B.offsetTop,B.offsetLeft+h.width,B.offsetTop+h.height]}}Jw(d,{backgroundColor:null,allowTaint:!0,useCORS:!0,width:d.offsetWidth,height:d.offsetHeight,scale:1}).then(u=>{document.body.contains(d)&&document.body.removeChild(d),s.url=u.toDataURL(),s.show=e.show}).catch(()=>{document.body.contains(d)&&document.body.removeChild(d)})},o=()=>{try{e.instanceClass?i():(s.url="",s.show=!1)}catch(l){console.error(l)}};o();const a=this.dv(c.createNextAnimateFrameEvent(e.instanceClassChanged,e.opacityChanged));this.d(a.don(o))}{const i=()=>{s.show=e.show};s.show=!1,this.ad(e.showChanged.don(i))}this.d(c.track([s,"anchor"],[e,"anchor"])),this.d(c.bind([s,"position"],[e,"position"])),this.d(c.bind([s,"rotation"],[e,"rotation"])),this.d(c.bind([s,"flyToParam"],[e,"flyToParam"])),this.d(c.bind([s,"flyInParam"],[e,"flyInParam"])),this.d(c.bind([s,"allowPicking"],[e,"allowPicking"])),this.d(c.bind([s,"scale"],[e,"scale"])),this.d(c.track([s,"minVisibleDistance"],[e,"minVisibleDistance"])),this.d(c.track([s,"maxVisibleDistance"],[e,"maxVisibleDistance"])),this.ad(e.automaticLandingEvent.don(()=>{s.automaticLanding()})),this.d(t.widgetEvent.don(i=>{if(i.objId!==this._imageLabel.id)return;const{type:o,add:a}=i;if(o==="leftClick"&&a){const l=(a==null?void 0:a.classNames)??[],d=Object.keys(this._hasClassDivAndPos);for(let h=0;h<d.length;h++){const u=d[h];let f=this._hasClassDivAndPos[u];a&&a.mouseRelativePos&&a.mouseRelativePos[0]>=f[0]&&a.mouseRelativePos[0]<=f[2]&&a.mouseRelativePos[1]>=f[1]&&a.mouseRelativePos[1]<=f[3]&&l.push(u)}a.classNames=l}e.widgetEvent.emit({type:o,add:a})})),this.d(e.calcFlyToParamEvent.don(()=>{$A(n,s.id)})),this.d(e.calcFlyInParamEvent.don(()=>{const i=t.getCurrentCameraInfo();if(!i)return;const{position:o,rotation:a}=i;e.flyInParam={position:o,rotation:a,flyDuration:1}})),this.d(e.smoothMoveEvent.don((i,o)=>{_e(n,s.id,i,o)})),this.d(e.smoothMoveWithRotationEvent.don((i,o,a)=>{Ge(n,s.id,i,o,a)})),this.d(e.smoothMoveOnGroundEvent.don((i,o,a,l)=>{ke(n,s.id,i,o,l,a)})),this.d(e.smoothMoveWithRotationOnGroundEvent.don((i,o,a,l,d)=>{Ne(n,s.id,i,o,a,l,d)})),this.d(e.flyToEvent.don((i,o)=>{s.flyTo(i)})),this.d(e.flyInEvent.don(i=>{s.flyIn(i)}))}}const oe=class oe extends AA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.flyToFeatureIndexEvent.don((n,s)=>{t.callUeFunc({f:"flyToFeatureIndex",p:{id:A.id,index:n,duration:s}})})),this.d(A.flyToFeatureEvent.don((n,s,i)=>{t.callUeFunc({f:"flyToFeature",p:{id:A.id,key:n,value:s,duration:i}})}))}};p(oe,"type",oe.register("ESUeViewer",c.ESGeoJson.type,oe)),p(oe,"forceUeUpdateProps",[...AA.forceUeUpdateProps,"url"]),p(oe,"propValFuncs",{...AA.propValFuncs,url:A=>typeof A=="string"?c.ESSceneObject.context.getStrFromEnv(A):A});let ti=oe;const Dt=class Dt extends rA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Dt,"type",Dt.register("ESUeViewer",c.ESGeoLineString.type,Dt));let mn=Dt;const Rt=class Rt extends rA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Rt,"type",Rt.register("ESUeViewer",c.ESGeoRectangle.type,Rt));let ri=Rt;const xt=class xt extends uA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(xt,"type",xt.register("ESUeViewer",c.ESGeoWater.type,xt));let ni=xt;const ae=class ae extends P{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.setNodePositionEvent.don((n,s)=>{so(t,A.id,n,s)})),this.d(A.setNodeRotationEvent.don((n,s)=>{io(t,A.id,n,s)})),this.d(A.setNodeScaleEvent.don((n,s)=>{oo(t,A.id,n,s)}))}};p(ae,"forceUeUpdateProps",[...P.forceUeUpdateProps,"url"]),p(ae,"propValFuncs",{...P.propValFuncs,url:A=>typeof A=="string"?c.ESSceneObject.context.getStrFromEnv(c.rpToap(A)):(A.url=c.ESSceneObject.context.getStrFromEnv(c.rpToap(A.url)),A),czmMaximumScale:null,czmMinimumPixelSize:null,czmNativeScale:null,czmColor:null}),p(ae,"type",ae.register("ESUeViewer",c.ESGltfModel.type,ae));let si=ae;const Pt=class Pt extends rA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Pt,"type",Pt.register("ESUeViewer",c.ESHeightMeasurement.type,Pt));let ii=Pt;const Kt=class Kt extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}const n=async(i,o,a,l)=>{const{viewer:d}=i;if(!d){console.error("AIMoveTo: ueViewer.viewer is undefined");return}const h=await d.callUeFunc({f:"AIMoveTo",p:{id:o,Destination:a,Time:l}});return h.error&&console.error("AIMoveTo:",h.error),h};this.d(A.aiMoveToEvent.don((i,o)=>{n(e,A.id,i,o)}));const s=async(i,o)=>{const{viewer:a}=i;if(!a){console.error("StopAIMove: ueViewer.viewer is undefined");return}const l=await a.callUeFunc({f:"StopAIMove",p:{id:o}});return l.error&&console.error("StopAIMove:",l.error),l};this.d(A.stopAIMoveEvent.don(()=>{s(e,A.id)}))}};p(Kt,"type",Kt.register("ESUeViewer",c.ESHuman.type,Kt));let oi=Kt;const le=class le extends QA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}A.anchor=[.5,1]}};p(le,"type",le.register("ESUeViewer",c.ESImageLabel.type,le)),p(le,"forceUeUpdateProps",[...QA.forceUeUpdateProps,"url"]),p(le,"propValFuncs",{...QA.propValFuncs,url:A=>typeof A=="string"?c.ESSceneObject.context.getStrFromEnv(c.rpToap(A)):(A.url=c.ESSceneObject.context.getStrFromEnv(c.rpToap(A.url)),A)});let ai=le;const Gt=class Gt extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Gt,"type",Gt.register("ESUeViewer",c.ESLevelRuntimeModel.type,Gt));let li=Gt;const kt=class kt extends Ur{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(kt,"type",kt.register("ESUeViewer",c.ESLocalCircle.type,kt));let ci=kt;const Nt=class Nt extends AA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Nt,"type",Nt.register("ESUeViewer",c.ESLocalPolygonZ.type,Nt));let di=Nt;const _t=class _t extends Ur{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(_t,"type",_t.register("ESUeViewer",c.ESLocalRectangle.type,_t));let ui=_t;const Vt=class Vt extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Vt,"type",Vt.register("ESUeViewer",c.ESLocalSkyBox.type,Vt));let hi=Vt;const Ot=class Ot extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Ot,"type",Ot.register("ESUeViewer",c.ESLocationMeasurement.type,Ot));let gi=Ot;const Wt=class Wt extends rA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Wt,"type",Wt.register("ESUeViewer",c.ESPipeFence.type,Wt));let Bi=Wt;const Xt=class Xt extends mn{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Xt,"type",Xt.register("ESUeViewer",c.ESPipeline.type,Xt));let fi=Xt;const Jt=class Jt extends Er{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.highlightFeatureEvent.don(n=>{const s=typeof n=="number"?n.toString():n;eo(t,A.id,s)})),this.d(A.highlightFeatureAndFlyToEvent.don((n,s,i,o)=>{const a=typeof n=="number"?n.toString():n;to(t,A.id,a,o??1)})),this.d(A.setLayerVisibleEvent.don((n,s)=>{let i="";typeof s!="string"?i=JSON.stringify(s):i=s,ro(t,A.id,i)})),this.d(A.setLayerColorEvent.don((n,s)=>{let i="";typeof s!="string"?i=JSON.stringify(s):i=s,no(t,A.id,i)}))}};p(Jt,"type",Jt.register("ESUeViewer",c.ESPipeserTileset.type,Jt));let wi=Jt;const zt=class zt extends uA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(zt,"type",zt.register("ESUeViewer",c.ESPit.type,zt));let pi=zt;const Yt=class Yt extends QA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.ad(A.getInitialStyleEvent.don(async()=>{try{const n=await t.callUeFunc({f:"GetInitialStyle",p:{id:A.id}});n.error!=""&&console.error("getInitialStyleEvent:",n.error),A.initialStyle.value=structuredClone(n.re)}catch(n){console.error("getInitialStyleEvent:",n),A.initialStyle.value=void 0}}))}};p(Yt,"type",Yt.register("ESUeViewer",c.ESPoi2D.type,Yt));let Ci=Yt;const $t=class $t extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p($t,"type",$t.register("ESUeViewer",c.ESPoi3D.type,$t));let vi=$t;const ce=class ce extends AA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(ce,"type",ce.register("ESUeViewer",c.ESPoiTileset.type,ce)),p(ce,"forceUeUpdateProps",[...AA.forceUeUpdateProps,"url"]),p(ce,"propValFuncs",{...AA.propValFuncs,url:A=>typeof A=="string"?c.ESSceneObject.context.getStrFromEnv(A):(A.url=c.ESSceneObject.context.getStrFromEnv(A.url),A)});let mi=ce;const Zt=class Zt extends rA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Zt,"type",Zt.register("ESUeViewer",c.ESPolygonFence.type,Zt));let Fi=Zt;const De=class De extends uA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(De,"type",De.register("ESUeViewer",c.ESPolygonFlattenedPlane.type,De)),p(De,"propValFuncs",{...uA.propValFuncs,targetID:A=>{if(!A)return"";const e=c.ESSceneObject.getSceneObject(A);return e?(e.components.main??e).id:A}});let Qi=De;const qt=class qt extends uA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(qt,"type",qt.register("ESUeViewer",c.ESPolygonWithHole.type,qt));let Ui=qt;const jt=class jt extends jA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}this.d(()=>{A.ids=[]}),this.d(A.highlightInner3DtilesetEvent.don(n=>{n.highlight=!0})),this.d(A.removeHighlightInner3DtilesetEvent.don(n=>{n.highlight=!1}));{const n=o=>{o=o.toLocaleLowerCase();let a=[255,255,255,1];if(o.startsWith("#")){if(o.length===4){let l=parseInt(o[1]+o[1],16),d=parseInt(o[2]+o[2],16),h=parseInt(o[3]+o[3],16);a=[l,d,h,1]}else if(o.length===7){let l=parseInt(o.substring(1,3),16),d=parseInt(o.substring(3,5),16),h=parseInt(o.substring(5,7),16);a=[l,d,h,1]}}else if(o.startsWith("rgba")){let l=o.match(/^rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d.]+)\s*\)$/);if(l){let d=parseInt(l[1]),h=parseInt(l[2]),u=parseInt(l[3]),f=parseFloat(l[4]);a=[d,h,u,f]}}else if(o.startsWith("rgb")){let l=o.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/);if(l){let d=parseInt(l[1]),h=parseInt(l[2]),u=parseInt(l[3]);a=[d,h,u,1]}}else console.error("color类型只能为#rrggbb、#rgb、rgba(r,g,b,a)、rgb(r,g,b)");return[a[0]/255,a[1]/255,a[2]/255,a[3]]},s=()=>{const o=A.layerConfig;if(!o)return;const a=[];o.forEach(l=>{o.filter(h=>h.dataset==l.dataset).length==1?a.push({condition:[{field:"dataset",op:"==",value:l.dataset}],color:n(l.value.color??"rgb(255,255,255)"),show:l.value.visible}):a.push({condition:[{field:"layer",op:"==",value:l.layer},{field:"dataset",op:"==",value:l.dataset}],color:n(l.value.color??"rgb(255,255,255)"),show:l.value.visible})}),A.setFeatureStyle(a)};s();const i=this.dv(c.createNextAnimateFrameEvent(A.layerConfigChanged,A.colorBlendModeChanged));this.d(i.don(()=>{s()}))}}};p(jt,"type",jt.register("ESUeViewer",c.ESRtsTileset.type,jt));let Ei=jt;const Ar=class Ar extends AA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}this.d(A.addTreesEvent.don(n=>{c.addTreesCallFunc(e,A.id,n)})),this.d(A.removeAllTreesEvent.don(()=>{c.removeAllTreesCallFunc(e,A.id)})),this.d(A.updateTreeParamsEvent.don(n=>{c.updateTreeParamsCallFunc(e,A.id,n)})),this.d(A.cutDownTreesEvent.don((n,s)=>{c.cutDownTreesCallFunc(e,A.id,n,s)})),this.d(A.growthSimulationEvent.don((n,s,i)=>{c.growthSimulationCallFunc(e,A.id,n,s,i)}))}};p(Ar,"type",Ar.register("ESUeViewer",c.ESSeparateFoliage.type,Ar));let yi=Ar;const er=class er extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(er,"type",er.register("ESUeViewer",c.ESSubmergingAnalysis.type,er));let Si=er;const tr=class tr extends uA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.startEvent.don(()=>{t.callUeFunc({f:"Start",p:{id:A.id}})})),this.d(A.stopEvent.don(()=>{t.callUeFunc({f:"Stop",p:{id:A.id}})}))}};p(tr,"type",tr.register("ESUeViewer",c.ESSunshineAnalysis.type,tr));let Ii=tr;const rr=class rr extends uA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.startEvent.don(()=>{t.callUeFunc({f:"Start",p:{id:A.id}})}))}};p(rr,"type",rr.register("ESUeViewer",c.ESSurfaceAreaMeasurement.type,rr));let Ti=rr;const nr=class nr extends QA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(nr,"type",nr.register("ESUeViewer",c.ESTextLabel.type,nr));let Hi=nr;const Re=class Re extends QA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.callFunctionEvent.don(async(n,s)=>{const i=await En(t,A.id,n,s);A.__callFunctionResultEvent.emit(i)}))}};p(Re,"type",Re.register("ESUeViewer",c.ESUEWidget.type,Re)),p(Re,"propValFuncs",{...QA.propValFuncs,info:A=>JSON.stringify(A??{})});let Li=Re;const id=r=>{switch(r){case 0:return"成功绑定";case 1:return"解绑之前的内容,成功绑定";case 2:return"未搜索到ActorTag,无法绑定";case 3:return"搜索到ActorTag但对应的Actor不是场景原有的,而是新建的,无法绑定";case 4:return"搜索到ActorTag对应的Actor是地形或3DTileset,无法绑定";default:return"未知错误"}},$w=r=>{switch(r){case 0:return"创建成功";case 1:return"未找到对应的资源,无法创建";case 2:return"Id与场景中现有的ActorTag重复,创建后可能出现问题,创建失败";default:return"未知错误"}},sr=class sr extends c.EngineObject{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn(`${A.id} UeESUnrealActor viewer is undefined!`);return}this.d(()=>{Qn(t,A.id)});const n=async()=>{l()||await t.callUeFunc({f:"update",p:{id:A.id,name:A.name,show:A.show,rotation:A.rotation,flyToParam:A.flyToParam??c.ESUnrealActor.defaultFlyToParam,flyInParam:A.flyInParam??c.ESUnrealActor.defaultFlyInParam,highlight:A.highlight,collision:A.collision,scale:A.scale,minVisibleDistance:A.minVisibleDistance,maxVisibleDistance:A.maxVisibleDistance}})},s=this.dv(c.createNextAnimateFrameEvent(A.showChanged,A.nameChanged,A.rotationChanged,A.flyToParamChanged,A.flyInParamChanged,A.highlightChanged,A.collisionChanged,A.scaleChanged,A.minVisibleDistanceChanged,A.maxVisibleDistanceChanged));this.d(s.don(n)),this.d(A.flushEvent.don(()=>s.flush()));let i,o;const a=async()=>{l()||(await t.callUeFunc({f:"update",p:{id:A.id,position:A.position}}),(e.debug??!1)&&console.log(`updatePostion:${A.position},actorTag:${A.actorTag},actorClass:${A.actorClass}`))},l=()=>!i&&!o?(console.warn(`${A.id} 未绑定ActorTag或未创建ActorClass!`),!0):!1,d=async()=>{const{id:u}=A,f=await e.unBindActorByID(u);f&&f.error!==""&&console.warn(`${A.id} UeESUnrealActor UnBindActorByID: ${f.error}`),i=void 0;const B=await t.callUeFunc({f:"destroy",p:{id:u}});if(B&&B.error!==""){console.warn(`${A.id} UeESUnrealActor DestroyActorByID: ${B.error}`);return}o=void 0},h=this.dv(c.react({type:"ActorClass",actorClass:"default"}));{const u=this.dv(c.createNextAnimateFrameEvent(A.actorClassChanged,A.actorTagChanged)),f=async()=>{A.actorTag!==""?h.value={type:"ActorTag",actorTag:A.actorTag}:h.value={type:"ActorClass",actorClass:A.actorClass===""?"default":A.actorClass}};f(),this.d(u.don(f)),this.d(A.flushEvent.don(()=>u.flush()))}{const u=this.dv(c.createProcessingFromAsyncFunc(async B=>{if(await B.promise(d()),A.lastActorStatus="null",h.value.type==="ActorTag"){const{actorTag:w}=h.value;try{const v=await B.promise(e.bindActorByTag(A.id,w));if(!v)return;if(v.error!==""){console.warn(`${A.id} UeESUnrealActor BindActorByTag:${w},${v.error}`);return}if(v.re.type===0)A.lastActorStatus="bound",i=w;else if(v.re.type===1)A.lastActorStatus="bound",i=w,console.warn(`${A.id} UeESUnrealActor BindActorByTag:${w},${id(v.re.type)}`);else{i=void 0,console.warn(`${A.id} UeESUnrealActor BindActorByTag error:${w}, ${id(v.re.type)}`);return}}catch(v){console.warn(`${A.id} UeESUnrealActor BindActorByTag catch error:${w}, ${v}`);return}}else if(h.value.type==="ActorClass"){const{actorClass:w}=h.value;try{const v=await B.promise(e.createActorByClass(A.id,w));if(!v)return;if(v.error!==""){console.warn(`${A.id} UeESUnrealActor CreateActorByClass error :${w}, ${v.error}`);return}if(v.re.type===0)w!=="default"&&(A.lastActorStatus="created"),o=w;else{console.warn(`${A.id} UeESUnrealActor CreateActorByClass error type :${w},${$w(v.re.type)}`);return}}catch(v){console.warn(`${A.id} UeESUnrealActor CreateActorByClass error catch :${w}, ${JSON.stringify(v)}`);return}}await B.promise(n()),await B.promise(a())})),f=async()=>{u.restart()};f(),this.d(h.changed.don(f))}this.d(A.positionChanged.don(a)),this.d(A.callFunctionEvent.don(async(u,f)=>{if(l()){A.__callFunctionResultEvent.emit(void 0);return}const B=await En(t,A.id,u,f);A.__callFunctionResultEvent.emit(B)})),this.d(A.smoothMoveEvent.don((u,f)=>{l()||_e(t,A.id,u,f)})),this.d(A.smoothMoveWithRotationEvent.don((u,f,B)=>{l()||Ge(t,A.id,u,f,B)})),this.d(A.smoothMoveOnGroundEvent.don((u,f,B,w)=>{l()||ke(t,A.id,u,f,w,B)})),this.d(A.smoothMoveWithRotationOnGroundEvent.don((u,f,B,w,v)=>{l()||Ne(t,A.id,u,f,B,w,v)})),this.d(A.automaticLandingEvent.don(u=>{if(l())return;const f=[A.position[0],A.position[1]];e.getHeightByLonLat(A.position[0],A.position[1],"Visibility").then(B=>{B!==null&&(A.position=[...f,B],A.collision=u)})})),this.d(A.flyToEvent.don(async(u,f)=>{if(l())return;const B=await fe(t,A.id,u);let w="over";B===void 0?w="error":B.endType===0?w="over":B.endType===1&&(w="cancelled"),A.flyOverEvent.emit(f,w,e)})),this.d(A.calcFlyToParamEvent.don(()=>{l()||$A(t,A.id)})),this.d(A.calcFlyInParamEvent.don(async()=>{if(!e.actived)return;const u=await e.getCurrentCameraInfo();if(!u)return;const{position:f,rotation:B}=u;A.flyInParam={position:f,rotation:B,flyDuration:1}})),this.d(e.propChanged.don(u=>{l()||u.objId===A.id&&Object.keys(u.props).forEach(f=>{const B=u.props[f]===null?void 0:u.props[f];A[f]=B})}))}};p(sr,"type",sr.register("ESUeViewer",c.ESUnrealActor.type,sr));let bi=sr;const ir=class ir extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(ir,"type",ir.register("ESUeViewer",c.ESVideoFusion.type,ir));let Mi=ir;const or=class or extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(or,"type",or.register("ESUeViewer",c.ESViewShed.type,or));let Di=or;const ar=class ar extends rA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is underfined!");return}}};p(ar,"type",ar.register("ESUeViewer",c.ESVisibilityAnalysis.type,ar));let Ri=ar;const lr=class lr extends uA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.ad(c.track([A,"volume"],[A,"cutAndFillVolume"])),this.d(A.startEvent.don(()=>{t.callUeFunc({f:"Start",p:{id:A.id}})})),this.d(A.clearEvent.don(()=>{t.callUeFunc({f:"Clear",p:{id:A.id}})}))}};p(lr,"type",lr.register("ESUeViewer",c.ESVolumeMeasurement.type,lr));let xi=lr;const xe=class xe extends QA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(xe,"type",xe.register("ESUeViewer",c.ESWidget.type,xe)),p(xe,"propValFuncs",{...QA.propValFuncs,info:A=>JSON.stringify(A??{})});let Pi=xe;const cr=class cr extends c.EngineObject{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}A.poi.actorTag=A.human.id,A.poi.positionOffset=[0,0,A.poiOffsetHeight-.8],this.d(A.poiOffsetHeightChanged.don(()=>{A.poi.positionOffset=[0,0,A.poiOffsetHeight-.8]})),this.d(()=>{A.poi.actorTag=""})}};p(cr,"type",cr.register("ESUeViewer",c.ESHumanPoi.type,cr));let Ki=cr;c.ESSceneObject.context.getStrFromEnv(c.ESNavigator.defaults.imgUrl);const dr=class dr extends c.EngineObject{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}const n=this.disposeVar(new c.ESCustomDiv);e.add(n),this.dispose(()=>e.delete(n)),this.dispose(c.track([n,"show"],[A,"show"])),n.instanceClass=class extends c.Destroyable{constructor(i,o,a){super(),this._subContainer=i;const l=document.createElement("div");this._subContainer.appendChild(l),this.dispose(()=>this._subContainer.removeChild(l));{const u=async()=>{const f=await e.getCurrentCameraInfo(),B=f==null?void 0:f.position,v=[...f==null?void 0:f.rotation];v[0]=360,e.flyIn(B,v)};l.addEventListener("click",u),l.style.cursor="pointer",this.dispose(()=>l.removeEventListener("click",u))}{const u=()=>{l.style.width=`${A.cssSize?A.cssSize:c.ESNavigator.defaults.cssSize}px`,l.style.height=`${A.cssSize?A.cssSize:c.ESNavigator.defaults.cssSize}px`};u(),A.dispose(A.cssSizeChanged.disposableOn(u))}l.style.position="fixed";{const u=()=>{l.style.top=`${A.cssPosition?A.cssPosition[0]:c.ESNavigator.defaults.cssPosition[0]}px`,l.style.right=`${A.cssPosition?A.cssPosition[1]:c.ESNavigator.defaults.cssPosition[1]}px`};u(),A.dispose(A.cssPositionChanged.disposableOn(u))}l.style.transition=" right 0.4s linear",l.style.cursor="pointer";const d=document.createElement("div");l.appendChild(d),this.dispose(()=>l.removeChild(d)),d.style.width="100%",d.style.height="100%",d.style.position="relative";const h=document.createElement("img");d.appendChild(h),this.dispose(()=>d.removeChild(h)),h.style.width="100%",h.style.height="100%",h.style.border="none";{const u=()=>h.src=A.imgUrl;u(),A.dispose(A.imgUrlChanged.disposableOn(u))}{const u=()=>{const v=-e.getCurrentCameraInfo().rotation[0];h.style.transform=`rotate(${v}deg)`};let f;const B=async()=>{u(),A.show?(l.style.display="block",f=setInterval(()=>{u()},1e3)):(l.style.display="none",clearInterval(f))};this.dispose(A.showChanged.disposableOn(B)),B(),this.dispose(()=>clearInterval(f))}h.style.transformOrigin="50% 50%"}}}};p(dr,"type",dr.register("ESUeViewer",c.ESNavigator.type,dr));let Gi=dr;const de=class de extends rA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}{const n=()=>{t.callUeFunc({f:"update",p:{id:A.id,materialMode:A.materialMode}})};this.dispose(A.materialModeChanged.disposableOn(n))}}};p(de,"type",de.register("ESUeViewer",c.ESPath.type,de)),p(de,"forceUeUpdateProps",[...rA.forceUeUpdateProps]),p(de,"propValFuncs",{...rA.propValFuncs});let ki=de;async function Zw(r){navigator.clipboard.writeText(r).then(function(){console.log("复制成功")},function(A){console.log("复制失败")})}const ur=class ur extends c.EngineObject{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}const n=this.disposeVar(new c.ESCustomDiv);e.add(n),this.dispose(()=>e.delete(n)),n.instanceClass=class extends c.Destroyable{constructor(i,o,a){if(super(),this._subContainer=i,!a||!(a instanceof LA))return;const l=document.createElement("div");this._subContainer.appendChild(l),this.dispose(()=>this._subContainer.removeChild(l)),l.style.width="100%",l.style.position="absolute",l.style.height=`${c.ESViewerStatusBar.defaults.height}px`,l.style.left="0",l.style.bottom="0",l.style.color="#fff",l.style.padding="0 20px 0 0",l.style.boxSizing="border-box",l.style.lineHeight=`${c.ESViewerStatusBar.defaults.height}px`,l.style.zIndex="100",l.style.alignContent="center",l.style.justifyContent="space-between";const d=document.createElement("span");l.appendChild(d),this.dispose(()=>l.removeChild(d));const h=document.createElement("span");d.appendChild(h),this.dispose(()=>d.removeChild(h));const u=document.createElement("span");d.appendChild(u),u.addEventListener("dblclick",function(){let B=u.innerHTML;B.startsWith("鼠标位置")&&(B=B.slice(5)),Zw(B)}),u.style.cursor="pointer",this.dispose(()=>d.removeChild(u));const f=document.createElement("span");l.appendChild(f),this.dispose(()=>l.removeChild(f));{const B=()=>{l.style.height=(A.height??c.ESViewerStatusBar.defaults.height)+"px",l.style.lineHeight=(A.height??c.ESViewerStatusBar.defaults.height)+"px"};this.dispose(A.heightChanged.disposableOn(B)),B()}{const B=()=>{l.style.fontSize=(A.fontSize??c.ESViewerStatusBar.defaults.fontSize)+"px"};this.dispose(A.fontSizeChanged.disposableOn(B)),B()}{const B=()=>{A.bgColor?l.style.background=`rgba(${A.bgColor[0]*255},${A.bgColor[1]*255},${A.bgColor[2]*255},${A.bgColor[3]})`:l.style.background=`rgba(${c.ESViewerStatusBar.defaults.bgColor[0]},${c.ESViewerStatusBar.defaults.bgColor[1]},${c.ESViewerStatusBar.defaults.bgColor[2]},${c.ESViewerStatusBar.defaults.bgColor[3]})`};this.dispose(A.bgColorChanged.disposableOn(B)),B()}a.getVersion().then(B=>{B&&(f.innerText=`Ue 版本 : ${B[0]} `)}).catch(B=>{console.log(B)});{const B=()=>{let m="",F="";m+=`帧率:${a.getFPS().toFixed(0)}FPS`,h.innerText=m;const E=e.getCurrentCameraInfo();m+=` 经度: ${E.position[0].toFixed(5)}° 纬度: ${E.position[1].toFixed(5)}° 高度: ${E.position[2].toFixed(2)}米 偏航角: ${E.rotation[0].toFixed(2)}° 俯仰角: ${E.rotation[1].toFixed(2)}° 翻滚角:${E.rotation[2].toFixed(2)}° `,h.innerText=m,e.pick().then(H=>{if(H){const{pickResult:y}=H;if(y&&y.position){const{position:U}=y;F+=`鼠标位置:${U[0].toFixed(5)}° ${U[1].toFixed(5)}° ${U[2].toFixed(2)}m`}else F+="暂时无法获取鼠标位置...";u.innerText=F}}).catch(H=>{console.log(H)})};let w;const v=async()=>{B(),A.show?(l.style.display="flex",w=setInterval(()=>{B()},1e3)):(l.style.display="none",clearInterval(w))};this.dispose(A.showChanged.disposableOn(v)),v(),this.dispose(()=>clearInterval(w))}}}}};p(ur,"type",ur.register("ESUeViewer",c.ESViewerStatusBar.type,ur));let Ni=ur;const hr=class hr extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(hr,"type",hr.register("ESUeViewer",c.ESGaussianSplatting.type,hr));let _i=hr;const gr=class gr extends jA{constructor(e,t){super(e,t);p(this,"_es3DTileset",this.dv(new c.ES3DTileset));if(!t.viewer){console.warn("viewer is undefined!");return}this.es3DTileset.parentID=e.id;{const s=this._es3DTileset;e.components.disposableAdd(s,!0),this.d(c.track([s,"allowPicking"],[e,"allowPicking"])),this.d(c.track([s,"collision"],[e,"collision"])),this.d(c.bind([s,"flyToParam"],[e,"flyToParam"])),this.d(c.bind([s,"flyToParam"],[e,"flyToParam"])),this.d(c.track([s,"url"],[e,"url"])),this.d(c.track([s,"actorTag"],[e,"actorTag"])),this.d(c.track([s,"materialMode"],[e,"materialMode"])),this.d(c.track([s,"highlight"],[e,"highlight"])),this.d(c.track([s,"maximumScreenSpaceError"],[e,"maximumScreenSpaceError"])),this.d(c.track([s,"highlightID"],[e,"highlightID"])),this.d(c.track([s,"highlightColor"],[e,"highlightColor"])),this.d(c.bind([s,"offset"],[e,"offset"])),this.d(c.bind([s,"rotation"],[e,"rotation"])),this.d(c.track([s,"czmImageBasedLightingFactor"],[e,"czmImageBasedLightingFactor"])),this.d(c.track([s,"czmLuminanceAtZenith"],[e,"czmLuminanceAtZenith"])),this.d(c.track([s,"czmMaximumMemoryUsage"],[e,"czmMaximumMemoryUsage"])),this.d(c.track([s,"czmClassificationType"],[e,"czmClassificationType"])),this.d(c.track([s,"czmStyleJson"],[e,"czmStyleJson"])),this.d(c.track([s,"czmBackFaceCulling"],[e,"czmBackFaceCulling"])),this.d(c.track([s,"czmDebugShowBoundingVolume"],[e,"czmDebugShowBoundingVolume"])),this.d(c.track([s,"czmDebugShowContentBoundingVolume"],[e,"czmDebugShowContentBoundingVolume"])),this.d(c.track([s,"colorBlendMode"],[e,"colorBlendMode"])),this.d(c.track([s,"cacheBytes"],[e,"cacheBytes"])),this.d(c.track([s,"clippingPlaneEnabled"],[e,"clippingPlaneEnabled"])),this.d(c.track([s,"unionClippingRegions"],[e,"unionClippingRegions"])),this.d(c.track([s,"clippingPlaneEdgeColor"],[e,"clippingPlaneEdgeColor"])),this.d(c.track([s,"clippingPlaneEdgeWidth"],[e,"clippingPlaneEdgeWidth"])),this.d(c.track([s,"materialParams"],[e,"materialParams"])),this.d(c.bind([s,"supportEdit"],[e,"supportEdit"])),this.d(c.bind([s,"clippingPlanesId"],[e,"clippingPlanesId"])),this.d(c.bind([s,"clippingPlaneIds"],[e,"clippingPlaneIds"])),this.d(c.bind([s,"flattenedPlaneId"],[e,"flattenedPlaneId"])),this.d(c.bind([s,"flattenedPlaneEnabled"],[e,"flattenedPlaneEnabled"])),this.d(c.bind([s,"clippingPlaneId"],[e,"clippingPlaneId"])),this.d(c.bind([s,"excavateId"],[e,"excavateId"]))}{const s=this._es3DTileset;this.d(e.refreshTilesetEvent.don(()=>{s.refreshTileset()})),this.d(e.highlightFeatureEvent.don((...i)=>{s.highlightFeature(...i)})),this.d(e.highlightFeatureAndFlyToEvent.don((...i)=>{s.highlightFeatureAndFlyTo(...i)})),this.d(e.setFeatureColorEvent.don((...i)=>{s.setFeatureColor(...i)})),this.d(e.setFeatureVisableEvent.don((...i)=>{s.setFeatureVisable(...i)})),this.d(e.resetFeatureStyleEvent.don((...i)=>{s.resetFeatureStyle(...i)})),this.d(e.flyInEvent.don((...i)=>{s.flyIn(i[0])})),this.d(e.flyToEvent.don((...i)=>{s.flyTo(i[0])})),this.d(e.calcFlyToParamEvent.don((...i)=>{s.calcFlyToParam(...i)})),this.d(e.calcFlyInParamEvent.don((...i)=>{s.calcFlyInParam(...i)}))}{const s=this._es3DTileset;this.d(s.tilesetReady.don(i=>{e.tilesetReady.emit(i)})),this.d(s.pickedEvent.don(i=>{i.assign({sceneObject:e}),e.pickedEvent.emit(i)}))}{const s=()=>{this.es3DTileset.show=e.show};s(),this.d(e.showChanged.don(()=>{s()}))}}get es3DTileset(){return this._es3DTileset}};p(gr,"type",gr.register("ESUeViewer",c.ESRtsFeatureEditing.type,gr));let Vi=gr;const Br=class Br extends jA{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(Br,"type",Br.register("ESUeViewer",c.ESMsTileset.type,Br));let Oi=Br;const fr=class fr extends uA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}const n=()=>{t.callUeFunc({f:"update",p:{id:A.id,height:A.height??c.ESGeoExtrudedPolygon.defaults.height,extrudedHeight:A.extrudedHeight??c.ESGeoExtrudedPolygon.defaults.extrudedHeight,perPositionHeight:A.perPositionHeight??c.ESGeoExtrudedPolygon.defaults.perPositionHeight}})},s=this.disposeVar(c.createNextAnimateFrameEvent(A.heightChanged,A.extrudedHeightChanged,A.perPositionHeightChanged));this.dispose(s.disposableOn(n)),this.dispose(A.createdEvent.disposableOn(n))}};p(fr,"type",fr.register("ESUeViewer",c.ESGeoExtrudedPolygon.type,fr));let Wi=fr;const wr=class wr extends P{constructor(A,e){if(super(A,e),!e.viewer){console.warn("viewer is undefined!");return}}};p(wr,"type",wr.register("ESUeViewer",c.ESStaticMesh.type,wr));let Xi=wr;const pr=class pr extends rA{constructor(A,e){super(A,e);const t=e.viewer;if(!t){console.warn("viewer is undefined!");return}this.d(A.startEvent.don(()=>{t.callUeFunc({f:"Start",p:{id:A.id}})})),this.d(A.clearEvent.don(()=>{t.callUeFunc({f:"Clear",p:{id:A.id}})}))}};p(pr,"type",pr.register("ESUeViewer",c.ESSkylineAnalysis.type,pr));let Ji=pr;C.copyright=void 0;try{const r="earthsdk3-ue",A="3.7.0-beta.15",e="2025-12-18T03:39:35.000Z",t="北京西部世界科技有限公司",n="地球可视化实验室 (EarthSDK&CesiumLab) https://www.bjxbsj.cn",s="bf43a4be94d72dcbd6f2dac7f9881efa9d414a29",o=((Date.now()-1766029175e3)/36e5).toFixed(1),a=`%c🌏 ${r}%c ${A}.${s.slice(0,8)}.${e} (距今${o}个小时)
|
|
113
113
|
%c${n?n+`
|
|
114
114
|
`:""}当前网站正在使用${r},此软件版权归${t}所有
|
|
115
|
-
`;C.copyright=Object.freeze({get owner(){return"北京西部世界科技有限公司"},get ownerlink(){return OWNERLINK_},get gituri(){return GITURI_&&GITURI_.replace("${commitId}","
|
|
115
|
+
`;C.copyright=Object.freeze({get owner(){return"北京西部世界科技有限公司"},get ownerlink(){return OWNERLINK_},get gituri(){return GITURI_&&GITURI_.replace("${commitId}","bf43a4be94d72dcbd6f2dac7f9881efa9d414a29")},get info(){return a},get date(){return"2025-12-18T03:39:35.000Z"},get author(){return"suplyang"},get version(){return"3.7.0-beta.15"},get name(){return"earthsdk3-ue"},get commitId(){return"bf43a4be94d72dcbd6f2dac7f9881efa9d414a29"},print(l=!1){!l&&window._xe2_no_copy_print||console.info(this.info,`
|
|
116
116
|
font-size: 18px;
|
|
117
117
|
font-weight: 1000;
|
|
118
118
|
line-height: 1;
|
|
@@ -129,4 +129,4 @@ Msg: ${e}`;console.warn(t)}};g.verboseLogLevel=5,function(r){r.LIST_STREAMERS="l
|
|
|
129
129
|
color: rgb(0, 120, 215);
|
|
130
130
|
padding-bottom: 2px;
|
|
131
131
|
padding-left: 35px;
|
|
132
|
-
`)}}),window.g_XE3CopyRights=window.g_XE3CopyRights||{},window.g_XE3CopyRights[r]=C.copyright,window.g_earthsdk_copyright_print=window.g_earthsdk_copyright_print??!0,window.g_earthsdk_copyright_print&&C.copyright.print()}catch{}return C.ESUeViewer=LA,C.GeoDivFromESImageLabel=sd,C.GeoDivFromESTextLabel=nd,C.HighlightFeatureAndFlyToCallFunc=
|
|
132
|
+
`)}}),window.g_XE3CopyRights=window.g_XE3CopyRights||{},window.g_XE3CopyRights[r]=C.copyright,window.g_earthsdk_copyright_print=window.g_earthsdk_copyright_print??!0,window.g_earthsdk_copyright_print&&C.copyright.print()}catch{}return C.ESUeViewer=LA,C.GeoDivFromESImageLabel=sd,C.GeoDivFromESTextLabel=nd,C.HighlightFeatureAndFlyToCallFunc=to,C.HighlightFeatureCallFunc=eo,C.SetLayerColorCallFunc=no,C.SetLayerVisibleCallFunc=ro,C.UeCloudViewerBase=Ve,C.UeES3DTileset=Er,C.UeESAlarm=Gn,C.UeESApertureEffect=kn,C.UeESAreaMeasurement=Nn,C.UeESBlastParticleSystem=_n,C.UeESBoxClipping=Vn,C.UeESCameraView=On,C.UeESCameraVisibleRange=Wn,C.UeESCar=Xn,C.UeESClassification=Jn,C.UeESClippingPlane=zn,C.UeESDataMesh=Yn,C.UeESDatasmithRuntimeModel=$n,C.UeESDirectionMeasurement=Zn,C.UeESDistanceMeasurement=qn,C.UeESDynamicWater=jn,C.UeESEntityCluster=As,C.UeESExcavate=es,C.UeESFireParticleSystem=ts,C.UeESForestTileset=rs,C.UeESGaussianSplatting=_i,C.UeESGeoDiv=ei,C.UeESGeoExtrudedPolygon=Wi,C.UeESGeoJson=ti,C.UeESGeoLineString=mn,C.UeESGeoPolygon=uA,C.UeESGeoRectangle=ri,C.UeESGeoVector=rA,C.UeESGeoWater=ni,C.UeESGltfModel=si,C.UeESHeightMeasurement=ii,C.UeESHuman=oi,C.UeESHumanPoi=Ki,C.UeESImageLabel=ai,C.UeESImageryLayer=Pn,C.UeESLabel=QA,C.UeESLevelRuntimeModel=li,C.UeESLocalCircle=ci,C.UeESLocalPolygon=yr,C.UeESLocalPolygonZ=di,C.UeESLocalRectangle=ui,C.UeESLocalSkyBox=hi,C.UeESLocalVector=xn,C.UeESLocalVector2D=Ur,C.UeESLocationMeasurement=gi,C.UeESMsTileset=Oi,C.UeESNavigator=Gi,C.UeESObjectWithLocation=P,C.UeESPath=ki,C.UeESPipeFence=Bi,C.UeESPipeline=fi,C.UeESPipeserTileset=wi,C.UeESPit=pi,C.UeESPoi2D=Ci,C.UeESPoi3D=vi,C.UeESPoiTileset=mi,C.UeESPolygonFence=Fi,C.UeESPolygonFlattenedPlane=Qi,C.UeESPolygonWithHole=Ui,C.UeESRtsFeatureEditing=Vi,C.UeESRtsTileset=Ei,C.UeESSceneObject=jA,C.UeESSeparateFoliage=yi,C.UeESSkylineAnalysis=Ji,C.UeESStaticMesh=Xi,C.UeESSubmergingAnalysis=Si,C.UeESSunshineAnalysis=Ii,C.UeESSurfaceAreaMeasurement=Ti,C.UeESTerrainLayer=Kn,C.UeESTextLabel=Hi,C.UeESUEWidget=Li,C.UeESUnrealActor=bi,C.UeESVideoFusion=Mi,C.UeESViewShed=Di,C.UeESViewerStatusBar=Ni,C.UeESVisibilityAnalysis=Ri,C.UeESVisualObject=AA,C.UeESVolumeMeasurement=xi,C.UeESWidget=Pi,C.bind3DTilesetByTagCallFunc=bo,C.bindActorByTagCallFunc=So,C.bindImageryByTagCallFunc=Ro,C.calcFlyToParamCallFunc=$A,C.callFunctionCallFunc=En,C.captureCallFunc=Bo,C.changeNavigationModeCallFunc=TA,C.createActorByClassCallFunc=Lo,C.destroyCallFunc=Qn,C.flyInCallFunc=Ke,C.flyInDefaultCameraCallFunc=$i,C.flyToCallFunc=fe,C.generateMemReportCallFunc=Ao,C.getAllSocketNamesByActorTagCallFunc=Co,C.getBoundSphereCallFunc=mo,C.getBoundSphereWithChildrenCallFunc=Fo,C.getCameraRelativeHeightCallFunc=Go,C.getFillMaterialParamInfoCallFunc=Uo,C.getGlobalPropertyCallFunc=Eo,C.getHeightByLonLatCallFunc=ho,C.getHeightByLonLatsCallFunc=go,C.getIdByComponentNameAndHitItemCallFunc=Ko,C.getLonLatAltToScreenPositionCallFunc=wo,C.getObjectByInfoCallFunc=yo,C.getStatusCallFunc=Vo,C.getStrokeMaterialParamInfoCallFunc=Qo,C.getTilesetMaterialIDListCallFunc=Jo,C.getVersionCallFunc=vo,C.highlightActorByTagCallFunc=No,C.mountPakFiles=ji,C.moveObjectsCallFunc=Xo,C.partialCaptureCallFunc=fo,C.pickCallFunc=co,C.pickPositionCallFunc=uo,C.quitCallFunc=lo,C.refreshTilesetCallFunc=Yi,C.resetWithCurrentCameraCallFunc=Un,C.restoreOriginalSceneCallFunc=Io,C.saveStringToFileCallFunc=ko,C.sendCustomMessageCallFunc=_o,C.setGlobalPropertyCallFunc=ao,C.setNodePositionCallFunc=so,C.setNodeRotationCallFunc=io,C.setNodeScaleCallFunc=oo,C.smoothMoveCallFunc=_e,C.smoothMoveOnGroundCallFunc=ke,C.smoothMoveWithRotationCallFunc=Ge,C.smoothMoveWithRotationOnGroundCallFunc=Ne,C.startEditingCallFunc=Oo,C.startVoiceCallFunc=Zi,C.stopEditingCallFunc=Wo,C.stopVoiceCallFunc=qi,C.uePositionToLonLatAltCallFunc=po,C.unBind3DTilesetByIdCallFunc=Do,C.unBind3DTilesetByTagCallFunc=Mo,C.unBindActorByIDCallFunc=To,C.unBindActorByTagCallFunc=Ho,C.unBindImageryByIdCallFunc=Po,C.unBindImageryByTagCallFunc=xo,Object.defineProperty(C,Symbol.toStringTag,{value:"Module"}),C}({},EarthSDK3);
|