MapComp.data.appUI={mapTypePos:void 0,mapTypeStyle:void 0,zoomPos:void 0,locateMeBtnPosition:void 0,toggleFullScreenBtnPosition:void 0,toggleMapModeBtnPosition:void 0,truckerModeBtnPosition:void 0,mapLocationMarker:void 0,locationBtn:$(".locationBtn"),hideLayer:"",isTruckerMode:void 0,mapContainerId:"map-canvas",locationBarSetup:!1,isGoogleZoomVisible:!0,isMobileFirst:void 0,isERS:void 0},MapComp.methods.appUI={locationSearchBar:()=>{var o,e,a;MapComp.data.appUI.locationBarSetup||(MapComp.data.appUI.locationBarSetup=!0,o=document.getElementById("mapLocation"),e=document.getElementById("rcrLocationBtn"),a={componentRestrictions:{country:resources.AutocompleteCountryCode.split(",")},fields:["address_component,adr_address,alt_id,formatted_address,geometry,icon,id,name,place_id,plus_code,scope,type,url,utc_offset,vicinity"]},o&&MapComp[MapComp.library].setupSearchBar({rcrLocationBtn:e,locationInput:o,locationOptions:a}))},autocompleteForLocationBar:()=>{var o=MapComp.methods.appUI,e=$("body").hasClass("mobileFirst")&&0<!$(".ersLogo").length;isWta=0<$("#wtaMap").length,"True"==resources.EnableLocationSearchBar&&o.locationSearchBar(),Modernizr.mq("(max-width: 992px)")&&e&&!isWta&&(o.locationSearchBar(),$(".myCamerasContainer").appendTo(".myCamerasGroup"),$("footer").hide())},windowResize:()=>{var o,e=MapComp.data.appUI,a=MapComp.methods.appUI;"Android"!==getMobileOs()&&(isERS=0<$(".ersLogo").length,isWta=0<$("#wtaMap").length,$(window).outerWidth()<993?(0<$(".draggableWindowContainer").length&&$(document).trigger("closeDraggableWindow"),!e.isMobileFirst||isERS||isWta?a.showLegendToggleBtn(isWta,isERS):($("body").addClass("mobileFirst"),$(".mobileSetting").hide(),$("#layerSelection").hide(),$(".closeSideBar").is(":visible")&&$(".closeSideBar").trigger("click"),$(".showSideBar").is(":visible")?$(".mobileLocationBar").hide():$(".mobileLocationBar").is(":visible")||$(".mobileLocationBar").show(),$(".myCamerasContainer").appendTo(".myCamerasGroup")),e.isTablet||$("footer").hide(),a.autocompleteForLocationBar()):(0<$("body.mobileFirst").length&&($("body").removeClass("mobileFirst"),"True"!=resources.EnableLocationSearchBar?($(".showSideBar").is(":visible")||$(".showSideBar").trigger("click"),$(".mobileLocationBar").is(":visible")&&$(".mobileLocationBar").hide()):"true"===resources.OpenDesktopRoutePlannerDefault.toLowerCase()||"#:MyRoutes"==window.location.hash.substr(0)||-1!==window.location.hash.indexOf("#route")?$(".myRouteBtn").trigger("click",{skipPtBSetup:!0}):(MapComp.data.appUI.locationBtn.hide(),$("#sideBar").hide())),$(".mobileSetting").show(),(o=$(".myCamerasGroup")).is(":visible")&&o.hide(),null!=o.html()&&0<o.html().trim().length&&$(".myCamerasGroup .myCamerasContainer").appendTo(".myCamerasRoutePlanner"),$("footer").is(":visible")||isERS||$("footer").show()),MapComp.methods.appLayout.set({...e,isERS:isERS,isWta:isWta})),MapComp.isGoogle&&!MapComp.isRcr&&(a.appResize.checkRightBtmCtrls(),a.appResize.checkTopCenterCtrls(MapComp.map)),clearTimeout(window.resizedFinished),window.resizedFinished=setTimeout(function(){$("#routingResults").is(":visible")&&$(document).trigger("checkEventOnRoutePlanner",["windowResize"])},250)},showLegendToggleBtn:(o,e)=>{(o||e)&&($(".mobileSetting").show(),$(".legend-toggle").show(),$(".bootbox").is(":visible")||$("#layerSelection").hide())},adjustDefaultZoom(o){let e="";var a=Cookies.get("map");return a&&(a=JSON.parse(a),e=a.prevMapType),MapComp.isLibre&&"google"==e&&o--,resources.MaxZoom=parseInt(resources.MaxZoom),resources.MinZoom=parseInt(resources.MinZoom),o},setMapOptions(o){return{clustererModel:o.ClustererModel,mapTypeControlOptions:{style:MapComp.data.appUI.mapTypeStyle,position:MapComp.data.appUI.mapTypePos},center:MapComp.latLng(o.MapCenter.Latitude,o.MapCenter.Longitude),zoom:o.DefaultZoom,maxZoom:resources.MaxZoom,minZoom:resources.MinZoom,mapId:gMarkers.getMapId(),mapTypeId:o.MapTypeId,scaleControl:!0,zoomControl:MapComp.data.appUI.isGoogleZoomVisible,zoomControlOptions:{position:MapComp.data.appUI.zoomPos},fullscreenControl:!1,streetViewControlOptions:{position:MapComp.data.appUI.zoomPos},gestureHandling:"greedy",disableDefaultUI:!o.DisplayControls,styles:Cookies.get("mapClrMode")?MapComp.mapModeStyles.getStyles(Cookies.get("mapClrMode"),MapComp.data.appUI.hideLayer):MapComp.mapModeStyles.getStyles("light",MapComp.data.appUI.hideLayer),hideLayer:MapComp.data.appUI.hideLayer,cameraControl:!1}},getMapPadding(){let o=0,e=0;var a=$("#sideBarColContainer"),a=(a&&a.is(":visible")&&Modernizr.mq("(min-width: 993px)")&&(o=a.outerWidth(!0)),$("#layerSelection")),a=(a&&a.is(":visible")&&Modernizr.mq("(min-width: 993px)")&&(e=a.outerWidth(!0)),$("#drawer"));return{top:50,bottom:50,right:(e=a&&a.is(":visible")&&Modernizr.mq("(min-width: 993px)")?a.outerWidth(!0):e)+50,left:o+50}},validateLatLng(o){return/^[-+]?([1-8]?\d(\.\d+)?|90(\.0+)?),\s*[-+]?(180(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)$/.test(o)}};
MapComp.methods.toggleMapMode=e=>{MapComp.isDarkMode=!MapComp.isDarkMode,Cookies.set("mapClrMode",MapComp.isDarkMode?"dark":"light"),MapComp.toggleMapMode({isDarkMode:MapComp.isDarkMode,hideLayer:e.hideLayer}),MapComp.setDarkLabelsState({darkLabelsLayerType:e.darkLabelsLayerType,isDarkMode:MapComp.isDarkMode})},MapComp.methods.truckMode={truckerModeBtnBuilder:(e,t)=>{let r=MapComp.methods.truckMode;e.className="truckerModeContainer customMapCtrl";var o=document.createElement("button"),d=(o.className=Cookies.get("_truckerMode")?"truckerModeBtn btn btn-default active":"truckerModeBtn btn btn-default",o.setAttribute("id","truckerModeBtn"),o.setAttribute("type","button"),o.setAttribute("title",resources.TruckerMode),o.setAttribute("aria-label",resources.TruckerMode),o.setAttribute("tabindex",0),document.createElement("i")),a=(d.className="far fa-truck-moving",d.setAttribute("aria-label","true"),document.createElement("span"));a.innerHTML=resources.TruckerMode,d.setAttribute("aria-hidden","true"),d.setAttribute("title",resources.TruckerMode),o.appendChild(d),o.appendChild(a),e.appendChild(o),o.addEventListener("click",function(){$(".truckerModeBtn").hasClass("active")?(Cookies.remove("_truckerMode"),r.showTruckerModeIndicator(!1)):(Cookies.set("_truckerMode",!0),r.showTruckerModeIndicator(!0)),$(".truckerModeBtn").toggleClass("active")})},showTruckerModeIndicator:e=>{var t=MapComp.methods.truckMode,r=$(".topBanner .socialIcons"),o=$(".TruckerInfoLegendSection ul[id$='-children']");e?("undefined"!=typeof ga&&ga("send","event","TruckerMode","Show"),$(".truckerModeIndicator").show(),0<r.length&&r.addClass("down"),$(".mapLegend > .TruckerInfoLegendSection").is(":first")||t.moveLegendSectionToTop(!0,"TruckerInfoLegendSection"),0<o.length&&(o.removeAttr("hidden"),o.find("input[type='checkbox']").removeAttr("hidden"))):($(".truckerModeIndicator").hide(),0<r.length&&r.removeClass("down"),t.moveLegendSectionToTop(!1,"TruckerInfoLegendSection"),e=!1,0<o.length&&(o.attr("hidden",!0),o.find("input[type='checkbox']").attr("hidden",!0))),$(".TruckerInfoLegendSection label input[type='checkbox']").prop("checked",e),MapComp.appHelper&&$.each($(".TruckerInfoLegendSection label input[type='checkbox']"),function(e,t){MapComp.appHelper.layerToggled($(t).attr("data-layerid"),!1)})},moveLegendSectionToTop:(e,t)=>{var r=0<$("."+t+" .collapse.in").length;e?(document.querySelector(".groupHeaderSection").before(document.querySelector("."+t)),r||$("."+t+" .toggleButton").trigger("click")):($("."+t).insertBefore(".markerClusterLegend"),r&&$("."+t+" .toggleButton").trigger("click"))}},MapComp.methods.clearAllLegendLayers=()=>{$(".mapLegend input[type=checkbox]:checked").not(".mapLegend ul input[type=checkbox]").not("#LegendTopCheckbox").trigger("click")};
MapComp.methods.layerInfo={get:()=>{var t=MapComp.methods.layerInfo,a={iconDetails:{},apiUrls:{},tooltipBaseUrls:{},tooltipRegular:{},tooltipSize:{},feed:{},tile:{},vectorTile:{},icon:{},filterData:{}},o=$("#layerSelection"),e=$("input[type='checkbox'][data-icon], [data-polyline]",o),r=$("input[type='checkbox'][data-feedurl]",o),i=$("input[type='checkbox'][data-tileurlformat]",o),o=$("input[type='checkbox'][data-vectortileurlformat]",o),a=t.setCheckboxInfo(a,e);return a=t.setFeedInfo(a,r),a=t.setTileInfo(a,i),a=t.setVectorTileInfo(a,o),"undefined"!=typeof specialEvent&&(a.tooltipSize=specialEvent.method.setTooltipWidth(a.tooltipSize)),a},setCheckboxInfo:(r,t)=>{let i=MapComp.methods.layerInfo;return t.each(function(t,a){var a=$(a),o=a.attr("data-layerId"),e=a.attr("data-hasFilter"),e=(r.filterData[o]={layerId:o,hasFilter:e},r.apiUrls[o]=a.attr("data-jsonurl"),r.tooltipBaseUrls[o]=a.attr("data-tooltipbaseurl"),r.tooltipRegular[o]=a.attr("data-tooltipregular"),r.tooltipSize[o]=null!=a.attr("data-tooltipsize")?a.attr("data-tooltipsize"):null,r.icon[o]={minZoom:a.attr("data-minzoom"),maxZoom:a.attr("data-maxzoom")},i.parseIconDetails(a));e&&(r.iconDetails[o]=e)}),r},setFeedInfo:(e,t)=>(t.each(function(t,a){var a=$(a),o=a.attr("data-layerId");e.feed[o]={url:a.attr("data-feedurl"),tooltipsize:null!=a.attr("data-tooltipsize")?a.attr("data-tooltipsize"):null,clickable:"true"===a.attr("data-clickable").toLowerCase(),styleOptions:a.attr("data-styleOptions"),infoWindowTemplate:a.attr("data-infoWindowTemplate"),suppressInfoWindow:"true"===a.attr("data-suppressinfowindow").toLowerCase(),type:a.attr("data-type"),cacheTime:a.attr("data-cachetime")}}),e),setTileInfo:(e,t)=>(t.each(function(t,a){var a=$(a),o=a.attr("data-layerId");e.tile[o]={urlFormat:a.attr("data-tileurlformat"),minZoom:a.attr("data-minzoom"),maxZoom:a.attr("data-maxzoom"),tooltipUrlFormat:a.attr("data-tooltipurlformat"),highwayFill:a.attr("data-highwayfill"),highwayStroke:a.attr("data-highwaystroke"),animationFrames:a.attr("data-animationframes"),startingFrame:a.attr("data-startingframe"),startPlaying:"True"==a.attr("data-startPlaying"),opacity:a.attr("data-opacity"),zlevel:a.attr("data-zlevel"),cache:"True"==a.attr("data-cache")}}),e),setVectorTileInfo:(e,t)=>(t.each(function(t,a){var a=$(a),o=a.attr("data-layerId");e.vectorTile[o]={showHighlights:"True"==a.attr("data-showhighlights"),urlFormat:a.attr("data-vectortileurlformat"),minZoom:a.attr("data-minzoom"),maxZoom:a.attr("data-maxzoom"),tooltipUrlFormat:a.attr("data-tooltipurlformat"),highwayFill:a.attr("data-highwayfill"),highwayStroke:a.attr("data-highwaystroke"),opacity:a.attr("data-opacity"),zlevel:a.attr("data-zlevel"),cache:"True"==a.attr("data-cache")}}),e),splitStringToGooglePoint:t=>{t=MapComp.methods.layerInfo.splitStringToNumberArray(t);return MapComp.mapPoint(t)},splitStringToGoogleSize:t=>{t=MapComp.methods.layerInfo.splitStringToNumberArray(t);return MapComp.mapSize(t)},splitStringToNumberArray:t=>{var a=[],o=t.split(",");for(let t=0;t<o.length;t++)a[t]=+o[t];return a},parseIconDetails:t=>{var a,o,e=MapComp.methods.layerInfo,r=t.attr("data-icon");return r?(a=t.attr("data-iconsize"),o=t.attr("data-iconanchor"),t=t.attr("data-iconorigin"),r={url:r},a&&(r.size=e.splitStringToGoogleSize(a)),o&&(r.anchor=e.splitStringToGooglePoint(o)),t&&(r.origin=e.splitStringToGooglePoint(t)),r):null}};
MapComp.getLatLngObj=e=>({latitude:e.latLng.lat(),longitude:e.latLng.lng()}),MapComp.getIndexOfLayerId=e=>{for(var o=MapComp.map.overlayMapTypes.getArray(),a=[],p=0;p<o.length;p++)o[p].layerid==e&&a.push(p);return a},MapComp.helpers.getLatLng=({lat:e,lng:o})=>new google.maps.LatLng(e,o),MapComp.helpers.getMapObject=(e=MapComp.map)=>e,MapComp.helpers.createMarker=(e,o=MapComp.map)=>new google.maps.Marker({...e,map:o,position:new google.maps.LatLng(e.position.lat,e.position.lng)}),MapComp.helpers.removeMarker=e=>{e.setMap(null)},MapComp.helpers.removePolyline=e=>{e.setMap(null)},MapComp.helpers.createPolyline=e=>new google.maps.Polyline(e),MapComp.helpers.lineHoverIn=(e,o)=>{e.setOptions({strokeOpacity:o.strokeOpacity})},MapComp.helpers.lineHoverOut=(e,o)=>{e.setOptions({strokeOpacity:o.strokeOpacity})},MapComp.helpers.createLatLngBounds=()=>new google.maps.LatLngBounds,MapComp.helpers.panMapBy=(e,o=MapComp.map)=>{o.panBy(e[0],e[1])},MapComp.helpers.getMapDiv=(e=MapComp.map)=>e.getDiv(),MapComp.helpers.extendBounds=(o,e)=>(e.forEach(e=>{o.extend(new google.maps.LatLng(e.lat,e.lng))}),o),MapComp.helpers.decodePolylinePath=e=>google.maps.geometry.encoding.decodePath(e),MapComp.helpers.fitMapBounds=(e,o=MapComp.map)=>{o.fitBounds(e)},MapComp.helpers.zoomToMax=(e,o=MapComp.map)=>{var a;MapComp.helpers.panMapBy([0,0],MapComp.map),e&&(a=o.getZoom(),o.setZoom(e<a?e:a))},MapComp.latLng=(e,o)=>new google.maps.LatLng(e,o),MapComp.ControlPosition=e=>google.maps.ControlPosition[e],MapComp.getMapDiv=(e=MapComp.map)=>e.getDiv(),MapComp.helpers.panTo=(e,o)=>{o.panTo(e)},MapComp.helpers.setZoom=(e,o)=>{o.setZoom(e)},MapComp.helpers.getDetourSingleWaypointMarker=(e,o,a)=>new google.maps.Marker({position:new google.maps.LatLng(o.point.latitude,o.point.longitude),icon:{path:google.maps.SymbolPath.CIRCLE,scale:3,anchor:new google.maps.Point(-.5,0)},draggable:!0,map:a}),MapComp.helpers.getDetourMultiWaypointMarker=(e,o,a)=>new google.maps.Marker({position:new google.maps.LatLng(a.point.latitude,a.point.longitude),icon:{path:google.maps.SymbolPath.FORWARD_OPEN_ARROW,scale:3,rotation:o},draggable:!0,map:map}),MapComp.helpers.setListenersForDetourWaypoint=(e,a)=>{google.maps.event.addListener(e.marker,"dblclick",function(e){var o=a.getMarkerObjFromMarker(this);0!=o.index&&o.index!=a.waypoints.length-1&&(a.waypoints.splice(a.getMarkerObjFromMarker(this).index,1),a.update())}),google.maps.event.addListener(e.marker,"dragstart",function(e){a.getMarkerObjFromMarker(this).marker.setOptions({opacity:.5,crossOnDrag:!1})}),google.maps.event.addListener(e.marker,"dragend",function(e){var o=a.getMarkerObjFromMarker(this);a.waypoints[o.index].point.latitude=e.latLng.lat(),a.waypoints[o.index].point.longitude=e.latLng.lng(),a.update()})},MapComp.helpers.buildPolylineObjectAndAddToArray=(e,o,a,p)=>((o={index:e,polyline:new google.maps.Polyline(a.options)}).polyline.setPath(google.maps.geometry.encoding.decodePath(p)),a.polylines.push(o),o),MapComp.helpers.setPolylineListeners=(o,p)=>{google.maps.event.addListener(o.polyline,"dragstart",function(e){var o=p.getPolylineObjFromPolyline(this),a={index:-1,polyline:new google.maps.Polyline(p.options)};a.polyline.setPath(MapComp.decodePolyline(MapComp.encodePolyline(o.polyline.getPath()))),p.polylines.push(a),o.polyline.setOptions({strokeColor:"transparent"}),p.marker=new google.maps.Marker({position:e.latLng,icon:{path:google.maps.SymbolPath.CIRCLE,scale:3},draggable:!1,map:map}),p.markers.push({marker:p.marker})}),google.maps.event.addListener(o.polyline,"drag",function(e){p.marker.setPosition(e.latLng)}),google.maps.event.addListener(o.polyline,"dragend",function(e){p.updateWaypoint(e,o)})},MapComp.helpers.preparePolylineOptions=(e,o,a)=>{};
MapComp.encodePolyline=e=>google.maps.geometry.encoding.encodePath(e),MapComp.decodePolyline=e=>google.maps.geometry.encoding.decodePath(e);
MapComp.data.routeLine={polylines:{},routeBounds:{},movingMarker:null,movingPolyline:null},MapComp.methods.routeLine={zoomAndCenterToLine(o){let e=MapComp.data.routeLine;setTimeout(()=>MapComp.map.fitBounds(e.routeBounds[o.id],MapComp.methods.appUI.getMapPadding()))}},MapComp.createRouteLine=l=>{var o=l.index;let t=MapComp.routePolyline.getRoutePolylineObjById(l);if(t&&t.polyline)t.polyline.setOptions({...t.options}),t.polyline&&MapComp.methods.routeLine.zoomAndCenterToLine(t);else{let a=new google.maps.Polyline({...t.options,path:t.polylinePath});a.setMap(MapComp.map),google.maps.event.addListener(a,"click",function(o){t.isActive||$('#routeTabs a[data-guids="'+t.pid+'"]').click()}),t.polylineInfoArray&&0<t.polylineInfoArray.length&&0<t.polylineInfoArray[o]?.length&&google.maps.event.addListener(a,"mouseover",function(o){t.isActive?appPublicApi.appHelper.showInfoWindow(t.polylineInfoArray[i],null,!0,o.latLng):appPublicApi.appHelper.showInfoWindow('<span class="simpleToolTip"> Select route '+routeNum+" to see details</span>",null,!0,o.latLng)}),t.draggableRoutesEnabled&&(a.addListener("dragstart",function(o){var e,n=MapComp.data.routeLine;(t=MapComp.routePolyline.getRoutePolylineObjById(l)).isActive&&(e=new google.maps.Polyline({path:t.polylinePath,map:MapComp.map,strokeColor:t.options.strokeColor,draggable:!1}),t.copy=e,a.setOptions({strokeColor:"transparent"}),n.movingMarker=new google.maps.Marker({position:o.latLng,icon:{path:google.maps.SymbolPath.CIRCLE,scale:3},draggable:!1,map:MapComp.map}),n.movingPolyline=t)}),a.addListener("drag",function(o){var e=MapComp.data.routeLine;e.movingPolyline&&e.movingMarker&&e.movingMarker.setPosition(o.latLng)}),a.addListener("dragend",function(o){var e=MapComp.data.routeLine;t=MapComp.routePolyline.getRoutePolylineObjById(l),e.movingPolyline&&(t.copy.setMap(null),google.maps.geometry.poly.isLocationOnEdge(o.latLng,a)||(t.addWaypoint({latLng:o.latLng,lineIndex:e.movingPolyline.index}),e.movingMarker.setMap(null),e.movingMarker=null,e.movingPolyline=null))})),t.polyline=a}},MapComp.clearRouteLines=o=>{o=MapComp.routePolyline.getRoutePolylineObjById(o);o&&o.polyline&&(delete MapComp.data.routeLine.routeBounds[o.id],o.polyline.setMap(null))},MapComp.fitRoutesOnMap=o=>{var e,n=MapComp.data.routeLine;for(e in o.allLines){var a=o.allLines[e],a=a.reduce((o,e)=>o.extend(e),new google.maps.LatLngBounds(a[0],a[0]));n.routeBounds[e]=a}let l=Object.values(n.routeBounds).reduce((o,e)=>o.union(e),new google.maps.LatLngBounds);setTimeout(()=>{MapComp.map.fitBounds(l,MapComp.methods.appUI.getMapPadding())})},MapComp.updateTransitColours=(o,n)=>{o.forEach((o,e)=>{o.options.strokeColor=n[e],o.polyline.setOptions({strokeColor:n[e]})})};
const vectorTileLayerListeners={},hexToRgba=(e,r)=>{if(!e)return`rgba(0,0,0,${r})`;let t=r;return 1<t&&(t=r/255),`rgba(${parseInt(e.slice(1,3),16)},${parseInt(e.slice(3,5),16)},${parseInt(e.slice(5,7),16)},${t})`};MapComp.AddVectorLayer=(r,e,a,i,t,l,o,p,s=MapComp.map)=>{l<=0&&(l=16);var n=["outline","segments"],p=(p&&n.unshift("highlight"),{layerid:r,url:e,visibleLayers:n,clickableLayers:["segments"],cache:!0,sourceMaxZoom:l,style:(e,r)=>{var t=MapComp.data.rcr?.currentSelected??null,l=a[e.properties.style],r=r.zoom,o=i[r]??l.StrokeWidth;if("highlightWtaStyle"==e.properties.style){if(o*=4,t===e.properties.wtaId)return{strokeStyle:MapComp.data.rcrUI.selectedSegmentClr.onMap,lineWidth:o};if(!e.properties.highlight)return null}switch(e.type){case 2:return e.properties.outline?{strokeStyle:l.OutlineColour,lineDash:l.OutlineDash,lineWidth:2*o}:{strokeStyle:hexToRgba(l.StrokeColour,l.StrokeAlpha),lineDash:l.StrokeDash,lineWidth:o};case 3:return{fillStyle:hexToRgba(l.FillColour,l.FillAlpha),strokeStyle:hexToRgba(l.StrokeColour,l.StrokeAlpha),lineWidth:o};default:return null}}});vectorTileLayerListeners[r]=[];let u=new MVTSource(s,p);MapComp.mvtSource?MapComp.mvtSource.push(u):MapComp.mvtSource=[u];e=s.addListener("mousemove",function(e){u.onMouseHover(e,e=>{e.feature?s.setOptions({draggableCursor:"pointer"}):s.setOptions({draggableCursor:null})},{setSelected:!1,delay:0})});vectorTileLayerListeners[r].push(e),o&&(n=s.addListener("click",function(e){u.onClick(e,e=>{e.feature&&o(r,e.feature.properties,e.latLng.lat(),e.latLng.lng())},{multipleSelection:!1,setSelected:!1,toggleSelection:!1})}),vectorTileLayerListeners[r].push(n)),0<=t?s.overlayMapTypes.insertAt(t,u):s.overlayMapTypes.push(u)},MapComp.RemoveVectorTileLayer=e=>{var r=MapComp.getIndexOfLayerId(e);if(0<=r.length)for(var t=0;t<r.length;t++)MapComp.map.overlayMapTypes.removeAt(r[0]);var l=vectorTileLayerListeners[e];if(l){for(t=0;t<l.length;t++)google.maps.event.removeListener(l[t]);delete vectorTileLayerListeners[e]}},MapComp.forceVectorTilesRefresh=()=>{for(var e=MapComp.map.overlayMapTypes.getArray(),r=0;r<e.length;r++){var t=e[r];t.isVectorTileOverlayMapType&&t.redrawAllTiles(!0)}},MapComp.vectorTileClick=({layerId:r,lat:t,lng:l,uri:e,appHelper:o})=>{$.ajax(e).done(function(e){o.showInfoWindow(e,null,!0,new google.maps.LatLng(t,l),r,!0,!0),o.centerTooltip.run()})},MapComp.getIndexOfLayerId=e=>{for(var r=MapComp.map.overlayMapTypes.getArray(),t=[],l=0;l<r.length;l++)r[l].layerid==e&&t.push(l);return t};
function VectorTile(e,t){for(this.layers={},this._buffer=e,t=t||e.length;e.pos<t;){var i,r=e.readVarint();3==r>>3?(i=this._readLayer()).length&&(this.layers[i.name]=i):e.skip(r)}this.parseGeometries()}function VectorTileFeature(e,t,i,r,s){for(this.properties={},this.extent=i,this.type=0,this._buffer=e,this._geometry=-1,t=t||e.length;e.pos<t;){var n=e.readVarint(),a=n>>3;if(1==a)this._id=e.readVarint();else if(2==a)for(var o=e.readVarint(),h=e.pos+o;e.pos<h;){var l=r[e.readVarint()],u=s[e.readVarint()];this.properties[l]=u}else 3==a?this.type=e.readVarint():(4==a&&(this._geometry=e.pos),e.skip(n))}}function VectorTileLayer(e,t){var i,r;for(this.version=1,this.name=null,this.extent=4096,this.length=0,this._buffer=e,this._keys=[],this._values=[],this._features=[],t=t||e.length;e.pos<t;)15==(r=(i=e.readVarint())>>3)?this.version=e.readVarint():1==r?this.name=e.readString():5==r?this.extent=e.readVarint():2==r?(this.length++,this._features.push(e.pos),e.skip(i)):3==r?this._keys.push(e.readString()):4==r?this._values.push(this.readFeatureValue()):e.skip(i)}function Point(e,t){this.x=e,this.y=t}!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Pbf=e()}(function(){return function r(s,n,a){function o(i,e){if(!n[i]){if(!s[i]){var t="function"==typeof require&&require;if(!e&&t)return t(i,!0);if(h)return h(i,!0);e=new Error("Cannot find module '"+i+"'");throw e.code="MODULE_NOT_FOUND",e}t=n[i]={exports:{}};s[i][0].call(t.exports,function(e){var t=s[i][1][e];return o(t||e)},t,t.exports,r,s,n,a)}return n[i].exports}for(var h="function"==typeof require&&require,e=0;e<a.length;e++)o(a[e]);return o}({1:[function(e,t,i){"use strict";function r(e){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(e)?e:new Uint8Array(e||0),this.pos=0,this.type=0,this.length=this.buf.length}function s(e){return e.type===r.Bytes?e.readVarint()+e.pos:e.pos+1}function a(e,t,i){return i?4294967296*t+(e>>>0):4294967296*(t>>>0)+(e>>>0)}function n(e,t,i){var r=t<=16383?1:t<=2097151?2:t<=268435455?3:Math.ceil(Math.log(t)/(7*Math.LN2));i.realloc(r);for(var s=i.pos-1;e<=s;s--)i.buf[s+r]=i.buf[s]}function o(e,t){for(var i=0;i<e.length;i++)t.writeVarint(e[i])}function h(e,t){for(var i=0;i<e.length;i++)t.writeSVarint(e[i])}function l(e,t){for(var i=0;i<e.length;i++)t.writeFloat(e[i])}function u(e,t){for(var i=0;i<e.length;i++)t.writeDouble(e[i])}function c(e,t){for(var i=0;i<e.length;i++)t.writeBoolean(e[i])}function d(e,t){for(var i=0;i<e.length;i++)t.writeFixed32(e[i])}function f(e,t){for(var i=0;i<e.length;i++)t.writeSFixed32(e[i])}function p(e,t){for(var i=0;i<e.length;i++)t.writeFixed64(e[i])}function y(e,t){for(var i=0;i<e.length;i++)t.writeSFixed64(e[i])}function g(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16)+16777216*e[t+3]}function v(e,t,i){e[i]=t,e[i+1]=t>>>8,e[i+2]=t>>>16,e[i+3]=t>>>24}function w(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16)+(e[t+3]<<24)}t.exports=r;var _=e("ieee754"),T=(r.Varint=0,r.Fixed64=1,r.Bytes=2,r.Fixed32=5,4294967296),x=1/T;r.prototype={destroy:function(){this.buf=null},readFields:function(e,t,i){for(i=i||this.length;this.pos<i;){var r=this.readVarint(),s=r>>3,n=this.pos;this.type=7&r,e(s,t,this),this.pos===n&&this.skip(r)}return t},readMessage:function(e,t){return this.readFields(e,t,this.readVarint()+this.pos)},readFixed32:function(){var e=g(this.buf,this.pos);return this.pos+=4,e},readSFixed32:function(){var e=w(this.buf,this.pos);return this.pos+=4,e},readFixed64:function(){var e=g(this.buf,this.pos)+g(this.buf,this.pos+4)*T;return this.pos+=8,e},readSFixed64:function(){var e=g(this.buf,this.pos)+w(this.buf,this.pos+4)*T;return this.pos+=8,e},readFloat:function(){var e=_.read(this.buf,this.pos,!0,23,4);return this.pos+=4,e},readDouble:function(){var e=_.read(this.buf,this.pos,!0,52,8);return this.pos+=8,e},readVarint:function(e){var t=this.buf,i=127&(r=t[this.pos++]);if(r<128||(i|=(127&(r=t[this.pos++]))<<7,r<128)||(i|=(127&(r=t[this.pos++]))<<14,r<128)||(i|=(127&(r=t[this.pos++]))<<21,r<128))return i;var r=i|=(15&t[this.pos])<<28,t=e,i=this,e=i.buf,s=e[i.pos++],n=(112&s)>>4;if(s<128)return a(r,n,t);if(n|=(127&(s=e[i.pos++]))<<3,s<128)return a(r,n,t);if(n|=(127&(s=e[i.pos++]))<<10,s<128)return a(r,n,t);if(n|=(127&(s=e[i.pos++]))<<17,s<128)return a(r,n,t);if(n|=(127&(s=e[i.pos++]))<<24,s<128)return a(r,n,t);if(n|=(1&(s=e[i.pos++]))<<31,s<128)return a(r,n,t);throw new Error("Expected varint not more than 10 bytes")},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var e=this.readVarint();return e%2==1?(e+1)/-2:e/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var e=this.readVarint()+this.pos,t=function(e,t,i){for(var r="",s=t;s<i;){var n,a,o,h=e[s],l=null,u=239<h?4:223<h?3:191<h?2:1;if(i<s+u)break;1===u?h<128&&(l=h):2===u?128==(192&(n=e[s+1]))&&(l=(31&h)<<6|63&n)<=127&&(l=null):3===u?(n=e[s+1],a=e[s+2],128==(192&n)&&128==(192&a)&&((l=(15&h)<<12|(63&n)<<6|63&a)<=2047||55296<=l&&l<=57343)&&(l=null)):4===u&&(n=e[s+1],a=e[s+2],o=e[s+3],128==(192&n))&&128==(192&a)&&128==(192&o)&&((l=(15&h)<<18|(63&n)<<12|(63&a)<<6|63&o)<=65535||1114112<=l)&&(l=null),null===l?(l=65533,u=1):65535<l&&(l-=65536,r+=String.fromCharCode(l>>>10&1023|55296),l=56320|1023&l),r+=String.fromCharCode(l),s+=u}return r}(this.buf,this.pos,e);return this.pos=e,t},readBytes:function(){var e=this.readVarint()+this.pos,t=this.buf.subarray(this.pos,e);return this.pos=e,t},readPackedVarint:function(e,t){var i=s(this);for(e=e||[];this.pos<i;)e.push(this.readVarint(t));return e},readPackedSVarint:function(e){var t=s(this);for(e=e||[];this.pos<t;)e.push(this.readSVarint());return e},readPackedBoolean:function(e){var t=s(this);for(e=e||[];this.pos<t;)e.push(this.readBoolean());return e},readPackedFloat:function(e){var t=s(this);for(e=e||[];this.pos<t;)e.push(this.readFloat());return e},readPackedDouble:function(e){var t=s(this);for(e=e||[];this.pos<t;)e.push(this.readDouble());return e},readPackedFixed32:function(e){var t=s(this);for(e=e||[];this.pos<t;)e.push(this.readFixed32());return e},readPackedSFixed32:function(e){var t=s(this);for(e=e||[];this.pos<t;)e.push(this.readSFixed32());return e},readPackedFixed64:function(e){var t=s(this);for(e=e||[];this.pos<t;)e.push(this.readFixed64());return e},readPackedSFixed64:function(e){var t=s(this);for(e=e||[];this.pos<t;)e.push(this.readSFixed64());return e},skip:function(e){e&=7;if(e===r.Varint)for(;127<this.buf[this.pos++];);else if(e===r.Bytes)this.pos=this.readVarint()+this.pos;else if(e===r.Fixed32)this.pos+=4;else{if(e!==r.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8}},writeTag:function(e,t){this.writeVarint(e<<3|t)},realloc:function(e){for(var t,i=this.length||16;i<this.pos+e;)i*=2;i!==this.length&&((t=new Uint8Array(i)).set(this.buf),this.buf=t,this.length=i)},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(e){this.realloc(4),v(this.buf,e,this.pos),this.pos+=4},writeSFixed32:function(e){this.realloc(4),v(this.buf,e,this.pos),this.pos+=4},writeFixed64:function(e){this.realloc(8),v(this.buf,-1&e,this.pos),v(this.buf,Math.floor(e*x),this.pos+4),this.pos+=8},writeSFixed64:function(e){this.realloc(8),v(this.buf,-1&e,this.pos),v(this.buf,Math.floor(e*x),this.pos+4),this.pos+=8},writeVarint:function(e){if(268435455<(e=+e||0)||e<0){var t,i,r,s=e,n=this;if(0<=s?(r=s%4294967296|0,t=s/4294967296|0):(t=~(-s/4294967296),4294967295^(r=~(-s%4294967296))?r=r+1|0:t=t+1|(r=0)),0x10000000000000000<=s||s<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");n.realloc(10),s=r,(r=n).buf[r.pos++]=127&s|128,s>>>=7,r.buf[r.pos++]=127&s|128,s>>>=7,r.buf[r.pos++]=127&s|128,s>>>=7,r.buf[r.pos++]=127&s|128,s>>>=7,r.buf[r.pos]=127&s,i=(7&(s=t))<<4,(n=n).buf[n.pos++]|=i|((s>>>=3)?128:0),s&&(n.buf[n.pos++]=127&s|((s>>>=7)?128:0),s)&&(n.buf[n.pos++]=127&s|((s>>>=7)?128:0),s)&&(n.buf[n.pos++]=127&s|((s>>>=7)?128:0),s)&&(n.buf[n.pos++]=127&s|((s>>>=7)?128:0),s)&&(n.buf[n.pos++]=127&s)}else this.realloc(4),this.buf[this.pos++]=127&e|(127<e?128:0),e<=127||(this.buf[this.pos++]=127&(e>>>=7)|(127<e?128:0),e<=127)||(this.buf[this.pos++]=127&(e>>>=7)|(127<e?128:0),e<=127)||(this.buf[this.pos++]=e>>>7&127)},writeSVarint:function(e){this.writeVarint(e<0?2*-e-1:2*e)},writeBoolean:function(e){this.writeVarint(Boolean(e))},writeString:function(e){e=String(e),this.realloc(4*e.length),this.pos++;var t=this.pos,e=(this.pos=function(e,t,i){for(var r,s,n=0;n<t.length;n++){if(55295<(r=t.charCodeAt(n))&&r<57344){if(!s){56319<r||n+1===t.length?(e[i++]=239,e[i++]=191,e[i++]=189):s=r;continue}if(r<56320){e[i++]=239,e[i++]=191,e[i++]=189,s=r;continue}r=s-55296<<10|r-56320|65536,s=null}else s&&(e[i++]=239,e[i++]=191,e[i++]=189,s=null);r<128?e[i++]=r:(r<2048?e[i++]=r>>6|192:(r<65536?e[i++]=r>>12|224:(e[i++]=r>>18|240,e[i++]=r>>12&63|128),e[i++]=r>>6&63|128),e[i++]=63&r|128)}return i}(this.buf,e,this.pos),this.pos-t);128<=e&&n(t,e,this),this.pos=t-1,this.writeVarint(e),this.pos+=e},writeFloat:function(e){this.realloc(4),_.write(this.buf,e,this.pos,!0,23,4),this.pos+=4},writeDouble:function(e){this.realloc(8),_.write(this.buf,e,this.pos,!0,52,8),this.pos+=8},writeBytes:function(e){var t=e.length;this.writeVarint(t),this.realloc(t);for(var i=0;i<t;i++)this.buf[this.pos++]=e[i]},writeRawMessage:function(e,t){this.pos++;var i=this.pos,e=(e(t,this),this.pos-i);128<=e&&n(i,e,this),this.pos=i-1,this.writeVarint(e),this.pos+=e},writeMessage:function(e,t,i){this.writeTag(e,r.Bytes),this.writeRawMessage(t,i)},writePackedVarint:function(e,t){this.writeMessage(e,o,t)},writePackedSVarint:function(e,t){this.writeMessage(e,h,t)},writePackedBoolean:function(e,t){this.writeMessage(e,c,t)},writePackedFloat:function(e,t){this.writeMessage(e,l,t)},writePackedDouble:function(e,t){this.writeMessage(e,u,t)},writePackedFixed32:function(e,t){this.writeMessage(e,d,t)},writePackedSFixed32:function(e,t){this.writeMessage(e,f,t)},writePackedFixed64:function(e,t){this.writeMessage(e,p,t)},writePackedSFixed64:function(e,t){this.writeMessage(e,y,t)},writeBytesField:function(e,t){this.writeTag(e,r.Bytes),this.writeBytes(t)},writeFixed32Field:function(e,t){this.writeTag(e,r.Fixed32),this.writeFixed32(t)},writeSFixed32Field:function(e,t){this.writeTag(e,r.Fixed32),this.writeSFixed32(t)},writeFixed64Field:function(e,t){this.writeTag(e,r.Fixed64),this.writeFixed64(t)},writeSFixed64Field:function(e,t){this.writeTag(e,r.Fixed64),this.writeSFixed64(t)},writeVarintField:function(e,t){this.writeTag(e,r.Varint),this.writeVarint(t)},writeSVarintField:function(e,t){this.writeTag(e,r.Varint),this.writeSVarint(t)},writeStringField:function(e,t){this.writeTag(e,r.Bytes),this.writeString(t)},writeFloatField:function(e,t){this.writeTag(e,r.Fixed32),this.writeFloat(t)},writeDoubleField:function(e,t){this.writeTag(e,r.Fixed64),this.writeDouble(t)},writeBooleanField:function(e,t){this.writeVarintField(e,Boolean(t))}}},{ieee754:2}],2:[function(e,t,i){i.read=function(e,t,i,r,s){var n,a,o=8*s-r-1,h=(1<<o)-1,l=h>>1,u=-7,c=i?s-1:0,d=i?-1:1,s=e[t+c];for(c+=d,n=s&(1<<-u)-1,s>>=-u,u+=o;0<u;n=256*n+e[t+c],c+=d,u-=8);for(a=n&(1<<-u)-1,n>>=-u,u+=r;0<u;a=256*a+e[t+c],c+=d,u-=8);if(0===n)n=1-l;else{if(n===h)return a?NaN:1/0*(s?-1:1);a+=Math.pow(2,r),n-=l}return(s?-1:1)*a*Math.pow(2,n-r)},i.write=function(e,t,i,r,s,n){var a,o,h=8*n-s-1,l=(1<<h)-1,u=l>>1,c=23===s?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:n-1,f=r?1:-1,n=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,a=l):(a=Math.floor(Math.log(t)/Math.LN2),t*(r=Math.pow(2,-a))<1&&(a--,r*=2),2<=(t+=1<=a+u?c/r:c*Math.pow(2,1-u))*r&&(a++,r/=2),l<=a+u?(o=0,a=l):1<=a+u?(o=(t*r-1)*Math.pow(2,s),a+=u):(o=t*Math.pow(2,u-1)*Math.pow(2,s),a=0));8<=s;e[i+d]=255&o,d+=f,o/=256,s-=8);for(a=a<<s|o,h+=s;0<h;e[i+d]=255&a,d+=f,a/=256,h-=8);e[i+d-f]|=128*n}},{}]},{},[1])(1)}),VectorTile.prototype._readLayer=function(){var e=this._buffer,t=e.readVarint(),t=e.pos+t,i=new VectorTileLayer(e,t);return e.pos=t,i},VectorTile.prototype.parseGeometries=function(){for(var e in this.layers){var t=this.layers[e];t.parsedFeatures=[];for(var i=0,r=t._features.length;i<r;i++){var s=t.feature(i);s.coordinates=s.loadGeometry(),t.parsedFeatures.push(s)}}},VectorTileFeature.types=["Unknown","Point","LineString","Polygon"],VectorTileFeature.prototype.loadGeometry=function(){for(var e,t,i=this._buffer,r=(i.pos=this._geometry,i.readVarint()),s=i.pos+r,n=1,a=0,o=0,h=0,l=[];i.pos<s;)if(a||(n=7&(t=i.readVarint()),a=t>>3),a--,1===n||2===n)o+=i.readSVarint(),h+=i.readSVarint(),1===n&&(e&&l.push(e),e=[]),e.push(new Point(o,h));else{if(7!==n)throw new Error("unknown command "+n);e.push(e[0].clone())}return e&&l.push(e),l},VectorTileFeature.prototype.bbox=function(){for(var e,t=this._buffer,i=(t.pos=this._geometry,t.readVarint()),r=t.pos+i,s=1,n=0,a=0,o=0,h=1/0,l=-1/0,u=1/0,c=-1/0;t.pos<r;)if(n||(s=7&(e=t.readVarint()),n=e>>3),n--,1===s||2===s)(a+=t.readSVarint())<h&&(h=a),l<a&&(l=a),(o+=t.readSVarint())<u&&(u=o),c<o&&(c=o);else if(7!==s)throw new Error("unknown command "+s);return[h,u,l,c]},VectorTileLayer.prototype.readFeatureValue=function(){for(var e,t,i=this._buffer,r=null,s=i.readVarint(),n=i.pos+s;i.pos<n;)1==(t=(e=i.readVarint())>>3)?r=i.readString():2==t?r=i.readFloat():3==t?r=i.readDouble():4==t||5==t?r=i.readVarint():6==t?r=i.readSVarint():7==t?r=Boolean(i.readVarint()):i.skip(e);return r},VectorTileLayer.prototype.feature=function(e){if(e<0||e>=this._features.length)throw new Error("feature index out of bounds");this._buffer.pos=this._features[e];e=this._buffer.readVarint()+this._buffer.pos;return new VectorTileFeature(this._buffer,e,this.extent,this._keys,this._values)},Point.prototype={clone:function(){return new Point(this.x,this.y)},add:function(e){return this.clone()._add(e)},sub:function(e){return this.clone()._sub(e)},mult:function(e){return this.clone()._mult(e)},div:function(e){return this.clone()._div(e)},rotate:function(e){return this.clone()._rotate(e)},matMult:function(e){return this.clone()._matMult(e)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(e){return this.x===e.x&&this.y===e.y},dist:function(e){return Math.sqrt(this.distSqr(e))},distSqr:function(e){var t=e.x-this.x,e=e.y-this.y;return t*t+e*e},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(e){return Math.atan2(this.y-e.y,this.x-e.x)},angleWith:function(e){return this.angleWithSep(e.x,e.y)},angleWithSep:function(e,t){return Math.atan2(this.x*t-this.y*e,this.x*e+this.y*t)},_matMult:function(e){var t=e[0]*this.x+e[1]*this.y,e=e[2]*this.x+e[3]*this.y;return this.x=t,this.y=e,this},_add:function(e){return this.x+=e.x,this.y+=e.y,this},_sub:function(e){return this.x-=e.x,this.y-=e.y,this},_mult:function(e){return this.x*=e,this.y*=e,this},_div:function(e){return this.x/=e,this.y/=e,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var e=this.y;return this.y=this.x,this.x=-e,this},_rotate:function(e){var t=Math.cos(e),e=Math.sin(e),i=t*this.x-e*this.y,e=e*this.x+t*this.y;return this.x=i,this.y=e,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},Point.convert=function(e){return!(e instanceof Point)&&Array.isArray(e)?new Point(e[0],e[1]):e},MERCATOR={fromLatLngToPoint:function(e){var t=Math.min(Math.max(Math.sin(e.lat()*(Math.PI/180)),-.9999),.9999);return{x:128+e.lng()*(256/360),y:128+.5*Math.log((1+t)/(1-t))*(-256/(2*Math.PI))}},fromPointToLatLng:function(e){return{lat:(2*Math.atan(Math.exp((e.y-128)/(-256/(2*Math.PI))))-Math.PI/2)/(Math.PI/180),lng:(e.x-128)/(256/360)}},getTileAtLatLng:function(e,t){var i=256/Math.pow(2,t),e=this.fromLatLngToPoint(e);return{x:Math.floor(e.x/i),y:Math.floor(e.y/i),z:t}},getTileBounds:function(e){e=this.normalizeTile(e);var t=256/Math.pow(2,e.z),i={x:e.x*t,y:e.y*t+t},e={x:e.x*t+t,y:e.y*t};return{sw:this.fromPointToLatLng(i),ne:this.fromPointToLatLng(e)}},normalizeTile:function(e){var t=Math.pow(2,e.z);return e.x=(e.x%t+t)%t,e.y=(e.y%t+t)%t,e},fromLatLngToPixels:function(e,t){var i=e.getBounds(),r=i.getNorthEast(),i=i.getSouthWest(),r=e.getProjection().fromLatLngToPoint(r),i=e.getProjection().fromLatLngToPoint(i),s=Math.pow(2,e.getZoom()),e=e.getProjection().fromLatLngToPoint(t);return{x:(e.x-i.x)*s,y:(e.y-r.y)*s}},fromLatLngToTilePoint:function(e,t){var i=e.getZoom(),i=this.getTileAtLatLng(t.latLng,i),i=this.getTileBounds(i),r=new google.maps.LatLng(i.sw),i=new google.maps.LatLng(i.ne),r=this.fromLatLngToPixels(e,r),e=this.fromLatLngToPixels(e,i);return{x:t.pixel.x-r.x,y:t.pixel.y-e.y}},isPointInPolygon:function(e,t){if(t&&t.length){for(var i=!1,r=-1,s=t.length,n=s-1;++r<s;n=r)(t[r].y<=e.y&&e.y<t[n].y||t[n].y<=e.y&&e.y<t[r].y)&&e.x<(t[n].x-t[r].x)*(e.y-t[r].y)/(t[n].y-t[r].y)+t[r].x&&(i=!i);return i}},in_circle:function(e,t,i,r,s){return Math.pow(e-r,2)+Math.pow(t-s,2)<=Math.pow(i,2)},getDistanceFromLine:function(e,t){var i=Number.POSITIVE_INFINITY;if(t&&1<t.length)for(var r=0,s=t.length-1;r<s;r++){var n=this.projectPointOnLineSegment(e,t[r],t[r+1]);n<=i&&(i=n)}return i},projectPointOnLineSegment:function(e,t,i){var r,s=e.x,e=e.y,n=t.x,t=t.y,a=i.x,i=i.y,o=a-n,h=i-t,l=o*o+h*h,l=0!=l?((s-n)*o+(e-t)*h)/l:-1,a=l<0?(r=n,t):1<l?(r=a,i):(r=n+l*o,t+l*h),i=s-r,n=e-a;return Math.sqrt(i*i+n*n)}};class MVTFeature{constructor(e){this.mVTSource=e.mVTSource,this.selected=e.selected,this.featureId=e.featureId,this.tiles=[],this.style=e.style,this.type=e.vectorTileFeature.type,this.properties=e.vectorTileFeature.properties,this.addTileFeature(e.vectorTileFeature,e.tileContext),this._draw=e.customDraw||this.defaultDraw,this.selected&&this.select()}addTileFeature(e,t){this.tiles[t.id]={vectorTileFeature:e,divisor:e.extent/t.tileSize,context2d:!1,paths2d:!1}}getTiles(){return this.tiles}getTile(e){return this.tiles[e.id]}setStyle(e){this.style=e}redrawTiles(){var e,t=this.mVTSource.map.getZoom();for(e in this.tiles)this.mVTSource.deleteTileDrawn(e),this.mVTSource.getTileObject(e).zoom==t&&this.mVTSource.redrawTile(e)}toggle(){this.selected?this.deselect():this.select()}select(){this.selected=!0,this.mVTSource.featureSelected(this),this.redrawTiles()}deselect(){this.selected=!1,this.mVTSource.featureDeselected(this),this.redrawTiles()}setSelected(e){this.selected=e}draw(e){var t=this.tiles[e.id],i=this.style;this.selected&&this.style.selected&&(i=this.style.selected),this._draw(e,t,i,this)}defaultDraw(e,t,i){if(i)switch(this.type){case 1:this.drawPoint(e,t,i);break;case 2:this.drawLineString(e,t,i);break;case 3:this.drawPolygon(e,t,i)}}drawPoint(e,t,i){var r=t.vectorTileFeature.coordinates[0][0],r=this.getPoint(r,e,t.divisor),t=i.radius||3,e=this.getContext2d(e.canvas,i);e.beginPath(),e.arc(r.x,r.y,t,0,2*Math.PI),e.closePath(),e.fill(),e.stroke()}drawLineString(e,t,i){t.context2d=this.getContext2d(e.canvas,i),i.lineDash&&t.context2d.setLineDash(i.lineDash),this.drawCoordinates(e,t),t.context2d.stroke(t.paths2d),t.context2d.setLineDash([])}drawPolygon(e,t,i){t.context2d=this.getContext2d(e.canvas,i),this.drawCoordinates(e,t),t.paths2d.closePath(),i.fillStyle&&t.context2d.fill(t.paths2d),i.strokeStyle&&t.context2d.stroke(t.paths2d)}drawCoordinates(e,t){var i=t.vectorTileFeature.coordinates;t.paths2d=new Path2D;for(var r=0,s=i.length;r<s;r++){for(var n=i[r],a=new Path2D,o=0,h=n.length;o<h;o++){var l=this.getPoint(n[o],e,t.divisor);0==o?a.moveTo(l.x,l.y):a.lineTo(l.x,l.y)}t.paths2d.addPath(a)}}getPaths(e){for(var t=[],i=this.tiles[e.id],r=i.vectorTileFeature.coordinates,s=0,n=r.length;s<n;s++){for(var a=[],o=r[s],h=0,l=o.length;h<l;h++){var u=this.getPoint(o[h],e,i.divisor);a.push(u)}0<a.length&&t.push(a)}return t}getContext2d(e,t){var i,r=e.getContext("2d");for(i in t)"selected"!==i&&(r[i]=t[i]);return r}getPoint(e,t,i){e={x:e.x/i,y:e.y/i};return e=t.parentId?this._getOverzoomedPoint(e,t):e}_getOverzoomedPoint(e,t){var i=this.mVTSource.getTileObject(t.parentId),r=this.mVTSource.getTileObject(t.id),i=r.zoom-i.zoom,i=Math.pow(2,i),s=e.x*i,n=e.y*i,a=r.x%i,r=r.y%i;return e.x=s-a*t.tileSize,e.y=n-r*t.tileSize,e}isPointInPath(e,t){var t=this.getTile(t),i=t.context2d,t=t.paths2d;return!(!i||!t)&&i.isPointInPath(t,e.x,e.y)}}class MVTLayer{constructor(e){this._lineClickTolerance=2,this._getIDForLayerFeature=e.getIDForLayerFeature,this.style=e.style,this.name=e.name,this._filter=e.filter||!1,this._customDraw=e.customDraw||!1,this._canvasAndMVTFeatures=[],this._mVTFeatures=[]}parseVectorTileFeatures(e,t,i){this._canvasAndMVTFeatures[i.id]={canvas:i.canvas,features:[]};for(var r=0,s=t.length;r<s;r++){var n=t[r];this._parseVectorTileFeature(e,n,i,r)}this.drawTile(i)}_parseVectorTileFeature(e,t,i,r){var s,n,a;this._filter&&"function"==typeof this._filter&&!1===this._filter(t,i)||(s=this.getStyle(t,i),r=this._getIDForLayerFeature(t)||r,(a=this._mVTFeatures[r])?(a.setStyle(s),a.addTileFeature(t,i)):(n=e.isFeatureSelected(r),e={mVTSource:e,vectorTileFeature:t,tileContext:i,style:s,selected:n,featureId:r,customDraw:this._customDraw},a=new MVTFeature(e),this._mVTFeatures[r]=a),this._canvasAndMVTFeatures[i.id].features.push(a))}drawTile(e){var t=this._canvasAndMVTFeatures[e.id].features;if(t){for(var i=[],r=0,s=t.length;r<s;r++){var n=t[r];n.selected?i.push(n):n.draw(e)}for(r=0,s=i.length;r<s;r++)i[r].draw(e)}}getCanvas(e){return this._canvasAndMVTFeatures[e].canvas}getStyle(e,t){return"function"==typeof this.style?this.style(e,t):this.style}setStyle(e){for(var t in this.style=e,this._mVTFeatures)this._mVTFeatures[t].setStyle(e)}setSelected(e){void 0!==this._mVTFeatures[e]&&this._mVTFeatures[e].select()}setFilter(e){this._filter=e}handleClickEvent(e,t){var i,r=this._canvasAndMVTFeatures[e.tileContext.id];return r&&(i=r.canvas,r=r.features,i)&&r&&(e.feature=this._handleClickEvent(e,r,t)),e}_handleClickEvent(e,t,i){this.selectedFeature=null;var r=e.tileContext.id,i=i.getSelectedFeaturesInTile(r);return this._handleClickFeatures(e,i),null==this.selectedFeature&&(this._handleClickFeatures(e,t),this.selectedFeature),this.selectedFeature}_handleClickFeatures(e,t){this.minDistance=Number.POSITIVE_INFINITY;for(var i=t.length-1;0<=i;i--){var r=t[i];if(this._handleClickFeature(e,r),null!=this.selectedFeature)return this.selectedFeature}}_handleClickFeature(e,t){3===t.type?this._handleClickFeaturePolygon(e,t):this._handleClickFeatureDefault(e,t)}_handleClickFeaturePolygon(e,t){t.isPointInPath(e.tilePoint,e.tileContext)&&(this.selectedFeature=t,this.minDistance=0)}_handleClickFeatureDefault(e,t){for(var i=t.getPaths(e.tileContext),r=i.length-1;0<=r;r--){var s,n=i[r];switch(t.type){case 1:MERCATOR.in_circle(n[0].x,n[0].y,t.style.radius,e.tilePoint.x,e.tilePoint.y)&&(this.selectedFeature=t,this.minDistance=0);break;case 2:t.style&&(s=MERCATOR.getDistanceFromLine(e.tilePoint,n))<(t.selected&&t.style.selected?t.style.selected:t.style).lineWidth/2+this._lineClickTolerance&&s<this.minDistance&&(this.selectedFeature=t,this.minDistance=s)}if(0==this.minDistance)return this.selectedFeature}}}class MVTSource{constructor(e,t){var i=this;this.map=e,this.isVectorTileOverlayMapType=!0,this.layerid=t.layerid,this._url=t.url||"",this._sourceMaxZoom=t.sourceMaxZoom||!1,this._debug=t.debug||!1,this.getIDForLayerFeature=t.getIDForLayerFeature||function(e){return e.properties.id||e.properties.Id||e.properties.ID},this._visibleLayers=t.visibleLayers||!1,this._xhrHeaders=t.xhrHeaders||{},this._clickableLayers=t.clickableLayers||!1,this._filter=t.filter||!1,this._cache=t.cache||!1,this._tileSize=t.tileSize||256,this.tileSize=new google.maps.Size(this._tileSize,this._tileSize),this.style=t.style||function(e){var t={};switch(e.type){case 1:t.fillStyle="rgba(49,79,79,1)",t.radius=5,t.selected={fillStyle:"rgba(255,255,0,0.5)",radius:6};break;case 2:t.strokeStyle="rgba(136, 86, 167, 1)",t.lineWidth=3,t.selected={strokeStyle:"rgba(255,25,0,0.5)",lineWidth:4};break;case 3:t.fillStyle="rgba(188, 189, 220, 0.5)",t.strokeStyle="rgba(136, 86, 167, 1)",t.lineWidth=1,t.selected={fillStyle:"rgba(255,140,0,0.3)",strokeStyle:"rgba(255,140,0,1)",lineWidth:2}}return t},this._customDraw=t.customDraw||!1,this.mVTLayers=[],this._tilesDrawn=[],this._visibleTiles=[],this._selectedFeatures=[],t.selectedFeatures&&this.setSelectedFeatures(t.selectedFeatures),this.map.addListener("zoom_changed",()=>{i._zoomChanged()})}getTile(e,t,i){e=this.drawTile(e,t,i);return this._setVisibleTile(e),e.canvas}releaseTile(e){}_zoomChanged(){this._resetVisibleTiles(),this._cache||this._resetMVTLayers()}_resetMVTLayers(){this.mVTLayers=[]}_deleteVisibleTile(e){delete this._visibleTiles[e]}_resetVisibleTiles(){this._visibleTiles=[]}_setVisibleTile(e){this._visibleTiles[e.id]=e}drawTile(e,t,i){var r=this.getTileId(t,e.x,e.y),r=this._tilesDrawn[r];return r||(r=this._createTileContext(e,t,i),this._xhrRequest(r)),r}_createTileContext(e,t,i){var e=this.getTileId(t,e.x,e.y),i=this._createCanvas(i,e),r=this._getParentId(e);return{id:e,canvas:i,zoom:t,tileSize:this._tileSize,parentId:r}}_getParentId(e){var t,i,r,s=!1;return this._sourceMaxZoom&&(e=this.getTileObject(e)).zoom>this._sourceMaxZoom&&(t=e.zoom-this._sourceMaxZoom,i=e.zoom-t,r=e.x>>t,e=e.y>>t,s=this.getTileId(i,r,e)),s}_createCanvas(e,t){e=e.createElement("canvas");return e.width=this._tileSize,e.height=this._tileSize,e.id=t,e}getTileId(e,t,i){return[e,t,i].join(":")}getTileObject(e){e=e.split(":");return{zoom:e[0],x:e[1],y:e[2]}}_xhrRequest(e,t){var i,r=this,s=e.parentId||e.id,s=this.getTileObject(s),s=this._url.replace("{z}",s.zoom).replace("{x}",s.x).replace("{y}",s.y),n=new XMLHttpRequest;for(i in n.onload=function(){if("200"==n.status&&n.response)return r._xhrResponseOk(e,n.response,t);r._drawDebugInfo(e)},n.open("GET",s,!0),this._xhrHeaders)n.setRequestHeader(i,this._xhrHeaders[i]);n.responseType="arraybuffer",n.send()}_xhrResponseOk(e,t,i){this.map.getZoom()==e.zoom&&(t=new Uint8Array(t),t=new VectorTile(new Pbf(t)),i&&this.clearTile(e.canvas),this._drawVectorTile(t,e))}_setTileDrawn(e){this._cache&&(this._tilesDrawn[e.id]=e)}deleteTileDrawn(e){delete this._tilesDrawn[e]}_resetTileDrawn(){this._tilesDrawn=[]}_drawVectorTile(e,t){if(this._visibleLayers)for(var i=0,r=this._visibleLayers.length;i<r;i++){var s=this._visibleLayers[i];e.layers[s]&&(n=e.layers[s],this._drawVectorTileLayer(n,s,t))}else for(var s in e.layers){var n=e.layers[s];this._drawVectorTileLayer(n,s,t)}t.vectorTile=e,this._drawDebugInfo(t),this._setTileDrawn(t)}_drawVectorTileLayer(e,t,i){this.mVTLayers[t]||(this.mVTLayers[t]=this._createMVTLayer(t)),this.mVTLayers[t].parseVectorTileFeatures(this,e.parsedFeatures,i)}_createMVTLayer(e){e={getIDForLayerFeature:this.getIDForLayerFeature,filter:this._filter,style:this.style,name:e,customDraw:this._customDraw};return new MVTLayer(e)}_drawDebugInfo(e){var t,i,r,s;this._debug&&(t=this.getTileObject(e.id),i=this._tileSize,r=this._tileSize,(s=e.canvas.getContext("2d")).strokeStyle="#000000",s.fillStyle="#FFFF00",s.strokeRect(0,0,i,r),s.font="12px Arial",s.fillRect(0,0,5,5),s.fillRect(0,r-5,5,5),s.fillRect(i-5,0,5,5),s.fillRect(i-5,r-5,5,5),s.fillRect(i/2-5,r/2-5,10,10),s.strokeText(e.zoom+" "+t.x+" "+t.y,i/2-30,r/2-10))}onClick(e,t,i){this._multipleSelection=i&&i.multipleSelection||!1,i=this._getMouseOptions(i,!1),this._mouseEvent(e,t,i)}onMouseHover(e,t,i){this._multipleSelection=!1,i=this._getMouseOptions(i,!0),this._mouseEvent(e,t,i)}_getMouseOptions(e,t){return{mouseHover:t,setSelected:e.setSelected||!1,toggleSelection:void 0===e.toggleSelection||e.toggleSelection,limitToFirstVisibleLayer:e.limitToFirstVisibleLayer||!1,delay:e.delay||0}}_mouseEvent(e,t,i){if(e.pixel&&e.latLng){if(0==i.delay)return this._mouseEventContinue(e,t,i);this.event=e;var r=this;setTimeout(function(){e==r.event&&r._mouseEventContinue(r.event,t,i)},i.delay,e)}}_mouseEventContinue(e,t,i){t=t||function(){};var r=i.limitToFirstVisibleLayer||!1,s=this.map.getZoom(),s=MERCATOR.getTileAtLatLng(e.latLng,s),s=this.getTileId(s.z,s.x,s.y),s=this._visibleTiles[s];if(s){e.tileContext=s,e.tilePoint=MERCATOR.fromLatLngToTilePoint(this.map,e);for(var n=this._clickableLayers||Object.keys(this.mVTLayers)||[],a=n.length-1;0<=a;a--){var o=n[a],o=this.mVTLayers[o];if(o){e=o.handleClickEvent(e,this);if(this._mouseSelectedFeature(e,t,i),r&&e.feature)break}}}}_mouseSelectedFeature(e,t,i){var r;i.setSelected&&((r=e.feature)?!i.mouseHover&&i.toggleSelection?r.toggle():r.selected||r.select():i.mouseHover&&this.deselectAllFeatures()),t(e)}deselectAllFeatures(){var e,t=this.map.getZoom(),i=[];for(e in this._selectedFeatures){var r,s=this._selectedFeatures[e];if(s)for(r in s.setSelected(!1),s.getTiles())this.deleteTileDrawn(r),this.getTileObject(r).zoom==t&&(i[r]=!0)}this.redrawTiles(i),this._selectedFeatures=[]}featureSelected(e){this._multipleSelection||this.deselectAllFeatures(),this._selectedFeatures[e.featureId]=e}featureDeselected(e){delete this._selectedFeatures[e.featureId]}setSelectedFeatures(e){1<e.length&&(this._multipleSelection=!0),this.deselectAllFeatures();for(var t=0,i=e.length;t<i;t++){var r,s=e[t];for(r in this._selectedFeatures[s]=!1,this.mVTLayers)this.mVTLayers[r].setSelected(s)}}isFeatureSelected(e){return null!=this._selectedFeatures[e]}getSelectedFeatures(){var e,t=[];for(e in this._selectedFeatures)t.push(this._selectedFeatures[e]);return t}getSelectedFeaturesInTile(e){var t,i=[];for(t in this._selectedFeatures){var r,s=this._selectedFeatures[t];for(r in s.tiles)r==e&&i.push(s)}return i}setFilter(e,t){for(var i in t=void 0===t||t,this._filter=e,this.mVTLayers)this.mVTLayers[i].setFilter(e);t&&this.redrawAllTiles()}setStyle(e,t){for(var i in t=void 0===t||t,this.style=e,this.mVTLayers)this.mVTLayers[i].setStyle(e);t&&this.redrawAllTiles()}setVisibleLayers(e,t){t=void 0===t||t,this._visibleLayers=e,t&&this.redrawAllTiles()}getVisibleLayers(){return this._visibleLayers}setClickableLayers(e){this._clickableLayers=e}redrawAllTiles(e){this._resetTileDrawn(),this.redrawTiles(this._visibleTiles,e)}redrawTiles(e,t){for(var i in e)this.redrawTile(i,t)}redrawTile(e,t){this.deleteTileDrawn(e);e=this._visibleTiles[e];e&&e.vectorTile&&(t?this._xhrRequest(e,!0):(this.clearTile(e.canvas),this._drawVectorTile(e.vectorTile,e)))}clearTile(e){e.getContext("2d").clearRect(0,0,e.width,e.height)}setUrl(e,t){t=void 0===t||t,this._url=e,this._resetMVTLayers(),t&&this.redrawAllTiles()}}
MapComp.methods.mapView={mobileToggleMapModeControl:e=>{e.className="darkModeControlContainer customMapCtrl";var t=document.createElement("div"),e=(t.className="darkModeControl",e.appendChild(t),document.createElement("i"));e.className="fas fa-adjust",e.setAttribute("title",resources.ToggleDarkLightMap),e.setAttribute("aria-label",resources.ToggleDarkLightMap),e.setAttribute("role","button"),e.setAttribute("tabindex","0"),t.appendChild(e)},SaveMapViewControl:e=>{let t=MapComp.methods.mapView;e.className="saveMapViewControlContainer customMapCtrl saveMapGuideSelector";var a=document.createElement("div"),e=(a.className="saveMapViewControl",e.appendChild(a),document.createElement("i")),o=(e.className="far fa-save",e.setAttribute("title",resources.SaveMapView),e.setAttribute("aria-label",resources.SaveMapView),e.setAttribute("role","button"),e.setAttribute("tabindex","0"),a.appendChild(e),document.createElement("i"));o.className="far fa-map-marked",o.setAttribute("title",resources.GoToMapView),o.setAttribute("aria-label",resources.GoToMapView),o.setAttribute("role","button"),o.setAttribute("tabindex","0"),a.appendChild(o),e.addEventListener("click",function(){t.saveMapViewInfo(MapComp.map)}),e.addEventListener("keydown",function(e){"Enter"!==e.code&&"Space"!==e.code||t.saveMapViewInfo(MapComp.map)}),o.addEventListener("click",function(){t.setMapViewInfo(MapComp.map)}),o.addEventListener("keydown",function(e){"Enter"!==e.code&&"Space"!==e.code||t.setMapViewInfo(MapComp.map)})},saveMapViewInfo:e=>{e={lat:e.getCenter().lat(),lng:e.getCenter().lng(),zoom:e.getZoom()};Cookies.set("_saveMapView",JSON.stringify(e),{expires:365,path:"/"}),$(".map-feedback-msg span").html(resources.SaveMapViewSuccess),$(".map-feedback-msg").show().delay(3e3).fadeOut()},setMapViewInfo:e=>{var t,a;null!=Cookies.get("_saveMapView")?(t=JSON.parse(Cookies.get("_saveMapView")),a=new google.maps.LatLng(t.lat,t.lng),e.panTo(a),t.zoom&&e.setZoom(t.zoom)):($(".map-feedback-msg span").html(resources.GoToMapViewError),$(".map-feedback-msg").show().delay(3e3).fadeOut())}};
MapComp.setupThemeModeBtn=e=>{e.controlDiv.className="toggleDarkLMapContainer customMapCtrl",e.controlDiv.setAttribute("id","toggleDarkLMapContainer");var a=document.createElement("button"),t=(a.className="toggleMapModeButton btn btn-default",a.setAttribute("id","toggleMapModeButton"),a.setAttribute("type","button"),a.setAttribute("title",e.text.ToggleDarkLightMap),a.setAttribute("aria-label",e.text.ToggleDarkLightMap),document.createElement("i"));t.className="fas fa-adjust",t.setAttribute("aria-hidden","true"),t.setAttribute("title",e.text.ToggleDarkLightMap),a.appendChild(t),e.controlDiv.appendChild(a),a.addEventListener("click",e.toggleMapMode)},MapComp.state={darkLabelsLayerType:void 0,skipRemoveDarkLabels:!1,typeIds:["hybrid","satellite","terrain","roadmap"]},MapComp.toggleMapMode=e=>{var a=MapComp.map.getMapTypeId(),a=(-1<MapComp.state.typeIds.indexOf(a)&&MapComp.isDarkMode&&(MapComp.state.skipRemoveDarkLabels=!0,setTimeout(()=>{MapComp.state.skipRemoveDarkLabels=!1})),document.getElementsByClassName("gm-style-mtc")[0].getElementsByTagName("button")[0].click(),{styles:MapComp.mapModeStyles.getStyles(MapComp.isDarkMode?"dark":"light",e.hideLayer,null)});MapComp.map.setOptions(a),MapComp.routePolyline&&0!==Object.keys(MapComp.data.routeLine.routeBounds).length&&MapComp.routePolyline.repaint()},MapComp.setDarkLabelsState=()=>{var e=MapComp.map.overlayMapTypes.getArray().indexOf(MapComp.state.darkLabelsLayerType),a=MapComp.map.overlayMapTypes.getArray().findIndex(e=>"MileMarkers"==e.name);MapComp.isDarkMode&&-1==e?-1<a?MapComp.map.overlayMapTypes.insertAt(a,MapComp.state.darkLabelsLayerType):MapComp.map.overlayMapTypes.push(MapComp.state.darkLabelsLayerType):-1<e&&!MapComp.state.skipRemoveDarkLabels&&MapComp.removeAllDarkLabels()},MapComp.removeAllDarkLabels=()=>{var a=MapComp.map.overlayMapTypes.getArray();for(let e=a.length-1;0<=e;e--)"darkLabels"===a[e].name&&MapComp.map.overlayMapTypes.removeAt(e)};
MapComp.setupZoomButtons=o=>{o.controlDiv.className="zoomControlContainer customMapCtrl";var t=document.createElement("div"),e=(t.className="zoomControl",o.controlDiv.appendChild(t),document.createElement("i")),m=(e.className="far fa-plus",e.setAttribute("title",o.text.ZoomInMap),e.setAttribute("aria-label",o.text.ZoomInMap),e.setAttribute("role","button"),e.setAttribute("tabindex","0"),t.appendChild(e),document.createElement("i"));return m.className="far fa-minus",m.setAttribute("title",o.text.ZoomOutMap),m.setAttribute("aria-label",o.text.ZoomOutMap),m.setAttribute("role","button"),m.setAttribute("tabindex","0"),t.appendChild(m),[e,m]},MapComp.setZoomEvents=o=>{o.zoomInButton.addEventListener("click",()=>{MapComp.map.setZoom(MapComp.map.getZoom()+1)}),o.zoomInButton.addEventListener("keydown",o=>{"Enter"!==o.code&&"Space"!==o.code||MapComp.map.setZoom(MapComp.map.getZoom()+1)}),o.zoomOutButton.addEventListener("click",()=>{MapComp.map.setZoom(MapComp.map.getZoom()-1)}),o.zoomOutButton.addEventListener("keydown",o=>{"Enter"!==o.code&&"Space"!==o.code||MapComp.map.setZoom(MapComp.map.getZoom()-1)})},MapComp.MountZoomControl=o=>{MapComp.map.controls[o.zoomPos].push(o.zoomControlDiv)},MapComp.methods.zoomBtn={ZoomControl:o=>{var[o,t]=MapComp.setupZoomButtons({controlDiv:o,text:{ZoomInMap:resources.ZoomInMap,ZoomOutMap:resources.ZoomOutMap}});MapComp.setZoomEvents({zoomInButton:o,zoomOutButton:t})}};
MapComp.mapSize=o=>new google.maps.Size(o[0],o[1]),MapComp.mapPoint=o=>new google.maps.Point(o[0],o[1]),MapComp.infoWindow=o=>new google.maps.InfoWindow({maxWidth:o.maxWidth}),MapComp.latLngVals=o=>[o.lat(),o.lng()],MapComp.MapTypeControlStyle=o=>google.maps.MapTypeControlStyle[o],MapComp.StyledMapType=(o,e)=>new google.maps.StyledMapType(o,e),MapComp.EventAddDomListener=(o,e,t)=>{o.addEventListener(e,t)},MapComp.setNearbyKml=o=>{new google.maps.KmlLayer(o.url,o.kmlOptions).addListener("click",function(o){MapComp.appHelper.showInfoWindow(o.featureData.description,null,!0,o.latLng,"Nearby511",!0,!1,MapComp.mapSize(0,-32))})},MapComp.addOverlayMapTypes=o=>{MapComp.map.overlayMapTypes.push(o.labelsLayerType)},MapComp.lat=o=>"function"==typeof o.lat?o.lat():o.lat,MapComp.lng=o=>"function"==typeof o.lng?o.lng():o.lng,MapComp.updateTooltipOffsetWithLine=()=>{},MapComp.setUserLocation=o=>{(new google.maps.Geocoder).geocode({location:o},function(o,e){"OK"===e?o[0]&&(MapComp.map.setZoom(17),$("#mapLocation").val(o[0].formatted_address),MapComp.map.setCenter(o[0].geometry.location),MapComp.data.appUI.mapLocationMarker.setPosition(o[0].geometry.location),MapComp.data.appUI.mapLocationMarker.setVisible(!0),$(".mobileLocationBar .clearLocateBtn").show()):bootbox.alert(resources.CouldNotFindCurrentLocation)})},MapComp.updateSimplePlace=async(t,a)=>{function p(e,t){let a=0,p=1/0;for(let o=0;o<t.length;o++)-1==t[o].types.indexOf("route")&&-1==t[o].types.indexOf("street_address")||(e.point,n=t[o].geometry.location,l=void 0,l=n.lat(),n=n.lng(),(l=Math.sqrt(Math.pow(e.point.latitude+90-(l+90),2)+Math.pow(e.point.longitude+180-(n+180),2)))<p&&(p=l,a=o));var n,l;return a}function n(o){o.name=o.point.latitude+", "+o.point.longitude}(new google.maps.Geocoder).geocode({location:new google.maps.LatLng(t.point.latitude,t.point.longitude)},(o,e)=>{"OK"===e&&o[0]?(e=p(t,o),MapComp.methods.routePlannerAutoComplete.setSimplePlaceDetails(t,o[e])):n(t),a(t)})},MapComp.centerTo=(o,e)=>{o=new google.maps.LatLng(o[0],o[1]);MapComp.map.panTo(o),e&&MapComp.map.setZoom(e)},MapComp.methods.zoomTo={bounds:(o,e,t)=>{for(var a of e)t.extend(new google.maps.LatLng(a.point.latitude,a.point.longitude));return o.fitBounds(t),o.panBy(0,0),t},pointBounds:(o,e,t,a,p)=>{var n=new google.maps.LatLngBounds;n.extend(new google.maps.LatLng(e,t)),n.extend(new google.maps.LatLng(a,p)),o.fitBounds(n),o.panBy(0,0)}},MapComp.fitMapToBound=(i,o)=>{let m=new google.maps.LatLngBounds,e=google.maps.event.addListenerOnce(i,"bounds_changed",function(o){var e=m.getNorthEast(),t=m.getSouthWest();let a=t.lng(),p=e.lng();var n=i.getZoom(),n=360/Math.pow(2,n)/256,l=$("#sideBarColContainer"),l=(l&&l.is(":visible")&&Modernizr.mq("(min-width: 993px)")&&(a-=n*l.outerWidth(!0)),$("#layerSelection"));l&&l.is(":visible")&&Modernizr.mq("(min-width: 993px)")&&(p+=n*l.outerWidth(!0)),MapComp.methods.zoomTo.pointBounds(i,e.lat(),a,t.lat(),p)});m=MapComp.methods.zoomTo.bounds(i,o,m),setTimeout(function(){google.maps.event.removeListener(e)},3e3)},MapComp.setEventPolygons=(o,e)=>{o=new google.maps.Polygon(o);return e.push(o),e},MapComp.setEventPolyline=(o,e,t)=>{o=new google.maps.Polyline({path:o,strokeColor:t.polylineColor,strokeOpacity:t.polylineOpacity,strokeWeight:t.polylineWeight});return e.push(o),e},MapComp.setEventPoint=(o,e)=>{e=new google.maps.Marker({position:e[0]});return o.push(e),o},MapComp.showPoiShape=o=>{for(var e of o.gmapShapes)e.setMap(MapComp.map),o.gmaps.push(e);return o.gmaps};
MapComp.zoomToCameraLocation=e=>{var a=e.this,p=new google.maps.LatLng(e.lat,e.lng),o=(a.centerTooltip.externalPanCheck(),a.map.panTo(p),a.map.getZoom());992<$(window).width()?(o<13&&a.map.setZoom(13),a.appPublicApi.appHelper.showInfoWindowForItem(e.layer,e.id,null,p),e.hash(e.controller)):(o<17&&a.map.setZoom(17),a.appPublicApi.appHelper.showInfoWindowForItem(e.layer,e.id,null,p),e.hash("map-col-container"))},MapComp.layerIconsUpdated=e=>{var a=e.this,p=new google.maps.LatLng(e.lng,e.lat),o=(a.centerTooltip.externalPanCheck(),a.map.panTo(p),a.map.getZoom());992<$(window).width()?o<13&&a.map.setZoom(13):o<17&&a.map.setZoom(17),a.appPublicApi.appHelper.showInfoWindowForItem(e.layer,e.title,null,p)},MapComp.setMapEvents=e=>{google.maps.event.addListener(e.map,"zoom_changed",function(){e.closeInfoWindow(),e.delayRefresh(!1)}),google.maps.event.addListener(e.map,"bounds_changed",function(){e.delayRefresh(!1)}),google.maps.event.addListener(e.map,"dragstart",function(){e.setMapBeingDragged(!0)}),google.maps.event.addListener(e.map,"dragend",function(){e.setMapBeingDragged(!1)}),e.noPanOffEarth(e.map)},MapComp.updateMapCookie=p=>{function e(){var e=p.map.getCenter(),a=p.map.getZoom();p.setMapZoomAndCenterCookie({lat:e.lat(),lng:e.lng(),zoom:a,mapType:"google"})}google.maps.event.addListener(p.map,"zoom_changed",e),google.maps.event.addListener(p.map,"dragend",e)},MapComp.addStateOutline=e=>{new google.maps.Polyline({path:google.maps.geometry.encoding.decodePath(resources.StateOutline),strokeColor:"#00000",strokeOpacity:1,strokeWeight:1,map:MapComp.map})},MapComp.maptypeid_changed=(e,a)=>{var p=MapComp.map.getMapTypeId(),o=(-1<MapComp.state.typeIds.indexOf(p)?(MapComp.map.setOptions({styles:MapComp.mapModeStyles.getStyles("light",MapComp.data.appUI.hideLayer,null)}),MapComp.state.skipRemoveDarkLabels||MapComp.removeAllDarkLabels(),MapComp.isDarkMode=!1,Cookies.set("mapClrMode","light")):(MapComp.map.setOptions({styles:MapComp.mapModeStyles.getStyles(MapComp.isDarkMode?"dark":"light",MapComp.data.appUI.hideLayer,null)}),MapComp.setDarkLabelsState()),MapComp.map.overlayMapTypes.getArray()),o=-1!=o.indexOf(MapComp.state.labelsLayerType)?o.indexOf(MapComp.state.labelsLayerType):o.indexOf(MapComp.state.satelliteLabelsLayerType),t="hybrid"==p?MapComp.state.satelliteLabelsLayerType:MapComp.state.labelsLayerType;-1!=o?"satellite"===p?MapComp.map.overlayMapTypes.removeAt(o):MapComp.map.overlayMapTypes.setAt(o,t):MapComp.map.overlayMapTypes.push(t),"function"==typeof gtag&&gtag("event","map_type_changed",{event_category:"Map Interaction",event_label:p})},MapComp.hideLocationMarker=()=>{MapComp.data.appUI.mapLocationMarker&&MapComp.data.appUI.mapLocationMarker.setVisible(!1)};
MapComp.methods.appLayout={set:o=>{var p=MapComp.data.appUI.mapTypePos,t=MapComp.data.appUI.locateMeBtnPosition,a=MapComp.data.appUI.truckerModeBtnPosition;if(MapComp.methods.appLayout.positionCustomControls(o.isMobileFirst,o.isERS,o.isWta),p!=MapComp.data.appUI.mapTypePos){$(".zoomControlContainer").length<1&&!MapComp.data.appUI.isGoogleZoomVisible&&options.DisplayControls&&(o=document.createElement("div"),new ZoomControl(o,MapComp.map),o.index=1,MapComp.MountZoomControl({zoomPos:MapComp.data.appUI.zoomPos,zoomControlDiv:o,mapContainerId:MapComp.data.appUI.mapContainerId}));var s,e=MapComp.map.controls[t].getArray();for(s in e)if("locateMeContainer"==$(e[s]).attr("class")){var r=MapComp.map.map.controls[t].getAt(s);MapComp.map.controls[t].removeAt(s),MapComp.map.controls[MapComp.data.appUI.locateMeBtnPosition].push(r);break}var i,n=MapComp.map.controls[a].getArray();for(i in n)if("truckerModeContainer"==$(n[i]).attr("class")){var M=MapComp.map.controls[a].getAt(i);MapComp.map.controls[a].removeAt(i),MapComp.map.controls[MapComp.data.appUI.truckerModeBtnPosition].push(M);break}p=MapComp.methods.appLayout.getMapOptions();p.zoomControl=MapComp.data.appUI.isGoogleZoomVisible,MapComp.map.setOptions(p)}},getMapOptions:()=>({mapTypeControlOptions:{style:MapComp.data.appUI.mapTypeStyle,position:MapComp.data.appUI.mapTypePos},zoomControlOptions:{position:MapComp.data.appUI.zoomPos},streetViewControlOptions:{position:MapComp.data.appUI.zoomPos}}),setDesktopCtrlPositions:()=>{var o=MapComp.data.appUI;MapComp.isRcr&&(resources.MapControlPos="RIGHT_BOTTOM"),o.mapTypePos=MapComp.ControlPosition([resources.MapTypePos]),o.mapTypeStyle=MapComp.MapTypeControlStyle([resources.MapTypeStyle]),o.zoomPos=MapComp.ControlPosition([resources.MapControlPos]),o.locateMeBtnPosition=MapComp.ControlPosition([resources.MapControlPos]),o.truckerModeBtnPosition=MapComp.ControlPosition([resources.TruckerModeMapControlPos]),o.toggleFullScreenBtnPosition=MapComp.ControlPosition([resources.MapControlPos]),o.toggleMapModeBtnPosition=MapComp.ControlPosition([resources.MapControlPos]),MapComp.ControlPosition([resources.MapControlPos]),o.isGoogleZoomVisible="true"===resources.UseGoogleMapZoom},setMobileCtrlPositions:()=>{var o=MapComp.data.appUI;o.mapTypePos=MapComp.ControlPosition([resources.MobileFirstMapTypePos]),o.zoomPos=MapComp.ControlPosition([resources.MobileFirstMapControlPos]),o.locateMeBtnPosition=MapComp.ControlPosition([resources.MobileFirstMapControlPos]),o.truckerModeBtnPosition=MapComp.ControlPosition([resources.TruckerModeMobileFirstMapControlPos])},positionCustomControls:(o,p,t)=>{var a=MapComp.data.appUI,s=MapComp.methods.appLayout,e=(a.isERS=p,0<$("#embedmap").length);Modernizr.mq("(min-width: 993px)")||e?s.setDesktopCtrlPositions():(o||p||t?s.setMobileCtrlPositions():(a.mapTypePos=MapComp.ControlPosition([resources.MobileMapTypePos]),a.zoomPos=MapComp.ControlPosition([resources.MobileMapTypePos]),a.locateMeBtnPosition=MapComp.ControlPosition([resources.MobileMapControlPos]),a.truckerModeBtnPosition=MapComp.ControlPosition([resources.TruckerModeMobileMapControlPos])),a.mapTypeStyle=MapComp.MapTypeControlStyle([resources.MapTypeStyle]),a.toggleFullScreenBtnPosition=MapComp.ControlPosition([resources.MobileMapControlPos]),a.isGoogleZoomVisible=!0)}};
window.resizeVars={isEmbedded:void 0,initalLoadOnMobile:!1,state:{mobile:!1,desktop:!1},initialStackDone:!1};class AppResize{constructor(){resizeVars.isEmbedded=0<$("#embedmap").length,"RIGHT_BOTTOM"===resources.MapControlPos&&$("#legend-container").addClass("legendMovedLeft"),window.innerWidth<=992?(resizeVars.initalLoadOnMobile=!0,"RIGHT_BOTTOM"===resources.MapControlPos&&this.stackMapControlsOnMobile()):"RIGHT_BOTTOM"===resources.MapControlPos&&(this.stackMapControlsOnDesktop(),this.checkRightBtmCtrls())}tryAgain(e,t){setTimeout(()=>{++e<10?t.call(this,e):console.warn("Could not find element to resize")},200)}checkRightBtmCtrls(){"RIGHT_BOTTOM"===resources.MapControlPos&&(992<window.innerWidth&&!resizeVars.initalLoadOnMobile&&!resizeVars.state.desktop&&this.setBtmRtCtrlsOnDesktop(),window.innerWidth<=992&&resizeVars.initalLoadOnMobile&&!resizeVars.state.mobile&&this.setBtmRtCtrlsOnMobile(),992<window.innerWidth&&resizeVars.initalLoadOnMobile&&!resizeVars.state.desktop&&this.reuseBtmRtMobileControlsOnDesktop(),resizeVars.isEmbedded)&&(this.fixEmbeddedCtrlStack(),this.addEmbeddedCtrlClass())}checkTopCenterCtrls(e,t){var s=MapComp.methods.appLayout;"TOP_CENTER"===resources.MapControlPos&&(992<window.innerWidth&&resizeVars.initalLoadOnMobile&&!resizeVars.state.desktop&&(s.setDesktopCtrlPositions(),e.setOptions(s.getMapOptions()),this.reuseMobileControlsOnDesktop()),window.innerWidth<=992&&resizeVars.initalLoadOnMobile&&!resizeVars.state.mobile&&(resizeVars.isEmbedded?this.addEmbeddedCtrlClass():(s.setMobileCtrlPositions(),e.setOptions(s.getMapOptions()),this.reuseMobileControlsOnMobile())),window.innerWidth<=992&&!resizeVars.initalLoadOnMobile&&!resizeVars.state.mobile&&(s.setMobileCtrlPositions(),e.setOptions(s.getMapOptions()),this.reuseDesktopControlsOnMobile()),992<window.innerWidth)&&!resizeVars.initalLoadOnMobile&&!resizeVars.state.desktop&&(s.setDesktopCtrlPositions(),e.setOptions(s.getMapOptions()),resizeVars.state.desktop=!0,resizeVars.state.mobile=!1)}stackMapControlsOnMobile(t=0){setTimeout(()=>{var e;resizeVars.initialStackDone||(0<(e=$(".gm-svpc")).length?(resizeVars.isEmbedded?this.stackEmbeddedControls():($(".saveMapViewControlContainer").addClass("stackSaveCtrls"),$(".darkModeControlContainer").addClass("stackDarkModeCtrl"),e.addClass("stackPegman2")),this.stackFullScreenMapBtn(),resizeVars.initialStackDone=!0):this.tryAgain(t,this.stackMapControlsOnMobile))},200)}stackMapControlsOnDesktop(t=0){setTimeout(()=>{var e;resizeVars.initialStackDone||(0<(e=$(".zoomControlContainer")).length?(resizeVars.isEmbedded?this.stackEmbeddedControls():(e.addClass("stackZoomCtrl"),$(".saveMapViewControlContainer").addClass("stackSaveCtrls")),$(".toggleDarkLMapContainer").addClass("stackDarkToggle"),this.stackFullScreenMapBtn(),resizeVars.initialStackDone=!0):this.tryAgain(t,this.stackMapControlsOnDesktop))},200)}stackFullScreenMapBtn(){var e;"true"===resources.EnableToggleFullScreenMapBtn&&(e=$(".toggleFullScreenMapContainer"),window.innerWidth<=992&&resizeVars.initalLoadOnMobile?(e.addClass("stackFullScreenToggleMobile"),stackFullScreenToggle()):resizeVars.initalLoadOnMobile||(resizeVars.isEmbedded?e.hide():e.addClass("stackFullScreenToggleDesktop")))}stackEmbeddedControls(){var e=document.querySelector("#embedmap").getBoundingClientRect().width,t=$(".zoomControlContainer");e<800?t.hide():t.addClass("embeddedZoomCtrl"),$(".saveMapViewControlContainer").addClass("embeddedStackSaveCtrls")}reuseMobileControlsOnDesktop(o=0){setTimeout(()=>{var e,t,s;resizeVars.state.desktop||((e=document.getElementsByClassName("gm-bundled-control")[0])?(e.classList.add("reuseMobileControls"),t=document.querySelector(".darkModeControlContainer"),e.appendChild(t),(s=document.querySelector(".saveMapViewControlContainer"))?e.appendChild(s):t.classList.add("darkModeNoSave"),"true"===resources.EnableToggleFullScreenMapBtn&&e.appendChild(document.querySelector(".toggleFullScreenMapContainer")),resizeVars.state.mobile=!1,resizeVars.state.desktop=!0):this.tryAgain(o,this.reuseMobileControlsOnDesktop))},200)}fixEmbeddedCtrlStack(t=0){setTimeout(()=>{var e;document.querySelector(".gm-svpc")?((e=$("#toggleDarkLMapContainer")).removeClass("stackDarkToggle"),e.hide(),$(".gm-svpc").hide(),$(".zoomControlContainer").hide(),(e=$(".gm-svpc")).show(),e.addClass("embeddedPeg"),(e=document.querySelector(".saveMapViewControlContainer"))&&e.classList.add("embeddedStackSaveCtrls")):this.tryAgain(t,this.fixEmbeddedCtrlStack)},200)}addEmbeddedCtrlClass(t=0){setTimeout(()=>{var e=document.querySelector(".gm-svpc");e?(e.classList.add("embeddedCtrl"),(e=document.querySelector(".saveMapViewControl"))&&e.classList.add("embeddedCtrl"),document.querySelector(".gmnoprint").classList.add("embeddedCtrl")):this.tryAgain(t,this.addEmbeddedCtrlClass)},200)}stackFullScreenToggle(t=0){setTimeout(()=>{var e=document.querySelector(".darkModeControlContainer");e?e.parentElement.appendChild(document.querySelector(".stackFullScreenToggleMobile")):this.tryAgain(t,this.stackFullScreenToggle)},200)}setBtmRtCtrlsOnMobile(t=0){setTimeout(()=>{var e;resizeVars.state.mobile||((e=document.querySelector(".darkModeControlContainer"))?(e.classList.add("stackDarkModeMobile"),resizeVars.state.mobile=!0,resizeVars.state.desktop=!1):this.tryAgain(t,this.setBtmRtCtrlsOnMobile))},200)}reuseBtmRtMobileControlsOnDesktop(s=0){setTimeout(()=>{var e,t;resizeVars.state.desktop||((e=document.querySelector(".saveMapViewControlContainer"))?(e.classList.add("reuseSaveMapViewControlOnDesk"),"true"===resources.EnableToggleFullScreenMapBtn&&((t=document.querySelector(".toggleFullScreenMapContainer")).classList.add("reuseFullScreenControlOnDesk"),e.parentElement.appendChild(t)),resizeVars.state.desktop=!0,resizeVars.state.mobile=!1):this.tryAgain(s,this.reuseBtmRtMobileControlsOnDesktop))},200)}setBtmRtCtrlsOnDesktop(t=0){setTimeout(()=>{var e;resizeVars.state.desktop||(e=document.querySelector(".gm-svpc"),!resizeVars.isEmbedded&&e?(e.classList.add("stackPegman1"),resizeVars.state.desktop=!0,resizeVars.state.mobile=!1):this.tryAgain(t,this.setBtmRtCtrlsOnDesktop))},200)}reuseDesktopControlsOnMobile(t=0){setTimeout(()=>{var e;resizeVars.state.mobile||((e=document.querySelector(".gm-svpc"))?(e.classList.add("pegmanForMobile"),(e=document.querySelector(".gm-bundled-control-on-bottom").parentElement).classList.add("reuseDektopCtrls"),e.appendChild(document.querySelector(".zoomControlContainer")),e.appendChild(document.querySelector(".toggleDarkLMapContainer")),document.querySelector(".saveMapViewControlContainer")&&e.appendChild(document.querySelector(".saveMapViewControlContainer")),document.querySelector(".ersMode")&&"block"===document.querySelector("#layerSelection").style.display&&$(".legend-toggle").trigger("click"),resizeVars.state.desktop=!1,resizeVars.state.mobile=!0):this.tryAgain(t,this.reuseDesktopControlsOnMobile))},200)}reuseMobileControlsOnMobile(s=0){setTimeout(()=>{var e,t;resizeVars.state.mobile||((e=document.querySelector(".gm-bundled-control-on-bottom"))?(e=e.parentElement,(t=document.querySelector(".saveMapViewControlContainer"))&&e.appendChild(t),e.appendChild(document.querySelector(".darkModeControlContainer")),resizeVars.state.desktop=!1,resizeVars.state.mobile=!0):this.tryAgain(s,this.reuseMobileControlsOnMobile))},200)}}
MapComp.map=void 0,MapComp.isGoogle=!0,MapComp.isLibre=!1,MapComp.callback={},MapComp.library="google",MapComp.mountMap=e=>(e.bounds=null,MapComp.map=new google.maps.Map(document.getElementById(e.idTag),e),google.maps.event.addListenerOnce(MapComp.map,"idle",()=>{e.mapDoneLoading()}),google.maps.event.addListener(MapComp.map,"maptypeid_changed",e.maptypeid_changed),MapComp.map);const attachShadow=Element.prototype.attachShadow;Element.prototype.attachShadow=function(e){var o,t;return"gmp-place-autocomplete"===this.localName?(o=attachShadow.call(this,{...e,mode:"open"}),(t=document.createElement("style")).textContent=`           
           .clear-button {        
               display: none;      
           }
           .widget-container {
               max-width: 310px;
           }
           @media (max-width: 992px) {
                .widget-container {
                    max-width: calc(100vw - 115px);
                }
           }
        `,o.appendChild(t),o):attachShadow.call(this,e)},MapComp.google={posMountSetup:e=>{MapComp.state.labelsLayer=MapComp.mapModeStyles.getStyles("lightLabelsLayer",MapComp.data.appUI.hideLayer),MapComp.state.darkLabelsLayer=MapComp.mapModeStyles.getStyles("darkLabelsLayer",MapComp.data.appUI.hideLayer),MapComp.state.satelliteLabels=MapComp.mapModeStyles.getStyles("satelliteLabels",MapComp.data.appUI.hideLayer),MapComp.state.satelliteLabelsLayerType=MapComp.StyledMapType(MapComp.state.satelliteLabels),MapComp.state.labelsLayerType=MapComp.StyledMapType(MapComp.state.labelsLayer,{name:"labels"}),MapComp.state.darkLabelsLayerType=MapComp.StyledMapType(MapComp.state.darkLabelsLayer,{name:"darkLabels"}),MapComp.addOverlayMapTypes({labelsLayerType:MapComp.state.labelsLayerType}),MapComp.setDarkLabelsState(),MapComp.setupMapButtons({isGoogleZoomVisible:MapComp.data.appUI.isGoogleZoomVisible,options:e.options,toggleMapModeBtnPosition:MapComp.data.appUI.toggleMapModeBtnPosition,zoomPos:MapComp.data.appUI.zoomPos,locateMeBtnPosition:MapComp.data.appUI.locateMeBtnPosition,mapContainerId:MapComp.data.appUI.mapContainerId,isERS:e.isERS,isTruckerModeQuery:e.isTruckerModeQuery,truckerModeBtnPosition:MapComp.data.appUI.truckerModeBtnPosition})},setupSearchBar:e=>{e.locationInput&&(e.locationInput.style.display="none");let t=new google.maps.places.PlaceAutocompleteElement({locationBias:MapComp.map.getBounds(),includedRegionCodes:e.locationOptions.componentRestrictions.country});function a(e){MapComp.methods.appUI.validateLatLng(e)&&(e=e.split(","),p(new google.maps.LatLng(e[0],e[1])))}function p(e){MapComp.map.panTo(e),MapComp.data.appUI.mapLocationMarker.setPosition(e),MapComp.data.appUI.mapLocationMarker.setVisible(!0),$(".mobileLocationBar .clearLocateBtn").show()}document.getElementById("mapLocationSlot").appendChild(t),t.addEventListener("gmp-select",async({placePrediction:e})=>{var e=e.toPlace(),o=(await e.fetchFields({fields:["displayName","location","formattedAddress","addressComponents","viewport"]}),document.querySelector("#endLocationText"));o&&(o.value=e.formattedAddress),e.viewport?MapComp.map.fitBounds(e.viewport):MapComp.map.setZoom(17),p(e.location)}),MapComp.data.appUI.mapLocationMarker=new google.maps.Marker({map:MapComp.map}),e.rcrLocationBtn&&(e.rcrLocationBtn.addEventListener("click",e=>{a(t.shadowRoot.querySelector("input").value)}),setTimeout(()=>{let o=t.shadowRoot.querySelector("input");o&&o.addEventListener("keydown",function(e){"Enter"===e.key&&a(o.value)})})),$(document).on("clearAutoCompleteText",()=>{t.shadowRoot.querySelector("input").value=""})}},MapComp.methods.buttons={mobileToggleMapModeControl:e=>{e.className="darkModeControlContainer customMapCtrl";var o=document.createElement("div"),e=(o.className="darkModeControl",e.appendChild(o),document.createElement("i"));e.className="fas fa-adjust",e.setAttribute("title",resources.ToggleDarkLightMap),e.setAttribute("aria-label",resources.ToggleDarkLightMap),e.setAttribute("role","button"),e.setAttribute("tabindex","0"),o.appendChild(e)},locateMeBtnBuilder:(e,o)=>{e.className="locateMeContainer customMapCtrl";var t=document.createElement("button"),a=(t.className="locateMeBtn btn btn-default",t.setAttribute("id","locateMeBtn"),t.setAttribute("type","button"),t.setAttribute("title",resources.CurrentLocation),t.setAttribute("aria-label",resources.CurrentLocation),document.createElement("i"));a.className="fas fa-crosshairs",a.setAttribute("aria-hidden","true"),a.setAttribute("title",resources.CurrentLocation),t.appendChild(a),e.appendChild(t),t.addEventListener("click",function(){null==window.GetUserGeolocation&&new UserGeolocation(null,null,null,null,null),window.GetUserGeolocation(function(e){o.panTo(e),$(document).trigger("removeMyLocationMarker"),MapComp.data.appUI.myLocationMarker=new google.maps.Marker({position:e,map:o,title:resources.CurrentLocation,icon:{url:"Content/images/locationDot.png",size:new google.maps.Size(24,24)}});e=o.getZoom();o.setZoom(12<e?e:12)})}),$(document).on("removeMyLocationMarker",function(){MapComp.data.appUI.myLocationMarker&&MapComp.data.appUI.myLocationMarker.setMap(null)})},toggleFullScreenMapBtnBuilder:e=>{e.className="toggleFullScreenMapContainer customMapCtrl";var o=document.createElement("button"),t=(o.className="toggleFullScreenMapBtn btn btn-default",o.setAttribute("id","toggleFullScreenMapBtn"),o.setAttribute("type","button"),o.setAttribute("title",resources.ToggleFullscreen),o.setAttribute("aria-label",resources.ToggleFullscreen),document.createElement("i"));t.className="far fa-arrows-alt",t.setAttribute("aria-hidden","true"),t.setAttribute("title",resources.ToggleFullscreen),o.appendChild(t),e.appendChild(o),o.addEventListener("click",function(){Modernizr.mq("(min-width: 993px)")&&($(".navbar, .scrollRow, footer").toggle(),$(document).trigger("fullScreenMapMode"))})}},MapComp.setupMapButtons=e=>{var o,t=MapComp.methods.buttons;!e.isGoogleZoomVisible&&e.options.DisplayControls&&(o=document.createElement("div"),MapComp.methods.zoomBtn.ZoomControl(o,MapComp.map),o.index=1,MapComp.MountZoomControl({zoomPos:e.zoomPos,zoomControlDiv:o,mapContainerId:e.mapContainerId})),"number"==typeof e.toggleMapModeBtnPosition?(o=document.createElement("div"),MapComp.setupThemeModeBtn({controlDiv:o,toggleMapMode:MapComp.methods.toggleMapMode,text:{ToggleDarkLightMap:resources.ToggleDarkLightMap}}),MapComp.map.controls[e.toggleMapModeBtnPosition].push(o)):(o=document.createElement("div"),MapComp.methods.mapView.mobileToggleMapModeControl(o),MapComp.map.controls[e.zoomPos].push(o),MapComp.EventAddDomListener(o,"click",MapComp.methods.toggleMapMode)),"true"===resources.EnableSaveMapView&&(o=document.createElement("div"),MapComp.methods.mapView.SaveMapViewControl(o),o.index=1,MapComp.map.controls[e.zoomPos].push(o)),e.options.DisplayControls&&(o=document.createElement("div"),t.locateMeBtnBuilder(o),MapComp.map.controls[e.locateMeBtnPosition].push(o)),"true"===resources.EnableToggleFullScreenMapBtn&&(t=document.createElement("div"),MapComp.methods.buttons.toggleFullScreenMapBtnBuilder(t),MapComp.map.controls[MapComp.data.appUI.toggleFullScreenBtnPosition].push(t)),"True"!==resources.EnableTruckerMode||e.isERS?Cookies.remove("_truckerMode"):(o=document.createElement("div"),e.isTruckerModeQuery&&Cookies.set("_truckerMode",!0),MapComp.methods.truckMode.truckerModeBtnBuilder(o),MapComp.map.controls[e.truckerModeBtnPosition].push(o))},MapComp.setLayerPolylines=e=>{var o,t=[],a=e.data.item2;for(o in a)if(a[o].polyline){let e=null;if(a[o].polyline.symbolJSON&&(e=JSON.parse(a[o].polyline.symbolJSON)),a[o].polyline.paths)for(var p=0;p<a[o].polyline.paths.length;p++)t.push({id:a[o].itemId,lineColor:a[o].polyline.color,decodedPoints:google.maps.geometry.encoding.decodePath(a[o].polyline.paths[p]),icons:e});else t.push({id:a[o].itemId,lineColor:a[o].polyline.color,decodedPoints:google.maps.geometry.encoding.decodePath(a[o].polyline.path),icons:e})}return t};
MapComp.setContextMenuListeners = (context, map) => {
    $(map.getDiv()).append(context.contextMenu);

    ['mousedown', 'dragstart', 'zoom_changed', 'maptypeid_changed'].forEach((name) => {
        google.maps.event.addListener(map, name, (e) => {
            context.contextMenu.hide();

            if (name === "mousedown") {
                context.onTouchStart(e);
            }
            if (name === "dragstart") {
                context.onDragStart(e);
            }
        });
    });

    google.maps.event.addListener(map, 'mouseup', (e) => { context.onTouchEnd(e) });
    google.maps.event.addListener(map, 'contextmenu', (e) => { context.onRightClick(e) });
}
MapComp.mapModeStyles={getStyles:function(e,t,l){let s=[];if(this[e])return s=this[e](),MapComp.data.appUI.hideLayer&&s.push({featureType:MapComp.data.appUI.hideLayer,elementType:"labels",stylers:[{visibility:"off"}]}),s=l?s.concat(this.satelliteStyles()):s;throw new Error("Invalid map mode specified")},dark:function(){return this.darklLblsBase().concat([{elementType:"geometry",stylers:[{color:"#242f3e"}]},{featureType:"poi.park",elementType:"geometry",stylers:[{color:"#263c3f"}]},{featureType:"road",elementType:"geometry",stylers:[{color:"#38414e"}]},{featureType:"road",elementType:"geometry.stroke",stylers:[{color:"#212a37"}]},{featureType:"road.highway",elementType:"geometry",stylers:[{color:"#746855"}]},{featureType:"road.highway",elementType:"geometry.stroke",stylers:[{color:"#1f2835"}]},{featureType:"transit",elementType:"geometry",stylers:[{color:"#2f3948"}]},{featureType:"water",elementType:"geometry",stylers:[{color:"#17263c"}]}])},light:function(){return[{featureType:"all",elementType:"labels",stylers:[{visibility:"on"}]},{featureType:"administrative.province",elementType:"geometry.stroke",stylers:[{visibility:"on"},{gamma:"10.00"},{lightness:"-100"},{weight:"1.13"},{color:"#000080"}]}]},lightLabelsLayer:function(){return this.allLblsBase()},satelliteLabels:function(){return this.allLblsBase().concat(this.satelliteStyles())},satelliteStyles:function(){return[{elementType:"labels.text.fill",stylers:[{color:"#ffffff"}]},{elementType:"labels.text.stroke",stylers:[{color:"#222222"}]}]},darklLblsBase:function(){return[{elementType:"labels.text.fill",stylers:[{color:"#DEC69F"}]},{elementType:"labels.text.stroke",stylers:[{color:"#242f3e"},{saturation:-100},{lightness:-100},{weight:0}]},{featureType:"administrative.locality",elementType:"labels.text.fill",stylers:[{color:"#e5bfa1"}]},{featureType:"administrative.province",elementType:"geometry.stroke",stylers:[{visibility:"on"},{gamma:"10.00"},{lightness:"-100"},{weight:"1.13"},{color:"#d49665"}]},{featureType:"administrative.country",elementType:"geometry.stroke",stylers:[{visibility:"on"},{gamma:"10.00"},{lightness:"-100"},{weight:"1.13"},{color:"#d49665"}]},{featureType:"poi",elementType:"labels.text.fill",stylers:[{color:"#d59563"}]},{featureType:"poi.park",elementType:"labels.text.fill",stylers:[{color:"#98C862"}]},{featureType:"road",elementType:"labels.text.fill",stylers:[{color:"#E0E0E0"}]},{featureType:"road.highway",elementType:"labels.text.fill",stylers:[{color:"#f3d19c"}]},{featureType:"transit.station",elementType:"labels.text.fill",stylers:[{color:"#e5bfa1"}]},{featureType:"water",elementType:"labels.text.fill",stylers:[{color:"#C9C9C9"}]},{featureType:"water",elementType:"labels.text.stroke",stylers:[{color:"#9E9E9E"}]}]},allLblsBase:function(){return[{featureType:"all",stylers:[{visibility:"off"}]},{featureType:"administrative",elementType:"labels",stylers:[{visibility:"on"}]},{featureType:"landscape",elementType:"labels",stylers:[{visibility:"on"}]},{featureType:"road",elementType:"labels",stylers:[{visibility:"on"}]},{featureType:"transit",elementType:"labels",stylers:[{visibility:"on"}]},{featureType:"water",elementType:"labels",stylers:[{visibility:"on"}]},{featureType:"poi",elementType:"labels",stylers:[{visibility:"on"}]}]},darkLabelsLayer:function(){return this.allLblsBase().concat(this.darklLblsBase())}};
MapComp.methods.streetView=()=>{let t=MapComp.map.getStreetView(),n=$("#backToMapView");google.maps.event.addListener(t,"visible_changed",function(){var e="True"!=resources.OpenDesktopRoutePlannerDefault,o=e?$(".mobileLocationBar, .myRouteBtn"):null;let i=MapComp.data.appUI.isERS?$(".locationBar, #ERS_LocationBar_Info"):o;null==i&&(i=$(".showSideBar").is(":visible")?$(".showSideBar, .locationBtn"):$(".sideBarColContainer, .locationBtn")),t.getVisible()?(t.setOptions({enableCloseButton:!1,fullscreenControl:!1}),n.show(),i.hide(),(e?$(".showSideBar, .locationBtn, .sideBarGroup"):$(".mobileLocationBar, .myRouteBtn")).hide()):(n.hide(),i.show()),$(n).on("click",function(){t.setVisible(!1);var e=0<$("#rcrLocationBtn").length;MapComp.isRcr&&e&&$(".mobileLocationBar").show()}),Modernizr.mq("(min-width: 993px)")&&(o=$(".locationBtn.shiftLeft")).is(":visible")&&$(".sideBarColContainer").is(":visible")&&o.removeClass("shiftLeft")})};
MapComp.zoomInToLocation = (d) => {
    MapComp.map.setZoom(MapComp.map.getZoom() + 1);
    MapComp.map.panTo(d.location);
}

MapComp.zoomOutToLocation = (d) => {
    MapComp.map.setZoom(MapComp.map.getZoom() - 1);
    MapComp.map.panTo(d.location);
}

MapComp.centerMapToLocation = (d) => {
    MapComp.map.panTo(d.location);
}
MapComp.data.routePlannerAutoComplete={autoCompleteBounds:void 0,googleService:void 0,googlePlacesService:void 0,options:void 0,extraPois:void 0},MapComp.methods.routePlannerAutoComplete={startServices:(e,t)=>{var o=MapComp.data.routePlannerAutoComplete;o.options=e,o.extraPois=t,o.autoCompleteBounds={west:e.RoutingModel.MapBottomLeftBounds.Longitude,south:e.RoutingModel.MapBottomLeftBounds.Latitude,east:e.RoutingModel.MapTopRightBounds.Longitude,north:e.RoutingModel.MapTopRightBounds.Latitude}},setupGetGoogleLocation:t=>{let o=MapComp.methods.routePlannerAutoComplete;return e=>o.GetGoogleLocation(e,t)},GetLocationInformation:async(e,t)=>{var o=MapComp.methods.routePlannerAutoComplete,a=(MapComp.data.routePlannerAutoComplete,(await e.googleObj.placePrediction.toPlace().fetchFields({fields:["displayName","formattedAddress","location","addressComponents"]})).place);return o.convertGooglePlaceResultToSimplePlaceResult(a,t,e.text)},convertGooglePlaceResultToSimplePlaceResult:(e,t,o)=>{var a,l=MapComp.methods.routePlannerAutoComplete;for(a of resources.PlaceOverrides.split(";")){var n=a.split("|");e.formattedAddress==n[0]&&(n=n[1].split(","),e.location={lat:n[0],lng:n[1]})}var o=o||e.formattedAddress||e.name,r=e.location.lat(),s=e.location.lng(),l=l.GetAddressDetails(e.addressComponents);return new t(o,e.id,r,s,!0,l.streetNumber,l.streetName,l.postalCode)},GetAddressDetails:t=>{let o,a,l,n;for(let e=0;e<t.length;e++)-1<t[e].types.indexOf("route")&&(o=t[e].short_name),-1<t[e].types.indexOf("street_number")&&(a=t[e].long_name),-1<t[e].types.indexOf("postal_code")&&(l=t[e].long_name),-1<t[e].types.indexOf("administrative_area_level_1")&&(n=t[e].short_name);return{streetName:o,streetNumber:a,postalCode:l,state:n}},setSimplePlaceDetails(e,t){var o=MapComp.methods.routePlannerAutoComplete.GetAddressDetails(t.address_components);e.name=t.formatted_address,e.state=o.state,e.streetName=o.streetName,e.postalCode=o.postalCode,e.streetNumber=o.streetNumber},autoCompleteSource:async(e,t)=>{var o=MapComp.data.routePlannerAutoComplete,a=MapComp.methods.routePlannerAutoComplete,o=(e.token&&e.tokenCreatedTime&&!(e.tokenCreatedTime<new Date(Date.now()-18e4))||(e.token=new google.maps.places.AutocompleteSessionToken,e.tokenCreatedTime=Date.now()),{input:t,locationBias:o.autoCompleteBounds,sessionToken:e.token,language:"en-US"}),e=(await google.maps.places.AutocompleteSuggestion.fetchAutocompleteSuggestions(o))["suggestions"],o=e.map(e=>({label:e.placePrediction.text,poiId:e.placePrediction.placeId,isGoogle:!0,googleObj:e}));return a.autocompleteFilter(o,t)},convertGooglePlaceResultsToJqueryUiAutoCompleteFilterArray:e=>{var t,o=[];for(t of e)o.push({label:t.description||t.name,poiId:t.place_id,isGoogle:!0,googleObj:t});return o},autocompleteFilter:(e,t)=>{var o=MapComp.data.routePlannerAutoComplete;let a=new RegExp("^"+$.ui.autocomplete.escapeRegex(t),"i");return $.grep(o.extraPois,function(e){return a.test(e.label)}).concat(e)},appendGoogleLogoToAutocompleteResults:(e,t)=>{MapComp.isGoogle&&$("ul.ui-autocomplete.ui-menu").append($("<div>").css("text-align","right").html($("<img>").attr("src","/Content/images/poweredByGoogle.png")))},setupSelectHandler:a=>{let l=MapComp.methods.routePlannerAutoComplete;return(e,t)=>{let o={};o.selector="#"+e.target.id,o.poiId=t.item.poiId,o.isGoogle=!0,o.googleObj=t.item.googleObj,o.text=t.item.label.text,l.GetLocationInformation(o,a).then(e=>{o.point=e,$(document).trigger("locationSelected-autocomplete",o)})}}};
MapComp.methods.routeMarkers = {
    create: (d) => {
        const marker = new google.maps.Marker(d);
        if (d.dragEnd) {
            google.maps.event.addListener(marker, 'dragend', d.dragEnd);
        }
        if (d.clickWaypoint) {
            marker.addListener('click', (e) => d.clickWaypoint({ ...e, index: d.index }));
        }
        return marker
    },
    update: ({ id = null, marker, latLng, iconUrl, map }) => {
        if (!marker) return

        if (latLng) marker.setPosition(latLng);

        if (map) marker.setMap(map);
        if (iconUrl && marker.icon !== iconUrl) marker.setIcon(iconUrl);

    },
    clear: ({ marker }) => {
        if (marker) {
            marker.setMap(null);
        }
    },
    removeAll: (locations) => {
        locations.forEach(function (location) {
            MapComp.methods.routeMarkers.clear(location)
        });
    }
}

