PageSourceSearch

https://sevaonline.ca/assets/EducationFutureGridPage-BJeyk0tV.js

js sevaonline.ca collected 2026-10-02 21:17:01 UTC 270,920 bytes, 5 lines download raw bytes

1import{c as Na,q as B,W as je,a7 as ps,aH as _s,j as a,g as gs,f as vs,Z as Zi,C as X,d as Q,l as $,r as ee,p as xs,v as Je,D as ca,z as Ee,k as Ne,S as ys,N as Wi,A as Dt,x as ws,T as da,U as ua,B as bs,O as Ps}from"./client-entry-XwGFDyCO.js";import{C as ji}from"./ClientOnlyApexChart-Ckg_393h.js";import{A as Ss,a as ks}from"./alert-DsfHjbii.js";import{S as _e}from"./separator-BJoxM17C.js";import{E as Ts}from"./EducationalPageLayout-Dr361PmP.js";import{a as Ls,E as Cs}from"./EducationPageHero-Dq0boZQv.js";import{F as b,h as G,l as Es}from"./educationCalculations-EQ4Ghvn4.js";import{gX as Mi,fy as Ai,be as Ns,b_ as js,J as fa,dO as Ms,b7 as As,gY as Ii,cN as Ri,gZ as Is,g_ as Rs,g$ as Os,h0 as Bs,h1 as zs,h2 as Ds,h3 as Zs,h4 as Ws,Y as ma,L as pa,Z as _a,cS as Oi,gS as Fs,gV as Zt,h5 as ga,h6 as va,h7 as Hs,h8 as xa,ac as Gs,ab as Us,b5 as Vs,h9 as $s,ha as Ks,hb as qs,az as ja,ax as Ma,hc as Ys,hd as Js,he as Xs,hf as Qs,hg as eo,hh as to,hi as io,O as no,N as ao,aA as Ft,av as Gi,hj as ro,hk as so,hl as oo,hm as lo,bk as ho,B as co,K as uo,aG as fo,cI as mo}from"./costDefaults-rOGhjEwb.js";import{c as po,d as _o,C as go,e as Bi,f as vo,O as xo,g as ya,a as yo}from"./EducationFutureGridNav-B7Q0rpL-.js";import{F as wo}from"./EducationFutureGridContent-B95dl7Gn.js";import{T as W}from"./EducationTerm-Bxjfgzs3.js";import{S as bo}from"./EducationFutureGridAtlas-lsyYe2Yw.js";import{P as Po,S as So}from"./EducationFutureGridEnergyFlow-B_6v_Msy.js";import{F as ko,a as To}from"./FutureGridCostComparison-QiLtpOMj.js";import{B as wa}from"./bookmark-check-DIdy5l6O.js";import{F as Aa}from"./factory-B3zZ2OED.js";import{L as ba}from"./layout-grid-CZl2t_ln.js";import{L as Lo}from"./landmark-mp-9ighI.js";import{S as Co}from"./sun-medium-CI5RQcno.js";import{M as Eo}from"./mountain-Osg1PuKn.js";import{F as No}from"./file-text-D_ISa_ds.js";import{L as Pa}from"./layers-_ldlarMi.js";import"./SEOHead-CGKjDTa3.js";import"./seoUtils-B2qMrSAB.js";import"./SocialMetaTags-DLIUvN5t.js";import"./tabs-BiOPGOpc.js";import"./textarea-CVA0nboY.js";import"./avatar-CZaPQTJF.js";import"./BreadcrumbNavigation-xI07MmKg.js";import"./house-BBpC9PQU.js";import"./message-circle-5ig93w_G.js";import"./loader-circle-CJPC6GoX.js";import"./hvacSimulation-Qnde_gfQ.js";import"./tooltip-DYMwsDZ4.js";import"./slider-Co5Nu4Cf.js";import"./accordion-CPi5oOUP.js";import"./circle-question-mark-D01tQLbQ.js";import"./sparkles-CaJRI5wg.js";import"./info-DMQYnLc0.js";import"./arrow-left-CmxwX6tY.js";import"./external-link-DtsHHJuj.js";import"./educationGlossary-ClJJP1RE.js";import"./plus-BQskATHk.js";import"./sankeyPrimitives-xRVujXuB.js";import"./sliders-vertical-DIVhesq2.js";import"./rotate-ccw-BcVyi8en.js";const jo=[["path",{d:"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z",key:"p7xjir"}]],Mo=Na("cloud",jo);const Ao=[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["path",{d:"M11 18H8a2 2 0 0 1-2-2V9",key:"19pyzm"}]],Io=Na("git-compare",Ao);function Ia(u,d){const l=B.useRef(d);B.useEffect(function(){d!==l.current&&u.attributionControl!=null&&(l.current!=null&&u.attributionControl.removeAttribution(l.current),d!=null&&u.attributionControl.addAttribution(d)),l.current=d},[u,d])}function Ro(u,d,l){d.center!==l.center&&u.setLatLng(d.center),d.radius!=null&&d.radius!==l.radius&&u.setRadius(d.radius)}const Oo=1;function Bo(u){return Object.freeze({__version:Oo,map:u})}function Ra(u,d){return Object.freeze({...u,...d})}const Ui=B.createContext(null);function Gt(){const u=B.use(Ui);if(u==null)throw new Error("No context provided: useLeafletContext() can only be used in a descendant of <MapContainer>");return u}function zo(u){function d(l,p){const{instance:m,context:x}=u(l).current;B.useImperativeHandle(p,()=>m);const{children:w}=l;return w==null?null:je.createElement(Ui,{value:x},w)}return B.forwardRef(d)}function Do(u){function d(l,p){const[m,x]=B.useState(!1),{instance:w}=u(l,x).current;B.useImperativeHandle(p,()=>w),B.useEffect(function(){m&&w.update()},[w,m,l.children]);const z=w._contentNode;return z?ps.createPortal(l.children,z):null}return B.forwardRef(d)}function Oa(u){function d(l,p){const{instance:m}=u(l).current;return B.useImperativeHandle(p,()=>m),null}return B.forwardRef(d)}function Zo(u){return function(l){const p=Gt(),m=u(l,p),{instance:x}=m.current,w=B.useRef(l.position),{position:z}=l;return B.useEffect(function(){return x.addTo(p.map),function(){x.remove()}},[p.map,x]),B.useEffect(function(){z!=null&&z!==w.current&&(x.setPosition(z),w.current=z)},[x,z]),m}}function Vi(u,d){const l=B.useRef(void 0);B.useEffect(function(){return d!=null&&u.instance.on(d),l.current=d,function(){l.current!=null&&u.instance.off(l.current),l.current=null}},[u,d])}function Ut(u,d){const l=u.pane??d.pane;return l?{...u,pane:l}:u}function Wo(u,d){return function(p,m){const x=Gt(),w=u(Ut(p,x),x);return Ia(x.map,p.attribution),Vi(w.current,p.eventHandlers),d(w.current,x,p,m),w}}var _t={exports:{}};var Fo=_t.exports,Sa;function Ho(){return Sa||(Sa=1,(function(u,d){(function(l,p){p(d)})(Fo,(function(l){var p="1.9.4";function m(e){var t,i,n,r;for(i=1,n=arguments.length;i<n;i++){r=arguments[i];for(t in r)e[t]=r[t]}return e}var x=Object.create||(function(){function e(){}return function(t){return e.prototype=t,new e}})();function w(e,t){var i=Array.prototype.slice;
1if(e.bind)return e.bind.apply(e,i.call(arguments,1));var n=i.call(arguments,2);return function(){return e.apply(t,n.length?n.concat(i.call(arguments)):arguments)}}var z=0;function g(e){return"_leaflet_id"in e||(e._leaflet_id=++z),e._leaflet_id}function _(e,t,i){var n,r,s,o;return o=function(){n=!1,r&&(s.apply(i,r),r=!1)},s=function(){n?r=arguments:(e.apply(i,arguments),setTimeout(o,t),n=!0)},s}function C(e,t,i){var n=t[1],r=t[0],s=n-r;return e===n&&i?e:((e-r)%s+s)%s+r}function S(){return!1}function O(e,t){if(t===!1)return e;var i=Math.pow(10,t===void 0?6:t);return Math.round(e*i)/i}function ae(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function se(e){return ae(e).split(/\s+/)}function Z(e,t){Object.prototype.hasOwnProperty.call(e,"options")||(e.options=e.options?x(e.options):{});for(var i in t)e.options[i]=t[i];return e.options}function vt(e,t,i){var n=[];for(var r in e)n.push(encodeURIComponent(i?r.toUpperCase():r)+"="+encodeURIComponent(e[r]));return(!t||t.indexOf("?")===-1?"?":"&")+n.join("&")}var $t=/\{ *([\w_ -]+) *\}/g;function Qe(e,t){return e.replace($t,function(i,n){var r=t[n];if(r===void 0)throw new Error("No value provided for variable "+i);return typeof r=="function"&&(r=r(t)),r})}var ie=Array.isArray||function(e){return Object.prototype.toString.call(e)==="[object Array]"};function Kt(e,t){for(var i=0;i<e.length;i++)if(e[i]===t)return i;return-1}var xt="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";function qt(e){return window["webkit"+e]||window["moz"+e]||window["ms"+e]}var qi=0;function Yi(e){var t=+new Date,i=Math.max(0,16-(t-qi));return qi=t+i,window.setTimeout(e,i)}var Yt=window.requestAnimationFrame||qt("RequestAnimationFrame")||Yi,Ji=window.cancelAnimationFrame||qt("CancelAnimationFrame")||qt("CancelRequestAnimationFrame")||function(e){window.clearTimeout(e)};function oe(e,t,i){if(i&&Yt===Yi)e.call(t);else return Yt.call(window,w(e,t))}function ue(e){e&&Ji.call(window,e)}var Ha={__proto__:null,extend:m,create:x,bind:w,get lastId(){return z},stamp:g,throttle:_,wrapNum:C,falseFn:S,formatNum:O,trim:ae,splitWords:se,setOptions:Z,getParamString:vt,template:Qe,isArray:ie,indexOf:Kt,emptyImageUrl:xt,requestFn:Yt,cancelFn:Ji,requestAnimFrame:oe,cancelAnimFrame:ue};function Pe(){}Pe.extend=function(e){var t=function(){Z(this),this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},i=t.__super__=this.prototype,n=x(i);n.constructor=t,t.prototype=n;for(var r in this)Object.prototype.hasOwnProperty.call(this,r)&&r!=="prototype"&&r!=="__super__"&&(t[r]=this[r]);return e.statics&&m(t,e.statics),e.includes&&(Ga(e.includes),m.apply(null,[n].concat(e.includes))),m(n,e),delete n.statics,delete n.includes,n.options&&(n.options=i.options?x(i.options):{},m(n.options,e.options)),n._initHooks=[],n.callInitHooks=function(){if(!this._initHooksCalled){i.callInitHooks&&i.callInitHooks.call(this),this._initHooksCalled=!0;for(var s=0,o=n._initHooks.length;s<o;s++)n._initHooks[s].call(this)}},t},Pe.include=function(e){var t=this.prototype.options;return m(this.prototype,e),e.options&&(this.prototype.options=t,this.mergeOptions(e.options)),this},Pe.mergeOptions=function(e){return m(this.prototype.options,e),this},Pe.addInitHook=function(e){var t=Array.prototype.slice.call(arguments,1),i=typeof e=="function"?e:function(){this[e].apply(this,t)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(i),this};function Ga(e){if(!(typeof L>"u"||!L||!L.Mixin)){e=ie(e)?e:[e];for(var t=0;t<e.length;
1t++)e[t]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",new Error().stack)}}var de={on:function(e,t,i){if(typeof e=="object")for(var n in e)this._on(n,e[n],t);else{e=se(e);for(var r=0,s=e.length;r<s;r++)this._on(e[r],t,i)}return this},off:function(e,t,i){if(!arguments.length)delete this._events;else if(typeof e=="object")for(var n in e)this._off(n,e[n],t);else{e=se(e);for(var r=arguments.length===1,s=0,o=e.length;s<o;s++)r?this._off(e[s]):this._off(e[s],t,i)}return this},_on:function(e,t,i,n){if(typeof t!="function"){console.warn("wrong listener type: "+typeof t);return}if(this._listens(e,t,i)===!1){i===this&&(i=void 0);var r={fn:t,ctx:i};n&&(r.once=!0),this._events=this._events||{},this._events[e]=this._events[e]||[],this._events[e].push(r)}},_off:function(e,t,i){var n,r,s;if(this._events&&(n=this._events[e],!!n)){if(arguments.length===1){if(this._firingCount)for(r=0,s=n.length;r<s;r++)n[r].fn=S;delete this._events[e];return}if(typeof t!="function"){console.warn("wrong listener type: "+typeof t);return}var o=this._listens(e,t,i);if(o!==!1){var h=n[o];this._firingCount&&(h.fn=S,this._events[e]=n=n.slice()),n.splice(o,1)}}},fire:function(e,t,i){if(!this.listens(e,i))return this;var n=m({},t,{type:e,target:this,sourceTarget:t&&t.sourceTarget||this});if(this._events){var r=this._events[e];if(r){this._firingCount=this._firingCount+1||1;for(var s=0,o=r.length;s<o;s++){var h=r[s],c=h.fn;h.once&&this.off(e,c,h.ctx),c.call(h.ctx||this,n)}this._firingCount--}}return i&&this._propagateEvent(n),this},listens:function(e,t,i,n){typeof e!="string"&&console.warn('"string" type argument expected');var r=t;typeof t!="function"&&(n=!!t,r=void 0,i=void 0);var s=this._events&&this._events[e];if(s&&s.length&&this._listens(e,r,i)!==!1)return!0;if(n){for(var o in this._eventParents)if(this._eventParents[o].listens(e,t,i,n))return!0}return!1},_listens:function(e,t,i){if(!this._events)return!1;var n=this._events[e]||[];if(!t)return!!n.length;i===this&&(i=void 0);for(var r=0,s=n.length;r<s;r++)if(n[r].fn===t&&n[r].ctx===i)return r;return!1},once:function(e,t,i){if(typeof e=="object")for(var n in e)this._on(n,e[n],t,!0);else{e=se(e);for(var r=0,s=e.length;r<s;r++)this._on(e[r],t,i,!0)}return this},addEventParent:function(e){return this._eventParents=this._eventParents||{},this._eventParents[g(e)]=e,this},removeEventParent:function(e){return this._eventParents&&delete this._eventParents[g(e)],this},_propagateEvent:function(e){for(var t in this._eventParents)this._eventParents[t].fire(e.type,m({layer:e.target,propagatedFrom:e.target},e),!0)}};de.addEventListener=de.on,de.removeEventListener=de.clearAllEventListeners=de.off,de.addOneTimeEventListener=de.once,de.fireEvent=de.fire,de.hasEventListeners=de.listens;var et=Pe.extend(de);function N(e,t,i){this.x=i?Math.round(e):e,this.y=i?Math.round(t):t}var Xi=Math.trunc||function(e){return e>0?Math.floor(e):Math.ceil(e)};N.prototype={clone:function(){return new N(this.x,this.y)},add:function(e){return this.clone()._add(E(e))},_add:function(e){return this.x+=e.x,this.y+=e.y,this},subtract:function(e){return this.clone()._subtract(E(e))},_subtract:function(e){return this.x-=e.x,this.y-=e.y,this},divideBy:function(e){return this.clone()._divideBy(e)},_divideBy:function(e){return this.x/=e,this.y/=e,this},multiplyBy:function(e){return this.clone()._multiplyBy(e)},_multiplyBy:function(e){return this.x*=e,this.y*=e,this},scaleBy:function(e){return new N(this.x*e.x,this.y*e.y)},unscaleBy:function(e){return new N(this.x/e.x,this.y/e.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=Xi(this.x),this.y=Xi(this.y),this},distanceTo:function(e){e=E(e);var t=e.x-this.x,i=e.y-this.y;return Math.sqrt(t*t+i*i)},equals:function(e){return e=E(e),e.x===this.x&&e.y===this.y},contains:function(e){return e=E(e),Math.abs(e.x)<=Math.abs(this.x)&&Math.abs(e.y)<=Math.abs(this.y)},toString:function(){return"Point("+O(this.x)+", "+O(this.y)+")"}};function E(e,t,i){return e instanceof N?e:ie(e)?new N(e[0],e[1]):e==null?e:typeof e=="object"&&"x"in e&&"y"in e?new N(e.x,e.y):new N(e,t,i)}function U(e,t){if(e)for(var i=t?[e,t]:e,n=0,r=i.length;n<r;n++)this.extend(i[n])}U.prototype={extend:function(e){var t,i;if(!e)return this;if(e instanceof N||typeof e[0]=="number"||"x"in e)t=i=E(e);else if(e=le(e),t=e.min,i=e.max,!t||!i)return this;
1return!this.min&&!this.max?(this.min=t.clone(),this.max=i.clone()):(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(i.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(i.y,this.max.y)),this},getCenter:function(e){return E((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,e)},getBottomLeft:function(){return E(this.min.x,this.max.y)},getTopRight:function(){return E(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(e){var t,i;return typeof e[0]=="number"||e instanceof N?e=E(e):e=le(e),e instanceof U?(t=e.min,i=e.max):t=i=e,t.x>=this.min.x&&i.x<=this.max.x&&t.y>=this.min.y&&i.y<=this.max.y},intersects:function(e){e=le(e);var t=this.min,i=this.max,n=e.min,r=e.max,s=r.x>=t.x&&n.x<=i.x,o=r.y>=t.y&&n.y<=i.y;return s&&o},overlaps:function(e){e=le(e);var t=this.min,i=this.max,n=e.min,r=e.max,s=r.x>t.x&&n.x<i.x,o=r.y>t.y&&n.y<i.y;return s&&o},isValid:function(){return!!(this.min&&this.max)},pad:function(e){var t=this.min,i=this.max,n=Math.abs(t.x-i.x)*e,r=Math.abs(t.y-i.y)*e;return le(E(t.x-n,t.y-r),E(i.x+n,i.y+r))},equals:function(e){return e?(e=le(e),this.min.equals(e.getTopLeft())&&this.max.equals(e.getBottomRight())):!1}};function le(e,t){return!e||e instanceof U?e:new U(e,t)}function he(e,t){if(e)for(var i=t?[e,t]:e,n=0,r=i.length;n<r;n++)this.extend(i[n])}he.prototype={extend:function(e){var t=this._southWest,i=this._northEast,n,r;if(e instanceof F)n=e,r=e;else if(e instanceof he){if(n=e._southWest,r=e._northEast,!n||!r)return this}else return e?this.extend(I(e)||q(e)):this;return!t&&!i?(this._southWest=new F(n.lat,n.lng),this._northEast=new F(r.lat,r.lng)):(t.lat=Math.min(n.lat,t.lat),t.lng=Math.min(n.lng,t.lng),i.lat=Math.max(r.lat,i.lat),i.lng=Math.max(r.lng,i.lng)),this},pad:function(e){var t=this._southWest,i=this._northEast,n=Math.abs(t.lat-i.lat)*e,r=Math.abs(t.lng-i.lng)*e;return new he(new F(t.lat-n,t.lng-r),new F(i.lat+n,i.lng+r))},getCenter:function(){return new F((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new F(this.getNorth(),this.getWest())},getSouthEast:function(){return new F(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(e){typeof e[0]=="number"||e instanceof F||"lat"in e?e=I(e):e=q(e);var t=this._southWest,i=this._northEast,n,r;
1return e instanceof he?(n=e.getSouthWest(),r=e.getNorthEast()):n=r=e,n.lat>=t.lat&&r.lat<=i.lat&&n.lng>=t.lng&&r.lng<=i.lng},intersects:function(e){e=q(e);var t=this._southWest,i=this._northEast,n=e.getSouthWest(),r=e.getNorthEast(),s=r.lat>=t.lat&&n.lat<=i.lat,o=r.lng>=t.lng&&n.lng<=i.lng;return s&&o},overlaps:function(e){e=q(e);var t=this._southWest,i=this._northEast,n=e.getSouthWest(),r=e.getNorthEast(),s=r.lat>t.lat&&n.lat<i.lat,o=r.lng>t.lng&&n.lng<i.lng;return s&&o},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(e,t){return e?(e=q(e),this._southWest.equals(e.getSouthWest(),t)&&this._northEast.equals(e.getNorthEast(),t)):!1},isValid:function(){return!!(this._southWest&&this._northEast)}};function q(e,t){return e instanceof he?e:new he(e,t)}function F(e,t,i){if(isNaN(e)||isNaN(t))throw new Error("Invalid LatLng object: ("+e+", "+t+")");this.lat=+e,this.lng=+t,i!==void 0&&(this.alt=+i)}F.prototype={equals:function(e,t){if(!e)return!1;e=I(e);var i=Math.max(Math.abs(this.lat-e.lat),Math.abs(this.lng-e.lng));return i<=(t===void 0?1e-9:t)},toString:function(e){return"LatLng("+O(this.lat,e)+", "+O(this.lng,e)+")"},distanceTo:function(e){return Me.distance(this,I(e))},wrap:function(){return Me.wrapLatLng(this)},toBounds:function(e){var t=180*e/40075017,i=t/Math.cos(Math.PI/180*this.lat);return q([this.lat-t,this.lng-i],[this.lat+t,this.lng+i])},clone:function(){return new F(this.lat,this.lng,this.alt)}};function I(e,t,i){return e instanceof F?e:ie(e)&&typeof e[0]!="object"?e.length===3?new F(e[0],e[1],e[2]):e.length===2?new F(e[0],e[1]):null:e==null?e:typeof e=="object"&&"lat"in e?new F(e.lat,"lng"in e?e.lng:e.lon,e.alt):t===void 0?null:new F(e,t,i)}var Se={latLngToPoint:function(e,t){var i=this.projection.project(e),n=this.scale(t);return this.transformation._transform(i,n)},pointToLatLng:function(e,t){var i=this.scale(t),n=this.transformation.untransform(e,i);return this.projection.unproject(n)},project:function(e){return this.projection.project(e)},unproject:function(e){return this.projection.unproject(e)},scale:function(e){return 256*Math.pow(2,e)},zoom:function(e){return Math.log(e/256)/Math.LN2},getProjectedBounds:function(e){if(this.infinite)return null;var t=this.projection.bounds,i=this.scale(e),n=this.transformation.transform(t.min,i),r=this.transformation.transform(t.max,i);return new U(n,r)},infinite:!1,wrapLatLng:function(e){var t=this.wrapLng?C(e.lng,this.wrapLng,!0):e.lng,i=this.wrapLat?C(e.lat,this.wrapLat,!0):e.lat,n=e.alt;return new F(i,t,n)},wrapLatLngBounds:function(e){var t=e.getCenter(),i=this.wrapLatLng(t),n=t.lat-i.lat,r=t.lng-i.lng;if(n===0&&r===0)return e;
1var s=e.getSouthWest(),o=e.getNorthEast(),h=new F(s.lat-n,s.lng-r),c=new F(o.lat-n,o.lng-r);return new he(h,c)}},Me=m({},Se,{wrapLng:[-180,180],R:6371e3,distance:function(e,t){var i=Math.PI/180,n=e.lat*i,r=t.lat*i,s=Math.sin((t.lat-e.lat)*i/2),o=Math.sin((t.lng-e.lng)*i/2),h=s*s+Math.cos(n)*Math.cos(r)*o*o,c=2*Math.atan2(Math.sqrt(h),Math.sqrt(1-h));return this.R*c}}),Qi=6378137,Jt={R:Qi,MAX_LATITUDE:85.0511287798,project:function(e){var t=Math.PI/180,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,e.lat),-i),r=Math.sin(n*t);return new N(this.R*e.lng*t,this.R*Math.log((1+r)/(1-r))/2)},unproject:function(e){var t=180/Math.PI;return new F((2*Math.atan(Math.exp(e.y/this.R))-Math.PI/2)*t,e.x*t/this.R)},bounds:(function(){var e=Qi*Math.PI;return new U([-e,-e],[e,e])})()};function Xt(e,t,i,n){if(ie(e)){this._a=e[0],this._b=e[1],this._c=e[2],this._d=e[3];return}this._a=e,this._b=t,this._c=i,this._d=n}Xt.prototype={transform:function(e,t){return this._transform(e.clone(),t)},_transform:function(e,t){return t=t||1,e.x=t*(this._a*e.x+this._b),e.y=t*(this._c*e.y+this._d),e},untransform:function(e,t){return t=t||1,new N((e.x/t-this._b)/this._a,(e.y/t-this._d)/this._c)}};function tt(e,t,i,n){return new Xt(e,t,i,n)}var Qt=m({},Me,{code:"EPSG:3857",projection:Jt,transformation:(function(){var e=.5/(Math.PI*Jt.R);return tt(e,.5,-e,.5)})()}),Ua=m({},Qt,{code:"EPSG:900913"});function en(e){return document.createElementNS("http://www.w3.org/2000/svg",e)}function tn(e,t){var i="",n,r,s,o,h,c;for(n=0,s=e.length;n<s;n++){for(h=e[n],r=0,o=h.length;r<o;r++)c=h[r],i+=(r?"L":"M")+c.x+" "+c.y;i+=t?P.svg?"z":"x":""}return i||"M0 0"}var ei=document.documentElement.style,yt="ActiveXObject"in window,Va=yt&&!document.addEventListener,nn="msLaunchUri"in navigator&&!("documentMode"in document),ti=xe("webkit"),an=xe("android"),rn=xe("android 2")||xe("android 3"),$a=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),Ka=an&&xe("Google")&&$a<537&&!("AudioNode"in window),ii=!!window.opera,sn=!nn&&xe("chrome"),on=xe("gecko")&&!ti&&!ii&&!yt,qa=!sn&&xe("safari"),ln=xe("phantom"),hn="OTransition"in ei,Ya=navigator.platform.indexOf("Win")===0,cn=yt&&"transition"in ei,ni="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!rn,dn="MozPerspective"in ei,Ja=!window.L_DISABLE_3D&&(cn||ni||dn)&&!hn&&!ln,it=typeof orientation<"u"||xe("mobile"),Xa=it&&ti,Qa=it&&ni,un=!window.PointerEvent&&window.MSPointerEvent,fn=!!(window.PointerEvent||un),mn="ontouchstart"in window||!!window.TouchEvent,er=!window.L_NO_TOUCH&&(mn||fn),tr=it&&ii,ir=it&&on,nr=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,ar=(function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("testPassiveEventSupport",S,t),window.removeEventListener("testPassiveEventSupport",S,t)}catch{}return e})(),rr=(function(){return!!document.createElement("canvas").getContext})(),ai=!!(document.createElementNS&&en("svg").createSVGRect),sr=!!ai&&(function(){var e=document.createElement("div");return e.innerHTML="<svg/>",(e.firstChild&&e.firstChild.namespaceURI)==="http://www.w3.org/2000/svg"})(),or=!ai&&(function(){try{var e=document.createElement("div");e.innerHTML='<v:shape adj="1"/>';var t=e.firstChild;return t.style.behavior="url(#default#VML)",t&&typeof t.adj=="object"}catch{return!1}})(),lr=navigator.platform.indexOf("Mac")===0,hr=navigator.platform.indexOf("Linux")===0;function xe(e){return navigator.userAgent.toLowerCase().indexOf(e)>=0}var P={ie:yt,ielt9:Va,edge:nn,webkit:ti,android:an,android23:rn,androidStock:Ka,opera:ii,chrome:sn,gecko:on,safari:qa,phantom:ln,opera12:hn,win:Ya,ie3d:cn,webkit3d:ni,gecko3d:dn,any3d:Ja,mobile:it,mobileWebkit:Xa,mobileWebkit3d:Qa,msPointer:un,pointer:fn,touch:er,touchNative:mn,mobileOpera:tr,mobileGecko:ir,retina:nr,passiveEvents:ar,canvas:rr,svg:ai,vml:or,inlineSvg:sr,mac:lr,linux:hr},pn=P.msPointer?"MSPointerDown":"pointerdown",_n=P.msPointer?"MSPointerMove":"pointermove",gn=P.msPointer?"MSPointerUp":"pointerup",vn=P.msPointer?"MSPointerCancel":"pointercancel",ri={touchstart:pn,touchmove:_n,touchend:gn,touchcancel:vn},xn={touchstart:pr,touchmove:wt,touchend:wt,touchcancel:wt}
1,Fe={},yn=!1;function cr(e,t,i){return t==="touchstart"&&mr(),xn[t]?(i=xn[t].bind(this,i),e.addEventListener(ri[t],i,!1),i):(console.warn("wrong event specified:",t),S)}function dr(e,t,i){if(!ri[t]){console.warn("wrong event specified:",t);return}e.removeEventListener(ri[t],i,!1)}function ur(e){Fe[e.pointerId]=e}function fr(e){Fe[e.pointerId]&&(Fe[e.pointerId]=e)}function wn(e){delete Fe[e.pointerId]}function mr(){yn||(document.addEventListener(pn,ur,!0),document.addEventListener(_n,fr,!0),document.addEventListener(gn,wn,!0),document.addEventListener(vn,wn,!0),yn=!0)}function wt(e,t){if(t.pointerType!==(t.MSPOINTER_TYPE_MOUSE||"mouse")){t.touches=[];for(var i in Fe)t.touches.push(Fe[i]);t.changedTouches=[t],e(t)}}function pr(e,t){t.MSPOINTER_TYPE_TOUCH&&t.pointerType===t.MSPOINTER_TYPE_TOUCH&&ne(t),wt(e,t)}function _r(e){var t={},i,n;for(n in e)i=e[n],t[n]=i&&i.bind?i.bind(e):i;return e=t,t.type="dblclick",t.detail=2,t.isTrusted=!1,t._simulated=!0,t}var gr=200;function vr(e,t){e.addEventListener("dblclick",t);var i=0,n;function r(s){if(s.detail!==1){n=s.detail;return}if(!(s.pointerType==="mouse"||s.sourceCapabilities&&!s.sourceCapabilities.firesTouchEvents)){var o=Tn(s);if(!(o.some(function(c){return c instanceof HTMLLabelElement&&c.attributes.for})&&!o.some(function(c){return c instanceof HTMLInputElement||c instanceof HTMLSelectElement}))){var h=Date.now();h-i<=gr?(n++,n===2&&t(_r(s))):n=1,i=h}}}return e.addEventListener("click",r),{dblclick:t,simDblclick:r}}function xr(e,t){e.removeEventListener("dblclick",t.dblclick),e.removeEventListener("click",t.simDblclick)}var si=St(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),nt=St(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),bn=nt==="webkitTransition"||nt==="OTransition"?nt+"End":"transitionend";function Pn(e){return typeof e=="string"?document.getElementById(e):e}function at(e,t){var i=e.style[t]||e.currentStyle&&e.currentStyle[t];if((!i||i==="auto")&&document.defaultView){var n=document.defaultView.getComputedStyle(e,null);i=n?n[t]:null}return i==="auto"?null:i}function D(e,t,i){var n=document.createElement(e);return n.className=t||"",i&&i.appendChild(n),n}function V(e){var t=e.parentNode;t&&t.removeChild(e)}function bt(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function He(e){var t=e.parentNode;t&&t.lastChild!==e&&t.appendChild(e)}function Ge(e){var t=e.parentNode;t&&t.firstChild!==e&&t.insertBefore(e,t.firstChild)}function oi(e,t){if(e.classList!==void 0)return e.classList.contains(t);var i=Pt(e);return i.length>0&&new RegExp("(^|\\s)"+t+"(\\s|$)").test(i)}function M(e,t){if(e.classList!==void 0)for(var i=se(t),n=0,r=i.length;n<r;n++)e.classList.add(i[n]);else if(!oi(e,t)){var s=Pt(e);li(e,(s?s+" ":"")+t)}}function K(e,t){e.classList!==void 0?e.classList.remove(t):li(e,ae((" "+Pt(e)+" ").replace(" "+t+" "," ")))}function li(e,t){e.className.baseVal===void 0?e.className=t:e.className.baseVal=t}function Pt(e){return e.correspondingElement&&(e=e.correspondingElement),e.className.baseVal===void 0?e.className:e.className.baseVal}function fe(e,t){"opacity"in e.style?e.style.opacity=t:"filter"in e.style&&yr(e,t)}function yr(e,t){var i=!1,n="DXImageTransform.Microsoft.Alpha";try{i=e.filters.item(n)}catch{if(t===1)return}t=Math.round(t*100),i?(i.Enabled=t!==100,i.Opacity=t):e.style.filter+=" progid:"+n+"(opacity="+t+")"}function St(e){for(var t=document.documentElement.style,i=0;i<e.length;i++)if(e[i]in t)return e[i];return!1}function Oe(e,t,i){var n=t||new N(0,0);e.style[si]=(P.ie3d?"translate("+n.x+"px,"+n.y+"px)":"translate3d("+n.x+"px,"+n.y+"px,0)")+(i?" scale("+i+")":"")}function Y(e,t){e._leaflet_pos=t,P.any3d?Oe(e,t):(e.style.left=t.x+"px",e.style.top=t.y+"px")}function Be(e){return e._leaflet_pos||new N(0,0)}var rt,st,hi;if("onselectstart"in document)rt=function(){j(window,"selectstart",ne)},st=function(){H(window,"selectstart",ne)};else{var ot=St(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);rt=function(){if(ot){var e=document.documentElement.style;hi=e[ot],e[ot]="none"}},st=function(){ot&&(document.documentElement.style[ot]=hi,hi=void 0)}}function ci(){j(window,"dragstart",ne)}function di(){H(window,"dragstart",ne)}var kt,ui;function fi(e){for(;e.tabIndex===-1;)e=e.parentNode;e.style&&(Tt(),kt=e,ui=e.style.outlineStyle,e.style.outlineStyle="none",j(window,"keydown",Tt))}function Tt(){kt&&(kt.style.outlineStyle=ui,kt=void 0,ui=void 0,H(window,"keydown",Tt))}function Sn(e){do e=e.parentNode;while((!e.offsetWidth||!e.offsetHeight)&&e!==document.body);return e}function mi(e){var t=e.getBoundingClientRect();return{x:t.width/e.offsetWidth||1,y:t.height/e.offsetHeight||1,boundingClientRect:t}}var wr={__proto__:null,TRANSFORM:si,TRANSITION:nt,TRANSITION_END:bn,get:Pn,getStyle:at,create:D,remove:V,empty:bt,toFront:He,toBack:Ge,hasClass:oi,addClass:M,removeClass:K,setClass:li,getClass:Pt,setOpacity:fe,testProp:St,setTransform:Oe,setPosition:Y,getPosition:Be,get disableTextSelection(){return rt},get enableTextSelection(){return st},disableImageDrag:ci,enableImageDrag:di,preventOutline:fi,restoreOutline:Tt,getSizedParentNode:Sn,getScale:mi};function j(e,t,i,n){if(t&&typeof t=="object")for(var r in t)_i(e,r,t[r],i);else{t=se(t);for(var s=0,o=t.length;s<o;s++)_i(e,t[s],i,n)}return this}var ye="_leaflet_events";function H(e,t,i,n){if(arguments.length===1)kn(e),delete e[ye];else if(t&&typeof t=="object")for(var r in t)gi(e,r,t[r],i);else if(t=se(t),arguments.length===2)kn(e,function(h){return Kt(t,h)!==-1});else for(var s=0,o=t.length;s<o;s++)gi(e,t[s],i,n);return this}function kn(e,t){for(var i in e[ye]){var n=i.split(/\d/)[0];(!t||t(n))&&gi(e,n,null,null,i)}}
1var pi={mouseenter:"mouseover",mouseleave:"mouseout",wheel:!("onwheel"in window)&&"mousewheel"};function _i(e,t,i,n){var r=t+g(i)+(n?"_"+g(n):"");if(e[ye]&&e[ye][r])return this;var s=function(h){return i.call(n||e,h||window.event)},o=s;!P.touchNative&&P.pointer&&t.indexOf("touch")===0?s=cr(e,t,s):P.touch&&t==="dblclick"?s=vr(e,s):"addEventListener"in e?t==="touchstart"||t==="touchmove"||t==="wheel"||t==="mousewheel"?e.addEventListener(pi[t]||t,s,P.passiveEvents?{passive:!1}:!1):t==="mouseenter"||t==="mouseleave"?(s=function(h){h=h||window.event,xi(e,h)&&o(h)},e.addEventListener(pi[t],s,!1)):e.addEventListener(t,o,!1):e.attachEvent("on"+t,s),e[ye]=e[ye]||{},e[ye][r]=s}function gi(e,t,i,n,r){r=r||t+g(i)+(n?"_"+g(n):"");var s=e[ye]&&e[ye][r];if(!s)return this;!P.touchNative&&P.pointer&&t.indexOf("touch")===0?dr(e,t,s):P.touch&&t==="dblclick"?xr(e,s):"removeEventListener"in e?e.removeEventListener(pi[t]||t,s,!1):e.detachEvent("on"+t,s),e[ye][r]=null}function ze(e){return e.stopPropagation?e.stopPropagation():e.originalEvent?e.originalEvent._stopped=!0:e.cancelBubble=!0,this}function vi(e){return _i(e,"wheel",ze),this}function lt(e){return j(e,"mousedown touchstart dblclick contextmenu",ze),e._leaflet_disable_click=!0,this}function ne(e){return e.preventDefault?e.preventDefault():e.returnValue=!1,this}function De(e){return ne(e),ze(e),this}function Tn(e){if(e.composedPath)return e.composedPath();for(var t=[],i=e.target;i;)t.push(i),i=i.parentNode;return t}function Ln(e,t){if(!t)return new N(e.clientX,e.clientY);var i=mi(t),n=i.boundingClientRect;return new N((e.clientX-n.left)/i.x-t.clientLeft,(e.clientY-n.top)/i.y-t.clientTop)}var br=P.linux&&P.chrome?window.devicePixelRatio:P.mac?window.devicePixelRatio*3:window.devicePixelRatio>0?2*window.devicePixelRatio:1;function Cn(e){return P.edge?e.wheelDeltaY/2:e.deltaY&&e.deltaMode===0?-e.deltaY/br:e.deltaY&&e.deltaMode===1?-e.deltaY*20:e.deltaY&&e.deltaMode===2?-e.deltaY*60:e.deltaX||e.deltaZ?0:e.wheelDelta?(e.wheelDeltaY||e.wheelDelta)/2:e.detail&&Math.abs(e.detail)<32765?-e.detail*20:e.detail?e.detail/-32765*60:0}function xi(e,t){var i=t.relatedTarget;if(!i)return!0;try{for(;i&&i!==e;)i=i.parentNode}catch{return!1}return i!==e}var Pr={__proto__:null,on:j,off:H,stopPropagation:ze,disableScrollPropagation:vi,disableClickPropagation:lt,preventDefault:ne,stop:De,getPropagationPath:Tn,getMousePosition:Ln,getWheelDelta:Cn,isExternalTarget:xi,addListener:j,removeListener:H},En=et.extend({run:function(e,t,i,n){this.stop(),this._el=e,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=Be(e),this._offset=t.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=oe(this._animate,this),this._step()},_step:function(e){var t=+new Date-this._startTime,i=this._duration*1e3;t<i?this._runFrame(this._easeOut(t/i),e):(this._runFrame(1),this._complete())},_runFrame:function(e,t){var i=this._startPos.add(this._offset.multiplyBy(e));t&&i._round(),Y(this._el,i),this.fire("step")},_complete:function(){ue(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(e){return 1-Math.pow(1-e,this._easeOutPower)}}),R=et.extend({options:{crs:Qt,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(e,t){t=Z(this,t),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this._initContainer(e),this._initLayout(),this._onResize=w(this._onResize,this),this._initEvents(),t.maxBounds&&this.setMaxBounds(t.maxBounds),t.zoom!==void 0&&(this._zoom=this._limitZoom(t.zoom)),t.center&&t.zoom!==void 0&&this.setView(I(t.center),t.zoom,{reset:!0}),this.callInitHooks(),this._zoomAnimated=nt&&P.any3d&&!P.mobileOpera&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),j(this._proxy,bn,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)}
1,setView:function(e,t,i){if(t=t===void 0?this._zoom:this._limitZoom(t),e=this._limitCenter(I(e),t,this.options.maxBounds),i=i||{},this._stop(),this._loaded&&!i.reset&&i!==!0){i.animate!==void 0&&(i.zoom=m({animate:i.animate},i.zoom),i.pan=m({animate:i.animate,duration:i.duration},i.pan));var n=this._zoom!==t?this._tryAnimatedZoom&&this._tryAnimatedZoom(e,t,i.zoom):this._tryAnimatedPan(e,i.pan);if(n)return clearTimeout(this._sizeTimer),this}return this._resetView(e,t,i.pan&&i.pan.noMoveStart),this},setZoom:function(e,t){return this._loaded?this.setView(this.getCenter(),e,{zoom:t}):(this._zoom=e,this)},zoomIn:function(e,t){return e=e||(P.any3d?this.options.zoomDelta:1),this.setZoom(this._zoom+e,t)},zoomOut:function(e,t){return e=e||(P.any3d?this.options.zoomDelta:1),this.setZoom(this._zoom-e,t)},setZoomAround:function(e,t,i){var n=this.getZoomScale(t),r=this.getSize().divideBy(2),s=e instanceof N?e:this.latLngToContainerPoint(e),o=s.subtract(r).multiplyBy(1-1/n),h=this.containerPointToLatLng(r.add(o));return this.setView(h,t,{zoom:i})},_getBoundsCenterZoom:function(e,t){t=t||{},e=e.getBounds?e.getBounds():q(e);var i=E(t.paddingTopLeft||t.padding||[0,0]),n=E(t.paddingBottomRight||t.padding||[0,0]),r=this.getBoundsZoom(e,!1,i.add(n));if(r=typeof t.maxZoom=="number"?Math.min(t.maxZoom,r):r,r===1/0)return{center:e.getCenter(),zoom:r};
1var s=n.subtract(i).divideBy(2),o=this.project(e.getSouthWest(),r),h=this.project(e.getNorthEast(),r),c=this.unproject(o.add(h).divideBy(2).add(s),r);return{center:c,zoom:r}},fitBounds:function(e,t){if(e=q(e),!e.isValid())throw new Error("Bounds are not valid.");var i=this._getBoundsCenterZoom(e,t);return this.setView(i.center,i.zoom,t)},fitWorld:function(e){return this.fitBounds([[-90,-180],[90,180]],e)},panTo:function(e,t){return this.setView(e,this._zoom,{pan:t})},panBy:function(e,t){if(e=E(e).round(),t=t||{},!e.x&&!e.y)return this.fire("moveend");if(t.animate!==!0&&!this.getSize().contains(e))return this._resetView(this.unproject(this.project(this.getCenter()).add(e)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new En,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),t.noMoveStart||this.fire("movestart"),t.animate!==!1){M(this._mapPane,"leaflet-pan-anim");var i=this._getMapPanePos().subtract(e).round();this._panAnim.run(this._mapPane,i,t.duration||.25,t.easeLinearity)}else this._rawPanBy(e),this.fire("move").fire("moveend");return this},flyTo:function(e,t,i){if(i=i||{},i.animate===!1||!P.any3d)return this.setView(e,t,i);this._stop();var n=this.project(this.getCenter()),r=this.project(e),s=this.getSize(),o=this._zoom;e=I(e),t=t===void 0?o:t;var h=Math.max(s.x,s.y),c=h*this.getZoomScale(o,t),f=r.distanceTo(n)||1,y=1.42,T=y*y;function A(J){var zt=J?-1:1,ds=J?c:h,us=c*c-h*h+zt*T*T*f*f,fs=2*ds*T*f,Ni=us/fs,ha=Math.sqrt(Ni*Ni+1)-Ni,ms=ha<1e-9?-18:Math.log(ha);return ms}function re(J){return(Math.exp(J)-Math.exp(-J))/2}function te(J){return(Math.exp(J)+Math.exp(-J))/2}function pe(J){return re(J)/te(J)}var ce=A(0);function Ye(J){return h*(te(ce)/te(ce+y*J))}function os(J){return h*(te(ce)*pe(ce+y*J)-re(ce))/T}function ls(J){return 1-Math.pow(1-J,1.5)}var hs=Date.now(),oa=(A(1)-ce)/y,cs=i.duration?1e3*i.duration:1e3*oa*.8;function la(){var J=(Date.now()-hs)/cs,zt=ls(J)*oa;J<=1?(this._flyToFrame=oe(la,this),this._move(this.unproject(n.add(r.subtract(n).multiplyBy(os(zt)/f)),o),this.get
1ScaleZoom(h/Ye(zt),o),{flyTo:!0})):this._move(e,t)._moveEnd(!0)}return this._moveStart(!0,i.noMoveStart),la.call(this),this},flyToBounds:function(e,t){var i=this._getBoundsCenterZoom(e,t);return this.flyTo(i.center,i.zoom,t)},setMaxBounds:function(e){return e=q(e),this.listens("moveend",this._panInsideMaxBounds)&&this.off("moveend",this._panInsideMaxBounds),e.isValid()?(this.options.maxBounds=e,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this)},setMinZoom:function(e){var t=this.options.minZoom;return this.options.minZoom=e,this._loaded&&t!==e&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(e):this},setMaxZoom:function(e){var t=this.options.maxZoom;return this.options.maxZoom=e,this._loaded&&t!==e&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(e):this},panInsideBounds:function(e,t){this._enforcingBounds=!0;var i=this.getCenter(),n=this._limitCenter(i,this._zoom,q(e));return i.equals(n)||this.panTo(n,t),this._enforcingBounds=!1,this},panInside:function(e,t){t=t||{};var i=E(t.paddingTopLeft||t.padding||[0,0]),n=E(t.paddingBottomRight||t.padding||[0,0]),r=this.project(this.getCenter()),s=this.project(e),o=this.getPixelBounds(),h=le([o.min.add(i),o.max.subtract(n)]),c=h.getSize();if(!h.contains(s)){this._enforcingBounds=!0;var f=s.subtract(h.getCenter()),y=h.extend(s).getSize().subtract(c);r.x+=f.x<0?-y.x:y.x,r.y+=f.y<0?-y.y:y.y,this.panTo(this.unproject(r),t),this._enforcingBounds=!1}return this},invalidateSize:function(e){if(!this._loaded)return this;e=m({animate:!1,pan:!0},e===!0?{animate:!0}:e);var t=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var i=this.getSize(),n=t.divideBy(2).round(),r=i.divideBy(2).round(),s=n.subtract(r);return!s.x&&!s.y?this:(e.animate&&e.pan?this.panBy(s):(e.pan&&this._rawPanBy(s),this.fire("move"),e.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(w(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:t,newSize:i}))},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(e){if(e=this._locateOptions=m({timeout:1e4,watch:!1},e),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var t=w(this._handleGeolocationResponse,this),i=w(this._handleGeolocationError,this);return e.watch?this._locationWatchId=navigator.geolocation.watchPosition(t,i,e):navigator.geolocation.getCurrentPosition(t,i,e),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(e){if(this._container._leaflet_id){var t=e.code,i=e.message||(t===1?"permission denied":t===2?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:t,message:"Geolocation error: "+i+"."})}},_handleGeolocationResponse:function(e){if(this._container._leaflet_id){var t=e.coords.latitude,i=e.coords.longitude,n=new F(t,i),r=n.toBounds(e.coords.accuracy*2),s=this._locateOptions;if(s.setView){var o=this.getBoundsZoom(r);this.setView(n,s.maxZoom?Math.min(o,s.maxZoom):o)}var h={latlng:n,bounds:r,timestamp:e.timestamp};for(var c in e.coords)typeof e.coords[c]=="number"&&(h[c]=e.coords[c]);this.fire("locationfound",h)}},addHandler:function(e,t){if(!t)return this;var i=this[e]=new t(this);return this._handlers.push(i),this.options[e]&&i.enable(),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch{this._container._leaflet_id=void 0,this._containerId=void 0}this._locationWatchId!==void 0&&this.stopLocate(),this._stop(),V(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(ue(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload");var e;
1for(e in this._layers)this._layers[e].remove();for(e in this._panes)V(this._panes[e]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(e,t){var i="leaflet-pane"+(e?" leaflet-"+e.replace("Pane","")+"-pane":""),n=D("div",i,t||this._mapPane);return e&&(this._panes[e]=n),n},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var e=this.getPixelBounds(),t=this.unproject(e.getBottomLeft()),i=this.unproject(e.getTopRight());return new he(t,i)},getMinZoom:function(){return this.options.minZoom===void 0?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===void 0?this._layersMaxZoom===void 0?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(e,t,i){e=q(e),i=E(i||[0,0]);var n=this.getZoom()||0,r=this.getMinZoom(),s=this.getMaxZoom(),o=e.getNorthWest(),h=e.getSouthEast(),c=this.getSize().subtract(i),f=le(this.project(h,n),this.project(o,n)).getSize(),y=P.any3d?this.options.zoomSnap:1,T=c.x/f.x,A=c.y/f.y,re=t?Math.max(T,A):Math.min(T,A);return n=this.getScaleZoom(re,n),y&&(n=Math.round(n/(y/100))*(y/100),n=t?Math.ceil(n/y)*y:Math.floor(n/y)*y),Math.max(r,Math.min(s,n))},getSize:function(){return(!this._size||this._sizeChanged)&&(this._size=new N(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(e,t){var i=this._getTopLeftPoint(e,t);return new U(i,i.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(e){return this.options.crs.getProjectedBounds(e===void 0?this.getZoom():e)},getPane:function(e){return typeof e=="string"?this._panes[e]:e},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(e,t){var i=this.options.crs;return t=t===void 0?this._zoom:t,i.scale(e)/i.scale(t)},getScaleZoom:function(e,t){var i=this.options.crs;t=t===void 0?this._zoom:t;var n=i.zoom(e*i.scale(t));return isNaN(n)?1/0:n},project:function(e,t){return t=t===void 0?this._zoom:t,this.options.crs.latLngToPoint(I(e),t)},unproject:function(e,t){return t=t===void 0?this._zoom:t,this.options.crs.pointToLatLng(E(e),t)},layerPointToLatLng:function(e){var t=E(e).add(this.getPixelOrigin());return this.unproject(t)},latLngToLayerPoint:function(e){var t=this.project(I(e))._round();return t._subtract(this.getPixelOrigin())},wrapLatLng:function(e){return this.options.crs.wrapLatLng(I(e))},wrapLatLngBounds:function(e){return this.options.crs.wrapLatLngBounds(q(e))},distance:function(e,t){return this.options.crs.distance(I(e),I(t))},containerPointToLayerPoint:function(e){return E(e).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(e){return E(e).add(this._getMapPanePos())},containerPointToLatLng:function(e){var t=this.containerPointToLayerPoint(E(e));return this.layerPointToLatLng(t)},latLngToContainerPoint:function(e){return this.layerPointToContainerPoint(this.latLngToLayerPoint(I(e)))},mouseEventToContainerPoint:function(e){return Ln(e,this._container)},mouseEventToLayerPoint:function(e){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e))},mouseEventToLatLng:function(e){return this.layerPointToLatLng(this.mouseEventToLayerPoint(e))},_initContainer:function(e){var t=this._container=Pn(e);if(t){if(t._leaflet_id)throw new Error("Map container is already initialized.")}else throw new Error("Map container not found.");j(t,"scroll",this._onScroll,this),this._containerId=g(t)},_initLayout:function(){var e=this._container;this._fadeAnimated=this.options.fadeAnimation&&P.any3d,M(e,"leaflet-container"+(P.touch?" leaflet-touch":"")+(P.retina?" leaflet-retina":"")+(P.ielt9?" leaflet-oldie":"")+(P.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var t=at(e,"position");t!=="absolute"&&t!=="relative"&&t!=="fixed"&&t!=="sticky"&&(e.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var e=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Y(this._mapPane,new N(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(M(e.markerPane,"leaflet-zoom-hide"),M(e.shadowPane,"leaflet-zoom-hide"))},_resetView:function(e,t,i){Y(this._mapPane,new N(0,0));var n=!this._loaded;this._loaded=!0,t=this._limitZoom(t),this.fire("viewprereset");var r=this._zoom!==t;this._moveStart(r,i)._move(e,t)._moveEnd(r),this.fire("viewreset"),n&&this.fire("load")},_moveStart:function(e,t){return e&&this.fire("zoomstart"),t||this.fire("movestart"),this},_move:function(e,t,i,n){t===void 0&&(t=this._zoom);var r=this._zoom!==t;return this._zoom=t,this._lastCenter=e,this._pixelOrigin=this._getNewPixelOrigin(e),n?i&&i.pinch&&this.fire("zoom",i):((r||i&&i.pinch)&&this.fire("zoom",i),this.fire("move",i)),this},_moveEnd:function(e){return e&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return ue(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(e){Y(this._mapPane,this._getMapPanePos().subtract(e))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(e){this._targets={},this._targets[g(this._container)]=this;var t=e?H:j;t(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&t(window,"resize",this._onResize,this),P.any3d&&this.options.transform3DLimit&&(e?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){ue(this._resizeRequest),this._resizeRequest=oe(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var e=this._getMapPanePos();Math.max(Math.abs(e.x),Math.abs(e.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(e,t){for(var i=[],n,r=t==="mouseout"||t==="mouseover",s=e.target||e.srcElement,o=!1;s;){if(n=this._targets[g(s)],n&&(t==="click"||t==="preclick")&&this._draggableMoved(n)){o=!0;break}if(n&&n.listens(t,!0)&&(r&&!xi(s,e)||(i.push(n),r))||s===this._container)break;s=s.parentNode}return!i.length&&!o&&!r&&this.listens(t,!0)&&(i=[this]),i},_isClickDisabled:function(e){for(;e&&e!==this._container;){if(e._leaflet_disable_click)return!0;e=e.parentNode}},_handleDOMEvent:function(e){var t=e.target||e.srcElement;if(!(!this._loaded||t._leaflet_disable_events||e.type==="click"&&this._isCl
1ickDisabled(t))){var i=e.type;i==="mousedown"&&fi(t),this._fireDOMEvent(e,i)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(e,t,i){if(e.type==="click"){var n=m({},e);n.type="preclick",this._fireDOMEvent(n,n.type,i)}var r=this._findEventTargets(e,t);if(i){for(var s=[],o=0;o<i.length;o++)i[o].listens(t,!0)&&s.push(i[o]);r=s.concat(r)}if(r.length){t==="contextmenu"&&ne(e);var h=r[0],c={originalEvent:e};if(e.type!=="keypress"&&e.type!=="keydown"&&e.type!=="keyup"){var f=h.getLatLng&&(!h._radius||h._radius<=10);c.containerPoint=f?this.latLngToContainerPoint(h.getLatLng()):this.mouseEventToContainerPoint(e),c.layerPoint=this.containerPointToLayerPoint(c.containerPoint),c.latlng=f?h.getLatLng():this.layerPointToLatLng(c.layerPoint)}for(o=0;o<r.length;o++)if(r[o].fire(t,c,!0),c.originalEvent._stopped||r[o].options.bubblingMouseEvents===!1&&Kt(this._mouseEvents,t)!==-1)return}},_draggableMoved:function(e){return e=e.dragging&&e.dragging.enabled()?e:this,e.dragging&&e.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var e=0,t=this._handlers.length;e<t;e++)this._handlers[e].disable()},whenReady:function(e,t){return this._loaded?e.call(t||this,{target:this}):this.on("load",e,t),this},_getMapPanePos:function(){return Be(this._mapPane)||new N(0,0)},_moved:function(){var e=this._getMapPanePos();return e&&!e.equals([0,0])},_getTopLeftPoint:function(e,t){var i=e&&t!==void 0?this._getNewPixelOrigin(e,t):this.getPixelOrigin();return i.subtract(this._getMapPanePos())},_getNewPixelOrigin:function(e,t){var i=this.getSize()._divideBy(2);return this.project(e,t)._subtract(i)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(e,t,i){var n=this._getNewPixelOrigin(i,t);return this.project(e,t)._subtract(n)},_latLngBoundsToNewLayerBounds:function(e,t,i){var n=this._getNewPixelOrigin(i,t);
1return le([this.project(e.getSouthWest(),t)._subtract(n),this.project(e.getNorthWest(),t)._subtract(n),this.project(e.getSouthEast(),t)._subtract(n),this.project(e.getNorthEast(),t)._subtract(n)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(e){return this.latLngToLayerPoint(e).subtract(this._getCenterLayerPoint())},_limitCenter:function(e,t,i){if(!i)return e;var n=this.project(e,t),r=this.getSize().divideBy(2),s=new U(n.subtract(r),n.add(r)),o=this._getBoundsOffset(s,i,t);return Math.abs(o.x)<=1&&Math.abs(o.y)<=1?e:this.unproject(n.add(o),t)},_limitOffset:function(e,t){if(!t)return e;var i=this.getPixelBounds(),n=new U(i.min.add(e),i.max.add(e));return e.add(this._getBoundsOffset(n,t))},_getBoundsOffset:function(e,t,i){var n=le(this.project(t.getNorthEast(),i),this.project(t.getSouthWest(),i)),r=n.min.subtract(e.min),s=n.max.subtract(e.max),o=this._rebound(r.x,-s.x),h=this._rebound(r.y,-s.y);return new N(o,h)},_rebound:function(e,t){return e+t>0?Math.round(e-t)/2:Math.max(0,Math.ceil(e))-Math.max(0,Math.floor(t))},_limitZoom:function(e){var t=this.getMinZoom(),i=this.getMaxZoom(),n=P.any3d?this.options.zoomSnap:1;return n&&(e=Math.round(e/n)*n),Math.max(t,Math.min(i,e))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){K(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(e,t){var i=this._getCenterOffset(e)._trunc();return(t&&t.animate)!==!0&&!this.getSize().contains(i)?!1:(this.panBy(i,t),!0)},_createAnimProxy:function(){var e=this._proxy=D("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(e),this.on("zoomanim",function(t){var i=si,n=this._proxy.style[i];Oe(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),n===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",this._animMoveEnd,this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){V(this._proxy),this.off("load moveend",this._animMoveEnd,this),delete this._proxy},_animMoveEnd:function(){var e=this.getCenter(),t=this.getZoom();Oe(this._proxy,this.project(e,t),this.getZoomScale(t,1))},_catchTransitionEnd:function(e){this._animatingZoom&&e.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(e,t,i){if(this._animatingZoom)return!0;if(i=i||{},!this._zoomAnimated||i.animate===!1||this._nothingToAnimate()||Math.abs(t-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(t),r=this._getCenterOffset(e)._divideBy(1-1/n);return i.animate!==!0&&!this.getSize().contains(r)?!1:(oe(function(){this._moveStart(!0,i.noMoveStart||!1)._animateZoom(e,t,!0)},this),!0)},_animateZoom:function(e,t,i,n){this._mapPane&&(i&&(this._animatingZoom=!0,this._animateToCenter=e,this._animateToZoom=t,M(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:e,zoom:t,noUpdate:n}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(w(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&K(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});function Sr(e,t){return new R(e,t)}var ge=Pe.extend({options:{position:"topright"},initialize:function(e){Z(this,e)},getPosition:function(){return this.options.position},setPosition:function(e){var t=this._map;return t&&t.removeControl(this),this.options.position=e,t&&t.addControl(this),this},getContainer:function(){return this._container},addTo:function(e){this.remove(),this._map=e;var t=this._container=this.onAdd(e),i=this.getPosition(),n=e._controlCorners[i];return M(t,"leaflet-control"),i.indexOf("bottom")!==-1?n.insertBefore(t,n.firstChild):n.appendChild(t),this._map.on("unload",this.remove,this),this},remove:function(){return this._map?(V(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null,this):this},_refocusOnMap:function(e){this._map&&e&&e.screenX>0&&e.screenY>0&&this._map.getContainer().focus()}}),ht=function(e){return new ge(e)};R.include({addControl:function(e){return e.addTo(this),this},removeControl:function(e){return e.remove(),this}
vendor: 5,335 bytes, line 1
1,_initControlPos:function(){var e=this._controlCorners={},t="leaflet-",i=this._controlContainer=D("div",t+"control-container",this._container);function n(r,s){var o=t+r+" "+t+s;e[r+s]=D("div",o,i)}n("top","left"),n("top","right"),n("bottom","left"),n("bottom","right")},_clearControlPos:function(){for(var e in this._controlCorners)V(this._controlCorners[e]);V(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Nn=ge.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(e,t,i,n){return i<n?-1:n<i?1:0}},initialize:function(e,t,i){Z(this,i),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1,this._preventClick=!1;for(var n in e)this._addLayer(e[n],n);for(n in t)this._addLayer(t[n],n,!0)},onAdd:function(e){this._initLayout(),this._update(),this._map=e,e.on("zoomend",this._checkDisabledLayers,this);for(var t=0;t<this._layers.length;t++)this._layers[t].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(e){return ge.prototype.addTo.call(this,e),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var e=0;e<this._layers.length;e++)this._layers[e].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(e,t){return this._addLayer(e,t),this._map?this._update():this},addOverlay:function(e,t){return this._addLayer(e,t,!0),this._map?this._update():this},removeLayer:function(e){e.off("add remove",this._onLayerChange,this);var t=this._getLayer(g(e));return t&&this._layers.splice(this._layers.indexOf(t),1),this._map?this._update():this},expand:function(){M(this._container,"leaflet-control-layers-expanded"),this._section.style.height=null;var e=this._map.getSize().y-(this._container.offsetTop+50);return e<this._section.clientHeight?(M(this._section,"leaflet-control-layers-scrollbar"),this._section.style.height=e+"px"):K(this._section,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return K(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var e="leaflet-control-layers",t=this._container=D("div",e),i=this.options.collapsed;t.setAttribute("aria-haspopup",!0),lt(t),vi(t);var n=this._section=D("section",e+"-list");i&&(this._map.on("click",this.collapse,this),j(t,{mouseenter:this._expandSafely,mouseleave:this.collapse},this));var r=this._layersLink=D("a",e+"-toggle",t);r.href="#",r.title="Layers",r.setAttribute("role","button"),j(r,{keydown:function(s){s.keyCode===13&&this._expandSafely()},click:function(s){ne(s),this._expandSafely()}},this),i||this.expand(),this._baseLayersList=D("div",e+"-base",n),this._separator=D("div",e+"-separator",n),this._overlaysList=D("div",e+"-overlays",n),t.appendChild(n)},_getLayer:function(e){for(var t=0;t<this._layers.length;t++)if(this._layers[t]&&g(this._layers[t].layer)===e)return this._layers[t]},_addLayer:function(e,t,i){this._map&&e.on("add remove",this._onLayerChange,this),this._layers.push({layer:e,name:t,overlay:i}),this.options.sortLayers&&this._layers.sort(w(function(n,r){return this.options.sortFunction(n.layer,r.layer,n.name,r.name)},this)),this.options.autoZIndex&&e.setZIndex&&(this._lastZIndex++,e.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;bt(this._baseLayersList),bt(this._overlaysList),this._layerControlInputs=[];var e,t,i,n,r=0;for(i=0;i<this._layers.length;i++)n=this._layers[i],this._addItem(n),t=t||n.overlay,e=e||!n.overlay,r+=n.overlay?0:1;return this.options.hideSingleBase&&(e=e&&r>1,this._baseLayersList.style.display=e?"":"none"),this._separator.style.display=t&&e?"":"none",this},_onLayerChange:function(e){this._handlingClick||this._update();var t=this._getLayer(g(e.target)),i=t.overlay?e.type==="add"?"overlayadd":"overlayremove":e.type==="add"?"baselayerchange":null;i&&this._map.fire(i,t)},_createRadioElement:function(e,t){var i='<input type="radio" class="leaflet-control-layers-selector" name="'+e+'"'+(t?' checked="checked"':"")+"/>",n=document.createElement("div");return n.innerHTML=i,n.firstChild},_addItem:function(e){var t=document.createElement("label"),i=this._map.hasLayer(e.layer),n;e.overlay?(n=document.createElement("input"),n.type="checkbox",n.className="leaflet-control-layers-selector",n.defaultChecked=i):n=this._createRadioElement("leaflet-base-layers_"+g(this),i),this._layerControlInputs.push(n),n.layerId=g(e.layer),j(n,"click",this._onInputClick,this);var r=document.createElement("span");r.innerHTML=" "+e.name;var s=document.createElement("span");t.appendChild(s),s.appendChild(n),s.appendChild(r);var o=e.overlay?this._overlaysList:this._baseLayersList;return o.appendChild(t),this._checkDisabledLayers(),t},_onInputClick:function(){if(!this._preventClick){var e=this._layerControlInputs,t,i,n=[],r=[];this._handlingClick=!0;for(var s=e.length-1;s>=0;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||r.push(i);for(s=0;s<r.length;s++)this._map.hasLayer(r[s])&&this._map.removeLayer(r[s]);for(s=0;s<n.length;s++)this._map.hasLayer(n[s])||this._map.addLayer(n[s]);this._handlingClick=!1,this._refocusOnMap()}},_checkDisabledLayers:function(){for(var e=this._layerControlInputs,t,i,n=this._map.getZoom(),r
1=e.length-1;r>=0;r--)t=e[r],i=this._getLayer(t.layerId).layer,t.disabled=i.options.minZoom!==void 0&&n<i.options.minZoom||i.options.maxZoom!==void 0&&n>i.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var e=this._section;this._preventClick=!0,j(e,"click",ne),this.expand();var t=this;setTimeout(function(){H(e,"click",ne),t._preventClick=!1})}}),kr=function(e,t,i){return new Nn(e,t,i)},yi=ge.extend({options:{position:"topleft",zoomInText:'<span aria-hidden="true">+</span>',zoomInTitle:"Zoom in",zoomOutText:'<span aria-hidden="true">&#x2212;</span>',zoomOutTitle:"Zoom out"},onAdd:function(e){var t="leaflet-control-zoom",i=D("div",t+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,t+"-in",i,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,t+"-out",i,this._zoomOut),this._updateDisabled(),e.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(e){e.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(e){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(e.shiftKey?3:1))},_zoomOut:function(e){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(e.shiftKey?3:1))},_createButton:function(e,t,i,n,r){var s=D("a",i,n);return s.innerHTML=e,s.href="#",s.title=t,s.setAttribute("role","button"),s.setAttribute("aria-label",t),lt(s),j(s,"click",De),j(s,"click",r,this),j(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var e=this._map,t="leaflet-disabled";K(this._zoomInButton,t),K(this._zoomOutButton,t),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),(this._disabled||e._zoom===e.getMinZoom())&&(M(this._zoomOutButton,t),this._zoomOutButton.setAttribute("aria-disabled","true")),(this._disabled||e._zoom===e.getMaxZoom())&&(M(this._zoomInButton,t),this._zoomInButton.setAttribute("aria-disabled","true"))}});R.mergeOptions({zoomControl:!0}),R.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new yi,this.addControl(this.zoomControl))});var Tr=function(e){return new yi(e)},jn=ge.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(e){var t="leaflet-control-scale",i=D("div",t),n=this.options;return this._addScales(n,t+"-line",i),e.on(n.updateWhenIdle?"moveend":"move",this._update,this),e.whenReady(this._update,this),i},onRemove:function(e){e.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(e,t,i){e.metric&&(this._mScale=D("div",t,i)),e.imperial&&(this._iScale=D("div",t,i))},_update:function(){var e=this._map,t=e.getSize().y/2,i=e.distance(e.containerPointToLatLng([0,t]),e.containerPointToLatLng([this.options.maxWidth,t]));this._updateScales(i)},_updateScales:function(e){this.options.metric&&e&&this._updateMetric(e),this.options.imperial&&e&&this._updateImperial(e)},_updateMetric:function(e){var t=this._getRoundNum(e),i=t<1e3?t+" m":t/1e3+" km";this._updateScale(this._mScale,i,t/e)},_updateImperial:function(e){var t=e*3.2808399,i,n,r;t>5280?(i=t/5280,n=this._getRoundNum(i),this._updateScale(this._iScale,n+" mi",n/i)):(r=this._getRoundNum(t),this._updateScale(this._iScale,r+" ft",r/t))},_updateScale:function(e,t,i){e.style.width=Math.round(this.options.maxWidth*i)+"px",e.innerHTML=t},_getRoundNum:function(e){var t=Math.pow(10,(Math.floor(e)+"").length-1),i=e/t;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:1,t*i}}),Lr=function(e){return new jn(e)},Cr='<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="12" height="8" viewBox="0 0 12 8" class="leaflet-attribution-flag"><path fill="#4C7BE1" d="M0 0h12v4H0z"/><path fill="#FFD500" d="M0 4h12v3H0z"/><path fill="#E0BC00" d="M0 7h12v1H0z"/></svg>',wi=ge.extend({options:{position:"bottomright",prefix:'<a href="https://leafletjs.com" title="A JavaScript library for interactive maps">'+(P.inlineSvg?Cr+" ":"")+"Leaflet</a>"},initialize:function(e){Z(this,e),this._attributions={}}
1,onAdd:function(e){e.attributionControl=this,this._container=D("div","leaflet-control-attribution"),lt(this._container);for(var t in e._layers)e._layers[t].getAttribution&&this.addAttribution(e._layers[t].getAttribution());return this._update(),e.on("layeradd",this._addAttribution,this),this._container},onRemove:function(e){e.off("layeradd",this._addAttribution,this)},_addAttribution:function(e){e.layer.getAttribution&&(this.addAttribution(e.layer.getAttribution()),e.layer.once("remove",function(){this.removeAttribution(e.layer.getAttribution())},this))},setPrefix:function(e){return this.options.prefix=e,this._update(),this},addAttribution:function(e){return e?(this._attributions[e]||(this._attributions[e]=0),this._attributions[e]++,this._update(),this):this},removeAttribution:function(e){return e?(this._attributions[e]&&(this._attributions[e]--,this._update()),this):this},_update:function(){if(this._map){var e=[];for(var t in this._attributions)this._attributions[t]&&e.push(t);var i=[];this.options.prefix&&i.push(this.options.prefix),e.length&&i.push(e.join(", ")),this._container.innerHTML=i.join(' <span aria-hidden="true">|</span> ')}}});R.mergeOptions({attributionControl:!0}),R.addInitHook(function(){this.options.attributionControl&&new wi().addTo(this)});var Er=function(e){return new wi(e)};ge.Layers=Nn,ge.Zoom=yi,ge.Scale=jn,ge.Attribution=wi,ht.layers=kr,ht.zoom=Tr,ht.scale=Lr,ht.attribution=Er;var we=Pe.extend({initialize:function(e){this._map=e},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});we.addTo=function(e,t){return e.addHandler(t,this),this};var Nr={Events:de},Mn=P.touch?"touchstart mousedown":"mousedown",Ae=et.extend({options:{clickTolerance:3},initialize:function(e,t,i,n){Z(this,n),this._element=e,this._dragStartTarget=t||e,this._preventOutline=i},enable:function(){this._enabled||(j(this._dragStartTarget,Mn,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Ae._dragging===this&&this.finishDrag(!0),H(this._dragStartTarget,Mn,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(e){if(this._enabled&&(this._moved=!1,!oi(this._element,"leaflet-zoom-anim"))){if(e.touches&&e.touches.length!==1){Ae._dragging===this&&this.finishDrag();return}if(!(Ae._dragging||e.shiftKey||e.which!==1&&e.button!==1&&!e.touches)&&(Ae._dragging=this,this._preventOutline&&fi(this._element),ci(),rt(),!this._moving)){this.fire("down");var t=e.touches?e.touches[0]:e,i=Sn(this._element);this._startPoint=new N(t.clientX,t.clientY),this._startPos=Be(this._element),this._parentScale=mi(i);var n=e.type==="mousedown";j(document,n?"mousemove":"touchmove",this._onMove,this),j(document,n?"mouseup":"touchend touchcancel",this._onUp,this)}}},_onMove:function(e){if(this._enabled){if(e.touches&&e.touches.length>1){this._moved=!0;return}var t=e.touches&&e.touches.length===1?e.touches[0]:e,i=new N(t.clientX,t.clientY)._subtract(this._startPoint);!i.x&&!i.y||Math.abs(i.x)+Math.abs(i.y)<this.options.clickTolerance||(i.x/=this._parentScale.x,i.y/=this._parentScale.y,ne(e),this._moved||(this.fire("dragstart"),this._moved=!0,M(document.body,"leaflet-dragging"),this._lastTarget=e.target||e.srcElement,window.SVGElementInstance&&this._lastTarget instanceof window.SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),M(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(i),this._moving=!0,this._lastEvent=e,this._updatePosition())}},_updatePosition:function(){var e={originalEvent:this._lastEvent};this.fire("predrag",e),Y(this._element,this._newPos),this.fire("drag",e)},_onUp:function(){this._enabled&&this.finishDrag()},finishDrag:function(e){K(document.body,"leaflet-dragging"),this._lastTarget&&(K(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null),H(document,"mousemove touchmove",this._onMove,this),H(document,"mouseup touchend touchcancel",this._onUp,this),di(),st();var t=this._moved&&this._moving;this._moving=!1,Ae._dragging=!1,t&&this.fire("dragend",{noInertia:e,distance:this._newPos.distanceTo(this._startPos)})}});function An(e,t,i){var n,r=[1,4,2,8],s,o,h,c,f,y,T,A;for(s=0,y=e.length;s<y;s++)e[s]._code=Ze(e[s],t);for(h=0;h<4;h++){for(T=r[h],n=[],s=0,y=e.length,o=y-1;s<y;o=s++)c=e[s],f=e[o],c._code&T?f._code&T||(A=Lt(f,c,T,t,i),A._code=Ze(A,t),n.push(A)):(f._code&T&&(A=Lt(f,c,T,t,i),A._code=Ze(A,t),n.push(A)),n.push(c));e=n}return e}function In(e,t){var i,n,r,s,o,h,c,f,y;if(!e||e.length===0)throw new Error("latlngs not passed");me(e)||(console.warn("latlngs are not flat! Only the first ring will be used"),e=e[0]);var T=I([0,0]),A=q(e),re=A.getNorthWest().distanceTo(A.getSouthWest
1())*A.getNorthEast().distanceTo(A.getNorthWest());re<1700&&(T=bi(e));var te=e.length,pe=[];for(i=0;i<te;i++){var ce=I(e[i]);pe.push(t.project(I([ce.lat-T.lat,ce.lng-T.lng])))}for(h=c=f=0,i=0,n=te-1;i<te;n=i++)r=pe[i],s=pe[n],o=r.y*s.x-s.y*r.x,c+=(r.x+s.x)*o,f+=(r.y+s.y)*o,h+=o*3;h===0?y=pe[0]:y=[c/h,f/h];var Ye=t.unproject(E(y));return I([Ye.lat+T.lat,Ye.lng+T.lng])}function bi(e){for(var t=0,i=0,n=0,r=0;r<e.length;r++){var s=I(e[r]);t+=s.lat,i+=s.lng,n++}return I([t/n,i/n])}var jr={__proto__:null,clipPolygon:An,polygonCenter:In,centroid:bi};function Rn(e,t){if(!t||!e.length)return e.slice();var i=t*t;return e=Ir(e,i),e=Ar(e,i),e}function On(e,t,i){return Math.sqrt(ct(e,t,i,!0))}function Mr(e,t,i){return ct(e,t,i)}function Ar(e,t){var i=e.length,n=typeof Uint8Array<"u"?Uint8Array:Array,r=new n(i);r[0]=r[i-1]=1,Pi(e,r,t,0,i-1);var s,o=[];for(s=0;s<i;s++)r[s]&&o.push(e[s]);return o}function Pi(e,t,i,n,r){var s=0,o,h,c;for(h=n+1;h<=r-1;h++)c=ct(e[h],e[n],e[r],!0),c>s&&(o=h,s=c);s>i&&(t[o]=1,Pi(e,t,i,n,o),Pi(e,t,i,o,r))}function Ir(e,t){for(var i=[e[0]],n=1,r=0,s=e.length;n<s;n++)Rr(e[n],e[r])>t&&(i.push(e[n]),r=n);return r<s-1&&i.push(e[s-1]),i}var Bn;function zn(e,t,i,n,r){var s=n?Bn:Ze(e,i),o=Ze(t,i),h,c,f;for(Bn=o;;){if(!(s|o))return[e,t];if(s&o)return!1;h=s||o,c=Lt(e,t,h,i,r),f=Ze(c,i),h===s?(e=c,s=f):(t=c,o=f)}}function Lt(e,t,i,n,r){var s=t.x-e.x,o=t.y-e.y,h=n.min,c=n.max,f,y;return i&8?(f=e.x+s*(c.y-e.y)/o,y=c.y):i&4?(f=e.x+s*(h.y-e.y)/o,y=h.y):i&2?(f=c.x,y=e.y+o*(c.x-e.x)/s):i&1&&(f=h.x,y=e.y+o*(h.x-e.x)/s),new N(f,y,r)}function Ze(e,t){var i=0;return e.x<t.min.x?i|=1:e.x>t.max.x&&(i|=2),e.y<t.min.y?i|=4:e.y>t.max.y&&(i|=8),i}function Rr(e,t){var i=t.x-e.x,n=t.y-e.y;return i*i+n*n}function ct(e,t,i,n){var r=t.x,s=t.y,o=i.x-r,h=i.y-s,c=o*o+h*h,f;return c>0&&(f=((e.x-r)*o+(e.y-s)*h)/c,f>1?(r=i.x,s=i.y):f>0&&(r+=o*f,s+=h*f)),o=e.x-r,h=e.y-s,n?o*o+h*h:new N(r,s)}function me(e){return!ie(e[0])||typeof e[0][0]!="object"&&typeof e[0][0]<"u"}function Dn(e){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),me(e)}function Zn(e,t){var i,n,r,s,o,h,c,f;if(!e||e.length===0)throw new Error("latlngs not passed");me(e)||(console.warn("latlngs are not flat! Only the first ring will be used"),e=e[0]);var y=I([0,0]),T=q(e),A=T.getNorthWest().distanceTo(T.getSouthWest
1())*T.getNorthEast().distanceTo(T.getNorthWest());A<1700&&(y=bi(e));var re=e.length,te=[];for(i=0;i<re;i++){var pe=I(e[i]);te.push(t.project(I([pe.lat-y.lat,pe.lng-y.lng])))}for(i=0,n=0;i<re-1;i++)n+=te[i].distanceTo(te[i+1])/2;if(n===0)f=te[0];else for(i=0,s=0;i<re-1;i++)if(o=te[i],h=te[i+1],r=o.distanceTo(h),s+=r,s>n){c=(s-n)/r,f=[h.x-c*(h.x-o.x),h.y-c*(h.y-o.y)];break}var ce=t.unproject(E(f));return I([ce.lat+y.lat,ce.lng+y.lng])}var Or={__proto__:null,simplify:Rn,pointToSegmentDistance:On,closestPointOnSegment:Mr,clipSegment:zn,_getEdgeIntersection:Lt,_getBitCode:Ze,_sqClosestPointOnSegment:ct,isFlat:me,_flat:Dn,polylineCenter:Zn},Si={project:function(e){return new N(e.lng,e.lat)},unproject:function(e){return new F(e.y,e.x)},bounds:new U([-180,-90],[180,90])},ki={R:6378137,R_MINOR:6356752314245179e-9,bounds:new U([-2003750834279e-5,-1549657073972e-5],[2003750834279e-5,1876465623138e-5]),project:function(e){var t=Math.PI/180,i=this.R,n=e.lat*t,r=this.R_MINOR/i,s=Math.sqrt(1-r*r),o=s*Math.sin(n),h=Math.tan(Math.PI/4-n/2)/Math.pow((1-o)/(1+o),s/2);return n=-i*Math.log(Math.max(h,1e-10)),new N(e.lng*t*i,n)},unproject:function(e){for(var t=180/Math.PI,i=this.R,n=this.R_MINOR/i,r=Math.sqrt(1-n*n),s=Math.exp(-e.y/i),o=Math.PI/2-2*Math.atan(s),h=0,c=.1,f;h<15&&Math.abs(c)>1e-7;h++)f=r*Math.sin(o),f=Math.pow((1-f)/(1+f),r/2),c=Math.PI/2-2*Math.atan(s*f)-o,o+=c;return new F(o*t,e.x*t/i)}},Br={__proto__:null,LonLat:Si,Mercator:ki,SphericalMercator:Jt},zr=m({},Me,{code:"EPSG:3395",projection:ki,transformation:(function(){var e=.5/(Math.PI*ki.R);return tt(e,.5,-e,.5)})()}),Wn=m({},Me,{code:"EPSG:4326",projection:Si,transformation:tt(1/180,1,-1/180,.5)}),Dr=m({},Se,{projection:Si,transformation:tt(1,0,-1,0),scale:function(e){return Math.pow(2,e)},zoom:function(e){return Math.log(e)/Math.LN2},distance:function(e,t){var i=t.lng-e.lng,n=t.lat-e.lat;return Math.sqrt(i*i+n*n)},infinite:!0});Se.Earth=Me,Se.EPSG3395=zr,Se.EPSG3857=Qt,Se.EPSG900913=Ua,Se.EPSG4326=Wn,Se.Simple=Dr;var ve=et.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(e){return e.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(e){return e&&e.removeLayer(this),this},getPane:function(e){return this._map.getPane(e?this.options[e]||e:this.options.pane)},addInteractiveTarget:function(e){return this._map._targets[g(e)]=this,this},removeInteractiveTarget:function(e){return delete this._map._targets[g(e)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(e){var t=e.target;if(t.hasLayer(this)){if(this._map=t,this._zoomAnimated=t._zoomAnimated,this.getEvents){var i=this.getEvents();t.on(i,this),this.once("remove",function(){t.off(i,this)},this)}this.onAdd(t),this.fire("add"),t.fire("layeradd",{layer:this})}}});R.include({addLayer:function(e){if(!e._layerAdd)throw new Error("The provided object is not a Layer.");var t=g(e);return this._layers[t]?this:(this._layers[t]=e,e._mapToAdd=this,e.beforeAdd&&e.beforeAdd(this),this.whenReady(e._layerAdd,e),this)},removeLayer:function(e){var t=g(e);return this._layers[t]?(this._loaded&&e.onRemove(this),delete this._layers[t],this._loaded&&(this.fire("layerremove",{layer:e}),e.fire("remove")),e._map=e._mapToAdd=null,this):this},hasLayer:function(e){return g(e)in this._layers},eachLayer:function(e,t){for(var i in this._layers)e.call(t,this._layers[i]);return this},_addLayers:function(e){e=e?ie(e)?e:[e]:[];for(var t=0,i=e.length;t<i;t++)this.addLayer(e[t])},_addZoomLimit:function(e){(!isNaN(e.options.maxZoom)||!isNaN(e.options.minZoom))&&(this._zoomBoundLayers[g(e)]=e,this._updateZoomLevels())},_removeZoomLimit:function(e){var t=g(e);
1this._zoomBoundLayers[t]&&(delete this._zoomBoundLayers[t],this._updateZoomLevels())},_updateZoomLevels:function(){var e=1/0,t=-1/0,i=this._getZoomSpan();for(var n in this._zoomBoundLayers){var r=this._zoomBoundLayers[n].options;e=r.minZoom===void 0?e:Math.min(e,r.minZoom),t=r.maxZoom===void 0?t:Math.max(t,r.maxZoom)}this._layersMaxZoom=t===-1/0?void 0:t,this._layersMinZoom=e===1/0?void 0:e,i!==this._getZoomSpan()&&this.fire("zoomlevelschange"),this.options.maxZoom===void 0&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),this.options.minZoom===void 0&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var Ue=ve.extend({initialize:function(e,t){Z(this,t),this._layers={};var i,n;if(e)for(i=0,n=e.length;i<n;i++)this.addLayer(e[i])},addLayer:function(e){var t=this.getLayerId(e);return this._layers[t]=e,this._map&&this._map.addLayer(e),this},removeLayer:function(e){var t=e in this._layers?e:this.getLayerId(e);return this._map&&this._layers[t]&&this._map.removeLayer(this._layers[t]),delete this._layers[t],this},hasLayer:function(e){var t=typeof e=="number"?e:this.getLayerId(e);return t in this._layers},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(e){var t=Array.prototype.slice.call(arguments,1),i,n;for(i in this._layers)n=this._layers[i],n[e]&&n[e].apply(n,t);return this},onAdd:function(e){this.eachLayer(e.addLayer,e)},onRemove:function(e){this.eachLayer(e.removeLayer,e)},eachLayer:function(e,t){for(var i in this._layers)e.call(t,this._layers[i]);return this},getLayer:function(e){return this._layers[e]},getLayers:function(){var e=[];return this.eachLayer(e.push,e),e},setZIndex:function(e){return this.invoke("setZIndex",e)},getLayerId:function(e){return g(e)}}),Zr=function(e,t){return new Ue(e,t)},ke=Ue.extend({addLayer:function(e){return this.hasLayer(e)?this:(e.addEventParent(this),Ue.prototype.addLayer.call(this,e),this.fire("layeradd",{layer:e}))},removeLayer:function(e){return this.hasLayer(e)?(e in this._layers&&(e=this._layers[e]),e.removeEventParent(this),Ue.prototype.removeLayer.call(this,e),this.fire("layerremove",{layer:e})):this},setStyle:function(e){return this.invoke("setStyle",e)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var e=new he;for(var t in this._layers){var i=this._layers[t];e.extend(i.getBounds?i.getBounds():i.getLatLng())}return e}}),Wr=function(e,t){return new ke(e,t)},Ve=Pe.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0],crossOrigin:!1},initialize:function(e){Z(this,e)},createIcon:function(e){return this._createIcon("icon",e)},createShadow:function(e){return this._createIcon("shadow",e)},_createIcon:function(e,t){var i=this._getIconUrl(e);if(!i){if(e==="icon")throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n=this._createImg(i,t&&t.tagName==="IMG"?t:null);return this._setIconStyles(n,e),(this.options.crossOrigin||this.options.crossOrigin==="")&&(n.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),n},_setIconStyles:function(e,t){var i=this.options,n=i[t+"Size"];typeof n=="number"&&(n=[n,n]);var r=E(n),s=E(t==="shadow"&&i.shadowAnchor||i.iconAnchor||r&&r.divideBy(2,!0));e.className="leaflet-marker-"+t+" "+(i.className||""),s&&(e.style.marginLeft=-s.x+"px",e.style.marginTop=-s.y+"px"),r&&(e.style.width=r.x+"px",e.style.height=r.y+"px")},_createImg:function(e,t){return t=t||document.createElement("img"),t.src=e,t},_getIconUrl:function(e){return P.retina&&this.options[e+"RetinaUrl"]||this.options[e+"Url"]}});function Fr(e){return new Ve(e)}var dt=Ve.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(e){return typeof dt.imagePath!="string"&&(dt.imagePath=this._detectIconPath()),(this.options.imagePath||dt.imagePath)+Ve.prototype._getIconUrl.call(this,e)},_stripUrl:function(e){var t=function(i,n,r){var s=n.exec(i);return s&&s[r]};return e=t(e,/^url\((['"])?(.+)\1\)$/,2),e&&t(e,/^(.*)marker-icon\.png$/,1)},_detectIconPath:function(){var e=D("div","leaflet-default-icon-path",document.body),t=at(e,"background-image")||at(e,"backgroundImage");if(document.body.removeChild(e),t=this._stripUrl(t),t)return t;var i=document.querySelector('link[href$="leaflet.css"]');return i?i.href.substring(0,i.href.length-11-1):""}}),Fn=we.extend({initialize:function(e){this._marker=e},addHooks:function(){var e=this._marker._icon;this._draggable||(this._draggable=new Ae(e,e,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),M(e,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&K(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(e){var t=this._marker,i=t._map,n=this._marker.options.autoPanSpeed,r=this._marker.options.autoPanPadding,s=Be(t._icon),o=i.getPixelBounds(),h=i.getPixelOrigin(),c=le(o.min._subtract(h).add(r),o.max._subtract(h).subtract(r));if(!c.contains(s)){var f=E((Math.max(c.max.x,s.x)-c.max.x)/(o.max.x-c.max.x)-(Math.min(c.min.x,s.x)-c.min.x)/(o.min.x-c.min.x),(Math.max(c.max.y,s.y)-c.max.y)/(o.max.y-c.max.y)-(Math.min(c.min.y,s.y)-c.min.y)/(o.min.y-c.min.y)).multiplyBy(n);i.panBy(f,{animate:!1}),this._draggable._newPos._add(f),this._draggable._startPos._add(f),Y(t._icon,this._draggable._newPos),this._onDrag(e),this._panRequest=oe(this._adjustPan.bind(this,e))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup&&this._marker.closePopup(),this._marker.fire("movestart").fire("dragstart")},_onPreDrag:function(e){this._marker.options.autoPan&&(ue(this._panRequest),this._panRequest=oe(this._adjustPan.bind(this,e)))},_onDrag:function(e){var t=this._marker,i=t._shadow,n=Be(t._icon),r=t._map.layerPointToLatLng(n);i&&Y(i,n),t._latlng=r,e.latlng=r,e.oldLatLng=this._oldLatLng,t.fire("move",e).fire("drag",e)},_onDragEnd:function(e){ue(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",e)}}),Ct=ve.extend({options:{icon:new dt,interactive:!0,keyboard:!0,title:"",alt:"Marker",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",shadowPane:"shadowPane",bubblingMouseEvents:!1,autoPanOnFocus:!0,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10},initialize:function(e,t){Z(this,t),this._latlng=I(e)},onAdd:function(e){this._zoomAnimated=this._zoomAnimated&&e.options.markerZoomAnimation,this._zoomAnimated&&e.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(e){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&e.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(e){var t=this._latlng;return this._latlng=I(e),this.update(),this.fire("move",{oldLatLng:t,latlng:this._latlng})},setZIndexOffset:function(e){return this.options.zIndexOffset=e,this.update()},getIcon:function(){return this.options.icon},setIcon:function(e){return this.options.icon=e,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var e=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(e)}return this},_initIcon:function(){var e=this.options,t="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),i=e.icon.createIcon(this._icon),n=!1;i!==this._icon&&(this._icon&&this._removeIcon(),n=!0,e.title&&(i.title=e.title),i.tagName==="IMG"&&(i.alt=e.alt||"")),M(i,t),e.keyboard&&(i.tabIndex="0",i.setAttribute("role","button")),this._icon=i,e.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex}),this.options.autoPanOnFocus&&j(i,"focus",this._panOnFocus,this);var r=e.icon.createShadow(this._shadow),s=!1;r!==this._shadow&&(this._removeShadow(),s=!0),r&&(M(r,t),r.alt=""),this._shadow=r,e.opacity<1&&this._updateOpacity(),n&&this.getPane().appendChild(this._icon),this._initInteraction(),r&&s&&this.getPane(e.shadowPane).appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}
vendor: 5,616 bytes, line 1
1),this.options.autoPanOnFocus&&H(this._icon,"focus",this._panOnFocus,this),V(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&V(this._shadow),this._shadow=null},_setPos:function(e){this._icon&&Y(this._icon,e),this._shadow&&Y(this._shadow,e),this._zIndex=e.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(e){this._icon&&(this._icon.style.zIndex=this._zIndex+e)},_animateZoom:function(e){var t=this._map._latLngToNewLayerPoint(this._latlng,e.zoom,e.center).round();this._setPos(t)},_initInteraction:function(){if(this.options.interactive&&(M(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),Fn)){var e=this.options.draggable;this.dragging&&(e=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Fn(this),e&&this.dragging.enable()}},setOpacity:function(e){return this.options.opacity=e,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var e=this.options.opacity;this._icon&&fe(this._icon,e),this._shadow&&fe(this._shadow,e)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_panOnFocus:function(){var e=this._map;if(e){var t=this.options.icon.options,i=t.iconSize?E(t.iconSize):E(0,0),n=t.iconAnchor?E(t.iconAnchor):E(0,0);e.panInside(this._latlng,{paddingTopLeft:n,paddingBottomRight:i.subtract(n)})}},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}});function Hr(e,t){return new Ct(e,t)}var Ie=ve.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(e){this._renderer=e.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(e){return Z(this,e),this._renderer&&(this._renderer._updateStyle(this),this.options.stroke&&e&&Object.prototype.hasOwnProperty.call(e,"weight")&&this._updateBounds()),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+(this._renderer.options.tolerance||0)}}),Et=Ie.extend({options:{fill:!0,radius:10},initialize:function(e,t){Z(this,t),this._latlng=I(e),this._radius=this.options.radius},setLatLng:function(e){var t=this._latlng;return this._latlng=I(e),this.redraw(),this.fire("move",{oldLatLng:t,latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(e){return this.options.radius=this._radius=e,this.redraw()},getRadius:function(){return this._radius},setStyle:function(e){var t=e&&e.radius||this._radius;return Ie.prototype.setStyle.call(this,e),this.setRadius(t),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var e=this._radius,t=this._radiusY||e,i=this._clickTolerance(),n=[e+i,t+i];this._pxBounds=new U(this._point.subtract(n),this._point.add(n))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(e){return e.distanceTo(this._point)<=this._radius+this._clickTolerance()}});function Gr(e,t){return new Et(e,t)}var Ti=Et.extend({initialize:function(e,t,i){if(typeof t=="number"&&(t=m({},i,{radius:t})),Z(this,t),this._latlng=I(e),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(e){return this._mRadius=e,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var e=[this._radius,this._radiusY||this._radius];return new he(this._map.layerPointToLatLng(this._point.subtract(e)),this._map.layerPointToLatLng(this._point.add(e)))},setStyle:Ie.prototype.setStyle,_project:function(){var e=this._latlng.lng,t=this._latlng.lat,i=this._map,n=i.options.crs;if(n.distance===Me.distance){var r=Math.PI/180,s=this._mRadius/Me.R/r,o=i.project([t+s,e]),h=i.project([t-s,e]),c=o.add(h).divideBy(2),f=i.unproject(c).lat,y=Math.acos((Math.cos(s*r)-Math.sin(t*r)*Math.sin(f*r))/(Math.cos(t*r)*Math.cos(f*r)))/r;(isNaN(y)||y===0)&&(y=s/Math.cos(Math.PI/180*t)),this._point=c.subtract(i.getPixelOrigin()),this._radius=isNaN(y)?0:c.x-i.project([f,e-y]).x,this._radiusY=c.y-o.y}else{var T=n.unproject(n.project(this._latlng).subtract([this._mRadius,0]));this._point=i.latLngToLayerPoint(this._latlng),this._radius=this._point.x-i.latLngToLayerPoint(T).x}this._updateBounds()}});function Ur(e,t,i){return new Ti(e,t,i)}var Te=Ie.extend({options:{smoothFactor:1,noClip:!1},initialize:function(e,t){Z(this,t),this._setLatLngs(e)},getLatLngs:function(){return this._latlngs},setLatLngs:function(e){return this._setLatLngs(e),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(e){for(var t=1/0,i=null,n=ct,r,s,o=0,h=this._parts.length;o<h;o++)for(var c=this._parts[o],f=1,y=c.length;f<y;f++){r=c[f-1],s=c[f];var T=n(e,r,s,!0);T<t&&(t=T,i=n(e,r,s))}return i&&(i.distance=Math.sqrt(t)),i}
1,getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");return Zn(this._defaultShape(),this._map.options.crs)},getBounds:function(){return this._bounds},addLatLng:function(e,t){return t=t||this._defaultShape(),e=I(e),t.push(e),this._bounds.extend(e),this.redraw()},_setLatLngs:function(e){this._bounds=new he,this._latlngs=this._convertLatLngs(e)},_defaultShape:function(){return me(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(e){for(var t=[],i=me(e),n=0,r=e.length;n<r;n++)i?(t[n]=I(e[n]),this._bounds.extend(t[n])):t[n]=this._convertLatLngs(e[n]);return t},_project:function(){var e=new U;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,e),this._bounds.isValid()&&e.isValid()&&(this._rawPxBounds=e,this._updateBounds())},_updateBounds:function(){var e=this._clickTolerance(),t=new N(e,e);this._rawPxBounds&&(this._pxBounds=new U([this._rawPxBounds.min.subtract(t),this._rawPxBounds.max.add(t)]))},_projectLatlngs:function(e,t,i){var n=e[0]instanceof F,r=e.length,s,o;if(n){for(o=[],s=0;s<r;s++)o[s]=this._map.latLngToLayerPoint(e[s]),i.extend(o[s]);t.push(o)}else for(s=0;s<r;s++)this._projectLatlngs(e[s],t,i)},_clipPoints:function(){var e=this._renderer._bounds;if(this._parts=[],!(!this._pxBounds||!this._pxBounds.intersects(e))){if(this.options.noClip){this._parts=this._rings;return}var t=this._parts,i,n,r,s,o,h,c;for(i=0,r=0,s=this._rings.length;i<s;i++)for(c=this._rings[i],n=0,o=c.length;n<o-1;n++)h=zn(c[n],c[n+1],e,n,!0),h&&(t[r]=t[r]||[],t[r].push(h[0]),(h[1]!==c[n+1]||n===o-2)&&(t[r].push(h[1]),r++))}},_simplifyPoints:function(){for(var e=this._parts,t=this.options.smoothFactor,i=0,n=e.length;i<n;i++)e[i]=Rn(e[i],t)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(e,t){var i,n,r,s,o,h,c=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(e))return!1;for(i=0,s=this._parts.length;i<s;i++)for(h=this._parts[i],n=0,o=h.length,r=o-1;n<o;r=n++)if(!(!t&&n===0)&&On(e,h[r],h[n])<=c)return!0;return!1}});function Vr(e,t){return new Te(e,t)}Te._flat=Dn;var $e=Te.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length}
1,getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");return In(this._defaultShape(),this._map.options.crs)},_convertLatLngs:function(e){var t=Te.prototype._convertLatLngs.call(this,e),i=t.length;return i>=2&&t[0]instanceof F&&t[0].equals(t[i-1])&&t.pop(),t},_setLatLngs:function(e){Te.prototype._setLatLngs.call(this,e),me(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return me(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var e=this._renderer._bounds,t=this.options.weight,i=new N(t,t);if(e=new U(e.min.subtract(i),e.max.add(i)),this._parts=[],!(!this._pxBounds||!this._pxBounds.intersects(e))){if(this.options.noClip){this._parts=this._rings;return}for(var n=0,r=this._rings.length,s;n<r;n++)s=An(this._rings[n],e,!0),s.length&&this._parts.push(s)}},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(e){var t=!1,i,n,r,s,o,h,c,f;if(!this._pxBounds||!this._pxBounds.contains(e))return!1;for(s=0,c=this._parts.length;s<c;s++)for(i=this._parts[s],o=0,f=i.length,h=f-1;o<f;h=o++)n=i[o],r=i[h],n.y>e.y!=r.y>e.y&&e.x<(r.x-n.x)*(e.y-n.y)/(r.y-n.y)+n.x&&(t=!t);return t||Te.prototype._containsPoint.call(this,e,!0)}});function $r(e,t){return new $e(e,t)}var Le=ke.extend({initialize:function(e,t){Z(this,t),this._layers={},e&&this.addData(e)},addData:function(e){var t=ie(e)?e:e.features,i,n,r;if(t){for(i=0,n=t.length;i<n;i++)r=t[i],(r.geometries||r.geometry||r.features||r.coordinates)&&this.addData(r);return this}var s=this.options;if(s.filter&&!s.filter(e))return this;var o=Nt(e,s);return o?(o.feature=At(e),o.defaultOptions=o.options,this.resetStyle(o),s.onEachFeature&&s.onEachFeature(e,o),this.addLayer(o)):this},resetStyle:function(e){return e===void 0?this.eachLayer(this.resetStyle,this):(e.options=m({},e.defaultOptions),this._setLayerStyle(e,this.options.style),this)},setStyle:function(e){return this.eachLayer(function(t){this._setLayerStyle(t,e)},this)},_setLayerStyle:function(e,t){e.setStyle&&(typeof t=="function"&&(t=t(e.feature)),e.setStyle(t))}});function Nt(e,t){var i=e.type==="Feature"?e.geometry:e,n=i?i.coordinates:null,r=[],s=t&&t.pointToLayer,o=t&&t.coordsToLatLng||Li,h,c,f,y;if(!n&&!i)return null;switch(i.type){case"Point":return h=o(n),Hn(s,e,h,t);case"MultiPoint":for(f=0,y=n.length;f<y;f++)h=o(n[f]),r.push(Hn(s,e,h,t));return new ke(r);case"LineString":case"MultiLineString":return c=jt(n,i.type==="LineString"?0:1,o),new Te(c,t);case"Polygon":case"MultiPolygon":return c=jt(n,i.type==="Polygon"?1:2,o),new $e(c,t);case"GeometryCollection":for(f=0,y=i.geometries.length;f<y;f++){var T=Nt({geometry:i.geometries[f],type:"Feature",properties:e.properties},t);T&&r.push(T)}return new ke(r);case"FeatureCollection":for(f=0,y=i.features.length;f<y;f++){var A=Nt(i.features[f],t);A&&r.push(A)}return new ke(r);default:throw new Error("Invalid GeoJSON object.")}}function Hn(e,t,i,n){return e?e(t,i):new Ct(i,n&&n.markersInheritOptions&&n)}function Li(e){return new F(e[1],e[0],e[2])}function jt(e,t,i){for(var n=[],r=0,s=e.length,o;r<s;r++)o=t?jt(e[r],t-1,i):(i||Li)(e[r]),n.push(o);return n}function Ci(e,t){return e=I(e),e.alt!==void 0?[O(e.lng,t),O(e.lat,t),O(e.alt,t)]:[O(e.lng,t),O(e.lat,t)]}function Mt(e,t,i,n){for(var r=[],s=0,o=e.length;s<o;s++)r.push(t?Mt(e[s],me(e[s])?0:t-1,i,n):Ci(e[s],n));return!t&&i&&r.length>0&&r.push(r[0].slice()),r}function Ke(e,t){return e.feature?m({},e.feature,{geometry:t}):At(t)}function At(e){return e.type==="Feature"||e.type==="FeatureCollection"?e:{type:"Feature",properties:{},geometry:e}}var Ei={toGeoJSON:function(e){return Ke(this,{type:"Point",coordinates:Ci(this.getLatLng(),e)})}};Ct.include(Ei),Ti.include(Ei),Et.include(Ei),Te.include({toGeoJSON:function(e){var t=!me(this._latlngs),i=Mt(this._latlngs,t?1:0,!1,e);return Ke(this,{type:(t?"Multi":"")+"LineString",coordinates:i})}}),$e.include({toGeoJSON:function(e){var t=!me(this._latlngs),i=t&&!me(this._latlngs[0]),n=Mt(this._latlngs,i?2:t?1:0,!0,e);return t||(n=[n]),Ke(this,{type:(i?"Multi":"")+"Polygon",coordinates:n})}}),Ue.include({toMultiPoint:function(e){var t=[];return this.eachLayer(function(i){t.push(i.toGeoJSON(e).geometry.coordinates)}),Ke(this,{type:"MultiPoint",coordinates:t})},toGeoJSON:function(e){var t=this.feature&&this.feature.geometry&&this.feature.geometry.type;if(t==="MultiPoint")return this.toMultiPoint(e);var i=t==="GeometryCollection",n=[];return this.eachLayer(function(r){if(r.toGeoJSON){var s=r.toGeoJSON(e);if(i)n.push(s.geometry);else{var o=At(s);o.type==="FeatureCollection"?n.push.apply(n,o.features):n.push(o)}}}),i?Ke(this,{geometries:n,type:"GeometryCollection"}):{type:"FeatureCollection",features:n}}});function Gn(e,t){return new Le(e,t)}var Kr=Gn,It=ve.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(e,t,i){this._url=e,this._bounds=q(t),Z(this,i)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(M(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){V(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(e){return this.options.opacity=e,this._image&&this._updateOpacity(),this},setStyle:function(e){return e.opacity&&this.setOpacity(e.opacity),this},bringToFront:function(){return this._map&&He(this._image),this},bringToBack:function(){return this._map&&Ge(this._image),this},setUrl:function(e){return this._url=e,this._image&&(this._image.src=e),this},setBounds:function(e){return this._bounds=q(e),this._map&&this._reset(),this},getEvents:function(){var e={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(e.zoomanim=this._animateZoom),e},setZIndex:function(e){return this.options.zIndex=e,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var e=this._url.tagName==="IMG",t=this._image=e?this._url:D("img");if(M(t,"leaflet-image-layer"),this._zoomAnimated&&M(t,"leaflet-zoom-animated"),this.options.className&&M(t,this.options.className),t.onselectstart=S,t.onmousemove=S,t.onload=w(this.fire,this,"load"),t.onerror=w(this._overlayOnError,this,"error"),(this.options.crossOrigin||this.options.crossOrigin==="")&&(t.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),e){this._url=t.src;return}t.src=this._url,t.alt=this.options.alt},_animateZoom:function(e){var t=this._map.getZoomScale(e.zoom),i=this._map._latLngBoundsToNewLayerBounds(this._bounds,e.zoom,e.center).min;Oe(this._image,i,t)},_reset:function(){var e=this._image,t=new U(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),i=t.getSize();Y(e,t.min),e.style.width=i.x+"px",e.style.height=i.y+"px"},_updateOpacity:function(){fe(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&this.options.zIndex!==void 0&&this.options.zIndex!==null&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var e=this.options.errorOverlayUrl;e&&this._url!==e&&(this._url=e,this._image.src=e)},getCenter:function(){return this._bounds.getCenter()}}),qr=function(e,t,i){return new It(e,t,i)},Un=It.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0,muted:!1,playsInl
1ine:!0},_initImage:function(){var e=this._url.tagName==="VIDEO",t=this._image=e?this._url:D("video");if(M(t,"leaflet-image-layer"),this._zoomAnimated&&M(t,"leaflet-zoom-animated"),this.options.className&&M(t,this.options.className),t.onselectstart=S,t.onmousemove=S,t.onloadeddata=w(this.fire,this,"load"),e){for(var i=t.getElementsByTagName("source"),n=[],r=0;r<i.length;r++)n.push(i[r].src);this._url=i.length>0?n:[t.src];return}ie(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&Object.prototype.hasOwnProperty.call(t.style,"objectFit")&&(t.style.objectFit="fill"),t.autoplay=!!this.options.autoplay,t.loop=!!this.options.loop,t.muted=!!this.options.muted,t.playsInline=!!this.options.playsInline;for(var s=0;s<this._url.length;s++){var o=D("source");o.src=this._url[s],t.appendChild(o)}}});function Yr(e,t,i){return new Un(e,t,i)}var Vn=It.extend({_initImage:function(){var e=this._image=this._url;M(e,"leaflet-image-layer"),this._zoomAnimated&&M(e,"leaflet-zoom-animated"),this.options.className&&M(e,this.options.className),e.onselectstart=S,e.onmousemove=S}});function Jr(e,t,i){return new Vn(e,t,i)}var be=ve.extend({options:{interactive:!1,offset:[0,0],className:"",pane:void 0,content:""},initialize:function(e,t){e&&(e instanceof F||ie(e))?(this._latlng=I(e),Z(this,t)):(Z(this,e),this._source=t),this.options.content&&(this._content=this.options.content)},openOn:function(e){return e=arguments.length?e:this._source._map,e.hasLayer(this)||e.addLayer(this),this},close:function(){return this._map&&this._map.removeLayer(this),this},toggle:function(e){return this._map?this.close():(arguments.length?this._source=e:e=this._source,this._prepareOpen(),this.openOn(e._map)),this},onAdd:function(e){this._zoomAnimated=e._zoomAnimated,this._container||this._initLayout(),e._fadeAnimated&&fe(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),e._fadeAnimated&&fe(this._container,1),this.bringToFront(),this.options.interactive&&(M(this._container,"leaflet-interactive"),this.addInteractiveTarget(this._container))},onRemove:function(e){e._fadeAnimated?(fe(this._container,0),this._removeTimeout=setTimeout(w(V,void 0,this._container),200)):V(this._container),this.options.interactive&&(K(this._container,"leaflet-interactive"),this.removeInteractiveTarget(this._container))},getLatLng:function(){return this._latlng},setLatLng:function(e){return this._latlng=I(e),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(e){return this._content=e,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var e={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(e.zoomanim=this._animateZoom),e},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&He(this._container),this},bringToBack:function(){return this._map&&Ge(this._container),this},_prepareOpen:function(e){var t=this._source;if(!t._map)return!1;if(t instanceof ke){t=null;var i=this._source._layers;for(var n in i)if(i[n]._map){t=i[n];break}if(!t)return!1;this._source=t}if(!e)if(t.getCenter)e=t.getCenter();else if(t.getLatLng)e=t.getLatLng();else if(t.getBounds)e=t.getBounds().getCenter();else throw new Error("Unable to get source layer LatLng.");return this.setLatLng(e),this._map&&this.update(),!0},_updateContent:function(){if(this._content){var e=this._contentNode,t=typeof this._content=="function"?this._content(this._source||this):this._content;if(typeof t=="string")e.innerHTML=t;else{for(;e.hasChildNodes();)e.removeChild(e.firstChild);e.appendChild(t)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var e=this._map.latLngToLayerPoint(this._latlng),t=E(this.options.offset),i=this._getAnchor();this._zoomAnimated?Y(this._container,e.add(i)):t=t.add(e).add(i);var n=this._containerBottom=-t.y,r=this._containerLeft=-Math.round(this._containerWidth/2)+t.x;this._container.style.bottom=n+"px",this._container.style.left=r+"px"}},_getAnchor:function(){return[0,0]}});R.include({_initOverlay:function(e,t,i,n){var r=t;return r instanceof e||(r=new e(n).setContent(t)),i&&r.setLatLng(i),r}}),ve.include({_initOverlay:function(e,t,i,n){var r=i;return r instanceof e?(Z(r,n),r._source=this):(r=t&&!n?t:new e(n,this),r.setContent(i)),r}});var Rt=be.extend({options:{pane:"popupPane",offset:[0,7],maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(e){return e=arguments.length?e:this._source._map,!e.hasLayer(this)&&e._popup&&e._popup.options.autoClose&&e.removeLayer(e._popup),e._popup=this,be.prototype.openOn.call(this,e)},onAdd:function(e){be.prototype.onAdd.call(this,e),e.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof Ie||this._source.on("preclick",ze))},onRemove:function(e){be.prototype.onRemove.call(this,e),e.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof Ie||this._source.off("preclick",ze))},getEvents:function(){var e=be.prototype.getEvents.call(this);return(this.options.closeOnClick!==void 0?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(e.preclick=this.close),this.options.keepInView&&
1(e.moveend=this._adjustPan),e},_initLayout:function(){var e="leaflet-popup",t=this._container=D("div",e+" "+(this.options.className||"")+" leaflet-zoom-animated"),i=this._wrapper=D("div",e+"-content-wrapper",t);if(this._contentNode=D("div",e+"-content",i),lt(t),vi(this._contentNode),j(t,"contextmenu",ze),this._tipContainer=D("div",e+"-tip-container",t),this._tip=D("div",e+"-tip",this._tipContainer),this.options.closeButton){var n=this._closeButton=D("a",e+"-close-button",t);n.setAttribute("role","button"),n.setAttribute("aria-label","Close popup"),n.href="#close",n.innerHTML='<span aria-hidden="true">&#215;</span>',j(n,"click",function(r){ne(r),this.close()},this)}},_updateLayout:function(){var e=this._contentNode,t=e.style;t.width="",t.whiteSpace="nowrap";var i=e.offsetWidth;i=Math.min(i,this.options.maxWidth),i=Math.max(i,this.options.minWidth),t.width=i+1+"px",t.whiteSpace="",t.height="";var n=e.offsetHeight,r=this.options.maxHeight,s="leaflet-popup-scrolled";r&&n>r?(t.height=r+"px",M(e,s)):K(e,s),this._containerWidth=this._container.offsetWidth},_animateZoom:function(e){var t=this._map._latLngToNewLayerPoint(this._latlng,e.zoom,e.center),i=this._getAnchor();Y(this._container,t.add(i))},_adjustPan:function(){if(this.options.autoPan){if(this._map._panAnim&&this._map._panAnim.stop(),this._autopanning){this._autopanning=!1;return}var e=this._map,t=parseInt(at(this._container,"marginBottom"),10)||0,i=this._container.offsetHeight+t,n=this._containerWidth,r=new N(this._containerLeft,-i-this._containerBottom);r._add(Be(this._container));var s=e.layerPointToContainerPoint(r),o=E(this.options.autoPanPadding),h=E(this.options.autoPanPaddingTopLeft||o),c=E(this.options.autoPanPaddingBottomRight||o),f=e.getSize(),y=0,T=0;s.x+n+c.x>f.x&&(y=s.x+n-f.x+c.x),s.x-y-h.x<0&&(y=s.x-h.x),s.y+i+c.y>f.y&&(T=s.y+i-f.y+c.y),s.y-T-h.y<0&&(T=s.y-h.y),(y||T)&&(this.options.keepInView&&(this._autopanning=!0),e.fire("autopanstart").panBy([y,T]))}},_getAnchor:function(){return E(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}}),Xr=function(e,t){return new Rt(e,t)};R.mergeOptions({closePopupOnClick:!0}),R.include({openPopup:function(e,t,i){return this._initOverlay(Rt,e,t,i).openOn(this),this},closePopup:function(e){return e=arguments.length?e:this._popup,e&&e.close(),this}}),ve.include({bindPopup:function(e,t){return this._popup=this._initOverlay(Rt,this._popup,e,t),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(e){return this._popup&&(this instanceof ke||(this._popup._source=this),this._popup._prepareOpen(e||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return this._popup?this._popup.isOpen():!1},setPopupContent:function(e){return this._popup&&this._popup.setContent(e),this},getPopup:function(){return this._popup},_openPopup:function(e){if(!(!this._popup||!this._map)){De(e);var t=e.layer||e.target;if(this._popup._source===t&&!(t instanceof Ie)){this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(e.latlng);return}this._popup._source=t,this.openPopup(e.latlng)}},_movePopup:function(e){this._popup.setLatLng(e.latlng)},_onKeyPress:function(e){e.originalEvent.keyCode===13&&this._openPopup(e)}});var Ot=be.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(e){be.prototype.onAdd.call(this,e),this.setOpacity(this.options.opacity),e.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(e){be.prototype.onRemove.call(this,e),e.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var e=be.prototype.getEvents.call(this);return this.options.permanent||(e.preclick=this.close),e},_initLayout:function(){var e="leaflet-tooltip",t=e+" "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=D("div",t),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+g(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(e){var t,i,n=this._map,r=this._container,s=n.latLngToContainerPoint(n.getCenter()),o=n.layerPointToContainerPoint(e),h=this.options.direction,c=r.offsetWidth,f=r.offsetHeight,y=E(this.options.offset),T=this._getAnchor();h==="top"?(t=c/2,i=f):h==="bottom"?(t=c/2,i=0):h==="center"?(t=c/2,i=f/2):h==="right"?(t=0,i=f/2):h==="left"?
1(t=c,i=f/2):o.x<s.x?(h="right",t=0,i=f/2):(h="left",t=c+(y.x+T.x)*2,i=f/2),e=e.subtract(E(t,i,!0)).add(y).add(T),K(r,"leaflet-tooltip-right"),K(r,"leaflet-tooltip-left"),K(r,"leaflet-tooltip-top"),K(r,"leaflet-tooltip-bottom"),M(r,"leaflet-tooltip-"+h),Y(r,e)},_updatePosition:function(){var e=this._map.latLngToLayerPoint(this._latlng);this._setPosition(e)},setOpacity:function(e){this.options.opacity=e,this._container&&fe(this._container,e)},_animateZoom:function(e){var t=this._map._latLngToNewLayerPoint(this._latlng,e.zoom,e.center);this._setPosition(t)},_getAnchor:function(){return E(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}}),Qr=function(e,t){return new Ot(e,t)};R.include({openTooltip:function(e,t,i){return this._initOverlay(Ot,e,t,i).openOn(this),this},closeTooltip:function(e){return e.close(),this}}),ve.include({bindTooltip:function(e,t){return this._tooltip&&this.isTooltipOpen()&&this.unbindTooltip(),this._tooltip=this._initOverlay(Ot,this._tooltip,e,t),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(e){if(!(!e&&this._tooltipHandlersAdded)){var t=e?"off":"on",i={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?i.add=this._openTooltip:(i.mouseover=this._openTooltip,i.mouseout=this.closeTooltip,i.click=this._openTooltip,this._map?this._addFocusListeners():i.add=this._addFocusListeners),this._tooltip.options.sticky&&(i.mousemove=this._moveTooltip),this[t](i),this._tooltipHandlersAdded=!e}},openTooltip:function(e){return this._tooltip&&(this instanceof ke||(this._tooltip._source=this),this._tooltip._prepareOpen(e)&&(this._tooltip.openOn(this._map),this.getElement?this._setAriaDescribedByOnLayer(this):this.eachLayer&&this.eachLayer(this._setAriaDescribedByOnLayer,this))),this},closeTooltip:function(){if(this._tooltip)return this._tooltip.close()},toggleTooltip:function(){return this._tooltip&&this._tooltip.toggle(this),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(e){return this._tooltip&&this._tooltip.setContent(e),this},getTooltip:function(){return this._tooltip},_addFocusListeners:function(){this.getElement?this._addFocusListenersOnLayer(this):this.eachLayer&&this.eachLayer(this._addFocusListenersOnLayer,this)},_addFocusListenersOnLayer:function(e){var t=typeof e.getElement=="function"&&e.getElement();t&&(j(t,"focus",function(){this._tooltip._source=e,this.openTooltip()},this),j(t,"blur",this.closeTooltip,this))},_setAriaDescribedByOnLayer:function(e){var t=typeof e.getElement=="function"&&e.getElement();t&&t.setAttribute("aria-describedby",this._tooltip._container.id)},_openTooltip:function(e){if(!(!this._tooltip||!this._map)){if(this._map.dragging&&this._map.dragging.moving()&&!this._openOnceFlag){this._openOnceFlag=!0;var t=this;this._map.once("moveend",function(){t._openOnceFlag=!1,t._openTooltip(e)});return}this._tooltip._source=e.layer||e.target,this.openTooltip(this._tooltip.options.sticky?e.latlng:void 0)}},_moveTooltip:function(e){var t=e.latlng,i,n;this._tooltip.options.sticky&&e.originalEvent&&(i=this._map.mouseEventToContainerPoint(e.originalEvent),n=this._map.containerPointToLayerPoint(i),t=this._map.layerPointToLatLng(n)),this._tooltip.setLatLng(t)}});var $n=Ve.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(e){var t=e&&e.tagName==="DIV"?e:document.createElement("div"),i=this.options;if(i.html instanceof Element?(bt(t),t.appendChild(i.html)):t.innerHTML=i.html!==!1?i.html:"",i.bgPos){var n=E(i.bgPos);t.style.backgroundPosition=-n.x+"px "+-n.y+"px"}return this._setIconStyles(t,"icon"),t},createShadow:function(){return null}});function es(e){return new $n(e)}Ve.Default=dt;var ut=ve.extend({options:{tileSize:256,opacity:1,updateWhenIdle:P.mobile,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(e){Z(this,e)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView()},beforeAdd:function(e){e._addZoomLimit(this)},onRemove:function(e){this._removeAllTiles(),V(this._container),e._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(He(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(Ge(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(e){return this.options.opacity=e,this._updateOpacity(),this},setZIndex:function(e){return this.options.zIndex=e,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){if(this._map){this._removeAllTiles();var e=this._clampZoom(this._map.getZoom());e!==this._tileZoom&&(this._tileZoom=e,this._updateLevels()),this._update()}return this},getEvents:function(){var e={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=_(this._onMoveEnd,this.options.updateInterval,this)),e.move=this._onMove),this._zoomAnimated&&(e.zoomanim=this._animateZoom),e},createTile:function(){return document.createElement("div")},getTileSize:function(){var e=this.options.tileSize;return e instanceof N?e:new N(e,e)},_updateZIndex:function(){this._container&&this.options.zIndex!==void 0&&this.options.zIndex!==null&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(e){for(var t=this.getPane().children,i=-e(-1/0,1/0),n=0,r=t.length,s;n<r;n++)s=t[n].style.zIndex,t[n]!==this._container&&s&&(i=e(i,+s));isFinite(i)&&(this.options.zIndex=i+e(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!P.ielt9){fe(this._container,this.options.opacity);var e=+new Date,t=!1,i=!1;for(var n in this._tiles){var r=this._tiles[n];if(!(!r.current||!r.loaded)){var s=Math.min(1,(e-r.loaded)/200);
1fe(r.el,s),s<1?t=!0:(r.active?i=!0:this._onOpaqueTile(r),r.active=!0)}}i&&!this._noPrune&&this._pruneTiles(),t&&(ue(this._fadeFrame),this._fadeFrame=oe(this._updateOpacity,this))}},_onOpaqueTile:S,_initContainer:function(){this._container||(this._container=D("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var e=this._tileZoom,t=this.options.maxZoom;if(e!==void 0){for(var i in this._levels)i=Number(i),this._levels[i].el.children.length||i===e?(this._levels[i].el.style.zIndex=t-Math.abs(e-i),this._onUpdateLevel(i)):(V(this._levels[i].el),this._removeTilesAtZoom(i),this._onRemoveLevel(i),delete this._levels[i]);var n=this._levels[e],r=this._map;return n||(n=this._levels[e]={},n.el=D("div","leaflet-tile-container leaflet-zoom-animated",this._container),n.el.style.zIndex=t,n.origin=r.project(r.unproject(r.getPixelOrigin()),e).round(),n.zoom=e,this._setZoomTransform(n,r.getCenter(),r.getZoom()),S(n.el.offsetWidth),this._onCreateLevel(n)),this._level=n,n}},_onUpdateLevel:S,_onRemoveLevel:S,_onCreateLevel:S,_pruneTiles:function(){if(this._map){var e,t,i=this._map.getZoom();if(i>this.options.maxZoom||i<this.options.minZoom){this._removeAllTiles();return}for(e in this._tiles)t=this._tiles[e],t.retain=t.current;for(e in this._tiles)if(t=this._tiles[e],t.current&&!t.active){var n=t.coords;this._retainParent(n.x,n.y,n.z,n.z-5)||this._retainChildren(n.x,n.y,n.z,n.z+2)}for(e in this._tiles)this._tiles[e].retain||this._removeTile(e)}},_removeTilesAtZoom:function(e){for(var t in this._tiles)this._tiles[t].coords.z===e&&this._removeTile(t)},_removeAllTiles:function(){for(var e in this._tiles)this._removeTile(e)},_invalidateAll:function(){for(var e in this._levels)V(this._levels[e].el),this._onRemoveLevel(Number(e)),delete this._levels[e];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(e,t,i,n){var r=Math.floor(e/2),s=Math.floor(t/2),o=i-1,h=new N(+r,+s);h.z=+o;var c=this._tileCoordsToKey(h),f=this._tiles[c];return f&&f.active?(f.retain=!0,!0):(f&&f.loaded&&(f.retain=!0),o>n?this._retainParent(r,s,o,n):!1)},_retainChildren:function(e,t,i,n){for(var r=2*e;r<2*e+2;r++)for(var s=2*t;s<2*t+2;s++){var o=new N(r,s);o.z=i+1;var h=this._tileCoordsToKey(o),c=this._tiles[h];if(c&&c.active){c.retain=!0;continue}else c&&c.loaded&&(c.retain=!0);i+1<n&&this._retainChildren(r,s,i+1,n)}},_resetView:function(e){var t=e&&(e.pinch||e.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),t,t)},_animateZoom:function(e){this._setView(e.center,e.zoom,!0,e.noUpdate)},_clampZoom:function(e){var t=this.options;return t.minNativeZoom!==void 0&&e<t.minNativeZoom?t.minNativeZoom:t.maxNativeZoom!==void 0&&t.maxNativeZoom<e?t.maxNativeZoom:e},_setView:function(e,t,i,n){var r=Math.round(t);this.options.maxZoom!==void 0&&r>this.options.maxZoom||this.options.minZoom!==void 0&&r<this.options.minZoom?r=void 0:r=this._clampZoom(r);var s=this.options.updateWhenZooming&&r!==this._tileZoom;(!n||s)&&(this._tileZoom=r,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),r!==void 0&&this._update(e),i||this._pruneTiles(),this._noPrune=!!i),this._setZoomTransforms(e,t)},_setZoomTransforms:function(e,t){for(var i in this._levels)this._setZoomTransform(this._levels[i],e,t)},_setZoomTransform:function(e,t,i){var n=this._map.getZoomScale(i,e.zoom),r=e.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(t,i)).round();P.any3d?Oe(e.el,r,n):Y(e.el,r)},_resetGrid:function(){var e=this._map,t=e.options.crs,i=this._tileSize=this.getTileSize(),n=this._tileZoom,r=this._map.getPixelWorldBounds(this._tileZoom);r&&(this._globalTileRange=this._pxBoundsToTileRange(r)),this._wrapX=t.wrapLng&&!this.options.noWrap&&[Math.floor(e.project([0,t.wrapLng[0]],n).x/i.x),Math.ceil(e.project([0,t.wrapLng[1]],n).x/i.y)],this._wrapY=t.wrapLat&&!this.options.noWrap&&[Math.floor(e.project([t.wrapLat[0],0],n).y/i.x),Math.ceil(e.project([t.wrapLat[1],0],n).y/i.y)]},_onMoveEnd:function(){!this._map||this._map._animatingZoom||this._update()},_getTiledPixelBounds:function(e){var t=this._map,i=t._animatingZoom?Math.max(t._animateToZoom,t.getZoom()):t.getZoom(),n=t.getZoomScale(i,this._tileZoom),r=t.project(e,this._tileZoom).floor(),s=t.getSize().divideBy(n*2);return new U(r.subtract(s),r.add(s))},_update:function(e){var t=this._map;if(t){var i=this._clampZoom(t.getZoom());if(e===void 0&&(e=t.getCenter()),this._tileZoom!==void 0){var n=this._getTiledPixelBounds(e),r=this._pxBoundsToTileRange(n),s=r.getCenter(),o=[],h=this.options.keepBuffer,c=new U(r.getBottomLeft().subtract([h,-h]),r.getTopRight().add([h,-h]));if(!(isFinite(r.min.x)&&isFinite(r.min.y)&&isFinite(r.max.x)&&isFinite(r.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var f in this._tiles){var y=this._tiles[f].coords;(y.z!==this._tileZoom||!c.contains(new N(y.x,y.y)))&&(this._tiles[f].current=!1)}if(Math.abs(i-this._tileZoom)>
vendor: 8,049 bytes, line 1
11){this._setView(e,i);return}for(var T=r.min.y;T<=r.max.y;T++)for(var A=r.min.x;A<=r.max.x;A++){var re=new N(A,T);if(re.z=this._tileZoom,!!this._isValidTile(re)){var te=this._tiles[this._tileCoordsToKey(re)];te?te.current=!0:o.push(re)}}if(o.sort(function(ce,Ye){return ce.distanceTo(s)-Ye.distanceTo(s)}),o.length!==0){this._loading||(this._loading=!0,this.fire("loading"));var pe=document.createDocumentFragment();for(A=0;A<o.length;A++)this._addTile(o[A],pe);this._level.el.appendChild(pe)}}}},_isValidTile:function(e){var t=this._map.options.crs;if(!t.infinite){var i=this._globalTileRange;if(!t.wrapLng&&(e.x<i.min.x||e.x>i.max.x)||!t.wrapLat&&(e.y<i.min.y||e.y>i.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(e);return q(this.options.bounds).overlaps(n)},_keyToBounds:function(e){return this._tileCoordsToBounds(this._keyToTileCoords(e))},_tileCoordsToNwSe:function(e){var t=this._map,i=this.getTileSize(),n=e.scaleBy(i),r=n.add(i),s=t.unproject(n,e.z),o=t.unproject(r,e.z);return[s,o]},_tileCoordsToBounds:function(e){var t=this._tileCoordsToNwSe(e),i=new he(t[0],t[1]);return this.options.noWrap||(i=this._map.wrapLatLngBounds(i)),i},_tileCoordsToKey:function(e){return e.x+":"+e.y+":"+e.z},_keyToTileCoords:function(e){var t=e.split(":"),i=new N(+t[0],+t[1]);return i.z=+t[2],i},_removeTile:function(e){var t=this._tiles[e];t&&(V(t.el),delete this._tiles[e],this.fire("tileunload",{tile:t.el,coords:this._keyToTileCoords(e)}))},_initTile:function(e){M(e,"leaflet-tile");var t=this.getTileSize();e.style.width=t.x+"px",e.style.height=t.y+"px",e.onselectstart=S,e.onmousemove=S,P.ielt9&&this.options.opacity<1&&fe(e,this.options.opacity)},_addTile:function(e,t){var i=this._getTilePos(e),n=this._tileCoordsToKey(e),r=this.createTile(this._wrapCoords(e),w(this._tileReady,this,e));this._initTile(r),this.createTile.length<2&&oe(w(this._tileReady,this,e,null,r)),Y(r,i),this._tiles[n]={el:r,coords:e,current:!0},t.appendChild(r),this.fire("tileloadstart",{tile:r,coords:e})},_tileReady:function(e,t,i){t&&this.fire("tileerror",{error:t,tile:i,coords:e});var n=this._tileCoordsToKey(e);i=this._tiles[n],i&&(i.loaded=+new Date,this._map._fadeAnimated?(fe(i.el,0),ue(this._fadeFrame),this._fadeFrame=oe(this._updateOpacity,this)):(i.active=!0,this._pruneTiles()),t||(M(i.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:i.el,coords:e})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),P.ielt9||!this._map._fadeAnimated?oe(this._pruneTiles,this):setTimeout(w(this._pruneTiles,this),250)))},_getTilePos:function(e){return e.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(e){var t=new N(this._wrapX?C(e.x,this._wrapX):e.x,this._wrapY?C(e.y,this._wrapY):e.y);return t.z=e.z,t},_pxBoundsToTileRange:function(e){var t=this.getTileSize();return new U(e.min.unscaleBy(t).floor(),e.max.unscaleBy(t).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var e in this._tiles)if(!this._tiles[e].loaded)return!1;return!0}});function ts(e){return new ut(e)}var qe=ut.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(e,t){this._url=e,t=Z(this,t),t.detectRetina&&P.retina&&t.maxZoom>0?(t.tileSize=Math.floor(t.tileSize/2),t.zoomReverse?(t.zoomOffset--,t.minZoom=Math.min(t.maxZoom,t.minZoom+1)):(t.zoomOffset++,t.maxZoom=Math.max(t.minZoom,t.maxZoom-1)),t.minZoom=Math.max(0,t.minZoom)):t.zoomReverse?t.minZoom=Math.min(t.maxZoom,t.minZoom):t.maxZoom=Math.max(t.minZoom,t.maxZoom),typeof t.subdomains=="string"&&(t.subdomains=t.subdomains.split("")),this.on("tileunload",this._onTileRemove)},setUrl:function(e,t){return this._url===e&&t===void 0&&(t=!0),this._url=e,t||this.redraw(),this},createTile:function(e,t){var i=document.createElement("img");return j(i,"load",w(this._tileOnLoad,this,t,i)),j(i,"error",w(this._tileOnError,this,t,i)),(this.options.crossOrigin||this.options.crossOrigin==="")&&(i.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),typeof this.options.referrerPolicy=="string"&&(i.referrerPolicy=this.options.referrerPolicy),i.alt="",i.src=this.getTileUrl(e),i},getTileUrl:function(e){var t={r:P.retina?"@2x":"",s:this._getSubdomain(e),x:e.x,y:e.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var i=this._globalTileRange.max.y-e.y;this.options.tms&&(t.y=i),t["-y"]=i}return Qe(this._url,m(t,this.options))},_tileOnLoad:function(e,t){P.ielt9?setTimeout(w(e,this,null,t),0):e(null,t)},_tileOnError:function(e,t,i){var n=this.options.errorTileUrl;n&&t.getAttribute("src")!==n&&(t.src=n),e(i,t)},_onTileRemove:function(e){e.tile.onload=null},_getZoomForUrl:function(){var e=this._tileZoom,t=this.options.maxZoom,i=this.options.zoomReverse,n=this.options.zoomOffset;return i&&(e=t-e),e+n},_getSubdomain:function(e){var t=Math.abs(e.x+e.y)%this.options.subdomains.length;return this.options.subdomains[t]},_abortLoading:function(){var e,t;for(e in this._tiles)if(this._tiles[e].coords.z!==this._tileZoom&&(t=this._tiles[e].el,t.onload=S,t.onerror=S,!t.complete)){t.src=xt;var i=this._tiles[e].coords;V(t),delete this._tiles[e],this.fire("tileabort",{tile:t,coords:i})}},_removeTile:function(e){var t=this._tiles[e];if(t)return t.el.setAttribute("src",xt),ut.prototype._removeTile.call(this,e)},_tileReady:function(e,t,i){if(!(!this._map||i&&i.getAttribute("src")===xt))return ut.prototype._tileReady.call(this,e,t,i)}});function Kn(e,t){return new qe(e,t)}var qn=qe.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(e,t){this._url=e;var i=m({},this.defaultWmsParams);for(var n in t)n in this.options||(i[n]=t[n]);t=Z(this,t);var r=t.detectRetina&&P.retina?2:1,s=this.getTileSize();i.width=s.x*r,i.height=s.y*r,this.wmsParams=i},onAdd:function(e){this._crs=this.options.crs||e.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var t=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[t]=this._crs.code,qe.prototype.onAdd.call(this,e)},getTileUrl:function(e){var t=this._tileCoordsToNwSe(e),i=this._crs,n=le(i.project(t[0]),i.project(t[1])),r=n.min,s=n.max,o=(this._wmsVersion>=1.3&&this._crs===Wn?[r.y,r.x,s.y,s.x]:[r.x,r.y,s.x,s.y]).join(","),h=qe.prototype.getTileUrl.call(this,e);return h+vt(this.wmsParams,h,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+o},setParams:function(e,t){return m(this.wmsParams,e),t||this.redraw(),this}});function is(e,t){return new qn(e,t)}qe.WMS=qn,Kn.wms=is;var Ce=ve.extend({options:{padding:.1},initialize:function(e){Z(this,e),g(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),M(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var e={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(e.zoomanim=this._onAnimZoom),e},_onAnimZoom:function(e){this._updateTransform(e.center,e.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(e,t){var i=this._map.getZoomScale(t,this._zoom),n=this._map.getSize().multiplyBy(.5+this.options.padding),r=this._map.project(this._center,t),s=n.multiplyBy(-i).add(r).subtract(this._map._getNewPixelOrigin(e,t));P.any3d?Oe(this._container,s,i):Y(this._container,s)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var e in this._layers)this._layers[e]._reset()},_onZoomEnd:function(){for(var e in this._layers)this._layers[e]._project()},_updatePaths:function(){for(var e in this._layers)this._layers[e]._update()},_update:function(){var e=this.options.padding,t=this._map.getSize(),i=this._map.containerPointToLayerPoint(t.multiplyBy(-e)).round();
1this._bounds=new U(i,i.add(t.multiplyBy(1+e*2)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),Yn=Ce.extend({options:{tolerance:0},getEvents:function(){var e=Ce.prototype.getEvents.call(this);return e.viewprereset=this._onViewPreReset,e},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){Ce.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var e=this._container=document.createElement("canvas");j(e,"mousemove",this._onMouseMove,this),j(e,"click dblclick mousedown mouseup contextmenu",this._onClick,this),j(e,"mouseout",this._handleMouseOut,this),e._leaflet_disable_events=!0,this._ctx=e.getContext("2d")},_destroyContainer:function(){ue(this._redrawRequest),delete this._ctx,V(this._container),H(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){var e;this._redrawBounds=null;for(var t in this._layers)e=this._layers[t],e._update();this._redraw()}},_update:function(){if(!(this._map._animatingZoom&&this._bounds)){Ce.prototype._update.call(this);var e=this._bounds,t=this._container,i=e.getSize(),n=P.retina?2:1;Y(t,e.min),t.width=n*i.x,t.height=n*i.y,t.style.width=i.x+"px",t.style.height=i.y+"px",P.retina&&this._ctx.scale(2,2),this._ctx.translate(-e.min.x,-e.min.y),this.fire("update")}},_reset:function(){Ce.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(e){this._updateDashArray(e),this._layers[g(e)]=e;var t=e._order={layer:e,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=t),this._drawLast=t,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(e){this._requestRedraw(e)},_removePath:function(e){var t=e._order,i=t.next,n=t.prev;i?i.prev=n:this._drawLast=n,n?n.next=i:this._drawFirst=i,delete e._order,delete this._layers[g(e)],this._requestRedraw(e)},_updatePath:function(e){this._extendRedrawBounds(e),e._project(),e._update(),this._requestRedraw(e)},_updateStyle:function(e){this._updateDashArray(e),this._requestRedraw(e)},_updateDashArray:function(e){if(typeof e.options.dashArray=="string"){var t=e.options.dashArray.split(/[, ]+/),i=[],n,r;for(r=0;r<t.length;r++){if(n=Number(t[r]),isNaN(n))return;i.push(n)}e.options._dashArray=i}else e.options._dashArray=e.options.dashArray},_requestRedraw:function(e){this._map&&(this._extendRedrawBounds(e),this._redrawRequest=this._redrawRequest||oe(this._redraw,this))},_extendRedrawBounds:function(e){if(e._pxBounds){var t=(e.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new U,this._redrawBounds.extend(e._pxBounds.min.subtract([t,t])),this._redrawBounds.extend(e._pxBounds.max.add([t,t]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var e=this._redrawBounds;if(e){var t=e.getSize();this._ctx.clearRect(e.min.x,e.min.y,t.x,t.y)}else this._ctx.save(),this._ctx.setTransform(1,0,0,1,0,0),this._ctx.clearRect(0,0,this._container.width,this._container.height),this._ctx.restore()},_draw:function(){var e,t=this._redrawBounds;if(this._ctx.save(),t){var i=t.getSize();this._ctx.beginPath(),this._ctx.rect(t.min.x,t.min.y,i.x,i.y),this._ctx.clip()}this._drawing=!0;for(var n=this._drawFirst;n;n=n.next)e=n.layer,(!t||e._pxBounds&&e._pxBounds.intersects(t))&&e._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(e,t){if(this._drawing){var i,n,r,s,o=e._parts,h=o.length,c=this._ctx;if(h){for(c.beginPath(),i=0;i<h;i++){for(n=0,r=o[i].length;n<r;n++)s=o[i][n],c[n?"lineTo":"moveTo"](s.x,s.y);t&&c.closePath()}this._fillStroke(c,e)}}},_updateCircle:function(e){if(!(!this._drawing||e._empty())){var t=e._point,i=this._ctx,n=Math.max(Math.round(e._radius),1),r=(Math.max(Math.round(e._radiusY),1)||n)/n;r!==1&&(i.save(),i.scale(1,r)),i.beginPath(),i.arc(t.x,t.y/r,n,0,Math.PI*2,!1),r!==1&&i.restore(),this._fillStroke(i,e)}},_fillStroke:function(e,t){var i=t.options;i.fill&&(e.globalAlpha=i.fillOpacity,e.fillStyle=i.fillColor||i.color,e.fill(i.fillRule||"evenodd")),i.stroke&&i.weight!==0&&(e.setLineDash&&e.setLineDash(t.options&&t.options._dashArray||[]),e.globalAlpha=i.opacity,e.lineWidth=i.weight,e.strokeStyle=i.color,e.lineCap=i.lineCap,e.lineJoin=i.lineJoin,e.stroke())},_onClick:function(e){for(var t=this._map.mouseEventToLayerPoint(e),i,n,r=this._drawFirst;r;r=r.next)i=r.layer,i.options.interactive&&i._containsPoint(t)&&(!(e.type==="click"||e.type==="preclick")||!this._map._draggableMoved(i))&&(n=i);this._fireEvent(n?[n]:!1,e)},_onMouseMove:function(e){if(!(!this._map||this._map.dragging.moving()||this._map._animatingZoom)){var t=this._map.mouseEventToLayerPoint(e);this._handleMouseHover(e,t)}},_handleMouseOut:function(e){var t=this._hoveredLayer;t&&(K(this._container,"leaflet-interactive"),this._fireEvent([t],e,"mouseout"),this._hoveredLayer=null,this._mouseHoverThrottled=!1)},_handleMouseHover:function(e,t){if(!this._mouseHoverThrottled){for(var i,n,r=this._drawFirst;r;r=r.next)i=r.layer,i.options.interactive&&i._containsPoint(t)&&(n=i);n!==this._hoveredLayer&&(this._handleMouseOut(e),n&&(M(this._container,"leaflet-interactive"),this._fireEvent([n],e,"mouseover"),this._hoveredLayer=n)),this._fireEvent(this._hoveredLayer?[this._hoveredLayer]:!1,e),this._mouseHoverThrottled=!0,setTimeout(w(function(){this._mouseHoverThrottled=!1},this),32)}},_fireEvent:function(e,t,i){this._map._fireDOMEvent(t,i||t.type,e)},_bringToFront:function(e){var t=e._order;if(t){var i=t.next,n=t.prev;if(i)i.prev=n;else return;n?n.next=i:i&&(this._drawFirst=i),t.prev=this._drawLast,this._drawLast.next=t,t.next=null,this._drawLast=t,this._requestRedraw(e)}},_bringToBack:function(e){var t=e._order;if(t){var i=t.next,n=t.prev;if(n)n.next=i;else return;i?i.prev=n:n&&(this._drawLast=n),t.prev=null,t.next=this._drawFirst,this._drawFirst.prev=t,this._drawFirst=t,this._requestRedraw(e)}}});function Jn(e){return P.canvas?new Yn(e):null}var ft=(function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(e){return document.createElement("<lvml:"+e+' class="lvml">')}}catch{}return function(e){return document.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}})(),ns={_initContainer:function(){this._container=D("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Ce.prototype._update.call(this),this.fire("update"))},_initPath:function(e){var t=e._container=ft("shape");M(t,"leaflet-vml-shape "+(this.options.className||"")),t.coordsize="1 1",e._path=ft("path"),t.appendChild(e._path),this._updateStyle(e),this._layers[g(e)]=e},_addPath:function(e){var t=e._container;this._container.appendChild(t),e.options.interactive&&e.addInteractiveTarget(t)},_removePath:function(e){var t=e._container;V(t),e.removeInteractiveTarget(t),delete this._layers[g(e)]},_updateStyle:function(e){var t=e._stroke,i=e._fill,n=e.options,r=e._container;r.stroked=!!n.stroke,r.filled=!!n.fill,n.stroke?(t||(t=e._stroke=ft("stroke")),r.appendChild(t),t.weight=n.weight+"px",t.color=n.color,t.opacity=n.opacity,n.dashArray?t.dashStyle=ie(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):t.dashStyle="",t.endcap=n.lineCap.replace("butt","flat"),t.joinstyle=n.lineJoin):t&&(r.removeChild(t),e._stroke=null),n.fill?(i||(i=e._fill=ft("fill")),r.appendChild(i),i.color=n.fillColor||n.color,i.opacity=n.fillOpacity):i&&(r.removeChild(i),e._fill=null)},_updateCircle:function(e){var t=e._point.round(),i=Math.round(e._radius),n=Math.round(e._radiusY||i);this._setPath(e,e._empty()?"M0 0":"AL "+t.x+","+t.y+" "+i+","+n+" 0,"+65535*360)},_setPath:function(e,t){e._path.v=t},_bringToFront:function(e){He(e._container)},_bringToBack:function(e){Ge(e._container)}},Bt=P.vml?ft:en,mt=Ce.extend({_initContainer:function(){this._container=Bt("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=Bt("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){V(this._container),H(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){if(!(this._map._animatingZoom&&this._bounds)){Ce.prototype._update.call(this);var e=this._bounds,t=e.getSize(),i=this._container;(!this._svgSize||!this._svgSize.equals(t))&&(this._svgSize=t,i.setAttribute("width",t.x),i.setAttribute("height",t.y)),Y(i,e.min),i.setAttribute("viewBox",[e.min.x,e.min.y,t.x,t.y].join(" ")),this.fire("update")}},_initPath:function(e){var t=e._path=Bt("path");e.options.className&&M(t,e.options.className),e.options.interactive&&M(t,"leaflet-interactive"),this._updateStyle(e),this._layers[g(e)]=e},_addPath:function(e){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(e._path),e.addInteractiveTarget(e._path)},_removePath:function(e){V(e._path),e.removeInteractiveTarget(e._path),delete this._layers[g(e)]},_updatePath:function(e){e._project(),e._update()},_updateStyle:function(e){var t=e._path,i=e.options;t&&(i.stroke?(t.setAttribute("stroke",i.color),t.setAttribute("stroke-opacity",i.opacity),t.setAttribute("stroke-width",i.weight),t.setAttribute("stroke-linecap",i.lineCap),t.setAttribute("stroke-linejoin",i.lineJoin),i.dashArray?t.setAttribute("stroke-dasharray",i.dashArray):t.removeAttribute("stroke-dasharray"),i.dashOffset?t.setAttribute("stroke-dashoffset",i.dashOffset):t.removeAttribute("stroke-dashoffset")):t.setAttribute("stroke","none"),i.fill?(t.setAttribute("fill",i.fillColor||i.color),t.setAttribute("fill-opacity",i.fillOpacity),t.setAttribute("fill-rule",i.fillRule||"evenodd")):t.setAttribute("fill","none"))},_updatePoly:function(e,t){this._setPath(e,tn(e._parts,t))},_updateCircle:function(e){var t=e._point,i=Math.max(Math.round(e._radius),1),n=Math.max(Math.round(e._radiusY),1)||i,r="a"+i+","+n+" 0 1,0 ",s=e._empty()?"M0 0":"M"+(t.x-i)+","+t.y+r+i*2+",0 "+r+-i*2+",0 ";this._setPath(e,s)},_setPath:function(e,t){e._path.setAttribute("d",t)},_bringToFront:function(e){He(e._path)},_bringToBack:function(e){Ge(e._path)}});P.vml&&mt.include(ns);function Xn(e){return P.svg||P.vml?new mt(e):null}R.include({getRenderer:function(e){var t=e.options.renderer||this._getPaneRenderer(e.options.pane)||this.options.renderer||this._renderer;return t||(t=this._renderer=this._createRenderer()),this.hasLayer(t)||this.addLayer(t),t},_getPaneRenderer:function(e){if(e==="overlayPane"||e===void 0)return!1;var t=this._paneRenderers[e];return t===void 0&&(t=this._createRenderer({pane:e}),this._paneRenderers[e]=t),t},_createRenderer:function(e){return this.options.preferCanvas&&Jn(e)||Xn(e)}});var Qn=$e.extend({initialize:function(e,t){$e.prototype.initialize.call(this,this._boundsToLatLngs(e),t)},setBounds:function(e){return this.setLatLngs(this._boundsToLatLngs(e))}
vendor: 5,634 bytes, line 1
1,_boundsToLatLngs:function(e){return e=q(e),[e.getSouthWest(),e.getNorthWest(),e.getNorthEast(),e.getSouthEast()]}});function as(e,t){return new Qn(e,t)}mt.create=Bt,mt.pointsToPath=tn,Le.geometryToLayer=Nt,Le.coordsToLatLng=Li,Le.coordsToLatLngs=jt,Le.latLngToCoords=Ci,Le.latLngsToCoords=Mt,Le.getFeature=Ke,Le.asFeature=At,R.mergeOptions({boxZoom:!0});var ea=we.extend({initialize:function(e){this._map=e,this._container=e._container,this._pane=e._panes.overlayPane,this._resetStateTimeout=0,e.on("unload",this._destroy,this)},addHooks:function(){j(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){H(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){V(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){this._resetStateTimeout!==0&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(e){if(!e.shiftKey||e.which!==1&&e.button!==1)return!1;this._clearDeferredResetState(),this._resetState(),rt(),ci(),this._startPoint=this._map.mouseEventToContainerPoint(e),j(document,{contextmenu:De,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(e){this._moved||(this._moved=!0,this._box=D("div","leaflet-zoom-box",this._container),M(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(e);var t=new U(this._point,this._startPoint),i=t.getSize();Y(this._box,t.min),this._box.style.width=i.x+"px",this._box.style.height=i.y+"px"},_finish:function(){this._moved&&(V(this._box),K(this._container,"leaflet-crosshair")),st(),di(),H(document,{contextmenu:De,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(e){if(!(e.which!==1&&e.button!==1)&&(this._finish(),!!this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(w(this._resetState,this),0);var t=new he(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(t).fire("boxzoomend",{boxZoomBounds:t})}},_onKeyDown:function(e){e.keyCode===27&&(this._finish(),this._clearDeferredResetState(),this._resetState())}});R.addInitHook("addHandler","boxZoom",ea),R.mergeOptions({doubleClickZoom:!0});var ta=we.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(e){var t=this._map,i=t.getZoom(),n=t.options.zoomDelta,r=e.originalEvent.shiftKey?i-n:i+n;t.options.doubleClickZoom==="center"?t.setZoom(r):t.setZoomAround(e.containerPoint,r)}});R.addInitHook("addHandler","doubleClickZoom",ta),R.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var ia=we.extend({addHooks:function(){if(!this._draggable){var e=this._map;this._draggable=new Ae(e._mapPane,e._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),e.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),e.on("zoomend",this._onZoomEnd,this),e.whenReady(this._onZoomEnd,this))}M(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){K(this._map._container,"leaflet-grab"),K(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var e=this._map;if(e._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var t=q(this._map.options.maxBounds);this._offsetLimit=le(this._map.latLngToContainerPoint(t.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(t.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;e.fire("movestart").fire("dragstart"),e.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(e){if(this._map.options.inertia){var t=this._lastTime=+new Date,i=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(i),this._times.push(t),this._prunePositions(t)}this._map.fire("move",e).fire("drag",e)},_prunePositions:function(e){for(;this._positions.length>1&&e-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var e=this._map.getSize().divideBy(2),t=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=t.subtract(e).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(e,t){return e-(e-t)*this._viscosity},_onPreDragLimit:function(){if(!(!this._viscosity||!this._offsetLimit)){var e=this._draggable._newPos.subtract(this._draggable._startPos),t=this._offsetLimit;e.x<t.min.x&&(e.x=this._viscousLimit(e.x,t.min.x)),e.y<t.min.y&&(e.y=this._viscousLimit(e.y,t.min.y)),e.x>t.max.x&&(e.x=this._viscousLimit(e.x,t.max.x)),e.y>t.max.y&&(e.y=this._viscousLimit(e.y,t.max.y)),this._draggable._newPos=this._draggable._startPos.add(e)}},_onPreDragWrap:function(){var e=this._worldWidth,t=Math.round(e/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,r=(n-t+i)%e+t-i,s=(n+t+i)%e-t-i,o=Math.abs(r+i)<Math.abs(s+i)?r:s;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=o}
1,_onDragEnd:function(e){var t=this._map,i=t.options,n=!i.inertia||e.noInertia||this._times.length<2;if(t.fire("dragend",e),n)t.fire("moveend");else{this._prunePositions(+new Date);var r=this._lastPos.subtract(this._positions[0]),s=(this._lastTime-this._times[0])/1e3,o=i.easeLinearity,h=r.multiplyBy(o/s),c=h.distanceTo([0,0]),f=Math.min(i.inertiaMaxSpeed,c),y=h.multiplyBy(f/c),T=f/(i.inertiaDeceleration*o),A=y.multiplyBy(-T/2).round();!A.x&&!A.y?t.fire("moveend"):(A=t._limitOffset(A,t.options.maxBounds),oe(function(){t.panBy(A,{duration:T,easeLinearity:o,noMoveStart:!0,animate:!0})}))}}});R.addInitHook("addHandler","dragging",ia),R.mergeOptions({keyboard:!0,keyboardPanDelta:80});var na=we.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(e){this._map=e,this._setPanDelta(e.options.keyboardPanDelta),this._setZoomDelta(e.options.zoomDelta)},addHooks:function(){var e=this._map._container;e.tabIndex<=0&&(e.tabIndex="0"),j(e,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),H(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var e=document.body,t=document.documentElement,i=e.scrollTop||t.scrollTop,n=e.scrollLeft||t.scrollLeft;this._map._container.focus(),window.scrollTo(n,i)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(e){var t=this._panKeys={},i=this.keyCodes,n,r;for(n=0,r=i.left.length;n<r;n++)t[i.left[n]]=[-1*e,0];for(n=0,r=i.right.length;n<r;n++)t[i.right[n]]=[e,0];for(n=0,r=i.down.length;n<r;n++)t[i.down[n]]=[0,e];for(n=0,r=i.up.length;n<r;n++)t[i.up[n]]=[0,-1*e]},_setZoomDelta:function(e){var t=this._zoomKeys={},i=this.keyCodes,n,r;for(n=0,r=i.zoomIn.length;n<r;n++)t[i.zoomIn[n]]=e;for(n=0,r=i.zoomOut.length;n<r;n++)t[i.zoomOut[n]]=-e},_addHooks:function(){j(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){H(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(e){if(!(e.altKey||e.ctrlKey||e.metaKey)){var t=e.keyCode,i=this._map,n;if(t in this._panKeys){if(!i._panAnim||!i._panAnim._inProgress)if(n=this._panKeys[t],e.shiftKey&&(n=E(n).multiplyBy(3)),i.options.maxBounds&&(n=i._limitOffset(E(n),i.options.maxBounds)),i.options.worldCopyJump){var r=i.wrapLatLng(i.unproject(i.project(i.getCenter()).add(n)));i.panTo(r)}else i.panBy(n)}else if(t in this._zoomKeys)i.setZoom(i.getZoom()+(e.shiftKey?3:1)*this._zoomKeys[t]);else if(t===27&&i._popup&&i._popup.options.closeOnEscapeKey)i.closePopup();else return;De(e)}}});R.addInitHook("addHandler","keyboard",na),R.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var aa=we.extend({addHooks:function(){j(this._map._container,"wheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){H(this._map._container,"wheel",this._onWheelScroll,this)},_onWheelScroll:function(e){var t=Cn(e),i=this._map.options.wheelDebounceTime;this._delta+=t,this._lastMousePos=this._map.mouseEventToContainerPoint(e),this._startTime||(this._startTime=+new Date);var n=Math.max(i-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(w(this._performZoom,this),n),De(e)},_performZoom:function(){var e=this._map,t=e.getZoom(),i=this._map.options.zoomSnap||0;e._stop();var n=this._delta/(this._map.options.wheelPxPerZoomLevel*4),r=4*Math.log(2/(1+Math.exp(-Math.abs(n))))/Math.LN2,s=i?Math.ceil(r/i)*i:r,o=e._limitZoom(t+(this._delta>0?s:-s))-t;this._delta=0,this._startTime=null,o&&(e.options.scrollWheelZoom==="center"?e.setZoom(t+o):e.setZoomAround(this._lastMousePos,t+o))}});R.addInitHook("addHandler","scrollWheelZoom",aa);var rs=600;R.mergeOptions({tapHold:P.touchNative&&P.safari&&P.mobile,tapTolerance:15});var ra=we.extend({addHooks:function(){j(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){H(this._map._container,"touchstart",this._onDown,this)},_onDown:function(e){if(clearTimeout(this._holdTimeout),e.touches.length===1){var t=e.touches[0];this._startPos=this._newPos=new N(t.clientX,t.clientY),this._holdTimeout=setTimeout(w(function(){this._cancel(),this._isTapValid()&&(j(document,"touchend",ne),j(document,"touchend touchcancel",this._cancelClickPrevent),this._simulateEvent("contextmenu",t))},this),rs),j(document,"touchend touchcancel contextmenu",this._cancel,this),j(document,"touchmove",this._onMove,this)}},_cancelClickPrevent:function e(){H(document,"touchend",ne),H(document,"touchend touchcancel",e)},_cancel:function(){clearTimeout(this._holdTimeout),H(document,"touchend touchcancel contextmenu",this._cancel,this),H(document,"touchmove",this._onMove,this)},_onMove:function(e){var t=e.touches[0];this._newPos=new N(t.clientX,t.clientY)},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_simulateEvent:function(e,t){var i=new MouseEvent(e,{bubbles:!0,cancelable:!0,view:window,screenX:t.screenX,screenY:t.screenY,clientX:t.clientX,clientY:t.clientY});i._simulated=!0,t.target.dispatchEvent(i)}});R.addInitHook("addHandler","tapHold",ra),R.mergeOptions({touchZoom:P.touch,bounceAtZoomLimits:!0});var sa=we.extend({addHooks:function(){M(this._map._container,"leaflet-touch-zoom"),j(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){K(this._map._container,"leaflet-touch-zoom"),H(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(e){var t=this._map;if(!(!e.touches||e.touches.length!==2||t._animatingZoom||this._zooming)){var i=t.mouseEventToContainerPoint(e.touches[0]),n=t.mouseEventToContainerPoint(e.touches[1]);this._centerPoint=t.getSize()._divideBy(2),this._startLatLng=t.containerPointToLatLng(this._centerPoint),t.options.touchZoom!=="center"&&(this._pinchStartLatLng=t.containerPointToLatLng(i.add(n)._divideBy(2))),this._startDist=i.distanceTo(n),this._startZoom=t.getZoom(),this._moved=!1,this._zooming=!0,t._stop(),j(document,"touchmove",this._onTouchMove,this),j(document,"touchend touchcancel",this._onTouchEnd,this),ne(e)}},_onTouchMove:function(e){if(!(!e.touches||e.touches.length!==2||!this._zooming)){var t=this._map,i=t.mouseEventToContainerPoint(e.touches[0]),n=t.mouseEventToContainerPoint(e.touches[1]),r
1=i.distanceTo(n)/this._startDist;if(this._zoom=t.getScaleZoom(r,this._startZoom),!t.options.bounceAtZoomLimits&&(this._zoom<t.getMinZoom()&&r<1||this._zoom>t.getMaxZoom()&&r>1)&&(this._zoom=t._limitZoom(this._zoom)),t.options.touchZoom==="center"){if(this._center=this._startLatLng,r===1)return}else{var s=i._add(n)._divideBy(2)._subtract(this._centerPoint);if(r===1&&s.x===0&&s.y===0)return;this._center=t.unproject(t.project(this._pinchStartLatLng,this._zoom).subtract(s),this._zoom)}this._moved||(t._moveStart(!0,!1),this._moved=!0),ue(this._animRequest);var o=w(t._move,t,this._center,this._zoom,{pinch:!0,round:!1},void 0);this._animRequest=oe(o,this,!0),ne(e)}},_onTouchEnd:function(){if(!this._moved||!this._zooming){this._zooming=!1;return}this._zooming=!1,ue(this._animRequest),H(document,"touchmove",this._onTouchMove,this),H(document,"touchend touchcancel",this._onTouchEnd,this),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))}});R.addInitHook("addHandler","touchZoom",sa),R.BoxZoom=ea,R.DoubleClickZoom=ta,R.Drag=ia,R.Keyboard=na,R.ScrollWheelZoom=aa,R.TapHold=ra,R.TouchZoom=sa,l.Bounds=U,l.Browser=P,l.CRS=Se,l.Canvas=Yn,l.Circle=Ti,l.CircleMarker=Et,l.Class=Pe,l.Control=ge,l.DivIcon=$n,l.DivOverlay=be,l.DomEvent=Pr,l.DomUtil=wr,l.Draggable=Ae,l.Evented=et,l.FeatureGroup=ke,l.GeoJSON=Le,l.GridLayer=ut,l.Handler=we,l.Icon=Ve,l.ImageOverlay=It,l.LatLng=F,l.LatLngBounds=he,l.Layer=ve,l.LayerGroup=Ue,l.LineUtil=Or,l.Map=R,l.Marker=Ct,l.Mixin=Nr,l.Path=Ie,l.Point=N,l.PolyUtil=jr,l.Polygon=$e,l.Polyline=Te,l.Popup=Rt,l.PosAnimation=En,l.Projection=Br,l.Rectangle=Qn,l.Renderer=Ce,l.SVG=mt,l.SVGOverlay=Vn,l.TileLayer=qe,l.Tooltip=Ot,l.Transformation=Xt,l.Util=Ha,l.VideoOverlay=Un,l.bind=w,l.bounds=le,l.canvas=Jn,l.circle=Ur,l.circleMarker=Gr,l.control=ht,l.divIcon=es,l.extend=m,l.featureGroup=Wr,l.geoJSON=Gn,l.geoJson=Kr,l.gridLayer=ts,l.icon=Fr,l.imageOverlay=qr,l.latLng=I,l.latLngBounds=q,l.layerGroup=Zr,l.map=Sr,l.marker=Hr,l.point=E,l.polygon=$r,l.polyline=Vr,l.popup=Xr,l.rectangle=as,l.setOptions=Z,l.stamp=g,l.svg=Xn,l.svgOverlay=Jr,l.tileLayer=Kn,l.tooltip=Qr,l.transformation=tt,l.version=p,l.videoOverlay=Yr;var ss=window.L;l.noConflict=function(){return window.L=ss,this},window.L=l}))})(_t,_t.exports)),_t.exports}var We=Ho();const ka=_s(We);function gt(u,d,l){return Object.freeze({instance:u,context:d,container:l})}function Vt(u,d){return d==null?function(p,m){const x=B.useRef(void 0);return x.current||(x.current=u(p,m)),x}:function(p,m){const x=B.useRef(void 0);x.current||(x.current=u(p,m));const w=B.useRef(p),{instance:z}=x.current;return B.useEffect(function(){w.current!==p&&(d(z,p,w.current),w.current=p)},[z,p,d]),x}}function Ba(u,d){B.useEffect(function(){return(d.layerContainer??d.map).addLayer(u.instance),function(){d.layerContainer?.removeLayer(u.instance),d.map.removeLayer(u.instance)}},[d,u])}function Go(u){return function(l){const p=Gt(),m=u(Ut(l,p),p);return Ia(p.map,l.attribution),Vi(m.current,l.eventHandlers),Ba(m.current,p),m}}function Uo(u,d){const l=B.useRef(void 0);B.useEffect(function(){if(d.pathOptions!==l.current){const m=d.pathOptions??{};u.instance.setStyle(m),l.current=m}},[u,d])}function Vo(u){return function(l){const p=Gt(),m=u(Ut(l,p),p);return Vi(m.current,l.eventHandlers),Ba(m.current,p),Uo(m.current,l),m}}function $o(u){function d(m,x){return gt(u(m),x)}const l=Vt(d),p=Zo(l);return Oa(p)}function Ko(u,d){const l=Vt(u),p=Wo(l,d);return Do(p)}function za(u,d){const l=Vt(u,d),p=Vo(l);return zo(p)}function qo(u,d){const l=Vt(u,d),p=Go(l);return Oa(p)}function Yo(u,d,l){const{opacity:p,zIndex:m}=d;p!=null&&p!==l.opacity&&u.setOpacity(p),m!=null&&m!==l.zIndex&&u.setZIndex(m)}const Jo=za(function({center:d,children:l,...p},m){const x=new We.CircleMarker(d,p);return gt(x,Ra(m,{overlayContainer:x}))},Ro);function Xo({bounds:u,boundsOptions:d,center:l,children:p,className:m,id:x,placeholder:w,style:z,whenReady:g,zoom:_,...C},S){const[O]=B.useState({className:m,id:x,style:z}
1),[ae,se]=B.useState(null),Z=B.useRef(void 0);B.useImperativeHandle(S,()=>ae?.map??null,[ae]);const vt=B.useCallback(Qe=>{if(Qe!==null&&!Z.current){const ie=new We.Map(Qe,C);Z.current=ie,l!=null&&_!=null?ie.setView(l,_):u!=null&&ie.fitBounds(u,d),g!=null&&ie.whenReady(g),se(Bo(ie))}},[]);B.useEffect(()=>()=>{ae?.map.remove()},[ae]);const $t=ae?je.createElement(Ui,{value:ae},p):w??null;return je.createElement("div",{...O,ref:vt},$t)}const Qo=B.forwardRef(Xo),el=za(function({positions:d,...l},p){const m=new We.Polygon(d,l);return gt(m,Ra(p,{overlayContainer:m}))},function(d,l,p){l.positions!==p.positions&&d.setLatLngs(l.positions)}),tl=qo(function({url:d,...l},p){const m=new We.TileLayer(d,Ut(l,p));return gt(m,p)},function(d,l,p){Yo(d,l,p);const{url:m}=l;m!=null&&m!==p.url&&d.setUrl(m)}),Ta=Ko(function(d,l){const p=new We.Tooltip(d,l.overlayContainer);return gt(p,l)},function(d,l,{position:p},m){B.useEffect(function(){const w=l.overlayContainer;if(w==null)return;const{instance:z}=d,g=C=>{C.tooltip===z&&(p!=null&&z.setLatLng(p),z.update(),m(!0))},_=C=>{C.tooltip===z&&m(!1)};return w.on({tooltipopen:g,tooltipclose:_}),w.bindTooltip(z),function(){w.off({tooltipopen:g,tooltipclose:_}),w._map!=null&&w.unbindTooltip()}},[d,l,m,p])}),il=$o(function(d){return new We.Control.Zoom(d)}),nl=[{name:"Lethbridge",prov:"AB",lat:49.69,lon:-112.83,solar:1330,wind:45},{name:"Medicine Hat",prov:"AB",lat:50.04,lon:-110.68,solar:1330,wind:44},{name:"Calgary",prov:"AB",lat:51.05,lon:-114.07,solar:1310,wind:35},{name:"Edmonton",prov:"AB",lat:53.55,lon:-113.49,solar:1240,wind:33},{name:"Estevan",prov:"SK",lat:49.13,lon:-103,solar:1290,wind:44},{name:"Swift Current",prov:"SK",lat:50.28,lon:-107.78,solar:1280,wind:45},{name:"Regina",prov:"SK",lat:50.45,lon:-104.62,solar:1250,wind:38},{name:"Saskatoon",prov:"SK",lat:52.13,lon:-106.67,solar:1230,wind:36},{name:"Brandon",prov:"MB",lat:49.85,lon:-99.95,solar:1280,wind:38},{name:"Winnipeg",prov:"MB",lat:49.9,lon:-97.14,solar:1275,wind:36},{name:"Thunder Bay",prov:"ON",lat:48.38,lon:-89.25,solar:1180,wind:32},{name:"Sudbury",prov:"ON",lat:46.49,lon:-80.99,solar:1150,wind:30},{name:"Toronto",prov:"ON",lat:43.65,lon:-79.38,solar:1160,wind:32},{name:"Ottawa",prov:"ON",lat:45.42,lon:-75.7,solar:1200,wind:32},{name:"Montreal",prov:"QC",lat:45.5,lon:-73.57,solar:1180,wind:33},{name:"Quebec City",prov:"QC",lat:46.81,lon:-71.21,solar:1140,wind:35},{name:"Saint John",prov:"NB",lat:45.27,lon:-66.07,solar:1130,wind:36},{name:"Halifax",prov:"NS",lat:44.65,lon:-63.58,solar:1150,wind:38},{name:"Sydney",prov:"NS",lat:46.14,lon:-60.19,solar:1130,wind:40},{name:"Charlottetown",prov:"PE",lat:46.24,lon:-63.13,solar:1140,wind:42},{name:"St. John's",prov:"NL",lat:47.56,lon:-52.71,solar:1e3,wind:42},{name:"Vancouver",prov:"BC",lat:49.28,lon:-123.12,solar:1100,wind:30},{name:"Victoria",prov:"BC",lat:48.43,lon:-123.37,solar:1100,wind:32},{name:"Prince George",prov:"BC",lat:53.92,lon:-122.75,solar:1080,wind:28},{name:"Whitehorse",prov:"YT",lat:60.72,lon:-135.05,solar:1050,wind:30},{name:"Yellowknife",prov:"NT",lat:62.45,lon:-114.37,solar:1100,wind:32},{name:"Iqaluit",prov:"NU",lat:63.75,lon:-68.52,solar:1050,wind:38}],al=[[49,-110],[49,-101.4],[60,-101.4],[60,-110]],pt={solar:{label:"Solar PV yield",unit:"kWh per kW of panel per year",unitShort:"kWh/kW/yr",field:"solar",min:1e3,max:1340,ramp:["#fff7d6","#fde68a","#fbbf24","#ea580c","#991b1b"],blurb:"Saskatchewan's southern border sits in the same top tier as southern Alberta and Manitoba, among the strongest solar resources in Canada.",sourceLabel:"NRCan PV Potential",sourceUrl:"https://natural-resources.canada.ca/energy-sources/renewable-energy/photovoltaic-potential-solar-resource-maps-canada"},wind:{label:"Wind capacity factor",unit:"% capacity factor at 100 m hub",unitShort:"% CF",field:"wind",min:28,max:46,ramp:["#ecfeff","#a5f3fc","#38bdf8","#1d4ed8","#4c1d95"],blurb:"South-central Saskatchewan ranks with southern Alberta and the Atlantic coast for wind capacity factor, among the country's best onshore wind resources.",sourceLabel:"Global Wind Atlas",sourceUrl:"https://globalwindatlas.info/"}};
1function rl(u,d,l){const p=se=>{const Z=se.replace("#","");return[parseInt(Z.slice(0,2),16),parseInt(Z.slice(2,4),16),parseInt(Z.slice(4,6),16)]},[m,x,w]=p(u),[z,g,_]=p(d),C=Math.max(0,Math.min(1,l)),S=Math.round(m+(z-m)*C),O=Math.round(x+(g-x)*C),ae=Math.round(w+(_-w)*C);return`rgb(${S}, ${O}, ${ae})`}function sl(u,d){const l=Math.max(0,Math.min(1,d)),p=u.length-1,m=Math.min(Math.floor(l*p),p-1),x=l*p-m;return rl(u[m],u[m+1],x)}function ol({height:u=460,defaultMetric:d="solar",className:l}){const[p,m]=je.useState(d),x=pt[p],w=Math.max(1,x.max-x.min),z=je.useMemo(()=>[...nl].sort((_,C)=>C[x.field]-_[x.field]),[x.field]),g=je.useRef(null);return je.useEffect(()=>{const _=g.current;_&&(ka.DomEvent.disableClickPropagation(_),ka.DomEvent.disableScrollPropagation(_))},[]),a.jsxs("div",{className:`grid gap-4 md:grid-cols-[minmax(0,1fr)_minmax(220px,260px)] ${l??""}`,children:[a.jsxs("div",{className:"relative min-w-0",children:[a.jsx("div",{ref:g,className:"absolute top-2 left-2 z-[1001] flex gap-1.5 rounded-md border border-border/70 bg-background/90 p-1 text-xs shadow-sm backdrop-blur-sm",onPointerDown:_=>_.stopPropagation(),children:Object.keys(pt).map(_=>{const C=p===_;return a.jsxs("button",{type:"button",onPointerDown:S=>S.stopPropagation(),onClick:S=>{S.stopPropagation(),m(_)},"aria-pressed":C,className:C?"inline-flex items-center gap-1.5 rounded px-2 py-1 border border-seva-primary bg-seva-50 text-seva-primary dark:bg-seva-900/30":"inline-flex items-center gap-1.5 rounded px-2 py-1 border border-transparent text-muted-foreground hover:border-border hover:text-foreground",children:[a.jsx("span",{className:"inline-block w-2.5 h-2.5 rounded-sm","aria-hidden":!0,style:{backgroundColor:pt[_].ramp[pt[_].ramp.length-1]}}),pt[_].label]},_)})}),p==="solar"?a.jsx("div",{className:"rounded-md overflow-hidden border border-border/60 bg-muted/10 flex items-center justify-center",style:{height:u},children:a.jsx("a",{href:"https://natural-resources.canada.ca/energy-sources/renewable-energy/photovoltaic-potential-solar-resource-maps-canada",target:"_blank",rel:"noreferrer",className:"block w-full h-full",title:"Open the source page on NRCan",children:a.jsx("img",{src:"/images/maps/nrcan-canada-pv-potential.jpg",alt:"Natural Resources Canada annual photovoltaic potential, south-facing latitude tilt, kWh per kW per year. Saskatchewan's southern half sits in the highest national class alongside southern Alberta and Manitoba.",className:"w-full h-full object-contain",loading:"lazy"})})}):a.jsx("div",{className:"rounded-md overflow-hidden border border-border/60",style:{height:u},children:a.jsxs(Qo,{center:[58,-96],zoom:3,minZoom:2,maxZoom:7,scrollWheelZoom:!1,zoomControl:!1,style:{height:"100%",width:"100%"},attributionControl:!0,children:[a.jsx(il,{position:"bottomright"}),a.jsx(tl,{url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",attribution:'© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>'}),a.jsx(el,{positions:al,pathOptions:{color:"#22c55e",weight:2.5,opacity:.95,fillColor:"#22c55e",fillOpacity:.08},children:a.jsxs(Ta,{sticky:!0,children:[a.jsx("strong",{children:"Saskatchewan"}),a.jsx("br",{}),"Subject of this atlas"]})}),z.map(_=>{const C=_[x.field],S=(C-x.min)/w,O=sl(x.ramp,S),ae=6+10*Math.max(0,Math.min(1,S)),se=_.prov==="SK";return a.jsx(Jo,{center:[_.lat,_.lon],radius:ae,pathOptions:{color:se?"#22c55e":"#1f2937",weight:se?2:.8,opacity:.95,fillColor:O,fillOpacity:.92},children:a.jsxs(Ta,{direction:"top",offset:[0,-4],children:[a.jsxs("strong",{children:[_.name,", ",_.prov]}),a.jsx("br",{}),C," ",x.unitShort]})},`${_.name}-${_.prov}`)})]})})]}),a.jsxs("aside",{className:"text-xs text-muted-foreground space-y-3",children:[a.jsxs("div",{className:"rounded-md border border-border/70 bg-muted/20 p-3 space-y-2",children:[a.jsxs("div",{children:[a.jsxs("p",{className:"font-semibold text-foreground text-sm leading-tight",children:[x.label," across Canada"]}),a.jsx("p",{className:"text-[11px]",children:x.unit})]}),p==="wind"&&a.jsxs("div",{children:[a.jsx("div",{className:"h-2 rounded","aria-hidden":!0,style:{background:`linear-gradient(to right, ${x.ramp.map((_,C,S)=>`${_} ${C/Math.max(1,S.length-1)*100}%`).join(", ")})`}}
1),a.jsxs("div",{className:"mt-1 flex justify-between text-[10px] tabular-nums",children:[a.jsx("span",{children:x.min.toLocaleString()}),a.jsx("span",{children:Math.round((x.min+x.max)/2).toLocaleString()}),a.jsx("span",{children:x.max.toLocaleString()})]})]}),a.jsx("p",{className:"text-[11px] leading-snug",children:x.blurb}),a.jsxs("p",{className:"text-[10px] italic",children:["Source:"," ",a.jsx("a",{href:x.sourceUrl,target:"_blank",rel:"noreferrer",className:"underline hover:text-foreground",children:x.sourceLabel}),"."," ",p==="solar"?"Map reproduced from NRCan; the colored legend (kWh/kW/yr at south-facing latitude tilt) is baked into the image. Click to open the source page.":"Marker size and color encode the published value at each city. Saskatchewan cities are outlined green."]})]}),a.jsxs("div",{className:"space-y-1 pt-2 border-t border-border/50",children:[a.jsx("p",{className:"font-semibold uppercase tracking-wide text-[9px] text-foreground",children:"Top 6 cities"}),a.jsx("ol",{className:"space-y-0.5 text-[11px]",children:z.slice(0,6).map((_,C)=>a.jsxs("li",{className:_.prov==="SK"?"flex justify-between font-semibold text-foreground":"flex justify-between",children:[a.jsxs("span",{children:[C+1,". ",_.name,", ",_.prov]}),a.jsxs("span",{className:"tabular-nums",children:[_[x.field]," ",x.unitShort]})]},`${_.name}-${_.prov}`))})]})]})]})}const v={saskpowerAnnualReport2025_26:G.skAnnualPeakMw.url,saskpowerAnnualReport2024_25Intensity:G.skSupplyCarbonIntensity.url,saskpowerSectorConsumption:G.skSectorConsumption.url,cerSkProfile:G.cerSaskatchewanProfile.url,ltsp:G.saskpowerLtsp.url,saidi:G.saskpowerSaidi.url,bd3:G.bd3Ccs.url,cleanElectricityRegulations:G.cleanElectricityRegulations.url,cleanFuelRegulations:G.cleanFuelRegulations.url,sustainableJobs:G.sustainableJobsAct.url,fnpa:G.firstNationsPowerAuthority.url,ilgp:G.indigenousLoanGuarantee.url,irena:G.irenaRenewableCosts2025.url,bnef:G.bnef2025BatteryPrices.url,cec:G.cleanEnergyCanadaJobs.url,gemBd3:G.gemBd3CumulativeShortfall.url,gemCoalExtension:G.gemSaskPowerCoalExtension.url,ieaElectricity2026:G.ieaElectricity2026.url,ieaWeoAps2025:G.ieaWeoAps2025.url,emberElectrification:G.emberElectrificationImperative.url,hislopMoleculesVsElectrons:G.hislopMoleculesVsElectrons.url,everythingElectricRosenow:G.everythingElectricRosenow.url,neepCcashp:G.neepCcashp.url,nrcanCcashp:G.nrcanCcasphPerformance.url,saskpowerCoalLifeExtension:"https://www.620ckrm.com/2026/03/27/saskpower-sheds-light-on-timeline-cost-for-coal-life-extension/",pipelineOnlineCoalRefurb:"https://pipelineonline.ca/the-coal-refurbishment-plan-laid-out-by-year-until-2035/",jsgsEnergyPolicy2026:"https://www.youtube.com/watch?v=fSYzIaDupZg",srrpSaskpower2026Application:"https://saskratereview.ca/rate-reviews/saskpower/saskpower-2026-and-2027-rate-application",cbcCoalRefurbTripled:"https://www.cbc.ca/news/canada/saskatchewan/refurbishing-coal-plants-2-6-billion-9.7147583",cbcCoal26B:"https://www.cbc.ca/news/canada/saskatchewan/sask-coal-power-cost-9.7191232",cbc2026fSupplyPlan:"https://www.cbc.ca/news/canada/saskatchewan/sask-saskpower-coal-refurbishment-9.7198807",canadaAlbertaImplementationAgreement:"https://www.pm.gc.ca/en/news/backgrounders/2026/05/15/implementation-agreement-canada-alberta-memorandum-understanding",energyMixCoal900M:"https://www.theenergymix.com/saskatchewan-cites-energy-security-in-900m-coal-refurbishment/",saskAuditorSaskPower2024:"https://auditor.sk.ca/pub/publications/public_reports/2024/Volume%202/ch-14----saskpowertransitioning-to-low-and-non-emitting-energy-sources.pdf",cerSor2024_263:"https://laws-lois.justice.gc.ca/eng/regulations/SOR-2024-263/",federalCarbonBenchmark2030:"https://www.canada.ca/en/environment-climate-change/services/climate-change/pricing-pollution-how-it-will-work/carbon-pollution-pricing-federal-benchmark-information/federal-benchmark-2023-2030.html",saskpowerSmrEngagement:"https://engage.saskpower.com/planning-for-nuclear-power",wnnDarlingtonBudget:"https://www.world-nuclear-news.org/articles/what-is-the-budget-for-canadas-first-smr-project",hawaiiPucPbr:"https://puc.hawaii.gov/energy/pbr/",hawaiiPucPbrOverview:"https://puc.hawaii.gov/energy/pbr/overview-of-the-pbr-framework/",rmiHawaiiPbr:"https://rmi.org/five-lessons-from-hawaiis-groundbreaking-pbr-framework/",brattleRooftopUtility:"https://www.brattle.com/wp-content/uploads/2017/10/7626_comparing_the_costs_of_utility-scale_and_residential-scale_pv_-_factsheet.pdf",hawaiianElectricGie:"https://www.hawaiianelectric.com/about-us/performance-scorecards-and-metrics/grid-investment-efficiency",nspmFramework:"https://www.nationalenergyscreeningproject.org/national-standard-practice-manual/",pipelineOnlineSkWindCollapse:"https://pipelineonline.ca/for-five-days-in-a-row-saskpower-saw-wind-generation-hit-zero-for-part-of-the-day/",albertaMsaJan2024:"https://www.albertamsa.c
1a/assets/Documents/January-and-April-2024-Event-Report.pdf",pew2026:"https://www.pew.org/en/research-and-analysis/reports/2026/04/distributed-energy-can-unleash-the-resilient-affordable-grid-of-the-future",e3DrAccreditation:Es.e3DemandResponseAccreditationSpp.url,brattleRealReliability:"https://www.brattle.com/wp-content/uploads/2023/04/Real-Reliability-The-Value-of-Virtual-Power_5.3.2023.pdf",woodMacVppReport2025:"https://www.woodmac.com/press-releases/virtual-power-plant-capacity-expands-13.7-year-over-year-to-reach-37.5-gw",woodMacDerOutlook2024:"https://www.woodmac.com/reports/power-markets-us-distributed-energy-resource-der-outlook-2024-150283684",eeiCapex2025:"https://www.eei.org/-/media/Project/EEI/Documents/Issues-and-Policy/Finance-And-Tax/IndustryCapexReport.pdf",texasSb1202:"https://legiscan.com/TX/bill/SB1202/2025",nrcanPoweringCanadaStrong:G.federalPoweringCanadaStrong.url};function k({href:u,label:d}){return a.jsx("a",{href:u,target:"_blank",rel:"noopener noreferrer",title:d||"View source","aria-label":d?`Source: ${d}`:"View source",className:"text-muted-foreground/60 hover:text-seva-primary transition-colors",style:{fontSize:"0.6em",verticalAlign:"super",lineHeight:1},children:a.jsx("span",{"aria-hidden":"true",children:"↗"})})}const ll=[{title:"Public ownership",description:"SaskPower is owned by the people of Saskatchewan. First Nations, municipalities, co-ops, and renters all have a seat at the table when the public utility is the platform.",to:ee.EducationFutureGridOwnershipRoute.to,icon:Lo,accent:"text-blue-600 dark:text-blue-400"},{title:"Industrial anchor layer",description:"Industrial, oilfield, and commercial customers drive roughly three-quarters of SK electricity sales. Large flexible users are the biggest single lever for reliability and affordability gains.",to:ee.EducationFutureGridIndustrialRoute.to,icon:Aa,accent:"text-slate-700 dark:text-slate-300"},{title:"Distributed generation",description:"Farmers, community solar co-ops, rooftop homeowners, and First Nations projects generating power where it is used and selling the surplus.",to:ee.EducationFutureGridDistributedRoute.to,icon:Co,accent:"text-yellow-600 dark:text-yellow-400"},{title:"Winter reliability",description:"Forecasted virtual power plants, cold-climate heat pumps, and smart EV charging carry a Saskatchewan January with far fewer peaker hours, shrinking the residual gas margin as they scale.",to:ee.EducationFutureGridWinterRoute.to,icon:ys,accent:"text-sky-600 dark:text-sky-400"},{title:"Firm power and storage",description:"Long-duration storage, salt-cavern CAES, interties, firmed hydro, a neutral read on small modular reactors, and a deep-geothermal pilot worth funding.",to:ee.EducationFutureGridFirmPowerRoute.to,icon:Eo,accent:"text-emerald-600 dark:text-emerald-400"},{title:"Economic transformation",description:"Clean energy jobs, bulk procurement savings, Indigenous equity financing, resource export as value added, and full-scenario cost modelling.",to:ee.EducationFutureGridEconomicRoute.to,icon:Zi,accent:"text-seva-primary"},{title:"The networked grid",description:"The architectural layer that goes on top of the conventional grid the other six pillars build. Distributed buffers, galvanic-isolated domains, layered hierarchies, and open protocols.",to:ee.EducationFutureGridNetworkedRoute.to,icon:Wi,accent:"text-purple-600 dark:text-purple-400"}],zi=[{label:"Industrial (Power)",gwh:b.skSalesGwh.power,hex:"#334155"},{label:"Oilfield",gwh:b.skSalesGwh.oilfield,hex:"#64748b"},{label:"Commercial",gwh:b.skSalesGwh.commercial,hex:"#0ea5e9"},{label:"Residential",gwh:b.skSalesGwh.residential,hex:"#22c55e"},{label:"Farm",gwh:b.skSalesGwh.farm,hex:"#f59e0b"},{label:"Reseller",gwh:b.skSalesGwh.reseller,hex:"#a855f7"}],Da=1500,Za=530,Wa=200,hl=.6,cl=.4,dl=Math.round(Da*(hl*Gi+cl*Ft)),$i=[{label:"Pillar 1: Transformer-level flex",mw:60,hex:"#2563eb",basis:"3 kW passive transformer flex × 20,000 first-decade nodes"},{label:"Pillar 2: Industrial flexibility",mw:200,hex:"#475569",basis:"Default scenario in the Industrial pillar's three-layer balancing chart"},{label:"Pillar 3: Distributed generation (firm at winter peak)",mw:dl,hex:"#22c55e",basis:`≈${Da.toLocaleStr
1ing()} MW first-decade distributed solar+wind nameplate (farm, rooftop, community, school) × winter capacity credit (solar ${(Gi*100).toFixed(0)}%, wind ${(Ft*100).toFixed(0)}%, 60/40 split). Its energy value is far larger; dispatchable capacity is counted in Pillar 4 to avoid double-counting.`},{label:"Pillar 4: Winter VPP + V2G + heat-pump pre-heat (firm-equivalent)",mw:Wa,hex:"#06b6d4",basis:`100,000 participating households derated to firm-equivalent at the winter peak, the Winter pillar's convention; the same cohort's raw dispatchable shed is ~${Za} MW (ForecastedVppCalculator default)`},{label:"Pillar 5: Firm power, storage, intertie",mw:b.assets.basinElectricIntertieMw+200+300,hex:"#10b981",basis:`Basin Electric Tande-Wheelock intertie ${b.assets.basinElectricIntertieMw} MW (sized to the project sheet) plus 500 MW of scenario utility-scale BESS and A-CAES, sized to the Hydrostor Silver City 200 MW commercial deployment as the anchor`}],Fi=$i.reduce((u,d)=>u+d.mw,0),Ht=[{label:"Existing SaskPower hydro (retained)",mw:b.skAvailableCapacityMw.skOwnedHydro,hex:"#0e7490",basis:"Five SaskPower-owned stations: E.B. Campbell 294, Nipawin 253, Coteau Creek 186, Island Falls 111, Athabasca system 19"},{label:"Manitoba Hydro import PPA (retained)",mw:b.skAvailableCapacityMw.manitobaHydroPpa,hex:"#1e3a8a",basis:'Existing intertie purchase commitment, included in the SK "hydro available" line'}],Ki=Math.round(b.skAvailableCapacityMw.wind*.1),ul=Fi+Ht.reduce((u,d)=>u+d.mw,0)+Ki,Fa=Math.max(0,b.skAnnualPeakMw-ul),Hi=[{label:"Existing wind firm at peak (capacity credit)",mw:Ki,hex:"#64748b",basis:`${b.skAvailableCapacityMw.wind} MW SK wind nameplate × ~10% winter capacity credit (SaskPower IRP convention)`},{label:"Remainder carried by existing gas (transition)",mw:Fa,hex:"#f59e0b",basis:`Computed as the remainder to today's ${b.skAnnualPeakMw.toLocaleString()} MW peak after every other segment, so the stack closes by construction. Residual gas peakers, demand response, and contingency margin held during the transition decade; declines as the pillar stack scales.`}],Re=[...$i,...Ht,...Hi],Xe=[{pillar:"Public ownership",fullLabel:"Public ownership / transformer microgrids",shortLabel:"Public ownership / microgrids",lowCadM:300,highCadM:800,hex:"#2563eb",basis:"First-decade 1,000-node transformer-microgrid build at end-of-life retrofit. Offset by avoided outage costs on the worst rural feeders."},{pillar:"Winter reliability",fullLabel:"Winter reliability (VPP, V2G, heat-pump pre-heat)",shortLabel:"Winter reliability (VPP / V2G)",lowCadM:50,highCadM:300,hex:"#06b6d4",basis:"Program-scale rollout over a decade. The federal ZETF and CIB envelopes are designed for exactly this work."},{pillar:"Firm power and storage",fullLabel:"Firm power and storage (CAES, BESS)",shortLabel:"Firm power & storage",lowCadM:200,highCadM:500,hex:"#10b981",basis:"One purpose-built CAES plant in the Prairie Evaporite, in the same order of magnitude as one Boundary Dam coal-unit refurbishment."},{pillar:"Networked grid (pilot)",fullLabel:"Networked grid pilot",shortLabel:"Networked grid (pilot)",lowCadM:10,highCadM:30,hex:"#a855f7",basis:"Proposed Saskatoon Light and Power transformer-microgrid demonstration (SL&P is an independent municipal utility; this pilot would require their own initiative under their pre-Power Corporation Act authority). The larger architecture rides on transformer end-of-life capital cycles SaskPower would spend regardless."}],fl=Xe.reduce((u,d)=>u+d.lowCadM,0),ml=Xe.reduce((u,d)=>u+d.highCadM,0),La=.5,Ca=b.ltsp.windSolarAddMwBy2035*1e3*(La*ja+(1-La)*Ma)/1e9,Di=220,Ea="Pillar additions + existing low-carbon retained",Wt=(()=>{const u=[];let d=0;for(const l of Re)u.push(d+l.mw/2),d+=l.mw;return u})();function pl(){const u=b.skAnnualPeakMw,d=[-24,-46,-68],l=(u+500)*.09,p=Re.map((_,C)=>({seg:_,i:C})).filter(({seg:_})=>_.mw<Di).sort((_,C)=>Wt[_.i]-Wt[C.i]),m=[],x=new Map;for(const{i:_}of p){const C=Wt[_],S=C-l/2;let O=m.findIndex(ae=>S>=ae);O===-1&&(O=Math.min(m.length,d.length-1),m.push(0)),m[O]=C+l/2,x.set(_,O)}const w=Re.flatMap((_,C)=>{if(_.mw>=Di)return[];const S=x.get(C)??0;
1return[{x:Wt[C],y:Ea,marker:{size:3,fillColor:_.hex,strokeColor:_.hex,strokeWidth:1},label:{text:`${_.mw} MW`,borderColor:_.hex,borderWidth:1,offsetY:d[S],style:{color:"#fff",background:_.hex,fontSize:"10px",fontWeight:600,padding:{top:2,bottom:2,left:6,right:6}}}}]}),z={chart:{type:"bar",stacked:!0,toolbar:{show:!1},foreColor:"hsl(var(--muted-foreground))"},plotOptions:{bar:{horizontal:!0,borderRadius:4,barHeight:"42%"}},stroke:{width:1,colors:["transparent"]},dataLabels:{enabled:!0,formatter:(_,C={})=>{const S=C.seriesIndex!=null?Re[C.seriesIndex]:void 0;return S&&S.mw<Di?"":`${Math.round(_)} MW`},style:{fontSize:"11px",fontWeight:600}},xaxis:{categories:[Ea],labels:{formatter:_=>`${_} MW`},max:Math.ceil(u/500)*500+500},yaxis:{labels:{show:!1}},tooltip:{shared:!0,intersect:!1,y:{formatter:_=>`${_.toLocaleString()} MW`}},annotations:{points:w,xaxis:[{x:u,strokeDashArray:4,borderColor:"#dc2626",borderWidth:2,label:{orientation:"horizontal",text:`Current SK peak: ${u.toLocaleString()} MW`,position:"top",offsetY:-4,style:{color:"#fff",background:"#dc2626",fontSize:"11px",fontWeight:600,padding:{top:4,bottom:4,left:8,right:8}}}}]},colors:Re.map(_=>_.hex),legend:{position:"bottom",fontSize:"12px"},grid:{show:!1,padding:{left:12,right:32,top:80,bottom:8}}},g=Re.map(_=>({name:_.label,data:[_.mw]}));return{options:z,series:g}}function _l(){const u={chart:{type:"rangeBar",toolbar:{show:!1},foreColor:"hsl(var(--muted-foreground))",animations:{enabled:!1}},plotOptions:{bar:{horizontal:!0,barHeight:"55%",borderRadius:4}},dataLabels:{enabled:!0,formatter:l=>Array.isArray(l)&&l.length===2?`$${l[0]}M to $${l[1]}M`:"",style:{fontSize:"10px",fontWeight:600,colors:["#fff"]}},xaxis:{title:{text:"Capital cost (CAD millions, first decade)"},labels:{formatter:l=>`$${Math.round(Number(l))}M`},max:900},yaxis:{labels:{style:{fontSize:"11px"}}},legend:{show:!1},tooltip:{shared:!1,intersect:!0,custom:({dataPointIndex:l})=>{const p=Xe[l];return p?`<div style="padding:8px 12px;font-size:12px;line-height:1.4;max-width:300px;">
2          <div style="font-weight:600;margin-bottom:4px">${p.fullLabel}</div>
3          <div style="color:hsl(var(--muted-foreground));margin-bottom:4px">$${p.lowCadM}M to $${p.highCadM}M (first-decade range)</div>
4          <div>${p.basis}</div>
5        </div>`:""}},colors:Xe.map(l=>l.hex),grid:{borderColor:"hsl(var(--border))",strokeDashArray:3}},d=[{name:"Capital range",data:Xe.map(l=>({x:l.shortLabel,y:[l.lowCadM,l.highCadM],fillColor:l.hex}))}];return{options:u,series:d}}function gl(){const u={chart:{type:"bar",stacked:!0,stackType:"100%",toolbar:{show:!1},foreColor:"hsl(var(--muted-foreground))"},plotOptions:{bar:{horizontal:!0,borderRadius:4,barHeight:"60%"}},stroke:{width:1,colors:["transparent"]},dataLabels:{enabled:!0,formatter:l=>`${Math.round(l)}%`,style:{fontSize:"12px",fontWeight:600}},xaxis:{categories:[`SK ${b.skFiscalYearLabel} sales`],labels:{formatter:l=>`${l}%`},title:{text:"Share of Saskatchewan electricity sales"}},yaxis:{labels:{show:!1},title:{text:`${b.skFiscalYearLabel} annual sales`}},tooltip:{shared:!0,intersect:!1,followCursor:!0,y:{formatter:(l,{seriesIndex:p})=>{const m=zi[p];return m?`${m.gwh.toLocaleString()} GWh`:`${l} GWh`}}},colors:zi.map(l=>l.hex),legend:{position:"bottom",fontSize:"13px"},grid:{show:!1,padding:{left:12,right:12}}},d=zi.map(l=>({name:l.label,data:[l.gwh]}));return{options:u,series:d}}function ch(){const{options:u,series:d}=gl(),l=pl(),p=_l(),m=B.useMemo(()=>{const g=b.skSalesGwh.power+b.skSalesGwh.oilfield+b.skSalesGwh.commercial;return Math.round(g/b.skSalesGwh.total*100)},[]),{data:x}=gs(Ps,{province:"Saskatchewan"}),w=x?.carbonIntensityGCO2KWH!=null?Math.round(x.carbonIntensityGCO2KWH):null,z=x?.datetime!=null?new Date(x.datetime).toLocaleString("en-CA",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}):null;return a.jsxs(Ts,{title:"Saskatchewan's public energy future",description:"A distributed, participatory grid for economic strength, reliability, and reconciliation. Seven pillars, interactive scenarios, primary sources.",pageId:"education-future-grid",enableComments:!1,breadcrumbs:[{label:"Home",href:"/"},{label:"Education",href:"/education"},{label:"Future grid",isCurrentPage:!0}],socialMeta:{title:"The future grid: Saskatchewan's public energy future",description:"Seven-pillar whitepaper on how a publicly owned Saskatchewan grid can serve ratepayers, First Nations, municipalities, farmers, and industry.",tags:["energy policy","Saskatchewan","grid","renew
5ables","SaskPower"],section:"Education"},children:[a.jsx(Ls,{icon:a.jsx(Zi,{className:"w-10 h-10 text-seva-primary dark:text-seva-400"}),title:a.jsxs(a.Fragment,{children:[a.jsx("span",{className:"text-gradient-seva",children:"The future grid."})," ",a.jsx("span",{className:"text-foreground",children:"A pragmatic systems pathway for Saskatchewan."})]}),description:"Saskatchewan owns its electricity system through SaskPower. This whitepaper lays out how a distributed, participatory grid can deliver reliability, affordability, industrial competitiveness, and reconciliation, and how that path works whether the small modular reactor lands on time, slips a decade, or never arrives at all.",preTitle:a.jsx(vs,{variant:"outline",className:"mb-4",children:"Seven-pillar whitepaper"})}),a.jsxs(wo,{className:Cs,children:[a.jsx(po,{}),a.jsx(X,{id:"summary",className:"card-seva border-seva-primary/60 bg-gradient-to-br from-seva-50/60 to-transparent dark:from-seva-900/20 dark:to-transparent shadow-seva mb-6 scroll-mt-20",children:a.jsxs(Q,{className:"pt-6 space-y-5",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(wa,{className:"w-5 h-5 text-seva-primary"}),a.jsx("p",{className:"font-semibold text-foreground",children:"Executive summary"}),a.jsx("span",{className:"ml-auto text-xs text-muted-foreground",children:"~4 min read"})]}),a.jsx("p",{className:"text-seva-body",children:"Saskatchewan will electrify either way. The choice is between a fuel-heavy centralised rebuild and a publicly owned, distributed, winter-reliable system that lowers exposure to fuel costs and keeps more value inside the province."}),a.jsxs("div",{children:[a.jsx("p",{className:"font-semibold text-foreground mb-2 text-sm uppercase tracking-wide",children:"The argument in five claims"}),a.jsxs("ol",{className:"space-y-2 text-sm text-seva-body list-decimal list-outside ml-5 marker:text-seva-primary marker:font-semibold",children:[a.jsxs("li",{children:[a.jsx("strong",{className:"text-foreground",children:"Electrification is an efficiency and affordability story first."})," ","A modern EV converts"," ",Math.round(b.efficiency.evBatteryToWheelsLow*100)," ","to"," ",Math.round(b.efficiency.evBatteryToWheelsHigh*100)," ","percent of battery energy into motion against"," ",Math.round(b.efficiency.iceTankToWheelsLow*100)," ","to"," ",Math.round(b.efficiency.iceTankToWheelsHigh*100)," ","percent for an internal-combustion drivetrain; a cold-climate heat pump delivers two to three units of heat per unit of electricity it draws."]}),a.jsxs("li",{children:[a.jsx("strong",{className:"text-foreground",children:"Saskatchewan’s resource base and Crown utility structure are advantages."})," ","Top-tier solar and wind, a publicly accountable utility, an industrial-heavy load profile, and a winter-peaked demand curve all line up. The Crown structure that built the existing grid is the same one that can finance the next."]}),a.jsxs("li",{children:[a.jsx("strong",{className:"text-foreground",children:"The status quo already commits ratepayers to major spend."})," ","Saskatchewan’s all-pathway capital envelope through 2050 sits above"," ",`$${(Mi/1e9).toFixed(0)}`," ","billion in the province’s own published figures. The June 2025 coal-extension directive alone has placed $",(Ai/1e9).toFixed(1)," ","billion of refurbishment capex on the existing fleet rather than on transition infrastructure."]}),a.jsxs("li",{children:[a.jsx("strong",{className:"text-foreground",children:"No single technology solves this; the seven pillars work as a stack."})," ","Public ownership, an industrial-anchor flex layer, distributed household generation, winter-reliability dispatch, firm clean power, rate-design and capital reform, and a networked architecture on top. They stack; none alone is sufficient."]}),a.jsxs("li",{children:[a.jsx("strong",{className:"text-foreground",children:"Federal policy sets the frame, but Saskatchewan still controls most build choices."})," ","Powering Canada Strong sets envelopes and timelines;
5 the LTSP and SRRP processes are where Saskatchewan-specific direction is set. This whitepaper marks where the two align and where they diverge."]})]})]}),a.jsxs("div",{children:[a.jsx("p",{className:"font-semibold text-foreground mb-2 text-sm uppercase tracking-wide",children:"Where to start"}),a.jsxs("dl",{className:"space-y-2 text-sm text-seva-body",children:[a.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-2",children:[a.jsx("dt",{className:"font-semibold text-seva-primary tabular-nums",children:"5 min"}),a.jsxs("dd",{children:["This summary +"," ",a.jsx("a",{href:"#roadmap",className:"text-seva-primary hover:underline",children:"the cross-pillar roadmap"})," ","+"," ",a.jsx("a",{href:"#sectors",className:"text-seva-primary hover:underline",children:"the energy-flow Sankey"}),"."]})]}),a.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-2",children:[a.jsx("dt",{className:"font-semibold text-seva-primary tabular-nums whitespace-nowrap",children:"30 min, general reader"}),a.jsxs("dd",{children:["Add the"," ",a.jsx($,{to:ee.EducationFutureGridDistributedRoute.to,className:"text-seva-primary hover:underline",children:"Distributed"}),","," ",a.jsx($,{to:ee.EducationFutureGridWinterRoute.to,className:"text-seva-primary hover:underline",children:"Winter"}),", and"," ",a.jsx($,{to:ee.EducationFutureGridEconomicRoute.to,className:"text-seva-primary hover:underline",children:"Economic"})," ","pillars."]})]}),a.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-2",children:[a.jsx("dt",{className:"font-semibold text-seva-primary tabular-nums whitespace-nowrap",children:"30 min, policy or utility reader"}),a.jsxs("dd",{children:["Add the"," ",a.jsx($,{to:ee.EducationFutureGridIndustrialRoute.to,className:"text-seva-primary hover:underline",children:"Industrial"}),","," ",a.jsx($,{to:ee.EducationFutureGridFirmPowerRoute.to,className:"text-seva-primary hover:underline",children:"Firm Power"}),", and"," ",a.jsx($,{to:ee.EducationFutureGridEconomicRoute.to,className:"text-seva-primary hover:underline",children:"Economic"})," ","pillars."]})]}),a.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-2",children:[a.jsx("dt",{className:"font-semibold text-seva-primary tabular-nums",children:"2 hours"}),a.jsxs("dd",{children:["All"," ",a.jsx("a",{href:"#pillars",className:"text-seva-primary hover:underline",children:"seven pillars"})," ","in order."]})]}),a.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-2",children:[a.jsx("dt",{className:"font-semibold text-seva-primary tabular-nums",children:"One page"}),a.jsxs("dd",{children:[a.jsx($,{to:ee.EducationFutureGridPrintRoute.to,className:"text-seva-primary hover:underline",children:"Read the whole plan on one page"}),", print-friendly for saving or sharing."]})]})]})]}),a.jsxs(_o,{title:"About this whitepaper",children:[a.jsx("p",{children:"SEVA started out focused on electric vehicles. The public conversation around EVs is in practice a conversation about the electricity grid, the rare-earth supply chain, lifecycle carbon accounting, and the economics of every fuel an EV displaces. To answer on solid ground we had to learn the rest of the system around the car."}),a.jsxs("p",{children:["This whitepaper is what we learned. SEVA is a volunteer association, not an authority. Every number on every pillar page carries a citation. If a source is wrong, missing, or stronger than what we cited,"," ",a.jsx("a",{href:xs,className:"text-seva-primary hover:underline",children:"tell us"})," ","and we will revise."]}),a.jsx("p",{children:"The goal is not to win an argument. The goal is to help Saskatchewan meet the demands of the next twenty years in the most economical way the evidence supports, to build on where technology and investment are already heading, and to do it in a way that leaves the everyday person (the ratepayer, the farmer, the renter, the band member, the small-business owner) with more choice, more ownership, and a smaller bill than a centrally-planned alternative would."}),a.jsx("p",{children:"The whitepaper proposes one path, not the only one. Diversity in generation is a strength. The pillars are categories of resource and policy, not a fixed sequence; Saskatchewan can weight and sequence them differently as political and capital cycles allow, and a specific technology inside any pillar can be swapped for a better one. What the physics does not allow is leaning on a single pillar: covering winter energy, firm capacity at the peak, and the funding to build both takes a combination, not a favourite. That is the sense in which no one pillar is sufficient on its own; it is not a claim that all seven must arrive together or in order. The structure is 
5what we are proposing; the order and emphasis are flexible. SEVA began with the car, and the whitepaper closes where it started. The grid described across the pillars that follow is the grid a just EV transition for Saskatchewan actually needs."})]})]})}),a.jsx("section",{id:"roadmap",className:"mb-10 scroll-mt-20",children:a.jsx(go,{})}),a.jsxs("nav",{"aria-label":"Jump to section",className:"mb-10 rounded-lg border border-border/60 bg-muted/30 px-3 py-2 text-xs text-muted-foreground",children:[a.jsx("span",{className:"font-semibold text-foreground mr-2",children:"Jump to:"}),[{href:"#today",label:"Today"},{href:"#sectors",label:"Sectors"},{href:"#pillars",label:"Seven pillars"},{href:"#electrification",label:"Electrification"},{href:"#federal-plan",label:"Federal plan"},{href:"#ltsp",label:"vs SaskPower's plan"},{href:"#cost-of-inaction",label:"Coal path costs"},{href:"#pillar-stack",label:"How pillars sum"},{href:"#pillars-architecture",label:"Architecture"},{href:"#objections",label:"Objections"},{href:"#dependencies",label:"Dependencies"},{href:"#outcomes",label:"Outcomes"},{href:"#take-action",label:"Take action"},{href:"#sources",label:"Sources"}].map((g,_,C)=>a.jsxs(je.Fragment,{children:[a.jsx("a",{href:g.href,className:"hover:text-seva-primary hover:underline",children:g.label}),_<C.length-1?a.jsx("span",{className:"mx-2 text-border",children:"·"}):null]},g.href))]}),a.jsxs("aside",{className:"mb-6 rounded-lg border border-border/70 bg-muted/20 px-4 py-3 text-xs text-foreground/75 leading-relaxed","aria-label":"Note on SaskPower staff",children:[a.jsx("span",{className:"font-medium text-foreground",children:"A note on SaskPower."})," ","This whitepaper is a critique of provincial policy direction, not of the engineers, line crews, planners, and operators who keep the grid running. Every scenario in the pillars that follow assumes the same workforce, expanded and redeployed. The disagreement is with directives that constrain what that workforce can build next, not with the people executing them."]}),a.jsxs("section",{id:"today",className:"mb-12 scroll-mt-20",children:[a.jsxs("div",{className:"flex items-center gap-3 mb-6",children:[a.jsx(Je,{className:"w-6 h-6 text-seva-primary"}),a.jsx("h2",{className:"text-2xl sm:text-3xl font-bold text-seva-section",children:"Where Saskatchewan stands today"})]}),a.jsx(_e,{className:"mb-6"}),a.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 items-stretch",children:[a.jsx(X,{className:"card-seva hover-lift h-full border-border/60 shadow-sm transition-all hover:shadow-md group",children:a.jsxs(Q,{className:"pt-6 h-full flex flex-col group-hover:bg-seva-50/30 dark:group-hover:bg-seva-900/20 transition-colors",children:[a.jsxs("div",{className:"flex items-start gap-2 mb-3 text-muted-foreground min-h-[2.5rem]",children:[a.jsx(Je,{className:"w-5 h-5 text-seva-primary mt-0.5 shrink-0 group-hover:scale-110 transition-transform"}),a.jsx("p",{className:"text-[10px] font-medium uppercase tracking-wider leading-snug",children:"Annual peak load"})]}),a.jsxs("p",{className:"text-3xl font-bold text-foreground leading-tight",children:[b.skAnnualPeakMw.toLocaleString(),a.jsx("span",{className:"text-base font-semibold text-muted-foreground ml-1",children:"MW"}),a.jsx(k,{href:v.saskpowerAnnualReport2025_26,label:"SaskPower 2025-26 Annual Report"})]}),a.jsxs("p",{className:"text-xs text-muted-foreground mt-auto pt-2",children:["Winter-driven, ",b.skFiscalYearLabel]})]})}),a.jsx(X,{className:"card-seva hover-lift h-full border-border/60 shadow-sm transition-all hover:shadow-md group",children:a.jsxs(Q,{className:"pt-6 h-full flex flex-col group-hover:bg-seva-50/30 dark:group-hover:bg-seva-900/20 transition-colors",children:[a.jsxs("div",{className:"flex items-start gap-2 mb-3 text-muted-foreground min-h-[2.5rem]",children:[a.jsx(Zi,{className:"w-5 h-5 text-seva-primary mt-0.5 shrink-0 group-hover:scale-110 transition-transform"}),a.jsx("p",{className:"text-[10px] font-medium uppercase tracking-wider leading-snug",children:"Electricity supplied"})]}),a.jsxs("p",{className:"text-3xl font-bold text-foreground leading-tight",children:[b.skSupplyGwhAnnual.toLocaleStr
5ing(),a.jsx("span",{className:"text-base font-semibold text-muted-foreground ml-1",children:"GWh"}),a.jsx(k,{href:v.saskpowerAnnualReport2025_26,label:"SaskPower 2025-26 Annual Report"})]}),a.jsxs("p",{className:"text-xs text-muted-foreground mt-auto pt-2",children:["Gross annual, ",b.skFiscalYearLabel]})]})}),a.jsx(X,{className:"card-seva hover-lift h-full border-border/60 shadow-sm transition-all hover:shadow-md group",children:a.jsxs(Q,{className:"pt-6 h-full flex flex-col group-hover:bg-seva-50/30 dark:group-hover:bg-seva-900/20 transition-colors",children:[a.jsxs("div",{className:"flex items-start gap-2 mb-3 text-muted-foreground min-h-[2.5rem]",children:[a.jsx(ca,{className:"w-5 h-5 text-seva-primary mt-0.5 shrink-0 group-hover:scale-110 transition-transform"}),a.jsx("p",{className:"text-[10px] font-medium uppercase tracking-wider leading-snug",children:"Fuel and purchased power"})]}),a.jsxs("p",{className:"text-3xl font-bold text-foreground leading-tight",children:["$",(b.skFuelPurchasedPowerCad/1e6).toFixed(0),a.jsx("span",{className:"text-base font-semibold text-muted-foreground ml-1",children:"million"}),a.jsx(k,{href:v.saskpowerAnnualReport2025_26,label:"SaskPower 2025-26 Annual Report"})]}),a.jsx("p",{className:"text-xs text-muted-foreground mt-auto pt-2",children:"Annual cost exposure"})]})}),a.jsx(X,{className:"card-seva hover-lift h-full border-border/60 shadow-sm transition-all hover:shadow-md group",children:a.jsxs(Q,{className:"pt-6 h-full flex flex-col group-hover:bg-seva-50/30 dark:group-hover:bg-seva-900/20 transition-colors",children:[a.jsxs("div",{className:"flex items-start gap-2 mb-3 text-muted-foreground min-h-[2.5rem]",children:[a.jsx(Mo,{className:"w-5 h-5 text-seva-primary mt-0.5 shrink-0 group-hover:scale-110 transition-transform"}),a.jsx("p",{className:"text-[10px] font-medium uppercase tracking-wider leading-snug",children:w!=null?"Grid carbon intensity (live)":"Supply carbon intensity"})]}),a.jsxs("p",{className:"text-3xl font-bold text-foreground leading-tight",children:[w??b.skSupplyCarbonIntensityTco2PerGwh,a.jsx("span",{className:"text-base font-semibold text-muted-foreground ml-1",children:w!=null?"gCO₂/kWh":"tCO₂e/GWh"}),a.jsx(k,{href:v.saskpowerAnnualReport2024_25Intensity,label:"SaskPower 2024-25 Annual Report (supply carbon intensity)"})]}),a.jsx("p",{className:"text-xs text-muted-foreground mt-auto pt-2",children:w!=null?`Electricity Maps, CA-SK${z?` · ${z}`:""}`:"2024 supply-side"})]})})]}),a.jsx(Bi,{caption:"Saskatchewan's grid, fleet, and renewable resource in one frame. Toggle a layer to switch the overlay; drag to pan, Ctrl/Cmd+scroll to zoom, click a plant for detail.",source:a.jsxs(a.Fragment,{children:["Transmission and plant locations from"," ",a.jsx("a",{href:"https://www.openstreetmap.org/copyright",target:"_blank",rel:"noreferrer",className:"underline hover:text-foreground",children:"OpenStreetMap"})," ","contributors (ODbL 1.0). Resource overlays interpolated from"," ",a.jsx("a",{href:"https://natural-resources.canada.ca/energy-sources/renewable-energy/photovoltaic-potential-solar-resource-maps-canada",target:"_blank",rel:"noreferrer",className:"underline hover:text-foreground",children:"NRCan Photovoltaic Potential"})," ","and"," ",a.jsx("a",{href:"https://globalwindatlas.info/area/Canada/Saskatchewan",target:"_blank",rel:"noreferrer",className:"underline hover:text-foreground",children:"Global Wind Atlas"}),". Equirectangular projection, latitude-corrected at 54.5° N."]}),children:a.jsx(bo,{preset:"full",height:460,highlightNames:["Boundary Dam","E.B. Campbell","Queen Elizabeth","Great Plains","Golden South","Awasis"],availableOverlays:["solar","wind"],defaultOverlay:"solar",markers:[{id:"swift",x:27,y:214,label:"Swift Current",tone:"accent"},{id:"moosejaw",x:57,y:213,label:"Moose Jaw",tone:"accent",labelAnchor:"sw"},{id:"estevan",x:90,y:228,label:"Estevan",tone:"accent"},{id:"weyburn",x:80,y:223,label:"Weyburn",tone:"accent",labelAnchor:"nw"},{id:"nb",x:32,y:163,label:"N. Battleford",tone:"accent",labelAnchor:"w"}]})}),a.jsx(Bi,{caption:"How Saskatchewan's resource compares to the rest of Canada. Toggle solar yield or wind capacity factor (the share of nameplate output a wind project actually delivers across the year); SK is outlined in green.",source:a.jsxs(a.Fragment,{children:["Solar values from"," ",a.jsx("a",{href:"https://natural-resources.canada.ca/energy-sources/renewable-energy/photovoltaic-potential-solar-resource-maps-canada",target:"_blank",rel:"noreferrer",className:"underline hover:text-foreground",children:"NRCan Photovoltaic Potential"}),"; wind values from"," ",a.jsx("a",{href:"https://globalwindatlas.info/",target:"_blank",rel:"noreferrer",className:"underline hover:text-foreground",children:"Global Wind Atlas"}),". Base map © OpenStreetMap contributors."]}),children:a.jsx(ol,{height:460,defaultMetric:"solar"})})]}),a.jsxs("section",{id:"sectors",className:"mb-12 scroll-mt-20",children:[a.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[a.jsx(Aa,{className:"w-6 h-6 text-seva-primary"}),a.jsx("h2",{className:"text-2xl sm:text-3xl font-bold text-seva-section",children:"Who actually uses Saskatchewan electricity"})]}),a.jsxs("p",{className:"text-seva-body mb-6",children:["Most public conversation about the grid focuses on homeowners and EVs, but the numbers tell a different story. Industrial, oilfield, and commercial customers account for roughly"," ",a.jsxs("strong",{children:[m," percent"]})," of SaskPower sales; residential and farm customers together account for around 20 percent. The remaining"," ",Math.round(b.skSalesGwh.reseller/b.skSalesGwh.total*100)," ","percent is the reseller class,"," ",b.skSalesGwh.reseller.toLocaleStr
5ing()," GWh sold wholesale to the municipal utilities in Saskatoon and Swift Current, which sits in neither bucket. The largest kilowatt-hours addressable by flexibility, reliability investment, and electrification sit with large users first. A plan that starts with industrial flexibility and anchor-load contracts addresses the majority of the grid's load directly, rather than relying on millions of household-level decisions to shift the needle. Residential participation still matters and is covered in later pillars."]}),a.jsx(_e,{className:"mb-6"}),a.jsxs(X,{className:"card-seva",children:[a.jsx(Ee,{children:a.jsxs(Ne,{className:"text-lg",children:["SaskPower electricity sales by customer class",a.jsx(k,{href:v.saskpowerSectorConsumption,label:"SaskPower 2025-26 Annual Report"})]})}),a.jsxs(Q,{children:[a.jsx(ji,{options:u,series:d,type:"bar",height:220}),a.jsxs("p",{className:"text-xs text-muted-foreground mt-4",children:[b.skFiscalYearLabel," total sales:"," ",b.skSalesGwh.total.toLocaleString()," GWh. Industrial and oilfield together account for the largest share of provincial load.",a.jsx(k,{href:v.cerSkProfile,label:"CER SK profile"})]})]})]})]}),a.jsxs("section",{id:"pillars",className:"mb-12 scroll-mt-20",children:[a.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[a.jsx(ba,{className:"w-6 h-6 text-seva-primary"}),a.jsx("h2",{className:"text-2xl sm:text-3xl font-bold text-seva-section",children:"The seven pillars"})]}),a.jsx("p",{className:"text-seva-body mb-6",children:"Here is the whole map. Each pillar is its own focused page with primary sources, interactive scenario calculators, and specific policy proposals. Read them in order, or jump straight to the topic you care about. The seventh pillar (the networked grid) sits on top of the first six. The sections below this one walk through the evidence the pillars build on."}),a.jsx(_e,{className:"mb-6"}),a.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:ll.map(g=>{const _=g.icon;return a.jsx($,{to:g.to,className:"block group",children:a.jsxs(X,{className:"card-seva h-full hover-lift transition-all duration-300 group-hover:-translate-y-1 group-hover:shadow-seva group-hover:border-seva-primary/40",children:[a.jsx(Ee,{children:a.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[a.jsx(_,{className:`w-6 h-6 ${g.accent} group-hover:scale-110 transition-transform duration-300`}),a.jsx(Ne,{className:"text-lg group-hover:text-seva-primary transition-colors",children:g.title})]})}),a.jsxs(Q,{children:[a.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:g.description}),a.jsxs("div",{className:"flex items-center text-sm text-seva-primary font-medium",children:["Read the pillar",a.jsx(Dt,{className:"w-4 h-4 ml-1 group-hover:translate-x-1 transition-transform"})]})]})]})},g.to)})})]}),a.jsxs("section",{id:"electrification",className:"mb-12 scroll-mt-20",children:[a.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[a.jsx(ws,{className:"w-6 h-6 text-seva-primary"}),a.jsx("h2",{className:"text-2xl sm:text-3xl font-bold text-seva-section",children:"The efficiency case for electrification"})]}),a.jsx("p",{className:"text-seva-body mb-6",children:"Most of Saskatchewan's total energy use is not electricity. It is gasoline and diesel burned in vehicles, and natural gas burned in furnaces, boilers, and industrial heaters. Electrifying those end uses does not double or triple the grid. It cuts the total energy the province burns, because electric equipment wastes far less of what goes into it."}),a.jsxs("p",{className:"text-seva-body mb-6",children:["An electric vehicle turns roughly"," ",Math.round(b.efficiency.evBatteryToWheelsLow*100)," ","to"," ",Math.round(b.efficiency.evBatteryToWheelsHigh*100)," ","percent of the energy in its battery into motion. A gasoline engine turns only"," ",Math.round(b.efficiency.iceTankToWheelsLow*100)," ","to"," ",Math.round(b.efficiency.iceTankToWheelsHigh*100)," ","percent of the energy in its fuel into motion. The rest leaves the engine as heat. A ",a.jsx(W,{k:"ccashp",children:"cold-climate heat pump"})," ","sized for prairie winters can deliver two to three units of heat for every unit of electricity it uses in milder weather, and holds near"," ",Ns," units even at -15°C, a ratio called"," ",a.jsx(W,{k:"cop",children:"coefficient of performance"}),". A high-efficiency natural-gas furnace caps near one unit of heat per unit of fuel.",a.jsx(k,{href:v.neepCcashp,label:"NEEP Cold Climate ASHP Specification v4.0 (COP at 5°F minimum)"}),a.jsx(k,{href:v.nrcanCcashp,label:"NRCan Canadian Centre for Housing Technology: ccASHP performance at -21°C"}),a.jsx(k,{href:v.hislopMoleculesVsElectrons,label:"Hislop: Molecules vs Electrons"}),a.jsx(k,{href:v.everythingElectricRosenow,label:"Everything Electric: Rosenow on electrification efficie
5ncy"})]}),a.jsxs("p",{className:"text-seva-body mb-6",children:["Globally, electricity demand is growing more than twice as fast as total energy demand. In 2025, low-carbon sources (wind, solar, hydro, nuclear) supplied about"," ",Math.round(b.globalDemand2025.electricityShareOfGrowth*100)," ","percent of that growth, per the IEA’s Electricity 2026 report. Saskatchewan’s long-term plan should be built for that direction, not against it.",a.jsx(k,{href:v.ieaElectricity2026,label:"IEA Electricity 2026"}),a.jsx(k,{href:v.emberElectrification,label:"Ember: The Electrification Imperative"})]}),a.jsxs("p",{className:"text-seva-body mb-6",children:["The efficiency case does not wait for a cleaner grid. Because an electric drivetrain is multiples more efficient than an internal-combustion one, an EV charged entirely on a coal-dominant grid still beats a gasoline car on well-to-wheel emissions. SEVA works that math through on the"," ",a.jsx($,{to:"/education/environmental-impact",className:"text-seva-primary hover:underline",children:"environmental impact page"}),". Electrification cuts total primary energy from the first day, and the gain grows as the grid cleans."]}),a.jsx(Bi,{caption:a.jsxs(a.Fragment,{children:["Saskatchewan energy flow, reference year"," ",b.skEnergyBalancePj.referenceYear,"."," ",a.jsx(W,{k:"primaryEnergy",children:"Primary energy"})," on the left becomes ",a.jsx(W,{k:"secondaryEnergy",children:"secondary carriers"})," ","(refined petroleum, pipeline gas, electricity), then"," ",a.jsx(W,{k:"finalEnergy",children:"final energy"})," delivered to sectors, then ",a.jsx(W,{k:"usefulEnergy",children:"useful energy"})," at the end use. Everything outside the useful band is"," ",a.jsx(W,{k:"rejectedEnergy",children:"lost"})," as waste heat."]}),source:a.jsxs(a.Fragment,{children:["Sector × fuel allocation from NRCan CEUD Saskatchewan 2023 release (five-sector end-use sum 559 PJ). Agriculture folded into Industrial at this view; broken out in the Industrial sub-Sankey. Non-energy use (asphalt, lubricants, petrochemical feedstock) sized at the 91 PJ CER-vs-CEUD gap and rendered as a distinct terminal so conservation reconciles to the CER 650 PJ headline. Electricity generation mix from SaskPower FY2025-26 Annual Report. Thermal conversion efficiencies from NREL ATB 2024. Sector useful-energy fractions from LLNL US Energy 2022 (transportation ~21%, industrial ~49%, commercial ~65%, residential ~65%). ",a.jsx(W,{k:"td",children:"T&D"})," loss sized at the SaskPower FY2025-26 disclosure of"," ",js.toLocaleString()," GWh lost on"," ",fa.toLocaleString()," GWh gross supply (",(Ms*100).toFixed(1)," percent). Excludes SK crude-oil and raw-gas production destined for export."]}),children:a.jsx(Po,{height:560})}),a.jsxs("p",{className:"text-xs text-muted-foreground -mt-2 mb-6",children:["Want to zoom in on just the transportation row? The same Sankey logic applied to passenger and freight energy lives on the"," ",a.jsx($,{to:"/education/environmental-impact",className:"text-seva-primary hover:underline",children:"environmental impact page"})," ","and the"," ",a.jsx($,{to:"/education/ev-basics",className:"text-seva-primary hover:underline",children:"EV basics page"}),"."]}),a.jsx("p",{className:"text-seva-body mb-4",children:"The Sankey above shows energy in petajoules. The emissions consequence of that energy flow is shown below, alongside the FY2025-26 generation fuel mix that produces it. The trend since 2005 is downward but still well above the national average; the FY2025-26 mix is roughly 71 percent fossil (gas plus coal) and 29 percent non-emitting (hydro, wind, solar, imports). The pillars in this whitepaper describe how both halves of that picture shift over the next two decades."}),a.jsx(So,{})]}),a.jsxs("section",{id:"federal-plan",className:"mb-12 scroll-mt-20",children:[a.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[a.jsx(No,{className:"w-6 h-6 text-seva-primary"}),a.jsx("h2",{className:"text-2xl sm:text-3xl font-bold text-seva-section",children:"How this whitepaper relates to the federal national strategy"})]}),a.jsxs("p",{className:"text-seva-body mb-4",children:["Natural Resources Canada released"," ",a.jsx(W,{k:"poweringCanadaStrong",children:"Powering Canada Strong"}),", its May 2026 national strategy for an electrified Canadian economy. It is a consultation paper, not legislation, and it sets the federal frame for the next twenty-five years of grid investment. This whitepaper aligns with parts of that frame, departs from others, and flags questions a Saskatchewan position still has to answer.",a.jsx(k,{href:v.nrcanPoweringCanadaStrong,label:"NRCan Powering Canada Strong"})]}),a.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 my-6",children:[a.jsxs(X,{children:[a.jsx(Ee,{className:"pb-2",children:a.jsx(Ne,{className:"text-base text-seva-primary",children:"Alignment"})}),a.jsx(Q,{className:"text-sm text-seva-body space-y-2",children:a.jsxs("p",{children:["Demand doubling by 2050. Indigenous ownership as a financing channel ($",(b.federal.poweringCanadaStrong.financing.ilgpExpandedCad/1e9).toFixed(0)," ","billion ILGP). Manitoba-Saskatchewan intertie expansion ($",(b.federal.poweringCanadaStrong.transmission.mbSkTriplingNetBenefitCad/1e9).toFixed(1)," ","billion net benefit to 2050). Workforce ($",(b.federal.poweringCanadaStrong.financing.teamCanadaStrongCad5yr/1e9).toFixed(0)," ","billion Team Canada Strong over five years)."]})})]}),a.jsxs(X,{children:[a.jsx(Ee,{className:"pb-2",children:a.jsx(Ne,{className:"text-base text-seva-primary",children:"Divergence"})}),a.jsx(Q,{className:"text-sm text-seva-body space-y-2",children:a.jsxs("p",{children:['Federal plan keeps natural gas as a "flexible companion" and signals Clean Electricity Regulations flexibility to avoid'," ",a.jsx(W,{k:"strandedAsset",children:"stranded assets"})," for existing units. This whitepaper subordinates gas to storage, demand flexibility, and intertie imports on the basis of cost and reliability evidence."]})})]}),a.jsxs(X,{children:[a.jsx(Ee,{className:"pb-2",children:a.jsx(Ne,{className:"text-base text-seva-primary",children:"Where each thread lands"})}),a.jsxs(Q,{className:"text-sm text-seva-body space-y-2",children:[a.jsx("p",{children:"Three federal-frame items get a Saskatchewan-s
5pecific treatment elsewhere in this whitepaper, or remain open:"}),a.jsxs("ul",{className:"list-disc pl-5 space-y-1",children:[a.jsxs("li",{children:["AI data-centre load (",b.federal.poweringCanadaStrong.demand.aiDatacentre2030GwLow," ","to"," ",b.federal.poweringCanadaStrong.demand.aiDatacentre2030GwHigh," ","GW by 2030 nationally) is addressed on the"," ",a.jsx($,{to:ee.EducationEVGridIntegrationRoute.to,className:"text-seva-primary hover:underline",children:"EV grid integration page"}),": locational pricing and curtailable-load conditions for hyperscaler interconnections above the 50 to 100 MW band."]}),a.jsxs("li",{children:["Permitting acceleration is a drafted"," ",a.jsx($,{to:ee.PolicyAsksRoute.to,className:"text-seva-primary hover:underline",children:"policy ask"}),": support a one-year decision target for low-carbon generation and transmission, decline to extend it to new fossil capacity."]}),a.jsx("li",{children:"Credible-offset boundaries under federal rules, and how they interact with Saskatchewan industrial emitters under the post-2024 OBPS framework, remain open and need more analysis."})]})]})]})]}),a.jsx("p",{className:"text-seva-body",children:"The federal strategy provides envelope-level financing and regulatory context. This whitepaper provides Saskatchewan's implementation pathway. Each pillar page picks up the federal numbers where they apply, and flags where the Saskatchewan position differs from the national frame."})]}),a.jsxs("section",{id:"ltsp",className:"mb-12 scroll-mt-20",children:[a.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[a.jsx(Io,{className:"w-6 h-6 text-seva-primary"}),a.jsx("h2",{className:"text-2xl sm:text-3xl font-bold text-seva-section",children:"Where this proposal agrees and diverges with SaskPower's plan"})]}),a.jsxs("p",{className:"text-seva-body mb-6",children:["SaskPower's ",a.jsx(W,{k:"ltsp",children:"Long-Term Supply Plan"})," charts the province's supply mix out to 2035 and beyond. This whitepaper is not a counter-proposal. It shares several goals with the LTSP and differs on architecture and emphasis. The alignment below is drawn from the plan as published; where later provincial direction has superseded an item, the comparison says so.",a.jsx(k,{href:v.ltsp,label:"SaskPower Long-Term Supply Plan"})]}),a.jsx(_e,{className:"mb-6"}),a.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[a.jsxs(X,{className:"border-green-200 dark:border-green-800 bg-gradient-to-br from-green-50/50 to-transparent dark:from-green-950/30 dark:to-transparent shadow-sm transition-all hover:shadow-md",children:[a.jsx(Ee,{children:a.jsx(Ne,{className:"text-base text-green-700 dark:text-green-400",children:"Points of agreement (as drafted in LTSP)"})}),a.jsx(Q,{children:a.jsxs("ul",{className:"space-y-2 text-sm",children:[a.jsx("li",{children:"Conventional coal retires by December 31, 2029 per the LTSP; superseded by the June 2025 coal-extension directive, since formalized in the October 2025 Saskatchewan First Energy Security Strategy and SaskPower's Coal Life Extension Program."}),a.jsxs("li",{children:["Add roughly"," ",b.ltsp.windSolarAddMwBy2035.toLocaleString()," ","MW of wind and solar by 2035; terminated by the 2026F Supply Plan."]}),a.jsx("li",{children:"Extensive public engagement is a core input to planning."}),a.jsxs("li",{children:[a.jsx(W,{k:"intertie",children:"Interties"})," and imports are part of reliable supply."]})]})})]}),a.jsxs(X,{className:"border-orange-200 dark:border-orange-800 bg-gradient-to-br from-orange-50/50 to-transparent dark:from-orange-950/30 dark:to-transparent shadow-sm transition-all hover:shadow-md",children:[a.jsx(Ee,{children:a.jsx(Ne,{className:"text-base text-orange-700 dark:text-orange-400",children:"Points of divergence"})}),a.jsx(Q,{children:a.jsxs("ul",{className:"space-y-2 text-sm",children:[a.jsx("li",{children:"Build a distributed architecture, not a centralized one."}),a.jsxs("li",{children:["Prioritize near-term firm options deployable today (long-duration storage, interties, firmed hydro, demand response) over a small modular reactor on a"," ",As," timeline."]}),a.jsx("li",{children:"Treat industrial and commercial flexibility as a first-class pillar, not a supplement."}),a.jsx("li",{children:"Make First Nations majority-equity the norm for new renewable projects."}),a.jsxs("li",{children:["Plan for new builds, not the existing fleet. Decisions made in 2026 about what to construct next will operate into the 2040s; new Saskatchewan capacity should be built for where those ",a.jsx(W,{k:"stocksFlows",children:"flows"})," are heading, not where they have been."]})]})})]})]}),a.jsxs("p",{className:"text-sm text-seva-body mt-4",children:[a.jsx("span",{className:"font-semibold text-foreground",children:"SEVA’s ask."})," ","The 2026F Supply Plan terminated the LTSP’s"," ",b.ltsp.windSolarAddMwBy2035.toLocaleStr
5ing()," MW wind-and-solar commitment. SEVA asks the province to restore it."]})]}),a.jsx("section",{id:"alerts",className:"mb-12",children:a.jsxs(Ss,{children:[a.jsx(Je,{className:"w-4 h-4"}),a.jsxs(ks,{className:"text-sm",children:[a.jsx("strong",{children:"Reliability baseline."})," SaskPower reported a Distribution ",a.jsx(W,{k:"saidi"})," of"," ",b.reliability.skDistributionSaidiHours2023_24," ","hours in FY2023-24.",a.jsx(k,{href:v.saidi,label:"SaskPower 2023-24 Annual Report"})," ","Saskatchewan's ",a.jsx(W,{k:"saifi"})," (outage frequency) sits high relative to densely-populated provinces with shorter feeder runs (BC, Ontario, Quebec) because the same kilometre of line serves far fewer customers on the prairies. The fix is not more bulk transmission but reducing the number of customers exposed to a single upstream fault. Transformer-level microgrids with islanding capability, covered in the public ownership pillar, target that failure mode directly."]})]})}),a.jsxs("section",{id:"cost-of-inaction",className:"mb-12 scroll-mt-20",children:[a.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[a.jsx(ca,{className:"w-6 h-6 text-seva-primary"}),a.jsx("h2",{className:"text-2xl sm:text-3xl font-bold text-seva-section",children:"What the coal path costs"})]}),a.jsx(_e,{className:"mb-6"}),a.jsx("div",{className:"space-y-4 text-seva-body mb-6",children:a.jsxs("p",{children:["Saskatchewan is spending heavily on electricity supply under any plan. Its own published figures put the all-pathway capital envelope through 2050 in excess of"," ",`$${(Mi/1e9).toFixed(0)}`," ","billion. The common objection to the proposals on this page, that we cannot afford to switch, leaves out what the existing pathway costs over the same window. The envelope is already committed; the open question is what it buys.",a.jsx(k,{href:v.saskAuditorSaskPower2024,label:"Provincial Auditor of Saskatchewan, 2024 Vol. 2 Ch. 14, p. 139"})]})}),a.jsx("h3",{className:"text-lg font-semibold text-foreground mb-3",children:"The same electricity, bought two ways"}),a.jsx("div",{className:"mb-8",children:a.jsx(ko,{})}),a.jsxs("div",{className:"space-y-4 mb-6",children:[a.jsxs(X,{className:"card-seva border-amber-300/40 dark:border-amber-700/40",children:[a.jsx(Ee,{children:a.jsxs(Ne,{className:"text-base flex items-center gap-2",children:[a.jsx(da,{className:"w-4 h-4 text-amber-600 dark:text-amber-400"}),"Status-quo costs already committed"]})}),a.jsxs(Q,{className:"space-y-3 text-sm text-seva-body",children:[a.jsxs("div",{children:[a.jsxs("p",{className:"font-medium text-foreground mb-1",children:["Coal extension all-in cost: ~$",(Ri/1e9).toFixed(0)," ","billion over 25 years (through ",Ii,")"]}),a.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:['A SaskPower internal slide deck titled "Coal Fleet Life Extension," obtained and reported by CBC News, totals the lifetime cost of extending the coal fleet at $',(Ri/1e9).toFixed(0)," ","billion: $",(Is/1e6).toFixed(0)," ","million initial capital sustainment, $",(Rs/1e9).toFixed(1)," ","billion 25-year life-extension capex, $",(Os/1e9).toFixed(1)," ","billion transmission, and $",(Bs/1e9).toFixed(0)," ",'billion fuel. The Crown Investments minister has characterised the deck as an "incomplete, early draft," but the scope it covers (capital, transmission, and fuel across 25 years) is the all-in cost ratepayers ultimately carry.']}),a.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:["The $",(Ai/1e9).toFixed(1)," ","billion figure SaskPower filed with the Saskatchewan Rate Review Panel in March 2026 is the refurbishment-capex slice only. That figure was itself just $",(zs/1e9).toFixed(1)," ","billion nine months earlier, nearly tripling before construction began. The firm power and storage pillar carries the unit-by-unit refurbishment figures."]}),a.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:[`SaskPower's filing is explicit about the rationale: "the decision to extend the life of existing coal-fired generation assets was not driven by a determination that coal life extension represents the lowest-cost generation option." The filing's positive case is a claimed $21 billion reduction in capital expenditures through 2050 versus a Clean Electricity Regulations compliance pathway, a comparison set against forced full-replacement of the coal fleet on the federal schedule, not against a distributed, seven-pillar alternative.`,a.jsx(k,{href:v.cbcCoal26B,label:"CBC News: price estimate for Sask. coal plant refit climbs to $26B over 25 years (May 2026; SaskPower internal slide deck obtained and reported by CBC News)"}),a.jsx(k,{href:v.srrpSaskpower2026Application,label:"Saskatchewan Rate Review Panel: SaskPower 2026 and 2027 rate application docket (primary source for the $2.6B refurbishment-capex slice)"}),a.jsx(k,{href:v.cbcCoalRefurbTripled,label:"CBC: estimated cost to refurbish Sask. coal plants nearly tripled to $2.6 billion (March 2026)"}),a.jsx(k,{href:v.energyMixCoal900M,label:"Original $900M four-year refurbishment budget (June 2025 announcement)"}),a.jsx(k,{href:v.saskpowerCoalLifeExtension,label:"SaskPower SRRP information-request response coverage (March 2026)"}),a.jsx(k,{href:v.pipelineOnlineCoalRefurb,label:"Pipeline Online refurbishment plan by year"})]})]}),a.jsxs("div",{children:[a.jsx("p",{className:"font-medium text-foreground mb-1",children:"What SaskPower’s board was told"}),a.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["The 2026F Supply Plan is the internal decision item SaskPower’s board approved on November 20, 2025. It assigns the plan a residual risk profile of “extreme,” with financial and regulatory risk each rated extreme before mitigation. The plan “would be in violation of several regulations and agreements as they’re written today,” and the utility is “terminating previous corporate commitments related to renew
5able capacity and emissions reductions.” The Finance appendix projects the average cost of electricity at"," ",Ds," percent above 2025 rates by 2030 and ",Zs," percent above by 2040, before any carbon tax. On reliability, it notes the 25-year extension means some coal units will be operated for"," ",Ws," years, “well beyond the original design life.”",a.jsx(k,{href:v.cbc2026fSupplyPlan,label:"CBC News: leaked SaskPower documents show 'extreme' risk in $26B coal life-extension plan (May 2026; SaskPower 2026F Supply Plan, board-approved November 2025)"})]})]}),a.jsxs("div",{children:[a.jsx("p",{className:"font-medium text-foreground mb-2",children:"Cumulative CO₂ added by each year of extension"}),(()=>{const _=pa*_a*8760/1e3*ma/1e6,C=parseInt(Oi.slice(0,4),10),S=Ii-C,O=_*S;return a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-2",children:[a.jsxs("div",{className:"rounded-lg border border-border bg-muted/30 p-3",children:[a.jsx("p",{className:"text-[10px] uppercase tracking-wider text-muted-foreground",children:"Annual SK coal emissions"}),a.jsxs("p",{className:"text-xl font-bold text-foreground",children:["~",_.toFixed(1)," Mt"]}),a.jsxs("p",{className:"text-[10px] text-muted-foreground mt-0.5",children:["CO₂ per year (",pa.toLocaleString()," ","MW × ",(_a*100).toFixed(0),"% CF ×"," ",ma," gCO₂/kWh)"]})]}),a.jsxs("div",{className:"rounded-lg border border-border bg-muted/30 p-3",children:[a.jsx("p",{className:"text-[10px] uppercase tracking-wider text-muted-foreground",children:"Overshoot past LTSP retirement"}),a.jsxs("p",{className:"text-xl font-bold text-foreground",children:[S," years"]}),a.jsxs("p",{className:"text-[10px] text-muted-foreground mt-0.5",children:["LTSP retire"," ",Oi.slice(0,4)," → extension runs to ",Ii]})]}),a.jsxs("div",{className:"rounded-lg border-2 border-orange-500/60 bg-orange-50/50 dark:bg-orange-900/15 p-3",children:[a.jsx("p",{className:"text-[10px] uppercase tracking-wider text-orange-700 dark:text-orange-300",children:"Wedge added to SK’s carbon debt"}),a.jsxs("p",{className:"text-xl font-bold text-orange-700 dark:text-orange-200",children:["~",O.toFixed(0)," Mt"]}),a.jsx("p",{className:"text-[10px] text-muted-foreground mt-0.5",children:"Cumulative 
5CO₂ beyond the LTSP path, at full operation"})]})]}),a.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:[a.jsx(W,{k:"cumulativeEmissions",children:"Cumulative CO₂ is what sets the warming"}),". Every year of operation past the LTSP retirement date is a measurable wedge against Saskatchewan’s share of the remaining global budget, separate from the dollar costs above.",a.jsx(k,{href:v.cleanElectricityRegulations,label:"Clean Electricity Regulations SOR/2024-263"}),a.jsx(k,{href:v.ltsp,label:"SaskPower Long-Term Supply Plan retirement schedule"})]})]})})()]}),a.jsxs("div",{children:[a.jsx("p",{className:"font-medium text-foreground mb-1",children:"BD3 carbon-capture shortfall: ongoing exposure"}),a.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["BD3's design captures"," ",(Zt/1e6).toFixed(1)," ","Mt CO₂ per year. Cumulative capture through Q1 2026 was"," ",(ga/1e6).toFixed(2)," ","Mt against"," ",(Zt*va/1e6).toFixed(1)," ","Mt at design pace, a shortfall of roughly"," ",Math.round(Hs/(Zt*va)*100)," ","percent. Any above-standard tonne not captured is exposed to the industrial carbon price ($",Fs,"/tonne by 2030 under the May 2026 trajectory), though Saskatchewan has zero-rated its ",a.jsx(W,{k:"obps"})," compliance rate since April 2025 pending the federal review. The"," ",a.jsx($,{to:ee.EducationFutureGridFirmPowerRoute.to,className:"text-seva-primary hover:underline",children:"firm power and storage pillar"})," ","carries the full capture record and exposure math.",a.jsx(k,{href:v.bd3,label:"SaskPower BD3 quarterly capture updates"}),a.jsx(k,{href:v.gemBd3,label:"Global Energy Monitor BD3 cumulative capture vs design"}),a.jsx(k,{href:v.federalCarbonBenchmark2030,label:"Government of Canada federal carbon benchmark 2023-2030"})]})]}),a.jsxs("div",{children:[a.jsxs("p",{className:"font-medium text-foreground mb-1",children:["SMR Phase 1: ~$",(xa/1e9).toFixed(1)," ","billion benchmark"]}),a.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["SaskPower has not published a Saskatchewan-specific BWRX-300 capital cost. The closest comparable is OPG's Darlington first-unit budget, $",(xa/1e9).toFixed(1)," ","billion including shared infrastructure. SaskPower's own LCOE band on a 2 x 300 MW deployment is $",Gs," to $",Us,"/MWh. The build decision is not until ",Vs,"; until then the program continues to consume planning and engineering capital.",a.jsx(k,{href:v.saskpowerSmrEngagement,label:"SaskPower nuclear engagement page (LCOE band)"}),a.jsx(k,{href:v.wnnDarlingtonBudget,label:"World Nuclear News Darlington BWRX-300 budget"})]})]}),a.jsxs("div",{children:[a.jsx("p",{className:"font-medium text-foreground mb-1",children:"Clean Electricity Regulations non-compliance"}),a.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["The federal Clean Electricity Regulations (SOR/2024-263) set an annual-average emission limit of"," ",$s," tonnes CO₂ per GWh in"," ",Ks," and net zero by"," ",qs,`. The Provincial Auditor's 2024 audit confirmed that under SaskPower's net-zero 2050 pathway "SaskPower would not be compliant with the draft federal Clean Electricity Regulations by 2035." The May 2026 Canada-Alberta agreement holds the regulations in abeyance in Alberta only, so the rule still applies here. Every year of extended coal also sends federal Clean Fuel Regulations credit revenue to EV charging and electrification in cleaner provinces instead of Saskatchewan. The`," ",a.jsx($,{to:ee.EducationFutureGridFirmPowerRoute.to,className:"text-seva-primary hover:underline",children:"firm power and storage pillar"})," ","carries the full compliance and credit-revenue treatment.",a.jsx(k,{href:v.cerSor2024_263,label:"Clean Electricity Regulations SOR/2024-263"}),a.jsx(k,{href:v.canadaAlbertaImplementationAgreement,label:"Implementation Agreement, Canada-Alberta Memorandum of Understanding (May 15, 2026): CER held in abeyance in Alberta pending the constitutional reference"}),a.jsx(k,{href:v.cleanFuelRegulations,label:"Clean Fuel Regulations SOR/2022-140"}),a.jsx(k,{href:v.saskAuditorSaskPower2024,label:"Provincial Auditor 2024 Vol. 2 Ch. 14"})]})]})]})]}),a.jsxs("aside",{className:"rounded-lg border-l-4 border-seva-primary bg-seva-50/30 dark:bg-seva-900/10 px-4 py-3 text-xs text-foreground
5/75 leading-relaxed","aria-label":"SaskPower CEO public forward build sequence",children:[a.jsx("span",{className:"font-medium text-foreground",children:"What the SaskPower CEO said publicly about the forward build."})," ","On a public stage in 2026, SaskPower CEO Rupen Pandya laid out the near-term build sequence: existing renewables and hydro (about 33 percent of supply), gas plants in progress (Great Plains complete at Moose Jaw, Aspen about 70 percent complete), 700 MW of new renewables hitting the grid by 2027 or early 2028, SMR final investment decision in 2029, and larger reactors after that. “Where we’re aiming for is the lowest system cost.” The forward sequence he gave the audience did not include coal extension. The provincial directive to extend coal sits outside it.",a.jsx(k,{href:v.jsgsEnergyPolicy2026,label:"Rupen Pandya, SaskPower CEO, JSGS Energy Policy Lecture 2026"})]}),a.jsxs(X,{className:"card-seva border-seva-primary/40",children:[a.jsx(Ee,{children:a.jsxs(Ne,{className:"text-base flex items-center gap-2",children:[a.jsx(Je,{className:"w-4 h-4 text-seva-primary"}),"Distributed-pathway cost components"]})}),a.jsxs(Q,{className:"space-y-3 text-sm text-seva-body",children:[a.jsx("p",{className:"text-muted-foreground leading-relaxed",children:"Each pillar that moves real capital is shown below as a first-decade range. Hover (or tap) a bar for the basis. Two pillars sit outside the chart and are noted underneath."}),a.jsx("div",{className:"hidden sm:block",children:a.jsx(ji,{options:p.options,series:p.series,type:"rangeBar",height:220})}),a.jsxs("div",{className:"sm:hidden space-y-3 pt-1",children:[Xe.map(g=>{const C=g.lowCadM/900*100,S=(g.highCadM-g.lowCadM)/900*100;return a.jsxs("div",{children:[a.jsxs("div",{className:"flex justify-between gap-2 text-xs mb-1",children:[a.jsx("span",{className:"text-foreground leading-tight",children:g.shortLabel}),a.jsxs("span",{className:"font-semibold shrink-0 text-foreground tabular-nums",children:["$",g.lowCadM,"M to $",g.highCadM,"M"]})]}),a.jsx("div",{className:"relative h-2 w-full rounded-full bg-muted/50 overflow-hidden",children:a.jsx("div",{className:"absolute h-full rounded-full",style:{left:`${C}%`,width:`${S}%`,backgroundColor:g.hex}})})]},g.pillar)}),a.jsxs("div",{className:"text-[10px] text-muted-foreground pt-1",children:["Scale: $0M to $",900,"M."]})]}),a.jsxs("div",{className:"text-xs text-muted-foreground space-y-2 pt-3 border-t border-border/50 leading-relaxed",children:[a.jsxs("p",{children:[a.jsx("span",{className:"font-semibold text-foreground",children:"Pillar capital total:"})," ","$",fl,"M to $",(ml/1e3).toFixed(2),"B over the first decade, capex on the four pillars charted above. It excludes the roughly $",Ca.toFixed(1)," billion utility wind-and-solar restoration noted under Pillar 3 below, the pathway’s largest component. The status-quo coal extension carries roughly $",(Ri/1e9).toFixed(0)," ","billion across 25 years, an all-in figure that includes fuel, transmission, and operations as well as capital (CBC-reported from an internal SaskPower deck the minister has called an early draft), so the two figures are different scopes rather than a like-for-like comparison."]}),a.jsxs("p",{children:[a.jsx("span",{className:"font-semibold text-foreground",children:"Industrial flexibility (Pillar 2):"})," ","tariff redesign with near-zero direct cost. Each MW of industrial flex displaces roughly $1 million to $2 million of avoided peaker capacity."]}),a.jsxs("p",{children:[a.jsx("span",{className:"font-semibold text-foreground",children:"Distributed generation (Pillar 3):"})," ","The 2024 Long-Term Supply Plan drafted"," ",b.ltsp.windSolarAddMwBy2035.toLocaleString()," ","MW of wind and solar by 2035 through standard PPA procurement, so the cost would land in the rate base as operating expense rather than as a capex line on this chart. The build itself is not small: at an even wind/solar split of the NREL ATB 2024 benchmarks ($",ja.toLocaleString(),"/kW wind, $",Ma.toLocaleString(),"/kW solar), restoring it is roughly $",Ca.toFixed(1)," billion of installed capex, several times the pillar total above. The 2026F Supply Plan cancelled that commitment; the figure stands here as the benchmark SEVA is asking the province to restore."]})]})]})]})]}),a.jsxs("div",{className:"space-y-4 text-seva-body",children:[a.jsxs("p",{children:["The status-quo column above and the proposals on this page are both slices of the same auditor-confirmed envelope, above"," ",`$${(Mi/1e9).toFixed(0)}`," ","billion through 2050. Ratepayers fund whichever one the province picks. They differ in reliability delivered, carbon exposure carried, and how much economic value stays in the province."]}),a.jsxs("p",{children:[a.jsx("strong",{children:"What this section leaves out."})," The figure above is a floor. We have not modelled the 2030 to 2050 federal carbon-price trajectory, because no federally legislated schedule exists past 2030. We have not modelled BD3 operating costs or coal-fleet operating costs on top of refurbishment capex, because SaskPower has not disclosed those figures publicly. Both omissions raise the status-quo column."]}),a.jsxs("p",{children:[a.jsx("strong",{children:"Opportunity cost."})," Every dollar of the ~$",(Ai/1e9).toFixed(1)," billion coal-refurbishment commitment is committed to the existing fleet for the next two decades. That capital cannot also be spent on transition infrastru
5cture in Estevan, Bienfait, or Coronach during the same period. The communities most exposed to coal employment trade a near-term jobs-preservation benefit for a roughly twenty-year delay on every other pathway open to them."]}),a.jsxs("p",{children:[a.jsx("strong",{children:"Continental context."})," Saskatchewan would be entering a shift already underway south of the border. Distributed energy resources (rooftop solar, batteries, smart EV chargers, controllable heat pumps) are forecast to add roughly"," ",Ys," GW of US capacity through 2028, with ",Js," GW of that already aggregated into"," ",a.jsx(W,{k:"vpp",children:"virtual power plants"})," across North America. Independent cost analysis (Brattle Group, 2023) finds those virtual power plants deliver firm peak capacity at"," ",Math.round(to*100)," to"," ",Math.round(io*100)," percent of the cost of building conventional generation for the same hours. One qualifier travels with that number: it is a cost per accredited megawatt, and accreditation depends on how long the fleet can hold. In SPP, the market Saskatchewan is expanding into, a four-hour demand-side resource is credited at"," ",Xs," percent of nameplate in winter against ",Qs," to"," ",eo," percent for a ten-hour one, so a winter-peaking province gets Brattle’s cost advantage on long-duration flexibility rather than on short thermostat events. The 2026 Pew Charitable Trusts policy playbook on distributed energy applies its recommendations directly to vertically-integrated utilities. The networked-grid pillar page expands on the procurement and rate-design mechanics; the figures above are anchored there in detail.",a.jsx(k,{href:v.brattleRealReliability,label:"Hledik & Peters, Real Reliability: The Value of Virtual Power (Brattle 2023)"}),a.jsx(k,{href:v.e3DrAccreditation,label:"E3, The Capacity Accreditation of Demand Response in SPP (October 2025)"}),a.jsx(k,{href:v.woodMacDerOutlook2024,label:"Wood Mackenzie, US DER Outlook 2024"}),a.jsx(k,{href:v.woodMacVppReport2025,label:"Wood Mackenzie, 2025 North America Virtual Power Plant Report"}),a.jsx(k,{href:v.pew2026,label:"Pew Charitable Trusts (April 2026), Distributed Energy Can Unleash the Resilient, Affordable Grid of the Future"})]})]})]}),a.jsxs("section",{id:"pillar-stack",className:"mb-12 scroll-mt-20",children:[a.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[a.jsx(ba,{className:"w-6 h-6 text-seva-primary"}),a.jsx("h2",{className:"text-2xl sm:text-3xl font-bold text-seva-section",children:"How the seven pillars sum to a complete grid"})]}),a.jsx(_e,{className:"mb-6"}),a.jsxs("p",{className:"text-seva-body mb-4",children:["Each pillar adds a different category of resource. The chart below stacks what the pillars contribute, plus the existing low-carbon assets retained in the fleet, against today's SK annual peak. This is a firm-capacity-at-the-winter-peak account: weather-driven wind and solar are counted at their winter capacity credit, not their nameplate (the same convention the Design-your-grid tool uses), so distributed solar contributes little here even though its energy value is large. Pillar 4's VPP is likewise shown firm-equivalent at roughly ",Wa," MW, the Winter pillar's convention for the same 100,000-household cohort; that cohort's raw dispatchable shed is roughly ",Za," MW. Hover or tap a segment for the basis. Pillars 6 (Economic Transformation) and 7 (Networked Grid) are framing rather than capacity; they make the rest fundable and coordinated."]}),a.jsx("div",{className:"hidden sm:block rounded-lg border border-border bg-card/40 px-4 sm:px-6 py-6 sm:py-8 mb-4 shadow-sm",children:a.jsx(ji,{options:l.options,series:l.series,type:"bar",height:340})}),a.jsxs("div",{className:"sm:hidden rounded-lg border border-border bg-card/40 p-4 mb-4 shadow-sm space-y-3",children:[a.jsxs("div",{className:"text-xs text-muted-foreground mb-2",children:["Stack against the current SK peak of"," ",b.skAnnualPeakMw.toLocaleString()," MW:"]}),Re.map(g=>{const _=Math.min(100,g.mw/b.skAnnualPeakMw*100);return a.jsxs("div",{children:[a.jsxs("div",{className:"flex justify-between gap-2 text-xs mb-1",children:[a.jsx("span",{className:"text-foreground leading-tight",children:g.label}),a.jsxs("span",{className:"font-semibold shrink-0 text-foreground",children:[g.mw.toLocaleStr
5ing()," MW"]})]}),a.jsx("div",{className:"h-2 w-full rounded-full bg-muted/50 overflow-hidden",children:a.jsx("div",{className:"h-full rounded-full",style:{width:`${_}%`,backgroundColor:g.hex}})})]},g.label)}),a.jsxs("div",{className:"border-t border-border/60 pt-2 text-xs text-muted-foreground",children:["Total stack ≈"," ",Re.reduce((g,_)=>g+_.mw,0).toLocaleString()," ","MW · SK annual peak"," ",b.skAnnualPeakMw.toLocaleString()," MW."]})]}),a.jsxs("div",{className:"text-sm text-seva-body space-y-3",children:[a.jsxs("p",{children:["The five capacity pillars add"," ",a.jsxs("strong",{children:[Fi.toLocaleString()," MW"]})," of new resource. The existing low-carbon fleet stays in service:"," ",no.toLocaleString()," MW of SaskPower-owned hydro across five stations, plus the"," ",ao.toLocaleString()," MW Manitoba Hydro import PPA. The existing"," ",b.skAvailableCapacityMw.wind," MW wind fleet contributes a further ",Ki," MW of firm capacity at the winter peak hour, held at the roughly 10 percent SaskPower IRP planning convention rather than the"," ",(Ft*100).toFixed(0)," percent credit applied to the new additions, a deliberately conservative read on a fleet whose recorded cold-snap floor is 4.3 percent. The amber band is the remainder carried by existing gas through the transition: residual peakers, demand response, and contingency reserve. It is not an independent estimate. It is computed as whatever sits between the other segments and today’s peak, which is why the stack closes exactly; today that remainder is"," ",Fa," MW. The stack also targets today’s"," ",b.skAnnualPeakMw.toLocaleString()," MW annual peak, while this page expects electrification to grow demand; the"," ",a.jsx($,{to:"/education/future-grid/design-your-grid",className:"text-seva-primary hover:underline",children:"Design-the-Grid tool"})," ","carries an Electrified 2050 preset at roughly 1.5 times today’s peak for that case. Coal phase-down is what becomes possible once the pillar stack 
5is in place."]}),a.jsx(To,{}),a.jsxs("p",{className:"text-xs text-muted-foreground",children:["Per-segment basis. Dispatchable pillars are shown at their default scenario; weather-driven distributed wind and solar are shown at their winter capacity credit (solar"," ",(Gi*100).toFixed(0),"%, wind"," ",(Ft*100).toFixed(0),"%)."]}),a.jsx("div",{className:"rounded-md border border-border/50 overflow-x-auto",children:a.jsxs("table",{className:"w-full text-xs",children:[a.jsxs("caption",{className:"sr-only",children:["How each pillar contribution and retained low-carbon resource adds up to the"," ",b.skAnnualPeakMw.toLocaleString()," MW Saskatchewan annual peak."]}),a.jsx("thead",{className:"bg-muted/40",children:a.jsxs("tr",{children:[a.jsx("th",{scope:"col",className:"sr-only",children:"Stack-bar color"}),a.jsx("th",{scope:"col",className:"text-left px-2 py-1.5 font-medium text-foreground",children:"Resource"}),a.jsx("th",{scope:"col",className:"text-right px-2 py-1.5 font-medium text-foreground whitespace-nowrap",children:"MW"}),a.jsx("th",{scope:"col",className:"text-left px-2 py-1.5 font-medium text-foreground",children:"Basis"})]})}),a.jsx("tbody",{children:(()=>{const g=Ht.reduce((S,O)=>S+O.mw,0),_=Hi.reduce((S,O)=>S+O.mw,0);return[{heading:"New pillar additions",subtotal:Fi,rows:$i},{heading:"Existing low-carbon retained",subtotal:g,rows:Ht},{heading:"Transition decade",subtotal:_,rows:Hi}].map(S=>a.jsxs(je.Fragment,{children:[a.jsx("tr",{className:"bg-muted/25 border-t border-border/40",children:a.jsxs("td",{colSpan:4,className:"px-2 py-1.5 text-[10px] font-semibold uppercase tracking-wide text-foreground",children:[S.heading," ·"," ",a.jsxs("span",{className:"text-muted-foreground tabular-nums",children:[S.subtotal.toLocaleString()," MW"]})]})}),S.rows.map(O=>a.jsxs("tr",{className:"border-t border-border/30",children:[a.jsx("td",{className:"pl-2 pr-1 py-2 align-top w-5",children:a.jsx("span",{className:"inline-block w-2.5 h-2.5 rounded-sm",style:{backgroundColor:O.hex},"aria-hidden":!0})}),a.jsx("td",{className:"px-2 py-2 align-top text-foreground leading-snug",children:O.label}),a.jsx("td",{className:"px-2 py-2 align-top text-right tabular-nums whitespace-nowrap text-foreground leading-snug",children:O.mw.toLocaleString()}),a.jsxs("td",{className:"px-2 py-2 align-top text-muted-foreground leading-snug",children:[O.basis,"."]})]},O.label))]},S.heading))})()}),a.jsx("tfoot",{children:a.jsxs("tr",{className:"bg-muted/40 border-t-2 border-border",children:[a.jsx("td",{className:"px-2 py-2"}),a.jsx("td",{className:"px-2 py-2 font-semibold text-foreground",children:"Total to SK annual peak"}),a.jsx("td",{className:"px-2 py-2 text-right font-semibold text-foreground tabular-nums whitespace-nowrap",children:b.skAnnualPeakMw.toLocaleString()}),a.jsx("td",{className:"px-2 py-2 text-muted-foreground leading-snug",children:"Closes by construction: the transition band is sized as the remainder to today’s peak."})]})})]})})]})]}),a.jsxs("section",{id:"pillars-architecture",className:"mb-12 scroll-mt-20",children:[a.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[a.jsx(Pa,{className:"w-6 h-6 text-seva-primary"}),a.jsx("h2",{className:"text-2xl sm:text-3xl font-bold text-seva-section",children:"The seven pillars as one architecture"})]}),a.jsx(_e,{className:"mb-6"}),a.jsx("div",{className:"space-y-4 text-seva-body",children:a.jsxs("p",{children:["No single technology replaces extended coal. The replacement is an architecture built on ",a.jsx(W,{k:"buffering",children:"buffering"}),": distributed local storage at every node converts the grid’s hardest constraint into a"," ",a.jsx(W,{k:"nearRealTime",children:"near-real-time"})," local control problem. Each of the first six pillars is a category of resource that goes into that architecture, and each has a natural owner. SaskPower builds where scale, transmission interconnection, and long-duration firm capacity favour the Crown utility; ratepayers, farms, First Nations, and co-ops build where land, rooftops, and capital flexibility favour distributed ownership."," ",a.jsx(W,{k:"lcoe",children:"Levelized cost of energy"})," plus avoided transmission and distribution capacity, plus resilience value, decides which side a given megawatt belongs on. The coordination layer grows substation by substation as transformers reach end-of-life and capital cycles open, so the existing grid is extended rather than rebuilt. The"," ",a.jsx($,{to:ee.EducationFutureGridNetworkedRoute.to,className:"text-seva-primary hover:underline",children:"networked grid pillar"})," ","carries the full architecture: the buffering keystone plus the isolation, service-class, layering, and open-protocol moves that follow from it."]})})]}),a.jsxs("section",{id:"objections",className:"mb-12 scroll-mt-20",children:[a.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[a.jsx(da,{className:"w-6 h-6 text-seva-primary"}),a.jsx("h2",{className:"text-2xl sm:text-3xl font-bold text-seva-section",children:"Three hard objections, direct answers"})]}),a.jsx(_e,{className:"mb-6"}),a.jsx("p",{className:"text-seva-body mb-6",children:"Three of the toughest objections to this plan deserve a direct answer before the pillars take it further."}),a.jsxs("div",{className:"space-y-6 text-seva-body",children:[a.jsxs("div",{children:[a.jsx("h3",{className:"font-semibold text-foreground mb-2",children:"A small-province Crown utility cannot run a distributed grid."}),a.jsxs("p",{children:["The architecture is designed to reduce SaskPower’s operating burden, not add to it."," ",a.jsx(W,{k:"openProtocol",children:"Open coordination protocols"}),","," ",a.jsx(W,{k:"gradedService",children:"graded service classes"}),", and"," ",a.jsx(W,{k:"galvanicIsolation",children:"galvanically-isolated neighbourhood domains"})," ","let each layer handle its own faults locally. The Crown utility coordinates across layers without micro-managing inside them."]}),a.jsxs("p",{children:["Hawaii is the working precedent. Its"," ",a.jsx(W,{k:"pbr",children:"Performance-Based Regulation"})," framework was approved in late 2020 and phased in through 2021 to 2024 on a state-sized utility, with ten metrics across reliability, interconnection, renewables, and customer service, and a five-year review cycle that revises metrics when they stop measuring what they were meant to measure. Hawaii is a distant comparator on economics: an island utility, historically oil-fired, with the highest retail electricity rates in the United States. The governance mechanism is what transfers, not the cost picture. The docket is not without gaming risk, but the mid-period review is the correction mechanism for exactly those risks. Rate-of-return regulation has its own gaming problem, the capital-expenditure bias toward megaprojects, with no equivalent correction. A Saskatchewan version of PBR should import the mid-period review on day one.",a.jsx(k,{href:v.hawaiiPucPbr,label:"Hawaii PUC PBR docket 2018-0088"}),a.jsx(k,{href:v.hawaiiPucPbrOverview,label:"Hawaii PUC PBR framework overview"}),a.jsx(k,{href:v.rmiHawaiiPbr,label:"RMI five lessons from Hawaii's PBR framework"})]}),a.jsxs("p",{children:["Pew’s April 2026 distributed-energy playbook reaches the same finding from a bipartisan advisory council, and Pew’s policy table explicitly applies all six of its recommendations to vertically-integrated utilities. The Crown-utility structural form is no obstacle. US-state precedents across the seven pillars span Texas, California, Massachusetts, Michigan, Illinois, Virginia, North Carolina, Colorado, Hawaii, Oregon, and Louisiana. Texas SB 1202, the third-party residential permitting law, passed in 2025 with explicit bipartisan support.",a.jsx(k,{href:v.pe
5w2026,label:"Pew Charitable Trusts (April 2026), Distributed Energy Can Unleash the Resilient, Affordable Grid of the Future"}),a.jsx(k,{href:v.texasSb1202,label:"Texas SB 1202 (2025) bipartisan-passed residential DER permitting"})]})]}),a.jsxs("div",{children:[a.jsx("h3",{className:"font-semibold text-foreground mb-2",children:"Distributed resources cost more per megawatt than central generation."}),a.jsxs("p",{children:["Per kilowatt-hour at the meter, utility-scale solar runs roughly half the cost of rooftop. The case for distributed rests on system-total cost: avoided transmission, avoided distribution capital, avoided line losses, and outage resilience change the comparison once they are priced in. Brattle’s cost decomposition concludes the all-in"," ",a.jsx(W,{k:"nspm",children:"National Standard Practice Manual"})," value of distributed resources is roughly competitive with utility-scale once those avoided costs are counted, and its firm-capacity work (the virtual-power-plant cost finding cited in the coal-path cost section above) puts"," ",a.jsx(W,{k:"vpp",children:"virtual power plants"})," well below the cost of conventional resources for the same peak hours. Distributed resources also install in months rather than the five-plus years required for new large gas-fired plants or high-voltage transmission. SEVA’s position is that distributed should be sized where those avoided costs are real and measurable, and central generation should carry the rest. Each goes where it is cheapest, measured in system-total terms rather than per-megawatt sticker price.",a.jsx(k,{href:v.brattleRooftopUtility,label:"Brattle: Comparing utility-scale and residential PV"}),a.jsx(k,{href:v.brattleRealReliability,label:"Hledik & Peters, Real Reliability: The Value of Virtual Power (Brattle 2023)"}),a.jsx(k,{href:v.pew2026,label:"Pew Charitable Trusts (April 2026)"}),a.jsx(k,{href:v.hawaiianElectricGie,label:"Hawaiian Electric Grid Investment Efficiency scorecard"}),a.jsx(k,{href:v.nspmFramework,label:"National Standard Practice Manual"})]})]}),a.jsxs("div",{children:[a.jsx("h3",{className:"font-semibold text-foreground mb-2",children:"Wind and solar cannot carry a forty-below cold-calm week."}),a.jsxs("p",{children:["The first week of January 2024 settled this on the prairies. SaskPower’s"," ",lo.toLocaleString()," MW of grid-scale wind averaged ",ro," MW on January 7, roughly ",so," percent of"," ",a.jsx(W,{k:"nameplate",children:"nameplate"}),", while natural gas and coal carried ",oo," percent of provincial load. Alberta declared a grid emergency on January 13, 2024 with peak-hour wind output below one percent of installed capacity. Modern turbines shut down below roughly minus thirty to protect the blades, which is a feature of the technology rather than a failure of policy. Cold-calm weeks are covered by long-duration storage, the Manitoba and Alberta"," ",a.jsx(W,{k:"intertie",children:"interties"}),", and firm dispatch including natural gas during the transition and the eventual"," ",a.jsx(W,{k:"smr",children:"SMR"})," fleet. These weeks are infrequent but consequence-heavy and sit at the top of the winter-peaked grid’s sizing problem. Wind and solar carry their share for the rest of the year; firm capacity and long-duration storage are sized for the cold-calm hours specifically.",a.jsx(k,{href:v.pipelineOnlineSkWindCollapse,label:"Pipeline Online: SK wind output during Jan 2-8 2024 cold snap"}),a.jsx(k,{href:v.albertaMsaJan2024,label:"Alberta MSA January and April 2024 Event Report"}),a.jsx(k,{href:v.cerSkProfile,label:"CER Saskatchewan electricity profile"})]})]})]})]}),a.jsxs("section",{id:"dependencies",className:"mb-12 scroll-mt-20",children:[a.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[a.jsx(Wi,{className:"w-6 h-6 text-seva-primary"}),a.jsx("h2",{className:"text-2xl sm:text-3xl font-bold text-seva-section",children:"Cross-pillar dependencies"})]}),a.jsx(_e,{className:"mb-6"}),a.jsx(vo,{})]}),a.jsxs("section",{id:"outcomes",className:"mb-12 scroll-mt-20",children:[a.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[a.jsx(Je,{className:"w-6 h-6 text-seva-primary"}),a.jsx("h2",{className:"text-2xl sm:text-3xl font-bold text-seva-section",children:"What success looks like, on numbers"})]}),a.jsx(_e,{className:"mb-6"}),a.jsx(xo,{})]}
5),a.jsxs("section",{id:"take-action",className:"mb-12 scroll-mt-20",children:[a.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[a.jsx(ua,{className:"w-6 h-6 text-seva-primary"}),a.jsx("h2",{className:"text-2xl sm:text-3xl font-bold text-seva-section",children:"What you can do"})]}),a.jsx(_e,{className:"mb-6"}),a.jsxs("p",{className:"text-seva-body mb-6",children:["The pathway is not built only by SaskPower or only by the province. The most concrete moves are available to households, small businesses, and the people working inside the utility every day. The cards below are starting points; the"," ",a.jsx($,{to:"/education/future-grid/take-action",className:"text-seva-primary hover:underline",children:"full take-action page"})," ","carries longer-form actions for each audience plus elected officials, and the"," ",a.jsx($,{to:"/policy-asks",className:"text-seva-primary hover:underline",children:"policy-asks list"})," ","carries the formal advocacy framework with sourcing."]}),a.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[a.jsx(X,{className:"card-seva border-seva-primary/30",children:a.jsxs(Q,{className:"pt-6",children:[a.jsxs("p",{className:"font-semibold text-foreground mb-3 flex items-center gap-2",children:[a.jsx(ua,{className:"w-4 h-4 text-seva-primary"}),"Residents and households"]}),a.jsxs("ul",{className:"space-y-2 text-sm text-seva-body list-disc list-outside ml-5 marker:text-seva-primary",children:[a.jsx("li",{children:"Plan a cold-climate heat-pump retrofit ahead of the next furnace replacement."}),a.jsxs("li",{children:["Run rooftop-solar payback math while the current"," ",(ho*100).toFixed(1),"¢/kWh net-metering credit rate runs (to"," ",ya(mo),")."]}),a.jsx("li",{children:"Ask SaskPower and your MLA for demand-response and time-of-use pilots, and sign up as they open. No residential pilot exists yet."}),a.jsx("li",{children:"Talk to municipal council about a local-improvement or PACE financing program for solar and heat-pump retrofits."})]})]})}),a.jsx(X,{className:"card-seva border-seva-primary/30",children:a.jsxs(Q,{className:"pt-6",children:[a.jsxs("p",{className:"font-semibold text-foreground mb-3 flex items-center gap-2",children:[a.jsx(Pa,{className:"w-4 h-4 text-seva-primary"}),"Small businesses and farms"]}),a.jsxs("ul",{className:"space-y-2 text-sm text-seva-body list-disc list-outside ml-5 marker:text-seva-primary",children:[a.jsx("li",{children:"Audit your bill against the E75 to E78 small-commercial classes; demand charges and load shape set the rate-class economics."}),a.jsx("li",{children:"For loads above 50 MW, ask SaskPower about flexibility-as-condition-of-connection tariff terms."}),a.jsx("li",{children:"Run farm-scale solar payback against current panel prices and shelterbelt or agrivoltaic siting."}),a.jsx("li",{children:"Electrify fleet vehicles where charging windows align with low-rate hours."})]})]})}),a.jsx(X,{className:"card-seva border-seva-primary/30",children:a.jsxs(Q,{className:"pt-6",children:[a.jsxs("p",{className:"font-semibold text-foreground mb-3 flex items-center gap-2",children:[a.jsx(Wi,{className:"w-4 h-4 text-seva-primary"}),"SaskPower staff and planners"]}),a.jsxs("ul",{className:"space-y-2 text-sm text-seva-body list-disc list-outside ml-5 marker:text-seva-primary",children:[a.jsx("li",{children:"Reference the open-protocol procurement spec (IEEE 2030.5, OpenADR, IEC 62443) on the next distribution-edge RFP."}),a.jsx("li",{children:"Open a file with Saskatoon Light & Power leadership on hosting a transformer-microgrid demonstration under its independent municipal distribution authority, ahead of any province-wide rollout. SL&P has not been engaged on this proposal."}),a.jsx("li",{children:"Publish a standardized tariff rider for new large-load interconnections above 50 MW with curtailable terms."}),a.jsx("li",{children:"Run a graded-service class pilot on a single winter-peaked rural feeder before generalising."})]})]})})]}),a.jsx("div",{className:"mt-4 flex justify-center",children:a.jsxs($,{to:"/education/future-grid/take-action",className:"inline-flex items-center gap-1.5 text-sm font-medium text-seva-primary hover:underline",children:["See the full take-action page with longer-form actions",a.jsx(Dt,{className:"w-4 h-4"})]})})]}),a.jsx("section",{className:"mb-12",children:a.jsx($,{to:"/education/future-grid/design-your-grid",className:"block group",children:a.jsx(X,{className:"card-seva shadow-seva border-seva-primary/40 bg-gradient-to-br from-seva-50/50 to-transparent dark:from-seva-900/15 dark:to-transparent transition-all duration-300 group-hover:-translate-y-0.5 group-hover:border-seva-primary/70 group-hover:shadow-lg",children:a.jsxs(Q,{className:"pt-6 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4",children:[a.jsxs("div",{children:[a.jsxs("p",{className:"font-semibold text-foreground mb-1 flex items-center gap-2",children:[a.jsx(Je,{className:"w-5 h-5 text-seva-primary group-hover:scale-110 transition-transform"}),"Design the grid yourself"]}),a.jsx("p",{className:"text-sm text-muted-foreground",children:"Interactive tool. Pick a starting scenario, dial each technology, and watch capacity coverage, annual generation, emissions, capex, and blended LCOE update live against Saskatchewan's annual peak and demand."})]}),a.jsxs("div",{className:"inline-flex items-center text-sm font-medium text-seva-primary shrink-0",children:["Open the tool",a.jsx(Dt,{className:"w-4 h-4 ml-1 group-hover:translate-x-1 transition-transform"})]})]})})})}),a.jsxs("section",{className:"mb-12",children:[a.jsxs("div",{className:"space-y-3 text-seva-body mb-5",children:[a.jsx("p",{children:"The path is a set of procurement, rate-design, and interconnection decisions that sit almost entirely within existing federal and provincial authorities. None of them require a new consensus on what the grid is for. All of them work whether firm clean capacity arrives on schedule, slips a decade, or arrives as a different technology than anyone is planning for today."}),a.jsx("p",{children:"If you take nothing else from this whitepaper, take the policy asks. They are short, specific, sourced, and tagged by audience. Share them with your MLA, your SaskPower board contact, or the advocacy group closest to the pillar you care about."})]}),a.jsx($,{to:"/policy-asks",className:"block group",children:a.jsx(X,{className:"card-seva shadow-seva border-seva-primary/40 bg-gradient-to-br from-seva-50/50 to-transparent dark:from-seva-900/15 dark:to-transparent transition-all duration-300 group-hover:-translate-y-0.5 group-hover:border-seva-primary/70 group-hover:shadow-lg",children:a.jsxs(Q,{className:"pt-6 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4",children:[a.jsxs("div",{children:[a.jsxs("p",{className:"font-semibold text-foreground mb-1 flex items-center gap-2",children:[a.jsx(wa,{className:"w-5 h-5 text-seva-primary group-hover:scale-110 transition-transform"}),"The policy asks, in one place"]}),a.jsx("p",{className:"text-sm text-muted-foreground",children:"Every concrete SEVA ask from the seven pillars, EV Grid Integration, and the Road-Use Charge campaign, grouped by topic and tagged by audience, ready to share with an MLA or a SaskPower board."})]}),a.jsxs("div",{className:"inline-flex items-center text-sm font-medium text-seva-primary shrink-0",children:["SEVA Policy Asks",a.jsx(Dt,{className:"w-4 h-4 ml-1 group-hover:translate-x-1 transition-transform"})]})]})})})]}),a.jsxs("section",{id:"sources",className:"mb-12 scroll-mt-20",children:[a.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[a.jsx(bs,{className:"w-5 h-5 text-seva-primary"}),a.jsx("h2",{className:"text-xl font-bold text-seva-section",children:"Primary sources"})]}),a.jsx(_e,{className:"mb-4"}),a.jsxs("p",{className:"text-sm text-muted-foreground mb-4",children:["Every statistic on every pillar page carries a source citation. The short list below is the backbone. Technical terms are dotted underlined on hover; the full glossary with search and tag filters lives on a"," ",a.jsx($,{to:"/education/glossary",className:"font-medium text-seva-primary hover:underline",children:"dedicated page"}),"."]}),a.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:"Some data-heavy images on this site were rendered with AI image tools from briefs and source citations the SEVA team wrote. The content, numbers, and sources are original SEVA work."}),a.jsx(yo,{sources:[{href:v.saskpowerAnnualReport2025_26,title:"SaskPower 2025-26 Annual Report",annotation:`Authoritative source for ${uo.toLocaleStr
5ing()} MW peak, ${fa.toLocaleString()} GWh supply, and $${(fo/1e6).toFixed(0)}M fuel and purchased power.`},{href:v.saskpowerAnnualReport2024_25Intensity,title:"SaskPower 2024-25 Annual Report",annotation:`Source for the ${b.skSupplyCarbonIntensityTco2PerGwh} tCO₂e/GWh supply-side carbon intensity (calendar 2024).`},{href:v.ltsp,title:"SaskPower Long-Term Supply Plan",annotation:`SaskPower's published roadmap to 2035 including coal retirement by ${ya(Oi)} and ${b.ltsp.windSolarAddMwBy2035.toLocaleString()} MW of wind and solar.`},{href:v.cerSkProfile,title:"Canada Energy Regulator Saskatchewan profile",annotation:"Federal corroboration that industrial, oilfield, and commercial customers take roughly three-quarters of SaskPower sales."},{href:v.cleanElectricityRegulations,title:"Clean Electricity Regulations SOR/2024-263",annotation:"Federal regulation setting emission standards for new and retrofit generation, with a Saskatchewan-specific equivalency order."},{href:v.sustainableJobs,title:"Canadian Sustainable Jobs Act (Bill C-50, Royal Assent 2024-06-20)",annotation:"Establishes the Sustainable Jobs Partnership Council and requires an Action Plan tabled by 2026. Funding channel for training expansion."},{href:v.fnpa,title:"First Nations Power Authority",annotation:"Saskatchewan-based Indigenous procurement vehicle behind Cowessess Awasis Solar, Pesakastew Solar, and the SaskPower 20 MW Solar Opportunity Agreement."},{href:v.ilgp,title:"Canada Indigenous Loan Guarantee Program",annotation:"$10B federal guarantee program supporting majority-Indigenous equity in energy and infrastructure projects. $20M to $1B per project."},{href:v.irena,title:"IRENA Renewable Power Generation Costs in 2025",annotation:"Global weighted-average installed cost and LCOE for onshore wind, solar PV, and storage. Base for the global-capex floor in scenario charts."},{href:v.bnef,title:"BloombergNEF 2025 Battery Price Survey",annotation:`December 2025 stationary LFP pack price of US$${co}/kWh (record low). Turnkey battery costs fell 31% in 2025 after a 40% fall in 2024 per Ember's tracking of BNEF.`},{href:v.cec,title:"Clean Energy Canada, A Pivotal Moment",annotation:"Clean-energy jobs forecast: Saskatchewan roughly doubling by 2030, with prairie provinces leading national growth."},{href:v.gemBd3,title:"Global Energy Monitor: Boundary Dam Integrated CCS",annotation:`Independent asset-level tracker of BD3 capture against the ${(Zt/1e6).toFixed(0)} Mt per year design pace; its end-2023 tally sat under 5.8 Mt. SaskPower's own quarterly updates put cumulative capture at ${(ga/1e6).toFixed(2)} Mt through Q1 2026.`},{href:v.gemCoalExtension,title:"Global Energy Monitor: SaskPower coal-extension directive",annotation:"Tracks the June 2025 provincial directive extending Boundary Dam, Shand, and Poplar River beyond LTSP retirement dates. Cross-reference for the policy reversal."},{href:v.ieaElectricity2026,title:"IEA Electricity 2026",annotation:"Global electricity outlook: demand growing more than twice as fast as total energy demand; low-emissions sources supplied roughly 60 percent of 2025 demand growth."},{href:v.ieaWeoAps2025,title:"IEA World Energy Outlook 2025, Announced Pledges Scenario",annotation:"Scenario in which governments meet stated climate commitments. Under the APS, oil demand is projected to fall from roughly 105 Mb/d today to roughly 57 Mb/d by 2050. The IEA's stated-policies and current-policies scenarios sit higher; supply-side OPEC and ExxonMobil forecasts higher still. Including the APS as a planning input avoids treating supply-side projections as the only credible curve."},{href:v.emberElectrification,title:"Ember: The Electrification Imperative",annotation:"Independent analysis of how electrification reduces total final energy demand because electric end-use devices are several times more efficient than fossil equivalents."},{href:v.pew2026,title:"Pew Charitable Trusts, Distributed Energy Can Unleash the Resilient, Affordable Grid of the Future (April 2026)",annotation:"Bipartisan policy playbook on US distributed energy. Advisory council co-chaired by former FERC chair Pat Wood III and former NY PSC chair Audrey Zibelman. Six recommendations apply to vertically-integrated, ISO/RTO, and retail-compet
5ition utility structures alike."},{href:v.brattleRealReliability,title:"Hledik & Peters, Real Reliability: The Value of Virtual Power (Brattle Group, 2023)",annotation:"Headline finding cited in Pew 2026: virtual power plants deliver firm peak capacity at 40 to 60 percent of the cost of conventional resources. The figure is a cost per accredited MW, so in a winter-peaking province it depends on the duration procured (E3 credits four-hour demand response at 55 percent of nameplate in winter, ten-hour at 82 to 84 percent)."},{href:v.e3DrAccreditation,title:"E3, The Capacity Accreditation of Demand Response in SPP (October 2025)",annotation:"Effective load carrying capability of demand response in the market Saskatchewan is expanding its intertie into: 83 percent in summer but 55 percent in winter for a four-hour resource, falling to 36 percent by 2030, against 82 to 84 percent in winter for a ten-hour one. Duration matters more than the seasonal call limit, which is the binding caveat on flexibility-as-capacity claims in a winter-peaking province."},{href:v.woodMacDerOutlook2024,title:"Wood Mackenzie, US Distributed Energy Resource (DER) Outlook 2024",annotation:"Forecasts 217 GW of new US DER capacity 2024-2028, roughly equal to the entire US coal fleet and roughly twice projected data-centre demand growth through 2035."},{href:v.woodMacVppReport2025,title:"Wood Mackenzie, 2025 North America Virtual Power Plant Report",annotation:"North American VPP capacity reached 37.5 GW in 2025 with under 20 percent of installed DER capacity enrolled. Year-over-year growth 13.7 percent."},{href:v.eeiCapex2025,title:"Edison Electric Institute, Strengthening America's Energy Infrastructure (2025)",annotation:"Investor-owned electric companies in the United States expect to spend $1.1 trillion on grid infrastructure 2025-2029, the bulk of it on conventional T&D rebuild rather than distributed alternatives."},{href:v.texasSb1202,title:"Texas SB 1202 (third-party residential DER permitting, 2025)",annotation:"Bipartisan-passed law authorizing licensed third-party reviewers (master electricians) to inspect and approve residential solar, storage, and standby-power installations within a 3-business-day window. Cited as evidence that DER policy is a stakeholder-and-outcomes question rather than a partisan one."}],further:[{href:"https://doi.org/10.1002/wcc.768",title:"Grubert, E. & Hastings-Simon, S. (2022). Designing the mid-transition: A review of medium-term challenges for coordinated decarbonization in the United States. WIREs Climate Change 13(3), e768.",annotation:"The framework for the period the seven pillars plan through: fossil and zero-carbon systems running side by side at comparable scale, each constraining the other. The Economic and Firm Power pillars apply its overlap-cost and falling-utilization arguments to Saskatchewan's coal-extension decision."},{href:"https://openinframap.org/#6/54/-106",title:"OpenInfraMap: Saskatchewan view",annotation:"Interactive OpenStreetMap-based transmission, substation, and plant visualization. Use it to drill into specific corridors shown on the atlas map above."},{href:"https://opengridworks.com/power-plants?bubbleScale=0.65",title:"OpenGridWorks continental power-plant visualization",annotation:"Bubble-scale visualization of North American generation fleet by type and nameplate. Useful for placing Saskatchewan's ~4 GW fleet in continental context."},{href:v.hislopMoleculesVsElectrons,title:"Markham Hislop: Molecules vs Electrons, The Real Energy Revolution (2026-04-20)",annotation:"Frames the transition as a shift from a molecules-based energy system to an electrons-based one. Substack article and YouTube video; the molecules-vs-electrons lens shapes how the Electrification section of this hub is structured."},{href:v.everythingElectricRosenow,title:"Everything Electric TECH: Prof. Jan Rosenow on electrification efficiency (2026-04-20)",annotation:"Podcast interview making the case that electricity is only ~20% of global final energy while mobility and heat are the hidden 80%. The 3-4× end-use efficiency gap cited here comes from Rosenow's summary rather than a primary paper."}]})]})]})]})}export{ch as default};

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