{"version":3,"file":"static/js/main.febac0e4.js","mappings":"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","sources":["../node_modules/d3-celestial/celestial.js","../node_modules/d3-celestial/lib/d3.geo.projection.js","../node_modules/d3-celestial/lib/d3.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@remix-run/router/history.ts","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@remix-run/router/utils.ts","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","components/Header/Header.js","components/Contexts/MessageContext.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-select/dist/useStateManager-7e1e8489.esm.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/react/dist/emotion-element-c39617d8.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/utils/dom/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/react-select/dist/react-select.esm.js","components/Contexts/SearchParamsContext.js","components/PhysicalObjectSelect/PhysicalObjectSelect.js","components/EventSelect/EventSelect.js","components/MessengerType/MessengerType.js","components/SearchButton/SearchButton.js","api/loadRecords.js","api/apiServices.js","components/FlowInput/FlowInput.js","components/TransientInput/TransientInput.js","components/CoordinatesInput/CoordinatesInput.js","components/AstromapIcon/AstromapIcon.js","components/SearchPanel/SearchPanel.js","pages/HomePage.js","pages/StarMapPage/celestialConfig.js","pages/StarMapPage/StarMapPage.js","components/CollapsedSearchPanel/CollapsedSearchPanel.js","pages/MessagePage/MessagePage.js","App.js","reportWebVitals.js","index.js"],"sourcesContent":["// Copyright 2015-2020 Olaf Frohn https://github.com/ofrohn, see LICENSE\n!(function() {\r\nvar Celestial = {\r\n version: '0.7.35',\r\n container: null,\r\n data: []\r\n};\r\n\r\nvar ANIMDISTANCE = 0.035, // Rotation animation threshold, ~2deg in radians\r\n ANIMSCALE = 1.4, // Zoom animation threshold, scale factor\r\n ANIMINTERVAL_R = 2000, // Rotation duration scale in ms\r\n ANIMINTERVAL_P = 2500, // Projection duration in ms\r\n ANIMINTERVAL_Z = 1500, // Zoom duration scale in ms\r\n zoomextent = 10, // Default maximum extent of zoom (max/min)\r\n zoomlevel = 1; // Default zoom level, 1 = 100%\r\n\r\nvar cfg, mapProjection, parentElement, zoom, map, circle, daylight, starnames = {}, dsonames = {};\r\n\r\n// Show it all, with the given config, otherwise with default settings\r\nCelestial.display = function(config) {\r\n var animationID,\r\n container = Celestial.container,\r\n animations = [], \r\n current = 0, \r\n repeat = false;\r\n \r\n //Mash config with default settings, todo: if globalConfig exists, make another one\r\n cfg = settings.set(config).applyDefaults(config);\r\n if (isNumber(cfg.zoomextend)) zoomextent = cfg.zoomextend;\r\n if (isNumber(cfg.zoomlevel)) zoomlevel = cfg.zoomlevel;\r\n //if (cfg.disableAnimations) ANIMDISTANCE = Infinity;\r\n\r\n var parent = document.getElementById(cfg.container);\r\n if (parent) { \r\n parentElement = \"#\" + cfg.container;\r\n var st = window.getComputedStyle(parent, null);\r\n if (!parseInt(st.width) && !cfg.width) parent.style.width = px(parent.parentNode.clientWidth); \r\n } else { \r\n parentElement = \"body\"; \r\n parent = null; \r\n }\r\n \r\n var margin = [16, 16],\r\n width = getWidth(),\r\n canvaswidth = isNumber(cfg.background.width) ? width + cfg.background.width : width,\r\n pixelRatio = window.devicePixelRatio || 1,\r\n projectionSetting = getProjection(cfg.projection, cfg.projectionRatio);\r\n\r\n if (!projectionSetting) return;\r\n\r\n if (cfg.lines.graticule.lat && cfg.lines.graticule.lat.pos[0] === \"outline\") projectionSetting.scale -= 2;\r\n \r\n var ratio = projectionSetting.ratio,\r\n height = Math.round(width / ratio),\r\n canvasheight = Math.round(canvaswidth / ratio),\r\n scale = projectionSetting.scale * width/1024,\r\n starbase = cfg.stars.size, \r\n dsobase = cfg.dsos.size || starbase,\r\n starexp = cfg.stars.exponent,\r\n dsoexp = cfg.dsos.exponent || starexp, //Object size base & exponent\r\n adapt = 1,\r\n rotation = getAngles(cfg.center),\r\n path = cfg.datapath;\r\n \r\n if (parentElement !== \"body\") parent.style.height = px(canvasheight);\r\n \r\n mapProjection = Celestial.projection(cfg.projection).rotate(rotation).translate([canvaswidth/2, canvasheight/2]).scale(scale * zoomlevel);\r\n \r\n zoom = d3.geo.zoom().projection(mapProjection).center([canvaswidth/2, canvasheight/2]).scaleExtent([scale, scale * zoomextent]).on(\"zoom.redraw\", redraw);\r\n // Set initial zoom level\r\n scale *= zoomlevel;\r\n\r\n var canvas = d3.select(parentElement).selectAll(\"canvas\"),\r\n culture = (cfg.culture !== \"\" && cfg.culture !== \"iau\") ? cfg.culture : \"\";\r\n \r\n if (canvas[0].length === 0) canvas = d3.select(parentElement).append(\"canvas\");\r\n //canvas.attr(\"width\", width).attr(\"height\", height);\r\n canvas.style(\"width\", px(canvaswidth)).style(\"height\", px(canvasheight)).attr(\"width\", canvaswidth * pixelRatio).attr(\"height\", canvasheight * pixelRatio);\r\n var context = canvas.node().getContext(\"2d\"); \r\n context.setTransform(pixelRatio,0,0,pixelRatio,0,0);\r\n\r\n var graticule = d3.geo.graticule().minorStep([15,10]);\r\n \r\n map = d3.geo.path().projection(mapProjection).context(context);\r\n \r\n //parent div with id #celestial-map or body\r\n if (container) container.selectAll(parentElement + \" *\").remove();\r\n else container = d3.select(parentElement).append(\"container\");\r\n\r\n if (cfg.interactive) {\r\n canvas.call(zoom);\r\n d3.select(parentElement).on('dblclick', function () { zoomBy(1.5625); return false; });\r\n } else {\r\n canvas.attr(\"style\", \"cursor: default!important\");\r\n }\r\n\r\n setClip(projectionSetting.clip);\r\n\r\n d3.select(window).on('resize', resize);\r\n\r\n if (cfg.interactive === true && cfg.controls === true && $(\"celestial-zoomin\") === null) {\r\n d3.select(parentElement).append(\"input\").attr(\"type\", \"button\").attr(\"id\", \"celestial-zoomin\").attr(\"value\", \"\\u002b\").on(\"click\", function () { zoomBy(1.25); return false; });\r\n d3.select(parentElement).append(\"input\").attr(\"type\", \"button\").attr(\"id\", \"celestial-zoomout\").attr(\"value\", \"\\u2212\").on(\"click\", function () { zoomBy(0.8); return false; });\r\n }\r\n \r\n circle = d3.geo.circle().angle([90]); \r\n daylight = d3.geo.circle().angle([179.9]);\r\n\r\n form(cfg);\r\n \r\n if ($(\"error\") === null) d3.select(\"body\").append(\"div\").attr(\"id\", \"error\");\r\n\r\n if ($(\"loc\") === null) geo(cfg);\r\n else if (cfg.location === true && cfg.follow === \"zenith\") rotate({center: Celestial.zenith()});\r\n\r\n if (cfg.location === true || cfg.formFields.location === true) {\r\n d3.select(parentElement + \" #location\").style(\"display\", \"inline-block\");\r\n fldEnable(\"horizon-show\", projectionSetting.clip);\r\n fldEnable(\"daylight-show\", !projectionSetting.clip);\r\n }\r\n\r\n function load() {\r\n //Background\r\n setClip(projectionSetting.clip);\r\n container.append(\"path\").datum(graticule.outline).attr(\"class\", \"outline\"); \r\n container.append(\"path\").datum(circle).attr(\"class\", \"horizon\");\r\n container.append(\"path\").datum(daylight).attr(\"class\", \"daylight\");\r\n //Celestial planes\r\n if (cfg.transform === \"equatorial\") graticule.minorStep([15,10]);\r\n else graticule.minorStep([10,10]);\r\n for (var key in cfg.lines) {\r\n if (!has(cfg.lines, key)) continue;\r\n if (key === \"graticule\") {\r\n container.append(\"path\").datum(graticule).attr(\"class\", \"graticule\"); \r\n if (has(cfg.lines.graticule, \"lon\") && cfg.lines.graticule.lon.pos.length > 0) \r\n container.selectAll(parentElement + \" .gridvalues_lon\")\r\n .data(getGridValues(\"lon\", cfg.lines.graticule.lon.pos))\r\n .enter().append(\"path\")\r\n .attr(\"class\", \"graticule_lon\"); \r\n if (has(cfg.lines.graticule, \"lat\") && cfg.lines.graticule.lat.pos.length > 0) \r\n container.selectAll(parentElement + \" .gridvalues_lat\")\r\n .data(getGridValues(\"lat\", cfg.lines.graticule.lat.pos))\r\n .enter().append(\"path\")\r\n .attr(\"class\", \"graticule_lat\"); \r\n } else {\r\n container.append(\"path\")\r\n .datum(d3.geo.circle().angle([90]).origin(transformDeg(poles[key], euler[cfg.transform])) )\r\n .attr(\"class\", key);\r\n }\r\n }\r\n\r\n //Milky way outline\r\n d3.json(path + \"mw.json\", function(error, json) {\r\n if (error) { \r\n window.alert(\"Data file could not be loaded or doesn't exist. See readme.md\");\r\n return console.warn(error); \r\n }\r\n\r\n var mw = getData(json, cfg.transform);\r\n var mw_back = getMwbackground(mw);\r\n\r\n container.selectAll(parentElement + \" .mway\")\r\n .data(mw.features)\r\n .enter().append(\"path\")\r\n .attr(\"class\", \"mw\");\r\n container.selectAll(parentElement + \" .mwaybg\")\r\n .data(mw_back.features)\r\n .enter().append(\"path\")\r\n .attr(\"class\", \"mwbg\");\r\n redraw();\r\n }); \r\n\r\n //Constellation names or designation\r\n d3.json(path + filename(\"constellations\"), function(error, json) {\r\n if (error) return console.warn(error);\r\n \r\n var con = getData(json, cfg.transform);\r\n container.selectAll(parentElement + \" .constnames\")\r\n .data(con.features)\r\n .enter().append(\"text\")\r\n .attr(\"class\", \"constname\");\r\n \r\n Celestial.constellations = getConstellationList(con);\r\n redraw();\r\n });\r\n\r\n //Constellation boundaries\r\n d3.json(path + filename(\"constellations\", \"borders\"), function(error, json) {\r\n if (error) return console.warn(error);\r\n \r\n //var cb = getData(topojson.feature(json, json.objects.constellations_bounds), cfg.transform);\r\n var cb = getData(json, cfg.transform);\r\n \r\n container.selectAll(parentElement + \" .bounds\")\r\n .data(cb.features)\r\n .enter().append(\"path\")\r\n .attr(\"class\", \"boundaryline\");\r\n redraw();\r\n });\r\n\r\n //Constellation lines\r\n d3.json(path + filename(\"constellations\", \"lines\"), function(error, json) {\r\n if (error) return console.warn(error);\r\n\r\n var conl = getData(json, cfg.transform);\r\n\r\n container.selectAll(parentElement + \" .lines\")\r\n .data(conl.features)\r\n .enter().append(\"path\")\r\n .attr(\"class\", \"constline\");\r\n\r\n listConstellations();\r\n redraw();\r\n });\r\n \r\n //Stars\r\n d3.json(path + cfg.stars.data, function(error, json) {\r\n if (error) return console.warn(error);\r\n\r\n var st = getData(json, cfg.transform);\r\n\r\n container.selectAll(parentElement + \" .stars\")\r\n .data(st.features)\r\n .enter().append(\"path\")\r\n .attr(\"class\", \"star\");\r\n redraw();\r\n\r\n });\r\n\r\n //Star names\r\n d3.json(path + filename(\"starnames\"), function(error, json) {\r\n if (error) return console.warn(error);\r\n Object.assign(starnames, json);\r\n redraw();\r\n });\r\n\r\n //Deep space objects\r\n d3.json(path + cfg.dsos.data, function(error, json) {\r\n if (error) return console.warn(error);\r\n \r\n var ds = getData(json, cfg.transform);\r\n\r\n container.selectAll(parentElement + \" .dsos\")\r\n .data(ds.features)\r\n .enter().append(\"path\")\r\n .attr(\"class\", \"dso\" );\r\n redraw();\r\n });\r\n\r\n //DSO names\r\n d3.json(path + filename(\"dsonames\"), function(error, json) {\r\n if (error) return console.warn(error);\r\n Object.assign(dsonames, json);\r\n redraw();\r\n });\r\n\r\n //Planets, Sun & Moon\r\n d3.json(path + filename(\"planets\"), function(error, json) {\r\n if (error) return console.warn(error);\r\n \r\n var pl = getPlanets(json, cfg.transform);\r\n\r\n container.selectAll(parentElement + \" .planets\")\r\n .data(pl)\r\n .enter().append(\"path\")\r\n .attr(\"class\", \"planet\");\r\n redraw();\r\n });\r\n\r\n if (Celestial.data.length > 0) { \r\n Celestial.data.forEach( function(d) {\r\n if (has(d, \"file\")) d3.json(d.file, d.callback);\r\n else setTimeout(d.callback, 0);\r\n }, this);\r\n }\r\n \r\n if (cfg.lang && cfg.lang != \"\") apply(Celestial.setLanguage(cfg.lang));\r\n //redraw();\r\n }\r\n \r\n // Zoom by factor; >1 larger <1 smaller \r\n function zoomBy(factor) {\r\n if (!factor || factor === 1) return;\r\n var sc0 = mapProjection.scale(),\r\n sc1 = sc0 * factor,\r\n ext = zoom.scaleExtent(),\r\n interval = ANIMINTERVAL_Z * Math.sqrt(Math.abs(1-factor));\r\n \r\n if (sc1 < ext[0]) sc1 = ext[0];\r\n if (sc1 > ext[1]) sc1 = ext[1];\r\n if (cfg.disableAnimations === true) { \r\n mapProjection.scale(sc1); \r\n zoom.scale(sc1); \r\n redraw(); \r\n return 0; \r\n }\r\n var zTween = d3.interpolateNumber(sc0, sc1);\r\n d3.select({}).transition().duration(interval).tween(\"scale\", function () {\r\n return function(t) {\r\n var z = zTween(t);\r\n mapProjection.scale(z); \r\n redraw(); \r\n };\r\n }).transition().duration(0).tween(\"scale\", function () {\r\n zoom.scale(sc1); \r\n redraw(); \r\n });\r\n return interval;\r\n } \r\n \r\n function apply(config) {\r\n cfg = settings.set(config); \r\n redraw();\r\n }\r\n\r\n\r\n function rotate(config) {\r\n var cFrom = cfg.center, \r\n rot = mapProjection.rotate(),\r\n sc = mapProjection.scale(),\r\n interval = ANIMINTERVAL_R,\r\n keep = false, \r\n cTween, zTween, oTween,\r\n oof = cfg.orientationfixed;\r\n \r\n if (Round(rot[1], 1) === -Round(config.center[1], 1)) keep = true; //keep lat fixed if equal\r\n cfg = cfg.set(config);\r\n var d = Round(d3.geo.distance(cFrom, cfg.center), 2);\r\n var o = d3.geo.distance([cFrom[2],0], [cfg.center[2],0]);\r\n if ((d < ANIMDISTANCE && o < ANIMDISTANCE) || cfg.disableAnimations === true) { \r\n rotation = getAngles(cfg.center);\r\n mapProjection.rotate(rotation);\r\n redraw();\r\n return 0; \r\n } \r\n // Zoom interpolator\r\n if (sc > scale * ANIMSCALE) zTween = d3.interpolateNumber(sc, scale);\r\n else zTween = function () { return sc; };\r\n // Orientation interpolator\r\n if (o === 0) oTween = function () { return rot[2]; };\r\n else oTween = interpolateAngle(cFrom[2], cfg.center[2]);\r\n if (d > 3.14) cfg.center[0] -= 0.01; //180deg turn doesn't work well\r\n cfg.orientationfixed = false; \r\n // Rotation interpolator\r\n if (d === 0) cTween = function () { return cfg.center; };\r\n else cTween = d3.geo.interpolate(cFrom, cfg.center);\r\n interval = (d !== 0) ? interval * d : interval * o; // duration scaled by ang. distance\r\n d3.select({}).transition().duration(interval).tween(\"center\", function () {\r\n return function(t) {\r\n var c = getAngles(cTween(t));\r\n c[2] = oTween(t);\r\n var z = t < 0.5 ? zTween(t) : zTween(1-t);\r\n if (keep) c[1] = rot[1]; \r\n mapProjection.scale(z);\r\n mapProjection.rotate(c);\r\n redraw();\r\n };\r\n }).transition().duration(0).tween(\"center\", function () {\r\n cfg.orientationfixed = oof;\r\n rotation = getAngles(cfg.center);\r\n mapProjection.rotate(rotation);\r\n redraw();\r\n });\r\n return interval;\r\n }\r\n \r\n function resize(set) {\r\n width = getWidth();\r\n if (cfg.width === width && !set) return;\r\n height = width/ratio;\r\n canvaswidth = isNumber(cfg.background.width) ? width + cfg.background.width : width;\r\n canvasheight = Math.round(canvaswidth / ratio);\r\n\r\n scale = projectionSetting.scale * width/1024;\r\n //canvas.attr(\"width\", width).attr(\"height\", height);\r\n canvas.style(\"width\", px(canvaswidth)).style(\"height\", px(canvasheight)).attr(\"width\", canvaswidth * pixelRatio).attr(\"height\", canvasheight * pixelRatio);\r\n zoom.scaleExtent([scale, scale * zoomextent]).scale(scale * zoomlevel);\r\n mapProjection.translate([canvaswidth/2, canvasheight/2]).scale(scale * zoomlevel);\r\n if (parent) parent.style.height = px(height);\r\n scale *= zoomlevel;\r\n redraw();\r\n }\r\n\r\n function reproject(config) {\r\n var prj = getProjection(config.projection, config.projectionRatio);\r\n if (!prj) return;\r\n \r\n var rot = mapProjection.rotate(), ctr = mapProjection.center(), sc = mapProjection.scale(), ext = zoom.scaleExtent(), clip = [],\r\n prjFrom = Celestial.projection(cfg.projection).center(ctr).translate([canvaswidth/2, canvasheight/2]).scale([ext[0]]),\r\n interval = ANIMINTERVAL_P, \r\n delay = 0, clipTween = null,\r\n rTween = d3.interpolateNumber(ratio, prj.ratio);\r\n\r\n if (projectionSetting.clip != prj.clip || cfg.disableAnimations === true) {\r\n interval = 0; // Different clip = no transition\r\n }\r\n /*if (projectionSetting.clip !== prj.clip) {\r\n clipTween = d3.interpolateNumber(projectionSetting.clip ? 90 : 180, prj.clip ? 90 : 180); // Clipangle from - to\r\n } else*/ setClip(prj.clip);\r\n \r\n var prjTo = Celestial.projection(config.projection).center(ctr).translate([canvaswidth/2, canvaswidth/prj.ratio/2]).scale([prj.scale * width/1024]);\r\n var bAdapt = cfg.adaptable;\r\n\r\n if (sc > ext[0]) {\r\n delay = zoomBy(0.1);\r\n setTimeout(reproject, delay, config);\r\n return delay + interval;\r\n }\r\n \r\n if (cfg.location || cfg.formFields.location) { \r\n fldEnable(\"horizon-show\", prj.clip);\r\n fldEnable(\"daylight-show\", !prj.clip);\r\n }\r\n \r\n mapProjection = projectionTween(prjFrom, prjTo);\r\n cfg.adaptable = false;\r\n\r\n d3.select({}).transition().duration(interval).tween(\"projection\", function () {\r\n return function(_) {\r\n mapProjection.alpha(_).rotate(rot);\r\n map.projection(mapProjection);\r\n /*if (clipTween) mapProjection.clipAngle(clipTween(_));\r\n else*/setClip(prj.clip);\r\n ratio = rTween(_);\r\n height = width/ratio;\r\n //canvas.attr(\"width\", width).attr(\"height\", height);\r\n canvas.style(\"width\", px(canvaswidth)).style(\"height\", px(canvasheight)).attr(\"width\", canvaswidth * pixelRatio).attr(\"height\", canvasheight * pixelRatio);\r\n if (parent) parent.style.height = px(canvasheight);\r\n redraw();\r\n };\r\n }).transition().duration(0).tween(\"projection\", function () {\r\n projectionSetting = prj;\r\n ratio = projectionSetting.ratio;\r\n height = width / projectionSetting.ratio;\r\n canvasheight = isNumber(cfg.background.width) ? height + cfg.background.width : height;\r\n scale = projectionSetting.scale * width/1024;\r\n //canvas.attr(\"width\", width).attr(\"height\", height);\r\n canvas.style(\"width\", px(canvaswidth)).style(\"height\", px(canvasheight)).attr(\"width\", canvaswidth * pixelRatio).attr(\"height\", canvasheight * pixelRatio);\r\n if (parent) parent.style.height = px(canvasheight);\r\n cfg.projection = config.projection;\r\n mapProjection = Celestial.projection(config.projection).rotate(rot).translate([canvaswidth/2, canvasheight/2]).scale(scale * zoomlevel);\r\n map.projection(mapProjection);\r\n setClip(projectionSetting.clip); \r\n zoom.projection(mapProjection).scaleExtent([scale, scale * zoomextent]).scale(scale * zoomlevel);\r\n cfg.adaptable = bAdapt;\r\n scale *= zoomlevel;\r\n redraw();\r\n });\r\n return interval;\r\n }\r\n\r\n \r\n function redraw() { \r\n var rot = mapProjection.rotate();\r\n \r\n context.setTransform(pixelRatio,0,0,pixelRatio,0,0);\r\n if (cfg.adaptable) adapt = Math.sqrt(mapProjection.scale()/scale);\r\n if (!adapt) adapt = 1;\r\n starbase = cfg.stars.size;\r\n starexp = cfg.stars.exponent;\r\n dsobase = cfg.dsos.size || starbase;\r\n dsoexp = cfg.dsos.exponent;\r\n \r\n if (cfg.orientationfixed && cfg.center.length > 2) {\r\n rot[2] = cfg.center[2]; \r\n mapProjection.rotate(rot);\r\n }\r\n cfg.center = [-rot[0], -rot[1], rot[2]];\r\n \r\n setCenter(cfg.center, cfg.transform);\r\n clear();\r\n \r\n drawOutline();\r\n \r\n //Draw all types of objects on the canvas\r\n if (cfg.mw.show) { \r\n container.selectAll(parentElement + \" .mw\").each(function(d) { setStyle(cfg.mw.style); map(d); context.fill(); });\r\n // paint mw-outside in background color\r\n if (cfg.transform !== \"supergalactic\" && cfg.background.opacity > 0.95)\r\n container.selectAll(parentElement + \" .mwbg\").each(function(d) { setStyle(cfg.background); map(d); context.fill(); });\r\n }\r\n \r\n for (var key in cfg.lines) {\r\n if (!has(cfg.lines, key)) continue;\r\n if (cfg.lines[key].show !== true) continue;\r\n setStyle(cfg.lines[key]);\r\n container.selectAll(parentElement + \" .\" + key).attr(\"d\", map); \r\n context.stroke(); \r\n }\r\n\r\n if (has(cfg.lines.graticule, \"lon\")) {\r\n setTextStyle(cfg.lines.graticule.lon);\r\n container.selectAll(parentElement + \" .graticule_lon\").each(function(d, i) { \r\n if (clip(d.geometry.coordinates)) {\r\n var pt = mapProjection(d.geometry.coordinates);\r\n gridOrientation(pt, d.properties.orientation);\r\n context.fillText(d.properties.value, pt[0], pt[1]); \r\n }\r\n });\r\n }\r\n \r\n if (has(cfg.lines.graticule, \"lat\")) {\r\n setTextStyle(cfg.lines.graticule.lat);\r\n container.selectAll(parentElement + \" .graticule_lat\").each(function(d, i) { \r\n if (clip(d.geometry.coordinates)) {\r\n var pt = mapProjection(d.geometry.coordinates);\r\n gridOrientation(pt, d.properties.orientation);\r\n context.fillText(d.properties.value, pt[0], pt[1]); \r\n }\r\n });\r\n }\r\n \r\n if (cfg.constellations.bounds) { \r\n container.selectAll(parentElement + \" .boundaryline\").each(function(d) { \r\n setStyle(cfg.constellations.boundStyle); \r\n if (Celestial.constellation) {\r\n var re = new RegExp(\"\\\\b\" + Celestial.constellation + \"\\\\b\");\r\n if (d.ids.search(re) !== -1) {\r\n context.lineWidth *= 1.5;\r\n context.globalAlpha = 1;\r\n context.setLineDash([]);\r\n }\r\n }\r\n map(d); \r\n context.stroke(); \r\n });\r\n context.setLineDash([]);\r\n }\r\n\r\n if (cfg.constellations.lines) { \r\n container.selectAll(parentElement + \" .constline\").each(function(d) { \r\n setStyleA(d.properties.rank, cfg.constellations.lineStyle); \r\n map(d); \r\n context.stroke(); \r\n });\r\n }\r\n \r\n drawOutline(true); \r\n\r\n if (cfg.constellations.names) { \r\n //setTextStyle(cfg.constellations.nameStyle);\r\n container.selectAll(parentElement + \" .constname\").each( function(d) { \r\n if (clip(d.geometry.coordinates)) {\r\n setStyleA(d.properties.rank, cfg.constellations.nameStyle);\r\n var pt = mapProjection(d.geometry.coordinates);\r\n context.fillText(constName(d), pt[0], pt[1]); \r\n }\r\n });\r\n }\r\n \r\n\r\n if (cfg.stars.show) { \r\n setStyle(cfg.stars.style);\r\n container.selectAll(parentElement + \" .star\").each(function(d) {\r\n if (clip(d.geometry.coordinates) && d.properties.mag <= cfg.stars.limit) {\r\n var pt = mapProjection(d.geometry.coordinates),\r\n r = starSize(d);\r\n context.fillStyle = starColor(d); \r\n context.beginPath();\r\n context.arc(pt[0], pt[1], r, 0, 2 * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n if (cfg.stars.designation && d.properties.mag <= cfg.stars.designationLimit*adapt) {\r\n setTextStyle(cfg.stars.designationStyle);\r\n context.fillText(starDesignation(d.id), pt[0]+r, pt[1]);\r\n }\r\n if (cfg.stars.propername && d.properties.mag <= cfg.stars.propernameLimit*adapt) {\r\n setTextStyle(cfg.stars.propernameStyle);\r\n context.fillText(starPropername(d.id), pt[0]-r, pt[1]);\r\n }\r\n }\r\n });\r\n }\r\n \r\n if (cfg.dsos.show) { \r\n container.selectAll(parentElement + \" .dso\").each(function(d) {\r\n if (clip(d.geometry.coordinates) && dsoDisplay(d.properties, cfg.dsos.limit)) {\r\n var pt = mapProjection(d.geometry.coordinates),\r\n type = d.properties.type;\r\n if (cfg.dsos.colors === true) setStyle(cfg.dsos.symbols[type]);\r\n else setStyle(cfg.dsos.style);\r\n var r = dsoSymbol(d, pt);\r\n if (has(cfg.dsos.symbols[type], \"stroke\")) context.stroke();\r\n else context.fill();\r\n \r\n if (cfg.dsos.names && dsoDisplay(d.properties, cfg.dsos.nameLimit*adapt)) {\r\n setTextStyle(cfg.dsos.nameStyle);\r\n if (cfg.dsos.colors === true) context.fillStyle = cfg.dsos.symbols[type].fill;\r\n context.fillText(dsoName(d), pt[0]+r, pt[1]-r); \r\n }\r\n }\r\n });\r\n }\r\n\r\n if ((cfg.location || cfg.formFields.location) && cfg.planets.show && Celestial.origin) { \r\n var dt = Celestial.date(),\r\n o = Celestial.origin(dt).spherical();\r\n container.selectAll(parentElement + \" .planet\").each(function(d) {\r\n var id = d.id(), r = 12 * adapt,\r\n p = d(dt).equatorial(o),\r\n pos = transformDeg(p.ephemeris.pos, euler[cfg.transform]); //transform; \r\n if (clip(pos)) {\r\n var pt = mapProjection(pos),\r\n sym = cfg.planets.symbols[id];\r\n if (cfg.planets.symbolType === \"letter\") {\r\n setTextStyle(cfg.planets.symbolStyle);\r\n context.fillStyle = sym.fill;\r\n context.fillText(sym.letter, pt[0], pt[1]);\r\n } else if (id === \"lun\") {\r\n if (has(sym, \"size\") && isNumber(sym.size)) r = sym.size * adapt;\r\n context.fillStyle = sym.fill;\r\n Canvas.symbol().type(\"crescent\").size(r*r).age(p.ephemeris.age).position(pt)(context);\r\n } else if (cfg.planets.symbolType === \"disk\") {\r\n r = has(sym, \"size\") && isNumber(sym.size) ? sym.size * adapt : planetSize(p.ephemeris);\r\n context.fillStyle = sym.fill;\r\n Canvas.symbol().type(\"circle\").size(r*r).position(pt)(context);\r\n context.fill();\r\n } else if (cfg.planets.symbolType === \"symbol\") {\r\n setTextStyle(cfg.planets.symbolStyle);\r\n context.font = planetSymbol(cfg.planets.symbolStyle.font);\r\n context.fillStyle = sym.fill;\r\n context.fillText(sym[cfg.planets.symbolType], pt[0], pt[1]); \r\n }\r\n //name\r\n if (cfg.planets.names) {\r\n var name = p[cfg.planets.namesType];\r\n setTextStyle(cfg.planets.nameStyle);\r\n //context.direction = \"ltr\" || \"rtl\" ar il ir\r\n context.fillStyle = sym.fill;\r\n context.fillText(name, pt[0] - r/2, pt[1] + r/2); \r\n }\r\n }\r\n });\r\n }\r\n \r\n if (Celestial.data.length > 0) { \r\n Celestial.data.forEach( function(d) {\r\n d.redraw();\r\n });\r\n }\r\n \r\n if ((cfg.location || cfg.formFields.location) && cfg.daylight.show && projectionSetting.clip) {\r\n var sol = getPlanet(\"sol\");\r\n if (sol) {\r\n var up = Celestial.zenith(),\r\n solpos = sol.ephemeris.pos,\r\n dist = d3.geo.distance(up, solpos),\r\n pt = mapProjection(solpos);\r\n\r\n daylight.origin(solpos);\r\n setSkyStyle(dist, pt);\r\n container.selectAll(parentElement + \" .daylight\").datum(daylight).attr(\"d\", map);\r\n context.fill(); \r\n context.fillStyle = \"#fff\"; \r\n if (clip(solpos)) {\r\n context.beginPath();\r\n context.arc(pt[0], pt[1], 6, 0, 2 * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n }\r\n }\r\n }\r\n\r\n if ((cfg.location || cfg.formFields.location) && cfg.horizon.show && !projectionSetting.clip) {\r\n circle.origin(Celestial.nadir());\r\n setStyle(cfg.horizon);\r\n container.selectAll(parentElement + \" .horizon\").datum(circle).attr(\"d\", map); \r\n context.fill(); \r\n if (cfg.horizon.stroke) context.stroke(); \r\n }\r\n\r\n if (cfg.controls) { \r\n zoomState(mapProjection.scale());\r\n }\r\n \r\n if (hasCallback) { \r\n Celestial.runCallback();\r\n }\r\n \r\n //Celestial.updateForm();\r\n\r\n }\r\n \r\n\r\n function drawOutline(stroke) {\r\n var rot = mapProjection.rotate(),\r\n prj = getProjection(cfg.projection, config.projectionRatio);\r\n \r\n mapProjection.rotate([0,0]);\r\n setStyle(cfg.background);\r\n container.selectAll(parentElement + \" .outline\").attr(\"d\", map);\r\n if (stroke === true) {\r\n context.globalAlpha = 1; \r\n context.stroke(); \r\n } else {\r\n context.fill();\r\n }\r\n mapProjection.rotate(rot);\r\n }\r\n\r\n // Helper functions -------------------------------------------------\r\n \r\n function clip(coords) {\r\n return projectionSetting.clip && d3.geo.distance(cfg.center, coords) > halfπ ? 0 : 1;\r\n }\r\n\r\n function setStyle(s) {\r\n context.fillStyle = s.fill || null;\r\n context.strokeStyle = s.stroke || null;\r\n context.lineWidth = s.width || null;\r\n context.globalAlpha = s.opacity !== null ? s.opacity : 1; \r\n context.font = s.font || null;\r\n if (has(s, \"dash\")) context.setLineDash(s.dash); else context.setLineDash([]);\r\n context.beginPath();\r\n }\r\n\r\n function setTextStyle(s) {\r\n context.fillStyle = s.fill;\r\n context.textAlign = s.align || \"left\";\r\n context.textBaseline = s.baseline || \"bottom\";\r\n context.globalAlpha = s.opacity !== null ? s.opacity : 1; \r\n context.font = s.font;\r\n }\r\n\r\n function setStyleA(rank, s) {\r\n rank = rank || 1;\r\n context.fillStyle = isArray(s.fill) ? s.fill[rank-1] : null;\r\n context.strokeStyle = isArray(s.stroke) ? s.stroke[rank-1] : null;\r\n context.lineWidth = isArray(s.width) ? s.width[rank-1] : null;\r\n context.globalAlpha = isArray(s.opacity) ? s.opacity[rank-1] : 1; \r\n context.font = isArray(s.font) ? s.font[rank-1] : null;\r\n if (has(s, \"dash\")) context.setLineDash(s.dash); else context.setLineDash([]);\r\n context.textAlign = s.align || \"left\";\r\n context.textBaseline = s.baseline || \"bottom\";\r\n context.beginPath();\r\n }\r\n\r\n function setSkyStyle(dist, pt) {\r\n var factor, color1, color2, color3,\r\n upper = 1.36, \r\n lower = 1.885;\r\n \r\n if (dist > lower) {\r\n context.fillStyle = \"transparent\"; \r\n context.globalAlpha = 0;\r\n return;\r\n }\r\n \r\n if (dist <= upper) { \r\n color1 = \"#daf1fa\";\r\n color2 = \"#93d7f0\"; \r\n color3 = \"#57c0e8\"; \r\n factor = -(upper-dist) / 10; \r\n } else {\r\n factor = (dist - upper) / (lower - upper);\r\n color1 = d3.interpolateLab(\"#daf1fa\", \"#e8c866\")(factor);\r\n color2 = d3.interpolateLab(\"#93c7d0\", \"#ff854a\")(factor);\r\n color3 = d3.interpolateLab(\"#57b0c8\", \"#6caae2\")(factor);\r\n }\r\n var grad = context.createRadialGradient(pt[0],pt[1],0, pt[0],pt[1],300);\r\n grad.addColorStop(0, color1);\r\n grad.addColorStop(0.2+0.4*factor, color2);\r\n grad.addColorStop(1, color3);\r\n context.fillStyle = grad;\r\n context.globalAlpha = 0.9 * (1 - skyTransparency(factor, 1.4));\r\n }\r\n \r\n function skyTransparency(t, a) {\r\n return (Math.pow(Math.E, t*a) - 1) / (Math.pow(Math.E, a) - 1);\r\n }\r\n \r\n function zoomState(sc) {\r\n var czi = $(\"celestial-zoomin\"),\r\n czo = $(\"celestial-zoomout\"),\r\n defscale = projectionSetting.scale * width/1024;\r\n if (!czi || !czo) return;\r\n czi.disabled = sc >= defscale * zoomextent * 0.99;\r\n czo.disabled = sc <= defscale; \r\n }\r\n \r\n function setClip(setit) {\r\n if (setit) { mapProjection.clipAngle(90); } \r\n else { mapProjection.clipAngle(null); } \r\n }\r\n \r\n function filename(what, sub, ext) {\r\n var cult = (has(formats[what], culture)) ? \".\" + culture : \"\";\r\n ext = ext ? \".\" + ext : \".json\";\r\n sub = sub ? \".\" + sub : \"\";\r\n return what + sub + cult + ext;\r\n }\r\n \r\n function dsoDisplay(prop, limit) {\r\n return prop.mag === 999 && Math.sqrt(parseInt(prop.dim)) > limit ||\r\n prop.mag !== 999 && prop.mag <= limit;\r\n }\r\n \r\n function dsoSymbol(d, pt) {\r\n var prop = d.properties;\r\n var size = dsoSize(prop) || 9,\r\n type = dsoShape(prop.type);\r\n Canvas.symbol().type(type).size(size).position(pt)(context);\r\n return Math.sqrt(size)/2;\r\n }\r\n\r\n function dsoShape(type) {\r\n if (!type || !has(cfg.dsos.symbols, type)) return \"circle\"; \r\n else return cfg.dsos.symbols[type].shape; \r\n }\r\n\r\n function dsoSize(prop) {\r\n if (!prop.mag || prop.mag === 999) return Math.pow(parseInt(prop.dim) * dsobase * adapt / 7, 0.5); \r\n return Math.pow(2 * dsobase * adapt - prop.mag, dsoexp);\r\n }\r\n \r\n\r\n function dsoName(d) {\r\n //return d.properties[cfg.dsos.namesType]; \r\n var lang = cfg.dsos.namesType, id = d.id;\r\n if (lang === \"desig\" || !has(dsonames, id)) return d.properties.desig;\r\n return has(dsonames[id], lang) ? dsonames[id][lang] : d.properties.desig; \r\n }\r\n \r\n /* Star designation */\r\n function starDesignation(id) {\r\n if (!has(starnames, id)) return \"\";\r\n return starnames[id][cfg.stars.designationType]; \r\n }\r\n\r\n function starPropername(id) {\r\n var lang = cfg.stars.propernameType;\r\n if (!has(starnames, id)) return \"\";\r\n return has(starnames[id], lang) ? starnames[id][lang] : starnames[id].name; \r\n }\r\n \r\n function starSize(d) {\r\n var mag = d.properties.mag;\r\n if (mag === null) return 0.1; \r\n var r = starbase * adapt * Math.exp(starexp * (mag+2));\r\n return Math.max(r, 0.1);\r\n }\r\n\r\n \r\n function starColor(d) {\r\n var bv = d.properties.bv;\r\n if (!cfg.stars.colors || isNaN(bv)) {return cfg.stars.style.fill; }\r\n return bvcolor(bv);\r\n }\r\n \r\n function constName(d) { \r\n return d.properties[cfg.constellations.namesType]; \r\n }\r\n\r\n function planetSize(d) {\r\n var mag = d.mag;\r\n if (mag === null) return 2; \r\n var r = 4 * adapt * Math.exp(-0.05 * (mag+2));\r\n return Math.max(r, 2);\r\n }\r\n \r\n function planetSymbol(s) {\r\n var size = s.replace(/(^\\D*)(\\d+)(\\D.+$)/i,'$2');\r\n size = Math.round(adapt * size);\r\n return s.replace(/(^\\D*)(\\d+)(\\D.+$)/i,'$1' + size + '$3');\r\n }\r\n \r\n function gridOrientation(pos, orient) {\r\n var o = orient.split(\"\"), h = \"center\", v = \"middle\"; \r\n for (var i = o.length-1; i >= 0; i--) {\r\n switch(o[i]) {\r\n case \"N\": v = \"bottom\"; break;\r\n case \"S\": v = \"top\"; break;\r\n case \"E\": h = \"left\"; pos[0] += 2; break;\r\n case \"W\": h = \"right\"; pos[0] -= 2; break;\r\n }\r\n }\r\n context.textAlign = h;\r\n context.textBaseline = v;\r\n return pos;\r\n }\r\n \r\n function clear() {\r\n context.clearRect(0, 0, canvaswidth + margin[0], canvasheight + margin[1]);\r\n }\r\n \r\n function getWidth() {\r\n var w = 0;\r\n if (isNumber(cfg.width) && cfg.width > 0) w = cfg.width;\r\n else if (parent) w = parent.getBoundingClientRect().width - margin[0] *2;\r\n else w = window.getBoundingClientRect().width - margin[0]*2;\r\n //if (isNumber(cfg.background.width)) w -= cfg.background.width;\r\n return w;\r\n }\r\n \r\n function getProjection(p, ratioOverride) {\r\n if (!has(projections, p)) return;\r\n var res = projections[p];\r\n if (!has(res, \"ratio\")) res.ratio = 2; // Default w/h ratio 2:1 \r\n res.ratio = ratioOverride ? ratioOverride : res.ratio;\r\n return res;\r\n }\r\n \r\n \r\n function animate() {\r\n if (!animations || animations.length < 1) return;\r\n\r\n var d, a = animations[current];\r\n \r\n switch (a.param) {\r\n case \"projection\": d = reproject({projection:a.value}); break;\r\n case \"center\": d = rotate({center:a.value}); break;\r\n case \"zoom\": d = zoomBy(a.value);\r\n }\r\n if (a.callback) setTimeout(a.callback, d);\r\n current++;\r\n if (repeat === true && current === animations.length) current = 0;\r\n d = a.duration === 0 || a.duration < d ? d : a.duration;\r\n if (current < animations.length) animationID = setTimeout(animate, d);\r\n }\r\n \r\n function stop() {\r\n clearTimeout(animationID);\r\n //current = 0;\r\n //repeat = false;\r\n }\r\n\r\n \r\n // Exported objects and functions for adding data\r\n this.container = container;\r\n this.clip = clip;\r\n this.map = map;\r\n this.mapProjection = mapProjection;\r\n this.context = context;\r\n this.metrics = function() {\r\n return {\"width\": width, \"height\": height, \"margin\": margin, \"scale\": mapProjection.scale()};\r\n };\r\n this.setStyle = setStyle;\r\n this.setTextStyle = setTextStyle;\r\n this.setStyleA = setStyleA;\r\n this.setConstStyle = function(rank, font) { \r\n var f = arrayfy(font);\r\n context.font = f[rank]; \r\n };\r\n this.symbol = Canvas.symbol;\r\n this.dsoSymbol = dsoSymbol;\r\n this.redraw = redraw; \r\n this.resize = function(config) { \r\n if (config !== undefined) { \r\n if (has(config, \"width\")) cfg.width = config.width; \r\n else if (isNumber(config)) cfg.width = config;\r\n }\r\n resize(true); \r\n return cfg.width;\r\n }; \r\n this.reload = function(config) { \r\n var ctr;\r\n //if (!config || !has(config, \"transform\")) return;\r\n //cfg.transform = config.transform; \r\n if (config) Object.assign(cfg, settings.set(config));\r\n if (cfg.follow === \"center\" && has(cfg, \"center\")) {\r\n ctr = getAngles(cfg.center);\r\n } else if (cfg.follow === \"zenith\") {\r\n ctr = getAngles(Celestial.zenith());\r\n } \r\n if (ctr) mapProjection.rotate(ctr);\r\n container.selectAll(parentElement + \" *\").remove(); \r\n load(); \r\n }; \r\n this.apply = function(config) { apply(config); }; \r\n this.reproject = function(config) { return reproject(config); }; \r\n this.rotate = function(config) { if (!config) return cfg.center; return rotate(config); }; \r\n this.zoomBy = function(factor) { if (!factor) return mapProjection.scale()/scale; return zoomBy(factor); };\r\n this.color = function(type) {\r\n if (!type) return \"#000\";\r\n if (has(cfg.dsos.symbols, type)) return cfg.dsos.symbols[type].fill;\r\n return \"#000\";\r\n };\r\n this.starColor = starColor;\r\n this.animate = function(anims, dorepeat) { \r\n if (!anims) return; \r\n animations = anims; \r\n current = 0; \r\n repeat = dorepeat ? true : false; \r\n animate(); \r\n };\r\n this.stop = function(wipe) {\r\n stop();\r\n if (wipe === true) animations = [];\r\n };\r\n this.go = function(index) {\r\n if (animations.length < 1) return;\r\n if (index && index < animations.length) current = index;\r\n animate(); \r\n };\r\n\r\n /* obsolete\r\n if (!has(this, \"date\"))\r\n this.date = function() { console.log(\"Celestial.date() needs config.location = true to work.\" ); };\r\n */\r\n load();\r\n};\r\n \r\n//Export entire object if invoked by require\r\nif (typeof module === \"object\" && module.exports) {\r\n var d3js = require('./lib/d3.js'),\r\n d3_geo_projection = require('./lib/d3.geo.projection.js');\r\n module.exports = {\r\n Celestial: function() { return Celestial; },\r\n d3: function() { return d3js; },\r\n \"d3.geo.projection\": function() { return d3_geo_projection; }\r\n };\r\n}\r\n\r\n//Flipped projection generated on the fly\r\nCelestial.projection = function(projection) {\r\n var p, raw, forward;\r\n \r\n if (!has(projections, projection)) { throw new Error(\"Projection not supported: \" + projection); }\r\n p = projections[projection]; \r\n\r\n if (p.arg !== null) {\r\n raw = d3.geo[projection].raw(p.arg);\r\n } else {\r\n raw = d3.geo[projection].raw; \r\n }\r\n \r\n forward = function(λ, φ) {\r\n var coords = raw(-λ, φ);\r\n return coords;\r\n };\r\n\r\n forward.invert = function(x, y) {\r\n try {\r\n var coords = raw.invert(x, y);\r\n coords[0] = coords && -coords[0];\r\n return coords;\r\n } catch(e) { console.log(e); }\r\n };\r\n\r\n return d3.geo.projection(forward);\r\n};\r\n\r\n\r\nfunction projectionTween(a, b) {\r\n var prj = d3.geo.projection(raw).scale(1),\r\n center = prj.center,\r\n translate = prj.translate,\r\n α;\r\n\r\n function raw(λ, φ) {\r\n var pa = a([λ *= 180 / Math.PI, φ *= 180 / Math.PI]), pb = b([λ, φ]);\r\n return [(1 - α) * pa[0] + α * pb[0], (α - 1) * pa[1] - α * pb[1]];\r\n }\r\n\r\n prj.alpha = function(_) {\r\n if (!arguments.length) return α;\r\n α = +_;\r\n var ca = a.center(), cb = b.center(),\r\n ta = a.translate(), tb = b.translate();\r\n \r\n center([(1 - α) * ca[0] + α * cb[0], (1 - α) * ca[1] + α * cb[1]]);\r\n translate([(1 - α) * ta[0] + α * tb[0], (1 - α) * ta[1] + α * tb[1]]);\r\n return prj;\r\n };\r\n\r\n delete prj.translate;\r\n delete prj.center;\r\n return prj.alpha(0);\r\n}\r\n\r\nvar eulerAngles = {\r\n \"equatorial\": [0.0, 0.0, 0.0],\r\n \"ecliptic\": [0.0, 0.0, 23.4393],\r\n \"galactic\": [93.5949, 28.9362, -58.5988],\r\n \"supergalactic\": [137.3100, 59.5283, 57.7303]\r\n// \"mars\": [97.5,23.5,29]\r\n};\r\n\r\nvar poles = {\r\n \"equatorial\": [0.0, 90.0],\r\n \"ecliptic\": [-90.0, 66.5607],\r\n \"galactic\": [-167.1405, 27.1283],\r\n \"supergalactic\": [-76.2458, 15.7089]\r\n// \"mars\": [-42.3186, 52.8865]\r\n};\r\n\r\nCelestial.eulerAngles = function () { return eulerAngles; };\r\nCelestial.poles = function () { return poles; };\r\n\r\nvar τ = Math.PI*2,\r\n halfπ = Math.PI/2,\r\n deg2rad = Math.PI/180;\r\n\r\n\r\n//Transform equatorial into any coordinates, degrees\r\nfunction transformDeg(c, euler) {\r\n var res = transform( c.map( function(d) { return d * deg2rad; } ), euler);\r\n return res.map( function(d) { return d / deg2rad; } );\r\n}\r\n\r\n//Transform equatorial into any coordinates, radians\r\nfunction transform(c, euler) {\r\n var x, y, z, β, γ, λ, φ, dψ, ψ, θ,\r\n ε = 1.0e-5;\r\n\r\n if (!euler) return c; \r\n\r\n λ = c[0]; // celestial longitude 0..2pi\r\n if (λ < 0) λ += τ; \r\n φ = c[1]; // celestial latitude -pi/2..pi/2\r\n \r\n λ -= euler[0]; // celestial longitude - celestial coordinates of the native pole\r\n β = euler[1]; // inclination between the poles (colatitude)\r\n γ = euler[2]; // native coordinates of the celestial pole\r\n \r\n x = Math.sin(φ) * Math.sin(β) - Math.cos(φ) * Math.cos(β) * Math.cos(λ);\r\n if (Math.abs(x) < ε) {\r\n x = -Math.cos(φ + β) + Math.cos(φ) * Math.cos(β) * (1 - Math.cos(λ));\r\n }\r\n y = -Math.cos(φ) * Math.sin(λ);\r\n \r\n if (x !== 0 || y !== 0) {\r\n dψ = Math.atan2(y, x);\r\n } else {\r\n dψ = λ - Math.PI;\r\n }\r\n ψ = (γ + dψ); \r\n if (ψ > Math.PI) ψ -= τ; \r\n \r\n if (λ % Math.PI === 0) {\r\n θ = φ + Math.cos(λ) * β;\r\n if (θ > halfπ) θ = Math.PI - θ; \r\n if (θ < -halfπ) θ = -Math.PI - θ; \r\n } else {\r\n z = Math.sin(φ) * Math.cos(β) + Math.cos(φ) * Math.sin(β) * Math.cos(λ);\r\n if (Math.abs(z) > 0.99) {\r\n θ = Math.abs(Math.acos(Math.sqrt(x*x+y*y)));\r\n if (z < 0) θ *= -1; \r\n } else {\r\n θ = Math.asin(z);\r\n }\r\n }\r\n \r\n return [ψ, θ];\r\n}\r\n\r\n \r\nfunction getAngles(coords) {\r\n if (coords === null || coords.length <= 0) return [0,0,0];\r\n var rot = eulerAngles.equatorial; \r\n if (!coords[2]) coords[2] = 0;\r\n return [rot[0] - coords[0], rot[1] - coords[1], rot[2] + coords[2]];\r\n}\r\n\r\n\r\nvar euler = {\r\n \"ecliptic\": [-90.0, 23.4393, 90.0],\r\n \"inverse ecliptic\": [90.0, 23.4393, -90.0],\r\n \"galactic\": [-167.1405, 62.8717, 122.9319], \r\n \"inverse galactic\": [122.9319, 62.8717, -167.1405],\r\n \"supergalactic\": [283.7542, 74.2911, 26.4504],\r\n \"inverse supergalactic\": [26.4504, 74.2911, 283.7542],\r\n \"init\": function () {\r\n for (var key in this) {\r\n if (this[key].constructor == Array) { \r\n this[key] = this[key].map( function(val) { return val * deg2rad; } );\r\n }\r\n }\r\n },\r\n \"add\": function(name, ang) {\r\n if (!ang || !name || ang.length !== 3 || this.hasOwnProperty(name)) return; \r\n this[name] = ang.map( function(val) { return val * deg2rad; } );\r\n return this[name];\r\n }\r\n};\r\n\r\neuler.init();\r\nCelestial.euler = function () { return euler; };\r\n\r\nvar horizontal = function(dt, pos, loc) {\r\n //dt: datetime, pos: celestial coordinates [lat,lng], loc: location [lat,lng] \r\n var ha = getMST(dt, loc[1]) - pos[0];\r\n if (ha < 0) ha = ha + 360;\r\n \r\n ha = ha * deg2rad;\r\n var dec = pos[1] * deg2rad;\r\n var lat = loc[0] * deg2rad;\r\n\r\n var alt = Math.asin(Math.sin(dec) * Math.sin(lat) + Math.cos(dec) * Math.cos(lat) * Math.cos(ha));\r\n var az = Math.acos((Math.sin(dec) - Math.sin(alt) * Math.sin(lat)) / (Math.cos(alt) * Math.cos(lat)));\r\n\r\n if (Math.sin(ha) > 0) az = Math.PI * 2 - az;\r\n \r\n return [alt / deg2rad, az / deg2rad, 0];\r\n};\r\n\r\nhorizontal.inverse = function(dt, hor, loc) {\r\n \r\n var alt = hor[0] * deg2rad;\r\n var az = hor[1] * deg2rad;\r\n var lat = loc[0] * deg2rad;\r\n \r\n var dec = Math.asin((Math.sin(alt) * Math.sin(lat)) + (Math.cos(alt) * Math.cos(lat) * Math.cos(az)));\r\n var ha = ((Math.sin(alt) - (Math.sin(dec) * Math.sin(lat))) / (Math.cos(dec) * Math.cos(lat))).toFixed(6);\r\n \r\n ha = Math.acos(ha);\r\n ha = ha / deg2rad;\r\n \r\n var ra = getMST(dt, loc[1]) - ha;\r\n //if (ra < 0) ra = ra + 360;\r\n \r\n return [ra, dec / deg2rad, 0];\r\n};\r\n\r\nfunction getMST(dt, lng)\r\n{\r\n var yr = dt.getUTCFullYear();\r\n var mo = dt.getUTCMonth() + 1;\r\n var dy = dt.getUTCDate();\r\n var h = dt.getUTCHours();\r\n var m = dt.getUTCMinutes();\r\n var s = dt.getUTCSeconds();\r\n\r\n if ((mo == 1)||(mo == 2)) {\r\n yr = yr - 1;\r\n mo = mo + 12;\r\n }\r\n\r\n var a = Math.floor(yr / 100);\r\n var b = 2 - a + Math.floor(a / 4);\r\n var c = Math.floor(365.25 * yr);\r\n var d = Math.floor(30.6001 * (mo + 1));\r\n\r\n // days since J2000.0\r\n var jd = b + c + d - 730550.5 + dy + (h + m/60.0 + s/3600.0)/24.0;\r\n \r\n // julian centuries since J2000.0\r\n var jt = jd/36525.0;\r\n\r\n // the mean sidereal time in degrees\r\n var mst = 280.46061837 + 360.98564736629*jd + 0.000387933*jt*jt - jt*jt*jt/38710000 + lng;\r\n\r\n // in degrees modulo 360.0\r\n if (mst > 0.0) \r\n while (mst > 360.0) mst = mst - 360.0;\r\n else\r\n while (mst < 0.0) mst = mst + 360.0;\r\n \r\n return mst;\r\n}\r\n\r\nCelestial.horizontal = horizontal;\r\nCelestial.ha = function(dt, lng, ra) {\r\n var ha = getMST(dt, lng) - ra;\r\n if (ha < 180) ha = ha + 360;\r\n return ha;\r\n};\r\n//Add more JSON data to the map\r\nvar hasCallback = false;\r\n\r\nCelestial.add = function(dat) {\r\n var res = {};\r\n //dat: {file: path, type:'json|raw', callback: func(), redraw: func()} \r\n //or {file:file, size:null, shape:null, color:null} TBI\r\n // with size,shape,color: \"prop=val:result;..\" || function(prop) { .. return res; } \r\n if (!has(dat, \"type\")) return console.log(\"Missing type\");\r\n \r\n if ((dat.type === \"dso\" || dat.type === \"json\") && (!has(dat, \"file\") || !has(dat, \"callback\"))) return console.log(\"Can't add data file\");\r\n if ((dat.type === \"line\" || dat.type === \"raw\") && !has(dat, \"callback\")) return console.log(\"Can't add data\");\r\n \r\n if (has(dat, \"file\")) res.file = dat.file;\r\n res.type = dat.type;\r\n if (has(dat, \"callback\")) res.callback = dat.callback;\r\n if (has(dat, \"redraw\")) res.redraw = dat.redraw;\r\n if (has(dat, \"save\")) res.save = dat.save;\r\n Celestial.data.push(res);\r\n};\r\n\r\nCelestial.remove = function(i) {\r\n if (i !== null && i < Celestial.data.length) {\r\n return Celestial.data.splice(i,1);\r\n }\r\n};\r\n\r\nCelestial.clear = function() {\r\n Celestial.data = [];\r\n};\r\n\r\nCelestial.addCallback = function(dat) {\r\n Celestial.callback = dat;\r\n hasCallback = (dat !== null);\r\n};\r\n\r\nCelestial.runCallback = function(dat) {\r\n hasCallback = false; // avoid recursion\r\n Celestial.callback();\r\n hasCallback = true;\r\n};\r\n//load data and transform coordinates\r\n\r\n\r\nfunction getPoint(coords, trans) {\r\n return transformDeg(coords, euler[trans]);\r\n}\r\n \r\nfunction getData(d, trans) {\r\n if (trans === \"equatorial\") return d;\r\n\r\n var leo = euler[trans],\r\n f = d.features;\r\n\r\n for (var i=0; i outside\r\n var l1 = d.features[0].geometry.coordinates[0];\r\n res.features[0].geometry.coordinates[0] = [];\r\n for (var i=0; i designation\r\n if (has(cfg.stars, \"names\")) res.stars.designation = cfg.stars.names;\r\n if (has(cfg.stars, \"namelimit\")) res.stars.designationLimit = cfg.stars.namelimit;\r\n if (has(cfg.stars, \"namestyle\")) Object.assign(res.stars.designationStyle, cfg.stars.namestyle); \r\n // proper -> propername\r\n if (has(cfg.stars, \"proper\")) res.stars.propername = cfg.stars.proper;\r\n if (has(cfg.stars, \"propernamelimit\")) res.stars.propernameLimit = cfg.stars.propernamelimit;\r\n if (has(cfg.stars, \"propernamestyle\")) Object.assign(res.stars.propernameStyle, cfg.stars.propernamestyle);\r\n }\r\n\r\n if (has(cfg, \"dsos\")) {\r\n // names, desig -> namesType\r\n //if (has(cfg.dsos, \"names\") && cfg.dsos.names === true) res.dsos.namesType = \"name\";\r\n if (has(cfg.dsos, \"desig\") && cfg.dsos.desig === true) res.dsos.namesType = \"desig\";\r\n if (has(cfg.dsos, \"namelimit\")) res.dsos.nameLimit = cfg.dsos.namelimit;\r\n if (has(cfg.dsos, \"namestyle\")) Object.assign(res.dsos.nameStyle, cfg.dsos.namestyle); \r\n }\r\n \r\n if (has(cfg, \"constellations\")) {\r\n // names, desig -> namesType\r\n if (has(cfg.constellations, \"show\") && cfg.constellations.show === true) res.constellations.names = true;\r\n //if (has(cfg.constellations, \"names\") && cfg.constellations.names === true) res.constellations.namesType = \"name\";\r\n if (has(cfg.constellations, \"desig\") && cfg.constellations.desig === true) res.constellations.namesType = \"desig\";\r\n if (res.constellations.namesType === \"latin\") res.constellations.namesType = \"la\";\r\n if (res.constellations.namesType === \"iau\") res.constellations.namesType = \"name\";\r\n if (has(cfg.constellations, \"namestyle\")) Object.assign(res.constellations.nameStyle, cfg.constellations.namestyle);\r\n if (has(cfg.constellations, \"linestyle\")) Object.assign(res.constellations.lineStyle, cfg.constellations.linestyle);\r\n if (has(cfg.constellations, \"boundstyle\")) Object.assign(res.constellations.boundStyle, cfg.constellations.boundstyle);\r\n }\r\n\r\n if (has(cfg, \"planets\")) {\r\n if (has(cfg.planets, \"style\")) Object.assign(res.planets.style, cfg.planets.symbolStyle); \r\n }\r\n }\r\n //Assign default name types if none given\r\n if (!res.stars.designationType || res.stars.designationType === \"\") res.stars.designationType = \"desig\";\r\n if (!has(formats.starnames[res.culture].designation, res.stars.designationType)) res.designationType = \"desig\";\r\n if (!res.stars.propernameType || res.stars.propernameType === \"\") res.stars.propernameType = \"name\";\r\n if (!has(formats.starnames[res.culture].propername, res.stars.propernameType)) res.propernameType = \"name\";\r\n if (!res.dsos.namesType || res.dsos.namesType === \"\") res.dsos.namesType = \"desig\";\r\n if (!res.constellations.namesType || res.constellations.namesType === \"\") res.constellations.namesType = \"desig\";\r\n if (!has(formats.constellations[res.culture].names, res.constellations.namesType)) res.constellations.namesType = \"name\";\r\n if (!res.planets.symbolType || res.planets.symbolType === \"\") res.planets.symbolType = \"symbol\";\r\n if (!res.planets.namesType || res.planets.namesType === \"\") res.planets.namesType = \"desig\";\r\n if (!has(formats.planets[res.culture].names, res.planets.namesType)) res.planets.namesType = \"desig\";\r\n //Expand all parameters that can be arrays into arrays, no need to test it later\r\n res.constellations.nameStyle.font = arrayfy(res.constellations.nameStyle.font);\r\n res.constellations.nameStyle.opacity = arrayfy(res.constellations.nameStyle.opacity);\r\n res.constellations.nameStyle.fill = arrayfy(res.constellations.nameStyle.fill);\r\n res.constellations.lineStyle.width = arrayfy(res.constellations.lineStyle.width);\r\n res.constellations.lineStyle.opacity = arrayfy(res.constellations.lineStyle.opacity);\r\n res.constellations.lineStyle.stroke = arrayfy(res.constellations.lineStyle.stroke);\r\n\r\n Object.assign(globalConfig, res);\r\n return res; \r\n }\r\n};\r\n\r\nfunction arrayfy(o) {\r\n var res;\r\n if (!isArray(o)) return [o, o, o]; //It saves some work later, OK?\r\n if (o.length >= 3) return o;\r\n if (o.length === 1) return [o[0], o[0], o[0]];\r\n if (o.length === 2) return [o[0], o[1], o[1]];\r\n}\r\n\r\nCelestial.settings = function () { return settings; };\r\n\r\n//b-v color index to rgb color value scale\r\nvar bvcolor = \r\n d3.scale.quantize().domain([3.347, -0.335]) //main sequence <= 1.7\r\n .range([ '#ff4700', '#ff4b00', '#ff4f00', '#ff5300', '#ff5600', '#ff5900', '#ff5b00', '#ff5d00', '#ff6000', '#ff6300', '#ff6500', '#ff6700', '#ff6900', '#ff6b00', '#ff6d00', '#ff7000', '#ff7300', '#ff7500', '#ff7800', '#ff7a00', '#ff7c00', '#ff7e00', '#ff8100', '#ff8300', '#ff8506', '#ff870a', '#ff8912', '#ff8b1a', '#ff8e21', '#ff9127', '#ff932c', '#ff9631', '#ff9836', '#ff9a3c', '#ff9d3f', '#ffa148', '#ffa34b', '#ffa54f', '#ffa753', '#ffa957', '#ffab5a', '#ffad5e', '#ffb165', '#ffb269', '#ffb46b', '#ffb872', '#ffb975', '#ffbb78', '#ffbe7e', '#ffc184', '#ffc489', '#ffc78f', '#ffc892', '#ffc994', '#ffcc99', '#ffce9f', '#ffd1a3', '#ffd3a8', '#ffd5ad', '#ffd7b1', '#ffd9b6', '#ffdbba', '#ffddbe', '#ffdfc2', '#ffe1c6', '#ffe3ca', '#ffe4ce', '#ffe8d5', '#ffe9d9', '#ffebdc', '#ffece0', '#ffefe6', '#fff0e9', '#fff2ec', '#fff4f2', '#fff5f5', '#fff6f8', '#fff9fd', '#fef9ff', '#f9f6ff', '#f6f4ff', '#f3f2ff', '#eff0ff', '#ebeeff', '#e9edff', '#e6ebff', '#e3e9ff', '#e0e7ff', '#dee6ff', '#dce5ff', '#d9e3ff', '#d7e2ff', '#d3e0ff', '#c9d9ff', '#bfd3ff', '#b7ceff', '#afc9ff', '#a9c5ff', '#a4c2ff', '#9fbfff', '#9bbcff']);\r\n \r\n/* Default parameters for each supported projection\r\n arg: constructor argument, if any \r\n scale: scale parameter so that they all have ~equal width, normalized to 1024 pixels\r\n ratio: width/height ratio, 2.0 if none\r\n clip: projection clipped to 90 degrees from center, otherwise to antimeridian\r\n*/\r\nvar projections = {\r\n \"airy\": {n:\"Airy’s Minimum Error\", arg:Math.PI/2, scale:360, ratio:1.0, clip:true},\r\n \"aitoff\": {n:\"Aitoff\", arg:null, scale:162},\r\n \"armadillo\": {n:\"Armadillo\", arg:0, scale:250}, \r\n \"august\": {n:\"August\", arg:null, scale:94, ratio:1.4},\r\n \"azimuthalEqualArea\": {n:\"Azimuthal Equal Area\", arg:null, scale:340, ratio:1.0, clip:true},\r\n \"azimuthalEquidistant\": {n:\"Azimuthal Equidistant\", arg:null, scale:320, ratio:1.0, clip:true},\r\n \"baker\": {n:\"Baker Dinomic\", arg:null, scale:160, ratio:1.4},\r\n \"berghaus\": {n:\"Berghaus Star\", arg:0, scale:320, ratio:1.0, clip:true},\r\n \"boggs\": {n:\"Boggs Eumorphic\", arg:null, scale:170},\r\n \"bonne\": {n:\"Bonne\", arg:Math.PI/2.5, scale:225, ratio:0.88},\r\n \"bromley\": {n:\"Bromley\", arg:null, scale:162},\r\n// \"butterfly\": {n:\"Butterfly\", arg:null, scale:31, ratio:1.1, clip:true},\r\n \"cassini\": {n:\"Cassini\", arg:null, scale:325, ratio:1.0, clip:true},\r\n \"collignon\": {n:\"Collignon\", arg:null, scale:100, ratio:2.6},\r\n \"craig\": {n:\"Craig Retroazimuthal\", arg:0, scale:310, ratio:1.5, clip:true},\r\n \"craster\": {n:\"Craster Parabolic\", arg:null, scale:160},\r\n \"cylindricalEqualArea\": {n:\"Cylindrical Equal Area\", arg:Math.PI/6, scale:190, ratio:2.3},\r\n \"cylindricalStereographic\": {n:\"Cylindrical Stereographic\", arg:Math.PI/4, scale:230, ratio:1.3},\r\n \"eckert1\": {n:\"Eckert I\", arg:null, scale:175},\r\n \"eckert2\": {n:\"Eckert II\", arg:null, scale:175},\r\n \"eckert3\": {n:\"Eckert III\", arg:null, scale:190},\r\n \"eckert4\": {n:\"Eckert IV\", arg:null, scale:190},\r\n \"eckert5\": {n:\"Eckert V\", arg:null, scale:182},\r\n \"eckert6\": {n:\"Eckert VI\", arg:null, scale:182},\r\n \"eisenlohr\": {n:\"Eisenlohr\", arg:null, scale:102},\r\n \"equirectangular\": {n:\"Equirectangular\", arg:null, scale:165},\r\n \"fahey\": {n:\"Fahey\", arg:null, scale:196, ratio:1.4},\r\n \"mtFlatPolarParabolic\": {n:\"Flat Polar Parabolic\", arg:null, scale:175},\r\n \"mtFlatPolarQuartic\": {n:\"Flat Polar Quartic\", arg:null, scale:230, ratio:1.65},\r\n \"mtFlatPolarSinusoidal\": {n:\"Flat Polar Sinusoidal\", arg:null, scale:175, ratio:1.9},\r\n \"foucaut\": {n:\"Foucaut\", arg:null, scale:142},\r\n \"ginzburg4\": {n:\"Ginzburg IV\", arg:null, scale:180, ratio:1.7},\r\n \"ginzburg5\": {n:\"Ginzburg V\", arg:null, scale:196, ratio:1.55},\r\n \"ginzburg6\": {n:\"Ginzburg VI\", arg:null, scale:190, ratio:1.4},\r\n \"ginzburg8\": {n:\"Ginzburg VIII\", arg:null, scale:205, ratio:1.3},\r\n \"ginzburg9\": {n:\"Ginzburg IX\", arg:null, scale:190, ratio:1.4},\r\n //\"guyou\": {n:\"Guyou\", arg:null, scale:160, ratio:2, clip:true},\r\n //\"bonne\": {n:\"Heart\", arg:Math.PI/2.5, scale:225, ratio:0.88},\r\n \"homolosine\": {n:\"Goode Homolosine\", arg:null, scale:160, ratio:2.2},\r\n \"hammer\": {n:\"Hammer\", arg:2, scale:180},\r\n \"hatano\": {n:\"Hatano\", arg:null, scale:186},\r\n \"healpix\": {n:\"HEALPix\", arg:1, scale:320, ratio:1.2},\r\n \"hill\": {n:\"Hill Eucyclic\", arg:2, scale:190, ratio:1.1},\r\n \"kavrayskiy7\": {n:\"Kavrayskiy VII\", arg:null, scale:185, ratio:1.75},\r\n \"lagrange\": {n:\"Lagrange\", arg:Math.PI/4, scale:88, ratio:1.6, clip:false},\r\n \"larrivee\": {n:\"l'Arrivée\", arg:null, scale:160, ratio:1.25},\r\n \"laskowski\": {n:\"Laskowski Tri-Optimal\", arg:null, scale:165, ratio:1.7},\r\n \"loximuthal\": {n:\"Loximuthal\", arg:Math.PI/4, scale:175, ratio:1.8},\r\n \"mercator\": {n:\"Mercator\", arg:null, scale:160, ratio:1.3},\r\n \"miller\": {n:\"Miller\", arg:null, scale:160, ratio:1.5},\r\n \"mollweide\": {n:\"Mollweide\", arg:null, scale:180},\r\n \"naturalEarth\": {n:\"Natural Earth\", arg:null, scale:185, ratio:1.85},\r\n \"nellHammer\": {n:\"Nell Hammer\", arg:null, scale:160, ratio:2.6},\r\n \"orthographic\": {n:\"Orthographic\", arg:null, scale:480, ratio:1.0, clip:true},\r\n \"patterson\": {n:\"Patterson Cylindrical\", arg:null, scale:160, ratio:1.75},\r\n \"polyconic\": {n:\"Polyconic\", arg:null, scale:160, ratio:1.3},\r\n \"quincuncial\": {n:\"Quincuncial\", arg:null, scale:160, ratio:1.3},\r\n \"rectangularPolyconic\": {n:\"Rectangular Polyconic\", arg:0, scale:160, ratio:1.65},\r\n \"robinson\": {n:\"Robinson\", arg:null, scale:160},\r\n \"sinusoidal\": {n:\"Sinusoidal\", arg:null, scale:160, ratio:2},\r\n \"stereographic\": {n:\"Stereographic\", arg:null, scale:500, ratio:1.0, clip:true},\r\n \"times\": {n:\"Times\", arg:null, scale:210, ratio:1.4}, \r\n \"twoPointEquidistant\": {n:\"Two-Point Equidistant\", arg:Math.PI/2, scale:320, ratio:1.15, clip:true},\r\n \"vanDerGrinten\": {n:\"van Der Grinten\", arg:null, scale:160, ratio:1.0}, \r\n \"vanDerGrinten2\": {n:\"van Der Grinten II\", arg:null, scale:160, ratio:1.0},\r\n \"vanDerGrinten3\": {n:\"van Der Grinten III\", arg:null, scale:160, ratio:1.0},\r\n \"vanDerGrinten4\": {n:\"van Der Grinten IV\", arg:null, scale:160, ratio:1.6},\r\n \"wagner4\": {n:\"Wagner IV\", arg:null, scale:185},\r\n \"wagner6\": {n:\"Wagner VI\", arg:null, scale:160},\r\n \"wagner7\": {n:\"Wagner VII\", arg:null, scale:190, ratio:1.8},\r\n \"wiechel\": {n:\"Wiechel\", arg:null, scale:360, ratio:1.0, clip:true},\r\n \"winkel3\": {n:\"Winkel Tripel\", arg:null, scale:196, ratio:1.7}\r\n};\r\n\r\nCelestial.projections = function () { return projections; };\r\n\r\nvar formats = {\r\n \"starnames\": {\r\n // \"name\":\"\",\"bayer\":\"\",\"flam\":\"\",\"var\":\"\",\"gl\":\"\",\"hd\":\"\",\"c\":\"\",\"desig\":\"\"\r\n \"iau\": {\r\n \"designation\": {\r\n \"desig\": \"Designation\", \r\n \"bayer\": \"Bayer\",\r\n \"flam\": \"Flamsteed\",\r\n \"var\": \"Variable\",\r\n \"gl\": \"Gliese\",\r\n \"hd\": \"Draper\",\r\n \"hip\": \"Hipparcos\"},\r\n \"propername\": {\r\n \"name\": \"IAU Name\",\r\n \"ar\": \"Arabic\", \r\n \"zh\": \"Chinese\",\r\n \"en\": \"English\",\r\n \"fi\": \"Finnish\", \r\n \"fr\": \"French\", \r\n \"de\": \"German\",\r\n \"el\": \"Greek\", \r\n \"he\": \"Hebrew\", \r\n \"hi\": \"Hindi\", \r\n \"it\": \"Italian\", \r\n \"ja\": \"Japanese\", \r\n \"ko\": \"Korean\", \r\n \"la\": \"Latin\",\r\n \"fa\": \"Persian\", \r\n \"ru\": \"Russian\", \r\n \"es\": \"Spanish\",\r\n \"tr\": \"Turkish\"}\r\n },\r\n \"cn\": {\r\n \"propername\": {\r\n \"name\": \"Proper name\",\r\n \"en\": \"English\",\r\n \"pinyin\": \"Pinyin\"},\r\n \"designation\": { \r\n \"desig\": \"IAU Designation\"}\r\n }\r\n },\r\n \"constellations\": {\r\n \"iau\": {\r\n \"names\": {\r\n \"desig\": \"Designation\",\r\n \"name\": \"IAU Name\",\r\n \"ar\": \"Arabic\", \r\n \"zh\": \"Chinese\",\r\n \"cz\": \"Czech\", \r\n \"en\": \"English\",\r\n \"ee\": \"Estonian\", \r\n \"fi\": \"Finnish\", \r\n \"fr\": \"French\", \r\n \"de\": \"German\",\r\n \"el\": \"Greek\", \r\n \"he\": \"Hebrew\",\r\n \"hi\": \"Hindi\", \r\n \"it\": \"Italian\", \r\n \"ja\": \"Japanese\", \r\n \"sw\": \"Kiswahili\",\r\n \"ko\": \"Korean\", \r\n \"la\": \"Latin\",\r\n \"fa\": \"Persian\", \r\n \"ru\": \"Russian\", \r\n \"es\": \"Spanish\",\r\n \"tr\": \"Turkish\"}\r\n },\r\n \"cn\": {\r\n \"names\": {\r\n \"name\": \"Proper name\",\r\n \"en\": \"English\",\r\n \"pinyin\": \"Pinyin\"}\r\n } \r\n },\r\n \"planets\": {\r\n \"iau\": {\r\n \"symbol\": {\r\n \"symbol\": \"\\u263e Symbol\",\r\n \"letter\": \"\\u216c Letter\",\r\n \"disk\": \"\\u25cf Disk\"},\r\n \"names\": {\r\n \"desig\": \"Designation\",\r\n \"ar\": \"Arabic\",\r\n \"zh\": \"Chinese\",\r\n \"en\": \"English\",\r\n \"fr\": \"French\",\r\n \"de\": \"German\",\r\n \"el\": \"Greek\",\r\n \"he\": \"Hebrew\",\r\n \"hi\": \"Hindi\",\r\n \"it\": \"Italian\",\r\n \"ja\": \"Japanese\",\r\n \"ko\": \"Korean\", \r\n \"la\": \"Latin\",\r\n \"fa\": \"Persian\", \r\n \"ru\": \"Russian\",\r\n \"es\": \"Spanish\"}\r\n },\r\n \"cn\": {\r\n \"symbol\": {\r\n \"symbol\": \"\\u263e Symbol\",\r\n \"letter\": \"\\u216c Letter\",\r\n \"disk\": \"\\u25cf Disk\"},\r\n \"names\": {\r\n \"desig\": \"Designation\",\r\n \"name\": \"Chinese\",\r\n \"pinyin\": \"Pinyin\",\r\n \"en\": \"English\"}\r\n }\r\n },\r\n \"dsonames\": {\r\n \"iau\": {\r\n \"names\": {\r\n \"desig\": \"Designation\",\r\n \"name\": \"English\",\r\n \"ar\": \"Arabic\", \r\n \"zh\": \"Chinese\",\r\n \"fi\": \"Finnish\", \r\n \"fr\": \"French\", \r\n \"de\": \"German\",\r\n \"el\": \"Greek\", \r\n //\"he\": \"Hebrew\",\r\n \"hi\": \"Hindi\", \r\n \"it\": \"Italian\", \r\n \"ja\": \"Japanese\", \r\n \"ko\": \"Korean\", \r\n \"la\": \"Latin\",\r\n \"fa\": \"Persian\", \r\n \"ru\": \"Russian\", \r\n \"es\": \"Spanish\",\r\n \"tr\": \"Turkish\"}\r\n },\r\n \"cn\": {\r\n \"names\": {\r\n \"desig\": \"Designation\",\r\n \"name\": \"Chinese\",\r\n \"pinyin\": \"Pinyin\",\r\n \"en\": \"English\"}\r\n }\r\n }\r\n};\r\n\r\nvar formats_all = {\r\n \"iau\": Object.keys(formats.constellations.iau.names).concat(Object.keys(formats.planets.iau.names)).filter( function(value, index, self) { return self.indexOf(value) === index; } ),\r\n \"cn\": Object.keys(formats.constellations.cn.names).concat(Object.keys(formats.starnames.cn.propername)).filter( function(value, index, self) { return self.indexOf(value) === index; } )\r\n};\r\n\r\nvar Canvas = {}; \r\n\r\nCanvas.symbol = function () {\r\n // parameters and default values\r\n var type = d3.functor(\"circle\"), \r\n size = d3.functor(64), \r\n age = d3.functor(Math.PI), //crescent shape 0..2Pi\r\n color = d3.functor(\"#fff\"), \r\n text = d3.functor(\"\"), \r\n padding = d3.functor([2,2]), \r\n pos;\r\n \r\n function canvas_symbol(context) {\r\n draw_symbol[type()](context);\r\n }\r\n \r\n var draw_symbol = {\r\n \"circle\": function(ctx) {\r\n var s = Math.sqrt(size()), \r\n r = s/2;\r\n ctx.arc(pos[0], pos[1], r, 0, 2 * Math.PI);\r\n ctx.closePath();\r\n return r;\r\n },\r\n \"square\": function(ctx) {\r\n var s = Math.sqrt(size()), \r\n r = s/1.7;\r\n ctx.moveTo(pos[0]-r, pos[1]-r);\r\n ctx.lineTo(pos[0]+r, pos[1]-r);\r\n ctx.lineTo(pos[0]+r, pos[1]+r);\r\n ctx.lineTo(pos[0]-r, pos[1]+r);\r\n ctx.closePath();\r\n return r;\r\n },\r\n \"diamond\": function(ctx) {\r\n var s = Math.sqrt(size()), \r\n r = s/1.5;\r\n ctx.moveTo(pos[0], pos[1]-r);\r\n ctx.lineTo(pos[0]+r, pos[1]);\r\n ctx.lineTo(pos[0], pos[1]+r);\r\n ctx.lineTo(pos[0]-r, pos[1]);\r\n ctx.closePath();\r\n return r;\r\n },\r\n \"triangle\": function(ctx) {\r\n var s = Math.sqrt(size()), \r\n r = s/Math.sqrt(3);\r\n ctx.moveTo(pos[0], pos[1]-r);\r\n ctx.lineTo(pos[0]+r, pos[1]+r);\r\n ctx.lineTo(pos[0]-r, pos[1]+r);\r\n ctx.closePath();\r\n return r;\r\n },\r\n \"ellipse\": function(ctx) {\r\n var s = Math.sqrt(size()), \r\n r = s/2;\r\n ctx.save();\r\n ctx.translate(pos[0], pos[1]);\r\n ctx.scale(1.6, 0.8); \r\n ctx.beginPath();\r\n ctx.arc(0, 0, r, 0, 2 * Math.PI); \r\n ctx.closePath();\r\n ctx.restore(); \r\n return r;\r\n },\r\n \"marker\": function(ctx) {\r\n var s = Math.sqrt(size()), \r\n r = s/2;\r\n ctx.moveTo(pos[0], pos[1]-r);\r\n ctx.lineTo(pos[0], pos[1]+r);\r\n ctx.moveTo(pos[0]-r, pos[1]);\r\n ctx.lineTo(pos[0]+r, pos[1]);\r\n ctx.closePath();\r\n return r;\r\n },\r\n \"cross-circle\": function(ctx) {\r\n var s = Math.sqrt(size()), \r\n r = s/2;\r\n ctx.moveTo(pos[0], pos[1]-s);\r\n ctx.lineTo(pos[0], pos[1]+s);\r\n ctx.moveTo(pos[0]-s, pos[1]);\r\n ctx.lineTo(pos[0]+s, pos[1]);\r\n ctx.stroke();\r\n ctx.beginPath();\r\n ctx.moveTo(pos[0], pos[1]);\r\n ctx.arc(pos[0], pos[1], r, 0, 2 * Math.PI); \r\n ctx.closePath();\r\n return r;\r\n },\r\n \"stroke-circle\": function(ctx) {\r\n var s = Math.sqrt(size()), \r\n r = s/2;\r\n ctx.moveTo(pos[0], pos[1]-s);\r\n ctx.lineTo(pos[0], pos[1]+s);\r\n ctx.stroke();\r\n ctx.beginPath();\r\n ctx.moveTo(pos[0], pos[1]);\r\n ctx.arc(pos[0], pos[1], r, 0, 2 * Math.PI); \r\n ctx.closePath();\r\n return r;\r\n }, \r\n \"crescent\": function(ctx) {\r\n var s = Math.sqrt(size()), \r\n r = s/2,\r\n ag = age(),\r\n ph = 0.5 * (1 - Math.cos(ag)),\r\n e = 1.6 * Math.abs(ph - 0.5) + 0.01,\r\n dir = ag > Math.PI,\r\n termdir = Math.abs(ph) > 0.5 ? dir : !dir,\r\n moonFill = ctx.fillStyle,\r\n darkFill = ph < 0.157 ? \"#669\" : \"#557\";\r\n ctx.save();\r\n ctx.fillStyle = darkFill;\r\n ctx.beginPath();\r\n ctx.moveTo(pos[0], pos[1]);\r\n ctx.arc(pos[0], pos[1], r, 0, 2 * Math.PI); \r\n ctx.closePath();\r\n ctx.fill();\r\n ctx.fillStyle = moonFill;\r\n ctx.beginPath();\r\n ctx.moveTo(pos[0], pos[1]);\r\n ctx.arc(pos[0], pos[1], r, -Math.PI/2, Math.PI/2, dir); \r\n ctx.scale(e, 1);\r\n ctx.arc(pos[0]/e, pos[1], r, Math.PI/2, -Math.PI/2, termdir); \r\n ctx.closePath();\r\n ctx.fill();\r\n ctx.restore();\r\n \r\n return r;\r\n } \r\n };\r\n\r\n \r\n canvas_symbol.type = function(_) {\r\n if (!arguments.length) return type; \r\n type = d3.functor(_);\r\n return canvas_symbol;\r\n };\r\n canvas_symbol.size = function(_) {\r\n if (!arguments.length) return size; \r\n size = d3.functor(_);\r\n return canvas_symbol;\r\n };\r\n canvas_symbol.age = function(_) {\r\n if (!arguments.length) return age; \r\n age = d3.functor(_);\r\n return canvas_symbol;\r\n };\r\n canvas_symbol.text = function(_) {\r\n if (!arguments.length) return text; \r\n text = d3.functor(_);\r\n return canvas_symbol;\r\n };\r\n canvas_symbol.position = function(_) {\r\n if (!arguments.length) return; \r\n pos = _;\r\n return canvas_symbol;\r\n };\r\n\r\n return canvas_symbol;\r\n};\r\n\r\nCelestial.Canvas = Canvas;\r\n\r\n\r\n/*var color = \"#fff\", angle = 0, align = \"center\", baseline = \"middle\", font = \"10px sans-serif\", padding = [0,0], aPos, sText;\r\n\r\ncanvas.text = function () {\r\n\r\n function txt(ctx){\r\n ctx.fillStyle = color;\r\n ctx.textAlign = align;\r\n ctx.textBaseline = baseline;\r\n \r\n //var pt = projection(d.geometry.coordinates);\r\n if (angle) {\r\n canvas.save(); \r\n canvas.translate(aPos[0], aPos[1]);\r\n canvas.rotate(angle); \r\n canvas.fillText(sText, 0, 0);\r\n canvas.restore(); \r\n } else\r\n canvas.fillText(sText, aPos[0], aPos[1]);\r\n }\r\n \r\n txt.angle = function(x) {\r\n if (!arguments.length) return angle * 180 / Math.PI;\r\n color = x * Math.PI / 180;\r\n return txt;\r\n }; \r\n txt.color = function(s) {\r\n if (!arguments.length) return color;\r\n color = s;\r\n return txt;\r\n }; \r\n txt.align = function(s) {\r\n if (!arguments.length) return align;\r\n align = s;\r\n return txt;\r\n };\r\n txt.baseline = function(s) {\r\n if (!arguments.length) return baseline;\r\n baseline = s;\r\n return txt;\r\n };\r\n txt.padding = function(a) {\r\n if (!arguments.length) return padding;\r\n padding = a;\r\n return txt;\r\n };\r\n txt.text = function(s) {\r\n if (!arguments.length) return sText;\r\n sText = s;\r\n return txt;\r\n };\r\n txt.font = function(s) {\r\n if (!arguments.length) return font;\r\n font = s;\r\n return txt;\r\n };\r\n txt.style = function(o) {\r\n if (!arguments.length) return;\r\n if (o.fill) color = o.fill;\r\n if (o.font) font = o.font;\r\n return txt;\r\n }; \r\n \r\n}\r\n\r\n function ctxPath(d) {\r\n var pt;\r\n //d.map( function(axe, i) {\r\n context.beginPath();\r\n for (var i = 0; i < d.length; i++) {\r\n pt = projection(d[i]);\r\n if (i === 0)\r\n context.moveTo(pt[0], pt[1]);\r\n else\r\n context.lineTo(pt[0], pt[1]);\r\n }\r\n context.fill();\r\n }\r\n \r\n\r\n function ctxText(d, ang) {\r\n var pt = projection(d.geometry.coordinates);\r\n if (ang) {\r\n canvas.save(); \r\n canvas.translate(pt[0], pt[1]);\r\n canvas.rotate(Math.PI/2); \r\n canvas.fillText(txt, 0, 0);\r\n canvas.restore(); \r\n } else\r\n canvas.fillText(d.properties.txt, pt[0], pt[1]);\r\n }\r\n \r\n\r\n*/\r\nfunction $(id) { return document.querySelector(parentElement + \" #\" + id); }\r\nfunction px(n) { return n + \"px\"; } \r\nfunction Round(x, dg) { return(Math.round(Math.pow(10,dg)*x)/Math.pow(10,dg)); }\r\nfunction sign(x) { return x ? x < 0 ? -1 : 1 : 0; }\r\nfunction pad(n) { return n < 10 ? '0' + n : n; }\r\n\r\n\r\nfunction has(o, key) { return o !== null && hasOwnProperty.call(o, key); }\r\nfunction when(o, key, val) { return o !== null && hasOwnProperty.call(o, key) ? o[key] : val; }\r\nfunction isNumber(n) { return n !== null && !isNaN(parseFloat(n)) && isFinite(n); }\r\nfunction isArray(o) { return o !== null && Object.prototype.toString.call(o) === \"[object Array]\"; }\r\nfunction isObject(o) { var type = typeof o; return type === 'function' || type === 'object' && !!o; }\r\nfunction isFunction(o) { return typeof o == 'function' || false; }\r\nfunction isValidDate(d) { return d && d instanceof Date && !isNaN(d); }\r\nfunction fileExists(url) {\r\n var http = new XMLHttpRequest();\r\n http.open('HEAD', url, false);\r\n http.send();\r\n return http.status != 404;\r\n}\r\n\r\nfunction findPos(o) {\r\n var l = 0, t = 0;\r\n if (o.offsetParent) {\r\n do {\r\n l += o.offsetLeft;\r\n t += o.offsetTop;\r\n } while ((o = o.offsetParent) !== null);\r\n }\r\n return [l, t];\r\n}\r\n\r\nfunction hasParent(t, id){\r\n while(t.parentNode){\r\n if(t.id === id) return true;\r\n t = t.parentNode;\r\n }\r\n return false;\r\n}\r\n\r\nfunction attach(node, event, func) {\r\n if (node.addEventListener) node.addEventListener(event, func, false);\r\n else node.attachEvent(\"on\" + event, func); \r\n}\r\n\r\nfunction stopPropagation(e) {\r\n if (typeof e.stopPropagation != \"undefined\") e.stopPropagation();\r\n else e.cancelBubble = true;\r\n}\r\n\r\nfunction dateDiff(dt1, dt2, type) {\r\n var diff = dt2.valueOf() - dt1.valueOf(),\r\n tp = type || \"d\";\r\n switch (tp) {\r\n case 'y': case 'yr': diff /= 31556926080; break;\r\n case 'm': case 'mo': diff /= 2629800000; break;\r\n case 'd': case 'dy': diff /= 86400000; break;\r\n case 'h': case 'hr': diff /= 3600000; break;\r\n case 'n': case 'mn': diff /= 60000; break;\r\n case 's': case 'sec': diff /= 1000; break;\r\n case 'ms': break; \r\n }\r\n return Math.floor(diff);\r\n}\r\n\r\nfunction dateParse(s) {\r\n if (!s) return; \r\n var t = s.split(\".\");\r\n if (t.length < 1) return; \r\n t = t[0].split(\"-\");\r\n t[0] = t[0].replace(/\\D/g, \"\");\r\n if (!t[0]) return; \r\n t[1] = t[1] ? t[1].replace(/\\D/g, \"\") : \"1\";\r\n t[2] = t[2] ? t[2].replace(/\\D/g, \"\") : \"1\";\r\n //Fraction -> h:m:s\r\n return new Date(Date.UTC(t[0], t[1]-1, t[2]));\r\n}\r\n\r\n\r\nfunction interpolateAngle(a1, a2, t) {\r\n a1 = (a1*deg2rad +τ) % τ;\r\n a2 = (a2*deg2rad + τ) % τ;\r\n if (Math.abs(a1 - a2) > Math.PI) {\r\n if (a1 > a2) a1 = a1 - τ;\r\n else if (a2 > a1) a2 = a2 - τ;\r\n }\r\n return d3.interpolateNumber(a1/deg2rad, a2/deg2rad);\r\n}\r\n\r\nvar Trig = {\r\n sinh: function (val) { return (Math.pow(Math.E, val)-Math.pow(Math.E, -val))/2; },\r\n cosh: function (val) { return (Math.pow(Math.E, val)+Math.pow(Math.E, -val))/2; },\r\n tanh: function (val) { return 2.0 / (1.0 + Math.exp(-2.0 * val)) - 1.0; },\r\n asinh: function (val) { return Math.log(val + Math.sqrt(val * val + 1)); },\r\n acosh: function (val) { return Math.log(val + Math.sqrt(val * val - 1)); },\r\n normalize0: function(val) { return ((val + Math.PI*3) % (Math.PI*2)) - Math.PI; },\r\n normalize: function(val) { return ((val + Math.PI*2) % (Math.PI*2)); }, \r\n cartesian: function(p) {\r\n var ϕ = p[0], θ = halfπ - p[1], r = p[2];\r\n return {\"x\": r * Math.sin(θ) * Math.cos(ϕ), \"y\": r * Math.sin(θ) * Math.sin(ϕ), \"z\": r * Math.cos(θ)};\r\n },\r\n spherical: function(p) {\r\n var r = Math.sqrt(p.x * p.x + p.y * p.y + p.z * p.z),\r\n θ = Math.atan(p.y / p.x),\r\n ϕ = Math.acos(p.z / r);\r\n return [θ / deg2rad, ϕ / deg2rad, r];\r\n },\r\n distance: function(p1, p2) {\r\n return Math.acos(Math.sin(p1[1])*Math.sin(p2[1]) + Math.cos(p1[1])*Math.cos(p2[1])*Math.cos(p1[0]-p2[0]));\r\n }\r\n};\r\n\r\nvar epsilon = 1e-6, \r\n halfPi = Math.PI / 2, \r\n quarterPi = Math.PI / 4, \r\n tau = Math.PI * 2;\r\n \r\nfunction cartesian(spherical) {\r\n var lambda = spherical[0], phi = spherical[1], cosPhi = Math.cos(phi);\r\n return [cosPhi * Math.cos(lambda), cosPhi * Math.sin(lambda), Math.sin(phi)];\r\n}\r\n\r\nfunction cartesianCross(a, b) {\r\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\r\n}\r\n\r\nfunction cartesianNormalizeInPlace(d) {\r\n var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\r\n d[0] /= l; d[1] /= l; d[2] /= l;\r\n}\r\n\r\nfunction longitude(point) {\r\n if (Math.abs(point[0]) <= Math.PI)\r\n return point[0];\r\n else\r\n return sign(point[0]) * ((Math.abs(point[0]) + Math.PI) % tau - Math.PI);\r\n}\r\n\r\nfunction poligonContains(polygon, point) {\r\n var lambda = longitude(point),\r\n phi = point[1],\r\n sinPhi = Math.sin(phi),\r\n normal = [Math.sin(lambda), -Math.cos(lambda), 0],\r\n angle = 0,\r\n winding = 0,\r\n sum = 0;\r\n\r\n if (sinPhi === 1) phi = halfPi + epsilon;\r\n else if (sinPhi === -1) phi = -halfPi - epsilon;\r\n\r\n for (var i = 0, n = polygon.length; i < n; ++i) {\r\n if (!(m = (ring = polygon[i]).length)) continue;\r\n var ring,\r\n m,\r\n point0 = ring[m - 1],\r\n lambda0 = longitude(point0),\r\n phi0 = point0[1] / 2 + quarterPi,\r\n sinPhi0 = Math.sin(phi0),\r\n cosPhi0 = Math.cos(phi0),\r\n point1, cosPhi1, sinPhi1, lambda1;\r\n\r\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\r\n point1 = ring[j];\r\n lambda1 = longitude(point1);\r\n var phi1 = point1[1] / 2 + quarterPi;\r\n sinPhi1 = Math.sin(phi1);\r\n cosPhi1 = Math.cos(phi1);\r\n var delta = lambda1 - lambda0,\r\n sign = delta >= 0 ? 1 : -1,\r\n absDelta = sign * delta,\r\n antimeridian = absDelta > Math.PI,\r\n k = sinPhi0 * sinPhi1;\r\n\r\n sum += Math.atan2(k * sign * Math.sin(absDelta), cosPhi0 * cosPhi1 + k * Math.cos(absDelta));\r\n angle += antimeridian ? delta + sign * tau : delta;\r\n\r\n if ((antimeridian ^ lambda0) >= (lambda ^ lambda1) >= lambda) {\r\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\r\n cartesianNormalizeInPlace(arc);\r\n var intersection = cartesianCross(normal, arc);\r\n cartesianNormalizeInPlace(intersection);\r\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * Math.asin(intersection[2]);\r\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\r\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\r\n}\r\n\r\n//display settings form in div with id \"celestial-form\"\r\nfunction form(cfg) {\r\n var config = settings.set(cfg); \r\n\r\n var prj = Celestial.projections(), leo = Celestial.eulerAngles();\r\n var div = d3.select(parentElement + \" ~ #celestial-form\");\r\n //if div doesn't exist, create it\r\n if (div.size() < 1) {\r\n //var container = (config.container || \"celestial-map\");\r\n div = d3.select(parentElement).select(function() { return this.parentNode; }).append(\"div\").attr(\"id\", \"celestial-form\");\r\n }\r\n var ctrl = div.append(\"div\").attr(\"class\", \"ctrl\");\r\n var frm = ctrl.append(\"form\").attr(\"id\", \"params\").attr(\"name\", \"params\").attr(\"method\", \"get\").attr(\"action\" ,\"#\");\r\n \r\n //Map parameters \r\n var col = frm.append(\"div\").attr(\"class\", \"col\").attr(\"id\", \"general\");\r\n \r\n col.append(\"label\").attr(\"title\", \"Map width in pixel, 0 indicates full width\").attr(\"for\", \"width\").html(\"Width \");\r\n col.append(\"input\").attr(\"type\", \"number\").attr(\"maxlength\", \"4\").attr(\"max\", \"20000\").attr(\"min\", \"0\").attr(\"title\", \"Map width\").attr(\"id\", \"width\").attr(\"value\", config.width).on(\"change\", resize);\r\n col.append(\"span\").html(\"px\");\r\n\r\n col.append(\"label\").attr(\"title\", \"Map projection, (hemi) indicates hemispherical projection\").attr(\"for\", \"projection\").html(\"Projection\");\r\n var sel = col.append(\"select\").attr(\"id\", \"projection\").on(\"change\", reproject);\r\n var selected = 0;\r\n var list = Object.keys(prj).map( function (key, i) { \r\n var n = prj[key].clip && prj[key].clip === true ? prj[key].n + \" (hemi)\" : prj[key].n; \r\n if (key === config.projection) selected = i;\r\n return {o:key, n:n};\r\n });\r\n sel.selectAll('option').data(list).enter().append('option')\r\n .attr(\"value\", function (d) { return d.o; })\r\n .text(function (d) { return d.n; });\r\n sel.property(\"selectedIndex\", selected);\r\n \r\n selected = 0;\r\n col.append(\"label\").attr(\"title\", \"Coordinate space in which the map is displayed\").attr(\"for\", \"transform\").html(\"Coordinates\");\r\n sel = col.append(\"select\").attr(\"id\", \"transform\").on(\"change\", reload);\r\n list = Object.keys(leo).map(function (key, i) {\r\n if (key === config.transform) selected = i; \r\n return {o:key, n:key.replace(/^([a-z])/, function(s, m) { return m.toUpperCase(); } )}; \r\n });\r\n sel.selectAll(\"option\").data(list).enter().append('option')\r\n .attr(\"value\", function (d) { return d.o; })\r\n .text(function (d) { return d.n; });\r\n sel.property(\"selectedIndex\", selected);\r\n\r\n col.append(\"br\");\r\n col.append(\"label\").attr(\"title\", \"Center coordinates long/lat in selected coordinate space\").attr(\"for\", \"centerx\").html(\"Center\");\r\n col.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"centerx\").attr(\"title\", \"Center right ascension/longitude\").attr(\"max\", \"24\").attr(\"min\", \"0\").attr(\"step\", \"0.1\").on(\"change\", turn);\r\n col.append(\"span\").attr(\"id\", \"cxunit\").html(\"h\");\r\n //addList(\"centerx\", \"ra\");\r\n \r\n col.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"centery\").attr(\"title\", \"Center declination/latitude\").attr(\"max\", \"90\").attr(\"min\", \"-90\").attr(\"step\", \"0.1\").on(\"change\", turn);\r\n col.append(\"span\").html(\"\\u00b0\");\r\n\r\n col.append(\"label\").attr(\"title\", \"Orientation\").attr(\"for\", \"centerz\").html(\"Orientation\");\r\n col.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"centerz\").attr(\"title\", \"Center orientation\").attr(\"max\", \"180\").attr(\"min\", \"-180\").attr(\"step\", \"0.1\").on(\"change\", turn);\r\n col.append(\"span\").html(\"\\u00b0\");\r\n\r\n col.append(\"label\").attr(\"for\", \"orientationfixed\").attr(\"class\", \"advanced\").html(\"Fixed\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"orientationfixed\").attr(\"class\", \"advanced\").property(\"checked\", config.orientationfixed).on(\"change\", apply); \r\n\r\n col.append(\"label\").attr(\"title\", \"Center and zoom in on this constellation\").attr(\"for\", \"constellation\").html(\"Show\");\r\n col.append(\"select\").attr(\"id\", \"constellation\").on(\"change\", showConstellation);\r\n \r\n setCenter(config.center, config.transform);\r\n\r\n // Stars \r\n col = frm.append(\"div\").attr(\"class\", \"col\").attr(\"id\", \"stars\");\r\n \r\n col.append(\"label\").attr(\"class\", \"header\").attr(\"for\", \"stars-show\").html(\"Stars\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"stars-show\").property(\"checked\", config.stars.show).on(\"change\", apply);\r\n \r\n col.append(\"label\").attr(\"for\", \"stars-limit\").html(\"down to magnitude\");\r\n col.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"stars-limit\").attr(\"title\", \"Star display limit (magnitude)\").attr(\"value\", config.stars.limit).attr(\"max\", \"6\").attr(\"min\", \"-1\").attr(\"step\", \"0.1\").on(\"change\", apply);\r\n \r\n col.append(\"label\").attr(\"for\", \"stars-colors\").html(\"with spectral colors\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"stars-colors\").property(\"checked\", config.stars.colors).on(\"change\", apply);\r\n \r\n col.append(\"label\").attr(\"for\", \"stars-color\").html(\"or default color \");\r\n col.append(\"input\").attr(\"type\", \"color\").attr(\"autocomplete\", \"off\").attr(\"id\", \"stars-style-fill\").attr(\"title\", \"Star color\").property(\"value\", config.stars.style.fill).on(\"change\", apply);\r\n\r\n col.append(\"br\");\r\n \r\n var names = formats.starnames[config.culture] || formats.starnames.iau;\r\n \r\n for (var fld in names) {\r\n if (!has(names, fld)) continue;\r\n var keys = Object.keys(names[fld]);\r\n if (keys.length > 1) {\r\n //Select List\r\n col.append(\"label\").attr(\"for\", \"stars-\" + fld).html(\"Show\");\r\n \r\n selected = 0;\r\n col.append(\"label\").attr(\"title\", \"Type of star name\").attr(\"id\", \"label-propername\").attr(\"for\", \"stars-\" + fld + \"Type\").html(function () { return fld === \"propername\" ? \"proper names\" : \"\"; });\r\n sel = col.append(\"select\").attr(\"id\", \"stars-\" + fld + \"Type\").attr(\"class\", function () { return fld === \"propername\" ? \"advanced\" : \"\"; }).on(\"change\", apply);\r\n list = keys.map(function (key, i) {\r\n if (key === config.stars[fld + \"Type\"]) selected = i;\r\n return {o:key, n:names[fld][key]}; \r\n });\r\n sel.selectAll(\"option\").data(list).enter().append('option')\r\n .attr(\"value\", function (d) { return d.o; })\r\n .text(function (d) { return d.n; });\r\n sel.property(\"selectedIndex\", selected);\r\n\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"stars-\" + fld).property(\"checked\", config.stars[fld]).on(\"change\", apply);\r\n } else if (keys.length === 1) {\r\n //Simple field\r\n col.append(\"label\").attr(\"for\", \"stars-\" + fld).html(\" \" + names[fld][keys[0]]);\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"stars-\" + fld).property(\"checked\", config.stars[fld]).on(\"change\", apply);\r\n } \r\n col.append(\"label\").attr(\"for\", \"stars-\" + fld + \"Limit\").html(\"down to mag\");\r\n col.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"stars-\" + fld + \"Limit\").attr(\"title\", \"Star name display limit (magnitude)\").attr(\"value\", config.stars[fld + \"Limit\"]).attr(\"max\", \"6\").attr(\"min\", \"-1\").attr(\"step\", \"0.1\").on(\"change\", apply);\r\n \r\n }\r\n\r\n col.append(\"br\");\r\n\r\n col.append(\"label\").attr(\"for\", \"stars-size\").attr(\"class\", \"advanced\").html(\"Stellar disk size: base\");\r\n col.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"stars-size\").attr(\"class\", \"advanced\").attr(\"title\", \"Size of the displayed star disk; base\").attr(\"value\", config.stars.size).attr(\"max\", \"100\").attr(\"min\", \"0\").attr(\"step\", \"0.1\").on(\"change\", apply);\r\n\r\n col.append(\"label\").attr(\"for\", \"stars-exponent\").attr(\"class\", \"advanced\").html(\" * e ^ (exponent\");\r\n col.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"stars-exponent\").attr(\"class\", \"advanced\").attr(\"title\", \"Size of the displayed star disk; exponent\").attr(\"value\", config.stars.exponent).attr(\"max\", \"3\").attr(\"min\", \"-1\").attr(\"step\", \"0.01\").on(\"change\", apply);\r\n col.append(\"span\").attr(\"class\", \"advanced\").text(\" * (magnitude + 2)) [* adaptation]\");\r\n \r\n enable($form(\"stars-show\"));\r\n \r\n // DSOs \r\n col = frm.append(\"div\").attr(\"class\", \"col\").attr(\"id\", \"dsos\");\r\n \r\n col.append(\"label\").attr(\"class\", \"header\").attr(\"title\", \"Deep Space Objects\").attr(\"for\", \"dsos-show\").html(\"DSOs\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"dsos-show\").property(\"checked\", config.dsos.show).on(\"change\", apply);\r\n \r\n col.append(\"label\").attr(\"for\", \"dsos-limit\").html(\"down to mag\");\r\n col.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"dsos-limit\").attr(\"title\", \"DSO display limit (magnitude)\").attr(\"value\", config.dsos.limit).attr(\"max\", \"6\").attr(\"min\", \"0\").attr(\"step\", \"0.1\").on(\"change\", apply);\r\n\r\n\r\n col.append(\"label\").attr(\"for\", \"dsos-colors\").html(\"with symbol colors\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"dsos-colors\").property(\"checked\", config.dsos.colors).on(\"change\", apply);\r\n \r\n col.append(\"label\").attr(\"for\", \"dsos-color\").html(\"or default color \");\r\n col.append(\"input\").attr(\"type\", \"color\").attr(\"autocomplete\", \"off\").attr(\"id\", \"dsos-style-fill\").attr(\"title\", \"DSO color\").property(\"value\", config.dsos.style.fill).on(\"change\", apply);\r\n\r\n col.append(\"br\");\r\n \r\n names = formats.dsonames[config.culture] || formats.dsonames.iau;\r\n \r\n for (fld in names) {\r\n if (!has(names, fld)) continue;\r\n var dsoKeys = Object.keys(names[fld]);\r\n col.append(\"label\").attr(\"for\", \"dsos-\" + fld).html(\"Show\");\r\n \r\n selected = 0;\r\n col.append(\"label\").attr(\"title\", \"Type of DSO name\").attr(\"for\", \"dsos-\" + fld + \"Type\").attr(\"class\", \"advanced\").html(\"\");\r\n sel = col.append(\"select\").attr(\"id\", \"dsos-\" + fld + \"Type\").attr(\"class\", \"advanced\").on(\"change\", apply);\r\n list = dsoKeys.map(function (key, i) {\r\n if (key === config.stars[fld + \"Type\"]) selected = i; \r\n return {o:key, n:names[fld][key]}; \r\n });\r\n sel.selectAll(\"option\").data(list).enter().append('option')\r\n .attr(\"value\", function (d) { return d.o; })\r\n .text(function (d) { return d.n; });\r\n sel.property(\"selectedIndex\", selected);\r\n\r\n col.append(\"label\").attr(\"for\", \"dsos-\" + fld).html(\"names\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"dsos-\" + fld).property(\"checked\", config.dsos[fld]).on(\"change\", apply);\r\n } \r\n \r\n col.append(\"label\").attr(\"for\", \"dsos-nameLimit\").html(\"down to mag\");\r\n col.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"dsos-nameLimit\").attr(\"title\", \"DSO name display limit (magnitude)\").attr(\"value\", config.dsos.nameLimit).attr(\"max\", \"6\").attr(\"min\", \"0\").attr(\"step\", \"0.1\").on(\"change\", apply);\r\n col.append(\"br\");\r\n\r\n col.append(\"label\").attr(\"for\", \"dsos-size\").attr(\"class\", \"advanced\").html(\"DSO symbol size: (base\");\r\n col.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"dsos-size\").attr(\"class\", \"advanced\").attr(\"title\", \"Size of the displayed symbol: base\").attr(\"value\", config.dsos.size).attr(\"max\", \"100\").attr(\"min\", \"0\").attr(\"step\", \"0.1\").on(\"change\", apply);\r\n\r\n col.append(\"label\").attr(\"for\", \"dsos-exponent\").attr(\"class\", \"advanced\").html(\" * 2 [* adaptation] - magnitude) ^ exponent\");\r\n col.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"dsos-exponent\").attr(\"class\", \"advanced\").attr(\"title\", \"Size of the displayed symbol; exponent\").attr(\"value\", config.dsos.exponent).attr(\"max\", \"3\").attr(\"min\", \"-1\").attr(\"step\", \"0.01\").on(\"change\", apply);\r\n\r\n enable($form(\"dsos-show\"));\r\n\r\n // Constellations \r\n col = frm.append(\"div\").attr(\"class\", \"col\").attr(\"id\", \"constellations\");\r\n col.append(\"label\").attr(\"class\", \"header\").html(\"Constellations\");\r\n //col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"constellations-show\").property(\"checked\", config.constellations.show).on(\"change\", apply);\r\n \r\n \r\n names = formats.constellations[config.culture] || formats.constellations.iau;\r\n \r\n for (fld in names) {\r\n if (!has(names, fld)) continue;\r\n var nameKeys = Object.keys(names[fld]);\r\n if (nameKeys.length > 1) {\r\n //Select List\r\n col.append(\"label\").attr(\"for\", \"constellations-\" + fld).html(\"Show\");\r\n \r\n selected = 0;\r\n col.append(\"label\").attr(\"title\", \"Language of constellation names\").attr(\"for\", \"constellations-\" + fld + \"Type\").attr(\"class\", \"advanced\").html(\"\");\r\n sel = col.append(\"select\").attr(\"id\", \"constellations-\" + fld + \"Type\").attr(\"class\", \"advanced\").on(\"change\", apply);\r\n list = nameKeys.map(function (key, i) {\r\n if (key === config.constellations[fld + \"Type\"]) selected = i; \r\n return {o:key, n:names[fld][key]}; \r\n });\r\n sel.selectAll(\"option\").data(list).enter().append('option')\r\n .attr(\"value\", function (d) { return d.o; })\r\n .text(function (d) { return d.n; });\r\n sel.property(\"selectedIndex\", selected);\r\n\r\n col.append(\"label\").attr(\"for\", \"constellations-\" + fld).html(\"names\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"constellations-\" + fld).property(\"checked\", config.constellations[fld]).on(\"change\", apply);\r\n } else if (nameKeys.length === 1) {\r\n //Simple field\r\n col.append(\"label\").attr(\"for\", \"constellations-\" + fld).attr(\"class\", \"advanced\").html(\" \" + names[fld][nameKeys[0]]);\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"constellations-\" + fld).attr(\"class\", \"advanced\").property(\"checked\", config.constellations[fld]).on(\"change\", apply); \r\n } \r\n }\r\n col.append(\"label\").attr(\"for\", \"constellations-lines\").html(\" lines\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"constellations-lines\").property(\"checked\", config.constellations.lines).on(\"change\", apply);\r\n \r\n col.append(\"label\").attr(\"for\", \"constellations-bounds\").html(\" boundaries\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"constellations-bounds\").property(\"checked\", config.constellations.bounds).on(\"change\", apply);\r\n\r\n enable($form(\"constellations-names\"));\r\n\r\n // graticules & planes \r\n col = frm.append(\"div\").attr(\"class\", \"col\").attr(\"id\", \"lines\");\r\n col.append(\"label\").attr(\"class\", \"header\").html(\"Lines\");\r\n \r\n col.append(\"label\").attr(\"title\", \"Latitude/longitude grid lines\").attr(\"for\", \"lines-graticule\").html(\"Graticule\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"lines-graticule-show\").property(\"checked\", config.lines.graticule.show).on(\"change\", apply);\r\n \r\n col.append(\"label\").attr(\"for\", \"lines-equatorial\").html(\"Equator\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"lines-equatorial-show\").property(\"checked\", config.lines.equatorial.show).on(\"change\", apply);\r\n \r\n col.append(\"label\").attr(\"for\", \"lines-ecliptic\").html(\"Ecliptic\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"lines-ecliptic-show\").property(\"checked\", config.lines.ecliptic.show).on(\"change\", apply);\r\n \r\n col.append(\"label\").attr(\"for\", \"lines-galactic\").html(\"Galactic plane\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"lines-galactic-show\").property(\"checked\", config.lines.galactic.show).on(\"change\", apply);\r\n \r\n col.append(\"label\").attr(\"for\", \"lines-supergalactic\").html(\"Supergalactic plane\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"lines-supergalactic-show\").property(\"checked\", config.lines.supergalactic.show).on(\"change\", apply);\r\n\r\n // Other\r\n col = frm.append(\"div\").attr(\"class\", \"col\").attr(\"id\", \"other\");\r\n col.append(\"label\").attr(\"class\", \"header\").html(\"Other\");\r\n \r\n col.append(\"label\").attr(\"for\", \"mw-show\").html(\"Milky Way\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"mw-show\").property(\"checked\", config.mw.show).on(\"change\", apply);\r\n \r\n col.append(\"label\").attr(\"for\", \"mw-style-fill\").attr(\"class\", \"advanced\").html(\" color\");\r\n col.append(\"input\").attr(\"type\", \"color\").attr(\"id\", \"mw-style-fill\").attr(\"class\", \"advanced\").attr(\"title\", \"Milky Way color\").attr(\"value\", config.mw.style.fill).on(\"change\", apply);\r\n\r\n col.append(\"label\").attr(\"for\", \"mw-style-opacity\").attr(\"class\", \"advanced\").html(\" opacity\");\r\n col.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"mw-style-opacity\").attr(\"class\", \"advanced\").attr(\"title\", \"Transparency of each Milky Way layer\").attr(\"value\", config.mw.style.opacity).attr(\"max\", \"1\").attr(\"min\", \"0\").attr(\"step\", \"0.01\").on(\"change\", apply);\r\n \r\n col.append(\"label\").attr(\"for\", \"advanced\").html(\"Advanced options\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"advanced\").property(\"checked\", config.advanced).on(\"change\", apply);\r\n \r\n col.append(\"br\");\r\n \r\n col.append(\"label\").attr(\"for\", \"background-fill\").html(\"Background color\");\r\n col.append(\"input\").attr(\"type\", \"color\").attr(\"id\", \"background-fill\").attr(\"title\", \"Background color\").attr(\"value\", config.background.fill).on(\"change\", apply);\r\n\r\n col.append(\"label\").attr(\"for\", \"background-opacity\").attr(\"class\", \"advanced\").html(\"opacity\");\r\n col.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"background-opacity\").attr(\"class\", \"advanced\").attr(\"title\", \"Background opacity\").attr(\"value\", config.background.opacity).attr(\"max\", \"1\").attr(\"min\", \"0\").attr(\"step\", \"0.01\").on(\"change\", apply);\r\n \r\n col.append(\"label\").attr(\"title\", \"Star/DSO sizes are increased with higher zoom-levels\").attr(\"for\", \"adaptable\").attr(\"class\", \"advanced\").html(\"Adaptable object sizes\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"adaptable\").attr(\"class\", \"advanced\").property(\"checked\", config.adaptable).on(\"change\", apply);\r\n \r\n // General language setting\r\n var langKeys = formats_all[config.culture];\r\n\r\n selected = 0;\r\n col.append(\"label\").attr(\"title\", \"General language setting\").attr(\"for\", \"lang\").html(\"Object names \");\r\n sel = col.append(\"select\").attr(\"id\", \"lang\").on(\"change\", apply);\r\n list = langKeys.map(function (key, i) {\r\n if (key === config.lang) selected = i; \r\n return {o:key, n:formats.constellations[config.culture].names[key]}; \r\n });\r\n list = [{o:\"---\", n:\"(Select language)\"}].concat(list);\r\n sel.selectAll(\"option\").data(list).enter().append('option')\r\n .attr(\"value\", function (d) { return d.o; })\r\n .text(function (d) { return d.n; });\r\n sel.property(\"selectedIndex\", selected);\r\n \r\n col = frm.append(\"div\").attr(\"class\", \"col\").attr(\"id\", \"download\");\r\n col.append(\"label\").attr(\"class\", \"header\").html(\"Download\");\r\n\r\n col.append(\"input\").attr(\"type\", \"button\").attr(\"id\", \"download-png\").attr(\"value\", \"PNG Image\").on(\"click\", function() {\r\n var a = d3.select(\"body\").append(\"a\").node(), \r\n canvas = document.querySelector(parentElement + ' canvas');\r\n a.download = getFilename(\".png\");\r\n a.rel = \"noopener\";\r\n a.href = canvas.toDataURL('image/png').replace('image/png', 'image/octet-stream');\r\n a.click();\r\n d3.select(a).remove();\r\n });\r\n\r\n col.append(\"input\").attr(\"type\", \"button\").attr(\"id\", \"download-svg\").attr(\"value\", \"SVG File\").on(\"click\", function() {\r\n exportSVG(getFilename(\".svg\")); \r\n return false;\r\n });\r\n\r\n setLimits();\r\n setUnit(config.transform);\r\n setVisibility(cfg);\r\n showAdvanced(config.advanced);\r\n \r\n function resize() {\r\n var src = this,\r\n w = src.value;\r\n if (testNumber(src) === false) return; \r\n config.width = w;\r\n Celestial.resize({width:w});\r\n }\r\n \r\n function reload() {\r\n var src = this,\r\n trans = src.value,\r\n cx = setUnit(trans, config.transform); \r\n if (cx !== null) config.center[0] = cx; \r\n config.transform = trans;\r\n settings.set(config);\r\n Celestial.reload(config);\r\n } \r\n \r\n function reproject() {\r\n var src = this;\r\n if (!src) return;\r\n config.projection = src.value; \r\n settings.set(config);\r\n Celestial.reproject(config);\r\n }\r\n \r\n function turn() {\r\n if (testNumber(this) === false) return; \r\n if (getCenter() === false) return;\r\n Celestial.rotate(config);\r\n }\r\n\r\n function getCenter() {\r\n var cx = $form(\"centerx\"), cy = $form(\"centery\"), cz = $form(\"centerz\"),\r\n rot = [];\r\n\r\n if (!cx || !cy) return;\r\n\r\n if (config.transform !== \"equatorial\") config.center[0] = parseFloat(cx.value); \r\n else { \r\n var vx = parseFloat(cx.value);\r\n config.center[0] = vx > 12 ? vx * 15 - 360 : vx * 15;\r\n }\r\n config.center[1] = parseFloat(cy.value); \r\n \r\n var vz = parseFloat(cz.value); \r\n config.center[2] = isNaN(vz) ? 0 : vz;\r\n \r\n return cx.value !== \"\" && cy.value !== \"\";\r\n }\r\n \r\n function getFilename(ext) {\r\n var dateFormat = d3.time.format(\"%Y%m%dT%H%M%S%Z\"),\r\n filename = \"d3-celestial\",\r\n dt = Celestial.date();\r\n if (dt) filename += dateFormat(dt);\r\n return filename + ext;\r\n }\r\n \r\n function showConstellation() {\r\n var id = this.value;\r\n if (!id) return;\r\n showCon(id);\r\n }\r\n\r\n function showCon(id) {\r\n var z, anims = [],\r\n config = globalConfig;\r\n if (id === \"---\") { \r\n Celestial.constellation = null;\r\n z = Celestial.zoomBy();\r\n if (z !== 1) {\r\n anims.push({param:\"zoom\", value:1/z, duration:0});\r\n }\r\n Celestial.animate(anims, false); \r\n //Celestial.redraw();\r\n return;\r\n }\r\n if (!isObject(Celestial.constellations) || !has(Celestial.constellations, id)) return;\r\n \r\n var con = Celestial.constellations[id];\r\n //transform according to settings\r\n var center = transformDeg(con.center, euler[config.transform]);\r\n config.center = center;\r\n setCenter(config.center, config.transform);\r\n //config.lines.graticule.lat.pos = [Round(con.center[0])];\r\n //config.lines.graticule.lon.pos = [Round(con.center[1])];\r\n //Celestial.apply(config);\r\n\r\n //if zoomed, zoom out\r\n z = Celestial.zoomBy();\r\n if (z !== 1) anims.push({param:\"zoom\", value:1/z, duration:0});\r\n //rotate\r\n anims.push({param:\"center\", value:center, duration:0});\r\n //and zoom in\r\n var sc = 1 + (360/con.scale); // > 10 ? 10 : con.scale;\r\n anims.push({param:\"zoom\", value:sc, duration:0});\r\n Celestial.constellation = id;\r\n //Object.assign(globalConfig, config); \r\n Celestial.animate(anims, false); \r\n }\r\n \r\n function apply() {\r\n var value, src = this;\r\n //Get current configuration\r\n Object.assign(config, settings.set());\r\n\r\n switch (src.type) {\r\n case \"checkbox\": value = src.checked; enable(src); break;\r\n case \"number\": if (testNumber(src) === false) return; \r\n value = parseFloat(src.value); break;\r\n case \"color\": if (testColor(src) === false) return; \r\n value = src.value; break;\r\n case \"text\": if (src.id.search(/fill$/) === -1) return;\r\n if (testColor(src) === false) return; \r\n value = src.value; break;\r\n case \"select-one\": value = src.value; break;\r\n }\r\n if (value === null) return;\r\n set(src.id, value);\r\n if (src.id === \"dsos-style-fill\") {\r\n set(\"dsos-style-stroke\", value);\r\n set(\"dsos-nameStyle-fill\", value);\r\n } else if (src.id === \"constellations-namesType\") {\r\n listConstellations();\r\n } else if (src.id === \"lang\") {\r\n setLanguage(value);\r\n } else if (src.id === \"advanced\") {\r\n showAdvanced(value);\r\n }\r\n\r\n getCenter();\r\n Object.assign(globalConfig, config);\r\n Celestial.apply(config);\r\n }\r\n\r\n function set(prop, val) {\r\n var a = prop.split(\"-\");\r\n switch (a.length) {\r\n case 1: config[a[0]] = val; break;\r\n case 2: config[a[0]][a[1]] = val; break;\r\n case 3: config[a[0]][a[1]][a[2]] = val; break;\r\n default: return;\r\n } \r\n }\r\n \r\n \r\n function setLanguage(lang) {\r\n Object.assign(config, globalConfig);\r\n config.lang = lang;\r\n var keys = [\"constellations\", \"planets\"]; \r\n for (var i=0; i < keys.length; i++) {\r\n if (has(formats[keys[i]][config.culture].names, lang)) config[keys[i]].namesType = lang;\r\n else if (has(formats[keys[i]][config.culture].names, \"desig\")) config[keys[i]].namesType = \"desig\";\r\n else config[keys[i]].namesType = \"name\";\r\n }\r\n if (has(formats.dsonames[config.culture].names, lang)) config.dsos.namesType = lang;\r\n else config.dsos.namesType = \"desig\";\r\n if (has(formats.starnames[config.culture].propername, lang)) config.stars.propernameType = lang;\r\n else config.stars.propernameType = \"desig\";\r\n //update cont. list\r\n Object.assign(globalConfig, config);\r\n update();\r\n listConstellations();\r\n return config;\r\n }\r\n \r\n \r\n function update() {\r\n // Update all form fields\r\n d3.selectAll(parentElement + \" ~ #celestial-form input, \" + parentElement + \" ~ #celestial-form select\").each( function(d, i) {\r\n if (this === undefined) return;\r\n var id = this.id;\r\n\r\n // geopos -> lat, lon\r\n if (id === \"lat\" || id === \"lon\") {\r\n if (isArray(config.geopos)) this.value = id === \"lat\" ? config.geopos[0] : config.geopos[1];\r\n // center -> centerx, centery \r\n } else if (id.search(/center/) !== -1) {\r\n if (isArray(config.center)) {\r\n switch (id) { \r\n case \"centerx\": this.value = config.center[0]; break;\r\n case \"centery\": this.value = config.center[1]; break;\r\n case \"centerz\": this.value = config.center[2] || 0; break;\r\n }\r\n }\r\n } else if (id === \"datetime\" || id === \"hr\" || id === \"min\" || id === \"sec\" || id === \"tz\") {\r\n return;//skip, timezone?\r\n } else if (this.type !== \"button\") {\r\n var value = get(id); \r\n switch (this.type) {\r\n case \"checkbox\": this.checked = value; enable(id); break;\r\n case \"number\": if (testNumber(this) === false) break;\r\n this.value = parseFloat(get(id)); break;\r\n case \"color\": if (testColor(this) === false) break; \r\n this.value = value; break;\r\n case \"text\": if (id.search(/fill$/) === -1) break;\r\n if (testColor(this) === false) break; \r\n this.value = value; break;\r\n case \"select-one\": this.value = value; break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n function get(id) {\r\n var a = id.split(\"-\");\r\n switch (a.length) {\r\n case 1: return config[a[0]]; \r\n case 2: return config[a[0]][a[1]];\r\n case 3: return config[a[0]][a[1]][a[2]];\r\n default: return;\r\n } \r\n }\r\n \r\n Celestial.updateForm = update;\r\n Celestial.showConstellation = showCon;\r\n Celestial.setLanguage = function(lang) {\r\n var cfg = settings.set();\r\n if (formats_all[config.culture].indexOf(lang) !== -1) cfg = setLanguage(lang);\r\n return cfg; \r\n };\r\n}\r\n\r\n\r\n// Dependend fields relations\r\nvar depends = {\r\n \"stars-show\": [\"stars-limit\", \"stars-colors\", \"stars-style-fill\", \"stars-designation\", \"stars-propername\", \"stars-size\", \"stars-exponent\"],\r\n \"stars-designation\": [\"stars-designationType\", \"stars-designationLimit\"],\r\n \"stars-propername\": [\"stars-propernameLimit\", \"stars-propernameType\"],\r\n \"dsos-show\": [\"dsos-limit\", \"dsos-colors\", \"dsos-style-fill\", \"dsos-names\", \"dsos-size\", \"dsos-exponent\"],\r\n \"dsos-names\": [\"dsos-namesType\", \"dsos-nameLimit\"],\r\n \"mw-show\": [\"mw-style-opacity\", \"mw-style-fill\"],\r\n \"constellations-names\": [\"constellations-namesType\"],\r\n \"planets-show\": [\"planets-symbolType\", \"planets-names\"],\r\n \"planets-names\": [\"planets-namesType\"]\r\n};\r\n\r\n// De/activate fields depending on selection of dependencies\r\nfunction enable(source) {\r\n var fld = source.id, off;\r\n \r\n switch (fld) {\r\n case \"stars-show\": \r\n off = !$form(fld).checked;\r\n for (var i=0; i< depends[fld].length; i++) { fldEnable(depends[fld][i], off); }\r\n /* falls through */\r\n case \"stars-designation\": \r\n off = !$form(\"stars-designation\").checked || !$form(\"stars-show\").checked;\r\n for (i=0; i< depends[\"stars-designation\"].length; i++) { fldEnable(depends[\"stars-designation\"][i], off); }\r\n /* falls through */\r\n case \"stars-propername\": \r\n off = !$form(\"stars-propername\").checked || !$form(\"stars-show\").checked;\r\n for (i=0; i< depends[\"stars-propername\"].length; i++) { fldEnable(depends[\"stars-propername\"][i], off); }\r\n break;\r\n case \"dsos-show\": \r\n off = !$form(fld).checked;\r\n for (i=0; i< depends[fld].length; i++) { fldEnable(depends[fld][i], off); }\r\n /* falls through */\r\n case \"dsos-names\": \r\n off = !$form(\"dsos-names\").checked || !$form(\"dsos-show\").checked; \r\n for (i=0; i< depends[\"dsos-names\"].length; i++) { fldEnable(depends[\"dsos-names\"][i], off); }\r\n break;\r\n case \"planets-show\": \r\n off = !$form(fld).checked;\r\n for (i=0; i< depends[fld].length; i++) { fldEnable(depends[fld][i], off); }\r\n /* falls through */\r\n case \"planets-names\": \r\n off = !$form(\"planets-names\").checked || !$form(\"planets-show\").checked; \r\n for (i=0; i< depends[\"planets-names\"].length; i++) { fldEnable(depends[\"planets-names\"][i], off); }\r\n break;\r\n case \"constellations-names\": \r\n case \"mw-show\": \r\n off = !$form(fld).checked;\r\n for (i=0; i< depends[fld].length; i++) { fldEnable(depends[fld][i], off); }\r\n break;\r\n } \r\n}\r\n\r\n// Enable/disable field d to status off\r\nfunction fldEnable(d, off) {\r\n var node = $form(d);\r\n if (!node) return;\r\n node.disabled = off;\r\n node.style.color = off ? \"#999\" : \"#000\"; \r\n node.previousSibling.style.color = off ? \"#999\" : \"#000\"; \r\n //if (node.previousSibling.previousSibling && node.previousSibling.previousSibling.tagName === \"LABEL\")\r\n // node.previousSibling.previousSibling.style.color = off ? \"#999\" : \"#000\"; \r\n}\r\n\r\n// Error notification\r\nfunction popError(nd, err) {\r\n var p = findPos(nd);\r\n d3.select(\"#error\").html(err).style( {top:px(p[1] + nd.offsetHeight + 1), left:px(p[0]), opacity:1} );\r\n nd.focus();\r\n}\r\n\r\n//Check numeric field\r\nfunction testNumber(node) {\r\n var v, adj = node.id === \"hr\" || node.id === \"min\" || node.id === \"sec\" ? 1 : 0;\r\n if (node.validity) {\r\n v = node.validity;\r\n if (v.typeMismatch || v.badInput) { popError(node, node.title + \": check field value\"); return false; }\r\n if (v.rangeOverflow || v.rangeUnderflow) { popError(node, node.title + \" must be between \" + (parseInt(node.min) + adj) + \" and \" + (parseInt(node.max) - adj)); return false; }\r\n } else {\r\n v = node.value;\r\n if (!isNumber(v)) { popError(node, node.title + \": check field value\"); return false; }\r\n v = parseFloat(v);\r\n if (v < node.min || v > node.max ) { popError(node, node.title + \" must be between \" + (node.min + adj) + \" and \" + (+node.max - adj)); return false; }\r\n }\r\n d3.select(\"#error\").style( {top:\"-9999px\", left:\"-9999px\", opacity:0} ); \r\n return true; \r\n}\r\n\r\n//Check color field\r\nfunction testColor(node) {\r\n var v;\r\n if (node.validity) {\r\n v = node.validity;\r\n if (v.typeMismatch || v.badInput) { popError(node, node.title + \": check field value\"); return false; }\r\n if (node.value.search(/^#[0-9A-F]{6}$/i) === -1) { popError(node, node.title + \": not a color value\"); return false; }\r\n } else {\r\n v = node.value;\r\n if (v === \"\") return true;\r\n if (v.search(/^#[0-9A-F]{6}$/i) === -1) { popError(node, node.title + \": not a color value\"); return false; }\r\n }\r\n d3.select(\"#error\").style( {top:\"-9999px\", left:\"-9999px\", opacity:0} );\r\n return true;\r\n}\r\n\r\nfunction setUnit(trans, old) {\r\n var cx = $form(\"centerx\");\r\n if (!cx) return null;\r\n \r\n if (old) {\r\n if (trans === \"equatorial\" && old !== \"equatorial\") {\r\n cx.value = (cx.value/15).toFixed(1);\r\n if (cx.value < 0) cx.value += 24;\r\n } else if (trans !== \"equatorial\" && old === \"equatorial\") {\r\n cx.value = (cx.value * 15).toFixed(1);\r\n if (cx.value > 180) cx.value -= 360;\r\n }\r\n }\r\n if (trans === 'equatorial') {\r\n cx.min = \"0\";\r\n cx.max = \"24\";\r\n $form(\"cxunit\").innerHTML = \"h\";\r\n } else {\r\n cx.min = \"-180\";\r\n cx.max = \"180\";\r\n $form(\"cxunit\").innerHTML = \"\\u00b0\";\r\n }\r\n return cx.value;\r\n}\r\n\r\nfunction setCenter(ctr, trans) {\r\n var cx = $form(\"centerx\"), cy = $form(\"centery\"), cz = $form(\"centerz\");\r\n if (!cx || !cy) return;\r\n \r\n if (ctr === null || ctr.length < 1) ctr = [0,0,0]; \r\n if (ctr.length <= 2 || ctr[2] === undefined) ctr[2] = 0;\r\n //config.center = ctr; \r\n if (trans !== \"equatorial\") cx.value = ctr[0].toFixed(1); \r\n else cx.value = ctr[0] < 0 ? (ctr[0] / 15 + 24).toFixed(1) : (ctr[0] / 15).toFixed(1); \r\n \r\n cy.value = ctr[1].toFixed(1);\r\n cz.value = ctr[2] !== null ? ctr[2].toFixed(1) : 0;\r\n settings.set({center: ctr});\r\n}\r\n\r\n// Set max input limits depending on data\r\nfunction setLimits() {\r\n var t, rx = /\\d+(\\.\\d+)?/g,\r\n s, d, res = {s:6, d:6},\r\n config = Celestial.settings();\r\n\r\n d = config.dsos.data;\r\n \r\n //test dso limit\r\n t = d.match(rx);\r\n if (t !== null) {\r\n res.d = parseFloat(t[t.length-1]);\r\n }\r\n\r\n if (res.d !== 6) {\r\n $form(\"dsos-limit\").max = res.d;\r\n $form(\"dsos-nameLimit\").max = res.d;\r\n }\r\n \r\n s = config.stars.data;\r\n \r\n //test star limit\r\n t = s.match(rx);\r\n if (t !== null) {\r\n res.s = parseFloat(t[t.length-1]);\r\n }\r\n\r\n if (res.s != 6) {\r\n $form(\"stars-limit\").max = res.s;\r\n $form(\"stars-designationLimit\").max = res.s;\r\n $form(\"stars-propernameLimit\").max = res.s;\r\n }\r\n\r\n return res;\r\n}\r\n\r\n// Options only visible in advanced mode\r\n//\"stars-designationType\", \"stars-propernameType\", \"stars-size\", \"stars-exponent\", \"stars-size\", \"stars-exponent\", //\"constellations-namesType\", \"planets-namesType\", \"planets-symbolType\"\r\nfunction showAdvanced(showit) {\r\n var vis = showit ? \"inline-block\" : \"none\";\r\n d3.select(parentElement + \" ~ #celestial-form\").selectAll(\".advanced\").style(\"display\", vis);\r\n d3.select(parentElement + \" ~ #celestial-form\").selectAll(\"#label-propername\").style(\"display\", showit ? \"none\" : \"inline-block\");\r\n}\r\n\r\n\r\nfunction setVisibility(cfg, which) {\r\n var vis, fld;\r\n if (!has(cfg, \"formFields\")) return;\r\n if (which && has(cfg.formFields, which)) {\r\n d3.select(parentElement + \" ~ #celestial-form\").select(\"#\" + which).style( {\"display\": \"none\"} );\r\n return;\r\n }\r\n // Special case for backward compatibility\r\n if (cfg.form === false && cfg.location === true) {\r\n d3.select(parentElement + \" ~ #celestial-form\").style(\"display\", \"inline-block\");\r\n for (fld in cfg.formFields) {\r\n if (!has(cfg.formFields, fld)) continue;\r\n if (fld === \"location\") continue;\r\n d3.select(parentElement + \" ~ #celestial-form\").select(\"#\" + fld).style( {\"display\": \"none\"} ); \r\n }\r\n return;\r\n }\r\n // hide if not desired\r\n if (cfg.form === false) d3.select(parentElement + \" ~ #celestial-form\").style(\"display\", \"none\"); \r\n\r\n for (fld in cfg.formFields) {\r\n if (!has(cfg.formFields, fld)) continue;\r\n if (fld === \"location\") continue;\r\n vis = cfg.formFields[fld] === false ? \"none\" : \"block\";\r\n d3.select(parentElement + \" ~ #celestial-form\").select(\"#\" + fld).style( {\"display\": vis} ); \r\n }\r\n \r\n}\r\n\r\nfunction listConstellations() {\r\n var sel = d3.select(parentElement + \" ~ #celestial-form\").select(\"#constellation\"),\r\n list = [], selected = 0, id, name, config = globalConfig;\r\n \r\n Celestial.container.selectAll(\".constname\").each( function(d, i) {\r\n id = d.id;\r\n if (id === config.constellation) selected = i;\r\n name = d.properties[config.constellations.namesType];\r\n if (name !== id) name += \" (\" + id + \")\";\r\n list.push({o:id, n:name});\r\n });\r\n if (list.length < 1 || sel.length < 1) {\r\n setTimeout(listConstellations, 1000);\r\n return;\r\n }\r\n list = [{o:\"---\", n:\"(Select constellation)\"}].concat(list);\r\n \r\n sel.selectAll('option').remove();\r\n sel.selectAll('option').data(list).enter().append('option')\r\n .attr(\"value\", function (d) { return d.o; })\r\n .text(function (d) { return d.n; });\r\n sel.property(\"selectedIndex\", selected);\r\n //$form(\"constellation\").firstChild.disabled = true;\r\n\r\n //Celestial.constellations = list;\r\n}\r\n\r\nfunction $form(id) { return document.querySelector(parentElement + \" ~ #celestial-form\" + \" #\" + id); }\r\n\r\n\r\n\r\n\r\n\r\n\r\nvar geoInfo = null;\r\n\r\nfunction geo(cfg) {\r\n var dtFormat = d3.time.format(\"%Y-%m-%d %H:%M:%S\"),\r\n zenith = [0,0],\r\n geopos = [0,0], \r\n date = new Date(),\r\n localZone = -date.getTimezoneOffset(),\r\n timeZone = localZone,\r\n config = settings.set(cfg),\r\n frm = d3.select(parentElement + \" ~ #celestial-form form\").insert(\"div\", \"div#general\").attr(\"id\", \"loc\");\r\n\r\n var dtpick = new datetimepicker(config, function(date, tz) { \r\n $form(\"datetime\").value = dateFormat(date, tz); \r\n timeZone = tz;\r\n go(); \r\n });\r\n \r\n if (has(config, \"geopos\") && config.geopos !== null && config.geopos.length === 2) geopos = config.geopos;\r\n var col = frm.append(\"div\").attr(\"class\", \"col\").attr(\"id\", \"location\").style(\"display\", \"none\");\r\n //Latitude & longitude fields\r\n col.append(\"label\").attr(\"title\", \"Location coordinates long/lat\").attr(\"for\", \"lat\").html(\"Location\");\r\n col.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"lat\").attr(\"title\", \"Latitude\").attr(\"placeholder\", \"Latitude\").attr(\"max\", \"90\").attr(\"min\", \"-90\").attr(\"step\", \"0.0001\").attr(\"value\", geopos[0]).on(\"change\", function () {\r\n if (testNumber(this) === true) go(); \r\n });\r\n col.append(\"span\").html(\"\\u00b0\");\r\n col.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"lon\").attr(\"title\", \"Longitude\").attr(\"placeholder\", \"Longitude\").attr(\"max\", \"180\").attr(\"min\", \"-180\").attr(\"step\", \"0.0001\").attr(\"value\", geopos[1]).on(\"change\", function () { \r\n if (testNumber(this) === true) go(); \r\n });\r\n col.append(\"span\").html(\"\\u00b0\");\r\n //Here-button if supported\r\n if (\"geolocation\" in navigator) {\r\n col.append(\"input\").attr(\"type\", \"button\").attr(\"value\", \"Here\").attr(\"id\", \"here\").on(\"click\", here);\r\n }\r\n //Datetime field with dtpicker-button\r\n col.append(\"label\").attr(\"title\", \"Local date/time\").attr(\"for\", \"datetime\").html(\" Date/time\");\r\n col.append(\"input\").attr(\"type\", \"button\").attr(\"id\", \"day-left\").attr(\"title\", \"One day back\").on(\"click\", function () {\r\n date.setDate(date.getDate() - 1); \r\n $form(\"datetime\").value = dateFormat(date, timeZone); \r\n go(); \r\n });\r\n col.append(\"input\").attr(\"type\", \"text\").attr(\"id\", \"datetime\").attr(\"title\", \"Date and time\").attr(\"value\", dateFormat(date, timeZone))\r\n .on(\"click\", showpick, true).on(\"input\", function () { \r\n this.value = dateFormat(date, timeZone); \r\n if (!dtpick.isVisible()) showpick(); \r\n });\r\n col.append(\"div\").attr(\"id\", \"datepick\").on(\"click\", showpick);\r\n col.append(\"input\").attr(\"type\", \"button\").attr(\"id\", \"day-right\").attr(\"title\", \"One day forward\").on(\"click\", function () { \r\n date.setDate(date.getDate() + 1); \r\n $form(\"datetime\").value = dateFormat(date, timeZone); \r\n go(); \r\n });\r\n //Now -button sets current time & date of device \r\n col.append(\"input\").attr(\"type\", \"button\").attr(\"value\", \"Now\").attr(\"id\", \"now\").on(\"click\", now);\r\n //Horizon marker\r\n col.append(\"br\");\r\n col.append(\"label\").attr(\"title\", \"Show horizon marker\").attr(\"for\", \"horizon-show\").html(\" Horizon marker\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"horizon-show\").property(\"checked\", config.horizon.show).on(\"change\", apply); \r\n //Daylight\r\n col.append(\"label\").attr(\"title\", \"Show daylight\").attr(\"for\", \"daylight-show\").html(\"Daylight sky\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"daylight-show\").property(\"checked\", config.daylight.show).on(\"change\", apply);col.append(\"br\");\r\n \r\n //Show planets\r\n col.append(\"label\").attr(\"title\", \"Show solar system objects\").attr(\"for\", \"planets-show\").html(\" Planets, Sun & Moon\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"planets-show\").property(\"checked\", config.planets.show).on(\"change\", apply); \r\n //Planet names\r\n var names = formats.planets[config.culture] || formats.planets.iau;\r\n \r\n for (var fld in names) {\r\n if (!has(names, fld)) continue;\r\n var keys = Object.keys(names[fld]);\r\n if (keys.length > 1) {\r\n //Select List\r\n var txt = (fld === \"symbol\") ? \"as\" : \"with\";\r\n col.append(\"label\").attr(\"for\", \"planets-\" + fld + \"Type\").html(txt);\r\n \r\n var selected = 0;\r\n col.append(\"label\").attr(\"title\", \"Type of planet name\").attr(\"for\", \"planets-\" + fld + \"Type\").attr(\"class\", \"advanced\").html(\"\");\r\n var sel = col.append(\"select\").attr(\"id\", \"planets-\" + fld + \"Type\").on(\"change\", apply);\r\n var list = keys.map(function (key, i) {\r\n if (key === config.planets[fld + \"Type\"]) selected = i; \r\n return {o:key, n:names[fld][key]}; \r\n });\r\n sel.selectAll(\"option\").data(list).enter().append('option')\r\n .attr(\"value\", function (d) { return d.o; })\r\n .text(function (d) { return d.n; });\r\n sel.property(\"selectedIndex\", selected);\r\n\r\n if (fld === \"names\") {\r\n sel.attr(\"class\", \"advanced\");\r\n col.append(\"label\").attr(\"for\", \"planets-\" + fld).html(\"names\");\r\n col.append(\"input\").attr(\"type\", \"checkbox\").attr(\"id\", \"planets-\" + fld).property(\"checked\", config.planets[fld]).on(\"change\", apply);\r\n }\r\n } \r\n } \r\n \r\n enable($form(\"planets-show\"));\r\n showAdvanced(config.advanced);\r\n \r\n\r\n d3.select(document).on(\"mousedown\", function () { \r\n if (!hasParent(d3.event.target, \"celestial-date\") && dtpick.isVisible()) dtpick.hide(); \r\n });\r\n \r\n function now() {\r\n date.setTime(Date.now());\r\n $form(\"datetime\").value = dateFormat(date, timeZone);\r\n go();\r\n }\r\n\r\n function here() {\r\n navigator.geolocation.getCurrentPosition( function(pos) {\r\n geopos = [Round(pos.coords.latitude, 4), Round(pos.coords.longitude, 4)];\r\n $form(\"lat\").value = geopos[0];\r\n $form(\"lon\").value = geopos[1];\r\n go();\r\n }); \r\n }\r\n \r\n function showpick() {\r\n dtpick.show(date, timeZone);\r\n }\r\n \r\n function dateFormat(dt, tz) {\r\n var tzs;\r\n if (!tz || tz === \"0\") tzs = \" ±0000\";\r\n else {\r\n var h = Math.floor(Math.abs(tz) / 60),\r\n m = Math.abs(tz) - (h * 60),\r\n s = tz > 0 ? \" +\" : \" −\";\r\n tzs = s + pad(h) + pad(m);\r\n }\r\n return dtFormat(dt) + tzs;\r\n } \r\n \r\n\r\n function isValidLocation(loc) {\r\n //[lat, lon] expected\r\n if (!loc || !isArray(loc) || loc.length < 2) return false;\r\n if (!isNumber(loc[0]) || loc[0] < -90 || loc[0] > 90) return false;\r\n if (!isNumber(loc[1]) || loc[1] < -180 || loc[1] > 180) return false;\r\n return true;\r\n }\r\n\r\n function isValidTimezone(tz) {\r\n if (tz === undefined || tz === null) return false;\r\n if (!isNumber(tz) && Math.abs(tz) > 840) return false;\r\n return true; \r\n }\r\n \r\n function apply() {\r\n Object.assign(config, settings.set());\r\n config.horizon.show = !!$form(\"horizon-show\").checked;\r\n config.daylight.show = !!$form(\"daylight-show\").checked;\r\n config.planets.show = !!$form(\"planets-show\").checked; \r\n config.planets.names = !!$form(\"planets-names\").checked; \r\n config.planets.namesType = $form(\"planets-namesType\").value; \r\n config.planets.symbolType = $form(\"planets-symbolType\").value; \r\n enable($form(\"planets-show\"));\r\n\r\n Celestial.apply(config);\r\n }\r\n\r\n function go() {\r\n var lon = parseFloat($form(\"lon\").value),\r\n lat = parseFloat($form(\"lat\").value),\r\n tz;\r\n //Get current configuration\r\n Object.assign(config, settings.set());\r\n\r\n date = dtFormat.parse($form(\"datetime\").value.slice(0,-6));\r\n\r\n //Celestial.apply(config);\r\n\r\n if (!isNaN(lon) && !isNaN(lat)) {\r\n if (lat !== geopos[0] || lon !== geopos[1]) {\r\n geopos = [lat, lon];\r\n setPosition([lat, lon], true);\r\n return;\r\n }\r\n //if (!tz) tz = date.getTimezoneOffset();\r\n $form(\"datetime\").value = dateFormat(date, timeZone); \r\n\r\n var dtc = new Date(date.valueOf() - (timeZone - localZone) * 60000);\r\n\r\n zenith = Celestial.getPoint(horizontal.inverse(dtc, [90, 0], geopos), config.transform);\r\n zenith[2] = 0;\r\n if (config.follow === \"zenith\") {\r\n Celestial.rotate({center:zenith});\r\n } else {\r\n Celestial.redraw();\r\n }\r\n }\r\n }\r\n\r\n \r\n function setPosition(p, settime) {\r\n if (!p || !has(config, \"settimezone\") || config.settimezone === false) return;\r\n var timestamp = Math.floor(date.getTime() / 1000),\r\n protocol = window && window.location.protocol === \"https:\" ? \"https\" : \"http\",\r\n url = protocol + \"://api.timezonedb.com/v2.1/get-time-zone?key=\" + config.timezoneid + \"&format=json&by=position\" + \r\n \"&lat=\" + p[0] + \"&lng=\" + p[1] + \"&time=\" + timestamp;\r\n // oldZone = timeZone;\r\n\r\n d3.json(url, function(error, json) { \r\n if (error) return console.warn(error);\r\n if (json.status === \"FAILED\") {\r\n // Location at sea inferred from longitude\r\n timeZone = Math.round(p[1] / 15) * 60;\r\n geoInfo = {\r\n gmtOffset: timeZone * 60,\r\n message: \"Sea locatation inferred\",\r\n timestamp: timestamp\r\n };\r\n } else {\r\n timeZone = json.gmtOffset / 60;\r\n geoInfo = json;\r\n }\r\n //if (settime) {\r\n //date.setTime(timestamp * 1000); // - (timeZone - oldZone) * 60000);\r\n //console.log(date.toUTCString());\r\n //}\r\n $form(\"datetime\").value = dateFormat(date, timeZone);\r\n go();\r\n }); \r\n }\r\n\r\n Celestial.dateFormat = dateFormat;\r\n \r\n Celestial.date = function (dt, tz) { \r\n if (!dt) return date; \r\n if (isValidTimezone(tz)) timeZone = tz;\r\n Object.assign(config, settings.set());\r\n if (dtpick.isVisible()) dtpick.hide();\r\n date.setTime(dt.valueOf());\r\n $form(\"datetime\").value = dateFormat(dt, timeZone); \r\n go();\r\n };\r\n Celestial.timezone = function (tz) { \r\n if (!tz) return timeZone; \r\n if (isValidTimezone(tz)) timeZone = tz;\r\n Object.assign(config, settings.set());\r\n if (dtpick.isVisible()) dtpick.hide();\r\n $form(\"datetime\").value = dateFormat(date, timeZone); \r\n go();\r\n };\r\n Celestial.position = function () { return geopos; };\r\n Celestial.location = function (loc, tz) {\r\n if (!loc || loc.length < 2) return geopos;\r\n if (isValidLocation(loc)) {\r\n geopos = loc.slice();\r\n $form(\"lat\").value = geopos[0];\r\n $form(\"lon\").value = geopos[1];\r\n if (isValidTimezone(tz)) timeZone = tz;\r\n else setPosition(geopos, true);\r\n }\r\n };\r\n //{\"date\":dt, \"location\":loc, \"timezone\":tz}\r\n Celestial.skyview = function (cfg) {\r\n if (!cfg) return {\"date\": date, \"location\": geopos, \"timezone\": timeZone};\r\n var valid = false;\r\n if (dtpick.isVisible()) dtpick.hide();\r\n if (has(cfg, \"timezone\") && isValidTimezone(cfg.timezone)) {\r\n timeZone = cfg.timezone;\r\n valid = true;\r\n }\r\n if (has(cfg, \"date\") && isValidDate(cfg.date)) {\r\n date.setTime(cfg.date.valueOf());\r\n $form(\"datetime\").value = dateFormat(cfg.date, timeZone); \r\n valid = true;\r\n }\r\n if (has(cfg, \"location\") && isValidLocation(cfg.location)) {\r\n geopos = cfg.location.slice();\r\n $form(\"lat\").value = geopos[0];\r\n $form(\"lon\").value = geopos[1];\r\n if (!has(cfg, \"timezone\")) { \r\n setPosition(geopos, !has(cfg, \"date\"));\r\n return;\r\n }\r\n }\r\n //Celestial.updateForm();\r\n if (valid === false) return {\"date\": date, \"location\": geopos, \"timezone\": timeZone};\r\n if (config.follow === \"zenith\") go();\r\n else Celestial.redraw();\r\n }; \r\n Celestial.dtLoc = Celestial.skyview;\r\n Celestial.zenith = function () { return zenith; };\r\n Celestial.nadir = function () {\r\n var b = -zenith[1],\r\n l = zenith[0] + 180;\r\n if (l > 180) l -= 360; \r\n return [l, b-0.001]; \r\n };\r\n\r\n if (has(config, \"formFields\") && (config.location === true || config.formFields.location === true)) {\r\n d3.select(parentElement + \" ~ #celestial-form\").select(\"#location\").style( {\"display\": \"inline-block\"} );\r\n }\r\n //only if appropriate\r\n if (isValidLocation(geopos) && (config.location === true || config.formFields.location === true) && config.follow === \"zenith\")\r\n setTimeout(go, 1000); \r\n \r\n}\r\n\r\nvar gmdat = {\r\n \"sol\": 0.0002959122082855911025, // AU^3/d^2\r\n \"mer\": 164468599544771, //km^3/d^2\r\n \"ven\": 2425056445892137,\r\n \"ter\": 2975536307796296,\r\n \"lun\": 36599199229256,\r\n \"mar\": 319711652803400,\r\n \"cer\": 467549107200,\r\n \"ves\": 129071530155,\r\n \"jup\": 945905718740635000,\r\n \"sat\": 283224952705891000,\r\n \"ura\": 43256077238632300,\r\n \"nep\": 51034401552155700,\r\n \"plu\": 7327611364884,\r\n \"eri\": 8271175680000\r\n},\r\n\r\n\r\nsymbols = {\r\n \"sol\":\"\\u2609\", \"mer\":\"\\u263f\", \"ven\":\"\\u2640\", \"ter\":\"\\u2295\", \"lun\":\"\\u25cf\", \"mar\":\"\\u2642\", \"cer\":\"\\u26b3\", \r\n \"ves\":\"\\u26b6\", \"jup\":\"\\u2643\", \"sat\":\"\\u2644\", \"ura\":\"\\u2645\", \"nep\":\"\\u2646\", \"plu\":\"\\u2647\", \"eri\":\"\\u26aa\"\r\n}, \r\n\r\nε = 23.43928 * deg2rad,\r\nsinε = Math.sin(ε),\r\ncosε = Math.cos(ε),\r\nkelements = [\"a\",\"e\",\"i\",\"w\",\"M\",\"L\",\"W\",\"N\",\"n\",\"ep\",\"ref\",\"lecl\",\"becl\",\"Tilt\"];\r\n/*\r\n ep = epoch (iso-date)\r\n N = longitude of the ascending node (deg) Ω\r\n i = inclination to the refrence plane, default:ecliptic (deg) \r\n w = argument of periapsis (deg) ω\r\n a = semi-major axis, or mean distance from parent body (AU,km)\r\n e = eccentricity (0=circle, 0-1=ellipse, 1=parabola, >1=hyperbola ) (-)\r\n M = mean anomaly (0 at periapsis; increases uniformly with time) (deg)\r\n n = mean daily motion = 360/P (deg/day)\r\n \r\n W = N + w = longitude of periapsis ϖ\r\n L = M + W = mean longitude\r\n q = a*(1-e) = periapsis distance\r\n Q = a*(1+e) = apoapsis distance\r\n P = 2π * sqrt(a^3/GM) = orbital period (years)\r\n T = Epoch_of_M - (M(deg)/360_deg) / P = time of periapsis\r\n v = true anomaly (angle between position and periapsis) ν\r\n E = eccentric anomaly\r\n \r\n Mandatory: a, e, i, N, w|W, M|L, dM|n\r\n \r\n*/\r\n\r\nvar Kepler = function () {\r\n var gm = gmdat.sol, \r\n parentBody = \"sol\", \r\n elem = {}, dat = {},\r\n id, name, symbol;\r\n\r\n\r\n function kepler(date) {\r\n dates(date);\r\n if (id === \"sol\") {\r\n dat.ephemeris.x = 0;\r\n dat.ephemeris.y = 0;\r\n dat.ephemeris.z = 0;\r\n dat.ephemeris.mag = -6;\r\n return kepler;\r\n }\r\n coordinates();\r\n return kepler;\r\n }\r\n\r\n var dates = function(date) {\r\n var dt, de = dat.ephemeris = {};\r\n if (date) {\r\n if (date instanceof Date) { dt = new Date(date.valueOf()); }\r\n else { dt = dateParse(date); }\r\n }\r\n if (!dt) { dt = new Date(); }\r\n de.jd = JD(dt);\r\n \r\n dt = dateParse(elem.ep);\r\n if (!dt) dt = dateParse(\"2000-01-01\");\r\n de.jd0 = JD(dt);\r\n de.d = de.jd - de.jd0;\r\n de.cy = de.d / 36525;\r\n };\r\n\r\n var coordinates = function() {\r\n var key, de = dat.ephemeris;\r\n if (id === \"lun\") {\r\n de = moon_elements(de);\r\n if (!de) return;\r\n } else {\r\n for (var i=0; i 1.0 ? E*E : -E*E,\r\n term = e * anom2 * E / 6.0,\r\n rval = (1.0 - e) * E - term,\r\n n = 4;\r\n\r\n while(Math.abs(term) > 1e-15) {\r\n term *= anom2 / (n * (n + 1));\r\n rval -= term;\r\n n += 2;\r\n }\r\n return(rval);\r\n }\r\n\r\n function anomaly() {\r\n var de = dat.ephemeris,\r\n curr, err, trial, tmod,\r\n e = de.e, M = de.M,\r\n thresh = 1e-8,\r\n offset = 0.0, \r\n delta_curr = 1.9, \r\n is_negative = false, \r\n n_iter = 0;\r\n\r\n if (!M) return(0.0); \r\n\r\n if (e < 1.0) {\r\n if (M < -Math.PI || M > Math.PI) {\r\n tmod = Trig.normalize0(M);\r\n offset = M - tmod;\r\n M = tmod;\r\n }\r\n\r\n if (e < 0.9) { \r\n curr = Math.atan2(Math.sin(M), Math.cos(M) - e);\r\n do {\r\n err = (curr - e * Math.sin(curr) - M) / (1.0 - e * Math.cos(curr));\r\n curr -= err;\r\n } while (Math.abs(err) > thresh);\r\n return curr; // + offset;\r\n }\r\n }\r\n\r\n if ( M < 0.0) {\r\n M = -M;\r\n is_negative = true;\r\n }\r\n\r\n curr = M;\r\n thresh = thresh * Math.abs(1.0 - e);\r\n /* Due to roundoff error, there's no way we can hope to */\r\n /* get below a certain minimum threshhold anyway: */\r\n if ( thresh < 1e-15) { thresh = 1e-15; }\r\n if ( (e > 0.8 && M < Math.PI / 3.0) || e > 1.0) { /* up to 60 degrees */\r\n trial = M / Math.abs( 1.0 - e);\r\n\r\n if (trial * trial > 6.0 * Math.abs(1.0 - e)) { /* cubic term is dominant */\r\n if (M < Math.PI) {\r\n trial = Math.pow(6.0 * M, 1/3);\r\n } else { /* hyperbolic w/ 5th & higher-order terms predominant */\r\n trial = Trig.asinh( M / e);\r\n }\r\n }\r\n curr = trial;\r\n }\r\n if (e > 1.0 && M > 4.0) { /* hyperbolic, large-mean-anomaly case */\r\n curr = Math.log(M);\r\n }\r\n if (e < 1.0) {\r\n while(Math.abs(delta_curr) > thresh) {\r\n if ( n_iter++ > 8) {\r\n err = near_parabolic(curr, e) - M;\r\n } else {\r\n err = curr - e * Math.sin(curr) - M;\r\n }\r\n delta_curr = -err / (1.0 - e * Math.cos(curr));\r\n curr += delta_curr;\r\n }\r\n } else {\r\n while (Math.abs(delta_curr) > thresh) {\r\n if (n_iter++ > 7) {\r\n err = -near_parabolic(curr, e) - M;\r\n } else {\r\n err = e * Trig.sinh(curr) - curr - M;\r\n }\r\n delta_curr = -err / (e * Trig.cosh(curr) - 1.0);\r\n curr += delta_curr;\r\n }\r\n }\r\n return( is_negative ? offset - curr : offset + curr);\r\n }\r\n\r\n function trueAnomaly() {\r\n var x, y, r0, g, t, de = dat.ephemeris;\r\n\r\n if (de.e === 1.0) { /* parabolic */\r\n t = de.jd0 - de.T;\r\n g = de.w0 * t * 0.5;\r\n\r\n y = Math.pow(g + Math.sqrt(g * g + 1.0), 1/3);\r\n de.v = 2.0 * Math.atan(y - 1.0 / y);\r\n } else { /* got the mean anomaly; compute eccentric, then true */\r\n de.E = anomaly();\r\n if (de.e > 1.0) { /* hyperbolic case */\r\n x = (de.e - Trig.cosh(de.E));\r\n y = Trig.sinh(de.E);\r\n } else { /* elliptical case */\r\n x = (Math.cos(de.E) - de.e);\r\n y = Math.sin(de.E);\r\n }\r\n y *= Math.sqrt(Math.abs(1.0 - de.e * de.e));\r\n de.v = Math.atan2(y, x);\r\n }\r\n\r\n r0 = de.q * (1.0 + de.e);\r\n de.r = r0 / (1.0 + de.e * Math.cos(de.v));\r\n }\r\n\r\n function derive() {\r\n var de = dat.ephemeris;\r\n if (!de.hasOwnProperty(\"w\")) {\r\n de.w = de.W - de.N;\r\n }\r\n if (!de.hasOwnProperty(\"M\")) {\r\n de.M = de.L - de.W;\r\n }\r\n if (de.e < 1.0) { de.M = Trig.normalize0(de.M); }\r\n //de.P = Math.pow(Math.abs(de.a), 1.5);\r\n de.P = τ * Math.sqrt(Math.pow(de.a, 3) / gm) / 365.25;\r\n de.T = de.jd0 - (de.M / halfπ) / de.P;\r\n\r\n if (de.e !== 1.0) { /* for non-parabolic orbits: */\r\n de.q = de.a * (1.0 - de.e);\r\n de.t0 = de.a * Math.sqrt(Math.abs(de.a) / gm);\r\n } else {\r\n de.w0 = (3.0 / Math.sqrt(2)) / (de.q * Math.sqrt(de.q / gm));\r\n de.a = 0.0;\r\n de.t0 = 0.0;\r\n }\r\n de.am = Math.sqrt(gm * de.q * (1.0 + de.e));\r\n }\r\n\r\n function transpose() {\r\n var de = dat.ephemeris;\r\n if (!de.ref || de.ref === \"ecl\") {\r\n de.tx = de.x;\r\n de.ty = de.y;\r\n de.tz = de.z;\r\n return;\r\n }\r\n var a0 = de.lecl,// - Math.PI/2,\r\n a1 = Math.PI/2 - de.becl,\r\n angles = [0, a1, -a0];\r\n transform(de, angles);\r\n var tp = Trig.cartesian([de.tl, de.tb, de.r]);\r\n de.tx = tp.x;\r\n de.ty = tp.y;\r\n de.tz = tp.z;\r\n }\r\n\r\n function equatorial(pos) {\r\n var de = dat.ephemeris, pe = pos.ephemeris;\r\n ε = (23.439292 - 0.0130042 * de.cy - 1.667e-7 * de.cy * de.cy + 5.028e-7 * de.cy * de.cy * de.cy) * deg2rad;\r\n sinε = Math.sin(ε);\r\n cosε = Math.cos(ε);\r\n var o = (id === \"lun\") ? {x:0, y:0, z:0} : {x:pe.x, y:pe.y, z:pe.z};\r\n de.xeq = de.x - o.x;\r\n de.yeq = (de.y - o.y) * cosε - (de.z - o.z) * sinε;\r\n de.zeq = (de.y - o.y) * sinε + (de.z - o.z) * cosε;\r\n\r\n de.ra = Trig.normalize(Math.atan2(de.yeq, de.xeq));\r\n de.dec = Math.atan2(de.zeq, Math.sqrt(de.xeq*de.xeq + de.yeq*de.yeq));\r\n if (id === \"lun\") de = moon_corr(de, pe);\r\n de.pos = [de.ra / deg2rad, de.dec / deg2rad];\r\n de.rt = Math.sqrt(de.xeq*de.xeq + de.yeq*de.yeq + de.zeq*de.zeq);\r\n if (id !== \"sol\") de.mag = magnitude();\r\n }\r\n\r\n function magnitude() {\r\n var de = dat.ephemeris,\r\n rs = de.r, rt = de.rt,\r\n a = Math.acos((rs*rs + rt*rt - 1) / (2 * rs * rt)),\r\n q = 0.666 *((1-a/Math.PI) * Math.cos(a) + 1 / Math.PI * Math.sin(a)),\r\n m = dat.H * 1 + 5 * Math.log(rs*rt) * Math.LOG10E - 2.5 * Math.log(q) * Math.LOG10E;\r\n \r\n return m;\r\n }\r\n\r\n function cartesian() {\r\n var de = dat.ephemeris,\r\n u = de.v + de.w;\r\n de.x = de.r * (Math.cos(de.N) * Math.cos(u) - Math.sin(de.N) * Math.sin(u) * Math.cos(de.i));\r\n de.y = de.r * (Math.sin(de.N) * Math.cos(u) + Math.cos(de.N) * Math.sin(u) * Math.cos(de.i));\r\n de.z = de.r * (Math.sin(u) * Math.sin(de.i));\r\n return dat;\r\n }\r\n\r\n function spherical() {\r\n var de = dat.ephemeris,\r\n lon = Math.atan2(de.y, de.x),\r\n lat = Math.atan2(de.z, Math.sqrt(de.x*de.x + de.y*de.y));\r\n de.l = Trig.normalize(lon);\r\n de.b = lat;\r\n return dat; \r\n }\r\n\r\n function transform(angles) {\r\n \r\n }\r\n\r\n function polar2cart(pos) {\r\n var rclat = Math.cos(pos.lat) * pos.r;\r\n pos.x = rclat * Math.cos(pos.lon);\r\n pos.y = rclat * Math.sin(pos.lon);\r\n pos.z = pos.r * Math.sin(pos.lat);\r\n return pos;\r\n }\r\n\r\n \r\n function JD(dt) { \r\n var yr = dt.getUTCFullYear(),\r\n mo = dt.getUTCMonth() + 1,\r\n dy = dt.getUTCDate(),\r\n frac = (dt.getUTCHours() - 12 + dt.getUTCMinutes()/60.0 + dt.getUTCSeconds()/3600.0) / 24, \r\n IYMIN = -4799; /* Earliest year allowed (4800BC) */\r\n\r\n if (yr < IYMIN) return -1; \r\n var a = Math.floor((14 - mo) / 12),\r\n y = yr + 4800 - a,\r\n m = mo + (12 * a) - 3;\r\n var jdn = dy + Math.floor((153 * m + 2)/5) + (365 * y) + Math.floor(y / 4) - Math.floor(y / 100) + Math.floor(y / 400) - 32045;\r\n return jdn + frac; \r\n }\r\n\r\n function mst(lon) {\r\n var l = lon || 0; // lon=0 -> gmst\r\n return (18.697374558 + 24.06570982441908 * dat.ephemeris.d) * 15 + l;\r\n }\r\n \r\n \r\n function observer(pos) {\r\n var flat = 298.257223563, // WGS84 flattening of earth\r\n re = 6378.137, // GRS80/WGS84 semi major axis of earth ellipsoid\r\n h = pos.h || 0,\r\n cart = {},\r\n gmst = mst();\r\n \r\n var cosl = Math.cos(pos.lat),\r\n sinl = Math.sin(pos.lat),\r\n fl = 1.0 - 1.0 / flat;\r\n var fl2 = fl * fl;\r\n \r\n var u = 1.0 / Math.sqrt (cosl * cosl + fl2 * sinl * sinl),\r\n a = re * u + h,\r\n b = re * fl2 * u + h,\r\n r = Math.sqrt (a * a * cosl * cosl + b * b * sinl * sinl); // geocentric distance from earth center\r\n\r\n cart.lat = Math.acos (a * cosl / r); \r\n cart.lon = pos.lon; \r\n cart.r = h;\r\n \r\n if (pos.lat < 0.0) cart.lat *= -1; \r\n\r\n polar2cart(cart); \r\n\r\n // rotate around earth's polar axis to align coordinate system from Greenwich to vernal equinox\r\n var angle = gmst * deg2rad; // sideral time gmst given in hours. Convert to radians\r\n\r\n cart.x = cart.x * Math.cos(angle) - cart.y * Math.sin(angle);\r\n cart.y = cart.x * Math.sin(angle) + cart.y * Math.cos(angle);\r\n return(cart);\r\n }\r\n\r\n function moon_elements(dat) {\r\n if ((typeof Moon !== \"undefined\")) return Moon.elements(dat);\r\n }\r\n \r\n function moon_corr(dat, pos) {\r\n spherical();\r\n if ((typeof Moon !== \"undefined\")) return Moon.corr(dat, pos);\r\n }\r\n\r\n return kepler; \r\n};\r\nvar Moon = {\r\n elements: function(dat) {\r\n var t = (dat.jd - 2451545) / 36525,\r\n t2 = t * t,\r\n t3 = t * t2,\r\n t4 = t * t3,\r\n t5 = t * t4,\r\n t2e4 = t2 * 1e-4,\r\n t3e6 = t3 * 1e-6,\r\n t4e8 = t4 * 1e-8;\r\n\r\n // semimajor axis\r\n var sa = 3400.4 * Math.cos(deg2rad * (235.7004 + 890534.2230 * t - 32.601 * t2e4 \r\n + 3.664 * t3e6 - 1.769 * t4e8)) \r\n - 635.6 * Math.cos(deg2rad * (100.7370 + 413335.3554 * t - 122.571 * t2e4 \r\n - 10.684 * t3e6 + 5.028 * t4e8)) \r\n - 235.6 * Math.cos(deg2rad * (134.9634 + 477198.8676 * t + 89.970 * t2e4 \r\n + 14.348 * t3e6 - 6.797 * t4e8)) \r\n + 218.1 * Math.cos(deg2rad * (238.1713 + 854535.1727 * t - 31.065 * t2e4 \r\n + 3.623 * t3e6 - 1.769 * t4e8)) \r\n + 181.0 * Math.cos(deg2rad * (10.6638 + 1367733.0907 * t + 57.370 * t2e4 \r\n + 18.011 * t3e6 - 8.566 * t4e8)) \r\n - 39.9 * Math.cos(deg2rad * (103.2079 + 377336.3051 * t - 121.035 * t2e4 \r\n - 10.724 * t3e6 + 5.028 * t4e8)) \r\n - 38.4 * Math.cos(deg2rad * (233.2295 + 926533.2733 * t - 34.136 * t2e4 \r\n + 3.705 * t3e6 - 1.769 * t4e8)) \r\n + 33.8 * Math.cos(deg2rad * (336.4374 + 1303869.5784 * t - 155.171 * t2e4 \r\n - 7.020 * t3e6 + 3.259 * t4e8)) \r\n + 28.8 * Math.cos(deg2rad * (111.4008 + 1781068.4461 * t - 65.201 * t2e4 \r\n + 7.328 * t3e6 - 3.538 * t4e8)) \r\n + 12.6 * Math.cos(deg2rad * (13.1347 + 1331734.0404 * t + 58.906 * t2e4 \r\n + 17.971 * t3e6 - 8.566 * t4e8)) \r\n + 11.4 * Math.cos(deg2rad * (186.5442 + 966404.0351 * t - 68.058 * t2e4 \r\n - 0.567 * t3e6 + 0.232 * t4e8)) \r\n - 11.1 * Math.cos(deg2rad * (222.5657 - 441199.8173 * t - 91.506 * t2e4 \r\n - 14.307 * t3e6 + 6.797 * t4e8)) \r\n - 10.2 * Math.cos(deg2rad * (269.9268 + 954397.7353 * t + 179.941 * t2e4 \r\n + 28.695 * t3e6 - 13.594 * t4e8)) \r\n + 9.7 * Math.cos(deg2rad * (145.6272 + 1844931.9583 * t + 147.340 * t2e4 \r\n + 32.359 * t3e6 - 15.363 * t4e8)) \r\n + 9.6 * Math.cos(deg2rad * (240.6422 + 818536.1225 * t - 29.529 * t2e4 \r\n + 3.582 * t3e6 - 1.769 * t4e8)) \r\n + 8.0 * Math.cos(deg2rad * (297.8502 + 445267.1115 * t - 16.300 * t2e4 \r\n + 1.832 * t3e6 - 0.884 * t4e8)) \r\n - 6.2 * Math.cos(deg2rad * (132.4925 + 513197.9179 * t + 88.434 * t2e4 \r\n + 14.388 * t3e6 - 6.797 * t4e8)) \r\n + 6.0 * Math.cos(deg2rad * (173.5506 + 1335801.3346 * t - 48.901 * t2e4 \r\n + 5.496 * t3e6 - 2.653 * t4e8)) \r\n + 3.7 * Math.cos(deg2rad * (113.8717 + 1745069.3958 * t - 63.665 * t2e4 \r\n + 7.287 * t3e6 - 3.538 * t4e8)) \r\n + 3.6 * Math.cos(deg2rad * (338.9083 + 1267870.5281 * t - 153.636 * t2e4 \r\n - 7.061 * t3e6 + 3.259 * t4e8)) \r\n + 3.2 * Math.cos(deg2rad * (246.3642 + 2258267.3137 * t + 24.769 * t2e4 \r\n + 21.675 * t3e6 - 10.335 * t4e8)) \r\n - 3.0 * Math.cos(deg2rad * (8.1929 + 1403732.1410 * t + 55.834 * t2e4 \r\n + 18.052 * t3e6 - 8.566 * t4e8)) \r\n + 2.3 * Math.cos(deg2rad * (98.2661 + 449334.4057 * t - 124.107 * t2e4 \r\n - 10.643 * t3e6 + 5.028 * t4e8)) \r\n - 2.2 * Math.cos(deg2rad * (357.5291 + 35999.0503 * t - 1.536 * t2e4 \r\n + 0.041 * t3e6 + 0.000 * t4e8)) \r\n - 2.0 * Math.cos(deg2rad * (38.5872 + 858602.4669 * t - 138.871 * t2e4 \r\n - 8.852 * t3e6 + 4.144 * t4e8)) \r\n - 1.8 * Math.cos(deg2rad * (105.6788 + 341337.2548 * t - 119.499 * t2e4 \r\n - 10.765 * t3e6 + 5.028 * t4e8)) \r\n - 1.7 * Math.cos(deg2rad * (201.4740 + 826670.7108 * t - 245.142 * t2e4 \r\n - 21.367 * t3e6 + 10.057 * t4e8)) \r\n + 1.6 * Math.cos(deg2rad * (184.1196 + 401329.0556 * t + 125.428 * t2e4 \r\n + 18.579 * t3e6 - 8.798 * t4e8)) \r\n - 1.4 * Math.cos(deg2rad * (308.4192 - 489205.1674 * t + 158.029 * t2e4 \r\n + 14.915 * t3e6 - 7.029 * t4e8)) \r\n + 1.3 * Math.cos(deg2rad * (325.7736 - 63863.5122 * t - 212.541 * t2e4 \r\n - 25.031 * t3e6 + 11.826 * t4e8));\r\n\r\n var sapp = - 0.55 * Math.cos(deg2rad * (238.2 + 854535.2 * t)) \r\n + 0.10 * Math.cos(deg2rad * (103.2 + 377336.3 * t)) \r\n + 0.10 * Math.cos(deg2rad * (233.2 + 926533.3 * t));\r\n\r\n var sma = 383397.6 + sa + sapp * t;\r\n\r\n // orbital eccentricity\r\n\r\n var se = 0.014217 * Math.cos(deg2rad * (100.7370 + 413335.3554 * t - 122.571 * t2e4 \r\n - 10.684 * t3e6 + 5.028 * t4e8)) \r\n + 0.008551 * Math.cos(deg2rad * (325.7736 - 63863.5122 * t - 212.541 * t2e4 \r\n - 25.031 * t3e6 + 11.826 * t4e8)) \r\n - 0.001383 * Math.cos(deg2rad * (134.9634 + 477198.8676 * t + 89.970 * t2e4 \r\n + 14.348 * t3e6 - 6.797 * t4e8)) \r\n + 0.001353 * Math.cos(deg2rad * (10.6638 + 1367733.0907 * t + 57.370 * t2e4 \r\n + 18.011 * t3e6 - 8.566 * t4e8)) \r\n - 0.001146 * Math.cos(deg2rad * (66.5106 + 349471.8432 * t - 335.112 * t2e4 \r\n - 35.715 * t3e6 + 16.854 * t4e8)) \r\n - 0.000915 * Math.cos(deg2rad * (201.4740 + 826670.7108 * t - 245.142 * t2e4 \r\n - 21.367 * t3e6 + 10.057 * t4e8)) \r\n + 0.000869 * Math.cos(deg2rad * (103.2079 + 377336.3051 * t - 121.035 * t2e4 \r\n - 10.724 * t3e6 + 5.028 * t4e8)) \r\n - 0.000628 * Math.cos(deg2rad * (235.7004 + 890534.2230 * t - 32.601 * t2e4 \r\n + 3.664 * t3e6 - 1.769 * t4e8)) \r\n - 0.000393 * Math.cos(deg2rad * (291.5472 - 127727.0245 * t - 425.082 * t2e4 \r\n - 50.062 * t3e6 + 23.651 * t4e8)) \r\n + 0.000284 * Math.cos(deg2rad * (328.2445 - 99862.5625 * t - 211.005 * t2e4 \r\n - 25.072 * t3e6 + 11.826 * t4e8)) \r\n - 0.000278 * Math.cos(deg2rad * (162.8868 - 31931.7561 * t - 106.271 * t2e4 \r\n - 12.516 * t3e6 + 5.913 * t4e8)) \r\n - 0.000240 * Math.cos(deg2rad * (269.9268 + 954397.7353 * t + 179.941 * t2e4 \r\n + 28.695 * t3e6 - 13.594 * t4e8)) \r\n + 0.000230 * Math.cos(deg2rad * (111.4008 + 1781068.4461 * t - 65.201 * t2e4 \r\n + 7.328 * t3e6 - 3.538 * t4e8)) \r\n + 0.000229 * Math.cos(deg2rad * (167.2476 + 762807.1986 * t - 457.683 * t2e4 \r\n - 46.398 * t3e6 + 21.882 * t4e8)) \r\n - 0.000202 * Math.cos(deg2rad * ( 83.3826 - 12006.2998 * t + 247.999 * t2e4 \r\n + 29.262 * t3e6 - 13.826 * t4e8)) \r\n + 0.000190 * Math.cos(deg2rad * (190.8102 - 541062.3799 * t - 302.511 * t2e4 \r\n - 39.379 * t3e6 + 18.623 * t4e8)) \r\n + 0.000177 * Math.cos(deg2rad * (357.5291 + 35999.0503 * t - 1.536 * t2e4 \r\n + 0.041 * t3e6 + 0.000 * t4e8)) \r\n + 0.000153 * Math.cos(deg2rad * (32.2842 + 285608.3309 * t - 547.653 * t2e4 \r\n - 60.746 * t3e6 + 28.679 * t4e8)) \r\n - 0.000137 * Math.cos(deg2rad * (44.8902 + 1431596.6029 * t + 269.911 * t2e4 \r\n + 43.043 * t3e6 - 20.392 * t4e8)) \r\n + 0.000122 * Math.cos(deg2rad * (145.6272 + 1844931.9583 * t + 147.340 * t2e4 \r\n + 32.359 * t3e6 - 15.363 * t4e8)) \r\n + 0.000116 * Math.cos(deg2rad * (302.2110 + 1240006.0662 * t - 367.713 * t2e4 \r\n - 32.051 * t3e6 + 15.085 * t4e8)) \r\n - 0.000111 * Math.cos(deg2rad * (203.9449 + 790671.6605 * t - 243.606 * t2e4 \r\n - 21.408 * t3e6 + 10.057 * t4e8)) \r\n - 0.000108 * Math.cos(deg2rad * (68.9815 + 313472.7929 * t - 333.576 * t2e4 \r\n - 35.756 * t3e6 + 16.854 * t4e8)) \r\n + 0.000096 * Math.cos(deg2rad * (336.4374 + 1303869.5784 * t - 155.171 * t2e4 \r\n - 7.020 * t3e6 + 3.259 * t4e8)) \r\n - 0.000090 * Math.cos(deg2rad * (98.2661 + 449334.4057 * t - 124.107 * t2e4 \r\n - 10.643 * t3e6 + 5.028 * t4e8)) \r\n + 0.000090 * Math.cos(deg2rad * (13.1347 + 1331734.0404 * t + 58.906 * t2e4 \r\n + 17.971 * t3e6 - 8.566 * t4e8)) \r\n + 0.000056 * Math.cos(deg2rad * (55.8468 - 1018261.2475 * t - 392.482 * t2e4 \r\n - 53.726 * t3e6 + 25.420 * t4e8)) \r\n - 0.000056 * Math.cos(deg2rad * (238.1713 + 854535.1727 * t - 31.065 * t2e4 \r\n + 3.623 * t3e6 - 1.769 * t4e8)) \r\n + 0.000052 * Math.cos(deg2rad * (308.4192 - 489205.1674 * t + 158.029 * t2e4 \r\n + 14.915 * t3e6 - 7.029 * t4e8)) \r\n - 0.000050 * Math.cos(deg2rad * (133.0212 + 698943.6863 * t - 670.224 * t2e4 \r\n - 71.429 * t3e6 + 33.708 * t4e8)) \r\n - 0.000049 * Math.cos(deg2rad * (267.9846 + 1176142.5540 * t - 580.254 * t2e4 \r\n - 57.082 * t3e6 + 26.911 * t4e8)) \r\n - 0.000049 * Math.cos(deg2rad * (184.1196 + 401329.0556 * t + 125.428 * t2e4 \r\n + 18.579 * t3e6 - 8.798 * t4e8)) \r\n - 0.000045 * Math.cos(deg2rad * (49.1562 - 75869.8120 * t + 35.458 * t2e4 \r\n + 4.231 * t3e6 - 2.001 * t4e8)) \r\n + 0.000044 * Math.cos(deg2rad * (257.3208 - 191590.5367 * t - 637.623 * t2e4 \r\n - 75.093 * t3e6 + 35.477 * t4e8)) \r\n + 0.000042 * Math.cos(deg2rad * (105.6788 + 341337.2548 * t - 119.499 * t2e4 \r\n - 10.765 * t3e6 + 5.028 * t4e8)) \r\n + 0.000042 * Math.cos(deg2rad * (160.4159 + 4067.2942 * t - 107.806 * t2e4 \r\n - 12.475 * t3e6 + 5.913 * t4e8)) \r\n + 0.000040 * Math.cos(deg2rad * (246.3642 + 2258267.3137 * t + 24.769 * t2e4 \r\n + 21.675 * t3e6 - 10.335 * t4e8)) \r\n - 0.000040 * Math.cos(deg2rad * (156.5838 - 604925.8921 * t - 515.053 * t2e4 \r\n - 64.410 * t3e6 + 30.448 * t4e8)) \r\n + 0.000036 * Math.cos(deg2rad * (169.7185 + 726808.1483 * t - 456.147 * t2e4 \r\n - 46.439 * t3e6 + 21.882 * t4e8)) \r\n + 0.000029 * Math.cos(deg2rad * (113.8717 + 1745069.3958 * t - 63.665 * t2e4 \r\n + 7.287 * t3e6 - 3.538 * t4e8)) \r\n - 0.000029 * Math.cos(deg2rad * (297.8502 + 445267.1115 * t - 16.300 * t2e4 \r\n + 1.832 * t3e6 - 0.884 * t4e8)) \r\n - 0.000028 * Math.cos(deg2rad * (294.0181 - 163726.0747 * t - 423.546 * t2e4 \r\n - 50.103 * t3e6 + 23.651 * t4e8)) \r\n + 0.000027 * Math.cos(deg2rad * (263.6238 + 381403.5993 * t - 228.841 * t2e4 \r\n - 23.199 * t3e6 + 10.941 * t4e8)) \r\n - 0.000026 * Math.cos(deg2rad * (358.0578 + 221744.8187 * t - 760.194 * t2e4 \r\n - 85.777 * t3e6 + 40.505 * t4e8)) \r\n - 0.000026 * Math.cos(deg2rad * (8.1929 + 1403732.1410 * t + 55.834 * t2e4 \r\n + 18.052 * t3e6 - 8.566 * t4e8));\r\n\r\n var sedp = -0.0022 * Math.cos(deg2rad * (103.2 + 377336.3 * t));\r\n\r\n var ecc = 0.055544 + se + 1e-3 * t * sedp;\r\n\r\n // sine of half the inclination\r\n\r\n var sg = 0.0011776 * Math.cos(deg2rad * (49.1562 - 75869.8120 * t + 35.458 * t2e4 \r\n + 4.231 * t3e6 - 2.001 * t4e8)) \r\n - 0.0000971 * Math.cos(deg2rad * (235.7004 + 890534.2230 * t - 32.601 * t2e4 \r\n + 3.664 * t3e6 - 1.769 * t4e8)) \r\n + 0.0000908 * Math.cos(deg2rad * (186.5442 + 966404.0351 * t - 68.058 * t2e4 \r\n - 0.567 * t3e6 + 0.232 * t4e8)) \r\n + 0.0000623 * Math.cos(deg2rad * (83.3826 - 12006.2998 * t + 247.999 * t2e4 \r\n + 29.262 * t3e6 - 13.826 * t4e8)) \r\n + 0.0000483 * Math.cos(deg2rad * (51.6271 - 111868.8623 * t + 36.994 * t2e4 \r\n + 4.190 * t3e6 - 2.001 * t4e8)) \r\n + 0.0000348 * Math.cos(deg2rad * (100.7370 + 413335.3554 * t - 122.571 * t2e4 \r\n - 10.684 * t3e6 + 5.028 * t4e8)) \r\n - 0.0000316 * Math.cos(deg2rad * (308.4192 - 489205.1674 * t + 158.029 * t2e4 \r\n + 14.915 * t3e6 - 7.029 * t4e8)) \r\n - 0.0000253 * Math.cos(deg2rad * (46.6853 - 39870.7617 * t + 33.922 * t2e4 \r\n + 4.272 * t3e6 - 2.001 * t4e8)) \r\n - 0.0000141 * Math.cos(deg2rad * (274.1928 - 553068.6797 * t - 54.513 * t2e4 \r\n - 10.116 * t3e6 + 4.797 * t4e8)) \r\n + 0.0000127 * Math.cos(deg2rad * (325.7736 - 63863.5122 * t - 212.541 * t2e4 \r\n - 25.031 * t3e6 + 11.826 * t4e8)) \r\n + 0.0000117 * Math.cos(deg2rad * (184.1196 + 401329.0556 * t + 125.428 * t2e4 \r\n + 18.579 * t3e6 - 8.798 * t4e8)) \r\n - 0.0000078 * Math.cos(deg2rad * (98.3124 - 151739.6240 * t + 70.916 * t2e4 \r\n + 8.462 * t3e6 - 4.001 * t4e8)) \r\n - 0.0000063 * Math.cos(deg2rad * (238.1713 + 854535.1727 * t - 31.065 * t2e4 \r\n + 3.623 * t3e6 - 1.769 * t4e8)) \r\n + 0.0000063 * Math.cos(deg2rad * (134.9634 + 477198.8676 * t + 89.970 * t2e4 \r\n + 14.348 * t3e6 - 6.797 * t4e8)) \r\n + 0.0000036 * Math.cos(deg2rad * (321.5076 + 1443602.9027 * t + 21.912 * t2e4 \r\n + 13.780 * t3e6 - 6.566 * t4e8)) \r\n - 0.0000035 * Math.cos(deg2rad * (10.6638 + 1367733.0907 * t + 57.370 * t2e4 \r\n + 18.011 * t3e6 - 8.566 * t4e8)) \r\n + 0.0000024 * Math.cos(deg2rad * (149.8932 + 337465.5434 * t - 87.113 * t2e4 \r\n - 6.453 * t3e6 + 3.028 * t4e8)) \r\n + 0.0000024 * Math.cos(deg2rad * (170.9849 - 930404.9848 * t + 66.523 * t2e4 \r\n + 0.608 * t3e6 - 0.232 * t4e8));\r\n\r\n var sgp = - 0.0203 * Math.cos(deg2rad * (125.0 - 1934.1 * t)) \r\n + 0.0034 * Math.cos(deg2rad * (220.2 - 1935.5 * t));\r\n\r\n var gamma = 0.0449858 + sg + 1e-3 * sgp;\r\n\r\n // longitude of perigee\r\n\r\n var sp = - 15.448 * Math.sin(deg2rad * (100.7370 + 413335.3554 * t - 122.571 * t2e4 \r\n - 10.684 * t3e6 + 5.028 * t4e8))\r\n - 9.642 * Math.sin(deg2rad * (325.7736 - 63863.5122 * t - 212.541 * t2e4 \r\n - 25.031 * t3e6 + 11.826 * t4e8)) \r\n - 2.721 * Math.sin(deg2rad * (134.9634 + 477198.8676 * t + 89.970 * t2e4 \r\n + 14.348 * t3e6 - 6.797 * t4e8)) \r\n + 2.607 * Math.sin(deg2rad * (66.5106 + 349471.8432 * t - 335.112 * t2e4 \r\n - 35.715 * t3e6 + 16.854 * t4e8)) \r\n + 2.085 * Math.sin(deg2rad * (201.4740 + 826670.7108 * t - 245.142 * t2e4 \r\n - 21.367 * t3e6 + 10.057 * t4e8)) \r\n + 1.477 * Math.sin(deg2rad * (10.6638 + 1367733.0907 * t + 57.370 * t2e4 \r\n + 18.011 * t3e6 - 8.566 * t4e8)) \r\n + 0.968 * Math.sin(deg2rad * (291.5472 - 127727.0245 * t - 425.082 * t2e4 \r\n - 50.062 * t3e6 + 23.651 * t4e8)) \r\n - 0.949 * Math.sin(deg2rad * (103.2079 + 377336.3051 * t - 121.035 * t2e4 \r\n - 10.724 * t3e6 + 5.028 * t4e8)) \r\n - 0.703 * Math.sin(deg2rad * (167.2476 + 762807.1986 * t - 457.683 * t2e4 \r\n - 46.398 * t3e6 + 21.882 * t4e8)) \r\n - 0.660 * Math.sin(deg2rad * (235.7004 + 890534.2230 * t - 32.601 * t2e4 \r\n + 3.664 * t3e6 - 1.769 * t4e8)) \r\n - 0.577 * Math.sin(deg2rad * (190.8102 - 541062.3799 * t - 302.511 * t2e4 \r\n - 39.379 * t3e6 + 18.623 * t4e8)) \r\n - 0.524 * Math.sin(deg2rad * (269.9268 + 954397.7353 * t + 179.941 * t2e4 \r\n + 28.695 * t3e6 - 13.594 * t4e8)) \r\n - 0.482 * Math.sin(deg2rad * (32.2842 + 285608.3309 * t - 547.653 * t2e4 \r\n - 60.746 * t3e6 + 28.679 * t4e8)) \r\n + 0.452 * Math.sin(deg2rad * (357.5291 + 35999.0503 * t - 1.536 * t2e4 \r\n + 0.041 * t3e6 + 0.000 * t4e8)) \r\n - 0.381 * Math.sin(deg2rad * (302.2110 + 1240006.0662 * t - 367.713 * t2e4 \r\n - 32.051 * t3e6 + 15.085 * t4e8)) \r\n - 0.342 * Math.sin(deg2rad * (328.2445 - 99862.5625 * t - 211.005 * t2e4 \r\n - 25.072 * t3e6 + 11.826 * t4e8)) \r\n - 0.312 * Math.sin(deg2rad * (44.8902 + 1431596.6029 * t + 269.911 * t2e4 \r\n + 43.043 * t3e6 - 20.392 * t4e8)) \r\n + 0.282 * Math.sin(deg2rad * (162.8868 - 31931.7561 * t - 106.271 * t2e4 \r\n - 12.516 * t3e6 + 5.913 * t4e8)) \r\n + 0.255 * Math.sin(deg2rad * (203.9449 + 790671.6605 * t - 243.606 * t2e4 \r\n - 21.408 * t3e6 + 10.057 * t4e8)) \r\n + 0.252 * Math.sin(deg2rad * (68.9815 + 313472.7929 * t - 333.576 * t2e4 \r\n - 35.756 * t3e6 + 16.854 * t4e8)) \r\n - 0.211 * Math.sin(deg2rad * (83.3826 - 12006.2998 * t + 247.999 * t2e4 \r\n + 29.262 * t3e6 - 13.826 * t4e8)) \r\n + 0.193 * Math.sin(deg2rad * (267.9846 + 1176142.5540 * t - 580.254 * t2e4 \r\n - 57.082 * t3e6 + 26.911 * t4e8)) \r\n + 0.191 * Math.sin(deg2rad * (133.0212 + 698943.6863 * t - 670.224 * t2e4 \r\n - 71.429 * t3e6 + 33.708 * t4e8)) \r\n - 0.184 * Math.sin(deg2rad * (55.8468 - 1018261.2475 * t - 392.482 * t2e4 \r\n - 53.726 * t3e6 + 25.420 * t4e8)) \r\n + 0.182 * Math.sin(deg2rad * (145.6272 + 1844931.9583 * t + 147.340 * t2e4 \r\n + 32.359 * t3e6 - 15.363 * t4e8)) \r\n - 0.158 * Math.sin(deg2rad * (257.3208 - 191590.5367 * t - 637.623 * t2e4 \r\n - 75.093 * t3e6 + 35.477 * t4e8)) \r\n + 0.148 * Math.sin(deg2rad * (156.5838 - 604925.8921 * t - 515.053 * t2e4 \r\n - 64.410 * t3e6 + 30.448 * t4e8)) \r\n - 0.111 * Math.sin(deg2rad * (169.7185 + 726808.1483 * t - 456.147 * t2e4 \r\n - 46.439 * t3e6 + 21.882 * t4e8)) \r\n + 0.101 * Math.sin(deg2rad * (13.1347 + 1331734.0404 * t + 58.906 * t2e4 \r\n + 17.971 * t3e6 - 8.566 * t4e8)) \r\n + 0.100 * Math.sin(deg2rad * (358.0578 + 221744.8187 * t - 760.194 * t2e4 \r\n - 85.777 * t3e6 + 40.505 * t4e8)) \r\n + 0.087 * Math.sin(deg2rad * (98.2661 + 449334.4057 * t - 124.107 * t2e4 \r\n - 10.643 * t3e6 + 5.028 * t4e8)) \r\n + 0.080 * Math.sin(deg2rad * (42.9480 + 1653341.4216 * t - 490.283 * t2e4 \r\n - 42.734 * t3e6 + 20.113 * t4e8)) \r\n + 0.080 * Math.sin(deg2rad * (222.5657 - 441199.8173 * t - 91.506 * t2e4 \r\n - 14.307 * t3e6 + 6.797 * t4e8)) \r\n + 0.077 * Math.sin(deg2rad * (294.0181 - 163726.0747 * t - 423.546 * t2e4 \r\n - 50.103 * t3e6 + 23.651 * t4e8)) \r\n - 0.073 * Math.sin(deg2rad * (280.8834 - 1495460.1151 * t - 482.452 * t2e4 \r\n - 68.074 * t3e6 + 32.217 * t4e8)) \r\n - 0.071 * Math.sin(deg2rad * (304.6819 + 1204007.0159 * t - 366.177 * t2e4 \r\n - 32.092 * t3e6 + 15.085 * t4e8)) \r\n - 0.069 * Math.sin(deg2rad * (233.7582 + 1112279.0417 * t - 792.795 * t2e4 \r\n - 82.113 * t3e6 + 38.736 * t4e8)) \r\n - 0.067 * Math.sin(deg2rad * (34.7551 + 249609.2807 * t - 546.117 * t2e4 \r\n - 60.787 * t3e6 + 28.679 * t4e8)) \r\n - 0.067 * Math.sin(deg2rad * (263.6238 + 381403.5993 * t - 228.841 * t2e4 \r\n - 23.199 * t3e6 + 10.941 * t4e8)) \r\n + 0.055 * Math.sin(deg2rad * (21.6203 - 1082124.7597 * t - 605.023 * t2e4 \r\n - 78.757 * t3e6 + 37.246 * t4e8)) \r\n + 0.055 * Math.sin(deg2rad * (308.4192 - 489205.1674 * t + 158.029 * t2e4 \r\n + 14.915 * t3e6 -7.029 * t4e8)) \r\n - 0.054 * Math.sin(deg2rad * (8.7216 + 1589477.9094 * t - 702.824 * t2e4 \r\n - 67.766 * t3e6 + 31.939 * t4e8)) \r\n - 0.052 * Math.sin(deg2rad * (179.8536 + 1908795.4705 * t + 359.881 * t2e4 \r\n + 57.390 * t3e6 - 27.189 * t4e8)) \r\n - 0.050 * Math.sin(deg2rad * (98.7948 + 635080.1741 * t - 882.765 * t2e4 \r\n - 96.461 * t3e6 + 45.533 * t4e8)) \r\n - 0.049 * Math.sin(deg2rad * (128.6604 - 95795.2683 * t - 318.812 * t2e4 \r\n - 37.547 * t3e6 + 17.738 * t4e8)) \r\n - 0.047 * Math.sin(deg2rad * (17.3544 + 425341.6552 * t - 370.570 * t2e4 \r\n - 39.946 * t3e6 + 18.854 * t4e8)) \r\n - 0.044 * Math.sin(deg2rad * (160.4159 + 4067.2942 * t - 107.806 * t2e4 \r\n - 12.475 * t3e6 + 5.913 * t4e8)) \r\n - 0.043 * Math.sin(deg2rad * (238.1713 + 854535.1727 * t - 31.065 * t2e4 \r\n + 3.623 * t3e6 - 1.769 * t4e8)) \r\n + 0.042 * Math.sin(deg2rad * (270.4555 + 1140143.5037 * t - 578.718 * t2e4 \r\n - 57.123 * t3e6 + 26.911 * t4e8)) \r\n - 0.042 * Math.sin(deg2rad * (132.4925 + 513197.9179 * t + 88.434 * t2e4 \r\n + 14.388 * t3e6 - 6.797 * t4e8)) \r\n - 0.041 * Math.sin(deg2rad * (122.3573 - 668789.4043 * t - 727.594 * t2e4 \r\n - 89.441 * t3e6 + 42.274 * t4e8)) \r\n - 0.040 * Math.sin(deg2rad * (105.6788 + 341337.2548 * t - 119.499 * t2e4 \r\n - 10.765 * t3e6 + 5.028 * t4e8)) \r\n + 0.038 * Math.sin(deg2rad * (135.4921 + 662944.6361 * t - 668.688 * t2e4 \r\n - 71.470 * t3e6 + 33.708 * t4e8)) \r\n - 0.037 * Math.sin(deg2rad * (242.3910 - 51857.2124 * t - 460.540 * t2e4 \r\n - 54.293 * t3e6 + 25.652 * t4e8)) \r\n + 0.036 * Math.sin(deg2rad * (336.4374 + 1303869.5784 * t - 155.171 * t2e4 \r\n - 7.020 * t3e6 + 3.259 * t4e8)) \r\n + 0.035 * Math.sin(deg2rad * (223.0943 - 255454.0489 * t - 850.164 * t2e4 \r\n - 100.124 * t3e6 + 47.302 * t4e8)) \r\n - 0.034 * Math.sin(deg2rad * (193.2811 - 577061.4302 * t - 300.976 * t2e4 \r\n - 39.419 * t3e6 + 18.623 * t4e8)) \r\n + 0.031 * Math.sin(deg2rad * (87.6023 - 918398.6850 * t - 181.476 * t2e4 \r\n - 28.654 * t3e6 + 13.594 * t4e8));\r\n\r\n var spp = 2.4 * Math.sin(deg2rad * (103.2 + 377336.3 * t));\r\n\r\n var lp = 83.353 + 4069.0137 * t - 103.238 * t2e4 \r\n - 12.492 * t3e6 + 5.263 * t4e8 + sp + 1e-3 * t * spp;\r\n\r\n // longitude of the ascending node\r\n\r\n var sr = - 1.4979 * Math.sin(deg2rad * (49.1562 - 75869.8120 * t + 35.458 * t2e4 \r\n + 4.231 * t3e6 - 2.001 * t4e8)) \r\n - 0.1500 * Math.sin(deg2rad * (357.5291 + 35999.0503 * t - 1.536 * t2e4 \r\n + 0.041 * t3e6 + 0.000 * t4e8)) \r\n - 0.1226 * Math.sin(deg2rad * (235.7004 + 890534.2230 * t - 32.601 * t2e4 \r\n + 3.664 * t3e6 - 1.769 * t4e8)) \r\n + 0.1176 * Math.sin(deg2rad * (186.5442 + 966404.0351 * t - 68.058 * t2e4 \r\n - 0.567 * t3e6 + 0.232 * t4e8)) \r\n - 0.0801 * Math.sin(deg2rad * (83.3826 - 12006.2998 * t + 247.999 * t2e4 \r\n + 29.262 * t3e6 - 13.826 * t4e8)) \r\n - 0.0616 * Math.sin(deg2rad * (51.6271 - 111868.8623 * t + 36.994 * t2e4 \r\n + 4.190 * t3e6 - 2.001 * t4e8)) \r\n + 0.0490 * Math.sin(deg2rad * (100.7370 + 413335.3554 * t - 122.571 * t2e4 \r\n - 10.684 * t3e6 + 5.028 * t4e8)) \r\n + 0.0409 * Math.sin(deg2rad * (308.4192 - 489205.1674 * t + 158.029 * t2e4 \r\n + 14.915 * t3e6 - 7.029 * t4e8)) \r\n + 0.0327 * Math.sin(deg2rad * (134.9634 + 477198.8676 * t + 89.970 * t2e4 \r\n + 14.348 * t3e6 - 6.797 * t4e8)) \r\n + 0.0324 * Math.sin(deg2rad * (46.6853 - 39870.7617 * t + 33.922 * t2e4 \r\n + 4.272 * t3e6 - 2.001 * t4e8)) \r\n + 0.0196 * Math.sin(deg2rad * (98.3124 - 151739.6240 * t + 70.916 * t2e4 \r\n + 8.462 * t3e6 - 4.001 * t4e8)) \r\n + 0.0180 * Math.sin(deg2rad * (274.1928 - 553068.6797 * t - 54.513 * t2e4 \r\n - 10.116 * t3e6 + 4.797 * t4e8)) \r\n + 0.0150 * Math.sin(deg2rad * (325.7736 - 63863.5122 * t - 212.541 * t2e4 \r\n - 25.031 * t3e6 + 11.826 * t4e8)) \r\n - 0.0150 * Math.sin(deg2rad * (184.1196 + 401329.0556 * t + 125.428 * t2e4 \r\n + 18.579 * t3e6 - 8.798 * t4e8)) \r\n - 0.0078 * Math.sin(deg2rad * (238.1713 + 854535.1727 * t - 31.065 * t2e4 \r\n + 3.623 * t3e6 - 1.769 * t4e8)) \r\n - 0.0045 * Math.sin(deg2rad * (10.6638 + 1367733.0907 * t + 57.370 * t2e4 \r\n + 18.011 * t3e6 - 8.566 * t4e8)) \r\n + 0.0044 * Math.sin(deg2rad * (321.5076 + 1443602.9027 * t + 21.912 * t2e4 \r\n + 13.780 * t3e6 - 6.566 * t4e8)) \r\n - 0.0042 * Math.sin(deg2rad * (162.8868 - 31931.7561 * t - 106.271 * t2e4 \r\n - 12.516 * t3e6 + 5.913 * t4e8)) \r\n - 0.0031 * Math.sin(deg2rad * (170.9849 - 930404.9848 * t + 66.523 * t2e4 \r\n + 0.608 * t3e6 - 0.232 * t4e8)) \r\n + 0.0031 * Math.sin(deg2rad * (103.2079 + 377336.3051 * t - 121.035 * t2e4 \r\n - 10.724 * t3e6 + 5.028 * t4e8)) \r\n + 0.0029 * Math.sin(deg2rad * (222.6120 - 1042273.8471 * t + 103.516 * t2e4 \r\n + 4.798 * t3e6 - 2.232 * t4e8)) \r\n + 0.0028 * Math.sin(deg2rad * (184.0733 + 1002403.0853 * t - 69.594 * t2e4 \r\n - 0.526 * t3e6 + 0.232 * t4e8));\r\n\r\n var srp = 25.9 * Math.sin(deg2rad * (125.0 - 1934.1 * t)) \r\n - 4.3 * Math.sin(deg2rad * (220.2 - 1935.5 * t));\r\n\r\n var srpp = 0.38 * Math.sin(deg2rad * (357.5 + 35999.1 * t));\r\n\r\n var raan = 125.0446 - 1934.13618 * t + 20.762 * t2e4 \r\n + 2.139 * t3e6 - 1.650 * t4e8 + sr \r\n + 1e-3 * (srp + srpp * t);\r\n\r\n // mean longitude\r\n\r\n var sl = - 0.92581 * Math.sin(deg2rad * (235.7004 + 890534.2230 * t - 32.601 * t2e4 \r\n + 3.664 * t3e6 - 1.769 * t4e8)) \r\n + 0.33262 * Math.sin(deg2rad * (100.7370 + 413335.3554 * t - 122.571 * t2e4 \r\n - 10.684 * t3e6 + 5.028 * t4e8)) \r\n - 0.18402 * Math.sin(deg2rad * (357.5291 + 35999.0503 * t - 1.536 * t2e4 \r\n + 0.041 * t3e6 + 0.000 * t4e8)) \r\n + 0.11007 * Math.sin(deg2rad * (134.9634 + 477198.8676 * t + 89.970 * t2e4 \r\n + 14.348 * t3e6 - 6.797 * t4e8)) \r\n - 0.06055 * Math.sin(deg2rad * (238.1713 + 854535.1727 * t - 31.065 * t2e4 \r\n + 3.623 * t3e6 - 1.769 * t4e8)) \r\n + 0.04741 * Math.sin(deg2rad * (325.7736 - 63863.5122 * t - 212.541 * t2e4 \r\n - 25.031 * t3e6 + 11.826 * t4e8)) \r\n - 0.03086 * Math.sin(deg2rad * (10.6638 + 1367733.0907 * t + 57.370 * t2e4 \r\n + 18.011 * t3e6 - 8.566 * t4e8)) \r\n + 0.02184 * Math.sin(deg2rad * (103.2079 + 377336.3051 * t - 121.035 * t2e4 \r\n - 10.724 * t3e6 + 5.028 * t4e8)) \r\n + 0.01645 * Math.sin(deg2rad * (49.1562 - 75869.8120 * t + 35.458 * t2e4 \r\n + 4.231 * t3e6 - 2.001 * t4e8)) \r\n + 0.01022 * Math.sin(deg2rad * (233.2295 + 926533.2733 * t - 34.136 * t2e4 \r\n + 3.705 * t3e6 - 1.769 * t4e8)) \r\n - 0.00756 * Math.sin(deg2rad * (336.4374 + 1303869.5784 * t - 155.171 * t2e4 \r\n - 7.020 * t3e6 + 3.259 * t4e8)) \r\n - 0.00530 * Math.sin(deg2rad * (222.5657 - 441199.8173 * t - 91.506 * t2e4 \r\n - 14.307 * t3e6 + 6.797 * t4e8)) \r\n - 0.00496 * Math.sin(deg2rad * (162.8868 - 31931.7561 * t - 106.271 * t2e4 \r\n - 12.516 * t3e6 + 5.913 * t4e8)) \r\n - 0.00472 * Math.sin(deg2rad * (297.8502 + 445267.1115 * t - 16.300 * t2e4 \r\n + 1.832 * t3e6 - 0.884 * t4e8)) \r\n - 0.00271 * Math.sin(deg2rad * (240.6422 + 818536.1225 * t - 29.529 * t2e4 \r\n + 3.582 * t3e6 - 1.769 * t4e8)) \r\n + 0.00264 * Math.sin(deg2rad * (132.4925 + 513197.9179 * t + 88.434 * t2e4 \r\n + 14.388 * t3e6 - 6.797 * t4e8)) \r\n - 0.00254 * Math.sin(deg2rad * (186.5442 + 966404.0351 * t - 68.058 * t2e4 \r\n - 0.567 * t3e6 + 0.232 * t4e8)) \r\n + 0.00234 * Math.sin(deg2rad * (269.9268 + 954397.7353 * t + 179.941 * t2e4 \r\n + 28.695 * t3e6 - 13.594 * t4e8)) \r\n - 0.00220 * Math.sin(deg2rad * (13.1347 + 1331734.0404 * t + 58.906 * t2e4 \r\n + 17.971 * t3e6 - 8.566 * t4e8)) \r\n - 0.00202 * Math.sin(deg2rad * (355.0582 + 71998.1006 * t - 3.072 * t2e4 \r\n + 0.082 * t3e6 + 0.000 * t4e8)) \r\n + 0.00167 * Math.sin(deg2rad * (328.2445 - 99862.5625 * t - 211.005 * t2e4 \r\n - 25.072 * t3e6 + 11.826 * t4e8)) \r\n - 0.00143 * Math.sin(deg2rad * (173.5506 + 1335801.3346 * t - 48.901 * t2e4 \r\n + 5.496 * t3e6 - 2.653 * t4e8)) \r\n - 0.00121 * Math.sin(deg2rad * (98.2661 + 449334.4057 * t - 124.107 * t2e4 \r\n - 10.643 * t3e6 + 5.028 * t4e8)) \r\n - 0.00116 * Math.sin(deg2rad * (145.6272 + 1844931.9583 * t + 147.340 * t2e4 \r\n + 32.359 * t3e6 - 15.363 * t4e8)) \r\n + 0.00102 * Math.sin(deg2rad * (105.6788 + 341337.2548 * t - 119.499 * t2e4 \r\n - 10.765 * t3e6 + 5.028 * t4e8)) \r\n - 0.00090 * Math.sin(deg2rad * (184.1196 + 401329.0556 * t + 125.428 * t2e4 \r\n + 18.579 * t3e6 - 8.798 * t4e8)) \r\n - 0.00086 * Math.sin(deg2rad * (338.9083 + 1267870.5281 * t - 153.636 * t2e4 \r\n - 7.061 * t3e6 + 3.259 * t4e8)) \r\n - 0.00078 * Math.sin(deg2rad * (111.4008 + 1781068.4461 * t - 65.201 * t2e4 \r\n + 7.328 * t3e6 - 3.538 * t4e8)) \r\n + 0.00069 * Math.sin(deg2rad * (323.3027 - 27864.4619 * t - 214.077 * t2e4 \r\n - 24.990 * t3e6 + 11.826 * t4e8)) \r\n + 0.00066 * Math.sin(deg2rad * (51.6271 - 111868.8623 * t + 36.994 * t2e4 \r\n + 4.190 * t3e6 - 2.001 * t4e8)) \r\n + 0.00065 * Math.sin(deg2rad * (38.5872 + 858602.4669 * t - 138.871 * t2e4 \r\n - 8.852 * t3e6 + 4.144 * t4e8)) \r\n - 0.00060 * Math.sin(deg2rad * (83.3826 - 12006.2998 * t + 247.999 * t2e4 \r\n + 29.262 * t3e6 - 13.826 * t4e8)) \r\n + 0.00054 * Math.sin(deg2rad * (201.4740 + 826670.7108 * t - 245.142 * t2e4 \r\n - 21.367 * t3e6 + 10.057 * t4e8)) \r\n - 0.00052 * Math.sin(deg2rad * (308.4192 - 489205.1674 * t + 158.029 * t2e4 \r\n + 14.915 * t3e6 - 7.029 * t4e8)) \r\n + 0.00048 * Math.sin(deg2rad * (8.1929 + 1403732.1410 * t + 55.834 * t2e4 \r\n + 18.052 * t3e6 - 8.566 * t4e8)) \r\n - 0.00041 * Math.sin(deg2rad * (46.6853 - 39870.7617 * t + 33.922 * t2e4 \r\n + 4.272 * t3e6 - 2.001 * t4e8)) \r\n - 0.00033 * Math.sin(deg2rad * (274.1928 - 553068.6797 * t - 54.513 * t2e4 \r\n - 10.116 * t3e6 + 4.797 * t4e8)) \r\n + 0.00030 * Math.sin(deg2rad * (160.4159 + 4067.2942 * t - 107.806 * t2e4 \r\n - 12.475 * t3e6 + 5.913 * t4e8));\r\n\r\n var slp = 3.96 * Math.sin(deg2rad * (119.7 + 131.8 * t)) \r\n + 1.96 * Math.sin(deg2rad * (125.0 - 1934.1 * t));\r\n\r\n var slpp = 0.463 * Math.sin(deg2rad * (357.5 + 35999.1 * t)) \r\n + 0.152 * Math.sin(deg2rad * (238.2 + 854535.2 * t)) \r\n - 0.071 * Math.sin(deg2rad * (27.8 + 131.8 * t)) \r\n - 0.055 * Math.sin(deg2rad * (103.2 + 377336.3 * t)) \r\n - 0.026 * Math.sin(deg2rad * (233.2 + 926533.3 * t));\r\n\r\n var slppp = 14 * Math.sin(deg2rad * (357.5 + 35999.1 * t)) \r\n + 5 * Math.sin(deg2rad * (238.2 + 854535.2 * t));\r\n\r\n var lambda = 218.31665 + 481267.88134 * t - 13.268 * t2e4 \r\n + 1.856 * t3e6 - 1.534 * t4e8 + sl \r\n + 1e-3 * (slp + slpp * t + slppp * t2e4);\r\n\r\n dat.a = sma;\r\n dat.e = ecc;\r\n dat.i = 2.0 * Math.asin(gamma);\r\n dat.w = Trig.normalize(deg2rad * (lp - raan));\r\n dat.N = Trig.normalize(deg2rad * raan);\r\n dat.M = Trig.normalize(deg2rad * (lambda - lp));\r\n return dat;\r\n },\r\n corr: function(dat, sol) {\r\n var M = Trig.normalize(sol.M + Math.PI),\r\n w = Trig.normalize(sol.w + Math.PI),\r\n L = dat.M + dat.w, // Argument of latitude \r\n E = L + dat.N - M - w; // Mean elongation\r\n \r\n var lon = \r\n -0.022234 * Math.sin(dat.M - 2*E) + // Evection\r\n 0.011494 * Math.sin(2*E) + // Variation\r\n -0.003246 * Math.sin(M) + // Yearly Equation\r\n -0.001029 * Math.sin(2*dat.M - 2*E) +\r\n -9.94838e-4 * Math.sin(dat.M - 2*E + M) +\r\n 9.25025e-4 * Math.sin(dat.M + 2*E) +\r\n 8.02851e-4 * Math.sin(2*E - M) +\r\n 7.15585e-4 * Math.sin(dat.M - M) +\r\n -6.10865e-4 * Math.sin(E) + \r\n -5.41052e-4 * Math.sin(dat.M + M) +\r\n -2.61799e-4 * Math.sin(2*L - 2*E) +\r\n 1.91986e-4 * Math.sin(dat.M - 4*E);\r\n dat.ra += lon;\r\n var lat =\r\n -0.003019 * Math.sin(L - 2*E) +\r\n -9.59931e-4 * Math.sin(dat.M - L - 2*E) +\r\n -8.02851e-4 * Math.sin(dat.M + L - 2*E) +\r\n 5.75958e-4 * Math.sin(L + 2*E) +\r\n 2.96706e-4 * Math.sin(2*dat.M + L); \r\n dat.dec += lat;\r\n \r\n dat.age = Trig.normalize(dat.l - sol.l + Math.PI); \r\n dat.phase = 0.5 * (1 - Math.cos(dat.age));\r\n\r\n return dat;\r\n }\r\n\r\n};\r\nfunction exportSVG(fname) {\r\n var doc = d3.select(\"body\").append(\"div\").attr(\"id\", \"d3-celestial-svg\").attr(\"style\", \"display: none\"),\r\n svg = d3.select(\"#d3-celestial-svg\").append(\"svg\"), //.attr(\"style\", \"display: none\"),\r\n m = Celestial.metrics(),\r\n cfg = settings.set(),\r\n path = cfg.datapath,\r\n proj = projections[cfg.projection],\r\n rotation = getAngles(cfg.center),\r\n center = [-rotation[0], -rotation[1]],\r\n scale0 = proj.scale * m.width/1024,\r\n projection = Celestial.projection(cfg.projection).rotate(rotation).translate([m.width/2, m.height/2]).scale([m.scale]),\r\n adapt = cfg.adaptable ? Math.sqrt(m.scale/scale0) : 1,\r\n culture = (cfg.culture !== \"\" && cfg.culture !== \"iau\") ? cfg.culture : \"\",\r\n circle, id;\r\n\r\n svg.selectAll(\"*\").remove();\r\n\r\n var defs = svg.append(\"defs\");\r\n\r\n if (proj.clip) {\r\n projection.clipAngle(90);\r\n }\r\n circle = d3.geo.circle().angle([179.95]).origin(center);\r\n\r\n svg.attr(\"width\", m.width).attr(\"height\", m.height);\r\n // .attr(\"viewBox\", \" 0 0 \" + (m.width) + \" \" + (m.height));\r\n\r\n var groupNames = ['background', 'milkyWay', 'milkyWayBg', 'gridLines', 'constBoundaries', \r\n 'planesequatorial', 'planesecliptic', 'planesgalactic', 'planessupergalactic',\r\n 'constLines', 'mapBorder','stars', 'dsos', 'planets', 'gridvaluesLon', 'gridvaluesLat', \r\n 'constNames', 'starDesignations', 'starNames', 'dsoNames', 'planetNames', 'horizon', 'daylight'],\r\n groups = {}, styles = {};\r\n\r\n for (var i=0; i 0) {\r\n var jlon = {type: \"FeatureCollection\", features: getGridValues(\"lon\", cfg.lines.graticule.lon.pos)}; \r\n groups.gridvaluesLon.selectAll(\".gridvalues_lon\")\r\n .data(jlon.features)\r\n .enter().append(\"text\")\r\n .attr(\"transform\", function(d, i) { return point(d.geometry.coordinates); })\r\n .text( function(d) { return d.properties.value; } )\r\n .attr({dy: \".5em\", dx: \"-.75em\", class: \"gridvaluesLon\"});\r\n styles.gridvaluesLon = svgTextStyle(cfg.lines.graticule.lon); \r\n }\r\n if (has(cfg.lines.graticule, \"lat\") && cfg.lines.graticule.lat.pos.length > 0) {\r\n var jlat = {type: \"FeatureCollection\", features: getGridValues(\"lat\", cfg.lines.graticule.lat.pos)};\r\n groups.gridvaluesLat.selectAll(\".gridvalues_lat\")\r\n .data(jlat.features)\r\n .enter().append(\"text\")\r\n .attr(\"transform\", function(d, i) { return point(d.geometry.coordinates); })\r\n .text( function(d) { return d.properties.value; } )\r\n .attr({dy: \"-.5em\", dx: \"-.75em\", class: \"gridvaluesLat\"});\r\n styles.gridvaluesLat = svgTextStyle(cfg.lines.graticule.lat); \r\n }\r\n }\r\n\r\n //Celestial planes\r\n for (var key in cfg.lines) {\r\n if (has(cfg.lines, key) && key != \"graticule\" && cfg.lines[key].show !== false) { \r\n id = \"planes\" + key;\r\n groups[id].append(\"path\")\r\n .datum(d3.geo.circle().angle([90]).origin(poles[key]) )\r\n .attr(\"class\", id)\r\n .attr(\"d\", map);\r\n styles[id] = svgStyle(cfg.lines[key]);\r\n }\r\n }\r\n\r\n //Milky way outline\r\n if (cfg.mw.show) {\r\n q.defer(function(callback) { \r\n d3.json(path + \"mw.json\", function(error, json) {\r\n if (error) callback(error);\r\n var mw = getData(json, cfg.transform);\r\n var mw_back = getMwbackground(mw);\r\n \r\n groups.milkyWay.selectAll(\".mway\")\r\n .data(mw.features)\r\n .enter().append(\"path\")\r\n .attr(\"class\", \"milkyWay\")\r\n .attr(\"d\", map);\r\n styles.milkyWay = svgStyle(cfg.mw.style);\r\n \r\n if (!has(cfg.background, \"opacity\") || cfg.background.opacity > 0.95) {\r\n groups.milkyWayBg.selectAll(\".mwaybg\")\r\n .data(mw_back.features)\r\n .enter().append(\"path\")\r\n .attr(\"class\", \"milkyWayBg\")\r\n .attr(\"d\", map);\r\n styles.milkyWayBg = {\"fill\": cfg.background.fill, \r\n \"fill-opacity\": cfg.background.opacity };\r\n }\r\n callback(null);\r\n });\r\n });\r\n }\r\n\r\n //Constellation boundaries\r\n if (cfg.constellations.bounds) { \r\n q.defer(function(callback) { \r\n d3.json(path + filename(\"constellations\", \"borders\"), function(error, json) {\r\n if (error) callback(error);\r\n\r\n var conb = getData(json, cfg.transform);\r\n if (Celestial.constellation) {\r\n var re = new RegExp(\"\\\\b\" + Celestial.constellation + \"\\\\b\");\r\n }\r\n\r\n groups.constBoundaries.selectAll(\".bounds\")\r\n .data(conb.features)\r\n .enter().append(\"path\")\r\n .attr(\"class\", function(d) { return (Celestial.constellation && d.ids.search(re) !== -1) ? \"constBoundariesSel\" : \"constBoundaries\"; }) \r\n .attr(\"d\", map);\r\n\r\n styles.constBoundaries = svgStyle(cfg.constellations.boundStyle);\r\n styles.constBoundariesSel = {\"fill\": \"none\",\r\n \"stroke\": cfg.constellations.boundStyle.stroke, \r\n \"stroke-width\": cfg.constellations.boundStyle.width * 1.5,\r\n \"stroke-opacity\": 1,\r\n \"stroke-dasharray\": \"none\"};\r\n \r\n callback(null);\r\n });\r\n });\r\n }\r\n\r\n //Constellation lines\r\n if (cfg.constellations.lines) { \r\n q.defer(function(callback) { \r\n d3.json(path + filename(\"constellations\", \"lines\"), function(error, json) {\r\n if (error) callback(error);\r\n\r\n var conl = getData(json, cfg.transform);\r\n groups.constLines.selectAll(\".lines\")\r\n .data(conl.features)\r\n .enter().append(\"path\")\r\n .attr(\"class\", function(d) { return \"constLines\" + d.properties.rank; })\r\n .attr(\"d\", map);\r\n\r\n var dasharray = has(cfg.constellations.lineStyle, \"dash\") ? cfg.constellations.lineStyle.dash.join(\" \") : \"none\";\r\n \r\n styles.constLines1 = {\"fill\": \"none\", \"stroke\": cfg.constellations.lineStyle.stroke[0],\r\n \"stroke-width\": cfg.constellations.lineStyle.width[0],\r\n \"stroke-opacity\": cfg.constellations.lineStyle.opacity[0],\r\n \"stroke-dasharray\": dasharray};\r\n styles.constLines2 = {\"fill\": \"none\", \"stroke\": cfg.constellations.lineStyle.stroke[1],\r\n \"stroke-width\": cfg.constellations.lineStyle.width[1],\r\n \"stroke-opacity\": cfg.constellations.lineStyle.opacity[1],\r\n \"stroke-dasharray\": dasharray};\r\n styles.constLines3 = {\"fill\": \"none\", \"stroke\": cfg.constellations.lineStyle.stroke[2],\r\n \"stroke-width\": cfg.constellations.lineStyle.width[2],\r\n \"stroke-opacity\": cfg.constellations.lineStyle.opacity[2],\r\n \"stroke-dasharray\": dasharray};\r\n callback(null);\r\n });\r\n });\r\n }\r\n\r\n // Map border\r\n q.defer(function(callback) {\r\n var rot = projection.rotate();\r\n projection.rotate([0,0,0]);\r\n groups.mapBorder.append(\"path\")\r\n .datum(graticule.outline)\r\n .attr(\"class\", \"mapBorder\")\r\n .attr(\"d\", map);\r\n \r\n styles.mapBorder = {\"fill\": \"none\", \"stroke\": cfg.background.stroke, \"stroke-width\": cfg.background.width, \"stroke-opacity\": 1, \"stroke-dasharray\": \"none\" };\r\n\r\n projection.rotate(rot);\r\n callback(null);\r\n }); \r\n \r\n //Constellation names or designation\r\n if (cfg.constellations.names) { \r\n q.defer(function(callback) { \r\n d3.json(path + filename(\"constellations\"), function(error, json) {\r\n if (error) callback(error);\r\n\r\n var conn = getData(json, cfg.transform);\r\n groups.constNames.selectAll(\".constnames\")\r\n .data(conn.features.filter( function(d) {\r\n return clip(d.geometry.coordinates) === 1; \r\n }))\r\n .enter().append(\"text\")\r\n .attr(\"class\", function(d) { return \"constNames\" + d.properties.rank; })\r\n .attr(\"transform\", function(d, i) { return point(d.geometry.coordinates); })\r\n .text( function(d) { return constName(d); } ); \r\n \r\n styles.constNames1 = {\"fill\": cfg.constellations.nameStyle.fill[0],\r\n \"fill-opacity\": cfg.constellations.nameStyle.opacity[0],\r\n \"font\": cfg.constellations.nameStyle.font[0],\r\n \"text-anchor\": svgAlign(cfg.constellations.nameStyle.align)};\r\n styles.constNames2 = {\"fill\": cfg.constellations.nameStyle.fill[1],\r\n \"fill-opacity\": cfg.constellations.nameStyle.opacity[1],\r\n \"font\": cfg.constellations.nameStyle.font[1],\r\n \"text-anchor\": svgAlign(cfg.constellations.nameStyle.align)};\r\n styles.constNames3 = {\"fill\": cfg.constellations.nameStyle.fill[2],\r\n \"fill-opacity\": cfg.constellations.nameStyle.opacity[2],\r\n \"font\": cfg.constellations.nameStyle.font[2],\r\n \"text-anchor\": svgAlign(cfg.constellations.nameStyle.align)};\r\n callback(null);\r\n });\r\n });\r\n }\r\n \r\n //Stars\r\n if (cfg.stars.show) { \r\n q.defer(function(callback) { \r\n d3.json(path + cfg.stars.data, function(error, json) {\r\n if (error) callback(error);\r\n\r\n var cons = getData(json, cfg.transform);\r\n \r\n groups.stars.selectAll(\".stars\")\r\n .data(cons.features.filter( function(d) {\r\n return d.properties.mag <= cfg.stars.limit; \r\n }))\r\n .enter().append(\"path\")\r\n .attr(\"class\", function(d) { return \"stars\" + starColor(d.properties.bv); })\r\n .attr(\"d\", map.pointRadius( function(d) {\r\n return d.properties ? starSize(d.properties.mag) : 1;\r\n }));\r\n\r\n styles.stars = svgStyle(cfg.stars.style);\r\n var range = bvcolor.domain();\r\n for (i=Round(range[1],1); i<=Round(range[0],1); i+=0.1) {\r\n styles[\"stars\" + Math.round(i*10).toString()] = {\"fill\": bvcolor(i)};\r\n }\r\n \r\n if (cfg.stars.designation) { \r\n groups.starDesignations.selectAll(\".stardesigs\")\r\n .data(cons.features.filter( function(d) {\r\n return d.properties.mag <= cfg.stars.designationLimit*adapt && clip(d.geometry.coordinates) === 1; \r\n }))\r\n .enter().append(\"text\")\r\n .attr(\"transform\", function(d) { return point(d.geometry.coordinates); })\r\n .text( function(d) { return starDesignation(d.id); })\r\n .attr({dy: \".85em\", dx: \".35em\", class: \"starDesignations\"});\r\n styles.starDesignations = svgTextStyle(cfg.stars.designationStyle);\r\n }\r\n if (cfg.stars.propername) { \r\n groups.starNames.selectAll(\".starnames\")\r\n .data(cons.features.filter( function(d) {\r\n return d.properties.mag <= cfg.stars.propernameLimit*adapt && clip(d.geometry.coordinates) === 1; \r\n }))\r\n .enter().append(\"text\")\r\n .attr(\"transform\", function(d) { return point(d.geometry.coordinates); })\r\n .text( function(d) { return starPropername(d.id); })\r\n .attr({dy: \"-.5em\", dx: \"-.35em\", class: \"starNames\"});\r\n\r\n styles.starNames = svgTextStyle(cfg.stars.propernameStyle);\r\n }\r\n callback(null);\r\n });\r\n });\r\n }\r\n\r\n //Deep space objects\r\n if (cfg.dsos.show) { \r\n q.defer(function(callback) { \r\n d3.json(path + cfg.dsos.data, function(error, json) {\r\n if (error) callback(error);\r\n\r\n var cond = getData(json, cfg.transform);\r\n \r\n groups.dsos.selectAll(\".dsos\")\r\n .data(cond.features.filter( function(d) {\r\n return clip(d.geometry.coordinates) === 1 && \r\n (d.properties.mag === 999 && Math.sqrt(parseInt(d.properties.dim)) > cfg.dsos.limit*adapt ||\r\n d.properties.mag !== 999 && d.properties.mag <= cfg.dsos.limit); \r\n }))\r\n .enter().append(\"path\")\r\n .attr(\"class\", function(d) { return \"dsos\" + d.properties.type; })\r\n .attr(\"transform\", function(d) { return point(d.geometry.coordinates); })\r\n .attr(\"d\", function(d) { return dsoSymbol(d.properties); });\r\n\r\n styles.dsos = svgStyle(cfg.dsos.style);\r\n\r\n for (key in cfg.dsos.symbols) {\r\n if (!has(cfg.dsos.symbols, key)) continue;\r\n id = \"dsos\" + key;\r\n styles[id] = { \"fill-opacity\": cfg.dsos.style.opacity, \"stroke-opacity\": cfg.dsos.style.opacity };\r\n if (has(cfg.dsos.symbols[key], \"stroke\")) {\r\n styles[id].fill = \"none\"; \r\n styles[id].stroke = cfg.dsos.colors ? cfg.dsos.symbols[key].stroke : cfg.dsos.style.stroke;\r\n styles[id][\"stroke-width\"] = cfg.dsos.colors ? cfg.dsos.symbols[key].width : cfg.dsos.style.width;\r\n } else {\r\n styles[id].stroke = \"none\"; \r\n styles[id].fill = cfg.dsos.colors ? cfg.dsos.symbols[key].fill : cfg.dsos.style.fill;\r\n }\r\n }\r\n \r\n \r\n if (cfg.dsos.names) { \r\n groups.dsoNames.selectAll(\".dsonames\")\r\n .data(cond.features.filter( function(d) {\r\n return clip(d.geometry.coordinates) === 1 && \r\n (d.properties.mag == 999 && Math.sqrt(parseInt(d.properties.dim)) > cfg.dsos.nameLimit ||\r\n d.properties.mag != 999 && d.properties.mag <= cfg.dsos.nameLimit); \r\n }))\r\n .enter().append(\"text\")\r\n .attr(\"class\", function(d) { return \"dsoNames \" + d.properties.type; })\r\n .attr(\"transform\", function(d) { return point(d.geometry.coordinates); })\r\n .text( function(d) { return dsoName(d); })\r\n .attr({dy: \"-.5em\", dx: \".35em\"});\r\n \r\n styles.dsoNames = {\"fill-opacity\": cfg.dsos.style.opacity,\r\n \"font\": cfg.dsos.nameStyle.font,\r\n \"text-anchor\": svgAlign(cfg.dsos.nameStyle.align)};\r\n \r\n for (key in cfg.dsos.symbols) {\r\n if (!has(cfg.dsos.symbols, key)) continue;\r\n styles[key] = {\"fill\": cfg.dsos.colors ? cfg.dsos.symbols[key].fill : cfg.dsos.style.fill };\r\n }\r\n }\r\n callback(null);\r\n });\r\n });\r\n }\r\n\r\n //Planets\r\n if ((cfg.location || cfg.formFields.location) && cfg.planets.show && Celestial.origin) {\r\n q.defer(function(callback) {\r\n var dt = Celestial.date(),\r\n o = Celestial.origin(dt).spherical(),\r\n jp = {type: \"FeatureCollection\", features: []},\r\n jlun = {type: \"FeatureCollection\", features: []};\r\n Celestial.container.selectAll(\".planet\").each(function(d) {\r\n var id = d.id(), r = 12,\r\n p = d(dt).equatorial(o);\r\n \r\n p.ephemeris.pos = transformDeg(p.ephemeris.pos, euler[cfg.transform]); //transform; \r\n if (clip(p.ephemeris.pos) === 1) {\r\n if (id === \"lun\")\r\n jlun.features.push(createEntry(p));\r\n else\r\n jp.features.push(createEntry(p));\r\n }\r\n });\r\n if (cfg.planets.symbolType === \"disk\") {\r\n groups.planets.selectAll(\".planets\")\r\n .data(jp.features)\r\n .enter().append(\"path\")\r\n .attr(\"transform\", function(d) { return point(d.geometry.coordinates); })\r\n .attr(\"d\", function(d) { \r\n var r = (has(cfg.planets.symbols[d.id], \"size\")) ? (cfg.planets.symbols[d.id].size - 1) * adapt : null;\r\n return planetSymbol(d.properties, r); \r\n })\r\n .attr(\"class\", function(d) { return \"planets \" + d.id; });\r\n } else {\r\n groups.planets.selectAll(\".planets\")\r\n .data(jp.features)\r\n .enter().append(\"text\")\r\n .attr(\"transform\", function(d) { return point(d.geometry.coordinates); })\r\n .text( function(d) { return d.properties.symbol; })\r\n .attr(\"class\", function(d) { return \"planets \" + d.id; })\r\n .attr({dy: \".35em\"});\r\n }\r\n // Special case for Moon crescent\r\n if (jlun.features.length > 0) {\r\n if (cfg.planets.symbolType === \"letter\") {\r\n groups.planets.selectAll(\".moon\")\r\n .data(jlun.features)\r\n .enter().append(\"text\")\r\n .attr(\"transform\", function(d) { return point(d.geometry.coordinates); })\r\n .text( function(d) { return d.properties.symbol; })\r\n .attr(\"class\", function(d) { return \"planets \" + d.id; })\r\n .attr({dy: \".35em\"});\r\n } else {\r\n var rl = has(cfg.planets.symbols.lun, \"size\") ? (cfg.planets.symbols.lun.size - 1) * adapt : 11 * adapt; \r\n groups.planets.selectAll(\".dmoon\")\r\n .data(jlun.features)\r\n .enter().append(\"path\")\r\n .attr(\"class\", \"darkluna\" )\r\n .attr(\"transform\", function(d) { return point(d.geometry.coordinates); })\r\n .attr(\"d\", function(d) { return d3.svg.symbol().type(\"circle\").size(rl*rl)(); });\r\n groups.planets.selectAll(\".moon\")\r\n .data(jlun.features)\r\n .enter().append(\"path\")\r\n .attr(\"class\", function(d) { return \"planets \" + d.id; })\r\n .attr(\"transform\", function(d) { return point(d.geometry.coordinates); })\r\n .attr(\"d\", function(d) { return moonSymbol(d.properties, rl); });\r\n }\r\n } \r\n \r\n styles.planets = svgTextStyle(cfg.planets.symbolStyle);\r\n styles.planets.font = planetFont(cfg.planets.symbolStyle.font);\r\n styles.darkluna = {\"fill\": \"#557\"};\r\n for (key in cfg.planets.symbols) {\r\n if (!has(cfg.planets.symbols, key)) continue;\r\n styles[key] = {\"fill\": cfg.planets.symbols[key].fill};\r\n }\r\n \r\n //Planet names\r\n if (cfg.planets.names) {\r\n groups.planetNames.selectAll(\".planetnames\")\r\n .data(jp.features)\r\n .enter().append(\"text\")\r\n .attr(\"transform\", function(d) { return point(d.geometry.coordinates); })\r\n .text( function(d) { return d.properties.name; })\r\n .attr({dy: \".85em\", dx: \"-.35em\"})\r\n .attr(\"class\", function(d) { return \"planetNames \" + d.id; });\r\n if (jlun.features.length > 0) {\r\n groups.planetNames.selectAll(\".moonname\")\r\n .data(jlun.features)\r\n .enter().append(\"text\")\r\n .attr(\"transform\", function(d) { return point(d.geometry.coordinates); })\r\n .text( function(d) { return d.properties.name; })\r\n .attr({dy: \".85em\", dx: \"-.35em\"})\r\n .attr(\"class\", function(d) { return \"planetNames \" + d.id; });\r\n }\r\n }\r\n styles.planetNames = svgTextStyle(cfg.planets.nameStyle);\r\n \r\n callback(null);\r\n }); \r\n }\r\n \r\n if ((cfg.location || cfg.formFields.location) && cfg.daylight.show && proj.clip) {\r\n q.defer(function(callback) {\r\n var sol = getPlanet(\"sol\");\r\n if (sol) {\r\n var up = Celestial.zenith(),\r\n solpos = sol.ephemeris.pos,\r\n dist = d3.geo.distance(up, solpos),\r\n pt = projection(solpos),\r\n daylight = d3.geo.circle().angle([179.95]).origin(solpos);\r\n\r\n groups.daylight.append(\"path\").datum(daylight)\r\n .attr(\"class\", \"daylight\")\r\n .attr(\"d\", map);\r\n \r\n styles.daylight = svgSkyStyle(dist, pt); \r\n\r\n if (clip(solpos) === 1 && dist < halfπ) {\r\n groups.daylight.append(\"circle\")\r\n .attr(\"cx\", pt[0])\r\n .attr(\"cy\", pt[1])\r\n .attr(\"r\", 5)\r\n .style(\"fill\", \"#fff\");\r\n }\r\n }\r\n callback(null);\r\n }); \r\n }\r\n\r\n if ((cfg.location || cfg.formFields.location) && cfg.horizon.show && !proj.clip) {\r\n q.defer(function(callback) {\r\n var horizon = d3.geo.circle().angle([90]).origin(Celestial.nadir());\r\n \r\n groups.horizon.append(\"path\").datum(horizon)\r\n .attr(\"class\", \"horizon\")\r\n .attr(\"d\", map);\r\n styles.horizon = svgStyle(cfg.horizon); \r\n callback(null);\r\n });\r\n }\r\n \r\n if (Celestial.data.length > 0) { \r\n Celestial.data.forEach( function(d) {\r\n if (has(d, \"save\")) {\r\n q.defer(function(callback) { \r\n d.save(); \r\n callback(null);\r\n });\r\n }\r\n });\r\n }\r\n \r\n // Helper functions\r\n \r\n function clip(coords) {\r\n return proj.clip && d3.geo.distance(center, coords) > halfπ ? 0 : 1;\r\n }\r\n\r\n function point(coords) {\r\n return \"translate(\" + projection(coords) + \")\";\r\n }\r\n \r\n function filename(what, sub, ext) {\r\n var cult = (has(formats[what], culture)) ? \".\" + culture : \"\";\r\n ext = ext ? \".\" + ext : \".json\";\r\n sub = sub ? \".\" + sub : \"\";\r\n return what + sub + cult + ext;\r\n }\r\n\r\n function svgStyle(s) {\r\n var res = {};\r\n res.fill = s.fill || \"none\";\r\n res[\"fill-opacity\"] = s.opacity !== null ? s.opacity : 1; \r\n res.stroke = s.stroke || \"none\";\r\n res[\"stroke-width\"] = s.width !== null ? s.width : 0;\r\n res[\"stroke-opacity\"] = s.opacity !== null ? s.opacity : 1; \r\n if (has(s, \"dash\")) res[\"stroke-dasharray\"] = s.dash.join(\" \");\r\n else res[\"stroke-dasharray\"] = \"none\";\r\n res.font = s.font || null;\r\n return res;\r\n }\r\n\r\n function svgTextStyle(s) {\r\n var res = {};\r\n res.stroke = \"none\";\r\n res.fill = s.fill || \"none\";\r\n res[\"fill-opacity\"] = s.opacity !== null ? s.opacity : 1; \r\n //res.textBaseline = s.baseline || \"bottom\";\r\n res[\"text-anchor\"] = svgAlign(s.align);\r\n res.font = s.font || null;\r\n return res;\r\n }\r\n\r\n function svgStyleA(rank, s) {\r\n var res = {};\r\n rank = rank || 1;\r\n res.fill = isArray(s.fill) ? s.fill[rank-1] : null;\r\n res[\"fill-opacity\"] = isArray(s.opacity) ? s.opacity[rank-1] : 1; \r\n res.stroke = isArray(s.stroke) ? s.stroke[rank-1] : null;\r\n res[\"stroke-width\"] = isArray(s.width) ? s.width[rank-1] : null;\r\n res[\"stroke-opacity\"] = isArray(s.opacity) ? s.opacity[rank-1] : 1; \r\n res[\"text-anchor\"] = svgAlign(s.align);\r\n res.font = isArray(s.font) ? s.font[rank-1] : null;\r\n //res.textBaseline = s.baseline || \"bottom\";\r\n return res;\r\n }\r\n\r\n function svgSkyStyle(dist, pt) {\r\n var factor, color1, color2, color3,\r\n upper = 1.36, \r\n lower = 1.885;\r\n \r\n if (dist > lower) return {fill: \"transparent\"};\r\n \r\n if (dist <= upper) { \r\n color1 = \"#daf1fa\";\r\n color2 = \"#93d7f0\"; \r\n color3 = \"#57c0e8\"; \r\n factor = -(upper-dist) / 10; \r\n } else {\r\n factor = (dist - upper) / (lower - upper);\r\n color1 = d3.interpolateLab(\"#daf1fa\", \"#e8c866\")(factor);\r\n color2 = d3.interpolateLab(\"#93c7d0\", \"#ff854a\")(factor);\r\n color3 = d3.interpolateLab(\"#57b0c8\", \"#6caae2\")(factor);\r\n }\r\n\r\n var gradient = groups.daylight.append(\"radialGradient\")\r\n .attr(\"cx\", pt[0])\r\n .attr(\"cy\", pt[1])\r\n .attr(\"fr\", \"0\")\r\n .attr(\"r\", \"300\")\r\n .attr(\"id\", \"skygradient\")\r\n .attr(\"gradientUnits\", \"userSpaceOnUse\");\r\n\r\n gradient.append(\"stop\").attr(\"offset\", \"0\").attr(\"stop-color\", color1);\r\n gradient.append(\"stop\").attr(\"offset\", 0.2+0.4*factor).attr(\"stop-color\", color2);\r\n gradient.append(\"stop\").attr(\"offset\", \"1\").attr(\"stop-color\", color3);\r\n\r\n return {\"fill\": \"url(#skygradient)\", \"fill-opacity\": skyTransparency(factor, 1.4)};\r\n }\r\n\r\n function skyTransparency(t, a) {\r\n return 0.9 * (1 - ((Math.pow(Math.E, t*a) - 1) / (Math.pow(Math.E, a) - 1)));\r\n }\r\n \r\n\r\n\r\n function svgAlign(s) {\r\n if (!s) return \"start\";\r\n if (s === \"center\") return \"middle\"; \r\n if (s === \"right\") return \"end\";\r\n return \"start\";\r\n }\r\n\r\n function dsoSymbol(p) {\r\n var size = dsoSize(p.mag, p.dim) || 9,\r\n type = dsoShape(p.type);\r\n if (d3.svg.symbolTypes.indexOf(type) !== -1) {\r\n return d3.svg.symbol().type(type).size(size)();\r\n } else {\r\n return d3.svg.customSymbol().type(type).size(size)();\r\n }\r\n }\r\n\r\n function dsoShape(type) {\r\n if (!type || !has(cfg.dsos.symbols, type)) return \"circle\"; \r\n else return cfg.dsos.symbols[type].shape; \r\n }\r\n\r\n function dsoSize(mag, dim) {\r\n if (!mag || mag === 999) return Math.pow(parseInt(dim) * cfg.dsos.size * adapt / 7, 0.5); \r\n return Math.pow(2 * cfg.dsos.size * adapt - mag, cfg.dsos.exponent);\r\n }\r\n \r\n function dsoName(d) {\r\n //return p[cfg.dsos.namesType]; \r\n var lang = cfg.dsos.namesType, id = d.id;\r\n if (lang === \"desig\" || !has(dsonames, id)) return d.properties.desig;\r\n return has(dsonames[id], lang) ? dsonames[id][lang] : d.properties.desig; \r\n }\r\n\r\n function dsoColor(p) {\r\n if (cfg.dsos.colors === true) return svgStyle(cfg.dsos.symbols[p.type]);\r\n return svgStyle(cfg.dsos.style);\r\n }\r\n \r\n function starDesignation(id) {\r\n if (!has(starnames, id)) return \"\";\r\n return starnames[id][cfg.stars.designationType]; \r\n }\r\n\r\n function starPropername(id) {\r\n var lang = cfg.stars.propernameType;\r\n if (!has(starnames, id)) return \"\";\r\n return has(starnames[id], lang) ? starnames[id][lang] : starnames[id].name; \r\n }\r\n\r\n function starSize(mag) {\r\n if (mag === null) return 0.1; \r\n var d = cfg.stars.size * adapt * Math.exp(cfg.stars.exponent * (mag + 2));\r\n return Math.max(d, 0.1);\r\n }\r\n \r\n function starColor(bv) {\r\n if (!cfg.stars.colors || isNaN(bv)) return \"\"; \r\n return Math.round(bv*10).toString();\r\n }\r\n \r\n function constName(d) { \r\n return d.properties[cfg.constellations.namesType]; \r\n }\r\n\r\n function moonSymbol(p, r) { \r\n var size = r ? r*r : 121;\r\n return d3.svg.customSymbol().type(\"crescent\").size(size).ratio(p.age)();\r\n }\r\n\r\n function planetSymbol(p, r) { \r\n var size = r ? r*r : planetSize(p.mag);\r\n return d3.svg.symbol().type(\"circle\").size(size)();\r\n }\r\n\r\n function planetFont(s) {\r\n var size = s.replace(/(^\\D*)(\\d+)(\\D.+$)/i,'$2');\r\n size = Math.round(adapt * size);\r\n return s.replace(/(^\\D*)(\\d+)(\\D.+$)/i,'$1' + size + '$3');\r\n }\r\n\r\n function planetSize(m) {\r\n var mag = m || 2; \r\n var r = 4 * adapt * Math.exp(-0.05 * (mag+2));\r\n return Math.max(r, 2);\r\n }\r\n\r\n function createEntry(o) {\r\n var res = {type: \"Feature\", \"id\":o.id, properties: {}, geometry:{}};\r\n res.properties.name = o[cfg.planets.namesType];\r\n if (cfg.planets.symbolType === \"symbol\" || cfg.planets.symbolType === \"letter\")\r\n res.properties.symbol = cfg.planets.symbols[res.id][cfg.planets.symbolType];\r\n res.properties.mag = o.ephemeris.mag || 10;\r\n if (res.id === \"lun\") {\r\n res.properties.age = o.ephemeris.age;\r\n res.properties.phase = o.ephemeris.phase;\r\n }\r\n res.geometry.type = \"Point\";\r\n res.geometry.coordinates = o.ephemeris.pos;\r\n return res;\r\n }\r\n\r\n function createStyles() {\r\n var res = \"\";\r\n for (var key in styles) {\r\n if (!has(styles, key)) continue;\r\n res += \" .\" + key + stringifyStyle(styles[key]);\r\n }\r\n return \"/*\\u003c![CDATA[*/\\n\" + res + \"\\n/*]]\\u003e*/\";\r\n }\r\n\r\n function stringifyStyle(s) {\r\n var res = \" {\";\r\n for (var key in s) {\r\n if (!has(s, key)) continue;\r\n res += key + \":\" + s[key] + \"; \";\r\n }\r\n return res + \"} \";\r\n }\r\n\r\n q.await(function(error) {\r\n if (error) throw error;\r\n var svg = d3.select(\"#d3-celestial-svg svg\")\r\n .attr(\"title\", \"D3-Celestial\")\r\n .attr(\"version\", 1.1)\r\n .attr(\"encoding\", \"UTF-8\")\r\n .attr(\"xmlns\", \"http://www.w3.org/2000/svg\")\r\n .attr(\"xmlns:xlink\", \"http://www.w3.org/1999/xlink\")\r\n .attr(\"xmlns:sodipodi\", \"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\")\r\n .attr(\"xmlns:inkscape\", \"http://www.inkscape.org/namespaces/inkscape\")\r\n .attr(\"viewBox\", \" 0 0 \" + (m.width) + \" \" + (m.height));\r\n\r\n defs.append(\"style\")\r\n .attr(\"type\", \"text\\/css\")\r\n .text(createStyles());\r\n /*defs.append(\":sodipodi:namedview\")\r\n .attr(\":inkscape:window-width\", m.width+200)\r\n .attr(\":inkscape:window-height\", m.height)\r\n .attr(\":inkscape:window-maximized\", \"1\");*/\r\n if (fname) {\r\n var blob = new Blob([svg.node().outerHTML], {type:\"image/svg+xml;charset=utf-8\"});\r\n \r\n var a = d3.select(\"body\").append(\"a\").node(); \r\n a.download = fname || \"d3-celestial.svg\";\r\n a.rel = \"noopener\";\r\n a.href = URL.createObjectURL(blob);\r\n a.click();\r\n d3.select(a).remove();\r\n } else if (exportCallback !== null) {\r\n exportCallback(svg.node().outerHTML);\r\n }\r\n d3.select(\"#d3-celestial-svg\").remove();\r\n });\r\n\r\n}\r\n\r\nvar customSvgSymbols = d3.map({\r\n 'ellipse': function(size, ratio) {\r\n var s = Math.sqrt(size), \r\n rx = s*0.666, ry = s/3;\r\n return 'M' + (-rx) + ',' + (-ry) +\r\n ' m' + (-rx) + ',0' +\r\n ' a' + rx + ',' + ry + ' 0 1,0' + (rx * 2) + ',0' +\r\n ' a' + rx + ',' + ry + ' 0 1,0' + (-(rx * 2)) + ',0';\r\n },\r\n 'marker': function(size, ratio) {\r\n var s = size > 48 ? size / 4 : 12,\r\n r = s/2, l = r-3;\r\n return 'M ' + (-r) + ' 0 h ' + l + \r\n ' M 0 ' + (-r) + ' v ' + l + \r\n ' M ' + r + ' 0 h ' + (-l) + \r\n ' M 0 ' + r + ' v ' + (-l);\r\n },\r\n 'cross-circle': function(size, ratio) {\r\n var s = Math.sqrt(size), \r\n r = s/2;\r\n return 'M' + (-r) + ',' + (-r) +\r\n ' m' + (-r) + ',0' +\r\n ' a' + r + ',' + r + ' 0 1,0' + (r * 2) + ',0' +\r\n ' a' + r + ',' + r + ' 0 1,0' + (-(r * 2)) + ',0' +\r\n ' M' + (-r) + ' 0 h ' + (s) + \r\n ' M 0 ' + (-r) + ' v ' + (s);\r\n \r\n },\r\n 'stroke-circle': function(size, ratio) {\r\n var s = Math.sqrt(size), \r\n r = s/2;\r\n return 'M' + (-r) + ',' + (-r) +\r\n ' m' + (-r) + ',0' +\r\n ' a' + r + ',' + r + ' 0 1,0' + (r * 2) + ',0' +\r\n ' a' + r + ',' + r + ' 0 1,0' + (-(r * 2)) + ',0' +\r\n ' M' + (-s-2) + ',' + (-s-2) + ' l' + (s+4) + ',' + (s+4);\r\n\r\n }, \r\n \"crescent\": function(size, ratio) {\r\n var s = Math.sqrt(size), \r\n r = s/2,\r\n ph = 0.5 * (1 - Math.cos(ratio)),\r\n e = 1.6 * Math.abs(ph - 0.5) + 0.01,\r\n dir = ratio > Math.PI ? 0 : 1,\r\n termdir = Math.abs(ph) > 0.5 ? dir : Math.abs(dir-1); \r\n return 'M ' + (-1) + ',' + (-1) +\r\n ' m 1,' + (-r+1) + \r\n ' a' + r + ',' + r + ' 0 1 ' + dir + ' 0,' + (r * 2) +\r\n ' a' + (r*e) + ',' + r + ' 0 1 ' + termdir + ' 0,' + (-(r * 2)) + 'z';\r\n } \r\n});\r\n\r\nd3.svg.customSymbol = function() {\r\n var type, size = 64, ratio = d3.functor(1);\r\n \r\n function symbol(d,i) {\r\n return customSvgSymbols.get(type.call(this,d,i))(size.call(this,d,i), ratio.call(this,d,i));\r\n }\r\n symbol.type = function(_) {\r\n if (!arguments.length) return type; \r\n type = d3.functor(_);\r\n return symbol;\r\n };\r\n symbol.size = function(_) {\r\n if (!arguments.length) return size; \r\n size = d3.functor(_);\r\n return symbol;\r\n };\r\n symbol.ratio = function(_) {\r\n if (!arguments.length) return ratio; \r\n ratio = d3.functor(_);\r\n return symbol;\r\n };\r\n return symbol;\r\n};\r\n\r\nvar exportCallback = null;\r\n\r\nCelestial.exportSVG = function(callback) {\r\n if (!callback) return;\r\n exportCallback = callback;\r\n exportSVG();\r\n};\r\nvar datetimepicker = function(cfg, callback) {\r\n var date = new Date(), \r\n tzFormat = d3.time.format(\"%Z\"),\r\n tz = [{\"−12:00\":-720}, {\"−11:00\":-660}, {\"−10:00\":-600}, {\"−09:30\":-570}, {\"−09:00\":-540}, {\"−08:00\":-480}, {\"−07:00\":-420}, {\"−06:00\":-360}, {\"−05:00\":-300}, {\"−04:30\":-270}, {\"−04:00\":-240}, {\"−03:30\":-210}, {\"−03:00\":-180}, {\"−02:30\":-150}, {\"−02:00\":-120}, {\"−01:00\":-60}, {\"±00:00\":0}, {\"+01:00\":60}, {\"+02:00\":120}, {\"+03:00\":180}, {\"+03:30\":210}, {\"+04:00\":240}, {\"+04:30\":270}, {\"+05:00\":300}, {\"+05:30\":330}, {\"+05:45\":345}, {\"+06:00\":360}, {\"+06:30\":390}, {\"+07:00\":420}, {\"+08:00\":480}, {\"+08:30\":510}, {\"+08:45\":525}, {\"+09:00\":540}, {\"+09:30\":570}, {\"+10:00\":600}, {\"+10:30\":630}, {\"+11:00\":660}, {\"+12:00\":720}, {\"+12:45\":765}, {\"+13:00\":780}, {\"+14:00\":840}],\r\n months = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n days = [\"Su\", \"M\", \"Tu\", \"W\", \"Th\", \"F\", \"Sa\"],\r\n years = getYears(date),\r\n dateFormat = d3.time.format(\"%Y-%m-%d\"),\r\n dtrange = cfg.daterange || [];\r\n \r\n var picker = d3.select(parentElement + \" ~ #celestial-form\").append(\"div\").attr(\"id\", \"celestial-date\");\r\n nav(\"left\");\r\n monSel();\r\n yrSel();\r\n nav(\"right\");\r\n \r\n var cal = picker.append(\"div\").attr(\"id\", \"cal\");\r\n\r\n daySel();\r\n \r\n timeSel();\r\n tzSel();\r\n \r\n function daySel() {\r\n var mo = $form(\"mon\").value, yr = $form(\"yr\").value,\r\n curdt = new Date(yr, mo, 1),\r\n cal = d3.select(parentElement + \" ~ #celestial-form\").select(\"#cal\"),\r\n today = new Date();\r\n yr = parseInt(yr); \r\n mo = parseInt(mo); \r\n curdt.setDate(curdt.getDate() - curdt.getDay());\r\n var nd = cal.node();\r\n while (nd.firstChild) nd.removeChild(nd.firstChild);\r\n \r\n for (var i=0; i<7; i++) {\r\n cal.append(\"div\").classed({\"date\": true, \"weekday\": true}).html(days[i]);\r\n }\r\n for (i=0; i<42; i++) {\r\n var curmon = curdt.getMonth(), curday = curdt.getDay(), curid = dateFormat(curdt);\r\n cal.append(\"div\").classed({\r\n \"date\": true, \r\n \"grey\": curmon !== mo,\r\n \"weekend\": curmon === mo && (curday === 0 || curday === 6),\r\n \"today\": dateDiff(curdt, today) === 0,\r\n \"selected\": dateDiff(curdt, date) === 0\r\n }).attr(\"id\", curid)\r\n .on(\"click\", pick)\r\n .html(curdt.getDate().toString());\r\n \r\n curdt.setDate(curdt.getDate()+1);\r\n }\r\n }\r\n\r\n function yrSel() { \r\n picker.append(\"select\").attr(\"title\", \"Year\").attr(\"id\", \"yr\").on(\"change\", daySel); \r\n \r\n fillYrSel();\r\n }\r\n\r\n function fillYrSel() { \r\n var sel = d3.select(parentElement + \" ~ #celestial-form\").select(\"select#yr\"),\r\n year = date.getFullYear(),\r\n selected = 0,\r\n years = getYears(date);\r\n \r\n sel.selectAll(\"*\").remove(); \r\n sel.selectAll('option').data(years).enter().append('option')\r\n .text(function (d, i) { \r\n if (d === year) selected = i; \r\n return d.toString(); \r\n });\r\n sel.property(\"selectedIndex\", selected);\r\n }\r\n \r\n function monSel() { \r\n var sel = picker.append(\"select\").attr(\"title\", \"Month\").attr(\"id\", \"mon\").on(\"change\", daySel),\r\n selected = 0,\r\n month = date.getMonth();\r\n \r\n sel.selectAll('option').data(months).enter().append('option')\r\n .attr(\"value\", function (d, i) { \r\n if (i === month) selected = i; \r\n return i; \r\n })\r\n .text(function (d) { return d; });\r\n sel.property(\"selectedIndex\", selected);\r\n }\r\n \r\n function nav(dir) {\r\n var lnk = picker.append(\"div\").attr(\"id\", dir).on(\"click\", function () {\r\n var mon = $form(\"mon\"), yr = $form(\"yr\");\r\n \r\n if (dir === \"left\") {\r\n if (mon.selectedIndex === 0) {\r\n mon.selectedIndex = 11;\r\n yr.selectedIndex--;\r\n } else mon.selectedIndex--;\r\n } else {\r\n if (mon.selectedIndex === 11) {\r\n mon.selectedIndex = 0;\r\n yr.selectedIndex++;\r\n } else mon.selectedIndex++;\r\n }\r\n daySel();\r\n });\r\n }\r\n\r\n function timeSel() { \r\n picker.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"hr\").attr(\"title\", \"Hours\").attr(\"max\", \"24\").attr(\"min\", \"-1\").attr(\"step\", \"1\").attr(\"value\", date.getHours()).on(\"change\", function () { if (testNumber(this) === true) pick(); });\r\n\r\n picker.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"min\").attr(\"title\", \"Minutes\").attr(\"max\", \"60\").attr(\"min\", \"-1\").attr(\"step\", \"1\").attr(\"value\", date.getMinutes()).on(\"change\", function () { if (testNumber(this) === true) pick(); });\r\n \r\n picker.append(\"input\").attr(\"type\", \"number\").attr(\"id\", \"sec\").attr(\"title\", \"Seconds\").attr(\"max\", \"60\").attr(\"min\", \"-1\").attr(\"step\", \"1\").attr(\"value\", date.getSeconds()).on(\"change\", function () { if (testNumber(this) === true) pick(); });\r\n }\r\n \r\n function tzSel() { \r\n var sel = picker.append(\"select\").attr(\"title\", \"Time zone offset from UTC\").attr(\"id\", \"tz\").on(\"change\", pick),\r\n selected = 15,\r\n tzOffset = -date.getTimezoneOffset();\r\n sel.selectAll('option').data(tz).enter().append('option')\r\n .attr(\"value\", function (d, i) { \r\n var k = Object.keys(d)[0];\r\n if (d[k] === tzOffset) selected = i; \r\n return d[k]; \r\n })\r\n .text(function (d) { return Object.keys(d)[0]; });\r\n sel.property(\"selectedIndex\", selected);\r\n }\r\n \r\n function getYears(dt) {\r\n var r = getDateRange(dt.getFullYear()), res = [];\r\n for (var i = r[0]; i <= r[1]; i++) res.push(i);\r\n return res;\r\n } \r\n \r\n function getDateRange(yr) {\r\n if (!dtrange || dtrange.length < 1) return [yr - 10, yr + 10];\r\n \r\n if (dtrange.length === 1 && isNumber(dtrange[0])) {\r\n if (dtrange[0] >= 100) return [dtrange[0] - 10, dtrange[0] + 10];\r\n else return [yr - dtrange[0], yr + dtrange[0]];\r\n }\r\n if (dtrange.length === 2 && isNumber(dtrange[0])&& isNumber(dtrange[1])) {\r\n if (dtrange[1] >= 100) return [dtrange[0], dtrange[1]];\r\n else return [dtrange[0] - dtrange[1], dtrange[0] + dtrange[1]];\r\n } \r\n return [yr - 10, yr + 10];\r\n }\r\n\r\n function select(id, val) {\r\n var sel = $form(id);\r\n for (var i=0; i= 0) {\r\n if (t = q._tasks[i]) {\r\n q._tasks[i] = null;\r\n if (t.abort) {\r\n try { t.abort(); }\r\n catch (e) { /* ignore */ }\r\n }\r\n }\r\n }\r\n\r\n q._active = NaN; // allow notification\r\n maybeNotify(q);\r\n}\r\n\r\nfunction maybeNotify(q) {\r\n if (!q._active && q._call) {\r\n var d = q._data;\r\n q._data = undefined; // allow gc\r\n q._call(q._error, d);\r\n }\r\n}\r\n\r\nfunction queue(concurrency) {\r\n if (concurrency == null) concurrency = Infinity;\r\n else if (!((concurrency = +concurrency) >= 1)) throw new Error(\"invalid concurrency\");\r\n return new Queue(concurrency);\r\n}\r\n\r\nexports.queue = queue;\r\nd3.queue = queue;\r\n\r\nObject.defineProperty(exports, '__esModule', { value: true });\r\n\r\n})));\r\nthis.Celestial = Celestial;\n})();","(function() {\r\n d3.geo.project = function(object, projection) {\r\n var stream = projection.stream;\r\n if (!stream) throw new Error(\"not yet supported\");\r\n return (object && d3_geo_projectObjectType.hasOwnProperty(object.type) ? d3_geo_projectObjectType[object.type] : d3_geo_projectGeometry)(object, stream);\r\n };\r\n function d3_geo_projectFeature(object, stream) {\r\n return {\r\n type: \"Feature\",\r\n id: object.id,\r\n properties: object.properties,\r\n geometry: d3_geo_projectGeometry(object.geometry, stream)\r\n };\r\n }\r\n function d3_geo_projectGeometry(geometry, stream) {\r\n if (!geometry) return null;\r\n if (geometry.type === \"GeometryCollection\") return {\r\n type: \"GeometryCollection\",\r\n geometries: object.geometries.map(function(geometry) {\r\n return d3_geo_projectGeometry(geometry, stream);\r\n })\r\n };\r\n if (!d3_geo_projectGeometryType.hasOwnProperty(geometry.type)) return null;\r\n var sink = d3_geo_projectGeometryType[geometry.type];\r\n d3.geo.stream(geometry, stream(sink));\r\n return sink.result();\r\n }\r\n var d3_geo_projectObjectType = {\r\n Feature: d3_geo_projectFeature,\r\n FeatureCollection: function(object, stream) {\r\n return {\r\n type: \"FeatureCollection\",\r\n features: object.features.map(function(feature) {\r\n return d3_geo_projectFeature(feature, stream);\r\n })\r\n };\r\n }\r\n };\r\n var d3_geo_projectPoints = [], d3_geo_projectLines = [];\r\n var d3_geo_projectPoint = {\r\n point: function(x, y) {\r\n d3_geo_projectPoints.push([ x, y ]);\r\n },\r\n result: function() {\r\n var result = !d3_geo_projectPoints.length ? null : d3_geo_projectPoints.length < 2 ? {\r\n type: \"Point\",\r\n coordinates: d3_geo_projectPoints[0]\r\n } : {\r\n type: \"MultiPoint\",\r\n coordinates: d3_geo_projectPoints\r\n };\r\n d3_geo_projectPoints = [];\r\n return result;\r\n }\r\n };\r\n var d3_geo_projectLine = {\r\n lineStart: d3_geo_projectNoop,\r\n point: function(x, y) {\r\n d3_geo_projectPoints.push([ x, y ]);\r\n },\r\n lineEnd: function() {\r\n if (d3_geo_projectPoints.length) d3_geo_projectLines.push(d3_geo_projectPoints), \r\n d3_geo_projectPoints = [];\r\n },\r\n result: function() {\r\n var result = !d3_geo_projectLines.length ? null : d3_geo_projectLines.length < 2 ? {\r\n type: \"LineString\",\r\n coordinates: d3_geo_projectLines[0]\r\n } : {\r\n type: \"MultiLineString\",\r\n coordinates: d3_geo_projectLines\r\n };\r\n d3_geo_projectLines = [];\r\n return result;\r\n }\r\n };\r\n var d3_geo_projectPolygon = {\r\n polygonStart: d3_geo_projectNoop,\r\n lineStart: d3_geo_projectNoop,\r\n point: function(x, y) {\r\n d3_geo_projectPoints.push([ x, y ]);\r\n },\r\n lineEnd: function() {\r\n var n = d3_geo_projectPoints.length;\r\n if (n) {\r\n do d3_geo_projectPoints.push(d3_geo_projectPoints[0].slice()); while (++n < 4);\r\n d3_geo_projectLines.push(d3_geo_projectPoints), d3_geo_projectPoints = [];\r\n }\r\n },\r\n polygonEnd: d3_geo_projectNoop,\r\n result: function() {\r\n if (!d3_geo_projectLines.length) return null;\r\n var polygons = [], holes = [];\r\n d3_geo_projectLines.forEach(function(ring) {\r\n if (d3_geo_projectClockwise(ring)) polygons.push([ ring ]); else holes.push(ring);\r\n });\r\n holes.forEach(function(hole) {\r\n var point = hole[0];\r\n polygons.some(function(polygon) {\r\n if (d3_geo_projectContains(polygon[0], point)) {\r\n polygon.push(hole);\r\n return true;\r\n }\r\n }) || polygons.push([ hole ]);\r\n });\r\n d3_geo_projectLines = [];\r\n return !polygons.length ? null : polygons.length > 1 ? {\r\n type: \"MultiPolygon\",\r\n coordinates: polygons\r\n } : {\r\n type: \"Polygon\",\r\n coordinates: polygons[0]\r\n };\r\n }\r\n };\r\n var d3_geo_projectGeometryType = {\r\n Point: d3_geo_projectPoint,\r\n MultiPoint: d3_geo_projectPoint,\r\n LineString: d3_geo_projectLine,\r\n MultiLineString: d3_geo_projectLine,\r\n Polygon: d3_geo_projectPolygon,\r\n MultiPolygon: d3_geo_projectPolygon,\r\n Sphere: d3_geo_projectPolygon\r\n };\r\n function d3_geo_projectNoop() {}\r\n function d3_geo_projectClockwise(ring) {\r\n if ((n = ring.length) < 4) return false;\r\n var i = 0, n, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\r\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\r\n return area <= 0;\r\n }\r\n function d3_geo_projectContains(ring, point) {\r\n var x = point[0], y = point[1], contains = false;\r\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\r\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\r\n if (yi > y ^ yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi) contains = !contains;\r\n }\r\n return contains;\r\n }\r\n var ε = 1e-6, ε2 = ε * ε, π = Math.PI, halfπ = π / 2, sqrtπ = Math.sqrt(π), radians = π / 180, degrees = 180 / π;\r\n function sinci(x) {\r\n return x ? x / Math.sin(x) : 1;\r\n }\r\n function sgn(x) {\r\n return x > 0 ? 1 : x < 0 ? -1 : 0;\r\n }\r\n function asin(x) {\r\n return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\r\n }\r\n function acos(x) {\r\n return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\r\n }\r\n function asqrt(x) {\r\n return x > 0 ? Math.sqrt(x) : 0;\r\n }\r\n var projection = d3.geo.projection, projectionMutator = d3.geo.projectionMutator;\r\n d3.geo.interrupt = function(project) {\r\n var lobes = [ [ [ [ -π, 0 ], [ 0, halfπ ], [ π, 0 ] ] ], [ [ [ -π, 0 ], [ 0, -halfπ ], [ π, 0 ] ] ] ];\r\n var bounds;\r\n function forward(λ, φ) {\r\n var sign = φ < 0 ? -1 : +1, hemilobes = lobes[+(φ < 0)];\r\n for (var i = 0, n = hemilobes.length - 1; i < n && λ > hemilobes[i][2][0]; ++i) ;\r\n var coordinates = project(λ - hemilobes[i][1][0], φ);\r\n coordinates[0] += project(hemilobes[i][1][0], sign * φ > sign * hemilobes[i][0][1] ? hemilobes[i][0][1] : φ)[0];\r\n return coordinates;\r\n }\r\n function reset() {\r\n bounds = lobes.map(function(hemilobes) {\r\n return hemilobes.map(function(lobe) {\r\n var x0 = project(lobe[0][0], lobe[0][1])[0], x1 = project(lobe[2][0], lobe[2][1])[0], y0 = project(lobe[1][0], lobe[0][1])[1], y1 = project(lobe[1][0], lobe[1][1])[1], t;\r\n if (y0 > y1) t = y0, y0 = y1, y1 = t;\r\n return [ [ x0, y0 ], [ x1, y1 ] ];\r\n });\r\n });\r\n }\r\n if (project.invert) forward.invert = function(x, y) {\r\n var hemibounds = bounds[+(y < 0)], hemilobes = lobes[+(y < 0)];\r\n for (var i = 0, n = hemibounds.length; i < n; ++i) {\r\n var b = hemibounds[i];\r\n if (b[0][0] <= x && x < b[1][0] && b[0][1] <= y && y < b[1][1]) {\r\n var coordinates = project.invert(x - project(hemilobes[i][1][0], 0)[0], y);\r\n coordinates[0] += hemilobes[i][1][0];\r\n return pointEqual(forward(coordinates[0], coordinates[1]), [ x, y ]) ? coordinates : null;\r\n }\r\n }\r\n };\r\n var projection = d3.geo.projection(forward), stream_ = projection.stream;\r\n projection.stream = function(stream) {\r\n var rotate = projection.rotate(), rotateStream = stream_(stream), sphereStream = (projection.rotate([ 0, 0 ]), \r\n stream_(stream));\r\n projection.rotate(rotate);\r\n rotateStream.sphere = function() {\r\n d3.geo.stream(sphere(), sphereStream);\r\n };\r\n return rotateStream;\r\n };\r\n projection.lobes = function(_) {\r\n if (!arguments.length) return lobes.map(function(lobes) {\r\n return lobes.map(function(lobe) {\r\n return [ [ lobe[0][0] * 180 / π, lobe[0][1] * 180 / π ], [ lobe[1][0] * 180 / π, lobe[1][1] * 180 / π ], [ lobe[2][0] * 180 / π, lobe[2][1] * 180 / π ] ];\r\n });\r\n });\r\n lobes = _.map(function(lobes) {\r\n return lobes.map(function(lobe) {\r\n return [ [ lobe[0][0] * π / 180, lobe[0][1] * π / 180 ], [ lobe[1][0] * π / 180, lobe[1][1] * π / 180 ], [ lobe[2][0] * π / 180, lobe[2][1] * π / 180 ] ];\r\n });\r\n });\r\n reset();\r\n return projection;\r\n };\r\n function sphere() {\r\n var ε = 1e-6, coordinates = [];\r\n for (var i = 0, n = lobes[0].length; i < n; ++i) {\r\n var lobe = lobes[0][i], λ0 = lobe[0][0] * 180 / π, φ0 = lobe[0][1] * 180 / π, φ1 = lobe[1][1] * 180 / π, λ2 = lobe[2][0] * 180 / π, φ2 = lobe[2][1] * 180 / π;\r\n coordinates.push(resample([ [ λ0 + ε, φ0 + ε ], [ λ0 + ε, φ1 - ε ], [ λ2 - ε, φ1 - ε ], [ λ2 - ε, φ2 + ε ] ], 30));\r\n }\r\n for (var i = lobes[1].length - 1; i >= 0; --i) {\r\n var lobe = lobes[1][i], λ0 = lobe[0][0] * 180 / π, φ0 = lobe[0][1] * 180 / π, φ1 = lobe[1][1] * 180 / π, λ2 = lobe[2][0] * 180 / π, φ2 = lobe[2][1] * 180 / π;\r\n coordinates.push(resample([ [ λ2 - ε, φ2 - ε ], [ λ2 - ε, φ1 + ε ], [ λ0 + ε, φ1 + ε ], [ λ0 + ε, φ0 - ε ] ], 30));\r\n }\r\n return {\r\n type: \"Polygon\",\r\n coordinates: [ d3.merge(coordinates) ]\r\n };\r\n }\r\n function resample(coordinates, m) {\r\n var i = -1, n = coordinates.length, p0 = coordinates[0], p1, dx, dy, resampled = [];\r\n while (++i < n) {\r\n p1 = coordinates[i];\r\n dx = (p1[0] - p0[0]) / m;\r\n dy = (p1[1] - p0[1]) / m;\r\n for (var j = 0; j < m; ++j) resampled.push([ p0[0] + j * dx, p0[1] + j * dy ]);\r\n p0 = p1;\r\n }\r\n resampled.push(p1);\r\n return resampled;\r\n }\r\n function pointEqual(a, b) {\r\n return Math.abs(a[0] - b[0]) < ε && Math.abs(a[1] - b[1]) < ε;\r\n }\r\n return projection;\r\n };\r\n function airy(β) {\r\n var tanβ_2 = Math.tan(.5 * β), B = 2 * Math.log(Math.cos(.5 * β)) / (tanβ_2 * tanβ_2);\r\n function forward(λ, φ) {\r\n var cosλ = Math.cos(λ), cosφ = Math.cos(φ), sinφ = Math.sin(φ), cosz = cosφ * cosλ, K = -((1 - cosz ? Math.log(.5 * (1 + cosz)) / (1 - cosz) : -.5) + B / (1 + cosz));\r\n return [ K * cosφ * Math.sin(λ), K * sinφ ];\r\n }\r\n forward.invert = function(x, y) {\r\n var ρ = Math.sqrt(x * x + y * y), z = β * -.5, i = 50, δ;\r\n if (!ρ) return [ 0, 0 ];\r\n do {\r\n var z_2 = .5 * z, cosz_2 = Math.cos(z_2), sinz_2 = Math.sin(z_2), tanz_2 = Math.tan(z_2), lnsecz_2 = Math.log(1 / cosz_2);\r\n z -= δ = (2 / tanz_2 * lnsecz_2 - B * tanz_2 - ρ) / (-lnsecz_2 / (sinz_2 * sinz_2) + 1 - B / (2 * cosz_2 * cosz_2));\r\n } while (Math.abs(δ) > ε && --i > 0);\r\n var sinz = Math.sin(z);\r\n return [ Math.atan2(x * sinz, ρ * Math.cos(z)), asin(y * sinz / ρ) ];\r\n };\r\n return forward;\r\n }\r\n function airyProjection() {\r\n var β = halfπ, m = projectionMutator(airy), p = m(β);\r\n p.radius = function(_) {\r\n if (!arguments.length) return β / π * 180;\r\n return m(β = _ * π / 180);\r\n };\r\n return p;\r\n }\r\n (d3.geo.airy = airyProjection).raw = airy;\r\n function aitoff(λ, φ) {\r\n var cosφ = Math.cos(φ), sinciα = sinci(acos(cosφ * Math.cos(λ /= 2)));\r\n return [ 2 * cosφ * Math.sin(λ) * sinciα, Math.sin(φ) * sinciα ];\r\n }\r\n aitoff.invert = function(x, y) {\r\n if (x * x + 4 * y * y > π * π + ε) return;\r\n var λ = x, φ = y, i = 25;\r\n do {\r\n var sinλ = Math.sin(λ), sinλ_2 = Math.sin(λ / 2), cosλ_2 = Math.cos(λ / 2), sinφ = Math.sin(φ), cosφ = Math.cos(φ), sin_2φ = Math.sin(2 * φ), sin2φ = sinφ * sinφ, cos2φ = cosφ * cosφ, sin2λ_2 = sinλ_2 * sinλ_2, C = 1 - cos2φ * cosλ_2 * cosλ_2, E = C ? acos(cosφ * cosλ_2) * Math.sqrt(F = 1 / C) : F = 0, F, fx = 2 * E * cosφ * sinλ_2 - x, fy = E * sinφ - y, δxδλ = F * (cos2φ * sin2λ_2 + E * cosφ * cosλ_2 * sin2φ), δxδφ = F * (.5 * sinλ * sin_2φ - E * 2 * sinφ * sinλ_2), δyδλ = F * .25 * (sin_2φ * sinλ_2 - E * sinφ * cos2φ * sinλ), δyδφ = F * (sin2φ * cosλ_2 + E * sin2λ_2 * cosφ), denominator = δxδφ * δyδλ - δyδφ * δxδλ;\r\n if (!denominator) break;\r\n var δλ = (fy * δxδφ - fx * δyδφ) / denominator, δφ = (fx * δyδλ - fy * δxδλ) / denominator;\r\n λ -= δλ, φ -= δφ;\r\n } while ((Math.abs(δλ) > ε || Math.abs(δφ) > ε) && --i > 0);\r\n return [ λ, φ ];\r\n };\r\n (d3.geo.aitoff = function() {\r\n return projection(aitoff);\r\n }).raw = aitoff;\r\n function armadillo(φ0) {\r\n var sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sφ0 = φ0 > 0 ? 1 : -1, tanφ0 = Math.tan(sφ0 * φ0), k = (1 + sinφ0 - cosφ0) / 2;\r\n function forward(λ, φ) {\r\n var cosφ = Math.cos(φ), cosλ = Math.cos(λ /= 2);\r\n return [ (1 + cosφ) * Math.sin(λ), (sφ0 * φ > -Math.atan2(cosλ, tanφ0) - .001 ? 0 : -sφ0 * 10) + k + Math.sin(φ) * cosφ0 - (1 + cosφ) * sinφ0 * cosλ ];\r\n }\r\n forward.invert = function(x, y) {\r\n var λ = 0, φ = 0, i = 50;\r\n do {\r\n var cosλ = Math.cos(λ), sinλ = Math.sin(λ), cosφ = Math.cos(φ), sinφ = Math.sin(φ), A = 1 + cosφ, fx = A * sinλ - x, fy = k + sinφ * cosφ0 - A * sinφ0 * cosλ - y, δxδλ = .5 * A * cosλ, δxδφ = -sinλ * sinφ, δyδλ = .5 * sinφ0 * A * sinλ, δyδφ = cosφ0 * cosφ + sinφ0 * cosλ * sinφ, denominator = δxδφ * δyδλ - δyδφ * δxδλ, δλ = .5 * (fy * δxδφ - fx * δyδφ) / denominator, δφ = (fx * δyδλ - fy * δxδλ) / denominator;\r\n λ -= δλ, φ -= δφ;\r\n } while ((Math.abs(δλ) > ε || Math.abs(δφ) > ε) && --i > 0);\r\n return sφ0 * φ > -Math.atan2(Math.cos(λ), tanφ0) - .001 ? [ λ * 2, φ ] : null;\r\n };\r\n return forward;\r\n }\r\n function armadilloProjection() {\r\n var φ0 = π / 9, sφ0 = φ0 > 0 ? 1 : -1, tanφ0 = Math.tan(sφ0 * φ0), m = projectionMutator(armadillo), p = m(φ0), stream_ = p.stream;\r\n p.parallel = function(_) {\r\n if (!arguments.length) return φ0 / π * 180;\r\n tanφ0 = Math.tan((sφ0 = (φ0 = _ * π / 180) > 0 ? 1 : -1) * φ0);\r\n return m(φ0);\r\n };\r\n p.stream = function(stream) {\r\n var rotate = p.rotate(), rotateStream = stream_(stream), sphereStream = (p.rotate([ 0, 0 ]), \r\n stream_(stream));\r\n p.rotate(rotate);\r\n rotateStream.sphere = function() {\r\n sphereStream.polygonStart(), sphereStream.lineStart();\r\n for (var λ = sφ0 * -180; sφ0 * λ < 180; λ += sφ0 * 90) sphereStream.point(λ, sφ0 * 90);\r\n while (sφ0 * (λ -= φ0) >= -180) {\r\n sphereStream.point(λ, sφ0 * -Math.atan2(Math.cos(λ * radians / 2), tanφ0) * degrees);\r\n }\r\n sphereStream.lineEnd(), sphereStream.polygonEnd();\r\n };\r\n return rotateStream;\r\n };\r\n return p;\r\n }\r\n (d3.geo.armadillo = armadilloProjection).raw = armadillo;\r\n function tanh(x) {\r\n x = Math.exp(2 * x);\r\n return (x - 1) / (x + 1);\r\n }\r\n function sinh(x) {\r\n return .5 * (Math.exp(x) - Math.exp(-x));\r\n }\r\n function cosh(x) {\r\n return .5 * (Math.exp(x) + Math.exp(-x));\r\n }\r\n function arsinh(x) {\r\n return Math.log(x + asqrt(x * x + 1));\r\n }\r\n function arcosh(x) {\r\n return Math.log(x + asqrt(x * x - 1));\r\n }\r\n function august(λ, φ) {\r\n var tanφ = Math.tan(φ / 2), k = asqrt(1 - tanφ * tanφ), c = 1 + k * Math.cos(λ /= 2), x = Math.sin(λ) * k / c, y = tanφ / c, x2 = x * x, y2 = y * y;\r\n return [ 4 / 3 * x * (3 + x2 - 3 * y2), 4 / 3 * y * (3 + 3 * x2 - y2) ];\r\n }\r\n august.invert = function(x, y) {\r\n x *= 3 / 8, y *= 3 / 8;\r\n if (!x && Math.abs(y) > 1) return null;\r\n var x2 = x * x, y2 = y * y, s = 1 + x2 + y2, sin3η = Math.sqrt(.5 * (s - Math.sqrt(s * s - 4 * y * y))), η = asin(sin3η) / 3, ξ = sin3η ? arcosh(Math.abs(y / sin3η)) / 3 : arsinh(Math.abs(x)) / 3, cosη = Math.cos(η), coshξ = cosh(ξ), d = coshξ * coshξ - cosη * cosη;\r\n return [ sgn(x) * 2 * Math.atan2(sinh(ξ) * cosη, .25 - d), sgn(y) * 2 * Math.atan2(coshξ * Math.sin(η), .25 + d) ];\r\n };\r\n (d3.geo.august = function() {\r\n return projection(august);\r\n }).raw = august;\r\n var bakerφ = Math.log(1 + Math.SQRT2);\r\n function baker(λ, φ) {\r\n var φ0 = Math.abs(φ);\r\n return φ0 < π / 4 ? [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ] : [ λ * Math.cos(φ0) * (2 * Math.SQRT2 - 1 / Math.sin(φ0)), sgn(φ) * (2 * Math.SQRT2 * (φ0 - π / 4) - Math.log(Math.tan(φ0 / 2))) ];\r\n }\r\n baker.invert = function(x, y) {\r\n if ((y0 = Math.abs(y)) < bakerφ) return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\r\n var sqrt8 = Math.sqrt(8), φ = π / 4, i = 25, δ, y0;\r\n do {\r\n var cosφ_2 = Math.cos(φ / 2), tanφ_2 = Math.tan(φ / 2);\r\n φ -= δ = (sqrt8 * (φ - π / 4) - Math.log(tanφ_2) - y0) / (sqrt8 - .5 * cosφ_2 * cosφ_2 / tanφ_2);\r\n } while (Math.abs(δ) > ε2 && --i > 0);\r\n return [ x / (Math.cos(φ) * (sqrt8 - 1 / Math.sin(φ))), sgn(y) * φ ];\r\n };\r\n (d3.geo.baker = function() {\r\n return projection(baker);\r\n }).raw = baker;\r\n var berghausAzimuthalEquidistant = d3.geo.azimuthalEquidistant.raw;\r\n function berghaus(n) {\r\n var k = 2 * π / n;\r\n function forward(λ, φ) {\r\n var p = berghausAzimuthalEquidistant(λ, φ);\r\n if (Math.abs(λ) > halfπ) {\r\n var θ = Math.atan2(p[1], p[0]), r = Math.sqrt(p[0] * p[0] + p[1] * p[1]), θ0 = k * Math.round((θ - halfπ) / k) + halfπ, α = Math.atan2(Math.sin(θ -= θ0), 2 - Math.cos(θ));\r\n θ = θ0 + asin(π / r * Math.sin(α)) - α;\r\n p[0] = r * Math.cos(θ);\r\n p[1] = r * Math.sin(θ);\r\n }\r\n return p;\r\n }\r\n forward.invert = function(x, y) {\r\n var r = Math.sqrt(x * x + y * y);\r\n if (r > halfπ) {\r\n var θ = Math.atan2(y, x), θ0 = k * Math.round((θ - halfπ) / k) + halfπ, s = θ > θ0 ? -1 : 1, A = r * Math.cos(θ0 - θ), cotα = 1 / Math.tan(s * Math.acos((A - π) / Math.sqrt(π * (π - 2 * A) + r * r)));\r\n θ = θ0 + 2 * Math.atan((cotα + s * Math.sqrt(cotα * cotα - 3)) / 3);\r\n x = r * Math.cos(θ), y = r * Math.sin(θ);\r\n }\r\n return berghausAzimuthalEquidistant.invert(x, y);\r\n };\r\n return forward;\r\n }\r\n function berghausProjection() {\r\n var n = 5, m = projectionMutator(berghaus), p = m(n), stream_ = p.stream, ε = .01, cr = -Math.cos(ε * radians), sr = Math.sin(ε * radians);\r\n p.lobes = function(_) {\r\n if (!arguments.length) return n;\r\n return m(n = +_);\r\n };\r\n p.stream = function(stream) {\r\n var rotate = p.rotate(), rotateStream = stream_(stream), sphereStream = (p.rotate([ 0, 0 ]), \r\n stream_(stream));\r\n p.rotate(rotate);\r\n rotateStream.sphere = function() {\r\n sphereStream.polygonStart(), sphereStream.lineStart();\r\n for (var i = 0, δ = 360 / n, δ0 = 2 * π / n, φ = 90 - 180 / n, φ0 = halfπ; i < n; ++i, \r\n φ -= δ, φ0 -= δ0) {\r\n sphereStream.point(Math.atan2(sr * Math.cos(φ0), cr) * degrees, asin(sr * Math.sin(φ0)) * degrees);\r\n if (φ < -90) {\r\n sphereStream.point(-90, -180 - φ - ε);\r\n sphereStream.point(-90, -180 - φ + ε);\r\n } else {\r\n sphereStream.point(90, φ + ε);\r\n sphereStream.point(90, φ - ε);\r\n }\r\n }\r\n sphereStream.lineEnd(), sphereStream.polygonEnd();\r\n };\r\n return rotateStream;\r\n };\r\n return p;\r\n }\r\n (d3.geo.berghaus = berghausProjection).raw = berghaus;\r\n function mollweideBromleyθ(Cp) {\r\n return function(θ) {\r\n var Cpsinθ = Cp * Math.sin(θ), i = 30, δ;\r\n do θ -= δ = (θ + Math.sin(θ) - Cpsinθ) / (1 + Math.cos(θ)); while (Math.abs(δ) > ε && --i > 0);\r\n return θ / 2;\r\n };\r\n }\r\n function mollweideBromley(Cx, Cy, Cp) {\r\n var θ = mollweideBromleyθ(Cp);\r\n function forward(λ, φ) {\r\n return [ Cx * λ * Math.cos(φ = θ(φ)), Cy * Math.sin(φ) ];\r\n }\r\n forward.invert = function(x, y) {\r\n var θ = asin(y / Cy);\r\n return [ x / (Cx * Math.cos(θ)), asin((2 * θ + Math.sin(2 * θ)) / Cp) ];\r\n };\r\n return forward;\r\n }\r\n var mollweideθ = mollweideBromleyθ(π), mollweide = mollweideBromley(Math.SQRT2 / halfπ, Math.SQRT2, π);\r\n (d3.geo.mollweide = function() {\r\n return projection(mollweide);\r\n }).raw = mollweide;\r\n function boggs(λ, φ) {\r\n var k = 2.00276, θ = mollweideθ(φ);\r\n return [ k * λ / (1 / Math.cos(φ) + 1.11072 / Math.cos(θ)), (φ + Math.SQRT2 * Math.sin(θ)) / k ];\r\n }\r\n boggs.invert = function(x, y) {\r\n var k = 2.00276, ky = k * y, θ = y < 0 ? -π / 4 : π / 4, i = 25, δ, φ;\r\n do {\r\n φ = ky - Math.SQRT2 * Math.sin(θ);\r\n θ -= δ = (Math.sin(2 * θ) + 2 * θ - π * Math.sin(φ)) / (2 * Math.cos(2 * θ) + 2 + π * Math.cos(φ) * Math.SQRT2 * Math.cos(θ));\r\n } while (Math.abs(δ) > ε && --i > 0);\r\n φ = ky - Math.SQRT2 * Math.sin(θ);\r\n return [ x * (1 / Math.cos(φ) + 1.11072 / Math.cos(θ)) / k, φ ];\r\n };\r\n (d3.geo.boggs = function() {\r\n return projection(boggs);\r\n }).raw = boggs;\r\n function parallel1Projection(projectAt) {\r\n var φ0 = 0, m = projectionMutator(projectAt), p = m(φ0);\r\n p.parallel = function(_) {\r\n if (!arguments.length) return φ0 / π * 180;\r\n return m(φ0 = _ * π / 180);\r\n };\r\n return p;\r\n }\r\n function sinusoidal(λ, φ) {\r\n return [ λ * Math.cos(φ), φ ];\r\n }\r\n sinusoidal.invert = function(x, y) {\r\n return [ x / Math.cos(y), y ];\r\n };\r\n (d3.geo.sinusoidal = function() {\r\n return projection(sinusoidal);\r\n }).raw = sinusoidal;\r\n function bonne(φ0) {\r\n if (!φ0) return sinusoidal;\r\n var cotφ0 = 1 / Math.tan(φ0);\r\n function forward(λ, φ) {\r\n var ρ = cotφ0 + φ0 - φ, E = ρ ? λ * Math.cos(φ) / ρ : ρ;\r\n return [ ρ * Math.sin(E), cotφ0 - ρ * Math.cos(E) ];\r\n }\r\n forward.invert = function(x, y) {\r\n var ρ = Math.sqrt(x * x + (y = cotφ0 - y) * y), φ = cotφ0 + φ0 - ρ;\r\n return [ ρ / Math.cos(φ) * Math.atan2(x, y), φ ];\r\n };\r\n return forward;\r\n }\r\n (d3.geo.bonne = function() {\r\n return parallel1Projection(bonne).parallel(45);\r\n }).raw = bonne;\r\n function bottomleyRaw(ψ) {\r\n var sinψ = Math.sin(ψ);\r\n function forward(λ, φ) {\r\n var ρ = halfπ - φ, η = ρ ? λ * sinψ * Math.sin(ρ) / ρ : ρ;\r\n return [ ρ * Math.sin(η) / sinψ, halfπ - ρ * Math.cos(η) ];\r\n }\r\n forward.invert = function(x, y) {\r\n var x1 = x * sinψ, y1 = halfπ - y, ρ = Math.sqrt(x1 * x1 + y1 * y1), η = Math.atan2(x1, y1);\r\n return [ (ρ ? ρ / Math.sin(ρ) : 1) * η / sinψ, halfπ - ρ ];\r\n };\r\n return forward;\r\n }\r\n (d3.geo.bottomley = function() {\r\n var ψ = π / 6, mutate = d3.geo.projectionMutator(bottomleyRaw), projection = mutate(ψ);\r\n projection.variant = function(_) {\r\n return arguments.length ? mutate(ψ = +_) : ψ;\r\n };\r\n return projection;\r\n }).raw = bottomleyRaw;\r\n var bromley = mollweideBromley(1, 4 / π, π);\r\n (d3.geo.bromley = function() {\r\n return projection(bromley);\r\n }).raw = bromley;\r\n function chamberlin(points) {\r\n points = points.map(function(p) {\r\n return [ p[0], p[1], Math.sin(p[1]), Math.cos(p[1]) ];\r\n });\r\n for (var a = points[2], b, i = 0; i < 3; ++i, a = b) {\r\n b = points[i];\r\n a.v = chamberlinDistanceAzimuth(b[1] - a[1], a[3], a[2], b[3], b[2], b[0] - a[0]);\r\n a.point = [ 0, 0 ];\r\n }\r\n var β0 = chamberlinAngle(points[0].v[0], points[2].v[0], points[1].v[0]), β1 = chamberlinAngle(points[0].v[0], points[1].v[0], points[2].v[0]), β2 = π - β0;\r\n points[2].point[1] = 0;\r\n points[0].point[0] = -(points[1].point[0] = .5 * points[0].v[0]);\r\n var mean = [ points[2].point[0] = points[0].point[0] + points[2].v[0] * Math.cos(β0), 2 * (points[0].point[1] = points[1].point[1] = points[2].v[0] * Math.sin(β0)) ];\r\n function forward(λ, φ) {\r\n var sinφ = Math.sin(φ), cosφ = Math.cos(φ), v = new Array(3);\r\n for (var i = 0; i < 3; ++i) {\r\n var p = points[i];\r\n v[i] = chamberlinDistanceAzimuth(φ - p[1], p[3], p[2], cosφ, sinφ, λ - p[0]);\r\n if (!v[i][0]) return p.point;\r\n v[i][1] = chamberlinLongitude(v[i][1] - p.v[1]);\r\n }\r\n var point = mean.slice();\r\n for (var i = 0; i < 3; ++i) {\r\n var j = i == 2 ? 0 : i + 1;\r\n var a = chamberlinAngle(points[i].v[0], v[i][0], v[j][0]);\r\n if (v[i][1] < 0) a = -a;\r\n if (!i) {\r\n point[0] += v[i][0] * Math.cos(a);\r\n point[1] -= v[i][0] * Math.sin(a);\r\n } else if (i == 1) {\r\n a = β1 - a;\r\n point[0] -= v[i][0] * Math.cos(a);\r\n point[1] -= v[i][0] * Math.sin(a);\r\n } else {\r\n a = β2 - a;\r\n point[0] += v[i][0] * Math.cos(a);\r\n point[1] += v[i][0] * Math.sin(a);\r\n }\r\n }\r\n point[0] /= 3, point[1] /= 3;\r\n return point;\r\n }\r\n return forward;\r\n }\r\n function chamberlinProjection() {\r\n var points = [ [ 0, 0 ], [ 0, 0 ], [ 0, 0 ] ], m = projectionMutator(chamberlin), p = m(points), rotate = p.rotate;\r\n delete p.rotate;\r\n p.points = function(_) {\r\n if (!arguments.length) return points;\r\n points = _;\r\n var origin = d3.geo.centroid({\r\n type: \"MultiPoint\",\r\n coordinates: points\r\n }), r = [ -origin[0], -origin[1] ];\r\n rotate.call(p, r);\r\n return m(points.map(d3.geo.rotation(r)).map(chamberlinRadians));\r\n };\r\n return p.points([ [ -150, 55 ], [ -35, 55 ], [ -92.5, 10 ] ]);\r\n }\r\n function chamberlinDistanceAzimuth(dφ, c1, s1, c2, s2, dλ) {\r\n var cosdλ = Math.cos(dλ), r;\r\n if (Math.abs(dφ) > 1 || Math.abs(dλ) > 1) {\r\n r = acos(s1 * s2 + c1 * c2 * cosdλ);\r\n } else {\r\n var sindφ = Math.sin(.5 * dφ), sindλ = Math.sin(.5 * dλ);\r\n r = 2 * asin(Math.sqrt(sindφ * sindφ + c1 * c2 * sindλ * sindλ));\r\n }\r\n if (Math.abs(r) > ε) {\r\n return [ r, Math.atan2(c2 * Math.sin(dλ), c1 * s2 - s1 * c2 * cosdλ) ];\r\n }\r\n return [ 0, 0 ];\r\n }\r\n function chamberlinAngle(b, c, a) {\r\n return acos(.5 * (b * b + c * c - a * a) / (b * c));\r\n }\r\n function chamberlinLongitude(λ) {\r\n return λ - 2 * π * Math.floor((λ + π) / (2 * π));\r\n }\r\n function chamberlinRadians(point) {\r\n return [ point[0] * radians, point[1] * radians ];\r\n }\r\n (d3.geo.chamberlin = chamberlinProjection).raw = chamberlin;\r\n function collignon(λ, φ) {\r\n var α = asqrt(1 - Math.sin(φ));\r\n return [ 2 / sqrtπ * λ * α, sqrtπ * (1 - α) ];\r\n }\r\n collignon.invert = function(x, y) {\r\n var λ = (λ = y / sqrtπ - 1) * λ;\r\n return [ λ > 0 ? x * Math.sqrt(π / λ) / 2 : 0, asin(1 - λ) ];\r\n };\r\n (d3.geo.collignon = function() {\r\n return projection(collignon);\r\n }).raw = collignon;\r\n function craig(φ0) {\r\n var tanφ0 = Math.tan(φ0);\r\n function forward(λ, φ) {\r\n return [ λ, (λ ? λ / Math.sin(λ) : 1) * (Math.sin(φ) * Math.cos(λ) - tanφ0 * Math.cos(φ)) ];\r\n }\r\n forward.invert = tanφ0 ? function(x, y) {\r\n if (x) y *= Math.sin(x) / x;\r\n var cosλ = Math.cos(x);\r\n return [ x, 2 * Math.atan2(Math.sqrt(cosλ * cosλ + tanφ0 * tanφ0 - y * y) - cosλ, tanφ0 - y) ];\r\n } : function(x, y) {\r\n return [ x, asin(x ? y * Math.tan(x) / x : y) ];\r\n };\r\n return forward;\r\n }\r\n (d3.geo.craig = function() {\r\n return parallel1Projection(craig);\r\n }).raw = craig;\r\n function craster(λ, φ) {\r\n var sqrt3 = Math.sqrt(3);\r\n return [ sqrt3 * λ * (2 * Math.cos(2 * φ / 3) - 1) / sqrtπ, sqrt3 * sqrtπ * Math.sin(φ / 3) ];\r\n }\r\n craster.invert = function(x, y) {\r\n var sqrt3 = Math.sqrt(3), φ = 3 * asin(y / (sqrt3 * sqrtπ));\r\n return [ sqrtπ * x / (sqrt3 * (2 * Math.cos(2 * φ / 3) - 1)), φ ];\r\n };\r\n (d3.geo.craster = function() {\r\n return projection(craster);\r\n }).raw = craster;\r\n function cylindricalEqualArea(φ0) {\r\n var cosφ0 = Math.cos(φ0);\r\n function forward(λ, φ) {\r\n return [ λ * cosφ0, Math.sin(φ) / cosφ0 ];\r\n }\r\n forward.invert = function(x, y) {\r\n return [ x / cosφ0, asin(y * cosφ0) ];\r\n };\r\n return forward;\r\n }\r\n (d3.geo.cylindricalEqualArea = function() {\r\n return parallel1Projection(cylindricalEqualArea);\r\n }).raw = cylindricalEqualArea;\r\n function cylindricalStereographic(φ0) {\r\n var cosφ0 = Math.cos(φ0);\r\n function forward(λ, φ) {\r\n return [ λ * cosφ0, (1 + cosφ0) * Math.tan(φ * .5) ];\r\n }\r\n forward.invert = function(x, y) {\r\n return [ x / cosφ0, Math.atan(y / (1 + cosφ0)) * 2 ];\r\n };\r\n return forward;\r\n }\r\n (d3.geo.cylindricalStereographic = function() {\r\n return parallel1Projection(cylindricalStereographic);\r\n }).raw = cylindricalStereographic;\r\n function eckert1(λ, φ) {\r\n var α = Math.sqrt(8 / (3 * π));\r\n return [ α * λ * (1 - Math.abs(φ) / π), α * φ ];\r\n }\r\n eckert1.invert = function(x, y) {\r\n var α = Math.sqrt(8 / (3 * π)), φ = y / α;\r\n return [ x / (α * (1 - Math.abs(φ) / π)), φ ];\r\n };\r\n (d3.geo.eckert1 = function() {\r\n return projection(eckert1);\r\n }).raw = eckert1;\r\n function eckert2(λ, φ) {\r\n var α = Math.sqrt(4 - 3 * Math.sin(Math.abs(φ)));\r\n return [ 2 / Math.sqrt(6 * π) * λ * α, sgn(φ) * Math.sqrt(2 * π / 3) * (2 - α) ];\r\n }\r\n eckert2.invert = function(x, y) {\r\n var α = 2 - Math.abs(y) / Math.sqrt(2 * π / 3);\r\n return [ x * Math.sqrt(6 * π) / (2 * α), sgn(y) * asin((4 - α * α) / 3) ];\r\n };\r\n (d3.geo.eckert2 = function() {\r\n return projection(eckert2);\r\n }).raw = eckert2;\r\n function eckert3(λ, φ) {\r\n var k = Math.sqrt(π * (4 + π));\r\n return [ 2 / k * λ * (1 + Math.sqrt(1 - 4 * φ * φ / (π * π))), 4 / k * φ ];\r\n }\r\n eckert3.invert = function(x, y) {\r\n var k = Math.sqrt(π * (4 + π)) / 2;\r\n return [ x * k / (1 + asqrt(1 - y * y * (4 + π) / (4 * π))), y * k / 2 ];\r\n };\r\n (d3.geo.eckert3 = function() {\r\n return projection(eckert3);\r\n }).raw = eckert3;\r\n function eckert4(λ, φ) {\r\n var k = (2 + halfπ) * Math.sin(φ);\r\n φ /= 2;\r\n for (var i = 0, δ = Infinity; i < 10 && Math.abs(δ) > ε; i++) {\r\n var cosφ = Math.cos(φ);\r\n φ -= δ = (φ + Math.sin(φ) * (cosφ + 2) - k) / (2 * cosφ * (1 + cosφ));\r\n }\r\n return [ 2 / Math.sqrt(π * (4 + π)) * λ * (1 + Math.cos(φ)), 2 * Math.sqrt(π / (4 + π)) * Math.sin(φ) ];\r\n }\r\n eckert4.invert = function(x, y) {\r\n var A = .5 * y * Math.sqrt((4 + π) / π), k = asin(A), c = Math.cos(k);\r\n return [ x / (2 / Math.sqrt(π * (4 + π)) * (1 + c)), asin((k + A * (c + 2)) / (2 + halfπ)) ];\r\n };\r\n (d3.geo.eckert4 = function() {\r\n return projection(eckert4);\r\n }).raw = eckert4;\r\n function eckert5(λ, φ) {\r\n return [ λ * (1 + Math.cos(φ)) / Math.sqrt(2 + π), 2 * φ / Math.sqrt(2 + π) ];\r\n }\r\n eckert5.invert = function(x, y) {\r\n var k = Math.sqrt(2 + π), φ = y * k / 2;\r\n return [ k * x / (1 + Math.cos(φ)), φ ];\r\n };\r\n (d3.geo.eckert5 = function() {\r\n return projection(eckert5);\r\n }).raw = eckert5;\r\n function eckert6(λ, φ) {\r\n var k = (1 + halfπ) * Math.sin(φ);\r\n for (var i = 0, δ = Infinity; i < 10 && Math.abs(δ) > ε; i++) {\r\n φ -= δ = (φ + Math.sin(φ) - k) / (1 + Math.cos(φ));\r\n }\r\n k = Math.sqrt(2 + π);\r\n return [ λ * (1 + Math.cos(φ)) / k, 2 * φ / k ];\r\n }\r\n eckert6.invert = function(x, y) {\r\n var j = 1 + halfπ, k = Math.sqrt(j / 2);\r\n return [ x * 2 * k / (1 + Math.cos(y *= k)), asin((y + Math.sin(y)) / j) ];\r\n };\r\n (d3.geo.eckert6 = function() {\r\n return projection(eckert6);\r\n }).raw = eckert6;\r\n function eisenlohr(λ, φ) {\r\n var s0 = Math.sin(λ /= 2), c0 = Math.cos(λ), k = Math.sqrt(Math.cos(φ)), c1 = Math.cos(φ /= 2), t = Math.sin(φ) / (c1 + Math.SQRT2 * c0 * k), c = Math.sqrt(2 / (1 + t * t)), v = Math.sqrt((Math.SQRT2 * c1 + (c0 + s0) * k) / (Math.SQRT2 * c1 + (c0 - s0) * k));\r\n return [ eisenlohrK * (c * (v - 1 / v) - 2 * Math.log(v)), eisenlohrK * (c * t * (v + 1 / v) - 2 * Math.atan(t)) ];\r\n }\r\n eisenlohr.invert = function(x, y) {\r\n var p = d3.geo.august.raw.invert(x / 1.2, y * 1.065);\r\n if (!p) return null;\r\n var λ = p[0], φ = p[1], i = 20;\r\n x /= eisenlohrK, y /= eisenlohrK;\r\n do {\r\n var _0 = λ / 2, _1 = φ / 2, s0 = Math.sin(_0), c0 = Math.cos(_0), s1 = Math.sin(_1), c1 = Math.cos(_1), cos1 = Math.cos(φ), k = Math.sqrt(cos1), t = s1 / (c1 + Math.SQRT2 * c0 * k), t2 = t * t, c = Math.sqrt(2 / (1 + t2)), v0 = Math.SQRT2 * c1 + (c0 + s0) * k, v1 = Math.SQRT2 * c1 + (c0 - s0) * k, v2 = v0 / v1, v = Math.sqrt(v2), vm1v = v - 1 / v, vp1v = v + 1 / v, fx = c * vm1v - 2 * Math.log(v) - x, fy = c * t * vp1v - 2 * Math.atan(t) - y, δtδλ = s1 && Math.SQRT1_2 * k * s0 * t2 / s1, δtδφ = (Math.SQRT2 * c0 * c1 + k) / (2 * (c1 + Math.SQRT2 * c0 * k) * (c1 + Math.SQRT2 * c0 * k) * k), δcδt = -.5 * t * c * c * c, δcδλ = δcδt * δtδλ, δcδφ = δcδt * δtδφ, A = (A = 2 * c1 + Math.SQRT2 * k * (c0 - s0)) * A * v, δvδλ = (Math.SQRT2 * c0 * c1 * k + cos1) / A, δvδφ = -(Math.SQRT2 * s0 * s1) / (k * A), δxδλ = vm1v * δcδλ - 2 * δvδλ / v + c * (δvδλ + δvδλ / v2), δxδφ = vm1v * δcδφ - 2 * δvδφ / v + c * (δvδφ + δvδφ / v2), δyδλ = t * vp1v * δcδλ - 2 * δtδλ / (1 + t2) + c * vp1v * δtδλ + c * t * (δvδλ - δvδλ / v2), δyδφ = t * vp1v * δcδφ - 2 * δtδφ / (1 + t2) + c * vp1v * δtδφ + c * t * (δvδφ - δvδφ / v2), denominator = δxδφ * δyδλ - δyδφ * δxδλ;\r\n if (!denominator) break;\r\n var δλ = (fy * δxδφ - fx * δyδφ) / denominator, δφ = (fx * δyδλ - fy * δxδλ) / denominator;\r\n λ -= δλ;\r\n φ = Math.max(-halfπ, Math.min(halfπ, φ - δφ));\r\n } while ((Math.abs(δλ) > ε || Math.abs(δφ) > ε) && --i > 0);\r\n return Math.abs(Math.abs(φ) - halfπ) < ε ? [ 0, φ ] : i && [ λ, φ ];\r\n };\r\n var eisenlohrK = 3 + 2 * Math.SQRT2;\r\n (d3.geo.eisenlohr = function() {\r\n return projection(eisenlohr);\r\n }).raw = eisenlohr;\r\n function fahey(λ, φ) {\r\n var t = Math.tan(φ / 2);\r\n return [ λ * faheyK * asqrt(1 - t * t), (1 + faheyK) * t ];\r\n }\r\n fahey.invert = function(x, y) {\r\n var t = y / (1 + faheyK);\r\n return [ x ? x / (faheyK * asqrt(1 - t * t)) : 0, 2 * Math.atan(t) ];\r\n };\r\n var faheyK = Math.cos(35 * radians);\r\n (d3.geo.fahey = function() {\r\n return projection(fahey);\r\n }).raw = fahey;\r\n function foucaut(λ, φ) {\r\n var k = φ / 2, cosk = Math.cos(k);\r\n return [ 2 * λ / sqrtπ * Math.cos(φ) * cosk * cosk, sqrtπ * Math.tan(k) ];\r\n }\r\n foucaut.invert = function(x, y) {\r\n var k = Math.atan(y / sqrtπ), cosk = Math.cos(k), φ = 2 * k;\r\n return [ x * sqrtπ * .5 / (Math.cos(φ) * cosk * cosk), φ ];\r\n };\r\n (d3.geo.foucaut = function() {\r\n return projection(foucaut);\r\n }).raw = foucaut;\r\n d3.geo.gilbert = function(projection) {\r\n var e = d3.geo.equirectangular().scale(degrees).translate([ 0, 0 ]);\r\n function gilbert(coordinates) {\r\n return projection([ coordinates[0] * .5, asin(Math.tan(coordinates[1] * .5 * radians)) * degrees ]);\r\n }\r\n if (projection.invert) gilbert.invert = function(coordinates) {\r\n coordinates = projection.invert(coordinates);\r\n coordinates[0] *= 2;\r\n coordinates[1] = 2 * Math.atan(Math.sin(coordinates[1] * radians)) * degrees;\r\n return coordinates;\r\n };\r\n gilbert.stream = function(stream) {\r\n stream = projection.stream(stream);\r\n var s = e.stream({\r\n point: function(λ, φ) {\r\n stream.point(λ * .5, asin(Math.tan(-φ * .5 * radians)) * degrees);\r\n },\r\n lineStart: function() {\r\n stream.lineStart();\r\n },\r\n lineEnd: function() {\r\n stream.lineEnd();\r\n },\r\n polygonStart: function() {\r\n stream.polygonStart();\r\n },\r\n polygonEnd: function() {\r\n stream.polygonEnd();\r\n }\r\n });\r\n s.sphere = function() {\r\n stream.sphere();\r\n };\r\n s.valid = false;\r\n return s;\r\n };\r\n return gilbert;\r\n };\r\n var gingeryAzimuthalEquidistant = d3.geo.azimuthalEquidistant.raw;\r\n function gingery(ρ, n) {\r\n var k = 2 * π / n, ρ2 = ρ * ρ;\r\n function forward(λ, φ) {\r\n var p = gingeryAzimuthalEquidistant(λ, φ), x = p[0], y = p[1], r2 = x * x + y * y;\r\n if (r2 > ρ2) {\r\n var r = Math.sqrt(r2), θ = Math.atan2(y, x), θ0 = k * Math.round(θ / k), α = θ - θ0, ρcosα = ρ * Math.cos(α), k_ = (ρ * Math.sin(α) - α * Math.sin(ρcosα)) / (halfπ - ρcosα), s_ = arcLength_(α, k_), e = (π - ρ) / gingeryIntegrate(s_, ρcosα, π);\r\n x = r;\r\n var i = 50, δ;\r\n do {\r\n x -= δ = (ρ + gingeryIntegrate(s_, ρcosα, x) * e - r) / (s_(x) * e);\r\n } while (Math.abs(δ) > ε && --i > 0);\r\n y = α * Math.sin(x);\r\n if (x < halfπ) y -= k_ * (x - halfπ);\r\n var s = Math.sin(θ0), c = Math.cos(θ0);\r\n p[0] = x * c - y * s;\r\n p[1] = x * s + y * c;\r\n }\r\n return p;\r\n }\r\n forward.invert = function(x, y) {\r\n var r2 = x * x + y * y;\r\n if (r2 > ρ2) {\r\n var r = Math.sqrt(r2), θ = Math.atan2(y, x), θ0 = k * Math.round(θ / k), dθ = θ - θ0, x = r * Math.cos(dθ);\r\n y = r * Math.sin(dθ);\r\n var x_halfπ = x - halfπ, sinx = Math.sin(x), α = y / sinx, δ = x < halfπ ? Infinity : 0, i = 10;\r\n while (true) {\r\n var ρsinα = ρ * Math.sin(α), ρcosα = ρ * Math.cos(α), sinρcosα = Math.sin(ρcosα), halfπ_ρcosα = halfπ - ρcosα, k_ = (ρsinα - α * sinρcosα) / halfπ_ρcosα, s_ = arcLength_(α, k_);\r\n if (Math.abs(δ) < ε2 || !--i) break;\r\n α -= δ = (α * sinx - k_ * x_halfπ - y) / (sinx - x_halfπ * 2 * (halfπ_ρcosα * (ρcosα + α * ρsinα * Math.cos(ρcosα) - sinρcosα) - ρsinα * (ρsinα - α * sinρcosα)) / (halfπ_ρcosα * halfπ_ρcosα));\r\n }\r\n r = ρ + gingeryIntegrate(s_, ρcosα, x) * (π - ρ) / gingeryIntegrate(s_, ρcosα, π);\r\n θ = θ0 + α;\r\n x = r * Math.cos(θ);\r\n y = r * Math.sin(θ);\r\n }\r\n return gingeryAzimuthalEquidistant.invert(x, y);\r\n };\r\n return forward;\r\n }\r\n function arcLength_(α, k) {\r\n return function(x) {\r\n var y_ = α * Math.cos(x);\r\n if (x < halfπ) y_ -= k;\r\n return Math.sqrt(1 + y_ * y_);\r\n };\r\n }\r\n function gingeryProjection() {\r\n var n = 6, ρ = 30 * radians, cρ = Math.cos(ρ), sρ = Math.sin(ρ), m = projectionMutator(gingery), p = m(ρ, n), stream_ = p.stream, ε = .01, cr = -Math.cos(ε * radians), sr = Math.sin(ε * radians);\r\n p.radius = function(_) {\r\n if (!arguments.length) return ρ * degrees;\r\n cρ = Math.cos(ρ = _ * radians);\r\n sρ = Math.sin(ρ);\r\n return m(ρ, n);\r\n };\r\n p.lobes = function(_) {\r\n if (!arguments.length) return n;\r\n return m(ρ, n = +_);\r\n };\r\n p.stream = function(stream) {\r\n var rotate = p.rotate(), rotateStream = stream_(stream), sphereStream = (p.rotate([ 0, 0 ]), \r\n stream_(stream));\r\n p.rotate(rotate);\r\n rotateStream.sphere = function() {\r\n sphereStream.polygonStart(), sphereStream.lineStart();\r\n for (var i = 0, δ = 2 * π / n, φ = 0; i < n; ++i, φ -= δ) {\r\n sphereStream.point(Math.atan2(sr * Math.cos(φ), cr) * degrees, Math.asin(sr * Math.sin(φ)) * degrees);\r\n sphereStream.point(Math.atan2(sρ * Math.cos(φ - δ / 2), cρ) * degrees, Math.asin(sρ * Math.sin(φ - δ / 2)) * degrees);\r\n }\r\n sphereStream.lineEnd(), sphereStream.polygonEnd();\r\n };\r\n return rotateStream;\r\n };\r\n return p;\r\n }\r\n function gingeryIntegrate(f, a, b) {\r\n var n = 50, h = (b - a) / n, s = f(a) + f(b);\r\n for (var i = 1, x = a; i < n; ++i) s += 2 * f(x += h);\r\n return s * .5 * h;\r\n }\r\n (d3.geo.gingery = gingeryProjection).raw = gingery;\r\n function ginzburgPolyconic(a, b, c, d, e, f, g, h) {\r\n if (arguments.length < 8) h = 0;\r\n function forward(λ, φ) {\r\n if (!φ) return [ a * λ / π, 0 ];\r\n var φ2 = φ * φ, xB = a + φ2 * (b + φ2 * (c + φ2 * d)), yB = φ * (e - 1 + φ2 * (f - h + φ2 * g)), m = (xB * xB + yB * yB) / (2 * yB), α = λ * Math.asin(xB / m) / π;\r\n return [ m * Math.sin(α), φ * (1 + φ2 * h) + m * (1 - Math.cos(α)) ];\r\n }\r\n forward.invert = function(x, y) {\r\n var λ = π * x / a, φ = y, δλ, δφ, i = 50;\r\n do {\r\n var φ2 = φ * φ, xB = a + φ2 * (b + φ2 * (c + φ2 * d)), yB = φ * (e - 1 + φ2 * (f - h + φ2 * g)), p = xB * xB + yB * yB, q = 2 * yB, m = p / q, m2 = m * m, dαdλ = Math.asin(xB / m) / π, α = λ * dαdλ;\r\n xB2 = xB * xB, dxBdφ = (2 * b + φ2 * (4 * c + φ2 * 6 * d)) * φ, dyBdφ = e + φ2 * (3 * f + φ2 * 5 * g), \r\n dpdφ = 2 * (xB * dxBdφ + yB * (dyBdφ - 1)), dqdφ = 2 * (dyBdφ - 1), dmdφ = (dpdφ * q - p * dqdφ) / (q * q), \r\n cosα = Math.cos(α), sinα = Math.sin(α), mcosα = m * cosα, msinα = m * sinα, dαdφ = λ / π * (1 / asqrt(1 - xB2 / m2)) * (dxBdφ * m - xB * dmdφ) / m2, \r\n fx = msinα - x, fy = φ * (1 + φ2 * h) + m - mcosα - y, δxδφ = dmdφ * sinα + mcosα * dαdφ, \r\n δxδλ = mcosα * dαdλ, δyδφ = 1 + dmdφ - (dmdφ * cosα - msinα * dαdφ), δyδλ = msinα * dαdλ, \r\n denominator = δxδφ * δyδλ - δyδφ * δxδλ;\r\n if (!denominator) break;\r\n λ -= δλ = (fy * δxδφ - fx * δyδφ) / denominator;\r\n φ -= δφ = (fx * δyδλ - fy * δxδλ) / denominator;\r\n } while ((Math.abs(δλ) > ε || Math.abs(δφ) > ε) && --i > 0);\r\n return [ λ, φ ];\r\n };\r\n return forward;\r\n }\r\n var ginzburg4 = ginzburgPolyconic(2.8284, -1.6988, .75432, -.18071, 1.76003, -.38914, .042555);\r\n (d3.geo.ginzburg4 = function() {\r\n return projection(ginzburg4);\r\n }).raw = ginzburg4;\r\n var ginzburg5 = ginzburgPolyconic(2.583819, -.835827, .170354, -.038094, 1.543313, -.411435, .082742);\r\n (d3.geo.ginzburg5 = function() {\r\n return projection(ginzburg5);\r\n }).raw = ginzburg5;\r\n var ginzburg6 = ginzburgPolyconic(5 / 6 * π, -.62636, -.0344, 0, 1.3493, -.05524, 0, .045);\r\n (d3.geo.ginzburg6 = function() {\r\n return projection(ginzburg6);\r\n }).raw = ginzburg6;\r\n function ginzburg8(λ, φ) {\r\n var λ2 = λ * λ, φ2 = φ * φ;\r\n return [ λ * (1 - .162388 * φ2) * (.87 - 952426e-9 * λ2 * λ2), φ * (1 + φ2 / 12) ];\r\n }\r\n ginzburg8.invert = function(x, y) {\r\n var λ = x, φ = y, i = 50, δ;\r\n do {\r\n var φ2 = φ * φ;\r\n φ -= δ = (φ * (1 + φ2 / 12) - y) / (1 + φ2 / 4);\r\n } while (Math.abs(δ) > ε && --i > 0);\r\n i = 50;\r\n x /= 1 - .162388 * φ2;\r\n do {\r\n var λ4 = (λ4 = λ * λ) * λ4;\r\n λ -= δ = (λ * (.87 - 952426e-9 * λ4) - x) / (.87 - .00476213 * λ4);\r\n } while (Math.abs(δ) > ε && --i > 0);\r\n return [ λ, φ ];\r\n };\r\n (d3.geo.ginzburg8 = function() {\r\n return projection(ginzburg8);\r\n }).raw = ginzburg8;\r\n var ginzburg9 = ginzburgPolyconic(2.6516, -.76534, .19123, -.047094, 1.36289, -.13965, .031762);\r\n (d3.geo.ginzburg9 = function() {\r\n return projection(ginzburg9);\r\n }).raw = ginzburg9;\r\n function quincuncialProjection(projectHemisphere) {\r\n var dx = projectHemisphere(halfπ, 0)[0] - projectHemisphere(-halfπ, 0)[0];\r\n function projection() {\r\n var quincuncial = false, m = projectionMutator(projectAt), p = m(quincuncial);\r\n p.quincuncial = function(_) {\r\n if (!arguments.length) return quincuncial;\r\n return m(quincuncial = !!_);\r\n };\r\n return p;\r\n }\r\n function projectAt(quincuncial) {\r\n var forward = quincuncial ? function(λ, φ) {\r\n var t = Math.abs(λ) < halfπ, p = projectHemisphere(t ? λ : λ > 0 ? λ - π : λ + π, φ);\r\n var x = (p[0] - p[1]) * Math.SQRT1_2, y = (p[0] + p[1]) * Math.SQRT1_2;\r\n if (t) return [ x, y ];\r\n var d = dx * Math.SQRT1_2, s = x > 0 ^ y > 0 ? -1 : 1;\r\n return [ s * x - sgn(y) * d, s * y - sgn(x) * d ];\r\n } : function(λ, φ) {\r\n var s = λ > 0 ? -.5 : .5, point = projectHemisphere(λ + s * π, φ);\r\n point[0] -= s * dx;\r\n return point;\r\n };\r\n if (projectHemisphere.invert) forward.invert = quincuncial ? function(x0, y0) {\r\n var x = (x0 + y0) * Math.SQRT1_2, y = (y0 - x0) * Math.SQRT1_2, t = Math.abs(x) < .5 * dx && Math.abs(y) < .5 * dx;\r\n if (!t) {\r\n var d = dx * Math.SQRT1_2, s = x > 0 ^ y > 0 ? -1 : 1, x1 = -s * (x0 + (y > 0 ? 1 : -1) * d), y1 = -s * (y0 + (x > 0 ? 1 : -1) * d);\r\n x = (-x1 - y1) * Math.SQRT1_2;\r\n y = (x1 - y1) * Math.SQRT1_2;\r\n }\r\n var p = projectHemisphere.invert(x, y);\r\n if (!t) p[0] += x > 0 ? π : -π;\r\n return p;\r\n } : function(x, y) {\r\n var s = x > 0 ? -.5 : .5, location = projectHemisphere.invert(x + s * dx, y), λ = location[0] - s * π;\r\n if (λ < -π) λ += 2 * π; else if (λ > π) λ -= 2 * π;\r\n location[0] = λ;\r\n return location;\r\n };\r\n return forward;\r\n }\r\n projection.raw = projectAt;\r\n return projection;\r\n }\r\n function gringorten(λ, φ) {\r\n var sλ = sgn(λ), sφ = sgn(φ), cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(sφ * φ);\r\n λ = Math.abs(Math.atan2(y, z));\r\n φ = asin(x);\r\n if (Math.abs(λ - halfπ) > ε) λ %= halfπ;\r\n var point = gringortenHexadecant(λ > π / 4 ? halfπ - λ : λ, φ);\r\n if (λ > π / 4) z = point[0], point[0] = -point[1], point[1] = -z;\r\n return point[0] *= sλ, point[1] *= -sφ, point;\r\n }\r\n gringorten.invert = function(x, y) {\r\n var sx = sgn(x), sy = sgn(y), x0 = -sx * x, y0 = -sy * y, t = y0 / x0 < 1, p = gringortenHexadecantInvert(t ? y0 : x0, t ? x0 : y0), λ = p[0], φ = p[1];\r\n if (t) λ = -halfπ - λ;\r\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ);\r\n return [ sx * (Math.atan2(y, -z) + π), sy * asin(x) ];\r\n };\r\n function gringortenHexadecant(λ, φ) {\r\n if (φ === halfπ) return [ 0, 0 ];\r\n var sinφ = Math.sin(φ), r = sinφ * sinφ, r2 = r * r, j = 1 + r2, k = 1 + 3 * r2, q = 1 - r2, z = asin(1 / Math.sqrt(j)), v = q + r * j * z, p2 = (1 - sinφ) / v, p = Math.sqrt(p2), a2 = p2 * j, a = Math.sqrt(a2), h = p * q;\r\n if (λ === 0) return [ 0, -(h + r * a) ];\r\n var cosφ = Math.cos(φ), secφ = 1 / cosφ, drdφ = 2 * sinφ * cosφ, dvdφ = (-3 * r + z * k) * drdφ, dp2dφ = (-v * cosφ - (1 - sinφ) * dvdφ) / (v * v), dpdφ = .5 * dp2dφ / p, dhdφ = q * dpdφ - 2 * r * p * drdφ, dra2dφ = r * j * dp2dφ + p2 * k * drdφ, μ = -secφ * drdφ, ν = -secφ * dra2dφ, ζ = -2 * secφ * dhdφ, Λ = 4 * λ / π;\r\n if (λ > .222 * π || φ < π / 4 && λ > .175 * π) {\r\n var x = (h + r * asqrt(a2 * (1 + r2) - h * h)) / (1 + r2);\r\n if (λ > π / 4) return [ x, x ];\r\n var x1 = x, x0 = .5 * x, i = 50;\r\n x = .5 * (x0 + x1);\r\n do {\r\n var g = Math.sqrt(a2 - x * x), f = x * (ζ + μ * g) + ν * asin(x / a) - Λ;\r\n if (!f) break;\r\n if (f < 0) x0 = x; else x1 = x;\r\n x = .5 * (x0 + x1);\r\n } while (Math.abs(x1 - x0) > ε && --i > 0);\r\n } else {\r\n var x = ε, i = 25, δ;\r\n do {\r\n var x2 = x * x, g = asqrt(a2 - x2), ζμg = ζ + μ * g, f = x * ζμg + ν * asin(x / a) - Λ, df = ζμg + (ν - μ * x2) / g;\r\n x -= δ = g ? f / df : 0;\r\n } while (Math.abs(δ) > ε && --i > 0);\r\n }\r\n return [ x, -h - r * asqrt(a2 - x * x) ];\r\n }\r\n function gringortenHexadecantInvert(x, y) {\r\n var x0 = 0, x1 = 1, r = .5, i = 50;\r\n while (true) {\r\n var r2 = r * r, sinφ = Math.sqrt(r), z = Math.asin(1 / Math.sqrt(1 + r2)), v = 1 - r2 + r * (1 + r2) * z, p2 = (1 - sinφ) / v, p = Math.sqrt(p2), a2 = p2 * (1 + r2), h = p * (1 - r2), g2 = a2 - x * x, g = Math.sqrt(g2), y0 = y + h + r * g;\r\n if (Math.abs(x1 - x0) < ε2 || --i === 0 || y0 === 0) break;\r\n if (y0 > 0) x0 = r; else x1 = r;\r\n r = .5 * (x0 + x1);\r\n }\r\n if (!i) return null;\r\n var φ = Math.asin(sinφ), cosφ = Math.cos(φ), secφ = 1 / cosφ, drdφ = 2 * sinφ * cosφ, dvdφ = (-3 * r + z * (1 + 3 * r2)) * drdφ, dp2dφ = (-v * cosφ - (1 - sinφ) * dvdφ) / (v * v), dpdφ = .5 * dp2dφ / p, dhdφ = (1 - r2) * dpdφ - 2 * r * p * drdφ, ζ = -2 * secφ * dhdφ, μ = -secφ * drdφ, ν = -secφ * (r * (1 + r2) * dp2dφ + p2 * (1 + 3 * r2) * drdφ);\r\n return [ π / 4 * (x * (ζ + μ * g) + ν * Math.asin(x / Math.sqrt(a2))), φ ];\r\n }\r\n d3.geo.gringorten = quincuncialProjection(gringorten);\r\n function ellipticJi(u, v, m) {\r\n if (!u) {\r\n var b = ellipticJ(v, 1 - m);\r\n return [ [ 0, b[0] / b[1] ], [ 1 / b[1], 0 ], [ b[2] / b[1], 0 ] ];\r\n }\r\n var a = ellipticJ(u, m);\r\n if (!v) return [ [ a[0], 0 ], [ a[1], 0 ], [ a[2], 0 ] ];\r\n var b = ellipticJ(v, 1 - m), denominator = b[1] * b[1] + m * a[0] * a[0] * b[0] * b[0];\r\n return [ [ a[0] * b[2] / denominator, a[1] * a[2] * b[0] * b[1] / denominator ], [ a[1] * b[1] / denominator, -a[0] * a[2] * b[0] * b[2] / denominator ], [ a[2] * b[1] * b[2] / denominator, -m * a[0] * a[1] * b[0] / denominator ] ];\r\n }\r\n function ellipticJ(u, m) {\r\n var ai, b, φ, t, twon;\r\n if (m < ε) {\r\n t = Math.sin(u);\r\n b = Math.cos(u);\r\n ai = .25 * m * (u - t * b);\r\n return [ t - ai * b, b + ai * t, 1 - .5 * m * t * t, u - ai ];\r\n }\r\n if (m >= 1 - ε) {\r\n ai = .25 * (1 - m);\r\n b = cosh(u);\r\n t = tanh(u);\r\n φ = 1 / b;\r\n twon = b * sinh(u);\r\n return [ t + ai * (twon - u) / (b * b), φ - ai * t * φ * (twon - u), φ + ai * t * φ * (twon + u), 2 * Math.atan(Math.exp(u)) - halfπ + ai * (twon - u) / b ];\r\n }\r\n var a = [ 1, 0, 0, 0, 0, 0, 0, 0, 0 ], c = [ Math.sqrt(m), 0, 0, 0, 0, 0, 0, 0, 0 ], i = 0;\r\n b = Math.sqrt(1 - m);\r\n twon = 1;\r\n while (Math.abs(c[i] / a[i]) > ε && i < 8) {\r\n ai = a[i++];\r\n c[i] = .5 * (ai - b);\r\n a[i] = .5 * (ai + b);\r\n b = asqrt(ai * b);\r\n twon *= 2;\r\n }\r\n φ = twon * a[i] * u;\r\n do {\r\n t = c[i] * Math.sin(b = φ) / a[i];\r\n φ = .5 * (asin(t) + φ);\r\n } while (--i);\r\n return [ Math.sin(φ), t = Math.cos(φ), t / Math.cos(φ - b), φ ];\r\n }\r\n function ellipticFi(φ, ψ, m) {\r\n var r = Math.abs(φ), i = Math.abs(ψ), sinhψ = sinh(i);\r\n if (r) {\r\n var cscφ = 1 / Math.sin(r), cotφ2 = 1 / (Math.tan(r) * Math.tan(r)), b = -(cotφ2 + m * sinhψ * sinhψ * cscφ * cscφ - 1 + m), c = (m - 1) * cotφ2, cotλ2 = .5 * (-b + Math.sqrt(b * b - 4 * c));\r\n return [ ellipticF(Math.atan(1 / Math.sqrt(cotλ2)), m) * sgn(φ), ellipticF(Math.atan(asqrt((cotλ2 / cotφ2 - 1) / m)), 1 - m) * sgn(ψ) ];\r\n }\r\n return [ 0, ellipticF(Math.atan(sinhψ), 1 - m) * sgn(ψ) ];\r\n }\r\n function ellipticF(φ, m) {\r\n if (!m) return φ;\r\n if (m === 1) return Math.log(Math.tan(φ / 2 + π / 4));\r\n var a = 1, b = Math.sqrt(1 - m), c = Math.sqrt(m);\r\n for (var i = 0; Math.abs(c) > ε; i++) {\r\n if (φ % π) {\r\n var dφ = Math.atan(b * Math.tan(φ) / a);\r\n if (dφ < 0) dφ += π;\r\n φ += dφ + ~~(φ / π) * π;\r\n } else φ += φ;\r\n c = (a + b) / 2;\r\n b = Math.sqrt(a * b);\r\n c = ((a = c) - b) / 2;\r\n }\r\n return φ / (Math.pow(2, i) * a);\r\n }\r\n function guyou(λ, φ) {\r\n var k_ = (Math.SQRT2 - 1) / (Math.SQRT2 + 1), k = Math.sqrt(1 - k_ * k_), K = ellipticF(halfπ, k * k), f = -1;\r\n var ψ = Math.log(Math.tan(π / 4 + Math.abs(φ) / 2)), r = Math.exp(f * ψ) / Math.sqrt(k_), at = guyouComplexAtan(r * Math.cos(f * λ), r * Math.sin(f * λ)), t = ellipticFi(at[0], at[1], k * k);\r\n return [ -t[1], (φ >= 0 ? 1 : -1) * (.5 * K - t[0]) ];\r\n }\r\n function guyouComplexAtan(x, y) {\r\n var x2 = x * x, y_1 = y + 1, t = 1 - x2 - y * y;\r\n return [ .5 * ((x >= 0 ? halfπ : -halfπ) - Math.atan2(t, 2 * x)), -.25 * Math.log(t * t + 4 * x2) + .5 * Math.log(y_1 * y_1 + x2) ];\r\n }\r\n function guyouComplexDivide(a, b) {\r\n var denominator = b[0] * b[0] + b[1] * b[1];\r\n return [ (a[0] * b[0] + a[1] * b[1]) / denominator, (a[1] * b[0] - a[0] * b[1]) / denominator ];\r\n }\r\n guyou.invert = function(x, y) {\r\n var k_ = (Math.SQRT2 - 1) / (Math.SQRT2 + 1), k = Math.sqrt(1 - k_ * k_), K = ellipticF(halfπ, k * k), f = -1;\r\n var j = ellipticJi(.5 * K - y, -x, k * k), tn = guyouComplexDivide(j[0], j[1]), λ = Math.atan2(tn[1], tn[0]) / f;\r\n return [ λ, 2 * Math.atan(Math.exp(.5 / f * Math.log(k_ * tn[0] * tn[0] + k_ * tn[1] * tn[1]))) - halfπ ];\r\n };\r\n d3.geo.guyou = quincuncialProjection(guyou);\r\n function hammerRetroazimuthal(φ0) {\r\n var sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), rotate = hammerRetroazimuthalRotation(φ0);\r\n rotate.invert = hammerRetroazimuthalRotation(-φ0);\r\n function forward(λ, φ) {\r\n var p = rotate(λ, φ);\r\n λ = p[0], φ = p[1];\r\n var sinφ = Math.sin(φ), cosφ = Math.cos(φ), cosλ = Math.cos(λ), z = acos(sinφ0 * sinφ + cosφ0 * cosφ * cosλ), sinz = Math.sin(z), K = Math.abs(sinz) > ε ? z / sinz : 1;\r\n return [ K * cosφ0 * Math.sin(λ), (Math.abs(λ) > halfπ ? K : -K) * (sinφ0 * cosφ - cosφ0 * sinφ * cosλ) ];\r\n }\r\n forward.invert = function(x, y) {\r\n var ρ = Math.sqrt(x * x + y * y), sinz = -Math.sin(ρ), cosz = Math.cos(ρ), a = ρ * cosz, b = -y * sinz, c = ρ * sinφ0, d = asqrt(a * a + b * b - c * c), φ = Math.atan2(a * c + b * d, b * c - a * d), λ = (ρ > halfπ ? -1 : 1) * Math.atan2(x * sinz, ρ * Math.cos(φ) * cosz + y * Math.sin(φ) * sinz);\r\n return rotate.invert(λ, φ);\r\n };\r\n return forward;\r\n }\r\n function hammerRetroazimuthalRotation(φ0) {\r\n var sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0);\r\n return function(λ, φ) {\r\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ);\r\n return [ Math.atan2(y, x * cosφ0 - z * sinφ0), asin(z * cosφ0 + x * sinφ0) ];\r\n };\r\n }\r\n function hammerRetroazimuthalProjection() {\r\n var φ0 = 0, m = projectionMutator(hammerRetroazimuthal), p = m(φ0), rotate_ = p.rotate, stream_ = p.stream, circle = d3.geo.circle();\r\n p.parallel = function(_) {\r\n if (!arguments.length) return φ0 / π * 180;\r\n var r = p.rotate();\r\n return m(φ0 = _ * π / 180).rotate(r);\r\n };\r\n p.rotate = function(_) {\r\n if (!arguments.length) return _ = rotate_.call(p), _[1] += φ0 / π * 180, _;\r\n rotate_.call(p, [ _[0], _[1] - φ0 / π * 180 ]);\r\n circle.origin([ -_[0], -_[1] ]);\r\n return p;\r\n };\r\n p.stream = function(stream) {\r\n stream = stream_(stream);\r\n stream.sphere = function() {\r\n stream.polygonStart();\r\n var ε = .01, ring = circle.angle(90 - ε)().coordinates[0], n = ring.length - 1, i = -1, p;\r\n stream.lineStart();\r\n while (++i < n) stream.point((p = ring[i])[0], p[1]);\r\n stream.lineEnd();\r\n ring = circle.angle(90 + ε)().coordinates[0];\r\n n = ring.length - 1;\r\n stream.lineStart();\r\n while (--i >= 0) stream.point((p = ring[i])[0], p[1]);\r\n stream.lineEnd();\r\n stream.polygonEnd();\r\n };\r\n return stream;\r\n };\r\n return p;\r\n }\r\n (d3.geo.hammerRetroazimuthal = hammerRetroazimuthalProjection).raw = hammerRetroazimuthal;\r\n var hammerAzimuthalEqualArea = d3.geo.azimuthalEqualArea.raw;\r\n function hammer(A, B) {\r\n if (arguments.length < 2) B = A;\r\n if (B === 1) return hammerAzimuthalEqualArea;\r\n if (B === Infinity) return hammerQuarticAuthalic;\r\n function forward(λ, φ) {\r\n var coordinates = hammerAzimuthalEqualArea(λ / B, φ);\r\n coordinates[0] *= A;\r\n return coordinates;\r\n }\r\n forward.invert = function(x, y) {\r\n var coordinates = hammerAzimuthalEqualArea.invert(x / A, y);\r\n coordinates[0] *= B;\r\n return coordinates;\r\n };\r\n return forward;\r\n }\r\n function hammerProjection() {\r\n var B = 2, m = projectionMutator(hammer), p = m(B);\r\n p.coefficient = function(_) {\r\n if (!arguments.length) return B;\r\n return m(B = +_);\r\n };\r\n return p;\r\n }\r\n function hammerQuarticAuthalic(λ, φ) {\r\n return [ λ * Math.cos(φ) / Math.cos(φ /= 2), 2 * Math.sin(φ) ];\r\n }\r\n hammerQuarticAuthalic.invert = function(x, y) {\r\n var φ = 2 * asin(y / 2);\r\n return [ x * Math.cos(φ / 2) / Math.cos(φ), φ ];\r\n };\r\n (d3.geo.hammer = hammerProjection).raw = hammer;\r\n function hatano(λ, φ) {\r\n var c = Math.sin(φ) * (φ < 0 ? 2.43763 : 2.67595);\r\n for (var i = 0, δ; i < 20; i++) {\r\n φ -= δ = (φ + Math.sin(φ) - c) / (1 + Math.cos(φ));\r\n if (Math.abs(δ) < ε) break;\r\n }\r\n return [ .85 * λ * Math.cos(φ *= .5), Math.sin(φ) * (φ < 0 ? 1.93052 : 1.75859) ];\r\n }\r\n hatano.invert = function(x, y) {\r\n var θ = Math.abs(θ = y * (y < 0 ? .5179951515653813 : .5686373742600607)) > 1 - ε ? θ > 0 ? halfπ : -halfπ : asin(θ);\r\n return [ 1.1764705882352942 * x / Math.cos(θ), Math.abs(θ = ((θ += θ) + Math.sin(θ)) * (y < 0 ? .4102345310814193 : .3736990601468637)) > 1 - ε ? θ > 0 ? halfπ : -halfπ : asin(θ) ];\r\n };\r\n (d3.geo.hatano = function() {\r\n return projection(hatano);\r\n }).raw = hatano;\r\n var healpixParallel = 41 + 48 / 36 + 37 / 3600;\r\n function healpix(h) {\r\n var lambert = d3.geo.cylindricalEqualArea.raw(0), φ0 = healpixParallel * π / 180, dx0 = 2 * π, dx1 = d3.geo.collignon.raw(π, φ0)[0] - d3.geo.collignon.raw(-π, φ0)[0], y0 = lambert(0, φ0)[1], y1 = d3.geo.collignon.raw(0, φ0)[1], dy1 = d3.geo.collignon.raw(0, halfπ)[1] - y1, k = 2 * π / h;\r\n function forward(λ, φ) {\r\n var point, φ2 = Math.abs(φ);\r\n if (φ2 > φ0) {\r\n var i = Math.min(h - 1, Math.max(0, Math.floor((λ + π) / k)));\r\n λ += π * (h - 1) / h - i * k;\r\n point = d3.geo.collignon.raw(λ, φ2);\r\n point[0] = point[0] * dx0 / dx1 - dx0 * (h - 1) / (2 * h) + i * dx0 / h;\r\n point[1] = y0 + (point[1] - y1) * 4 * dy1 / dx0;\r\n if (φ < 0) point[1] = -point[1];\r\n } else {\r\n point = lambert(λ, φ);\r\n }\r\n point[0] /= 2;\r\n return point;\r\n }\r\n forward.invert = function(x, y) {\r\n x *= 2;\r\n var y2 = Math.abs(y);\r\n if (y2 > y0) {\r\n var i = Math.min(h - 1, Math.max(0, Math.floor((x + π) / k)));\r\n x = (x + π * (h - 1) / h - i * k) * dx1 / dx0;\r\n var point = d3.geo.collignon.raw.invert(x, .25 * (y2 - y0) * dx0 / dy1 + y1);\r\n point[0] -= π * (h - 1) / h - i * k;\r\n if (y < 0) point[1] = -point[1];\r\n return point;\r\n }\r\n return lambert.invert(x, y);\r\n };\r\n return forward;\r\n }\r\n function healpixProjection() {\r\n var n = 2, m = projectionMutator(healpix), p = m(n), stream_ = p.stream;\r\n p.lobes = function(_) {\r\n if (!arguments.length) return n;\r\n return m(n = +_);\r\n };\r\n p.stream = function(stream) {\r\n var rotate = p.rotate(), rotateStream = stream_(stream), sphereStream = (p.rotate([ 0, 0 ]), \r\n stream_(stream));\r\n p.rotate(rotate);\r\n rotateStream.sphere = function() {\r\n d3.geo.stream(sphere(), sphereStream);\r\n };\r\n return rotateStream;\r\n };\r\n function sphere() {\r\n var step = 180 / n;\r\n return {\r\n type: \"Polygon\",\r\n coordinates: [ d3.range(-180, 180 + step / 2, step).map(function(x, i) {\r\n return [ x, i & 1 ? 90 - 1e-6 : healpixParallel ];\r\n }).concat(d3.range(180, -180 - step / 2, -step).map(function(x, i) {\r\n return [ x, i & 1 ? -90 + 1e-6 : -healpixParallel ];\r\n })) ]\r\n };\r\n }\r\n return p;\r\n }\r\n (d3.geo.healpix = healpixProjection).raw = healpix;\r\n function hill(K) {\r\n var L = 1 + K, sinβ = Math.sin(1 / L), β = asin(sinβ), A = 2 * Math.sqrt(π / (B = π + 4 * β * L)), B, ρ0 = .5 * A * (L + Math.sqrt(K * (2 + K))), K2 = K * K, L2 = L * L;\r\n function forward(λ, φ) {\r\n var t = 1 - Math.sin(φ), ρ, ω;\r\n if (t && t < 2) {\r\n var θ = halfπ - φ, i = 25, δ;\r\n do {\r\n var sinθ = Math.sin(θ), cosθ = Math.cos(θ), β_β1 = β + Math.atan2(sinθ, L - cosθ), C = 1 + L2 - 2 * L * cosθ;\r\n θ -= δ = (θ - K2 * β - L * sinθ + C * β_β1 - .5 * t * B) / (2 * L * sinθ * β_β1);\r\n } while (Math.abs(δ) > ε2 && --i > 0);\r\n ρ = A * Math.sqrt(C);\r\n ω = λ * β_β1 / π;\r\n } else {\r\n ρ = A * (K + t);\r\n ω = λ * β / π;\r\n }\r\n return [ ρ * Math.sin(ω), ρ0 - ρ * Math.cos(ω) ];\r\n }\r\n forward.invert = function(x, y) {\r\n var ρ2 = x * x + (y -= ρ0) * y, cosθ = (1 + L2 - ρ2 / (A * A)) / (2 * L), θ = acos(cosθ), sinθ = Math.sin(θ), β_β1 = β + Math.atan2(sinθ, L - cosθ);\r\n return [ asin(x / Math.sqrt(ρ2)) * π / β_β1, asin(1 - 2 * (θ - K2 * β - L * sinθ + (1 + L2 - 2 * L * cosθ) * β_β1) / B) ];\r\n };\r\n return forward;\r\n }\r\n function hillProjection() {\r\n var K = 1, m = projectionMutator(hill), p = m(K);\r\n p.ratio = function(_) {\r\n if (!arguments.length) return K;\r\n return m(K = +_);\r\n };\r\n return p;\r\n }\r\n (d3.geo.hill = hillProjection).raw = hill;\r\n var sinuMollweideφ = .7109889596207567, sinuMollweideY = .0528035274542;\r\n function sinuMollweide(λ, φ) {\r\n return φ > -sinuMollweideφ ? (λ = mollweide(λ, φ), λ[1] += sinuMollweideY, λ) : sinusoidal(λ, φ);\r\n }\r\n sinuMollweide.invert = function(x, y) {\r\n return y > -sinuMollweideφ ? mollweide.invert(x, y - sinuMollweideY) : sinusoidal.invert(x, y);\r\n };\r\n (d3.geo.sinuMollweide = function() {\r\n return projection(sinuMollweide).rotate([ -20, -55 ]);\r\n }).raw = sinuMollweide;\r\n function homolosine(λ, φ) {\r\n return Math.abs(φ) > sinuMollweideφ ? (λ = mollweide(λ, φ), λ[1] -= φ > 0 ? sinuMollweideY : -sinuMollweideY, \r\n λ) : sinusoidal(λ, φ);\r\n }\r\n homolosine.invert = function(x, y) {\r\n return Math.abs(y) > sinuMollweideφ ? mollweide.invert(x, y + (y > 0 ? sinuMollweideY : -sinuMollweideY)) : sinusoidal.invert(x, y);\r\n };\r\n (d3.geo.homolosine = function() {\r\n return projection(homolosine);\r\n }).raw = homolosine;\r\n function kavrayskiy7(λ, φ) {\r\n return [ 3 * λ / (2 * π) * Math.sqrt(π * π / 3 - φ * φ), φ ];\r\n }\r\n kavrayskiy7.invert = function(x, y) {\r\n return [ 2 / 3 * π * x / Math.sqrt(π * π / 3 - y * y), y ];\r\n };\r\n (d3.geo.kavrayskiy7 = function() {\r\n return projection(kavrayskiy7);\r\n }).raw = kavrayskiy7;\r\n function lagrange(n) {\r\n function forward(λ, φ) {\r\n if (Math.abs(Math.abs(φ) - halfπ) < ε) return [ 0, φ < 0 ? -2 : 2 ];\r\n var sinφ = Math.sin(φ), v = Math.pow((1 + sinφ) / (1 - sinφ), n / 2), c = .5 * (v + 1 / v) + Math.cos(λ *= n);\r\n return [ 2 * Math.sin(λ) / c, (v - 1 / v) / c ];\r\n }\r\n forward.invert = function(x, y) {\r\n var y0 = Math.abs(y);\r\n if (Math.abs(y0 - 2) < ε) return x ? null : [ 0, sgn(y) * halfπ ];\r\n if (y0 > 2) return null;\r\n x /= 2, y /= 2;\r\n var x2 = x * x, y2 = y * y, t = 2 * y / (1 + x2 + y2);\r\n t = Math.pow((1 + t) / (1 - t), 1 / n);\r\n return [ Math.atan2(2 * x, 1 - x2 - y2) / n, asin((t - 1) / (t + 1)) ];\r\n };\r\n return forward;\r\n }\r\n function lagrangeProjection() {\r\n var n = .5, m = projectionMutator(lagrange), p = m(n);\r\n p.spacing = function(_) {\r\n if (!arguments.length) return n;\r\n return m(n = +_);\r\n };\r\n return p;\r\n }\r\n (d3.geo.lagrange = lagrangeProjection).raw = lagrange;\r\n function larrivee(λ, φ) {\r\n return [ λ * (1 + Math.sqrt(Math.cos(φ))) / 2, φ / (Math.cos(φ / 2) * Math.cos(λ / 6)) ];\r\n }\r\n larrivee.invert = function(x, y) {\r\n var x0 = Math.abs(x), y0 = Math.abs(y), π_sqrt2 = π / Math.SQRT2, λ = ε, φ = halfπ;\r\n if (y0 < π_sqrt2) φ *= y0 / π_sqrt2; else λ += 6 * acos(π_sqrt2 / y0);\r\n for (var i = 0; i < 25; i++) {\r\n var sinφ = Math.sin(φ), sqrtcosφ = asqrt(Math.cos(φ)), sinφ_2 = Math.sin(φ / 2), cosφ_2 = Math.cos(φ / 2), sinλ_6 = Math.sin(λ / 6), cosλ_6 = Math.cos(λ / 6), f0 = .5 * λ * (1 + sqrtcosφ) - x0, f1 = φ / (cosφ_2 * cosλ_6) - y0, df0dφ = sqrtcosφ ? -.25 * λ * sinφ / sqrtcosφ : 0, df0dλ = .5 * (1 + sqrtcosφ), df1dφ = (1 + .5 * φ * sinφ_2 / cosφ_2) / (cosφ_2 * cosλ_6), df1dλ = φ / cosφ_2 * (sinλ_6 / 6) / (cosλ_6 * cosλ_6), denom = df0dφ * df1dλ - df1dφ * df0dλ, dφ = (f0 * df1dλ - f1 * df0dλ) / denom, dλ = (f1 * df0dφ - f0 * df1dφ) / denom;\r\n φ -= dφ;\r\n λ -= dλ;\r\n if (Math.abs(dφ) < ε && Math.abs(dλ) < ε) break;\r\n }\r\n return [ x < 0 ? -λ : λ, y < 0 ? -φ : φ ];\r\n };\r\n (d3.geo.larrivee = function() {\r\n return projection(larrivee);\r\n }).raw = larrivee;\r\n function laskowski(λ, φ) {\r\n var λ2 = λ * λ, φ2 = φ * φ;\r\n return [ λ * (.975534 + φ2 * (-.119161 + λ2 * -.0143059 + φ2 * -.0547009)), φ * (1.00384 + λ2 * (.0802894 + φ2 * -.02855 + λ2 * 199025e-9) + φ2 * (.0998909 + φ2 * -.0491032)) ];\r\n }\r\n laskowski.invert = function(x, y) {\r\n var λ = sgn(x) * π, φ = y / 2, i = 50;\r\n do {\r\n var λ2 = λ * λ, φ2 = φ * φ, λφ = λ * φ, fx = λ * (.975534 + φ2 * (-.119161 + λ2 * -.0143059 + φ2 * -.0547009)) - x, fy = φ * (1.00384 + λ2 * (.0802894 + φ2 * -.02855 + λ2 * 199025e-9) + φ2 * (.0998909 + φ2 * -.0491032)) - y, δxδλ = .975534 - φ2 * (.119161 + 3 * λ2 * .0143059 + φ2 * .0547009), δxδφ = -λφ * (2 * .119161 + 4 * .0547009 * φ2 + 2 * .0143059 * λ2), δyδλ = λφ * (2 * .0802894 + 4 * 199025e-9 * λ2 + 2 * -.02855 * φ2), δyδφ = 1.00384 + λ2 * (.0802894 + 199025e-9 * λ2) + φ2 * (3 * (.0998909 - .02855 * λ2) - 5 * .0491032 * φ2), denominator = δxδφ * δyδλ - δyδφ * δxδλ, δλ = (fy * δxδφ - fx * δyδφ) / denominator, δφ = (fx * δyδλ - fy * δxδλ) / denominator;\r\n λ -= δλ, φ -= δφ;\r\n } while ((Math.abs(δλ) > ε || Math.abs(δφ) > ε) && --i > 0);\r\n return i && [ λ, φ ];\r\n };\r\n (d3.geo.laskowski = function() {\r\n return projection(laskowski);\r\n }).raw = laskowski;\r\n function littrow(λ, φ) {\r\n return [ Math.sin(λ) / Math.cos(φ), Math.tan(φ) * Math.cos(λ) ];\r\n }\r\n littrow.invert = function(x, y) {\r\n var x2 = x * x, y2 = y * y, y2_1 = y2 + 1, cosφ = x ? Math.SQRT1_2 * Math.sqrt((y2_1 - Math.sqrt(x2 * x2 + 2 * x2 * (y2 - 1) + y2_1 * y2_1)) / x2 + 1) : 1 / Math.sqrt(y2_1);\r\n return [ asin(x * cosφ), sgn(y) * acos(cosφ) ];\r\n };\r\n (d3.geo.littrow = function() {\r\n return projection(littrow);\r\n }).raw = littrow;\r\n function loximuthal(φ0) {\r\n var cosφ0 = Math.cos(φ0), tanφ0 = Math.tan(π / 4 + φ0 / 2);\r\n function forward(λ, φ) {\r\n var y = φ - φ0, x = Math.abs(y) < ε ? λ * cosφ0 : Math.abs(x = π / 4 + φ / 2) < ε || Math.abs(Math.abs(x) - halfπ) < ε ? 0 : λ * y / Math.log(Math.tan(x) / tanφ0);\r\n return [ x, y ];\r\n }\r\n forward.invert = function(x, y) {\r\n var λ, φ = y + φ0;\r\n return [ Math.abs(y) < ε ? x / cosφ0 : Math.abs(λ = π / 4 + φ / 2) < ε || Math.abs(Math.abs(λ) - halfπ) < ε ? 0 : x * Math.log(Math.tan(λ) / tanφ0) / y, φ ];\r\n };\r\n return forward;\r\n }\r\n (d3.geo.loximuthal = function() {\r\n return parallel1Projection(loximuthal).parallel(40);\r\n }).raw = loximuthal;\r\n function miller(λ, φ) {\r\n return [ λ, 1.25 * Math.log(Math.tan(π / 4 + .4 * φ)) ];\r\n }\r\n miller.invert = function(x, y) {\r\n return [ x, 2.5 * Math.atan(Math.exp(.8 * y)) - .625 * π ];\r\n };\r\n (d3.geo.miller = function() {\r\n return projection(miller);\r\n }).raw = miller;\r\n function modifiedStereographic(C) {\r\n var m = C.length - 1;\r\n function forward(λ, φ) {\r\n var cosφ = Math.cos(φ), k = 2 / (1 + cosφ * Math.cos(λ)), zr = k * cosφ * Math.sin(λ), zi = k * Math.sin(φ), i = m, w = C[i], ar = w[0], ai = w[1], t;\r\n while (--i >= 0) {\r\n w = C[i];\r\n ar = w[0] + zr * (t = ar) - zi * ai;\r\n ai = w[1] + zr * ai + zi * t;\r\n }\r\n ar = zr * (t = ar) - zi * ai;\r\n ai = zr * ai + zi * t;\r\n return [ ar, ai ];\r\n }\r\n forward.invert = function(x, y) {\r\n var i = 20, zr = x, zi = y;\r\n do {\r\n var j = m, w = C[j], ar = w[0], ai = w[1], br = 0, bi = 0, t;\r\n while (--j >= 0) {\r\n w = C[j];\r\n br = ar + zr * (t = br) - zi * bi;\r\n bi = ai + zr * bi + zi * t;\r\n ar = w[0] + zr * (t = ar) - zi * ai;\r\n ai = w[1] + zr * ai + zi * t;\r\n }\r\n br = ar + zr * (t = br) - zi * bi;\r\n bi = ai + zr * bi + zi * t;\r\n ar = zr * (t = ar) - zi * ai - x;\r\n ai = zr * ai + zi * t - y;\r\n var denominator = br * br + bi * bi, δr, δi;\r\n zr -= δr = (ar * br + ai * bi) / denominator;\r\n zi -= δi = (ai * br - ar * bi) / denominator;\r\n } while (Math.abs(δr) + Math.abs(δi) > ε * ε && --i > 0);\r\n if (i) {\r\n var ρ = Math.sqrt(zr * zr + zi * zi), c = 2 * Math.atan(ρ * .5), sinc = Math.sin(c);\r\n return [ Math.atan2(zr * sinc, ρ * Math.cos(c)), ρ ? asin(zi * sinc / ρ) : 0 ];\r\n }\r\n };\r\n return forward;\r\n }\r\n var modifiedStereographicCoefficients = {\r\n alaska: [ [ .9972523, 0 ], [ .0052513, -.0041175 ], [ .0074606, .0048125 ], [ -.0153783, -.1968253 ], [ .0636871, -.1408027 ], [ .3660976, -.2937382 ] ],\r\n gs48: [ [ .98879, 0 ], [ 0, 0 ], [ -.050909, 0 ], [ 0, 0 ], [ .075528, 0 ] ],\r\n gs50: [ [ .984299, 0 ], [ .0211642, .0037608 ], [ -.1036018, -.0575102 ], [ -.0329095, -.0320119 ], [ .0499471, .1223335 ], [ .026046, .0899805 ], [ 7388e-7, -.1435792 ], [ .0075848, -.1334108 ], [ -.0216473, .0776645 ], [ -.0225161, .0853673 ] ],\r\n miller: [ [ .9245, 0 ], [ 0, 0 ], [ .01943, 0 ] ],\r\n lee: [ [ .721316, 0 ], [ 0, 0 ], [ -.00881625, -.00617325 ] ]\r\n };\r\n function modifiedStereographicProjection() {\r\n var coefficients = modifiedStereographicCoefficients.miller, m = projectionMutator(modifiedStereographic), p = m(coefficients);\r\n p.coefficients = function(_) {\r\n if (!arguments.length) return coefficients;\r\n return m(coefficients = typeof _ === \"string\" ? modifiedStereographicCoefficients[_] : _);\r\n };\r\n return p;\r\n }\r\n (d3.geo.modifiedStereographic = modifiedStereographicProjection).raw = modifiedStereographic;\r\n function mtFlatPolarParabolic(λ, φ) {\r\n var sqrt6 = Math.sqrt(6), sqrt7 = Math.sqrt(7), θ = Math.asin(7 * Math.sin(φ) / (3 * sqrt6));\r\n return [ sqrt6 * λ * (2 * Math.cos(2 * θ / 3) - 1) / sqrt7, 9 * Math.sin(θ / 3) / sqrt7 ];\r\n }\r\n mtFlatPolarParabolic.invert = function(x, y) {\r\n var sqrt6 = Math.sqrt(6), sqrt7 = Math.sqrt(7), θ = 3 * asin(y * sqrt7 / 9);\r\n return [ x * sqrt7 / (sqrt6 * (2 * Math.cos(2 * θ / 3) - 1)), asin(Math.sin(θ) * 3 * sqrt6 / 7) ];\r\n };\r\n (d3.geo.mtFlatPolarParabolic = function() {\r\n return projection(mtFlatPolarParabolic);\r\n }).raw = mtFlatPolarParabolic;\r\n function mtFlatPolarQuartic(λ, φ) {\r\n var k = (1 + Math.SQRT1_2) * Math.sin(φ), θ = φ;\r\n for (var i = 0, δ; i < 25; i++) {\r\n θ -= δ = (Math.sin(θ / 2) + Math.sin(θ) - k) / (.5 * Math.cos(θ / 2) + Math.cos(θ));\r\n if (Math.abs(δ) < ε) break;\r\n }\r\n return [ λ * (1 + 2 * Math.cos(θ) / Math.cos(θ / 2)) / (3 * Math.SQRT2), 2 * Math.sqrt(3) * Math.sin(θ / 2) / Math.sqrt(2 + Math.SQRT2) ];\r\n }\r\n mtFlatPolarQuartic.invert = function(x, y) {\r\n var sinθ_2 = y * Math.sqrt(2 + Math.SQRT2) / (2 * Math.sqrt(3)), θ = 2 * asin(sinθ_2);\r\n return [ 3 * Math.SQRT2 * x / (1 + 2 * Math.cos(θ) / Math.cos(θ / 2)), asin((sinθ_2 + Math.sin(θ)) / (1 + Math.SQRT1_2)) ];\r\n };\r\n (d3.geo.mtFlatPolarQuartic = function() {\r\n return projection(mtFlatPolarQuartic);\r\n }).raw = mtFlatPolarQuartic;\r\n function mtFlatPolarSinusoidal(λ, φ) {\r\n var A = Math.sqrt(6 / (4 + π)), k = (1 + π / 4) * Math.sin(φ), θ = φ / 2;\r\n for (var i = 0, δ; i < 25; i++) {\r\n θ -= δ = (θ / 2 + Math.sin(θ) - k) / (.5 + Math.cos(θ));\r\n if (Math.abs(δ) < ε) break;\r\n }\r\n return [ A * (.5 + Math.cos(θ)) * λ / 1.5, A * θ ];\r\n }\r\n mtFlatPolarSinusoidal.invert = function(x, y) {\r\n var A = Math.sqrt(6 / (4 + π)), θ = y / A;\r\n if (Math.abs(Math.abs(θ) - halfπ) < ε) θ = θ < 0 ? -halfπ : halfπ;\r\n return [ 1.5 * x / (A * (.5 + Math.cos(θ))), asin((θ / 2 + Math.sin(θ)) / (1 + π / 4)) ];\r\n };\r\n (d3.geo.mtFlatPolarSinusoidal = function() {\r\n return projection(mtFlatPolarSinusoidal);\r\n }).raw = mtFlatPolarSinusoidal;\r\n function naturalEarth(λ, φ) {\r\n var φ2 = φ * φ, φ4 = φ2 * φ2;\r\n return [ λ * (.8707 - .131979 * φ2 + φ4 * (-.013791 + φ4 * (.003971 * φ2 - .001529 * φ4))), φ * (1.007226 + φ2 * (.015085 + φ4 * (-.044475 + .028874 * φ2 - .005916 * φ4))) ];\r\n }\r\n naturalEarth.invert = function(x, y) {\r\n var φ = y, i = 25, δ;\r\n do {\r\n var φ2 = φ * φ, φ4 = φ2 * φ2;\r\n φ -= δ = (φ * (1.007226 + φ2 * (.015085 + φ4 * (-.044475 + .028874 * φ2 - .005916 * φ4))) - y) / (1.007226 + φ2 * (.015085 * 3 + φ4 * (-.044475 * 7 + .028874 * 9 * φ2 - .005916 * 11 * φ4)));\r\n } while (Math.abs(δ) > ε && --i > 0);\r\n return [ x / (.8707 + (φ2 = φ * φ) * (-.131979 + φ2 * (-.013791 + φ2 * φ2 * φ2 * (.003971 - .001529 * φ2)))), φ ];\r\n };\r\n (d3.geo.naturalEarth = function() {\r\n return projection(naturalEarth);\r\n }).raw = naturalEarth;\r\n function nellHammer(λ, φ) {\r\n return [ λ * (1 + Math.cos(φ)) / 2, 2 * (φ - Math.tan(φ / 2)) ];\r\n }\r\n nellHammer.invert = function(x, y) {\r\n var p = y / 2;\r\n for (var i = 0, δ = Infinity; i < 10 && Math.abs(δ) > ε; i++) {\r\n var c = Math.cos(y / 2);\r\n y -= δ = (y - Math.tan(y / 2) - p) / (1 - .5 / (c * c));\r\n }\r\n return [ 2 * x / (1 + Math.cos(y)), y ];\r\n };\r\n (d3.geo.nellHammer = function() {\r\n return projection(nellHammer);\r\n }).raw = nellHammer;\r\n var pattersonK1 = 1.0148, pattersonK2 = .23185, pattersonK3 = -.14499, pattersonK4 = .02406, pattersonC1 = pattersonK1, pattersonC2 = 5 * pattersonK2, pattersonC3 = 7 * pattersonK3, pattersonC4 = 9 * pattersonK4, pattersonYmax = 1.790857183;\r\n function patterson(λ, φ) {\r\n var φ2 = φ * φ;\r\n return [ λ, φ * (pattersonK1 + φ2 * φ2 * (pattersonK2 + φ2 * (pattersonK3 + pattersonK4 * φ2))) ];\r\n }\r\n patterson.invert = function(x, y) {\r\n if (y > pattersonYmax) y = pattersonYmax; else if (y < -pattersonYmax) y = -pattersonYmax;\r\n var yc = y, δ;\r\n do {\r\n var y2 = yc * yc;\r\n yc -= δ = (yc * (pattersonK1 + y2 * y2 * (pattersonK2 + y2 * (pattersonK3 + pattersonK4 * y2))) - y) / (pattersonC1 + y2 * y2 * (pattersonC2 + y2 * (pattersonC3 + pattersonC4 * y2)));\r\n } while (Math.abs(δ) > ε);\r\n return [ x, yc ];\r\n };\r\n (d3.geo.patterson = function() {\r\n return projection(patterson);\r\n }).raw = patterson;\r\n var peirceQuincuncialProjection = quincuncialProjection(guyou);\r\n (d3.geo.peirceQuincuncial = function() {\r\n return peirceQuincuncialProjection().quincuncial(true).rotate([ -90, -90, 45 ]).clipAngle(180 - 1e-6);\r\n }).raw = peirceQuincuncialProjection.raw;\r\n function polyconic(λ, φ) {\r\n if (Math.abs(φ) < ε) return [ λ, 0 ];\r\n var tanφ = Math.tan(φ), k = λ * Math.sin(φ);\r\n return [ Math.sin(k) / tanφ, φ + (1 - Math.cos(k)) / tanφ ];\r\n }\r\n polyconic.invert = function(x, y) {\r\n if (Math.abs(y) < ε) return [ x, 0 ];\r\n var k = x * x + y * y, φ = y * .5, i = 10, δ;\r\n do {\r\n var tanφ = Math.tan(φ), secφ = 1 / Math.cos(φ), j = k - 2 * y * φ + φ * φ;\r\n φ -= δ = (tanφ * j + 2 * (φ - y)) / (2 + j * secφ * secφ + 2 * (φ - y) * tanφ);\r\n } while (Math.abs(δ) > ε && --i > 0);\r\n tanφ = Math.tan(φ);\r\n return [ (Math.abs(y) < Math.abs(φ + 1 / tanφ) ? asin(x * tanφ) : sgn(x) * (acos(Math.abs(x * tanφ)) + halfπ)) / Math.sin(φ), φ ];\r\n };\r\n (d3.geo.polyconic = function() {\r\n return projection(polyconic);\r\n }).raw = polyconic;\r\n function rectangularPolyconic(φ0) {\r\n var sinφ0 = Math.sin(φ0);\r\n function forward(λ, φ) {\r\n var A = sinφ0 ? Math.tan(λ * sinφ0 / 2) / sinφ0 : λ / 2;\r\n if (!φ) return [ 2 * A, -φ0 ];\r\n var E = 2 * Math.atan(A * Math.sin(φ)), cotφ = 1 / Math.tan(φ);\r\n return [ Math.sin(E) * cotφ, φ + (1 - Math.cos(E)) * cotφ - φ0 ];\r\n }\r\n forward.invert = function(x, y) {\r\n if (Math.abs(y += φ0) < ε) return [ sinφ0 ? 2 * Math.atan(sinφ0 * x / 2) / sinφ0 : x, 0 ];\r\n var k = x * x + y * y, φ = 0, i = 10, δ;\r\n do {\r\n var tanφ = Math.tan(φ), secφ = 1 / Math.cos(φ), j = k - 2 * y * φ + φ * φ;\r\n φ -= δ = (tanφ * j + 2 * (φ - y)) / (2 + j * secφ * secφ + 2 * (φ - y) * tanφ);\r\n } while (Math.abs(δ) > ε && --i > 0);\r\n var E = x * (tanφ = Math.tan(φ)), A = Math.tan(Math.abs(y) < Math.abs(φ + 1 / tanφ) ? asin(E) * .5 : acos(E) * .5 + π / 4) / Math.sin(φ);\r\n return [ sinφ0 ? 2 * Math.atan(sinφ0 * A) / sinφ0 : 2 * A, φ ];\r\n };\r\n return forward;\r\n }\r\n (d3.geo.rectangularPolyconic = function() {\r\n return parallel1Projection(rectangularPolyconic);\r\n }).raw = rectangularPolyconic;\r\n var robinsonConstants = [ [ .9986, -.062 ], [ 1, 0 ], [ .9986, .062 ], [ .9954, .124 ], [ .99, .186 ], [ .9822, .248 ], [ .973, .31 ], [ .96, .372 ], [ .9427, .434 ], [ .9216, .4958 ], [ .8962, .5571 ], [ .8679, .6176 ], [ .835, .6769 ], [ .7986, .7346 ], [ .7597, .7903 ], [ .7186, .8435 ], [ .6732, .8936 ], [ .6213, .9394 ], [ .5722, .9761 ], [ .5322, 1 ] ];\r\n robinsonConstants.forEach(function(d) {\r\n d[1] *= 1.0144;\r\n });\r\n function robinson(λ, φ) {\r\n var i = Math.min(18, Math.abs(φ) * 36 / π), i0 = Math.floor(i), di = i - i0, ax = (k = robinsonConstants[i0])[0], ay = k[1], bx = (k = robinsonConstants[++i0])[0], by = k[1], cx = (k = robinsonConstants[Math.min(19, ++i0)])[0], cy = k[1], k;\r\n return [ λ * (bx + di * (cx - ax) / 2 + di * di * (cx - 2 * bx + ax) / 2), (φ > 0 ? halfπ : -halfπ) * (by + di * (cy - ay) / 2 + di * di * (cy - 2 * by + ay) / 2) ];\r\n }\r\n robinson.invert = function(x, y) {\r\n var yy = y / halfπ, φ = yy * 90, i = Math.min(18, Math.abs(φ / 5)), i0 = Math.max(0, Math.floor(i));\r\n do {\r\n var ay = robinsonConstants[i0][1], by = robinsonConstants[i0 + 1][1], cy = robinsonConstants[Math.min(19, i0 + 2)][1], u = cy - ay, v = cy - 2 * by + ay, t = 2 * (Math.abs(yy) - by) / u, c = v / u, di = t * (1 - c * t * (1 - 2 * c * t));\r\n if (di >= 0 || i0 === 1) {\r\n φ = (y >= 0 ? 5 : -5) * (di + i);\r\n var j = 50, δ;\r\n do {\r\n i = Math.min(18, Math.abs(φ) / 5);\r\n i0 = Math.floor(i);\r\n di = i - i0;\r\n ay = robinsonConstants[i0][1];\r\n by = robinsonConstants[i0 + 1][1];\r\n cy = robinsonConstants[Math.min(19, i0 + 2)][1];\r\n φ -= (δ = (y >= 0 ? halfπ : -halfπ) * (by + di * (cy - ay) / 2 + di * di * (cy - 2 * by + ay) / 2) - y) * degrees;\r\n } while (Math.abs(δ) > ε2 && --j > 0);\r\n break;\r\n }\r\n } while (--i0 >= 0);\r\n var ax = robinsonConstants[i0][0], bx = robinsonConstants[i0 + 1][0], cx = robinsonConstants[Math.min(19, i0 + 2)][0];\r\n return [ x / (bx + di * (cx - ax) / 2 + di * di * (cx - 2 * bx + ax) / 2), φ * radians ];\r\n };\r\n (d3.geo.robinson = function() {\r\n return projection(robinson);\r\n }).raw = robinson;\r\n function satelliteVertical(P) {\r\n function forward(λ, φ) {\r\n var cosφ = Math.cos(φ), k = (P - 1) / (P - cosφ * Math.cos(λ));\r\n return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\r\n }\r\n forward.invert = function(x, y) {\r\n var ρ2 = x * x + y * y, ρ = Math.sqrt(ρ2), sinc = (P - Math.sqrt(1 - ρ2 * (P + 1) / (P - 1))) / ((P - 1) / ρ + ρ / (P - 1));\r\n return [ Math.atan2(x * sinc, ρ * Math.sqrt(1 - sinc * sinc)), ρ ? asin(y * sinc / ρ) : 0 ];\r\n };\r\n return forward;\r\n }\r\n function satellite(P, ω) {\r\n var vertical = satelliteVertical(P);\r\n if (!ω) return vertical;\r\n var cosω = Math.cos(ω), sinω = Math.sin(ω);\r\n function forward(λ, φ) {\r\n var coordinates = vertical(λ, φ), y = coordinates[1], A = y * sinω / (P - 1) + cosω;\r\n return [ coordinates[0] * cosω / A, y / A ];\r\n }\r\n forward.invert = function(x, y) {\r\n var k = (P - 1) / (P - 1 - y * sinω);\r\n return vertical.invert(k * x, k * y * cosω);\r\n };\r\n return forward;\r\n }\r\n function satelliteProjection() {\r\n var P = 1.4, ω = 0, m = projectionMutator(satellite), p = m(P, ω);\r\n p.distance = function(_) {\r\n if (!arguments.length) return P;\r\n return m(P = +_, ω);\r\n };\r\n p.tilt = function(_) {\r\n if (!arguments.length) return ω * 180 / π;\r\n return m(P, ω = _ * π / 180);\r\n };\r\n return p;\r\n }\r\n (d3.geo.satellite = satelliteProjection).raw = satellite;\r\n function times(λ, φ) {\r\n var t = Math.tan(φ / 2), s = Math.sin(π / 4 * t);\r\n return [ λ * (.74482 - .34588 * s * s), 1.70711 * t ];\r\n }\r\n times.invert = function(x, y) {\r\n var t = y / 1.70711, s = Math.sin(π / 4 * t);\r\n return [ x / (.74482 - .34588 * s * s), 2 * Math.atan(t) ];\r\n };\r\n (d3.geo.times = function() {\r\n return projection(times);\r\n }).raw = times;\r\n function twoPointEquidistant(z0) {\r\n if (!z0) return d3.geo.azimuthalEquidistant.raw;\r\n var λa = -z0 / 2, λb = -λa, z02 = z0 * z0, tanλ0 = Math.tan(λb), S = .5 / Math.sin(λb);\r\n function forward(λ, φ) {\r\n var za = acos(Math.cos(φ) * Math.cos(λ - λa)), zb = acos(Math.cos(φ) * Math.cos(λ - λb)), ys = φ < 0 ? -1 : 1;\r\n za *= za, zb *= zb;\r\n return [ (za - zb) / (2 * z0), ys * asqrt(4 * z02 * zb - (z02 - za + zb) * (z02 - za + zb)) / (2 * z0) ];\r\n }\r\n forward.invert = function(x, y) {\r\n var y2 = y * y, cosza = Math.cos(Math.sqrt(y2 + (t = x + λa) * t)), coszb = Math.cos(Math.sqrt(y2 + (t = x + λb) * t)), t, d;\r\n return [ Math.atan2(d = cosza - coszb, t = (cosza + coszb) * tanλ0), (y < 0 ? -1 : 1) * acos(Math.sqrt(t * t + d * d) * S) ];\r\n };\r\n return forward;\r\n }\r\n function twoPointEquidistantProjection() {\r\n var points = [ [ 0, 0 ], [ 0, 0 ] ], m = projectionMutator(twoPointEquidistant), p = m(0), rotate = p.rotate;\r\n delete p.rotate;\r\n p.points = function(_) {\r\n if (!arguments.length) return points;\r\n points = _;\r\n var interpolate = d3.geo.interpolate(_[0], _[1]), origin = interpolate(.5), p = d3.geo.rotation([ -origin[0], -origin[1] ])(_[0]), b = interpolate.distance * .5, γ = -asin(Math.sin(p[1] * radians) / Math.sin(b));\r\n if (p[0] > 0) γ = π - γ;\r\n rotate.call(p, [ -origin[0], -origin[1], -γ * degrees ]);\r\n return m(b * 2);\r\n };\r\n return p;\r\n }\r\n (d3.geo.twoPointEquidistant = twoPointEquidistantProjection).raw = twoPointEquidistant;\r\n function twoPointAzimuthal(d) {\r\n var cosd = Math.cos(d);\r\n function forward(λ, φ) {\r\n var coordinates = d3.geo.gnomonic.raw(λ, φ);\r\n coordinates[0] *= cosd;\r\n return coordinates;\r\n }\r\n forward.invert = function(x, y) {\r\n return d3.geo.gnomonic.raw.invert(x / cosd, y);\r\n };\r\n return forward;\r\n }\r\n function twoPointAzimuthalProjection() {\r\n var points = [ [ 0, 0 ], [ 0, 0 ] ], m = projectionMutator(twoPointAzimuthal), p = m(0), rotate = p.rotate;\r\n delete p.rotate;\r\n p.points = function(_) {\r\n if (!arguments.length) return points;\r\n points = _;\r\n var interpolate = d3.geo.interpolate(_[0], _[1]), origin = interpolate(.5), p = d3.geo.rotation([ -origin[0], -origin[1] ])(_[0]), b = interpolate.distance * .5, γ = -asin(Math.sin(p[1] * radians) / Math.sin(b));\r\n if (p[0] > 0) γ = π - γ;\r\n rotate.call(p, [ -origin[0], -origin[1], -γ * degrees ]);\r\n return m(b);\r\n };\r\n return p;\r\n }\r\n (d3.geo.twoPointAzimuthal = twoPointAzimuthalProjection).raw = twoPointAzimuthal;\r\n function vanDerGrinten(λ, φ) {\r\n if (Math.abs(φ) < ε) return [ λ, 0 ];\r\n var sinθ = Math.abs(φ / halfπ), θ = asin(sinθ);\r\n if (Math.abs(λ) < ε || Math.abs(Math.abs(φ) - halfπ) < ε) return [ 0, sgn(φ) * π * Math.tan(θ / 2) ];\r\n var cosθ = Math.cos(θ), A = Math.abs(π / λ - λ / π) / 2, A2 = A * A, G = cosθ / (sinθ + cosθ - 1), P = G * (2 / sinθ - 1), P2 = P * P, P2_A2 = P2 + A2, G_P2 = G - P2, Q = A2 + G;\r\n return [ sgn(λ) * π * (A * G_P2 + Math.sqrt(A2 * G_P2 * G_P2 - P2_A2 * (G * G - P2))) / P2_A2, sgn(φ) * π * (P * Q - A * Math.sqrt((A2 + 1) * P2_A2 - Q * Q)) / P2_A2 ];\r\n }\r\n vanDerGrinten.invert = function(x, y) {\r\n if (Math.abs(y) < ε) return [ x, 0 ];\r\n if (Math.abs(x) < ε) return [ 0, halfπ * Math.sin(2 * Math.atan(y / π)) ];\r\n var x2 = (x /= π) * x, y2 = (y /= π) * y, x2_y2 = x2 + y2, z = x2_y2 * x2_y2, c1 = -Math.abs(y) * (1 + x2_y2), c2 = c1 - 2 * y2 + x2, c3 = -2 * c1 + 1 + 2 * y2 + z, d = y2 / c3 + (2 * c2 * c2 * c2 / (c3 * c3 * c3) - 9 * c1 * c2 / (c3 * c3)) / 27, a1 = (c1 - c2 * c2 / (3 * c3)) / c3, m1 = 2 * Math.sqrt(-a1 / 3), θ1 = acos(3 * d / (a1 * m1)) / 3;\r\n return [ π * (x2_y2 - 1 + Math.sqrt(1 + 2 * (x2 - y2) + z)) / (2 * x), sgn(y) * π * (-m1 * Math.cos(θ1 + π / 3) - c2 / (3 * c3)) ];\r\n };\r\n (d3.geo.vanDerGrinten = function() {\r\n return projection(vanDerGrinten);\r\n }).raw = vanDerGrinten;\r\n function vanDerGrinten2(λ, φ) {\r\n if (Math.abs(φ) < ε) return [ λ, 0 ];\r\n var sinθ = Math.abs(φ / halfπ), θ = asin(sinθ);\r\n if (Math.abs(λ) < ε || Math.abs(Math.abs(φ) - halfπ) < ε) return [ 0, sgn(φ) * π * Math.tan(θ / 2) ];\r\n var cosθ = Math.cos(θ), A = Math.abs(π / λ - λ / π) / 2, A2 = A * A, x1 = cosθ * (Math.sqrt(1 + A2) - A * cosθ) / (1 + A2 * sinθ * sinθ);\r\n return [ sgn(λ) * π * x1, sgn(φ) * π * asqrt(1 - x1 * (2 * A + x1)) ];\r\n }\r\n vanDerGrinten2.invert = function(x, y) {\r\n if (!x) return [ 0, halfπ * Math.sin(2 * Math.atan(y / π)) ];\r\n var x1 = Math.abs(x / π), A = (1 - x1 * x1 - (y /= π) * y) / (2 * x1), A2 = A * A, B = Math.sqrt(A2 + 1);\r\n return [ sgn(x) * π * (B - A), sgn(y) * halfπ * Math.sin(2 * Math.atan2(Math.sqrt((1 - 2 * A * x1) * (A + B) - x1), Math.sqrt(B + A + x1))) ];\r\n };\r\n (d3.geo.vanDerGrinten2 = function() {\r\n return projection(vanDerGrinten2);\r\n }).raw = vanDerGrinten2;\r\n function vanDerGrinten3(λ, φ) {\r\n if (Math.abs(φ) < ε) return [ λ, 0 ];\r\n var sinθ = φ / halfπ, θ = asin(sinθ);\r\n if (Math.abs(λ) < ε || Math.abs(Math.abs(φ) - halfπ) < ε) return [ 0, π * Math.tan(θ / 2) ];\r\n var A = (π / λ - λ / π) / 2, y1 = sinθ / (1 + Math.cos(θ));\r\n return [ π * (sgn(λ) * asqrt(A * A + 1 - y1 * y1) - A), π * y1 ];\r\n }\r\n vanDerGrinten3.invert = function(x, y) {\r\n if (!y) return [ x, 0 ];\r\n var y1 = y / π, A = (π * π * (1 - y1 * y1) - x * x) / (2 * π * x);\r\n return [ x ? π * (sgn(x) * Math.sqrt(A * A + 1) - A) : 0, halfπ * Math.sin(2 * Math.atan(y1)) ];\r\n };\r\n (d3.geo.vanDerGrinten3 = function() {\r\n return projection(vanDerGrinten3);\r\n }).raw = vanDerGrinten3;\r\n function vanDerGrinten4(λ, φ) {\r\n if (!φ) return [ λ, 0 ];\r\n var φ0 = Math.abs(φ);\r\n if (!λ || φ0 === halfπ) return [ 0, φ ];\r\n var B = φ0 / halfπ, B2 = B * B, C = (8 * B - B2 * (B2 + 2) - 5) / (2 * B2 * (B - 1)), C2 = C * C, BC = B * C, B_C2 = B2 + C2 + 2 * BC, B_3C = B + 3 * C, λ0 = λ / halfπ, λ1 = λ0 + 1 / λ0, D = sgn(Math.abs(λ) - halfπ) * Math.sqrt(λ1 * λ1 - 4), D2 = D * D, F = B_C2 * (B2 + C2 * D2 - 1) + (1 - B2) * (B2 * (B_3C * B_3C + 4 * C2) + 12 * BC * C2 + 4 * C2 * C2), x1 = (D * (B_C2 + C2 - 1) + 2 * asqrt(F)) / (4 * B_C2 + D2);\r\n return [ sgn(λ) * halfπ * x1, sgn(φ) * halfπ * asqrt(1 + D * Math.abs(x1) - x1 * x1) ];\r\n }\r\n vanDerGrinten4.invert = function(x, y) {\r\n if (!x || !y) return [ x, y ];\r\n y /= π;\r\n var x1 = sgn(x) * x / halfπ, D = (x1 * x1 - 1 + 4 * y * y) / Math.abs(x1), D2 = D * D, B = 2 * y, i = 50;\r\n do {\r\n var B2 = B * B, C = (8 * B - B2 * (B2 + 2) - 5) / (2 * B2 * (B - 1)), C_ = (3 * B - B2 * B - 10) / (2 * B2 * B), C2 = C * C, BC = B * C, B_C = B + C, B_C2 = B_C * B_C, B_3C = B + 3 * C, F = B_C2 * (B2 + C2 * D2 - 1) + (1 - B2) * (B2 * (B_3C * B_3C + 4 * C2) + C2 * (12 * BC + 4 * C2)), F_ = -2 * B_C * (4 * BC * C2 + (1 - 4 * B2 + 3 * B2 * B2) * (1 + C_) + C2 * (-6 + 14 * B2 - D2 + (-8 + 8 * B2 - 2 * D2) * C_) + BC * (-8 + 12 * B2 + (-10 + 10 * B2 - D2) * C_)), sqrtF = Math.sqrt(F), f = D * (B_C2 + C2 - 1) + 2 * sqrtF - x1 * (4 * B_C2 + D2), f_ = D * (2 * C * C_ + 2 * B_C * (1 + C_)) + F_ / sqrtF - 8 * B_C * (D * (-1 + C2 + B_C2) + 2 * sqrtF) * (1 + C_) / (D2 + 4 * B_C2);\r\n B -= δ = f / f_;\r\n } while (δ > ε && --i > 0);\r\n return [ sgn(x) * (Math.sqrt(D * D + 4) + D) * π / 4, halfπ * B ];\r\n };\r\n (d3.geo.vanDerGrinten4 = function() {\r\n return projection(vanDerGrinten4);\r\n }).raw = vanDerGrinten4;\r\n var wagner4 = function() {\r\n var A = 4 * π + 3 * Math.sqrt(3), B = 2 * Math.sqrt(2 * π * Math.sqrt(3) / A);\r\n return mollweideBromley(B * Math.sqrt(3) / π, B, A / 6);\r\n }();\r\n (d3.geo.wagner4 = function() {\r\n return projection(wagner4);\r\n }).raw = wagner4;\r\n function wagner6(λ, φ) {\r\n return [ λ * Math.sqrt(1 - 3 * φ * φ / (π * π)), φ ];\r\n }\r\n wagner6.invert = function(x, y) {\r\n return [ x / Math.sqrt(1 - 3 * y * y / (π * π)), y ];\r\n };\r\n (d3.geo.wagner6 = function() {\r\n return projection(wagner6);\r\n }).raw = wagner6;\r\n function wagner7(λ, φ) {\r\n var s = .90631 * Math.sin(φ), c0 = Math.sqrt(1 - s * s), c1 = Math.sqrt(2 / (1 + c0 * Math.cos(λ /= 3)));\r\n return [ 2.66723 * c0 * c1 * Math.sin(λ), 1.24104 * s * c1 ];\r\n }\r\n wagner7.invert = function(x, y) {\r\n var t1 = x / 2.66723, t2 = y / 1.24104, p = Math.sqrt(t1 * t1 + t2 * t2), c = 2 * asin(p / 2);\r\n return [ 3 * Math.atan2(x * Math.tan(c), 2.66723 * p), p && asin(y * Math.sin(c) / (1.24104 * .90631 * p)) ];\r\n };\r\n (d3.geo.wagner7 = function() {\r\n return projection(wagner7);\r\n }).raw = wagner7;\r\n function wiechel(λ, φ) {\r\n var cosφ = Math.cos(φ), sinφ = Math.cos(λ) * cosφ, sin1_φ = 1 - sinφ, cosλ = Math.cos(λ = Math.atan2(Math.sin(λ) * cosφ, -Math.sin(φ))), sinλ = Math.sin(λ);\r\n cosφ = asqrt(1 - sinφ * sinφ);\r\n return [ sinλ * cosφ - cosλ * sin1_φ, -cosλ * cosφ - sinλ * sin1_φ ];\r\n }\r\n wiechel.invert = function(x, y) {\r\n var w = -.5 * (x * x + y * y), k = Math.sqrt(-w * (2 + w)), b = y * w + x * k, a = x * w - y * k, D = Math.sqrt(a * a + b * b);\r\n return [ Math.atan2(k * b, D * (1 + w)), D ? -asin(k * a / D) : 0 ];\r\n };\r\n (d3.geo.wiechel = function() {\r\n return projection(wiechel);\r\n }).raw = wiechel;\r\n function winkel3(λ, φ) {\r\n var coordinates = aitoff(λ, φ);\r\n return [ (coordinates[0] + λ / halfπ) / 2, (coordinates[1] + φ) / 2 ];\r\n }\r\n winkel3.invert = function(x, y) {\r\n var λ = x, φ = y, i = 25;\r\n do {\r\n var cosφ = Math.cos(φ), sinφ = Math.sin(φ), sin_2φ = Math.sin(2 * φ), sin2φ = sinφ * sinφ, cos2φ = cosφ * cosφ, sinλ = Math.sin(λ), cosλ_2 = Math.cos(λ / 2), sinλ_2 = Math.sin(λ / 2), sin2λ_2 = sinλ_2 * sinλ_2, C = 1 - cos2φ * cosλ_2 * cosλ_2, E = C ? acos(cosφ * cosλ_2) * Math.sqrt(F = 1 / C) : F = 0, F, fx = .5 * (2 * E * cosφ * sinλ_2 + λ / halfπ) - x, fy = .5 * (E * sinφ + φ) - y, δxδλ = .5 * F * (cos2φ * sin2λ_2 + E * cosφ * cosλ_2 * sin2φ) + .5 / halfπ, δxδφ = F * (sinλ * sin_2φ / 4 - E * sinφ * sinλ_2), δyδλ = .125 * F * (sin_2φ * sinλ_2 - E * sinφ * cos2φ * sinλ), δyδφ = .5 * F * (sin2φ * cosλ_2 + E * sin2λ_2 * cosφ) + .5, denominator = δxδφ * δyδλ - δyδφ * δxδλ, δλ = (fy * δxδφ - fx * δyδφ) / denominator, δφ = (fx * δyδλ - fy * δxδλ) / denominator;\r\n λ -= δλ, φ -= δφ;\r\n } while ((Math.abs(δλ) > ε || Math.abs(δφ) > ε) && --i > 0);\r\n return [ λ, φ ];\r\n };\r\n (d3.geo.winkel3 = function() {\r\n return projection(winkel3);\r\n }).raw = winkel3;\r\n function cassini(λ, φ) {\r\n var cosφ = Math.cos(φ), tanφ = Math.tan(φ), cosλ = Math.cos(λ), sinλ = Math.sin(λ);\r\n return [ Math.asin(cosφ * sinλ), Math.atan2(tanφ, cosλ) ];\r\n }\r\n cassini.invert = function(x, y) {\r\n return [ Math.asin(Math.cos(x) * Math.sin(y)), Math.atan2(Math.tan(x), Math.cos(y)) ];\r\n };\r\n (d3.geo.cassini = function() {\r\n return projection(cassini);\r\n }).raw = cassini; \r\n})();","!function() {\r\n var d3 = {\r\n version: \"3.5.17\"\r\n };\r\n var d3_arraySlice = [].slice, d3_array = function(list) {\r\n return d3_arraySlice.call(list);\r\n };\r\n var d3_document = this.document;\r\n function d3_documentElement(node) {\r\n return node && (node.ownerDocument || node.document || node).documentElement;\r\n }\r\n function d3_window(node) {\r\n return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\r\n }\r\n if (d3_document) {\r\n try {\r\n d3_array(d3_document.documentElement.childNodes)[0].nodeType;\r\n } catch (e) {\r\n d3_array = function(list) {\r\n var i = list.length, array = new Array(i);\r\n while (i--) array[i] = list[i];\r\n return array;\r\n };\r\n }\r\n }\r\n if (!Date.now) Date.now = function() {\r\n return +new Date();\r\n };\r\n if (d3_document) {\r\n try {\r\n d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\r\n } catch (error) {\r\n var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\r\n d3_element_prototype.setAttribute = function(name, value) {\r\n d3_element_setAttribute.call(this, name, value + \"\");\r\n };\r\n d3_element_prototype.setAttributeNS = function(space, local, value) {\r\n d3_element_setAttributeNS.call(this, space, local, value + \"\");\r\n };\r\n d3_style_prototype.setProperty = function(name, value, priority) {\r\n d3_style_setProperty.call(this, name, value + \"\", priority);\r\n };\r\n }\r\n }\r\n d3.ascending = d3_ascending;\r\n function d3_ascending(a, b) {\r\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\r\n }\r\n d3.descending = function(a, b) {\r\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\r\n };\r\n d3.min = function(array, f) {\r\n var i = -1, n = array.length, a, b;\r\n if (arguments.length === 1) {\r\n while (++i < n) if ((b = array[i]) != null && b >= b) {\r\n a = b;\r\n break;\r\n }\r\n while (++i < n) if ((b = array[i]) != null && a > b) a = b;\r\n } else {\r\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\r\n a = b;\r\n break;\r\n }\r\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\r\n }\r\n return a;\r\n };\r\n d3.max = function(array, f) {\r\n var i = -1, n = array.length, a, b;\r\n if (arguments.length === 1) {\r\n while (++i < n) if ((b = array[i]) != null && b >= b) {\r\n a = b;\r\n break;\r\n }\r\n while (++i < n) if ((b = array[i]) != null && b > a) a = b;\r\n } else {\r\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\r\n a = b;\r\n break;\r\n }\r\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\r\n }\r\n return a;\r\n };\r\n d3.extent = function(array, f) {\r\n var i = -1, n = array.length, a, b, c;\r\n if (arguments.length === 1) {\r\n while (++i < n) if ((b = array[i]) != null && b >= b) {\r\n a = c = b;\r\n break;\r\n }\r\n while (++i < n) if ((b = array[i]) != null) {\r\n if (a > b) a = b;\r\n if (c < b) c = b;\r\n }\r\n } else {\r\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\r\n a = c = b;\r\n break;\r\n }\r\n while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\r\n if (a > b) a = b;\r\n if (c < b) c = b;\r\n }\r\n }\r\n return [ a, c ];\r\n };\r\n function d3_number(x) {\r\n return x === null ? NaN : +x;\r\n }\r\n function d3_numeric(x) {\r\n return !isNaN(x);\r\n }\r\n d3.sum = function(array, f) {\r\n var s = 0, n = array.length, a, i = -1;\r\n if (arguments.length === 1) {\r\n while (++i < n) if (d3_numeric(a = +array[i])) s += a;\r\n } else {\r\n while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\r\n }\r\n return s;\r\n };\r\n d3.mean = function(array, f) {\r\n var s = 0, n = array.length, a, i = -1, j = n;\r\n if (arguments.length === 1) {\r\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\r\n } else {\r\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\r\n }\r\n if (j) return s / j;\r\n };\r\n d3.quantile = function(values, p) {\r\n var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\r\n return e ? v + e * (values[h] - v) : v;\r\n };\r\n d3.median = function(array, f) {\r\n var numbers = [], n = array.length, a, i = -1;\r\n if (arguments.length === 1) {\r\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\r\n } else {\r\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\r\n }\r\n if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\r\n };\r\n d3.variance = function(array, f) {\r\n var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\r\n if (arguments.length === 1) {\r\n while (++i < n) {\r\n if (d3_numeric(a = d3_number(array[i]))) {\r\n d = a - m;\r\n m += d / ++j;\r\n s += d * (a - m);\r\n }\r\n }\r\n } else {\r\n while (++i < n) {\r\n if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\r\n d = a - m;\r\n m += d / ++j;\r\n s += d * (a - m);\r\n }\r\n }\r\n }\r\n if (j > 1) return s / (j - 1);\r\n };\r\n d3.deviation = function() {\r\n var v = d3.variance.apply(this, arguments);\r\n return v ? Math.sqrt(v) : v;\r\n };\r\n function d3_bisector(compare) {\r\n return {\r\n left: function(a, x, lo, hi) {\r\n if (arguments.length < 3) lo = 0;\r\n if (arguments.length < 4) hi = a.length;\r\n while (lo < hi) {\r\n var mid = lo + hi >>> 1;\r\n if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\r\n }\r\n return lo;\r\n },\r\n right: function(a, x, lo, hi) {\r\n if (arguments.length < 3) lo = 0;\r\n if (arguments.length < 4) hi = a.length;\r\n while (lo < hi) {\r\n var mid = lo + hi >>> 1;\r\n if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\r\n }\r\n return lo;\r\n }\r\n };\r\n }\r\n var d3_bisect = d3_bisector(d3_ascending);\r\n d3.bisectLeft = d3_bisect.left;\r\n d3.bisect = d3.bisectRight = d3_bisect.right;\r\n d3.bisector = function(f) {\r\n return d3_bisector(f.length === 1 ? function(d, x) {\r\n return d3_ascending(f(d), x);\r\n } : f);\r\n };\r\n d3.shuffle = function(array, i0, i1) {\r\n if ((m = arguments.length) < 3) {\r\n i1 = array.length;\r\n if (m < 2) i0 = 0;\r\n }\r\n var m = i1 - i0, t, i;\r\n while (m) {\r\n i = Math.random() * m-- | 0;\r\n t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\r\n }\r\n return array;\r\n };\r\n d3.permute = function(array, indexes) {\r\n var i = indexes.length, permutes = new Array(i);\r\n while (i--) permutes[i] = array[indexes[i]];\r\n return permutes;\r\n };\r\n d3.pairs = function(array) {\r\n var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\r\n while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\r\n return pairs;\r\n };\r\n d3.transpose = function(matrix) {\r\n if (!(n = matrix.length)) return [];\r\n for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\r\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\r\n row[j] = matrix[j][i];\r\n }\r\n }\r\n return transpose;\r\n };\r\n function d3_transposeLength(d) {\r\n return d.length;\r\n }\r\n d3.zip = function() {\r\n return d3.transpose(arguments);\r\n };\r\n d3.keys = function(map) {\r\n var keys = [];\r\n for (var key in map) keys.push(key);\r\n return keys;\r\n };\r\n d3.values = function(map) {\r\n var values = [];\r\n for (var key in map) values.push(map[key]);\r\n return values;\r\n };\r\n d3.entries = function(map) {\r\n var entries = [];\r\n for (var key in map) entries.push({\r\n key: key,\r\n value: map[key]\r\n });\r\n return entries;\r\n };\r\n d3.merge = function(arrays) {\r\n var n = arrays.length, m, i = -1, j = 0, merged, array;\r\n while (++i < n) j += arrays[i].length;\r\n merged = new Array(j);\r\n while (--n >= 0) {\r\n array = arrays[n];\r\n m = array.length;\r\n while (--m >= 0) {\r\n merged[--j] = array[m];\r\n }\r\n }\r\n return merged;\r\n };\r\n var abs = Math.abs;\r\n d3.range = function(start, stop, step) {\r\n if (arguments.length < 3) {\r\n step = 1;\r\n if (arguments.length < 2) {\r\n stop = start;\r\n start = 0;\r\n }\r\n }\r\n if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\r\n var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\r\n start *= k, stop *= k, step *= k;\r\n if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\r\n return range;\r\n };\r\n function d3_range_integerScale(x) {\r\n var k = 1;\r\n while (x * k % 1) k *= 10;\r\n return k;\r\n }\r\n function d3_class(ctor, properties) {\r\n for (var key in properties) {\r\n Object.defineProperty(ctor.prototype, key, {\r\n value: properties[key],\r\n enumerable: false\r\n });\r\n }\r\n }\r\n d3.map = function(object, f) {\r\n var map = new d3_Map();\r\n if (object instanceof d3_Map) {\r\n object.forEach(function(key, value) {\r\n map.set(key, value);\r\n });\r\n } else if (Array.isArray(object)) {\r\n var i = -1, n = object.length, o;\r\n if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\r\n } else {\r\n for (var key in object) map.set(key, object[key]);\r\n }\r\n return map;\r\n };\r\n function d3_Map() {\r\n this._ = Object.create(null);\r\n }\r\n var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\r\n d3_class(d3_Map, {\r\n has: d3_map_has,\r\n get: function(key) {\r\n return this._[d3_map_escape(key)];\r\n },\r\n set: function(key, value) {\r\n return this._[d3_map_escape(key)] = value;\r\n },\r\n remove: d3_map_remove,\r\n keys: d3_map_keys,\r\n values: function() {\r\n var values = [];\r\n for (var key in this._) values.push(this._[key]);\r\n return values;\r\n },\r\n entries: function() {\r\n var entries = [];\r\n for (var key in this._) entries.push({\r\n key: d3_map_unescape(key),\r\n value: this._[key]\r\n });\r\n return entries;\r\n },\r\n size: d3_map_size,\r\n empty: d3_map_empty,\r\n forEach: function(f) {\r\n for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\r\n }\r\n });\r\n function d3_map_escape(key) {\r\n return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\r\n }\r\n function d3_map_unescape(key) {\r\n return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\r\n }\r\n function d3_map_has(key) {\r\n return d3_map_escape(key) in this._;\r\n }\r\n function d3_map_remove(key) {\r\n return (key = d3_map_escape(key)) in this._ && delete this._[key];\r\n }\r\n function d3_map_keys() {\r\n var keys = [];\r\n for (var key in this._) keys.push(d3_map_unescape(key));\r\n return keys;\r\n }\r\n function d3_map_size() {\r\n var size = 0;\r\n for (var key in this._) ++size;\r\n return size;\r\n }\r\n function d3_map_empty() {\r\n for (var key in this._) return false;\r\n return true;\r\n }\r\n d3.nest = function() {\r\n var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\r\n function map(mapType, array, depth) {\r\n if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\r\n var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\r\n while (++i < n) {\r\n if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\r\n values.push(object);\r\n } else {\r\n valuesByKey.set(keyValue, [ object ]);\r\n }\r\n }\r\n if (mapType) {\r\n object = mapType();\r\n setter = function(keyValue, values) {\r\n object.set(keyValue, map(mapType, values, depth));\r\n };\r\n } else {\r\n object = {};\r\n setter = function(keyValue, values) {\r\n object[keyValue] = map(mapType, values, depth);\r\n };\r\n }\r\n valuesByKey.forEach(setter);\r\n return object;\r\n }\r\n function entries(map, depth) {\r\n if (depth >= keys.length) return map;\r\n var array = [], sortKey = sortKeys[depth++];\r\n map.forEach(function(key, keyMap) {\r\n array.push({\r\n key: key,\r\n values: entries(keyMap, depth)\r\n });\r\n });\r\n return sortKey ? array.sort(function(a, b) {\r\n return sortKey(a.key, b.key);\r\n }) : array;\r\n }\r\n nest.map = function(array, mapType) {\r\n return map(mapType, array, 0);\r\n };\r\n nest.entries = function(array) {\r\n return entries(map(d3.map, array, 0), 0);\r\n };\r\n nest.key = function(d) {\r\n keys.push(d);\r\n return nest;\r\n };\r\n nest.sortKeys = function(order) {\r\n sortKeys[keys.length - 1] = order;\r\n return nest;\r\n };\r\n nest.sortValues = function(order) {\r\n sortValues = order;\r\n return nest;\r\n };\r\n nest.rollup = function(f) {\r\n rollup = f;\r\n return nest;\r\n };\r\n return nest;\r\n };\r\n d3.set = function(array) {\r\n var set = new d3_Set();\r\n if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\r\n return set;\r\n };\r\n function d3_Set() {\r\n this._ = Object.create(null);\r\n }\r\n d3_class(d3_Set, {\r\n has: d3_map_has,\r\n add: function(key) {\r\n this._[d3_map_escape(key += \"\")] = true;\r\n return key;\r\n },\r\n remove: d3_map_remove,\r\n values: d3_map_keys,\r\n size: d3_map_size,\r\n empty: d3_map_empty,\r\n forEach: function(f) {\r\n for (var key in this._) f.call(this, d3_map_unescape(key));\r\n }\r\n });\r\n d3.behavior = {};\r\n function d3_identity(d) {\r\n return d;\r\n }\r\n d3.rebind = function(target, source) {\r\n var i = 1, n = arguments.length, method;\r\n while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\r\n return target;\r\n };\r\n function d3_rebind(target, source, method) {\r\n return function() {\r\n var value = method.apply(source, arguments);\r\n return value === source ? target : value;\r\n };\r\n }\r\n function d3_vendorSymbol(object, name) {\r\n if (name in object) return name;\r\n name = name.charAt(0).toUpperCase() + name.slice(1);\r\n for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\r\n var prefixName = d3_vendorPrefixes[i] + name;\r\n if (prefixName in object) return prefixName;\r\n }\r\n }\r\n var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\r\n function d3_noop() {}\r\n d3.dispatch = function() {\r\n var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\r\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\r\n return dispatch;\r\n };\r\n function d3_dispatch() {}\r\n d3_dispatch.prototype.on = function(type, listener) {\r\n var i = type.indexOf(\".\"), name = \"\";\r\n if (i >= 0) {\r\n name = type.slice(i + 1);\r\n type = type.slice(0, i);\r\n }\r\n if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\r\n if (arguments.length === 2) {\r\n if (listener == null) for (type in this) {\r\n if (this.hasOwnProperty(type)) this[type].on(name, null);\r\n }\r\n return this;\r\n }\r\n };\r\n function d3_dispatch_event(dispatch) {\r\n var listeners = [], listenerByName = new d3_Map();\r\n function event() {\r\n var z = listeners, i = -1, n = z.length, l;\r\n while (++i < n) if (l = z[i].on) l.apply(this, arguments);\r\n return dispatch;\r\n }\r\n event.on = function(name, listener) {\r\n var l = listenerByName.get(name), i;\r\n if (arguments.length < 2) return l && l.on;\r\n if (l) {\r\n l.on = null;\r\n listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\r\n listenerByName.remove(name);\r\n }\r\n if (listener) listeners.push(listenerByName.set(name, {\r\n on: listener\r\n }));\r\n return dispatch;\r\n };\r\n return event;\r\n }\r\n d3.event = null;\r\n function d3_eventPreventDefault() {\r\n d3.event.preventDefault();\r\n }\r\n function d3_eventSource() {\r\n var e = d3.event, s;\r\n while (s = e.sourceEvent) e = s;\r\n return e;\r\n }\r\n function d3_eventDispatch(target) {\r\n var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\r\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\r\n dispatch.of = function(thiz, argumentz) {\r\n return function(e1) {\r\n try {\r\n var e0 = e1.sourceEvent = d3.event;\r\n e1.target = target;\r\n d3.event = e1;\r\n dispatch[e1.type].apply(thiz, argumentz);\r\n } finally {\r\n d3.event = e0;\r\n }\r\n };\r\n };\r\n return dispatch;\r\n }\r\n d3.requote = function(s) {\r\n return s.replace(d3_requote_re, \"\\\\$&\");\r\n };\r\n var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\r\n var d3_subclass = {}.__proto__ ? function(object, prototype) {\r\n object.__proto__ = prototype;\r\n } : function(object, prototype) {\r\n for (var property in prototype) object[property] = prototype[property];\r\n };\r\n function d3_selection(groups) {\r\n d3_subclass(groups, d3_selectionPrototype);\r\n return groups;\r\n }\r\n var d3_select = function(s, n) {\r\n return n.querySelector(s);\r\n }, d3_selectAll = function(s, n) {\r\n return n.querySelectorAll(s);\r\n }, d3_selectMatches = function(n, s) {\r\n var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\r\n d3_selectMatches = function(n, s) {\r\n return d3_selectMatcher.call(n, s);\r\n };\r\n return d3_selectMatches(n, s);\r\n };\r\n if (typeof Sizzle === \"function\") {\r\n d3_select = function(s, n) {\r\n return Sizzle(s, n)[0] || null;\r\n };\r\n d3_selectAll = Sizzle;\r\n d3_selectMatches = Sizzle.matchesSelector;\r\n }\r\n d3.selection = function() {\r\n return d3.select(d3_document.documentElement);\r\n };\r\n var d3_selectionPrototype = d3.selection.prototype = [];\r\n d3_selectionPrototype.select = function(selector) {\r\n var subgroups = [], subgroup, subnode, group, node;\r\n selector = d3_selection_selector(selector);\r\n for (var j = -1, m = this.length; ++j < m; ) {\r\n subgroups.push(subgroup = []);\r\n subgroup.parentNode = (group = this[j]).parentNode;\r\n for (var i = -1, n = group.length; ++i < n; ) {\r\n if (node = group[i]) {\r\n subgroup.push(subnode = selector.call(node, node.__data__, i, j));\r\n if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\r\n } else {\r\n subgroup.push(null);\r\n }\r\n }\r\n }\r\n return d3_selection(subgroups);\r\n };\r\n function d3_selection_selector(selector) {\r\n return typeof selector === \"function\" ? selector : function() {\r\n return d3_select(selector, this);\r\n };\r\n }\r\n d3_selectionPrototype.selectAll = function(selector) {\r\n var subgroups = [], subgroup, node;\r\n selector = d3_selection_selectorAll(selector);\r\n for (var j = -1, m = this.length; ++j < m; ) {\r\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\r\n if (node = group[i]) {\r\n subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\r\n subgroup.parentNode = node;\r\n }\r\n }\r\n }\r\n return d3_selection(subgroups);\r\n };\r\n function d3_selection_selectorAll(selector) {\r\n return typeof selector === \"function\" ? selector : function() {\r\n return d3_selectAll(selector, this);\r\n };\r\n }\r\n var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\r\n var d3_nsPrefix = {\r\n svg: \"http://www.w3.org/2000/svg\",\r\n xhtml: d3_nsXhtml,\r\n xlink: \"http://www.w3.org/1999/xlink\",\r\n xml: \"http://www.w3.org/XML/1998/namespace\",\r\n xmlns: \"http://www.w3.org/2000/xmlns/\"\r\n };\r\n d3.ns = {\r\n prefix: d3_nsPrefix,\r\n qualify: function(name) {\r\n var i = name.indexOf(\":\"), prefix = name;\r\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\r\n return d3_nsPrefix.hasOwnProperty(prefix) ? {\r\n space: d3_nsPrefix[prefix],\r\n local: name\r\n } : name;\r\n }\r\n };\r\n d3_selectionPrototype.attr = function(name, value) {\r\n if (arguments.length < 2) {\r\n if (typeof name === \"string\") {\r\n var node = this.node();\r\n name = d3.ns.qualify(name);\r\n return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\r\n }\r\n for (value in name) this.each(d3_selection_attr(value, name[value]));\r\n return this;\r\n }\r\n return this.each(d3_selection_attr(name, value));\r\n };\r\n function d3_selection_attr(name, value) {\r\n name = d3.ns.qualify(name);\r\n function attrNull() {\r\n this.removeAttribute(name);\r\n }\r\n function attrNullNS() {\r\n this.removeAttributeNS(name.space, name.local);\r\n }\r\n function attrConstant() {\r\n this.setAttribute(name, value);\r\n }\r\n function attrConstantNS() {\r\n this.setAttributeNS(name.space, name.local, value);\r\n }\r\n function attrFunction() {\r\n var x = value.apply(this, arguments);\r\n if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\r\n }\r\n function attrFunctionNS() {\r\n var x = value.apply(this, arguments);\r\n if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\r\n }\r\n return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\r\n }\r\n function d3_collapse(s) {\r\n return s.trim().replace(/\\s+/g, \" \");\r\n }\r\n d3_selectionPrototype.classed = function(name, value) {\r\n if (arguments.length < 2) {\r\n if (typeof name === \"string\") {\r\n var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\r\n if (value = node.classList) {\r\n while (++i < n) if (!value.contains(name[i])) return false;\r\n } else {\r\n value = node.getAttribute(\"class\");\r\n while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\r\n }\r\n return true;\r\n }\r\n for (value in name) this.each(d3_selection_classed(value, name[value]));\r\n return this;\r\n }\r\n return this.each(d3_selection_classed(name, value));\r\n };\r\n function d3_selection_classedRe(name) {\r\n return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\r\n }\r\n function d3_selection_classes(name) {\r\n return (name + \"\").trim().split(/^|\\s+/);\r\n }\r\n function d3_selection_classed(name, value) {\r\n name = d3_selection_classes(name).map(d3_selection_classedName);\r\n var n = name.length;\r\n function classedConstant() {\r\n var i = -1;\r\n while (++i < n) name[i](this, value);\r\n }\r\n function classedFunction() {\r\n var i = -1, x = value.apply(this, arguments);\r\n while (++i < n) name[i](this, x);\r\n }\r\n return typeof value === \"function\" ? classedFunction : classedConstant;\r\n }\r\n function d3_selection_classedName(name) {\r\n var re = d3_selection_classedRe(name);\r\n return function(node, value) {\r\n if (c = node.classList) return value ? c.add(name) : c.remove(name);\r\n var c = node.getAttribute(\"class\") || \"\";\r\n if (value) {\r\n re.lastIndex = 0;\r\n if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\r\n } else {\r\n node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\r\n }\r\n };\r\n }\r\n d3_selectionPrototype.style = function(name, value, priority) {\r\n var n = arguments.length;\r\n if (n < 3) {\r\n if (typeof name !== \"string\") {\r\n if (n < 2) value = \"\";\r\n for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\r\n return this;\r\n }\r\n if (n < 2) {\r\n var node = this.node();\r\n return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\r\n }\r\n priority = \"\";\r\n }\r\n return this.each(d3_selection_style(name, value, priority));\r\n };\r\n function d3_selection_style(name, value, priority) {\r\n function styleNull() {\r\n this.style.removeProperty(name);\r\n }\r\n function styleConstant() {\r\n this.style.setProperty(name, value, priority);\r\n }\r\n function styleFunction() {\r\n var x = value.apply(this, arguments);\r\n if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\r\n }\r\n return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\r\n }\r\n d3_selectionPrototype.property = function(name, value) {\r\n if (arguments.length < 2) {\r\n if (typeof name === \"string\") return this.node()[name];\r\n for (value in name) this.each(d3_selection_property(value, name[value]));\r\n return this;\r\n }\r\n return this.each(d3_selection_property(name, value));\r\n };\r\n function d3_selection_property(name, value) {\r\n function propertyNull() {\r\n delete this[name];\r\n }\r\n function propertyConstant() {\r\n this[name] = value;\r\n }\r\n function propertyFunction() {\r\n var x = value.apply(this, arguments);\r\n if (x == null) delete this[name]; else this[name] = x;\r\n }\r\n return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\r\n }\r\n d3_selectionPrototype.text = function(value) {\r\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\r\n var v = value.apply(this, arguments);\r\n this.textContent = v == null ? \"\" : v;\r\n } : value == null ? function() {\r\n this.textContent = \"\";\r\n } : function() {\r\n this.textContent = value;\r\n }) : this.node().textContent;\r\n };\r\n d3_selectionPrototype.html = function(value) {\r\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\r\n var v = value.apply(this, arguments);\r\n this.innerHTML = v == null ? \"\" : v;\r\n } : value == null ? function() {\r\n this.innerHTML = \"\";\r\n } : function() {\r\n this.innerHTML = value;\r\n }) : this.node().innerHTML;\r\n };\r\n d3_selectionPrototype.append = function(name) {\r\n name = d3_selection_creator(name);\r\n return this.select(function() {\r\n return this.appendChild(name.apply(this, arguments));\r\n });\r\n };\r\n function d3_selection_creator(name) {\r\n function create() {\r\n var document = this.ownerDocument, namespace = this.namespaceURI;\r\n return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\r\n }\r\n function createNS() {\r\n return this.ownerDocument.createElementNS(name.space, name.local);\r\n }\r\n return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\r\n }\r\n d3_selectionPrototype.insert = function(name, before) {\r\n name = d3_selection_creator(name);\r\n before = d3_selection_selector(before);\r\n return this.select(function() {\r\n return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\r\n });\r\n };\r\n d3_selectionPrototype.remove = function() {\r\n return this.each(d3_selectionRemove);\r\n };\r\n function d3_selectionRemove() {\r\n var parent = this.parentNode;\r\n if (parent) parent.removeChild(this);\r\n }\r\n d3_selectionPrototype.data = function(value, key) {\r\n var i = -1, n = this.length, group, node;\r\n if (!arguments.length) {\r\n value = new Array(n = (group = this[0]).length);\r\n while (++i < n) {\r\n if (node = group[i]) {\r\n value[i] = node.__data__;\r\n }\r\n }\r\n return value;\r\n }\r\n function bind(group, groupData) {\r\n var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\r\n if (key) {\r\n var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\r\n for (i = -1; ++i < n; ) {\r\n if (node = group[i]) {\r\n if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\r\n exitNodes[i] = node;\r\n } else {\r\n nodeByKeyValue.set(keyValue, node);\r\n }\r\n keyValues[i] = keyValue;\r\n }\r\n }\r\n for (i = -1; ++i < m; ) {\r\n if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\r\n enterNodes[i] = d3_selection_dataNode(nodeData);\r\n } else if (node !== true) {\r\n updateNodes[i] = node;\r\n node.__data__ = nodeData;\r\n }\r\n nodeByKeyValue.set(keyValue, true);\r\n }\r\n for (i = -1; ++i < n; ) {\r\n if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\r\n exitNodes[i] = group[i];\r\n }\r\n }\r\n } else {\r\n for (i = -1; ++i < n0; ) {\r\n node = group[i];\r\n nodeData = groupData[i];\r\n if (node) {\r\n node.__data__ = nodeData;\r\n updateNodes[i] = node;\r\n } else {\r\n enterNodes[i] = d3_selection_dataNode(nodeData);\r\n }\r\n }\r\n for (;i < m; ++i) {\r\n enterNodes[i] = d3_selection_dataNode(groupData[i]);\r\n }\r\n for (;i < n; ++i) {\r\n exitNodes[i] = group[i];\r\n }\r\n }\r\n enterNodes.update = updateNodes;\r\n enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\r\n enter.push(enterNodes);\r\n update.push(updateNodes);\r\n exit.push(exitNodes);\r\n }\r\n var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\r\n if (typeof value === \"function\") {\r\n while (++i < n) {\r\n bind(group = this[i], value.call(group, group.parentNode.__data__, i));\r\n }\r\n } else {\r\n while (++i < n) {\r\n bind(group = this[i], value);\r\n }\r\n }\r\n update.enter = function() {\r\n return enter;\r\n };\r\n update.exit = function() {\r\n return exit;\r\n };\r\n return update;\r\n };\r\n function d3_selection_dataNode(data) {\r\n return {\r\n __data__: data\r\n };\r\n }\r\n d3_selectionPrototype.datum = function(value) {\r\n return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\r\n };\r\n d3_selectionPrototype.filter = function(filter) {\r\n var subgroups = [], subgroup, group, node;\r\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\r\n for (var j = 0, m = this.length; j < m; j++) {\r\n subgroups.push(subgroup = []);\r\n subgroup.parentNode = (group = this[j]).parentNode;\r\n for (var i = 0, n = group.length; i < n; i++) {\r\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\r\n subgroup.push(node);\r\n }\r\n }\r\n }\r\n return d3_selection(subgroups);\r\n };\r\n function d3_selection_filter(selector) {\r\n return function() {\r\n return d3_selectMatches(this, selector);\r\n };\r\n }\r\n d3_selectionPrototype.order = function() {\r\n for (var j = -1, m = this.length; ++j < m; ) {\r\n for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\r\n if (node = group[i]) {\r\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\r\n next = node;\r\n }\r\n }\r\n }\r\n return this;\r\n };\r\n d3_selectionPrototype.sort = function(comparator) {\r\n comparator = d3_selection_sortComparator.apply(this, arguments);\r\n for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\r\n return this.order();\r\n };\r\n function d3_selection_sortComparator(comparator) {\r\n if (!arguments.length) comparator = d3_ascending;\r\n return function(a, b) {\r\n return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\r\n };\r\n }\r\n d3_selectionPrototype.each = function(callback) {\r\n return d3_selection_each(this, function(node, i, j) {\r\n callback.call(node, node.__data__, i, j);\r\n });\r\n };\r\n function d3_selection_each(groups, callback) {\r\n for (var j = 0, m = groups.length; j < m; j++) {\r\n for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\r\n if (node = group[i]) callback(node, i, j);\r\n }\r\n }\r\n return groups;\r\n }\r\n d3_selectionPrototype.call = function(callback) {\r\n var args = d3_array(arguments);\r\n callback.apply(args[0] = this, args);\r\n return this;\r\n };\r\n d3_selectionPrototype.empty = function() {\r\n return !this.node();\r\n };\r\n d3_selectionPrototype.node = function() {\r\n for (var j = 0, m = this.length; j < m; j++) {\r\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\r\n var node = group[i];\r\n if (node) return node;\r\n }\r\n }\r\n return null;\r\n };\r\n d3_selectionPrototype.size = function() {\r\n var n = 0;\r\n d3_selection_each(this, function() {\r\n ++n;\r\n });\r\n return n;\r\n };\r\n function d3_selection_enter(selection) {\r\n d3_subclass(selection, d3_selection_enterPrototype);\r\n return selection;\r\n }\r\n var d3_selection_enterPrototype = [];\r\n d3.selection.enter = d3_selection_enter;\r\n d3.selection.enter.prototype = d3_selection_enterPrototype;\r\n d3_selection_enterPrototype.append = d3_selectionPrototype.append;\r\n d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\r\n d3_selection_enterPrototype.node = d3_selectionPrototype.node;\r\n d3_selection_enterPrototype.call = d3_selectionPrototype.call;\r\n d3_selection_enterPrototype.size = d3_selectionPrototype.size;\r\n d3_selection_enterPrototype.select = function(selector) {\r\n var subgroups = [], subgroup, subnode, upgroup, group, node;\r\n for (var j = -1, m = this.length; ++j < m; ) {\r\n upgroup = (group = this[j]).update;\r\n subgroups.push(subgroup = []);\r\n subgroup.parentNode = group.parentNode;\r\n for (var i = -1, n = group.length; ++i < n; ) {\r\n if (node = group[i]) {\r\n subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\r\n subnode.__data__ = node.__data__;\r\n } else {\r\n subgroup.push(null);\r\n }\r\n }\r\n }\r\n return d3_selection(subgroups);\r\n };\r\n d3_selection_enterPrototype.insert = function(name, before) {\r\n if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\r\n return d3_selectionPrototype.insert.call(this, name, before);\r\n };\r\n function d3_selection_enterInsertBefore(enter) {\r\n var i0, j0;\r\n return function(d, i, j) {\r\n var group = enter[j].update, n = group.length, node;\r\n if (j != j0) j0 = j, i0 = 0;\r\n if (i >= i0) i0 = i + 1;\r\n while (!(node = group[i0]) && ++i0 < n) ;\r\n return node;\r\n };\r\n }\r\n d3.select = function(node) {\r\n var group;\r\n if (typeof node === \"string\") {\r\n group = [ d3_select(node, d3_document) ];\r\n group.parentNode = d3_document.documentElement;\r\n } else {\r\n group = [ node ];\r\n group.parentNode = d3_documentElement(node);\r\n }\r\n return d3_selection([ group ]);\r\n };\r\n d3.selectAll = function(nodes) {\r\n var group;\r\n if (typeof nodes === \"string\") {\r\n group = d3_array(d3_selectAll(nodes, d3_document));\r\n group.parentNode = d3_document.documentElement;\r\n } else {\r\n group = d3_array(nodes);\r\n group.parentNode = null;\r\n }\r\n return d3_selection([ group ]);\r\n };\r\n d3_selectionPrototype.on = function(type, listener, capture) {\r\n var n = arguments.length;\r\n if (n < 3) {\r\n if (typeof type !== \"string\") {\r\n if (n < 2) listener = false;\r\n for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\r\n return this;\r\n }\r\n if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\r\n capture = false;\r\n }\r\n return this.each(d3_selection_on(type, listener, capture));\r\n };\r\n function d3_selection_on(type, listener, capture) {\r\n var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\r\n if (i > 0) type = type.slice(0, i);\r\n var filter = d3_selection_onFilters.get(type);\r\n if (filter) type = filter, wrap = d3_selection_onFilter;\r\n function onRemove() {\r\n var l = this[name];\r\n if (l) {\r\n this.removeEventListener(type, l, l.$);\r\n delete this[name];\r\n }\r\n }\r\n function onAdd() {\r\n var l = wrap(listener, d3_array(arguments));\r\n onRemove.call(this);\r\n this.addEventListener(type, this[name] = l, l.$ = capture);\r\n l._ = listener;\r\n }\r\n function removeAll() {\r\n var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\r\n for (var name in this) {\r\n if (match = name.match(re)) {\r\n var l = this[name];\r\n this.removeEventListener(match[1], l, l.$);\r\n delete this[name];\r\n }\r\n }\r\n }\r\n return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\r\n }\r\n var d3_selection_onFilters = d3.map({\r\n mouseenter: \"mouseover\",\r\n mouseleave: \"mouseout\"\r\n });\r\n if (d3_document) {\r\n d3_selection_onFilters.forEach(function(k) {\r\n if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\r\n });\r\n }\r\n function d3_selection_onListener(listener, argumentz) {\r\n return function(e) {\r\n var o = d3.event;\r\n d3.event = e;\r\n argumentz[0] = this.__data__;\r\n try {\r\n listener.apply(this, argumentz);\r\n } finally {\r\n d3.event = o;\r\n }\r\n };\r\n }\r\n function d3_selection_onFilter(listener, argumentz) {\r\n var l = d3_selection_onListener(listener, argumentz);\r\n return function(e) {\r\n var target = this, related = e.relatedTarget;\r\n if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\r\n l.call(target, e);\r\n }\r\n };\r\n }\r\n var d3_event_dragSelect, d3_event_dragId = 0;\r\n function d3_event_dragSuppress(node) {\r\n var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\r\n if (d3_event_dragSelect == null) {\r\n d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\r\n }\r\n if (d3_event_dragSelect) {\r\n var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\r\n style[d3_event_dragSelect] = \"none\";\r\n }\r\n return function(suppressClick) {\r\n w.on(name, null);\r\n if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\r\n if (suppressClick) {\r\n var off = function() {\r\n w.on(click, null);\r\n };\r\n w.on(click, function() {\r\n d3_eventPreventDefault();\r\n off();\r\n }, true);\r\n setTimeout(off, 0);\r\n }\r\n };\r\n }\r\n d3.mouse = function(container) {\r\n return d3_mousePoint(container, d3_eventSource());\r\n };\r\n var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\r\n function d3_mousePoint(container, e) {\r\n if (e.changedTouches) e = e.changedTouches[0];\r\n var svg = container.ownerSVGElement || container;\r\n if (svg.createSVGPoint) {\r\n var point = svg.createSVGPoint();\r\n if (d3_mouse_bug44083 < 0) {\r\n var window = d3_window(container);\r\n if (window.scrollX || window.scrollY) {\r\n svg = d3.select(\"body\").append(\"svg\").style({\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n margin: 0,\r\n padding: 0,\r\n border: \"none\"\r\n }, \"important\");\r\n var ctm = svg[0][0].getScreenCTM();\r\n d3_mouse_bug44083 = !(ctm.f || ctm.e);\r\n svg.remove();\r\n }\r\n }\r\n if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \r\n point.y = e.clientY;\r\n point = point.matrixTransform(container.getScreenCTM().inverse());\r\n return [ point.x, point.y ];\r\n }\r\n var rect = container.getBoundingClientRect();\r\n return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\r\n }\r\n d3.touch = function(container, touches, identifier) {\r\n if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\r\n if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\r\n if ((touch = touches[i]).identifier === identifier) {\r\n return d3_mousePoint(container, touch);\r\n }\r\n }\r\n };\r\n d3.behavior.drag = function() {\r\n var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\r\n function drag() {\r\n this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\r\n }\r\n function dragstart(id, position, subject, move, end) {\r\n return function() {\r\n var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\r\n if (origin) {\r\n dragOffset = origin.apply(that, arguments);\r\n dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\r\n } else {\r\n dragOffset = [ 0, 0 ];\r\n }\r\n dispatch({\r\n type: \"dragstart\"\r\n });\r\n function moved() {\r\n var position1 = position(parent, dragId), dx, dy;\r\n if (!position1) return;\r\n dx = position1[0] - position0[0];\r\n dy = position1[1] - position0[1];\r\n dragged |= dx | dy;\r\n position0 = position1;\r\n dispatch({\r\n type: \"drag\",\r\n x: position1[0] + dragOffset[0],\r\n y: position1[1] + dragOffset[1],\r\n dx: dx,\r\n dy: dy\r\n });\r\n }\r\n function ended() {\r\n if (!position(parent, dragId)) return;\r\n dragSubject.on(move + dragName, null).on(end + dragName, null);\r\n dragRestore(dragged);\r\n dispatch({\r\n type: \"dragend\"\r\n });\r\n }\r\n };\r\n }\r\n drag.origin = function(x) {\r\n if (!arguments.length) return origin;\r\n origin = x;\r\n return drag;\r\n };\r\n return d3.rebind(drag, event, \"on\");\r\n };\r\n function d3_behavior_dragTouchId() {\r\n return d3.event.changedTouches[0].identifier;\r\n }\r\n d3.touches = function(container, touches) {\r\n if (arguments.length < 2) touches = d3_eventSource().touches;\r\n return touches ? d3_array(touches).map(function(touch) {\r\n var point = d3_mousePoint(container, touch);\r\n point.identifier = touch.identifier;\r\n return point;\r\n }) : [];\r\n };\r\n var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\r\n function d3_sgn(x) {\r\n return x > 0 ? 1 : x < 0 ? -1 : 0;\r\n }\r\n function d3_cross2d(a, b, c) {\r\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\r\n }\r\n function d3_acos(x) {\r\n return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\r\n }\r\n function d3_asin(x) {\r\n return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\r\n }\r\n function d3_sinh(x) {\r\n return ((x = Math.exp(x)) - 1 / x) / 2;\r\n }\r\n function d3_cosh(x) {\r\n return ((x = Math.exp(x)) + 1 / x) / 2;\r\n }\r\n function d3_tanh(x) {\r\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\r\n }\r\n function d3_haversin(x) {\r\n return (x = Math.sin(x / 2)) * x;\r\n }\r\n var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\r\n d3.interpolateZoom = function(p0, p1) {\r\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\r\n if (d2 < ε2) {\r\n S = Math.log(w1 / w0) / ρ;\r\n i = function(t) {\r\n return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\r\n };\r\n } else {\r\n var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\r\n S = (r1 - r0) / ρ;\r\n i = function(t) {\r\n var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\r\n return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\r\n };\r\n }\r\n i.duration = S * 1e3;\r\n return i;\r\n };\r\n d3.behavior.zoom = function() {\r\n var view = {\r\n x: 0,\r\n y: 0,\r\n k: 1\r\n }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\r\n if (!d3_behavior_zoomWheel) {\r\n d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\r\n return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\r\n }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\r\n return d3.event.wheelDelta;\r\n }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\r\n return -d3.event.detail;\r\n }, \"MozMousePixelScroll\");\r\n }\r\n function zoom(g) {\r\n g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\r\n }\r\n zoom.event = function(g) {\r\n g.each(function() {\r\n var dispatch = event.of(this, arguments), view1 = view;\r\n if (d3_transitionInheritId) {\r\n d3.select(this).transition().each(\"start.zoom\", function() {\r\n view = this.__chart__ || {\r\n x: 0,\r\n y: 0,\r\n k: 1\r\n };\r\n zoomstarted(dispatch);\r\n }).tween(\"zoom:zoom\", function() {\r\n var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\r\n return function(t) {\r\n var l = i(t), k = dx / l[2];\r\n this.__chart__ = view = {\r\n x: cx - l[0] * k,\r\n y: cy - l[1] * k,\r\n k: k\r\n };\r\n zoomed(dispatch);\r\n };\r\n }).each(\"interrupt.zoom\", function() {\r\n zoomended(dispatch);\r\n }).each(\"end.zoom\", function() {\r\n zoomended(dispatch);\r\n });\r\n } else {\r\n this.__chart__ = view;\r\n zoomstarted(dispatch);\r\n zoomed(dispatch);\r\n zoomended(dispatch);\r\n }\r\n });\r\n };\r\n zoom.translate = function(_) {\r\n if (!arguments.length) return [ view.x, view.y ];\r\n view = {\r\n x: +_[0],\r\n y: +_[1],\r\n k: view.k\r\n };\r\n rescale();\r\n return zoom;\r\n };\r\n zoom.scale = function(_) {\r\n if (!arguments.length) return view.k;\r\n view = {\r\n x: view.x,\r\n y: view.y,\r\n k: null\r\n };\r\n scaleTo(+_);\r\n rescale();\r\n return zoom;\r\n };\r\n zoom.scaleExtent = function(_) {\r\n if (!arguments.length) return scaleExtent;\r\n scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\r\n return zoom;\r\n };\r\n zoom.center = function(_) {\r\n if (!arguments.length) return center;\r\n center = _ && [ +_[0], +_[1] ];\r\n return zoom;\r\n };\r\n zoom.size = function(_) {\r\n if (!arguments.length) return size;\r\n size = _ && [ +_[0], +_[1] ];\r\n return zoom;\r\n };\r\n zoom.duration = function(_) {\r\n if (!arguments.length) return duration;\r\n duration = +_;\r\n return zoom;\r\n };\r\n zoom.x = function(z) {\r\n if (!arguments.length) return x1;\r\n x1 = z;\r\n x0 = z.copy();\r\n view = {\r\n x: 0,\r\n y: 0,\r\n k: 1\r\n };\r\n return zoom;\r\n };\r\n zoom.y = function(z) {\r\n if (!arguments.length) return y1;\r\n y1 = z;\r\n y0 = z.copy();\r\n view = {\r\n x: 0,\r\n y: 0,\r\n k: 1\r\n };\r\n return zoom;\r\n };\r\n function location(p) {\r\n return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\r\n }\r\n function point(l) {\r\n return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\r\n }\r\n function scaleTo(s) {\r\n view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\r\n }\r\n function translateTo(p, l) {\r\n l = point(l);\r\n view.x += p[0] - l[0];\r\n view.y += p[1] - l[1];\r\n }\r\n function zoomTo(that, p, l, k) {\r\n that.__chart__ = {\r\n x: view.x,\r\n y: view.y,\r\n k: view.k\r\n };\r\n scaleTo(Math.pow(2, k));\r\n translateTo(center0 = p, l);\r\n that = d3.select(that);\r\n if (duration > 0) that = that.transition().duration(duration);\r\n that.call(zoom.event);\r\n }\r\n function rescale() {\r\n if (x1) x1.domain(x0.range().map(function(x) {\r\n return (x - view.x) / view.k;\r\n }).map(x0.invert));\r\n if (y1) y1.domain(y0.range().map(function(y) {\r\n return (y - view.y) / view.k;\r\n }).map(y0.invert));\r\n }\r\n function zoomstarted(dispatch) {\r\n if (!zooming++) dispatch({\r\n type: \"zoomstart\"\r\n });\r\n }\r\n function zoomed(dispatch) {\r\n rescale();\r\n dispatch({\r\n type: \"zoom\",\r\n scale: view.k,\r\n translate: [ view.x, view.y ]\r\n });\r\n }\r\n function zoomended(dispatch) {\r\n if (!--zooming) dispatch({\r\n type: \"zoomend\"\r\n }), center0 = null;\r\n }\r\n function mousedowned() {\r\n var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\r\n d3_selection_interrupt.call(that);\r\n zoomstarted(dispatch);\r\n function moved() {\r\n dragged = 1;\r\n translateTo(d3.mouse(that), location0);\r\n zoomed(dispatch);\r\n }\r\n function ended() {\r\n subject.on(mousemove, null).on(mouseup, null);\r\n dragRestore(dragged);\r\n zoomended(dispatch);\r\n }\r\n }\r\n function touchstarted() {\r\n var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\r\n started();\r\n zoomstarted(dispatch);\r\n subject.on(mousedown, null).on(touchstart, started);\r\n function relocate() {\r\n var touches = d3.touches(that);\r\n scale0 = view.k;\r\n touches.forEach(function(t) {\r\n if (t.identifier in locations0) locations0[t.identifier] = location(t);\r\n });\r\n return touches;\r\n }\r\n function started() {\r\n var target = d3.event.target;\r\n d3.select(target).on(touchmove, moved).on(touchend, ended);\r\n targets.push(target);\r\n var changed = d3.event.changedTouches;\r\n for (var i = 0, n = changed.length; i < n; ++i) {\r\n locations0[changed[i].identifier] = null;\r\n }\r\n var touches = relocate(), now = Date.now();\r\n if (touches.length === 1) {\r\n if (now - touchtime < 500) {\r\n var p = touches[0];\r\n zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\r\n d3_eventPreventDefault();\r\n }\r\n touchtime = now;\r\n } else if (touches.length > 1) {\r\n var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\r\n distance0 = dx * dx + dy * dy;\r\n }\r\n }\r\n function moved() {\r\n var touches = d3.touches(that), p0, l0, p1, l1;\r\n d3_selection_interrupt.call(that);\r\n for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\r\n p1 = touches[i];\r\n if (l1 = locations0[p1.identifier]) {\r\n if (l0) break;\r\n p0 = p1, l0 = l1;\r\n }\r\n }\r\n if (l1) {\r\n var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\r\n p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\r\n l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\r\n scaleTo(scale1 * scale0);\r\n }\r\n touchtime = null;\r\n translateTo(p0, l0);\r\n zoomed(dispatch);\r\n }\r\n function ended() {\r\n if (d3.event.touches.length) {\r\n var changed = d3.event.changedTouches;\r\n for (var i = 0, n = changed.length; i < n; ++i) {\r\n delete locations0[changed[i].identifier];\r\n }\r\n for (var identifier in locations0) {\r\n return void relocate();\r\n }\r\n }\r\n d3.selectAll(targets).on(zoomName, null);\r\n subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\r\n dragRestore();\r\n zoomended(dispatch);\r\n }\r\n }\r\n function mousewheeled() {\r\n var dispatch = event.of(this, arguments);\r\n if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \r\n translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\r\n mousewheelTimer = setTimeout(function() {\r\n mousewheelTimer = null;\r\n zoomended(dispatch);\r\n }, 50);\r\n d3_eventPreventDefault();\r\n scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\r\n translateTo(center0, translate0);\r\n zoomed(dispatch);\r\n }\r\n function dblclicked() {\r\n return;\r\n var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\r\n zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\r\n }\r\n return d3.rebind(zoom, event, \"on\");\r\n };\r\n var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\r\n d3.color = d3_color;\r\n function d3_color() {}\r\n d3_color.prototype.toString = function() {\r\n return this.rgb() + \"\";\r\n };\r\n d3.hsl = d3_hsl;\r\n function d3_hsl(h, s, l) {\r\n return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\r\n }\r\n var d3_hslPrototype = d3_hsl.prototype = new d3_color();\r\n d3_hslPrototype.brighter = function(k) {\r\n k = Math.pow(.7, arguments.length ? k : 1);\r\n return new d3_hsl(this.h, this.s, this.l / k);\r\n };\r\n d3_hslPrototype.darker = function(k) {\r\n k = Math.pow(.7, arguments.length ? k : 1);\r\n return new d3_hsl(this.h, this.s, k * this.l);\r\n };\r\n d3_hslPrototype.rgb = function() {\r\n return d3_hsl_rgb(this.h, this.s, this.l);\r\n };\r\n function d3_hsl_rgb(h, s, l) {\r\n var m1, m2;\r\n h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\r\n s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\r\n l = l < 0 ? 0 : l > 1 ? 1 : l;\r\n m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\r\n m1 = 2 * l - m2;\r\n function v(h) {\r\n if (h > 360) h -= 360; else if (h < 0) h += 360;\r\n if (h < 60) return m1 + (m2 - m1) * h / 60;\r\n if (h < 180) return m2;\r\n if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\r\n return m1;\r\n }\r\n function vv(h) {\r\n return Math.round(v(h) * 255);\r\n }\r\n return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\r\n }\r\n d3.hcl = d3_hcl;\r\n function d3_hcl(h, c, l) {\r\n return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\r\n }\r\n var d3_hclPrototype = d3_hcl.prototype = new d3_color();\r\n d3_hclPrototype.brighter = function(k) {\r\n return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\r\n };\r\n d3_hclPrototype.darker = function(k) {\r\n return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\r\n };\r\n d3_hclPrototype.rgb = function() {\r\n return d3_hcl_lab(this.h, this.c, this.l).rgb();\r\n };\r\n function d3_hcl_lab(h, c, l) {\r\n if (isNaN(h)) h = 0;\r\n if (isNaN(c)) c = 0;\r\n return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\r\n }\r\n d3.lab = d3_lab;\r\n function d3_lab(l, a, b) {\r\n return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\r\n }\r\n var d3_lab_K = 18;\r\n var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\r\n var d3_labPrototype = d3_lab.prototype = new d3_color();\r\n d3_labPrototype.brighter = function(k) {\r\n return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\r\n };\r\n d3_labPrototype.darker = function(k) {\r\n return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\r\n };\r\n d3_labPrototype.rgb = function() {\r\n return d3_lab_rgb(this.l, this.a, this.b);\r\n };\r\n function d3_lab_rgb(l, a, b) {\r\n var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\r\n x = d3_lab_xyz(x) * d3_lab_X;\r\n y = d3_lab_xyz(y) * d3_lab_Y;\r\n z = d3_lab_xyz(z) * d3_lab_Z;\r\n return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\r\n }\r\n function d3_lab_hcl(l, a, b) {\r\n return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\r\n }\r\n function d3_lab_xyz(x) {\r\n return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\r\n }\r\n function d3_xyz_lab(x) {\r\n return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\r\n }\r\n function d3_xyz_rgb(r) {\r\n return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\r\n }\r\n d3.rgb = d3_rgb;\r\n function d3_rgb(r, g, b) {\r\n return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\r\n }\r\n function d3_rgbNumber(value) {\r\n return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\r\n }\r\n function d3_rgbString(value) {\r\n return d3_rgbNumber(value) + \"\";\r\n }\r\n var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\r\n d3_rgbPrototype.brighter = function(k) {\r\n k = Math.pow(.7, arguments.length ? k : 1);\r\n var r = this.r, g = this.g, b = this.b, i = 30;\r\n if (!r && !g && !b) return new d3_rgb(i, i, i);\r\n if (r && r < i) r = i;\r\n if (g && g < i) g = i;\r\n if (b && b < i) b = i;\r\n return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\r\n };\r\n d3_rgbPrototype.darker = function(k) {\r\n k = Math.pow(.7, arguments.length ? k : 1);\r\n return new d3_rgb(k * this.r, k * this.g, k * this.b);\r\n };\r\n d3_rgbPrototype.hsl = function() {\r\n return d3_rgb_hsl(this.r, this.g, this.b);\r\n };\r\n d3_rgbPrototype.toString = function() {\r\n return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\r\n };\r\n function d3_rgb_hex(v) {\r\n return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\r\n }\r\n function d3_rgb_parse(format, rgb, hsl) {\r\n var r = 0, g = 0, b = 0, m1, m2, color;\r\n m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\r\n if (m1) {\r\n m2 = m1[2].split(\",\");\r\n switch (m1[1]) {\r\n case \"hsl\":\r\n {\r\n return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\r\n }\r\n\r\n case \"rgb\":\r\n {\r\n return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\r\n }\r\n }\r\n }\r\n if (color = d3_rgb_names.get(format)) {\r\n return rgb(color.r, color.g, color.b);\r\n }\r\n if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\r\n if (format.length === 4) {\r\n r = (color & 3840) >> 4;\r\n r = r >> 4 | r;\r\n g = color & 240;\r\n g = g >> 4 | g;\r\n b = color & 15;\r\n b = b << 4 | b;\r\n } else if (format.length === 7) {\r\n r = (color & 16711680) >> 16;\r\n g = (color & 65280) >> 8;\r\n b = color & 255;\r\n }\r\n }\r\n return rgb(r, g, b);\r\n }\r\n function d3_rgb_hsl(r, g, b) {\r\n var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\r\n if (d) {\r\n s = l < .5 ? d / (max + min) : d / (2 - max - min);\r\n if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\r\n h *= 60;\r\n } else {\r\n h = NaN;\r\n s = l > 0 && l < 1 ? 0 : h;\r\n }\r\n return new d3_hsl(h, s, l);\r\n }\r\n function d3_rgb_lab(r, g, b) {\r\n r = d3_rgb_xyz(r);\r\n g = d3_rgb_xyz(g);\r\n b = d3_rgb_xyz(b);\r\n var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\r\n return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\r\n }\r\n function d3_rgb_xyz(r) {\r\n return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\r\n }\r\n function d3_rgb_parseNumber(c) {\r\n var f = parseFloat(c);\r\n return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\r\n }\r\n var d3_rgb_names = d3.map({\r\n aliceblue: 15792383,\r\n antiquewhite: 16444375,\r\n aqua: 65535,\r\n aquamarine: 8388564,\r\n azure: 15794175,\r\n beige: 16119260,\r\n bisque: 16770244,\r\n black: 0,\r\n blanchedalmond: 16772045,\r\n blue: 255,\r\n blueviolet: 9055202,\r\n brown: 10824234,\r\n burlywood: 14596231,\r\n cadetblue: 6266528,\r\n chartreuse: 8388352,\r\n chocolate: 13789470,\r\n coral: 16744272,\r\n cornflowerblue: 6591981,\r\n cornsilk: 16775388,\r\n crimson: 14423100,\r\n cyan: 65535,\r\n darkblue: 139,\r\n darkcyan: 35723,\r\n darkgoldenrod: 12092939,\r\n darkgray: 11119017,\r\n darkgreen: 25600,\r\n darkgrey: 11119017,\r\n darkkhaki: 12433259,\r\n darkmagenta: 9109643,\r\n darkolivegreen: 5597999,\r\n darkorange: 16747520,\r\n darkorchid: 10040012,\r\n darkred: 9109504,\r\n darksalmon: 15308410,\r\n darkseagreen: 9419919,\r\n darkslateblue: 4734347,\r\n darkslategray: 3100495,\r\n darkslategrey: 3100495,\r\n darkturquoise: 52945,\r\n darkviolet: 9699539,\r\n deeppink: 16716947,\r\n deepskyblue: 49151,\r\n dimgray: 6908265,\r\n dimgrey: 6908265,\r\n dodgerblue: 2003199,\r\n firebrick: 11674146,\r\n floralwhite: 16775920,\r\n forestgreen: 2263842,\r\n fuchsia: 16711935,\r\n gainsboro: 14474460,\r\n ghostwhite: 16316671,\r\n gold: 16766720,\r\n goldenrod: 14329120,\r\n gray: 8421504,\r\n green: 32768,\r\n greenyellow: 11403055,\r\n grey: 8421504,\r\n honeydew: 15794160,\r\n hotpink: 16738740,\r\n indianred: 13458524,\r\n indigo: 4915330,\r\n ivory: 16777200,\r\n khaki: 15787660,\r\n lavender: 15132410,\r\n lavenderblush: 16773365,\r\n lawngreen: 8190976,\r\n lemonchiffon: 16775885,\r\n lightblue: 11393254,\r\n lightcoral: 15761536,\r\n lightcyan: 14745599,\r\n lightgoldenrodyellow: 16448210,\r\n lightgray: 13882323,\r\n lightgreen: 9498256,\r\n lightgrey: 13882323,\r\n lightpink: 16758465,\r\n lightsalmon: 16752762,\r\n lightseagreen: 2142890,\r\n lightskyblue: 8900346,\r\n lightslategray: 7833753,\r\n lightslategrey: 7833753,\r\n lightsteelblue: 11584734,\r\n lightyellow: 16777184,\r\n lime: 65280,\r\n limegreen: 3329330,\r\n linen: 16445670,\r\n magenta: 16711935,\r\n maroon: 8388608,\r\n mediumaquamarine: 6737322,\r\n mediumblue: 205,\r\n mediumorchid: 12211667,\r\n mediumpurple: 9662683,\r\n mediumseagreen: 3978097,\r\n mediumslateblue: 8087790,\r\n mediumspringgreen: 64154,\r\n mediumturquoise: 4772300,\r\n mediumvioletred: 13047173,\r\n midnightblue: 1644912,\r\n mintcream: 16121850,\r\n mistyrose: 16770273,\r\n moccasin: 16770229,\r\n navajowhite: 16768685,\r\n navy: 128,\r\n oldlace: 16643558,\r\n olive: 8421376,\r\n olivedrab: 7048739,\r\n orange: 16753920,\r\n orangered: 16729344,\r\n orchid: 14315734,\r\n palegoldenrod: 15657130,\r\n palegreen: 10025880,\r\n paleturquoise: 11529966,\r\n palevioletred: 14381203,\r\n papayawhip: 16773077,\r\n peachpuff: 16767673,\r\n peru: 13468991,\r\n pink: 16761035,\r\n plum: 14524637,\r\n powderblue: 11591910,\r\n purple: 8388736,\r\n rebeccapurple: 6697881,\r\n red: 16711680,\r\n rosybrown: 12357519,\r\n royalblue: 4286945,\r\n saddlebrown: 9127187,\r\n salmon: 16416882,\r\n sandybrown: 16032864,\r\n seagreen: 3050327,\r\n seashell: 16774638,\r\n sienna: 10506797,\r\n silver: 12632256,\r\n skyblue: 8900331,\r\n slateblue: 6970061,\r\n slategray: 7372944,\r\n slategrey: 7372944,\r\n snow: 16775930,\r\n springgreen: 65407,\r\n steelblue: 4620980,\r\n tan: 13808780,\r\n teal: 32896,\r\n thistle: 14204888,\r\n tomato: 16737095,\r\n turquoise: 4251856,\r\n violet: 15631086,\r\n wheat: 16113331,\r\n white: 16777215,\r\n whitesmoke: 16119285,\r\n yellow: 16776960,\r\n yellowgreen: 10145074\r\n });\r\n d3_rgb_names.forEach(function(key, value) {\r\n d3_rgb_names.set(key, d3_rgbNumber(value));\r\n });\r\n function d3_functor(v) {\r\n return typeof v === \"function\" ? v : function() {\r\n return v;\r\n };\r\n }\r\n d3.functor = d3_functor;\r\n d3.xhr = d3_xhrType(d3_identity);\r\n function d3_xhrType(response) {\r\n return function(url, mimeType, callback) {\r\n if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \r\n mimeType = null;\r\n return d3_xhr(url, mimeType, response, callback);\r\n };\r\n }\r\n function d3_xhr(url, mimeType, response, callback) {\r\n var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\r\n if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\r\n \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\r\n request.readyState > 3 && respond();\r\n };\r\n function respond() {\r\n var status = request.status, result;\r\n if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\r\n try {\r\n result = response.call(xhr, request);\r\n } catch (e) {\r\n dispatch.error.call(xhr, e);\r\n return;\r\n }\r\n dispatch.load.call(xhr, result);\r\n } else {\r\n dispatch.error.call(xhr, request);\r\n }\r\n }\r\n request.onprogress = function(event) {\r\n var o = d3.event;\r\n d3.event = event;\r\n try {\r\n dispatch.progress.call(xhr, request);\r\n } finally {\r\n d3.event = o;\r\n }\r\n };\r\n xhr.header = function(name, value) {\r\n name = (name + \"\").toLowerCase();\r\n if (arguments.length < 2) return headers[name];\r\n if (value == null) delete headers[name]; else headers[name] = value + \"\";\r\n return xhr;\r\n };\r\n xhr.mimeType = function(value) {\r\n if (!arguments.length) return mimeType;\r\n mimeType = value == null ? null : value + \"\";\r\n return xhr;\r\n };\r\n xhr.responseType = function(value) {\r\n if (!arguments.length) return responseType;\r\n responseType = value;\r\n return xhr;\r\n };\r\n xhr.response = function(value) {\r\n response = value;\r\n return xhr;\r\n };\r\n [ \"get\", \"post\" ].forEach(function(method) {\r\n xhr[method] = function() {\r\n return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\r\n };\r\n });\r\n xhr.send = function(method, data, callback) {\r\n if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\r\n request.open(method, url, true);\r\n if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\r\n if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\r\n if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\r\n if (responseType != null) request.responseType = responseType;\r\n if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\r\n callback(null, request);\r\n });\r\n dispatch.beforesend.call(xhr, request);\r\n request.send(data == null ? null : data);\r\n return xhr;\r\n };\r\n xhr.abort = function() {\r\n request.abort();\r\n return xhr;\r\n };\r\n d3.rebind(xhr, dispatch, \"on\");\r\n return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\r\n }\r\n function d3_xhr_fixCallback(callback) {\r\n return callback.length === 1 ? function(error, request) {\r\n callback(error == null ? request : null);\r\n } : callback;\r\n }\r\n function d3_xhrHasResponse(request) {\r\n var type = request.responseType;\r\n return type && type !== \"text\" ? request.response : request.responseText;\r\n }\r\n d3.dsv = function(delimiter, mimeType) {\r\n var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\r\n function dsv(url, row, callback) {\r\n if (arguments.length < 3) callback = row, row = null;\r\n var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\r\n xhr.row = function(_) {\r\n return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\r\n };\r\n return xhr;\r\n }\r\n function response(request) {\r\n return dsv.parse(request.responseText);\r\n }\r\n function typedResponse(f) {\r\n return function(request) {\r\n return dsv.parse(request.responseText, f);\r\n };\r\n }\r\n dsv.parse = function(text, f) {\r\n var o;\r\n return dsv.parseRows(text, function(row, i) {\r\n if (o) return o(row, i - 1);\r\n var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\r\n return JSON.stringify(name) + \": d[\" + i + \"]\";\r\n }).join(\",\") + \"}\");\r\n o = f ? function(row, i) {\r\n return f(a(row), i);\r\n } : a;\r\n });\r\n };\r\n dsv.parseRows = function(text, f) {\r\n var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\r\n function token() {\r\n if (I >= N) return EOF;\r\n if (eol) return eol = false, EOL;\r\n var j = I;\r\n if (text.charCodeAt(j) === 34) {\r\n var i = j;\r\n while (i++ < N) {\r\n if (text.charCodeAt(i) === 34) {\r\n if (text.charCodeAt(i + 1) !== 34) break;\r\n ++i;\r\n }\r\n }\r\n I = i + 2;\r\n var c = text.charCodeAt(i + 1);\r\n if (c === 13) {\r\n eol = true;\r\n if (text.charCodeAt(i + 2) === 10) ++I;\r\n } else if (c === 10) {\r\n eol = true;\r\n }\r\n return text.slice(j + 1, i).replace(/\"\"/g, '\"');\r\n }\r\n while (I < N) {\r\n var c = text.charCodeAt(I++), k = 1;\r\n if (c === 10) eol = true; else if (c === 13) {\r\n eol = true;\r\n if (text.charCodeAt(I) === 10) ++I, ++k;\r\n } else if (c !== delimiterCode) continue;\r\n return text.slice(j, I - k);\r\n }\r\n return text.slice(j);\r\n }\r\n while ((t = token()) !== EOF) {\r\n var a = [];\r\n while (t !== EOL && t !== EOF) {\r\n a.push(t);\r\n t = token();\r\n }\r\n if (f && (a = f(a, n++)) == null) continue;\r\n rows.push(a);\r\n }\r\n return rows;\r\n };\r\n dsv.format = function(rows) {\r\n if (Array.isArray(rows[0])) return dsv.formatRows(rows);\r\n var fieldSet = new d3_Set(), fields = [];\r\n rows.forEach(function(row) {\r\n for (var field in row) {\r\n if (!fieldSet.has(field)) {\r\n fields.push(fieldSet.add(field));\r\n }\r\n }\r\n });\r\n return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\r\n return fields.map(function(field) {\r\n return formatValue(row[field]);\r\n }).join(delimiter);\r\n })).join(\"\\n\");\r\n };\r\n dsv.formatRows = function(rows) {\r\n return rows.map(formatRow).join(\"\\n\");\r\n };\r\n function formatRow(row) {\r\n return row.map(formatValue).join(delimiter);\r\n }\r\n function formatValue(text) {\r\n return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\r\n }\r\n return dsv;\r\n };\r\n d3.csv = d3.dsv(\",\", \"text/csv\");\r\n d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\r\n var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\r\n setTimeout(callback, 17);\r\n };\r\n d3.timer = function() {\r\n d3_timer.apply(this, arguments);\r\n };\r\n function d3_timer(callback, delay, then) {\r\n var n = arguments.length;\r\n if (n < 2) delay = 0;\r\n if (n < 3) then = Date.now();\r\n var time = then + delay, timer = {\r\n c: callback,\r\n t: time,\r\n n: null\r\n };\r\n if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\r\n d3_timer_queueTail = timer;\r\n if (!d3_timer_interval) {\r\n d3_timer_timeout = clearTimeout(d3_timer_timeout);\r\n d3_timer_interval = 1;\r\n d3_timer_frame(d3_timer_step);\r\n }\r\n return timer;\r\n }\r\n function d3_timer_step() {\r\n var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\r\n if (delay > 24) {\r\n if (isFinite(delay)) {\r\n clearTimeout(d3_timer_timeout);\r\n d3_timer_timeout = setTimeout(d3_timer_step, delay);\r\n }\r\n d3_timer_interval = 0;\r\n } else {\r\n d3_timer_interval = 1;\r\n d3_timer_frame(d3_timer_step);\r\n }\r\n }\r\n d3.timer.flush = function() {\r\n d3_timer_mark();\r\n d3_timer_sweep();\r\n };\r\n function d3_timer_mark() {\r\n var now = Date.now(), timer = d3_timer_queueHead;\r\n while (timer) {\r\n if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\r\n timer = timer.n;\r\n }\r\n return now;\r\n }\r\n function d3_timer_sweep() {\r\n var t0, t1 = d3_timer_queueHead, time = Infinity;\r\n while (t1) {\r\n if (t1.c) {\r\n if (t1.t < time) time = t1.t;\r\n t1 = (t0 = t1).n;\r\n } else {\r\n t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\r\n }\r\n }\r\n d3_timer_queueTail = t0;\r\n return time;\r\n }\r\n function d3_format_precision(x, p) {\r\n return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\r\n }\r\n d3.round = function(x, n) {\r\n return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\r\n };\r\n var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\r\n d3.formatPrefix = function(value, precision) {\r\n var i = 0;\r\n if (value = +value) {\r\n if (value < 0) value *= -1;\r\n if (precision) value = d3.round(value, d3_format_precision(value, precision));\r\n i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\r\n i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\r\n }\r\n return d3_formatPrefixes[8 + i / 3];\r\n };\r\n function d3_formatPrefix(d, i) {\r\n var k = Math.pow(10, abs(8 - i) * 3);\r\n return {\r\n scale: i > 8 ? function(d) {\r\n return d / k;\r\n } : function(d) {\r\n return d * k;\r\n },\r\n symbol: d\r\n };\r\n }\r\n function d3_locale_numberFormat(locale) {\r\n var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\r\n var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\r\n while (i > 0 && g > 0) {\r\n if (length + g + 1 > width) g = Math.max(1, width - length);\r\n t.push(value.substring(i -= g, i + g));\r\n if ((length += g + 1) > width) break;\r\n g = locale_grouping[j = (j + 1) % locale_grouping.length];\r\n }\r\n return t.reverse().join(locale_thousands);\r\n } : d3_identity;\r\n return function(specifier) {\r\n var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\r\n if (precision) precision = +precision.substring(1);\r\n if (zfill || fill === \"0\" && align === \"=\") {\r\n zfill = fill = \"0\";\r\n align = \"=\";\r\n }\r\n switch (type) {\r\n case \"n\":\r\n comma = true;\r\n type = \"g\";\r\n break;\r\n\r\n case \"%\":\r\n scale = 100;\r\n suffix = \"%\";\r\n type = \"f\";\r\n break;\r\n\r\n case \"p\":\r\n scale = 100;\r\n suffix = \"%\";\r\n type = \"r\";\r\n break;\r\n\r\n case \"b\":\r\n case \"o\":\r\n case \"x\":\r\n case \"X\":\r\n if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\r\n\r\n case \"c\":\r\n exponent = false;\r\n\r\n case \"d\":\r\n integer = true;\r\n precision = 0;\r\n break;\r\n\r\n case \"s\":\r\n scale = -1;\r\n type = \"r\";\r\n break;\r\n }\r\n if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\r\n if (type == \"r\" && !precision) type = \"g\";\r\n if (precision != null) {\r\n if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\r\n }\r\n type = d3_format_types.get(type) || d3_format_typeDefault;\r\n var zcomma = zfill && comma;\r\n return function(value) {\r\n var fullSuffix = suffix;\r\n if (integer && value % 1) return \"\";\r\n var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\r\n if (scale < 0) {\r\n var unit = d3.formatPrefix(value, precision);\r\n value = unit.scale(value);\r\n fullSuffix = unit.symbol + suffix;\r\n } else {\r\n value *= scale;\r\n }\r\n value = type(value, precision);\r\n var i = value.lastIndexOf(\".\"), before, after;\r\n if (i < 0) {\r\n var j = exponent ? value.lastIndexOf(\"e\") : -1;\r\n if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\r\n } else {\r\n before = value.substring(0, i);\r\n after = locale_decimal + value.substring(i + 1);\r\n }\r\n if (!zfill && comma) before = formatGroup(before, Infinity);\r\n var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\r\n if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\r\n negative += prefix;\r\n value = before + after;\r\n return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\r\n };\r\n };\r\n }\r\n var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\r\n var d3_format_types = d3.map({\r\n b: function(x) {\r\n return x.toString(2);\r\n },\r\n c: function(x) {\r\n return String.fromCharCode(x);\r\n },\r\n o: function(x) {\r\n return x.toString(8);\r\n },\r\n x: function(x) {\r\n return x.toString(16);\r\n },\r\n X: function(x) {\r\n return x.toString(16).toUpperCase();\r\n },\r\n g: function(x, p) {\r\n return x.toPrecision(p);\r\n },\r\n e: function(x, p) {\r\n return x.toExponential(p);\r\n },\r\n f: function(x, p) {\r\n return x.toFixed(p);\r\n },\r\n r: function(x, p) {\r\n return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\r\n }\r\n });\r\n function d3_format_typeDefault(x) {\r\n return x + \"\";\r\n }\r\n var d3_time = d3.time = {}, d3_date = Date;\r\n function d3_date_utc() {\r\n this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\r\n }\r\n d3_date_utc.prototype = {\r\n getDate: function() {\r\n return this._.getUTCDate();\r\n },\r\n getDay: function() {\r\n return this._.getUTCDay();\r\n },\r\n getFullYear: function() {\r\n return this._.getUTCFullYear();\r\n },\r\n getHours: function() {\r\n return this._.getUTCHours();\r\n },\r\n getMilliseconds: function() {\r\n return this._.getUTCMilliseconds();\r\n },\r\n getMinutes: function() {\r\n return this._.getUTCMinutes();\r\n },\r\n getMonth: function() {\r\n return this._.getUTCMonth();\r\n },\r\n getSeconds: function() {\r\n return this._.getUTCSeconds();\r\n },\r\n getTime: function() {\r\n return this._.getTime();\r\n },\r\n getTimezoneOffset: function() {\r\n return 0;\r\n },\r\n valueOf: function() {\r\n return this._.valueOf();\r\n },\r\n setDate: function() {\r\n d3_time_prototype.setUTCDate.apply(this._, arguments);\r\n },\r\n setDay: function() {\r\n d3_time_prototype.setUTCDay.apply(this._, arguments);\r\n },\r\n setFullYear: function() {\r\n d3_time_prototype.setUTCFullYear.apply(this._, arguments);\r\n },\r\n setHours: function() {\r\n d3_time_prototype.setUTCHours.apply(this._, arguments);\r\n },\r\n setMilliseconds: function() {\r\n d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\r\n },\r\n setMinutes: function() {\r\n d3_time_prototype.setUTCMinutes.apply(this._, arguments);\r\n },\r\n setMonth: function() {\r\n d3_time_prototype.setUTCMonth.apply(this._, arguments);\r\n },\r\n setSeconds: function() {\r\n d3_time_prototype.setUTCSeconds.apply(this._, arguments);\r\n },\r\n setTime: function() {\r\n d3_time_prototype.setTime.apply(this._, arguments);\r\n }\r\n };\r\n var d3_time_prototype = Date.prototype;\r\n function d3_time_interval(local, step, number) {\r\n function round(date) {\r\n var d0 = local(date), d1 = offset(d0, 1);\r\n return date - d0 < d1 - date ? d0 : d1;\r\n }\r\n function ceil(date) {\r\n step(date = local(new d3_date(date - 1)), 1);\r\n return date;\r\n }\r\n function offset(date, k) {\r\n step(date = new d3_date(+date), k);\r\n return date;\r\n }\r\n function range(t0, t1, dt) {\r\n var time = ceil(t0), times = [];\r\n if (dt > 1) {\r\n while (time < t1) {\r\n if (!(number(time) % dt)) times.push(new Date(+time));\r\n step(time, 1);\r\n }\r\n } else {\r\n while (time < t1) times.push(new Date(+time)), step(time, 1);\r\n }\r\n return times;\r\n }\r\n function range_utc(t0, t1, dt) {\r\n try {\r\n d3_date = d3_date_utc;\r\n var utc = new d3_date_utc();\r\n utc._ = t0;\r\n return range(utc, t1, dt);\r\n } finally {\r\n d3_date = Date;\r\n }\r\n }\r\n local.floor = local;\r\n local.round = round;\r\n local.ceil = ceil;\r\n local.offset = offset;\r\n local.range = range;\r\n var utc = local.utc = d3_time_interval_utc(local);\r\n utc.floor = utc;\r\n utc.round = d3_time_interval_utc(round);\r\n utc.ceil = d3_time_interval_utc(ceil);\r\n utc.offset = d3_time_interval_utc(offset);\r\n utc.range = range_utc;\r\n return local;\r\n }\r\n function d3_time_interval_utc(method) {\r\n return function(date, k) {\r\n try {\r\n d3_date = d3_date_utc;\r\n var utc = new d3_date_utc();\r\n utc._ = date;\r\n return method(utc, k)._;\r\n } finally {\r\n d3_date = Date;\r\n }\r\n };\r\n }\r\n d3_time.year = d3_time_interval(function(date) {\r\n date = d3_time.day(date);\r\n date.setMonth(0, 1);\r\n return date;\r\n }, function(date, offset) {\r\n date.setFullYear(date.getFullYear() + offset);\r\n }, function(date) {\r\n return date.getFullYear();\r\n });\r\n d3_time.years = d3_time.year.range;\r\n d3_time.years.utc = d3_time.year.utc.range;\r\n d3_time.day = d3_time_interval(function(date) {\r\n var day = new d3_date(2e3, 0);\r\n day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\r\n return day;\r\n }, function(date, offset) {\r\n date.setDate(date.getDate() + offset);\r\n }, function(date) {\r\n return date.getDate() - 1;\r\n });\r\n d3_time.days = d3_time.day.range;\r\n d3_time.days.utc = d3_time.day.utc.range;\r\n d3_time.dayOfYear = function(date) {\r\n var year = d3_time.year(date);\r\n return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\r\n };\r\n [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\r\n i = 7 - i;\r\n var interval = d3_time[day] = d3_time_interval(function(date) {\r\n (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\r\n return date;\r\n }, function(date, offset) {\r\n date.setDate(date.getDate() + Math.floor(offset) * 7);\r\n }, function(date) {\r\n var day = d3_time.year(date).getDay();\r\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\r\n });\r\n d3_time[day + \"s\"] = interval.range;\r\n d3_time[day + \"s\"].utc = interval.utc.range;\r\n d3_time[day + \"OfYear\"] = function(date) {\r\n var day = d3_time.year(date).getDay();\r\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\r\n };\r\n });\r\n d3_time.week = d3_time.sunday;\r\n d3_time.weeks = d3_time.sunday.range;\r\n d3_time.weeks.utc = d3_time.sunday.utc.range;\r\n d3_time.weekOfYear = d3_time.sundayOfYear;\r\n function d3_locale_timeFormat(locale) {\r\n var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\r\n function d3_time_format(template) {\r\n var n = template.length;\r\n function format(date) {\r\n var string = [], i = -1, j = 0, c, p, f;\r\n while (++i < n) {\r\n if (template.charCodeAt(i) === 37) {\r\n string.push(template.slice(j, i));\r\n if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\r\n if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\r\n string.push(c);\r\n j = i + 1;\r\n }\r\n }\r\n string.push(template.slice(j, i));\r\n return string.join(\"\");\r\n }\r\n format.parse = function(string) {\r\n var d = {\r\n y: 1900,\r\n m: 0,\r\n d: 1,\r\n H: 0,\r\n M: 0,\r\n S: 0,\r\n L: 0,\r\n Z: null\r\n }, i = d3_time_parse(d, template, string, 0);\r\n if (i != string.length) return null;\r\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\r\n var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\r\n if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\r\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\r\n date.setFullYear(d.y, 0, 1);\r\n date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\r\n } else date.setFullYear(d.y, d.m, d.d);\r\n date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\r\n return localZ ? date._ : date;\r\n };\r\n format.toString = function() {\r\n return template;\r\n };\r\n return format;\r\n }\r\n function d3_time_parse(date, template, string, j) {\r\n var c, p, t, i = 0, n = template.length, m = string.length;\r\n while (i < n) {\r\n if (j >= m) return -1;\r\n c = template.charCodeAt(i++);\r\n if (c === 37) {\r\n t = template.charAt(i++);\r\n p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\r\n if (!p || (j = p(date, string, j)) < 0) return -1;\r\n } else if (c != string.charCodeAt(j++)) {\r\n return -1;\r\n }\r\n }\r\n return j;\r\n }\r\n d3_time_format.utc = function(template) {\r\n var local = d3_time_format(template);\r\n function format(date) {\r\n try {\r\n d3_date = d3_date_utc;\r\n var utc = new d3_date();\r\n utc._ = date;\r\n return local(utc);\r\n } finally {\r\n d3_date = Date;\r\n }\r\n }\r\n format.parse = function(string) {\r\n try {\r\n d3_date = d3_date_utc;\r\n var date = local.parse(string);\r\n return date && date._;\r\n } finally {\r\n d3_date = Date;\r\n }\r\n };\r\n format.toString = local.toString;\r\n return format;\r\n };\r\n d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\r\n var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\r\n locale_periods.forEach(function(p, i) {\r\n d3_time_periodLookup.set(p.toLowerCase(), i);\r\n });\r\n var d3_time_formats = {\r\n a: function(d) {\r\n return locale_shortDays[d.getDay()];\r\n },\r\n A: function(d) {\r\n return locale_days[d.getDay()];\r\n },\r\n b: function(d) {\r\n return locale_shortMonths[d.getMonth()];\r\n },\r\n B: function(d) {\r\n return locale_months[d.getMonth()];\r\n },\r\n c: d3_time_format(locale_dateTime),\r\n d: function(d, p) {\r\n return d3_time_formatPad(d.getDate(), p, 2);\r\n },\r\n e: function(d, p) {\r\n return d3_time_formatPad(d.getDate(), p, 2);\r\n },\r\n H: function(d, p) {\r\n return d3_time_formatPad(d.getHours(), p, 2);\r\n },\r\n I: function(d, p) {\r\n return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\r\n },\r\n j: function(d, p) {\r\n return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\r\n },\r\n L: function(d, p) {\r\n return d3_time_formatPad(d.getMilliseconds(), p, 3);\r\n },\r\n m: function(d, p) {\r\n return d3_time_formatPad(d.getMonth() + 1, p, 2);\r\n },\r\n M: function(d, p) {\r\n return d3_time_formatPad(d.getMinutes(), p, 2);\r\n },\r\n p: function(d) {\r\n return locale_periods[+(d.getHours() >= 12)];\r\n },\r\n S: function(d, p) {\r\n return d3_time_formatPad(d.getSeconds(), p, 2);\r\n },\r\n U: function(d, p) {\r\n return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\r\n },\r\n w: function(d) {\r\n return d.getDay();\r\n },\r\n W: function(d, p) {\r\n return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\r\n },\r\n x: d3_time_format(locale_date),\r\n X: d3_time_format(locale_time),\r\n y: function(d, p) {\r\n return d3_time_formatPad(d.getFullYear() % 100, p, 2);\r\n },\r\n Y: function(d, p) {\r\n return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\r\n },\r\n Z: d3_time_zone,\r\n \"%\": function() {\r\n return \"%\";\r\n }\r\n };\r\n var d3_time_parsers = {\r\n a: d3_time_parseWeekdayAbbrev,\r\n A: d3_time_parseWeekday,\r\n b: d3_time_parseMonthAbbrev,\r\n B: d3_time_parseMonth,\r\n c: d3_time_parseLocaleFull,\r\n d: d3_time_parseDay,\r\n e: d3_time_parseDay,\r\n H: d3_time_parseHour24,\r\n I: d3_time_parseHour24,\r\n j: d3_time_parseDayOfYear,\r\n L: d3_time_parseMilliseconds,\r\n m: d3_time_parseMonthNumber,\r\n M: d3_time_parseMinutes,\r\n p: d3_time_parseAmPm,\r\n S: d3_time_parseSeconds,\r\n U: d3_time_parseWeekNumberSunday,\r\n w: d3_time_parseWeekdayNumber,\r\n W: d3_time_parseWeekNumberMonday,\r\n x: d3_time_parseLocaleDate,\r\n X: d3_time_parseLocaleTime,\r\n y: d3_time_parseYear,\r\n Y: d3_time_parseFullYear,\r\n Z: d3_time_parseZone,\r\n \"%\": d3_time_parseLiteralPercent\r\n };\r\n function d3_time_parseWeekdayAbbrev(date, string, i) {\r\n d3_time_dayAbbrevRe.lastIndex = 0;\r\n var n = d3_time_dayAbbrevRe.exec(string.slice(i));\r\n return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\r\n }\r\n function d3_time_parseWeekday(date, string, i) {\r\n d3_time_dayRe.lastIndex = 0;\r\n var n = d3_time_dayRe.exec(string.slice(i));\r\n return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\r\n }\r\n function d3_time_parseMonthAbbrev(date, string, i) {\r\n d3_time_monthAbbrevRe.lastIndex = 0;\r\n var n = d3_time_monthAbbrevRe.exec(string.slice(i));\r\n return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\r\n }\r\n function d3_time_parseMonth(date, string, i) {\r\n d3_time_monthRe.lastIndex = 0;\r\n var n = d3_time_monthRe.exec(string.slice(i));\r\n return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\r\n }\r\n function d3_time_parseLocaleFull(date, string, i) {\r\n return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\r\n }\r\n function d3_time_parseLocaleDate(date, string, i) {\r\n return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\r\n }\r\n function d3_time_parseLocaleTime(date, string, i) {\r\n return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\r\n }\r\n function d3_time_parseAmPm(date, string, i) {\r\n var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\r\n return n == null ? -1 : (date.p = n, i);\r\n }\r\n return d3_time_format;\r\n }\r\n var d3_time_formatPads = {\r\n \"-\": \"\",\r\n _: \" \",\r\n \"0\": \"0\"\r\n }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\r\n function d3_time_formatPad(value, fill, width) {\r\n var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\r\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\r\n }\r\n function d3_time_formatRe(names) {\r\n return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\r\n }\r\n function d3_time_formatLookup(names) {\r\n var map = new d3_Map(), i = -1, n = names.length;\r\n while (++i < n) map.set(names[i].toLowerCase(), i);\r\n return map;\r\n }\r\n function d3_time_parseWeekdayNumber(date, string, i) {\r\n d3_time_numberRe.lastIndex = 0;\r\n var n = d3_time_numberRe.exec(string.slice(i, i + 1));\r\n return n ? (date.w = +n[0], i + n[0].length) : -1;\r\n }\r\n function d3_time_parseWeekNumberSunday(date, string, i) {\r\n d3_time_numberRe.lastIndex = 0;\r\n var n = d3_time_numberRe.exec(string.slice(i));\r\n return n ? (date.U = +n[0], i + n[0].length) : -1;\r\n }\r\n function d3_time_parseWeekNumberMonday(date, string, i) {\r\n d3_time_numberRe.lastIndex = 0;\r\n var n = d3_time_numberRe.exec(string.slice(i));\r\n return n ? (date.W = +n[0], i + n[0].length) : -1;\r\n }\r\n function d3_time_parseFullYear(date, string, i) {\r\n d3_time_numberRe.lastIndex = 0;\r\n var n = d3_time_numberRe.exec(string.slice(i, i + 4));\r\n return n ? (date.y = +n[0], i + n[0].length) : -1;\r\n }\r\n function d3_time_parseYear(date, string, i) {\r\n d3_time_numberRe.lastIndex = 0;\r\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\r\n return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\r\n }\r\n function d3_time_parseZone(date, string, i) {\r\n return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \r\n i + 5) : -1;\r\n }\r\n function d3_time_expandYear(d) {\r\n return d + (d > 68 ? 1900 : 2e3);\r\n }\r\n function d3_time_parseMonthNumber(date, string, i) {\r\n d3_time_numberRe.lastIndex = 0;\r\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\r\n return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\r\n }\r\n function d3_time_parseDay(date, string, i) {\r\n d3_time_numberRe.lastIndex = 0;\r\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\r\n return n ? (date.d = +n[0], i + n[0].length) : -1;\r\n }\r\n function d3_time_parseDayOfYear(date, string, i) {\r\n d3_time_numberRe.lastIndex = 0;\r\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\r\n return n ? (date.j = +n[0], i + n[0].length) : -1;\r\n }\r\n function d3_time_parseHour24(date, string, i) {\r\n d3_time_numberRe.lastIndex = 0;\r\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\r\n return n ? (date.H = +n[0], i + n[0].length) : -1;\r\n }\r\n function d3_time_parseMinutes(date, string, i) {\r\n d3_time_numberRe.lastIndex = 0;\r\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\r\n return n ? (date.M = +n[0], i + n[0].length) : -1;\r\n }\r\n function d3_time_parseSeconds(date, string, i) {\r\n d3_time_numberRe.lastIndex = 0;\r\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\r\n return n ? (date.S = +n[0], i + n[0].length) : -1;\r\n }\r\n function d3_time_parseMilliseconds(date, string, i) {\r\n d3_time_numberRe.lastIndex = 0;\r\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\r\n return n ? (date.L = +n[0], i + n[0].length) : -1;\r\n }\r\n function d3_time_zone(d) {\r\n var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\r\n return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\r\n }\r\n function d3_time_parseLiteralPercent(date, string, i) {\r\n d3_time_percentRe.lastIndex = 0;\r\n var n = d3_time_percentRe.exec(string.slice(i, i + 1));\r\n return n ? i + n[0].length : -1;\r\n }\r\n function d3_time_formatMulti(formats) {\r\n var n = formats.length, i = -1;\r\n while (++i < n) formats[i][0] = this(formats[i][0]);\r\n return function(date) {\r\n var i = 0, f = formats[i];\r\n while (!f[1](date)) f = formats[++i];\r\n return f[0](date);\r\n };\r\n }\r\n d3.locale = function(locale) {\r\n return {\r\n numberFormat: d3_locale_numberFormat(locale),\r\n timeFormat: d3_locale_timeFormat(locale)\r\n };\r\n };\r\n var d3_locale_enUS = d3.locale({\r\n decimal: \".\",\r\n thousands: \",\",\r\n grouping: [ 3 ],\r\n currency: [ \"$\", \"\" ],\r\n dateTime: \"%a %b %e %X %Y\",\r\n date: \"%m/%d/%Y\",\r\n time: \"%H:%M:%S\",\r\n periods: [ \"AM\", \"PM\" ],\r\n days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\r\n shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\r\n months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\r\n shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\r\n });\r\n d3.format = d3_locale_enUS.numberFormat;\r\n d3.geo = {};\r\n function d3_adder() {}\r\n d3_adder.prototype = {\r\n s: 0,\r\n t: 0,\r\n add: function(y) {\r\n d3_adderSum(y, this.t, d3_adderTemp);\r\n d3_adderSum(d3_adderTemp.s, this.s, this);\r\n if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\r\n },\r\n reset: function() {\r\n this.s = this.t = 0;\r\n },\r\n valueOf: function() {\r\n return this.s;\r\n }\r\n };\r\n var d3_adderTemp = new d3_adder();\r\n function d3_adderSum(a, b, o) {\r\n var x = o.s = a + b, bv = x - a, av = x - bv;\r\n o.t = a - av + (b - bv);\r\n }\r\n d3.geo.stream = function(object, listener) {\r\n if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\r\n d3_geo_streamObjectType[object.type](object, listener);\r\n } else {\r\n d3_geo_streamGeometry(object, listener);\r\n }\r\n };\r\n function d3_geo_streamGeometry(geometry, listener) {\r\n if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\r\n d3_geo_streamGeometryType[geometry.type](geometry, listener);\r\n }\r\n }\r\n var d3_geo_streamObjectType = {\r\n Feature: function(feature, listener) {\r\n d3_geo_streamGeometry(feature.geometry, listener);\r\n },\r\n FeatureCollection: function(object, listener) {\r\n var features = object.features, i = -1, n = features.length;\r\n while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\r\n }\r\n };\r\n var d3_geo_streamGeometryType = {\r\n Sphere: function(object, listener) {\r\n listener.sphere();\r\n },\r\n Point: function(object, listener) {\r\n object = object.coordinates;\r\n listener.point(object[0], object[1], object[2]);\r\n },\r\n MultiPoint: function(object, listener) {\r\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\r\n while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\r\n },\r\n LineString: function(object, listener) {\r\n d3_geo_streamLine(object.coordinates, listener, 0);\r\n },\r\n MultiLineString: function(object, listener) {\r\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\r\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\r\n },\r\n Polygon: function(object, listener) {\r\n d3_geo_streamPolygon(object.coordinates, listener);\r\n },\r\n MultiPolygon: function(object, listener) {\r\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\r\n while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\r\n },\r\n GeometryCollection: function(object, listener) {\r\n var geometries = object.geometries, i = -1, n = geometries.length;\r\n while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\r\n }\r\n };\r\n function d3_geo_streamLine(coordinates, listener, closed) {\r\n var i = -1, n = coordinates.length - closed, coordinate;\r\n listener.lineStart();\r\n while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\r\n listener.lineEnd();\r\n }\r\n function d3_geo_streamPolygon(coordinates, listener) {\r\n var i = -1, n = coordinates.length;\r\n listener.polygonStart();\r\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\r\n listener.polygonEnd();\r\n }\r\n d3.geo.area = function(object) {\r\n d3_geo_areaSum = 0;\r\n d3.geo.stream(object, d3_geo_area);\r\n return d3_geo_areaSum;\r\n };\r\n var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\r\n var d3_geo_area = {\r\n sphere: function() {\r\n d3_geo_areaSum += 4 * π;\r\n },\r\n point: d3_noop,\r\n lineStart: d3_noop,\r\n lineEnd: d3_noop,\r\n polygonStart: function() {\r\n d3_geo_areaRingSum.reset();\r\n d3_geo_area.lineStart = d3_geo_areaRingStart;\r\n },\r\n polygonEnd: function() {\r\n var area = 2 * d3_geo_areaRingSum;\r\n d3_geo_areaSum += area < 0 ? 4 * π + area : area;\r\n d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\r\n }\r\n };\r\n function d3_geo_areaRingStart() {\r\n var λ00, φ00, λ0, cosφ0, sinφ0;\r\n d3_geo_area.point = function(λ, φ) {\r\n d3_geo_area.point = nextPoint;\r\n λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \r\n sinφ0 = Math.sin(φ);\r\n };\r\n function nextPoint(λ, φ) {\r\n λ *= d3_radians;\r\n φ = φ * d3_radians / 2 + π / 4;\r\n var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\r\n d3_geo_areaRingSum.add(Math.atan2(v, u));\r\n λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\r\n }\r\n d3_geo_area.lineEnd = function() {\r\n nextPoint(λ00, φ00);\r\n };\r\n }\r\n function d3_geo_cartesian(spherical) {\r\n var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\r\n return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\r\n }\r\n function d3_geo_cartesianDot(a, b) {\r\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\r\n }\r\n function d3_geo_cartesianCross(a, b) {\r\n return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\r\n }\r\n function d3_geo_cartesianAdd(a, b) {\r\n a[0] += b[0];\r\n a[1] += b[1];\r\n a[2] += b[2];\r\n }\r\n function d3_geo_cartesianScale(vector, k) {\r\n return [ vector[0] * k, vector[1] * k, vector[2] * k ];\r\n }\r\n function d3_geo_cartesianNormalize(d) {\r\n var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\r\n d[0] /= l;\r\n d[1] /= l;\r\n d[2] /= l;\r\n }\r\n function d3_geo_spherical(cartesian) {\r\n return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\r\n }\r\n function d3_geo_sphericalEqual(a, b) {\r\n return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\r\n }\r\n d3.geo.bounds = function() {\r\n var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\r\n var bound = {\r\n point: point,\r\n lineStart: lineStart,\r\n lineEnd: lineEnd,\r\n polygonStart: function() {\r\n bound.point = ringPoint;\r\n bound.lineStart = ringStart;\r\n bound.lineEnd = ringEnd;\r\n dλSum = 0;\r\n d3_geo_area.polygonStart();\r\n },\r\n polygonEnd: function() {\r\n d3_geo_area.polygonEnd();\r\n bound.point = point;\r\n bound.lineStart = lineStart;\r\n bound.lineEnd = lineEnd;\r\n if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\r\n range[0] = λ0, range[1] = λ1;\r\n }\r\n };\r\n function point(λ, φ) {\r\n ranges.push(range = [ λ0 = λ, λ1 = λ ]);\r\n if (φ < φ0) φ0 = φ;\r\n if (φ > φ1) φ1 = φ;\r\n }\r\n function linePoint(λ, φ) {\r\n var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\r\n if (p0) {\r\n var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\r\n d3_geo_cartesianNormalize(inflection);\r\n inflection = d3_geo_spherical(inflection);\r\n var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\r\n if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\r\n var φi = inflection[1] * d3_degrees;\r\n if (φi > φ1) φ1 = φi;\r\n } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\r\n var φi = -inflection[1] * d3_degrees;\r\n if (φi < φ0) φ0 = φi;\r\n } else {\r\n if (φ < φ0) φ0 = φ;\r\n if (φ > φ1) φ1 = φ;\r\n }\r\n if (antimeridian) {\r\n if (λ < λ_) {\r\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\r\n } else {\r\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\r\n }\r\n } else {\r\n if (λ1 >= λ0) {\r\n if (λ < λ0) λ0 = λ;\r\n if (λ > λ1) λ1 = λ;\r\n } else {\r\n if (λ > λ_) {\r\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\r\n } else {\r\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\r\n }\r\n }\r\n }\r\n } else {\r\n point(λ, φ);\r\n }\r\n p0 = p, λ_ = λ;\r\n }\r\n function lineStart() {\r\n bound.point = linePoint;\r\n }\r\n function lineEnd() {\r\n range[0] = λ0, range[1] = λ1;\r\n bound.point = point;\r\n p0 = null;\r\n }\r\n function ringPoint(λ, φ) {\r\n if (p0) {\r\n var dλ = λ - λ_;\r\n dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\r\n } else λ__ = λ, φ__ = φ;\r\n d3_geo_area.point(λ, φ);\r\n linePoint(λ, φ);\r\n }\r\n function ringStart() {\r\n d3_geo_area.lineStart();\r\n }\r\n function ringEnd() {\r\n ringPoint(λ__, φ__);\r\n d3_geo_area.lineEnd();\r\n if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\r\n range[0] = λ0, range[1] = λ1;\r\n p0 = null;\r\n }\r\n function angle(λ0, λ1) {\r\n return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\r\n }\r\n function compareRanges(a, b) {\r\n return a[0] - b[0];\r\n }\r\n function withinRange(x, range) {\r\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\r\n }\r\n return function(feature) {\r\n φ1 = λ1 = -(λ0 = φ0 = Infinity);\r\n ranges = [];\r\n d3.geo.stream(feature, bound);\r\n var n = ranges.length;\r\n if (n) {\r\n ranges.sort(compareRanges);\r\n for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\r\n b = ranges[i];\r\n if (withinRange(b[0], a) || withinRange(b[1], a)) {\r\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\r\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\r\n } else {\r\n merged.push(a = b);\r\n }\r\n }\r\n var best = -Infinity, dλ;\r\n for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\r\n b = merged[i];\r\n if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\r\n }\r\n }\r\n ranges = range = null;\r\n return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\r\n };\r\n }();\r\n d3.geo.centroid = function(object) {\r\n d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\r\n d3.geo.stream(object, d3_geo_centroid);\r\n var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\r\n if (m < ε2) {\r\n x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\r\n if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\r\n m = x * x + y * y + z * z;\r\n if (m < ε2) return [ NaN, NaN ];\r\n }\r\n return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\r\n };\r\n var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\r\n var d3_geo_centroid = {\r\n sphere: d3_noop,\r\n point: d3_geo_centroidPoint,\r\n lineStart: d3_geo_centroidLineStart,\r\n lineEnd: d3_geo_centroidLineEnd,\r\n polygonStart: function() {\r\n d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\r\n },\r\n polygonEnd: function() {\r\n d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\r\n }\r\n };\r\n function d3_geo_centroidPoint(λ, φ) {\r\n λ *= d3_radians;\r\n var cosφ = Math.cos(φ *= d3_radians);\r\n d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\r\n }\r\n function d3_geo_centroidPointXYZ(x, y, z) {\r\n ++d3_geo_centroidW0;\r\n d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\r\n d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\r\n d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\r\n }\r\n function d3_geo_centroidLineStart() {\r\n var x0, y0, z0;\r\n d3_geo_centroid.point = function(λ, φ) {\r\n λ *= d3_radians;\r\n var cosφ = Math.cos(φ *= d3_radians);\r\n x0 = cosφ * Math.cos(λ);\r\n y0 = cosφ * Math.sin(λ);\r\n z0 = Math.sin(φ);\r\n d3_geo_centroid.point = nextPoint;\r\n d3_geo_centroidPointXYZ(x0, y0, z0);\r\n };\r\n function nextPoint(λ, φ) {\r\n λ *= d3_radians;\r\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\r\n d3_geo_centroidW1 += w;\r\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\r\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\r\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\r\n d3_geo_centroidPointXYZ(x0, y0, z0);\r\n }\r\n }\r\n function d3_geo_centroidLineEnd() {\r\n d3_geo_centroid.point = d3_geo_centroidPoint;\r\n }\r\n function d3_geo_centroidRingStart() {\r\n var λ00, φ00, x0, y0, z0;\r\n d3_geo_centroid.point = function(λ, φ) {\r\n λ00 = λ, φ00 = φ;\r\n d3_geo_centroid.point = nextPoint;\r\n λ *= d3_radians;\r\n var cosφ = Math.cos(φ *= d3_radians);\r\n x0 = cosφ * Math.cos(λ);\r\n y0 = cosφ * Math.sin(λ);\r\n z0 = Math.sin(φ);\r\n d3_geo_centroidPointXYZ(x0, y0, z0);\r\n };\r\n d3_geo_centroid.lineEnd = function() {\r\n nextPoint(λ00, φ00);\r\n d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\r\n d3_geo_centroid.point = d3_geo_centroidPoint;\r\n };\r\n function nextPoint(λ, φ) {\r\n λ *= d3_radians;\r\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\r\n d3_geo_centroidX2 += v * cx;\r\n d3_geo_centroidY2 += v * cy;\r\n d3_geo_centroidZ2 += v * cz;\r\n d3_geo_centroidW1 += w;\r\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\r\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\r\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\r\n d3_geo_centroidPointXYZ(x0, y0, z0);\r\n }\r\n }\r\n function d3_geo_compose(a, b) {\r\n function compose(x, y) {\r\n return x = a(x, y), b(x[0], x[1]);\r\n }\r\n if (a.invert && b.invert) compose.invert = function(x, y) {\r\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\r\n };\r\n return compose;\r\n }\r\n function d3_true() {\r\n return true;\r\n }\r\n function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\r\n var subject = [], clip = [];\r\n segments.forEach(function(segment) {\r\n if ((n = segment.length - 1) <= 0) return;\r\n var n, p0 = segment[0], p1 = segment[n];\r\n if (d3_geo_sphericalEqual(p0, p1)) {\r\n listener.lineStart();\r\n for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\r\n listener.lineEnd();\r\n return;\r\n }\r\n var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\r\n a.o = b;\r\n subject.push(a);\r\n clip.push(b);\r\n a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\r\n b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\r\n a.o = b;\r\n subject.push(a);\r\n clip.push(b);\r\n });\r\n clip.sort(compare);\r\n d3_geo_clipPolygonLinkCircular(subject);\r\n d3_geo_clipPolygonLinkCircular(clip);\r\n if (!subject.length) return;\r\n for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\r\n clip[i].e = entry = !entry;\r\n }\r\n var start = subject[0], points, point;\r\n while (1) {\r\n var current = start, isSubject = true;\r\n while (current.v) if ((current = current.n) === start) return;\r\n points = current.z;\r\n listener.lineStart();\r\n do {\r\n current.v = current.o.v = true;\r\n if (current.e) {\r\n if (isSubject) {\r\n for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\r\n } else {\r\n interpolate(current.x, current.n.x, 1, listener);\r\n }\r\n current = current.n;\r\n } else {\r\n if (isSubject) {\r\n points = current.p.z;\r\n for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\r\n } else {\r\n interpolate(current.x, current.p.x, -1, listener);\r\n }\r\n current = current.p;\r\n }\r\n current = current.o;\r\n points = current.z;\r\n isSubject = !isSubject;\r\n } while (!current.v);\r\n listener.lineEnd();\r\n }\r\n }\r\n function d3_geo_clipPolygonLinkCircular(array) {\r\n if (!(n = array.length)) return;\r\n var n, i = 0, a = array[0], b;\r\n while (++i < n) {\r\n a.n = b = array[i];\r\n b.p = a;\r\n a = b;\r\n }\r\n a.n = b = array[0];\r\n b.p = a;\r\n }\r\n function d3_geo_clipPolygonIntersection(point, points, other, entry) {\r\n this.x = point;\r\n this.z = points;\r\n this.o = other;\r\n this.e = entry;\r\n this.v = false;\r\n this.n = this.p = null;\r\n }\r\n function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\r\n return function(rotate, listener) {\r\n var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\r\n var clip = {\r\n point: point,\r\n lineStart: lineStart,\r\n lineEnd: lineEnd,\r\n polygonStart: function() {\r\n clip.point = pointRing;\r\n clip.lineStart = ringStart;\r\n clip.lineEnd = ringEnd;\r\n segments = [];\r\n polygon = [];\r\n },\r\n polygonEnd: function() {\r\n clip.point = point;\r\n clip.lineStart = lineStart;\r\n clip.lineEnd = lineEnd;\r\n segments = d3.merge(segments);\r\n var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\r\n if (segments.length) {\r\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\r\n d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\r\n } else if (clipStartInside) {\r\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\r\n listener.lineStart();\r\n interpolate(null, null, 1, listener);\r\n listener.lineEnd();\r\n }\r\n if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\r\n segments = polygon = null;\r\n },\r\n sphere: function() {\r\n listener.polygonStart();\r\n listener.lineStart();\r\n interpolate(null, null, 1, listener);\r\n listener.lineEnd();\r\n listener.polygonEnd();\r\n }\r\n };\r\n function point(λ, φ) {\r\n var point = rotate(λ, φ);\r\n if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\r\n }\r\n function pointLine(λ, φ) {\r\n var point = rotate(λ, φ);\r\n line.point(point[0], point[1]);\r\n }\r\n function lineStart() {\r\n clip.point = pointLine;\r\n line.lineStart();\r\n }\r\n function lineEnd() {\r\n clip.point = point;\r\n line.lineEnd();\r\n }\r\n var segments;\r\n var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\r\n function pointRing(λ, φ) {\r\n ring.push([ λ, φ ]);\r\n var point = rotate(λ, φ);\r\n ringListener.point(point[0], point[1]);\r\n }\r\n function ringStart() {\r\n ringListener.lineStart();\r\n ring = [];\r\n }\r\n function ringEnd() {\r\n pointRing(ring[0][0], ring[0][1]);\r\n ringListener.lineEnd();\r\n var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\r\n ring.pop();\r\n polygon.push(ring);\r\n ring = null;\r\n if (!n) return;\r\n if (clean & 1) {\r\n segment = ringSegments[0];\r\n var n = segment.length - 1, i = -1, point;\r\n if (n > 0) {\r\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\r\n listener.lineStart();\r\n while (++i < n) listener.point((point = segment[i])[0], point[1]);\r\n listener.lineEnd();\r\n }\r\n return;\r\n }\r\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\r\n segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\r\n }\r\n return clip;\r\n };\r\n }\r\n function d3_geo_clipSegmentLength1(segment) {\r\n return segment.length > 1;\r\n }\r\n function d3_geo_clipBufferListener() {\r\n var lines = [], line;\r\n return {\r\n lineStart: function() {\r\n lines.push(line = []);\r\n },\r\n point: function(λ, φ) {\r\n line.push([ λ, φ ]);\r\n },\r\n lineEnd: d3_noop,\r\n buffer: function() {\r\n var buffer = lines;\r\n lines = [];\r\n line = null;\r\n return buffer;\r\n },\r\n rejoin: function() {\r\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\r\n }\r\n };\r\n }\r\n function d3_geo_clipSort(a, b) {\r\n return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\r\n }\r\n var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\r\n function d3_geo_clipAntimeridianLine(listener) {\r\n var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\r\n return {\r\n lineStart: function() {\r\n listener.lineStart();\r\n clean = 1;\r\n },\r\n point: function(λ1, φ1) {\r\n var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\r\n if (abs(dλ - π) < ε) {\r\n listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\r\n listener.point(sλ0, φ0);\r\n listener.lineEnd();\r\n listener.lineStart();\r\n listener.point(sλ1, φ0);\r\n listener.point(λ1, φ0);\r\n clean = 0;\r\n } else if (sλ0 !== sλ1 && dλ >= π) {\r\n if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\r\n if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\r\n φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\r\n listener.point(sλ0, φ0);\r\n listener.lineEnd();\r\n listener.lineStart();\r\n listener.point(sλ1, φ0);\r\n clean = 0;\r\n }\r\n listener.point(λ0 = λ1, φ0 = φ1);\r\n sλ0 = sλ1;\r\n },\r\n lineEnd: function() {\r\n listener.lineEnd();\r\n λ0 = φ0 = NaN;\r\n },\r\n clean: function() {\r\n return 2 - clean;\r\n }\r\n };\r\n }\r\n function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\r\n var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\r\n return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\r\n }\r\n function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\r\n var φ;\r\n if (from == null) {\r\n φ = direction * halfπ;\r\n listener.point(-π, φ);\r\n listener.point(0, φ);\r\n listener.point(π, φ);\r\n listener.point(π, 0);\r\n listener.point(π, -φ);\r\n listener.point(0, -φ);\r\n listener.point(-π, -φ);\r\n listener.point(-π, 0);\r\n listener.point(-π, φ);\r\n } else if (abs(from[0] - to[0]) > ε) {\r\n var s = from[0] < to[0] ? π : -π;\r\n φ = direction * s / 2;\r\n listener.point(-s, φ);\r\n listener.point(0, φ);\r\n listener.point(s, φ);\r\n } else {\r\n listener.point(to[0], to[1]);\r\n }\r\n }\r\n function d3_geo_pointInPolygon(point, polygon) {\r\n var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\r\n d3_geo_areaRingSum.reset();\r\n for (var i = 0, n = polygon.length; i < n; ++i) {\r\n var ring = polygon[i], m = ring.length;\r\n if (!m) continue;\r\n var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\r\n while (true) {\r\n if (j === m) j = 0;\r\n point = ring[j];\r\n var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\r\n d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\r\n polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\r\n if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\r\n var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\r\n d3_geo_cartesianNormalize(arc);\r\n var intersection = d3_geo_cartesianCross(meridianNormal, arc);\r\n d3_geo_cartesianNormalize(intersection);\r\n var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\r\n if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\r\n winding += antimeridian ^ dλ >= 0 ? 1 : -1;\r\n }\r\n }\r\n if (!j++) break;\r\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\r\n }\r\n }\r\n return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\r\n }\r\n function d3_geo_clipCircle(radius) {\r\n var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\r\n return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\r\n function visible(λ, φ) {\r\n return Math.cos(λ) * Math.cos(φ) > cr;\r\n }\r\n function clipLine(listener) {\r\n var point0, c0, v0, v00, clean;\r\n return {\r\n lineStart: function() {\r\n v00 = v0 = false;\r\n clean = 1;\r\n },\r\n point: function(λ, φ) {\r\n var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\r\n if (!point0 && (v00 = v0 = v)) listener.lineStart();\r\n if (v !== v0) {\r\n point2 = intersect(point0, point1);\r\n if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\r\n point1[0] += ε;\r\n point1[1] += ε;\r\n v = visible(point1[0], point1[1]);\r\n }\r\n }\r\n if (v !== v0) {\r\n clean = 0;\r\n if (v) {\r\n listener.lineStart();\r\n point2 = intersect(point1, point0);\r\n listener.point(point2[0], point2[1]);\r\n } else {\r\n point2 = intersect(point0, point1);\r\n listener.point(point2[0], point2[1]);\r\n listener.lineEnd();\r\n }\r\n point0 = point2;\r\n } else if (notHemisphere && point0 && smallRadius ^ v) {\r\n var t;\r\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\r\n clean = 0;\r\n if (smallRadius) {\r\n listener.lineStart();\r\n listener.point(t[0][0], t[0][1]);\r\n listener.point(t[1][0], t[1][1]);\r\n listener.lineEnd();\r\n } else {\r\n listener.point(t[1][0], t[1][1]);\r\n listener.lineEnd();\r\n listener.lineStart();\r\n listener.point(t[0][0], t[0][1]);\r\n }\r\n }\r\n }\r\n if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\r\n listener.point(point1[0], point1[1]);\r\n }\r\n point0 = point1, v0 = v, c0 = c;\r\n },\r\n lineEnd: function() {\r\n if (v0) listener.lineEnd();\r\n point0 = null;\r\n },\r\n clean: function() {\r\n return clean | (v00 && v0) << 1;\r\n }\r\n };\r\n }\r\n function intersect(a, b, two) {\r\n var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\r\n var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\r\n if (!determinant) return !two && a;\r\n var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\r\n d3_geo_cartesianAdd(A, B);\r\n var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\r\n if (t2 < 0) return;\r\n var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\r\n d3_geo_cartesianAdd(q, A);\r\n q = d3_geo_spherical(q);\r\n if (!two) return q;\r\n var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\r\n if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\r\n var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\r\n if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\r\n if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\r\n var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\r\n d3_geo_cartesianAdd(q1, A);\r\n return [ q, d3_geo_spherical(q1) ];\r\n }\r\n }\r\n function code(λ, φ) {\r\n var r = smallRadius ? radius : π - radius, code = 0;\r\n if (λ < -r) code |= 1; else if (λ > r) code |= 2;\r\n if (φ < -r) code |= 4; else if (φ > r) code |= 8;\r\n return code;\r\n }\r\n }\r\n function d3_geom_clipLine(x0, y0, x1, y1) {\r\n return function(line) {\r\n var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\r\n r = x0 - ax;\r\n if (!dx && r > 0) return;\r\n r /= dx;\r\n if (dx < 0) {\r\n if (r < t0) return;\r\n if (r < t1) t1 = r;\r\n } else if (dx > 0) {\r\n if (r > t1) return;\r\n if (r > t0) t0 = r;\r\n }\r\n r = x1 - ax;\r\n if (!dx && r < 0) return;\r\n r /= dx;\r\n if (dx < 0) {\r\n if (r > t1) return;\r\n if (r > t0) t0 = r;\r\n } else if (dx > 0) {\r\n if (r < t0) return;\r\n if (r < t1) t1 = r;\r\n }\r\n r = y0 - ay;\r\n if (!dy && r > 0) return;\r\n r /= dy;\r\n if (dy < 0) {\r\n if (r < t0) return;\r\n if (r < t1) t1 = r;\r\n } else if (dy > 0) {\r\n if (r > t1) return;\r\n if (r > t0) t0 = r;\r\n }\r\n r = y1 - ay;\r\n if (!dy && r < 0) return;\r\n r /= dy;\r\n if (dy < 0) {\r\n if (r > t1) return;\r\n if (r > t0) t0 = r;\r\n } else if (dy > 0) {\r\n if (r < t0) return;\r\n if (r < t1) t1 = r;\r\n }\r\n if (t0 > 0) line.a = {\r\n x: ax + t0 * dx,\r\n y: ay + t0 * dy\r\n };\r\n if (t1 < 1) line.b = {\r\n x: ax + t1 * dx,\r\n y: ay + t1 * dy\r\n };\r\n return line;\r\n };\r\n }\r\n var d3_geo_clipExtentMAX = 1e9;\r\n d3.geo.clipExtent = function() {\r\n var x0, y0, x1, y1, stream, clip, clipExtent = {\r\n stream: function(output) {\r\n if (stream) stream.valid = false;\r\n stream = clip(output);\r\n stream.valid = true;\r\n return stream;\r\n },\r\n extent: function(_) {\r\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\r\n clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\r\n if (stream) stream.valid = false, stream = null;\r\n return clipExtent;\r\n }\r\n };\r\n return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\r\n };\r\n function d3_geo_clipExtent(x0, y0, x1, y1) {\r\n return function(listener) {\r\n var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\r\n var clip = {\r\n point: point,\r\n lineStart: lineStart,\r\n lineEnd: lineEnd,\r\n polygonStart: function() {\r\n listener = bufferListener;\r\n segments = [];\r\n polygon = [];\r\n clean = true;\r\n },\r\n polygonEnd: function() {\r\n listener = listener_;\r\n segments = d3.merge(segments);\r\n var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\r\n if (inside || visible) {\r\n listener.polygonStart();\r\n if (inside) {\r\n listener.lineStart();\r\n interpolate(null, null, 1, listener);\r\n listener.lineEnd();\r\n }\r\n if (visible) {\r\n d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\r\n }\r\n listener.polygonEnd();\r\n }\r\n segments = polygon = ring = null;\r\n }\r\n };\r\n function insidePolygon(p) {\r\n var wn = 0, n = polygon.length, y = p[1];\r\n for (var i = 0; i < n; ++i) {\r\n for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\r\n b = v[j];\r\n if (a[1] <= y) {\r\n if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\r\n } else {\r\n if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\r\n }\r\n a = b;\r\n }\r\n }\r\n return wn !== 0;\r\n }\r\n function interpolate(from, to, direction, listener) {\r\n var a = 0, a1 = 0;\r\n if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\r\n do {\r\n listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\r\n } while ((a = (a + direction + 4) % 4) !== a1);\r\n } else {\r\n listener.point(to[0], to[1]);\r\n }\r\n }\r\n function pointVisible(x, y) {\r\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\r\n }\r\n function point(x, y) {\r\n if (pointVisible(x, y)) listener.point(x, y);\r\n }\r\n var x__, y__, v__, x_, y_, v_, first, clean;\r\n function lineStart() {\r\n clip.point = linePoint;\r\n if (polygon) polygon.push(ring = []);\r\n first = true;\r\n v_ = false;\r\n x_ = y_ = NaN;\r\n }\r\n function lineEnd() {\r\n if (segments) {\r\n linePoint(x__, y__);\r\n if (v__ && v_) bufferListener.rejoin();\r\n segments.push(bufferListener.buffer());\r\n }\r\n clip.point = point;\r\n if (v_) listener.lineEnd();\r\n }\r\n function linePoint(x, y) {\r\n x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\r\n y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\r\n var v = pointVisible(x, y);\r\n if (polygon) ring.push([ x, y ]);\r\n if (first) {\r\n x__ = x, y__ = y, v__ = v;\r\n first = false;\r\n if (v) {\r\n listener.lineStart();\r\n listener.point(x, y);\r\n }\r\n } else {\r\n if (v && v_) listener.point(x, y); else {\r\n var l = {\r\n a: {\r\n x: x_,\r\n y: y_\r\n },\r\n b: {\r\n x: x,\r\n y: y\r\n }\r\n };\r\n if (clipLine(l)) {\r\n if (!v_) {\r\n listener.lineStart();\r\n listener.point(l.a.x, l.a.y);\r\n }\r\n listener.point(l.b.x, l.b.y);\r\n if (!v) listener.lineEnd();\r\n clean = false;\r\n } else if (v) {\r\n listener.lineStart();\r\n listener.point(x, y);\r\n clean = false;\r\n }\r\n }\r\n }\r\n x_ = x, y_ = y, v_ = v;\r\n }\r\n return clip;\r\n };\r\n function corner(p, direction) {\r\n return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\r\n }\r\n function compare(a, b) {\r\n return comparePoints(a.x, b.x);\r\n }\r\n function comparePoints(a, b) {\r\n var ca = corner(a, 1), cb = corner(b, 1);\r\n return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\r\n }\r\n }\r\n function d3_geo_conic(projectAt) {\r\n var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\r\n p.parallels = function(_) {\r\n if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\r\n return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\r\n };\r\n return p;\r\n }\r\n function d3_geo_conicEqualArea(φ0, φ1) {\r\n var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\r\n function forward(λ, φ) {\r\n var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\r\n return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\r\n }\r\n forward.invert = function(x, y) {\r\n var ρ0_y = ρ0 - y;\r\n return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\r\n };\r\n return forward;\r\n }\r\n (d3.geo.conicEqualArea = function() {\r\n return d3_geo_conic(d3_geo_conicEqualArea);\r\n }).raw = d3_geo_conicEqualArea;\r\n d3.geo.albers = function() {\r\n return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\r\n };\r\n d3.geo.albersUsa = function() {\r\n var lower48 = d3.geo.albers();\r\n var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\r\n var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\r\n var point, pointStream = {\r\n point: function(x, y) {\r\n point = [ x, y ];\r\n }\r\n }, lower48Point, alaskaPoint, hawaiiPoint;\r\n function albersUsa(coordinates) {\r\n var x = coordinates[0], y = coordinates[1];\r\n point = null;\r\n (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\r\n return point;\r\n }\r\n albersUsa.invert = function(coordinates) {\r\n var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\r\n return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\r\n };\r\n albersUsa.stream = function(stream) {\r\n var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\r\n return {\r\n point: function(x, y) {\r\n lower48Stream.point(x, y);\r\n alaskaStream.point(x, y);\r\n hawaiiStream.point(x, y);\r\n },\r\n sphere: function() {\r\n lower48Stream.sphere();\r\n alaskaStream.sphere();\r\n hawaiiStream.sphere();\r\n },\r\n lineStart: function() {\r\n lower48Stream.lineStart();\r\n alaskaStream.lineStart();\r\n hawaiiStream.lineStart();\r\n },\r\n lineEnd: function() {\r\n lower48Stream.lineEnd();\r\n alaskaStream.lineEnd();\r\n hawaiiStream.lineEnd();\r\n },\r\n polygonStart: function() {\r\n lower48Stream.polygonStart();\r\n alaskaStream.polygonStart();\r\n hawaiiStream.polygonStart();\r\n },\r\n polygonEnd: function() {\r\n lower48Stream.polygonEnd();\r\n alaskaStream.polygonEnd();\r\n hawaiiStream.polygonEnd();\r\n }\r\n };\r\n };\r\n albersUsa.precision = function(_) {\r\n if (!arguments.length) return lower48.precision();\r\n lower48.precision(_);\r\n alaska.precision(_);\r\n hawaii.precision(_);\r\n return albersUsa;\r\n };\r\n albersUsa.scale = function(_) {\r\n if (!arguments.length) return lower48.scale();\r\n lower48.scale(_);\r\n alaska.scale(_ * .35);\r\n hawaii.scale(_);\r\n return albersUsa.translate(lower48.translate());\r\n };\r\n albersUsa.translate = function(_) {\r\n if (!arguments.length) return lower48.translate();\r\n var k = lower48.scale(), x = +_[0], y = +_[1];\r\n lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\r\n alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\r\n hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\r\n return albersUsa;\r\n };\r\n return albersUsa.scale(1070);\r\n };\r\n var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\r\n point: d3_noop,\r\n lineStart: d3_noop,\r\n lineEnd: d3_noop,\r\n polygonStart: function() {\r\n d3_geo_pathAreaPolygon = 0;\r\n d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\r\n },\r\n polygonEnd: function() {\r\n d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\r\n d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\r\n }\r\n };\r\n function d3_geo_pathAreaRingStart() {\r\n var x00, y00, x0, y0;\r\n d3_geo_pathArea.point = function(x, y) {\r\n d3_geo_pathArea.point = nextPoint;\r\n x00 = x0 = x, y00 = y0 = y;\r\n };\r\n function nextPoint(x, y) {\r\n d3_geo_pathAreaPolygon += y0 * x - x0 * y;\r\n x0 = x, y0 = y;\r\n }\r\n d3_geo_pathArea.lineEnd = function() {\r\n nextPoint(x00, y00);\r\n };\r\n }\r\n var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\r\n var d3_geo_pathBounds = {\r\n point: d3_geo_pathBoundsPoint,\r\n lineStart: d3_noop,\r\n lineEnd: d3_noop,\r\n polygonStart: d3_noop,\r\n polygonEnd: d3_noop\r\n };\r\n function d3_geo_pathBoundsPoint(x, y) {\r\n if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\r\n if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\r\n if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\r\n if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\r\n }\r\n function d3_geo_pathBuffer() {\r\n var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\r\n var stream = {\r\n point: point,\r\n lineStart: function() {\r\n stream.point = pointLineStart;\r\n },\r\n lineEnd: lineEnd,\r\n polygonStart: function() {\r\n stream.lineEnd = lineEndPolygon;\r\n },\r\n polygonEnd: function() {\r\n stream.lineEnd = lineEnd;\r\n stream.point = point;\r\n },\r\n pointRadius: function(_) {\r\n pointCircle = d3_geo_pathBufferCircle(_);\r\n return stream;\r\n },\r\n result: function() {\r\n if (buffer.length) {\r\n var result = buffer.join(\"\");\r\n buffer = [];\r\n return result;\r\n }\r\n }\r\n };\r\n function point(x, y) {\r\n buffer.push(\"M\", x, \",\", y, pointCircle);\r\n }\r\n function pointLineStart(x, y) {\r\n buffer.push(\"M\", x, \",\", y);\r\n stream.point = pointLine;\r\n }\r\n function pointLine(x, y) {\r\n buffer.push(\"L\", x, \",\", y);\r\n }\r\n function lineEnd() {\r\n stream.point = point;\r\n }\r\n function lineEndPolygon() {\r\n buffer.push(\"Z\");\r\n }\r\n return stream;\r\n }\r\n function d3_geo_pathBufferCircle(radius) {\r\n return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\r\n }\r\n var d3_geo_pathCentroid = {\r\n point: d3_geo_pathCentroidPoint,\r\n lineStart: d3_geo_pathCentroidLineStart,\r\n lineEnd: d3_geo_pathCentroidLineEnd,\r\n polygonStart: function() {\r\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\r\n },\r\n polygonEnd: function() {\r\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\r\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\r\n d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\r\n }\r\n };\r\n function d3_geo_pathCentroidPoint(x, y) {\r\n d3_geo_centroidX0 += x;\r\n d3_geo_centroidY0 += y;\r\n ++d3_geo_centroidZ0;\r\n }\r\n function d3_geo_pathCentroidLineStart() {\r\n var x0, y0;\r\n d3_geo_pathCentroid.point = function(x, y) {\r\n d3_geo_pathCentroid.point = nextPoint;\r\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\r\n };\r\n function nextPoint(x, y) {\r\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\r\n d3_geo_centroidX1 += z * (x0 + x) / 2;\r\n d3_geo_centroidY1 += z * (y0 + y) / 2;\r\n d3_geo_centroidZ1 += z;\r\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\r\n }\r\n }\r\n function d3_geo_pathCentroidLineEnd() {\r\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\r\n }\r\n function d3_geo_pathCentroidRingStart() {\r\n var x00, y00, x0, y0;\r\n d3_geo_pathCentroid.point = function(x, y) {\r\n d3_geo_pathCentroid.point = nextPoint;\r\n d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\r\n };\r\n function nextPoint(x, y) {\r\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\r\n d3_geo_centroidX1 += z * (x0 + x) / 2;\r\n d3_geo_centroidY1 += z * (y0 + y) / 2;\r\n d3_geo_centroidZ1 += z;\r\n z = y0 * x - x0 * y;\r\n d3_geo_centroidX2 += z * (x0 + x);\r\n d3_geo_centroidY2 += z * (y0 + y);\r\n d3_geo_centroidZ2 += z * 3;\r\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\r\n }\r\n d3_geo_pathCentroid.lineEnd = function() {\r\n nextPoint(x00, y00);\r\n };\r\n }\r\n function d3_geo_pathContext(context) {\r\n var pointRadius = 4.5;\r\n var stream = {\r\n point: point,\r\n lineStart: function() {\r\n stream.point = pointLineStart;\r\n },\r\n lineEnd: lineEnd,\r\n polygonStart: function() {\r\n stream.lineEnd = lineEndPolygon;\r\n },\r\n polygonEnd: function() {\r\n stream.lineEnd = lineEnd;\r\n stream.point = point;\r\n },\r\n pointRadius: function(_) {\r\n pointRadius = _;\r\n return stream;\r\n },\r\n result: d3_noop\r\n };\r\n function point(x, y) {\r\n context.moveTo(x + pointRadius, y);\r\n context.arc(x, y, pointRadius, 0, τ);\r\n }\r\n function pointLineStart(x, y) {\r\n context.moveTo(x, y);\r\n stream.point = pointLine;\r\n }\r\n function pointLine(x, y) {\r\n context.lineTo(x, y);\r\n }\r\n function lineEnd() {\r\n stream.point = point;\r\n }\r\n function lineEndPolygon() {\r\n context.closePath();\r\n }\r\n return stream;\r\n }\r\n function d3_geo_resample(project) {\r\n var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\r\n function resample(stream) {\r\n return (maxDepth ? resampleRecursive : resampleNone)(stream);\r\n }\r\n function resampleNone(stream) {\r\n return d3_geo_transformPoint(stream, function(x, y) {\r\n x = project(x, y);\r\n stream.point(x[0], x[1]);\r\n });\r\n }\r\n function resampleRecursive(stream) {\r\n var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\r\n var resample = {\r\n point: point,\r\n lineStart: lineStart,\r\n lineEnd: lineEnd,\r\n polygonStart: function() {\r\n stream.polygonStart();\r\n resample.lineStart = ringStart;\r\n },\r\n polygonEnd: function() {\r\n stream.polygonEnd();\r\n resample.lineStart = lineStart;\r\n }\r\n };\r\n function point(x, y) {\r\n x = project(x, y);\r\n stream.point(x[0], x[1]);\r\n }\r\n function lineStart() {\r\n x0 = NaN;\r\n resample.point = linePoint;\r\n stream.lineStart();\r\n }\r\n function linePoint(λ, φ) {\r\n var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\r\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\r\n stream.point(x0, y0);\r\n }\r\n function lineEnd() {\r\n resample.point = point;\r\n stream.lineEnd();\r\n }\r\n function ringStart() {\r\n lineStart();\r\n resample.point = ringPoint;\r\n resample.lineEnd = ringEnd;\r\n }\r\n function ringPoint(λ, φ) {\r\n linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\r\n resample.point = linePoint;\r\n }\r\n function ringEnd() {\r\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\r\n resample.lineEnd = lineEnd;\r\n lineEnd();\r\n }\r\n return resample;\r\n }\r\n function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\r\n var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\r\n if (d2 > 4 * δ2 && depth--) {\r\n var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\r\n if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\r\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\r\n stream.point(x2, y2);\r\n resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\r\n }\r\n }\r\n }\r\n resample.precision = function(_) {\r\n if (!arguments.length) return Math.sqrt(δ2);\r\n maxDepth = (δ2 = _ * _) > 0 && 16;\r\n return resample;\r\n };\r\n return resample;\r\n }\r\n d3.geo.path = function() {\r\n var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\r\n function path(object) {\r\n if (object) {\r\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\r\n if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\r\n d3.geo.stream(object, cacheStream);\r\n }\r\n return contextStream.result();\r\n }\r\n path.area = function(object) {\r\n d3_geo_pathAreaSum = 0;\r\n d3.geo.stream(object, projectStream(d3_geo_pathArea));\r\n return d3_geo_pathAreaSum;\r\n };\r\n path.centroid = function(object) {\r\n d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\r\n d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\r\n return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\r\n };\r\n path.bounds = function(object) {\r\n d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\r\n d3.geo.stream(object, projectStream(d3_geo_pathBounds));\r\n return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\r\n };\r\n path.projection = function(_) {\r\n if (!arguments.length) return projection;\r\n projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\r\n return reset();\r\n };\r\n path.context = function(_) {\r\n if (!arguments.length) return context;\r\n contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\r\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\r\n return reset();\r\n };\r\n path.pointRadius = function(_) {\r\n if (!arguments.length) return pointRadius;\r\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\r\n return path;\r\n };\r\n function reset() {\r\n cacheStream = null;\r\n return path;\r\n }\r\n return path.projection(d3.geo.albersUsa()).context(null);\r\n };\r\n function d3_geo_pathProjectStream(project) {\r\n var resample = d3_geo_resample(function(x, y) {\r\n return project([ x * d3_degrees, y * d3_degrees ]);\r\n });\r\n return function(stream) {\r\n return d3_geo_projectionRadians(resample(stream));\r\n };\r\n }\r\n d3.geo.transform = function(methods) {\r\n return {\r\n stream: function(stream) {\r\n var transform = new d3_geo_transform(stream);\r\n for (var k in methods) transform[k] = methods[k];\r\n return transform;\r\n }\r\n };\r\n };\r\n function d3_geo_transform(stream) {\r\n this.stream = stream;\r\n }\r\n d3_geo_transform.prototype = {\r\n point: function(x, y) {\r\n this.stream.point(x, y);\r\n },\r\n sphere: function() {\r\n this.stream.sphere();\r\n },\r\n lineStart: function() {\r\n this.stream.lineStart();\r\n },\r\n lineEnd: function() {\r\n this.stream.lineEnd();\r\n },\r\n polygonStart: function() {\r\n this.stream.polygonStart();\r\n },\r\n polygonEnd: function() {\r\n this.stream.polygonEnd();\r\n }\r\n };\r\n function d3_geo_transformPoint(stream, point) {\r\n return {\r\n point: point,\r\n sphere: function() {\r\n stream.sphere();\r\n },\r\n lineStart: function() {\r\n stream.lineStart();\r\n },\r\n lineEnd: function() {\r\n stream.lineEnd();\r\n },\r\n polygonStart: function() {\r\n stream.polygonStart();\r\n },\r\n polygonEnd: function() {\r\n stream.polygonEnd();\r\n }\r\n };\r\n }\r\n d3.geo.projection = d3_geo_projection;\r\n d3.geo.projectionMutator = d3_geo_projectionMutator;\r\n function d3_geo_projection(project) {\r\n return d3_geo_projectionMutator(function() {\r\n return project;\r\n })();\r\n }\r\n function d3_geo_projectionMutator(projectAt) {\r\n var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\r\n x = project(x, y);\r\n return [ x[0] * k + δx, δy - x[1] * k ];\r\n }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\r\n function projection(point) {\r\n point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\r\n return [ point[0] * k + δx, δy - point[1] * k ];\r\n }\r\n function invert(point) {\r\n point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\r\n return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\r\n }\r\n projection.stream = function(output) {\r\n if (stream) stream.valid = false;\r\n stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\r\n stream.valid = true;\r\n return stream;\r\n };\r\n projection.clipAngle = function(_) {\r\n if (!arguments.length) return clipAngle;\r\n preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\r\n return invalidate();\r\n };\r\n projection.clipExtent = function(_) {\r\n if (!arguments.length) return clipExtent;\r\n clipExtent = _;\r\n postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\r\n return invalidate();\r\n };\r\n projection.scale = function(_) {\r\n if (!arguments.length) return k;\r\n k = +_;\r\n return reset();\r\n };\r\n projection.translate = function(_) {\r\n if (!arguments.length) return [ x, y ];\r\n x = +_[0];\r\n y = +_[1];\r\n return reset();\r\n };\r\n projection.center = function(_) {\r\n if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\r\n λ = _[0] % 360 * d3_radians;\r\n φ = _[1] % 360 * d3_radians;\r\n return reset();\r\n };\r\n projection.rotate = function(_) {\r\n if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\r\n δλ = _[0] % 360 * d3_radians;\r\n δφ = _[1] % 360 * d3_radians;\r\n δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\r\n return reset();\r\n };\r\n d3.rebind(projection, projectResample, \"precision\");\r\n function reset() {\r\n projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\r\n var center = project(λ, φ);\r\n δx = x - center[0] * k;\r\n δy = y + center[1] * k;\r\n return invalidate();\r\n }\r\n function invalidate() {\r\n if (stream) stream.valid = false, stream = null;\r\n return projection;\r\n }\r\n return function() {\r\n project = projectAt.apply(this, arguments);\r\n projection.invert = project.invert && invert;\r\n return reset();\r\n };\r\n }\r\n function d3_geo_projectionRadians(stream) {\r\n return d3_geo_transformPoint(stream, function(x, y) {\r\n stream.point(x * d3_radians, y * d3_radians);\r\n });\r\n }\r\n function d3_geo_equirectangular(λ, φ) {\r\n return [ λ, φ ];\r\n }\r\n (d3.geo.equirectangular = function() {\r\n return d3_geo_projection(d3_geo_equirectangular);\r\n }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\r\n d3.geo.rotation = function(rotate) {\r\n rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\r\n function forward(coordinates) {\r\n coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\r\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\r\n }\r\n forward.invert = function(coordinates) {\r\n coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\r\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\r\n };\r\n return forward;\r\n };\r\n function d3_geo_identityRotation(λ, φ) {\r\n return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\r\n }\r\n d3_geo_identityRotation.invert = d3_geo_equirectangular;\r\n function d3_geo_rotation(δλ, δφ, δγ) {\r\n return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\r\n }\r\n function d3_geo_forwardRotationλ(δλ) {\r\n return function(λ, φ) {\r\n return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\r\n };\r\n }\r\n function d3_geo_rotationλ(δλ) {\r\n var rotation = d3_geo_forwardRotationλ(δλ);\r\n rotation.invert = d3_geo_forwardRotationλ(-δλ);\r\n return rotation;\r\n }\r\n function d3_geo_rotationφγ(δφ, δγ) {\r\n var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\r\n function rotation(λ, φ) {\r\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\r\n return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\r\n }\r\n rotation.invert = function(λ, φ) {\r\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\r\n return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\r\n };\r\n return rotation;\r\n }\r\n d3.geo.circle = function() {\r\n var origin = [ 0, 0 ], angle, precision = 6, interpolate;\r\n function circle() {\r\n var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\r\n interpolate(null, null, 1, {\r\n point: function(x, y) {\r\n ring.push(x = rotate(x, y));\r\n x[0] *= d3_degrees, x[1] *= d3_degrees;\r\n }\r\n });\r\n return {\r\n type: \"Polygon\",\r\n coordinates: [ ring ]\r\n };\r\n }\r\n circle.origin = function(x) {\r\n if (!arguments.length) return origin;\r\n origin = x;\r\n return circle;\r\n };\r\n circle.angle = function(x) {\r\n if (!arguments.length) return angle;\r\n interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\r\n return circle;\r\n };\r\n circle.precision = function(_) {\r\n if (!arguments.length) return precision;\r\n interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\r\n return circle;\r\n };\r\n return circle.angle(90);\r\n };\r\n function d3_geo_circleInterpolate(radius, precision) {\r\n var cr = Math.cos(radius), sr = Math.sin(radius);\r\n return function(from, to, direction, listener) {\r\n var step = direction * precision;\r\n if (from != null) {\r\n from = d3_geo_circleAngle(cr, from);\r\n to = d3_geo_circleAngle(cr, to);\r\n if (direction > 0 ? from < to : from > to) from += direction * τ;\r\n } else {\r\n from = radius + direction * τ;\r\n to = radius - .5 * step;\r\n }\r\n for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\r\n listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\r\n }\r\n };\r\n }\r\n function d3_geo_circleAngle(cr, point) {\r\n var a = d3_geo_cartesian(point);\r\n a[0] -= cr;\r\n d3_geo_cartesianNormalize(a);\r\n var angle = d3_acos(-a[1]);\r\n return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\r\n }\r\n d3.geo.distance = function(a, b) {\r\n var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\r\n return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\r\n };\r\n d3.geo.graticule = function() {\r\n var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\r\n function graticule() {\r\n return {\r\n type: \"MultiLineString\",\r\n coordinates: lines()\r\n };\r\n }\r\n function lines() {\r\n return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\r\n return abs(x % DX) > ε;\r\n }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\r\n return abs(y % DY) > ε;\r\n }).map(y));\r\n }\r\n graticule.lines = function() {\r\n return lines().map(function(coordinates) {\r\n return {\r\n type: \"LineString\",\r\n coordinates: coordinates\r\n };\r\n });\r\n };\r\n graticule.outline = function() {\r\n return {\r\n type: \"Polygon\",\r\n coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\r\n };\r\n };\r\n graticule.extent = function(_) {\r\n if (!arguments.length) return graticule.minorExtent();\r\n return graticule.majorExtent(_).minorExtent(_);\r\n };\r\n graticule.majorExtent = function(_) {\r\n if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\r\n X0 = +_[0][0], X1 = +_[1][0];\r\n Y0 = +_[0][1], Y1 = +_[1][1];\r\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\r\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\r\n return graticule.precision(precision);\r\n };\r\n graticule.minorExtent = function(_) {\r\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\r\n x0 = +_[0][0], x1 = +_[1][0];\r\n y0 = +_[0][1], y1 = +_[1][1];\r\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\r\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\r\n return graticule.precision(precision);\r\n };\r\n graticule.step = function(_) {\r\n if (!arguments.length) return graticule.minorStep();\r\n return graticule.majorStep(_).minorStep(_);\r\n };\r\n graticule.majorStep = function(_) {\r\n if (!arguments.length) return [ DX, DY ];\r\n DX = +_[0], DY = +_[1];\r\n return graticule;\r\n };\r\n graticule.minorStep = function(_) {\r\n if (!arguments.length) return [ dx, dy ];\r\n dx = +_[0], dy = +_[1];\r\n return graticule;\r\n };\r\n graticule.precision = function(_) {\r\n if (!arguments.length) return precision;\r\n precision = +_;\r\n x = d3_geo_graticuleX(y0, y1, 90);\r\n y = d3_geo_graticuleY(x0, x1, precision);\r\n X = d3_geo_graticuleX(Y0, Y1, 90);\r\n Y = d3_geo_graticuleY(X0, X1, precision);\r\n return graticule;\r\n };\r\n return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\r\n };\r\n function d3_geo_graticuleX(y0, y1, dy) {\r\n var y = d3.range(y0, y1 - ε, dy).concat(y1);\r\n return function(x) {\r\n return y.map(function(y) {\r\n return [ x, y ];\r\n });\r\n };\r\n }\r\n function d3_geo_graticuleY(x0, x1, dx) {\r\n var x = d3.range(x0, x1 - ε, dx).concat(x1);\r\n return function(y) {\r\n return x.map(function(x) {\r\n return [ x, y ];\r\n });\r\n };\r\n }\r\n function d3_source(d) {\r\n return d.source;\r\n }\r\n function d3_target(d) {\r\n return d.target;\r\n }\r\n d3.geo.greatArc = function() {\r\n var source = d3_source, source_, target = d3_target, target_;\r\n function greatArc() {\r\n return {\r\n type: \"LineString\",\r\n coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\r\n };\r\n }\r\n greatArc.distance = function() {\r\n return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\r\n };\r\n greatArc.source = function(_) {\r\n if (!arguments.length) return source;\r\n source = _, source_ = typeof _ === \"function\" ? null : _;\r\n return greatArc;\r\n };\r\n greatArc.target = function(_) {\r\n if (!arguments.length) return target;\r\n target = _, target_ = typeof _ === \"function\" ? null : _;\r\n return greatArc;\r\n };\r\n greatArc.precision = function() {\r\n return arguments.length ? greatArc : 0;\r\n };\r\n return greatArc;\r\n };\r\n d3.geo.interpolate = function(source, target) {\r\n return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\r\n };\r\n function d3_geo_interpolate(x0, y0, x1, y1) {\r\n var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\r\n var interpolate = d ? function(t) {\r\n var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\r\n return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\r\n } : function() {\r\n return [ x0 * d3_degrees, y0 * d3_degrees ];\r\n };\r\n interpolate.distance = d;\r\n return interpolate;\r\n }\r\n d3.geo.length = function(object) {\r\n d3_geo_lengthSum = 0;\r\n d3.geo.stream(object, d3_geo_length);\r\n return d3_geo_lengthSum;\r\n };\r\n var d3_geo_lengthSum;\r\n var d3_geo_length = {\r\n sphere: d3_noop,\r\n point: d3_noop,\r\n lineStart: d3_geo_lengthLineStart,\r\n lineEnd: d3_noop,\r\n polygonStart: d3_noop,\r\n polygonEnd: d3_noop\r\n };\r\n function d3_geo_lengthLineStart() {\r\n var λ0, sinφ0, cosφ0;\r\n d3_geo_length.point = function(λ, φ) {\r\n λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\r\n d3_geo_length.point = nextPoint;\r\n };\r\n d3_geo_length.lineEnd = function() {\r\n d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\r\n };\r\n function nextPoint(λ, φ) {\r\n var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\r\n d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\r\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\r\n }\r\n }\r\n function d3_geo_azimuthal(scale, angle) {\r\n function azimuthal(λ, φ) {\r\n var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\r\n return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\r\n }\r\n azimuthal.invert = function(x, y) {\r\n var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\r\n return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\r\n };\r\n return azimuthal;\r\n }\r\n var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\r\n return Math.sqrt(2 / (1 + cosλcosφ));\r\n }, function(ρ) {\r\n return 2 * Math.asin(ρ / 2);\r\n });\r\n (d3.geo.azimuthalEqualArea = function() {\r\n return d3_geo_projection(d3_geo_azimuthalEqualArea);\r\n }).raw = d3_geo_azimuthalEqualArea;\r\n var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\r\n var c = Math.acos(cosλcosφ);\r\n return c && c / Math.sin(c);\r\n }, d3_identity);\r\n (d3.geo.azimuthalEquidistant = function() {\r\n return d3_geo_projection(d3_geo_azimuthalEquidistant);\r\n }).raw = d3_geo_azimuthalEquidistant;\r\n function d3_geo_conicConformal(φ0, φ1) {\r\n var cosφ0 = Math.cos(φ0), t = function(φ) {\r\n return Math.tan(π / 4 + φ / 2);\r\n }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\r\n if (!n) return d3_geo_mercator;\r\n function forward(λ, φ) {\r\n if (F > 0) {\r\n if (φ < -halfπ + ε) φ = -halfπ + ε;\r\n } else {\r\n if (φ > halfπ - ε) φ = halfπ - ε;\r\n }\r\n var ρ = F / Math.pow(t(φ), n);\r\n return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\r\n }\r\n forward.invert = function(x, y) {\r\n var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\r\n return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\r\n };\r\n return forward;\r\n }\r\n (d3.geo.conicConformal = function() {\r\n return d3_geo_conic(d3_geo_conicConformal);\r\n }).raw = d3_geo_conicConformal;\r\n function d3_geo_conicEquidistant(φ0, φ1) {\r\n var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\r\n if (abs(n) < ε) return d3_geo_equirectangular;\r\n function forward(λ, φ) {\r\n var ρ = G - φ;\r\n return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\r\n }\r\n forward.invert = function(x, y) {\r\n var ρ0_y = G - y;\r\n return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\r\n };\r\n return forward;\r\n }\r\n (d3.geo.conicEquidistant = function() {\r\n return d3_geo_conic(d3_geo_conicEquidistant);\r\n }).raw = d3_geo_conicEquidistant;\r\n var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\r\n return 1 / cosλcosφ;\r\n }, Math.atan);\r\n (d3.geo.gnomonic = function() {\r\n return d3_geo_projection(d3_geo_gnomonic);\r\n }).raw = d3_geo_gnomonic;\r\n function d3_geo_mercator(λ, φ) {\r\n return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\r\n }\r\n d3_geo_mercator.invert = function(x, y) {\r\n return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\r\n };\r\n function d3_geo_mercatorProjection(project) {\r\n var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\r\n m.scale = function() {\r\n var v = scale.apply(m, arguments);\r\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\r\n };\r\n m.translate = function() {\r\n var v = translate.apply(m, arguments);\r\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\r\n };\r\n m.clipExtent = function(_) {\r\n var v = clipExtent.apply(m, arguments);\r\n if (v === m) {\r\n if (clipAuto = _ == null) {\r\n var k = π * scale(), t = translate();\r\n clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\r\n }\r\n } else if (clipAuto) {\r\n v = null;\r\n }\r\n return v;\r\n };\r\n return m.clipExtent(null);\r\n }\r\n (d3.geo.mercator = function() {\r\n return d3_geo_mercatorProjection(d3_geo_mercator);\r\n }).raw = d3_geo_mercator;\r\n var d3_geo_orthographic = d3_geo_azimuthal(function() {\r\n return 1;\r\n }, Math.asin);\r\n (d3.geo.orthographic = function() {\r\n return d3_geo_projection(d3_geo_orthographic);\r\n }).raw = d3_geo_orthographic;\r\n var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\r\n return 1 / (1 + cosλcosφ);\r\n }, function(ρ) {\r\n return 2 * Math.atan(ρ);\r\n });\r\n (d3.geo.stereographic = function() {\r\n return d3_geo_projection(d3_geo_stereographic);\r\n }).raw = d3_geo_stereographic;\r\n function d3_geo_transverseMercator(λ, φ) {\r\n return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\r\n }\r\n d3_geo_transverseMercator.invert = function(x, y) {\r\n return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\r\n };\r\n (d3.geo.transverseMercator = function() {\r\n var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\r\n projection.center = function(_) {\r\n return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\r\n };\r\n projection.rotate = function(_) {\r\n return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \r\n [ _[0], _[1], _[2] - 90 ]);\r\n };\r\n return rotate([ 0, 0, 90 ]);\r\n }).raw = d3_geo_transverseMercator;\r\n d3.geom = {};\r\n function d3_geom_pointX(d) {\r\n return d[0];\r\n }\r\n function d3_geom_pointY(d) {\r\n return d[1];\r\n }\r\n d3.geom.hull = function(vertices) {\r\n var x = d3_geom_pointX, y = d3_geom_pointY;\r\n if (arguments.length) return hull(vertices);\r\n function hull(data) {\r\n if (data.length < 3) return [];\r\n var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\r\n for (i = 0; i < n; i++) {\r\n points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\r\n }\r\n points.sort(d3_geom_hullOrder);\r\n for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\r\n var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\r\n var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\r\n for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\r\n for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\r\n return polygon;\r\n }\r\n hull.x = function(_) {\r\n return arguments.length ? (x = _, hull) : x;\r\n };\r\n hull.y = function(_) {\r\n return arguments.length ? (y = _, hull) : y;\r\n };\r\n return hull;\r\n };\r\n function d3_geom_hullUpper(points) {\r\n var n = points.length, hull = [ 0, 1 ], hs = 2;\r\n for (var i = 2; i < n; i++) {\r\n while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\r\n hull[hs++] = i;\r\n }\r\n return hull.slice(0, hs);\r\n }\r\n function d3_geom_hullOrder(a, b) {\r\n return a[0] - b[0] || a[1] - b[1];\r\n }\r\n d3.geom.polygon = function(coordinates) {\r\n d3_subclass(coordinates, d3_geom_polygonPrototype);\r\n return coordinates;\r\n };\r\n var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\r\n d3_geom_polygonPrototype.area = function() {\r\n var i = -1, n = this.length, a, b = this[n - 1], area = 0;\r\n while (++i < n) {\r\n a = b;\r\n b = this[i];\r\n area += a[1] * b[0] - a[0] * b[1];\r\n }\r\n return area * .5;\r\n };\r\n d3_geom_polygonPrototype.centroid = function(k) {\r\n var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\r\n if (!arguments.length) k = -1 / (6 * this.area());\r\n while (++i < n) {\r\n a = b;\r\n b = this[i];\r\n c = a[0] * b[1] - b[0] * a[1];\r\n x += (a[0] + b[0]) * c;\r\n y += (a[1] + b[1]) * c;\r\n }\r\n return [ x * k, y * k ];\r\n };\r\n d3_geom_polygonPrototype.clip = function(subject) {\r\n var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\r\n while (++i < n) {\r\n input = subject.slice();\r\n subject.length = 0;\r\n b = this[i];\r\n c = input[(m = input.length - closed) - 1];\r\n j = -1;\r\n while (++j < m) {\r\n d = input[j];\r\n if (d3_geom_polygonInside(d, a, b)) {\r\n if (!d3_geom_polygonInside(c, a, b)) {\r\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\r\n }\r\n subject.push(d);\r\n } else if (d3_geom_polygonInside(c, a, b)) {\r\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\r\n }\r\n c = d;\r\n }\r\n if (closed) subject.push(subject[0]);\r\n a = b;\r\n }\r\n return subject;\r\n };\r\n function d3_geom_polygonInside(p, a, b) {\r\n return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\r\n }\r\n function d3_geom_polygonIntersect(c, d, a, b) {\r\n var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\r\n return [ x1 + ua * x21, y1 + ua * y21 ];\r\n }\r\n function d3_geom_polygonClosed(coordinates) {\r\n var a = coordinates[0], b = coordinates[coordinates.length - 1];\r\n return !(a[0] - b[0] || a[1] - b[1]);\r\n }\r\n var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\r\n function d3_geom_voronoiBeach() {\r\n d3_geom_voronoiRedBlackNode(this);\r\n this.edge = this.site = this.circle = null;\r\n }\r\n function d3_geom_voronoiCreateBeach(site) {\r\n var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\r\n beach.site = site;\r\n return beach;\r\n }\r\n function d3_geom_voronoiDetachBeach(beach) {\r\n d3_geom_voronoiDetachCircle(beach);\r\n d3_geom_voronoiBeaches.remove(beach);\r\n d3_geom_voronoiBeachPool.push(beach);\r\n d3_geom_voronoiRedBlackNode(beach);\r\n }\r\n function d3_geom_voronoiRemoveBeach(beach) {\r\n var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\r\n x: x,\r\n y: y\r\n }, previous = beach.P, next = beach.N, disappearing = [ beach ];\r\n d3_geom_voronoiDetachBeach(beach);\r\n var lArc = previous;\r\n while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\r\n previous = lArc.P;\r\n disappearing.unshift(lArc);\r\n d3_geom_voronoiDetachBeach(lArc);\r\n lArc = previous;\r\n }\r\n disappearing.unshift(lArc);\r\n d3_geom_voronoiDetachCircle(lArc);\r\n var rArc = next;\r\n while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\r\n next = rArc.N;\r\n disappearing.push(rArc);\r\n d3_geom_voronoiDetachBeach(rArc);\r\n rArc = next;\r\n }\r\n disappearing.push(rArc);\r\n d3_geom_voronoiDetachCircle(rArc);\r\n var nArcs = disappearing.length, iArc;\r\n for (iArc = 1; iArc < nArcs; ++iArc) {\r\n rArc = disappearing[iArc];\r\n lArc = disappearing[iArc - 1];\r\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\r\n }\r\n lArc = disappearing[0];\r\n rArc = disappearing[nArcs - 1];\r\n rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\r\n d3_geom_voronoiAttachCircle(lArc);\r\n d3_geom_voronoiAttachCircle(rArc);\r\n }\r\n function d3_geom_voronoiAddBeach(site) {\r\n var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\r\n while (node) {\r\n dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\r\n if (dxl > ε) node = node.L; else {\r\n dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\r\n if (dxr > ε) {\r\n if (!node.R) {\r\n lArc = node;\r\n break;\r\n }\r\n node = node.R;\r\n } else {\r\n if (dxl > -ε) {\r\n lArc = node.P;\r\n rArc = node;\r\n } else if (dxr > -ε) {\r\n lArc = node;\r\n rArc = node.N;\r\n } else {\r\n lArc = rArc = node;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n var newArc = d3_geom_voronoiCreateBeach(site);\r\n d3_geom_voronoiBeaches.insert(lArc, newArc);\r\n if (!lArc && !rArc) return;\r\n if (lArc === rArc) {\r\n d3_geom_voronoiDetachCircle(lArc);\r\n rArc = d3_geom_voronoiCreateBeach(lArc.site);\r\n d3_geom_voronoiBeaches.insert(newArc, rArc);\r\n newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\r\n d3_geom_voronoiAttachCircle(lArc);\r\n d3_geom_voronoiAttachCircle(rArc);\r\n return;\r\n }\r\n if (!rArc) {\r\n newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\r\n return;\r\n }\r\n d3_geom_voronoiDetachCircle(lArc);\r\n d3_geom_voronoiDetachCircle(rArc);\r\n var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\r\n x: (cy * hb - by * hc) / d + ax,\r\n y: (bx * hc - cx * hb) / d + ay\r\n };\r\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\r\n newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\r\n rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\r\n d3_geom_voronoiAttachCircle(lArc);\r\n d3_geom_voronoiAttachCircle(rArc);\r\n }\r\n function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\r\n var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\r\n if (!pby2) return rfocx;\r\n var lArc = arc.P;\r\n if (!lArc) return -Infinity;\r\n site = lArc.site;\r\n var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\r\n if (!plby2) return lfocx;\r\n var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\r\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\r\n return (rfocx + lfocx) / 2;\r\n }\r\n function d3_geom_voronoiRightBreakPoint(arc, directrix) {\r\n var rArc = arc.N;\r\n if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\r\n var site = arc.site;\r\n return site.y === directrix ? site.x : Infinity;\r\n }\r\n function d3_geom_voronoiCell(site) {\r\n this.site = site;\r\n this.edges = [];\r\n }\r\n d3_geom_voronoiCell.prototype.prepare = function() {\r\n var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\r\n while (iHalfEdge--) {\r\n edge = halfEdges[iHalfEdge].edge;\r\n if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\r\n }\r\n halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\r\n return halfEdges.length;\r\n };\r\n function d3_geom_voronoiCloseCells(extent) {\r\n var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\r\n while (iCell--) {\r\n cell = cells[iCell];\r\n if (!cell || !cell.prepare()) continue;\r\n halfEdges = cell.edges;\r\n nHalfEdges = halfEdges.length;\r\n iHalfEdge = 0;\r\n while (iHalfEdge < nHalfEdges) {\r\n end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\r\n start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\r\n if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\r\n halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\r\n x: x0,\r\n y: abs(x2 - x0) < ε ? y2 : y1\r\n } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\r\n x: abs(y2 - y1) < ε ? x2 : x1,\r\n y: y1\r\n } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\r\n x: x1,\r\n y: abs(x2 - x1) < ε ? y2 : y0\r\n } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\r\n x: abs(y2 - y0) < ε ? x2 : x0,\r\n y: y0\r\n } : null), cell.site, null));\r\n ++nHalfEdges;\r\n }\r\n }\r\n }\r\n }\r\n function d3_geom_voronoiHalfEdgeOrder(a, b) {\r\n return b.angle - a.angle;\r\n }\r\n function d3_geom_voronoiCircle() {\r\n d3_geom_voronoiRedBlackNode(this);\r\n this.x = this.y = this.arc = this.site = this.cy = null;\r\n }\r\n function d3_geom_voronoiAttachCircle(arc) {\r\n var lArc = arc.P, rArc = arc.N;\r\n if (!lArc || !rArc) return;\r\n var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\r\n if (lSite === rSite) return;\r\n var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\r\n var d = 2 * (ax * cy - ay * cx);\r\n if (d >= -ε2) return;\r\n var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\r\n var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\r\n circle.arc = arc;\r\n circle.site = cSite;\r\n circle.x = x + bx;\r\n circle.y = cy + Math.sqrt(x * x + y * y);\r\n circle.cy = cy;\r\n arc.circle = circle;\r\n var before = null, node = d3_geom_voronoiCircles._;\r\n while (node) {\r\n if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\r\n if (node.L) node = node.L; else {\r\n before = node.P;\r\n break;\r\n }\r\n } else {\r\n if (node.R) node = node.R; else {\r\n before = node;\r\n break;\r\n }\r\n }\r\n }\r\n d3_geom_voronoiCircles.insert(before, circle);\r\n if (!before) d3_geom_voronoiFirstCircle = circle;\r\n }\r\n function d3_geom_voronoiDetachCircle(arc) {\r\n var circle = arc.circle;\r\n if (circle) {\r\n if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\r\n d3_geom_voronoiCircles.remove(circle);\r\n d3_geom_voronoiCirclePool.push(circle);\r\n d3_geom_voronoiRedBlackNode(circle);\r\n arc.circle = null;\r\n }\r\n }\r\n function d3_geom_voronoiClipEdges(extent) {\r\n var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\r\n while (i--) {\r\n e = edges[i];\r\n if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\r\n e.a = e.b = null;\r\n edges.splice(i, 1);\r\n }\r\n }\r\n }\r\n function d3_geom_voronoiConnectEdge(edge, extent) {\r\n var vb = edge.b;\r\n if (vb) return true;\r\n var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\r\n if (ry === ly) {\r\n if (fx < x0 || fx >= x1) return;\r\n if (lx > rx) {\r\n if (!va) va = {\r\n x: fx,\r\n y: y0\r\n }; else if (va.y >= y1) return;\r\n vb = {\r\n x: fx,\r\n y: y1\r\n };\r\n } else {\r\n if (!va) va = {\r\n x: fx,\r\n y: y1\r\n }; else if (va.y < y0) return;\r\n vb = {\r\n x: fx,\r\n y: y0\r\n };\r\n }\r\n } else {\r\n fm = (lx - rx) / (ry - ly);\r\n fb = fy - fm * fx;\r\n if (fm < -1 || fm > 1) {\r\n if (lx > rx) {\r\n if (!va) va = {\r\n x: (y0 - fb) / fm,\r\n y: y0\r\n }; else if (va.y >= y1) return;\r\n vb = {\r\n x: (y1 - fb) / fm,\r\n y: y1\r\n };\r\n } else {\r\n if (!va) va = {\r\n x: (y1 - fb) / fm,\r\n y: y1\r\n }; else if (va.y < y0) return;\r\n vb = {\r\n x: (y0 - fb) / fm,\r\n y: y0\r\n };\r\n }\r\n } else {\r\n if (ly < ry) {\r\n if (!va) va = {\r\n x: x0,\r\n y: fm * x0 + fb\r\n }; else if (va.x >= x1) return;\r\n vb = {\r\n x: x1,\r\n y: fm * x1 + fb\r\n };\r\n } else {\r\n if (!va) va = {\r\n x: x1,\r\n y: fm * x1 + fb\r\n }; else if (va.x < x0) return;\r\n vb = {\r\n x: x0,\r\n y: fm * x0 + fb\r\n };\r\n }\r\n }\r\n }\r\n edge.a = va;\r\n edge.b = vb;\r\n return true;\r\n }\r\n function d3_geom_voronoiEdge(lSite, rSite) {\r\n this.l = lSite;\r\n this.r = rSite;\r\n this.a = this.b = null;\r\n }\r\n function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\r\n var edge = new d3_geom_voronoiEdge(lSite, rSite);\r\n d3_geom_voronoiEdges.push(edge);\r\n if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\r\n if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\r\n d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\r\n d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\r\n return edge;\r\n }\r\n function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\r\n var edge = new d3_geom_voronoiEdge(lSite, null);\r\n edge.a = va;\r\n edge.b = vb;\r\n d3_geom_voronoiEdges.push(edge);\r\n return edge;\r\n }\r\n function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\r\n if (!edge.a && !edge.b) {\r\n edge.a = vertex;\r\n edge.l = lSite;\r\n edge.r = rSite;\r\n } else if (edge.l === rSite) {\r\n edge.b = vertex;\r\n } else {\r\n edge.a = vertex;\r\n }\r\n }\r\n function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\r\n var va = edge.a, vb = edge.b;\r\n this.edge = edge;\r\n this.site = lSite;\r\n this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\r\n }\r\n d3_geom_voronoiHalfEdge.prototype = {\r\n start: function() {\r\n return this.edge.l === this.site ? this.edge.a : this.edge.b;\r\n },\r\n end: function() {\r\n return this.edge.l === this.site ? this.edge.b : this.edge.a;\r\n }\r\n };\r\n function d3_geom_voronoiRedBlackTree() {\r\n this._ = null;\r\n }\r\n function d3_geom_voronoiRedBlackNode(node) {\r\n node.U = node.C = node.L = node.R = node.P = node.N = null;\r\n }\r\n d3_geom_voronoiRedBlackTree.prototype = {\r\n insert: function(after, node) {\r\n var parent, grandpa, uncle;\r\n if (after) {\r\n node.P = after;\r\n node.N = after.N;\r\n if (after.N) after.N.P = node;\r\n after.N = node;\r\n if (after.R) {\r\n after = after.R;\r\n while (after.L) after = after.L;\r\n after.L = node;\r\n } else {\r\n after.R = node;\r\n }\r\n parent = after;\r\n } else if (this._) {\r\n after = d3_geom_voronoiRedBlackFirst(this._);\r\n node.P = null;\r\n node.N = after;\r\n after.P = after.L = node;\r\n parent = after;\r\n } else {\r\n node.P = node.N = null;\r\n this._ = node;\r\n parent = null;\r\n }\r\n node.L = node.R = null;\r\n node.U = parent;\r\n node.C = true;\r\n after = node;\r\n while (parent && parent.C) {\r\n grandpa = parent.U;\r\n if (parent === grandpa.L) {\r\n uncle = grandpa.R;\r\n if (uncle && uncle.C) {\r\n parent.C = uncle.C = false;\r\n grandpa.C = true;\r\n after = grandpa;\r\n } else {\r\n if (after === parent.R) {\r\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\r\n after = parent;\r\n parent = after.U;\r\n }\r\n parent.C = false;\r\n grandpa.C = true;\r\n d3_geom_voronoiRedBlackRotateRight(this, grandpa);\r\n }\r\n } else {\r\n uncle = grandpa.L;\r\n if (uncle && uncle.C) {\r\n parent.C = uncle.C = false;\r\n grandpa.C = true;\r\n after = grandpa;\r\n } else {\r\n if (after === parent.L) {\r\n d3_geom_voronoiRedBlackRotateRight(this, parent);\r\n after = parent;\r\n parent = after.U;\r\n }\r\n parent.C = false;\r\n grandpa.C = true;\r\n d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\r\n }\r\n }\r\n parent = after.U;\r\n }\r\n this._.C = false;\r\n },\r\n remove: function(node) {\r\n if (node.N) node.N.P = node.P;\r\n if (node.P) node.P.N = node.N;\r\n node.N = node.P = null;\r\n var parent = node.U, sibling, left = node.L, right = node.R, next, red;\r\n if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\r\n if (parent) {\r\n if (parent.L === node) parent.L = next; else parent.R = next;\r\n } else {\r\n this._ = next;\r\n }\r\n if (left && right) {\r\n red = next.C;\r\n next.C = node.C;\r\n next.L = left;\r\n left.U = next;\r\n if (next !== right) {\r\n parent = next.U;\r\n next.U = node.U;\r\n node = next.R;\r\n parent.L = node;\r\n next.R = right;\r\n right.U = next;\r\n } else {\r\n next.U = parent;\r\n parent = next;\r\n node = next.R;\r\n }\r\n } else {\r\n red = node.C;\r\n node = next;\r\n }\r\n if (node) node.U = parent;\r\n if (red) return;\r\n if (node && node.C) {\r\n node.C = false;\r\n return;\r\n }\r\n do {\r\n if (node === this._) break;\r\n if (node === parent.L) {\r\n sibling = parent.R;\r\n if (sibling.C) {\r\n sibling.C = false;\r\n parent.C = true;\r\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\r\n sibling = parent.R;\r\n }\r\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\r\n if (!sibling.R || !sibling.R.C) {\r\n sibling.L.C = false;\r\n sibling.C = true;\r\n d3_geom_voronoiRedBlackRotateRight(this, sibling);\r\n sibling = parent.R;\r\n }\r\n sibling.C = parent.C;\r\n parent.C = sibling.R.C = false;\r\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\r\n node = this._;\r\n break;\r\n }\r\n } else {\r\n sibling = parent.L;\r\n if (sibling.C) {\r\n sibling.C = false;\r\n parent.C = true;\r\n d3_geom_voronoiRedBlackRotateRight(this, parent);\r\n sibling = parent.L;\r\n }\r\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\r\n if (!sibling.L || !sibling.L.C) {\r\n sibling.R.C = false;\r\n sibling.C = true;\r\n d3_geom_voronoiRedBlackRotateLeft(this, sibling);\r\n sibling = parent.L;\r\n }\r\n sibling.C = parent.C;\r\n parent.C = sibling.L.C = false;\r\n d3_geom_voronoiRedBlackRotateRight(this, parent);\r\n node = this._;\r\n break;\r\n }\r\n }\r\n sibling.C = true;\r\n node = parent;\r\n parent = parent.U;\r\n } while (!node.C);\r\n if (node) node.C = false;\r\n }\r\n };\r\n function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\r\n var p = node, q = node.R, parent = p.U;\r\n if (parent) {\r\n if (parent.L === p) parent.L = q; else parent.R = q;\r\n } else {\r\n tree._ = q;\r\n }\r\n q.U = parent;\r\n p.U = q;\r\n p.R = q.L;\r\n if (p.R) p.R.U = p;\r\n q.L = p;\r\n }\r\n function d3_geom_voronoiRedBlackRotateRight(tree, node) {\r\n var p = node, q = node.L, parent = p.U;\r\n if (parent) {\r\n if (parent.L === p) parent.L = q; else parent.R = q;\r\n } else {\r\n tree._ = q;\r\n }\r\n q.U = parent;\r\n p.U = q;\r\n p.L = q.R;\r\n if (p.L) p.L.U = p;\r\n q.R = p;\r\n }\r\n function d3_geom_voronoiRedBlackFirst(node) {\r\n while (node.L) node = node.L;\r\n return node;\r\n }\r\n function d3_geom_voronoi(sites, bbox) {\r\n var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\r\n d3_geom_voronoiEdges = [];\r\n d3_geom_voronoiCells = new Array(sites.length);\r\n d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\r\n d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\r\n while (true) {\r\n circle = d3_geom_voronoiFirstCircle;\r\n if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\r\n if (site.x !== x0 || site.y !== y0) {\r\n d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\r\n d3_geom_voronoiAddBeach(site);\r\n x0 = site.x, y0 = site.y;\r\n }\r\n site = sites.pop();\r\n } else if (circle) {\r\n d3_geom_voronoiRemoveBeach(circle.arc);\r\n } else {\r\n break;\r\n }\r\n }\r\n if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\r\n var diagram = {\r\n cells: d3_geom_voronoiCells,\r\n edges: d3_geom_voronoiEdges\r\n };\r\n d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\r\n return diagram;\r\n }\r\n function d3_geom_voronoiVertexOrder(a, b) {\r\n return b.y - a.y || b.x - a.x;\r\n }\r\n d3.geom.voronoi = function(points) {\r\n var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\r\n if (points) return voronoi(points);\r\n function voronoi(data) {\r\n var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\r\n d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\r\n var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\r\n var s = e.start();\r\n return [ s.x, s.y ];\r\n }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\r\n polygon.point = data[i];\r\n });\r\n return polygons;\r\n }\r\n function sites(data) {\r\n return data.map(function(d, i) {\r\n return {\r\n x: Math.round(fx(d, i) / ε) * ε,\r\n y: Math.round(fy(d, i) / ε) * ε,\r\n i: i\r\n };\r\n });\r\n }\r\n voronoi.links = function(data) {\r\n return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\r\n return edge.l && edge.r;\r\n }).map(function(edge) {\r\n return {\r\n source: data[edge.l.i],\r\n target: data[edge.r.i]\r\n };\r\n });\r\n };\r\n voronoi.triangles = function(data) {\r\n var triangles = [];\r\n d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\r\n var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\r\n while (++j < m) {\r\n e0 = e1;\r\n s0 = s1;\r\n e1 = edges[j].edge;\r\n s1 = e1.l === site ? e1.r : e1.l;\r\n if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\r\n triangles.push([ data[i], data[s0.i], data[s1.i] ]);\r\n }\r\n }\r\n });\r\n return triangles;\r\n };\r\n voronoi.x = function(_) {\r\n return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\r\n };\r\n voronoi.y = function(_) {\r\n return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\r\n };\r\n voronoi.clipExtent = function(_) {\r\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\r\n clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\r\n return voronoi;\r\n };\r\n voronoi.size = function(_) {\r\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\r\n return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\r\n };\r\n return voronoi;\r\n };\r\n var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\r\n function d3_geom_voronoiTriangleArea(a, b, c) {\r\n return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\r\n }\r\n d3.geom.delaunay = function(vertices) {\r\n return d3.geom.voronoi().triangles(vertices);\r\n };\r\n d3.geom.quadtree = function(points, x1, y1, x2, y2) {\r\n var x = d3_geom_pointX, y = d3_geom_pointY, compat;\r\n if (compat = arguments.length) {\r\n x = d3_geom_quadtreeCompatX;\r\n y = d3_geom_quadtreeCompatY;\r\n if (compat === 3) {\r\n y2 = y1;\r\n x2 = x1;\r\n y1 = x1 = 0;\r\n }\r\n return quadtree(points);\r\n }\r\n function quadtree(data) {\r\n var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\r\n if (x1 != null) {\r\n x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\r\n } else {\r\n x2_ = y2_ = -(x1_ = y1_ = Infinity);\r\n xs = [], ys = [];\r\n n = data.length;\r\n if (compat) for (i = 0; i < n; ++i) {\r\n d = data[i];\r\n if (d.x < x1_) x1_ = d.x;\r\n if (d.y < y1_) y1_ = d.y;\r\n if (d.x > x2_) x2_ = d.x;\r\n if (d.y > y2_) y2_ = d.y;\r\n xs.push(d.x);\r\n ys.push(d.y);\r\n } else for (i = 0; i < n; ++i) {\r\n var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\r\n if (x_ < x1_) x1_ = x_;\r\n if (y_ < y1_) y1_ = y_;\r\n if (x_ > x2_) x2_ = x_;\r\n if (y_ > y2_) y2_ = y_;\r\n xs.push(x_);\r\n ys.push(y_);\r\n }\r\n }\r\n var dx = x2_ - x1_, dy = y2_ - y1_;\r\n if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\r\n function insert(n, d, x, y, x1, y1, x2, y2) {\r\n if (isNaN(x) || isNaN(y)) return;\r\n if (n.leaf) {\r\n var nx = n.x, ny = n.y;\r\n if (nx != null) {\r\n if (abs(nx - x) + abs(ny - y) < .01) {\r\n insertChild(n, d, x, y, x1, y1, x2, y2);\r\n } else {\r\n var nPoint = n.point;\r\n n.x = n.y = n.point = null;\r\n insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\r\n insertChild(n, d, x, y, x1, y1, x2, y2);\r\n }\r\n } else {\r\n n.x = x, n.y = y, n.point = d;\r\n }\r\n } else {\r\n insertChild(n, d, x, y, x1, y1, x2, y2);\r\n }\r\n }\r\n function insertChild(n, d, x, y, x1, y1, x2, y2) {\r\n var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\r\n n.leaf = false;\r\n n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\r\n if (right) x1 = xm; else x2 = xm;\r\n if (below) y1 = ym; else y2 = ym;\r\n insert(n, d, x, y, x1, y1, x2, y2);\r\n }\r\n var root = d3_geom_quadtreeNode();\r\n root.add = function(d) {\r\n insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\r\n };\r\n root.visit = function(f) {\r\n d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\r\n };\r\n root.find = function(point) {\r\n return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\r\n };\r\n i = -1;\r\n if (x1 == null) {\r\n while (++i < n) {\r\n insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\r\n }\r\n --i;\r\n } else data.forEach(root.add);\r\n xs = ys = data = d = null;\r\n return root;\r\n }\r\n quadtree.x = function(_) {\r\n return arguments.length ? (x = _, quadtree) : x;\r\n };\r\n quadtree.y = function(_) {\r\n return arguments.length ? (y = _, quadtree) : y;\r\n };\r\n quadtree.extent = function(_) {\r\n if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\r\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \r\n y2 = +_[1][1];\r\n return quadtree;\r\n };\r\n quadtree.size = function(_) {\r\n if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\r\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\r\n return quadtree;\r\n };\r\n return quadtree;\r\n };\r\n function d3_geom_quadtreeCompatX(d) {\r\n return d.x;\r\n }\r\n function d3_geom_quadtreeCompatY(d) {\r\n return d.y;\r\n }\r\n function d3_geom_quadtreeNode() {\r\n return {\r\n leaf: true,\r\n nodes: [],\r\n point: null,\r\n x: null,\r\n y: null\r\n };\r\n }\r\n function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\r\n if (!f(node, x1, y1, x2, y2)) {\r\n var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\r\n if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\r\n if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\r\n if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\r\n if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\r\n }\r\n }\r\n function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\r\n var minDistance2 = Infinity, closestPoint;\r\n (function find(node, x1, y1, x2, y2) {\r\n if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\r\n if (point = node.point) {\r\n var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\r\n if (distance2 < minDistance2) {\r\n var distance = Math.sqrt(minDistance2 = distance2);\r\n x0 = x - distance, y0 = y - distance;\r\n x3 = x + distance, y3 = y + distance;\r\n closestPoint = point;\r\n }\r\n }\r\n var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\r\n for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\r\n if (node = children[i & 3]) switch (i & 3) {\r\n case 0:\r\n find(node, x1, y1, xm, ym);\r\n break;\r\n\r\n case 1:\r\n find(node, xm, y1, x2, ym);\r\n break;\r\n\r\n case 2:\r\n find(node, x1, ym, xm, y2);\r\n break;\r\n\r\n case 3:\r\n find(node, xm, ym, x2, y2);\r\n break;\r\n }\r\n }\r\n })(root, x0, y0, x3, y3);\r\n return closestPoint;\r\n }\r\n d3.interpolateRgb = d3_interpolateRgb;\r\n function d3_interpolateRgb(a, b) {\r\n a = d3.rgb(a);\r\n b = d3.rgb(b);\r\n var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\r\n return function(t) {\r\n return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\r\n };\r\n }\r\n d3.interpolateObject = d3_interpolateObject;\r\n function d3_interpolateObject(a, b) {\r\n var i = {}, c = {}, k;\r\n for (k in a) {\r\n if (k in b) {\r\n i[k] = d3_interpolate(a[k], b[k]);\r\n } else {\r\n c[k] = a[k];\r\n }\r\n }\r\n for (k in b) {\r\n if (!(k in a)) {\r\n c[k] = b[k];\r\n }\r\n }\r\n return function(t) {\r\n for (k in i) c[k] = i[k](t);\r\n return c;\r\n };\r\n }\r\n d3.interpolateNumber = d3_interpolateNumber;\r\n function d3_interpolateNumber(a, b) {\r\n a = +a, b = +b;\r\n return function(t) {\r\n return a * (1 - t) + b * t;\r\n };\r\n }\r\n d3.interpolateString = d3_interpolateString;\r\n function d3_interpolateString(a, b) {\r\n var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\r\n a = a + \"\", b = b + \"\";\r\n while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\r\n if ((bs = bm.index) > bi) {\r\n bs = b.slice(bi, bs);\r\n if (s[i]) s[i] += bs; else s[++i] = bs;\r\n }\r\n if ((am = am[0]) === (bm = bm[0])) {\r\n if (s[i]) s[i] += bm; else s[++i] = bm;\r\n } else {\r\n s[++i] = null;\r\n q.push({\r\n i: i,\r\n x: d3_interpolateNumber(am, bm)\r\n });\r\n }\r\n bi = d3_interpolate_numberB.lastIndex;\r\n }\r\n if (bi < b.length) {\r\n bs = b.slice(bi);\r\n if (s[i]) s[i] += bs; else s[++i] = bs;\r\n }\r\n return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\r\n return b(t) + \"\";\r\n }) : function() {\r\n return b;\r\n } : (b = q.length, function(t) {\r\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\r\n return s.join(\"\");\r\n });\r\n }\r\n var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\r\n d3.interpolate = d3_interpolate;\r\n function d3_interpolate(a, b) {\r\n var i = d3.interpolators.length, f;\r\n while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\r\n return f;\r\n }\r\n d3.interpolators = [ function(a, b) {\r\n var t = typeof b;\r\n return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\r\n } ];\r\n d3.interpolateArray = d3_interpolateArray;\r\n function d3_interpolateArray(a, b) {\r\n var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\r\n for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\r\n for (;i < na; ++i) c[i] = a[i];\r\n for (;i < nb; ++i) c[i] = b[i];\r\n return function(t) {\r\n for (i = 0; i < n0; ++i) c[i] = x[i](t);\r\n return c;\r\n };\r\n }\r\n var d3_ease_default = function() {\r\n return d3_identity;\r\n };\r\n var d3_ease = d3.map({\r\n linear: d3_ease_default,\r\n poly: d3_ease_poly,\r\n quad: function() {\r\n return d3_ease_quad;\r\n },\r\n cubic: function() {\r\n return d3_ease_cubic;\r\n },\r\n sin: function() {\r\n return d3_ease_sin;\r\n },\r\n exp: function() {\r\n return d3_ease_exp;\r\n },\r\n circle: function() {\r\n return d3_ease_circle;\r\n },\r\n elastic: d3_ease_elastic,\r\n back: d3_ease_back,\r\n bounce: function() {\r\n return d3_ease_bounce;\r\n }\r\n });\r\n var d3_ease_mode = d3.map({\r\n \"in\": d3_identity,\r\n out: d3_ease_reverse,\r\n \"in-out\": d3_ease_reflect,\r\n \"out-in\": function(f) {\r\n return d3_ease_reflect(d3_ease_reverse(f));\r\n }\r\n });\r\n d3.ease = function(name) {\r\n var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\r\n t = d3_ease.get(t) || d3_ease_default;\r\n m = d3_ease_mode.get(m) || d3_identity;\r\n return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\r\n };\r\n function d3_ease_clamp(f) {\r\n return function(t) {\r\n return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\r\n };\r\n }\r\n function d3_ease_reverse(f) {\r\n return function(t) {\r\n return 1 - f(1 - t);\r\n };\r\n }\r\n function d3_ease_reflect(f) {\r\n return function(t) {\r\n return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\r\n };\r\n }\r\n function d3_ease_quad(t) {\r\n return t * t;\r\n }\r\n function d3_ease_cubic(t) {\r\n return t * t * t;\r\n }\r\n function d3_ease_cubicInOut(t) {\r\n if (t <= 0) return 0;\r\n if (t >= 1) return 1;\r\n var t2 = t * t, t3 = t2 * t;\r\n return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\r\n }\r\n function d3_ease_poly(e) {\r\n return function(t) {\r\n return Math.pow(t, e);\r\n };\r\n }\r\n function d3_ease_sin(t) {\r\n return 1 - Math.cos(t * halfπ);\r\n }\r\n function d3_ease_exp(t) {\r\n return Math.pow(2, 10 * (t - 1));\r\n }\r\n function d3_ease_circle(t) {\r\n return 1 - Math.sqrt(1 - t * t);\r\n }\r\n function d3_ease_elastic(a, p) {\r\n var s;\r\n if (arguments.length < 2) p = .45;\r\n if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\r\n return function(t) {\r\n return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\r\n };\r\n }\r\n function d3_ease_back(s) {\r\n if (!s) s = 1.70158;\r\n return function(t) {\r\n return t * t * ((s + 1) * t - s);\r\n };\r\n }\r\n function d3_ease_bounce(t) {\r\n return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\r\n }\r\n d3.interpolateHcl = d3_interpolateHcl;\r\n function d3_interpolateHcl(a, b) {\r\n a = d3.hcl(a);\r\n b = d3.hcl(b);\r\n var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\r\n if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\r\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\r\n return function(t) {\r\n return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\r\n };\r\n }\r\n d3.interpolateHsl = d3_interpolateHsl;\r\n function d3_interpolateHsl(a, b) {\r\n a = d3.hsl(a);\r\n b = d3.hsl(b);\r\n var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\r\n if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\r\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\r\n return function(t) {\r\n return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\r\n };\r\n }\r\n d3.interpolateLab = d3_interpolateLab;\r\n function d3_interpolateLab(a, b) {\r\n a = d3.lab(a);\r\n b = d3.lab(b);\r\n var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\r\n return function(t) {\r\n return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\r\n };\r\n }\r\n d3.interpolateRound = d3_interpolateRound;\r\n function d3_interpolateRound(a, b) {\r\n b -= a;\r\n return function(t) {\r\n return Math.round(a + b * t);\r\n };\r\n }\r\n d3.transform = function(string) {\r\n var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\r\n return (d3.transform = function(string) {\r\n if (string != null) {\r\n g.setAttribute(\"transform\", string);\r\n var t = g.transform.baseVal.consolidate();\r\n }\r\n return new d3_transform(t ? t.matrix : d3_transformIdentity);\r\n })(string);\r\n };\r\n function d3_transform(m) {\r\n var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\r\n if (r0[0] * r1[1] < r1[0] * r0[1]) {\r\n r0[0] *= -1;\r\n r0[1] *= -1;\r\n kx *= -1;\r\n kz *= -1;\r\n }\r\n this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\r\n this.translate = [ m.e, m.f ];\r\n this.scale = [ kx, ky ];\r\n this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\r\n }\r\n d3_transform.prototype.toString = function() {\r\n return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\r\n };\r\n function d3_transformDot(a, b) {\r\n return a[0] * b[0] + a[1] * b[1];\r\n }\r\n function d3_transformNormalize(a) {\r\n var k = Math.sqrt(d3_transformDot(a, a));\r\n if (k) {\r\n a[0] /= k;\r\n a[1] /= k;\r\n }\r\n return k;\r\n }\r\n function d3_transformCombine(a, b, k) {\r\n a[0] += k * b[0];\r\n a[1] += k * b[1];\r\n return a;\r\n }\r\n var d3_transformIdentity = {\r\n a: 1,\r\n b: 0,\r\n c: 0,\r\n d: 1,\r\n e: 0,\r\n f: 0\r\n };\r\n d3.interpolateTransform = d3_interpolateTransform;\r\n function d3_interpolateTransformPop(s) {\r\n return s.length ? s.pop() + \",\" : \"\";\r\n }\r\n function d3_interpolateTranslate(ta, tb, s, q) {\r\n if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\r\n var i = s.push(\"translate(\", null, \",\", null, \")\");\r\n q.push({\r\n i: i - 4,\r\n x: d3_interpolateNumber(ta[0], tb[0])\r\n }, {\r\n i: i - 2,\r\n x: d3_interpolateNumber(ta[1], tb[1])\r\n });\r\n } else if (tb[0] || tb[1]) {\r\n s.push(\"translate(\" + tb + \")\");\r\n }\r\n }\r\n function d3_interpolateRotate(ra, rb, s, q) {\r\n if (ra !== rb) {\r\n if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\r\n q.push({\r\n i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\r\n x: d3_interpolateNumber(ra, rb)\r\n });\r\n } else if (rb) {\r\n s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\r\n }\r\n }\r\n function d3_interpolateSkew(wa, wb, s, q) {\r\n if (wa !== wb) {\r\n q.push({\r\n i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\r\n x: d3_interpolateNumber(wa, wb)\r\n });\r\n } else if (wb) {\r\n s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\r\n }\r\n }\r\n function d3_interpolateScale(ka, kb, s, q) {\r\n if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\r\n var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\r\n q.push({\r\n i: i - 4,\r\n x: d3_interpolateNumber(ka[0], kb[0])\r\n }, {\r\n i: i - 2,\r\n x: d3_interpolateNumber(ka[1], kb[1])\r\n });\r\n } else if (kb[0] !== 1 || kb[1] !== 1) {\r\n s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\r\n }\r\n }\r\n function d3_interpolateTransform(a, b) {\r\n var s = [], q = [];\r\n a = d3.transform(a), b = d3.transform(b);\r\n d3_interpolateTranslate(a.translate, b.translate, s, q);\r\n d3_interpolateRotate(a.rotate, b.rotate, s, q);\r\n d3_interpolateSkew(a.skew, b.skew, s, q);\r\n d3_interpolateScale(a.scale, b.scale, s, q);\r\n a = b = null;\r\n return function(t) {\r\n var i = -1, n = q.length, o;\r\n while (++i < n) s[(o = q[i]).i] = o.x(t);\r\n return s.join(\"\");\r\n };\r\n }\r\n function d3_uninterpolateNumber(a, b) {\r\n b = (b -= a = +a) || 1 / b;\r\n return function(x) {\r\n return (x - a) / b;\r\n };\r\n }\r\n function d3_uninterpolateClamp(a, b) {\r\n b = (b -= a = +a) || 1 / b;\r\n return function(x) {\r\n return Math.max(0, Math.min(1, (x - a) / b));\r\n };\r\n }\r\n d3.layout = {};\r\n d3.layout.bundle = function() {\r\n return function(links) {\r\n var paths = [], i = -1, n = links.length;\r\n while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\r\n return paths;\r\n };\r\n };\r\n function d3_layout_bundlePath(link) {\r\n var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\r\n while (start !== lca) {\r\n start = start.parent;\r\n points.push(start);\r\n }\r\n var k = points.length;\r\n while (end !== lca) {\r\n points.splice(k, 0, end);\r\n end = end.parent;\r\n }\r\n return points;\r\n }\r\n function d3_layout_bundleAncestors(node) {\r\n var ancestors = [], parent = node.parent;\r\n while (parent != null) {\r\n ancestors.push(node);\r\n node = parent;\r\n parent = parent.parent;\r\n }\r\n ancestors.push(node);\r\n return ancestors;\r\n }\r\n function d3_layout_bundleLeastCommonAncestor(a, b) {\r\n if (a === b) return a;\r\n var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\r\n while (aNode === bNode) {\r\n sharedNode = aNode;\r\n aNode = aNodes.pop();\r\n bNode = bNodes.pop();\r\n }\r\n return sharedNode;\r\n }\r\n d3.layout.chord = function() {\r\n var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\r\n function relayout() {\r\n var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\r\n chords = [];\r\n groups = [];\r\n k = 0, i = -1;\r\n while (++i < n) {\r\n x = 0, j = -1;\r\n while (++j < n) {\r\n x += matrix[i][j];\r\n }\r\n groupSums.push(x);\r\n subgroupIndex.push(d3.range(n));\r\n k += x;\r\n }\r\n if (sortGroups) {\r\n groupIndex.sort(function(a, b) {\r\n return sortGroups(groupSums[a], groupSums[b]);\r\n });\r\n }\r\n if (sortSubgroups) {\r\n subgroupIndex.forEach(function(d, i) {\r\n d.sort(function(a, b) {\r\n return sortSubgroups(matrix[i][a], matrix[i][b]);\r\n });\r\n });\r\n }\r\n k = (τ - padding * n) / k;\r\n x = 0, i = -1;\r\n while (++i < n) {\r\n x0 = x, j = -1;\r\n while (++j < n) {\r\n var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\r\n subgroups[di + \"-\" + dj] = {\r\n index: di,\r\n subindex: dj,\r\n startAngle: a0,\r\n endAngle: a1,\r\n value: v\r\n };\r\n }\r\n groups[di] = {\r\n index: di,\r\n startAngle: x0,\r\n endAngle: x,\r\n value: groupSums[di]\r\n };\r\n x += padding;\r\n }\r\n i = -1;\r\n while (++i < n) {\r\n j = i - 1;\r\n while (++j < n) {\r\n var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\r\n if (source.value || target.value) {\r\n chords.push(source.value < target.value ? {\r\n source: target,\r\n target: source\r\n } : {\r\n source: source,\r\n target: target\r\n });\r\n }\r\n }\r\n }\r\n if (sortChords) resort();\r\n }\r\n function resort() {\r\n chords.sort(function(a, b) {\r\n return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\r\n });\r\n }\r\n chord.matrix = function(x) {\r\n if (!arguments.length) return matrix;\r\n n = (matrix = x) && matrix.length;\r\n chords = groups = null;\r\n return chord;\r\n };\r\n chord.padding = function(x) {\r\n if (!arguments.length) return padding;\r\n padding = x;\r\n chords = groups = null;\r\n return chord;\r\n };\r\n chord.sortGroups = function(x) {\r\n if (!arguments.length) return sortGroups;\r\n sortGroups = x;\r\n chords = groups = null;\r\n return chord;\r\n };\r\n chord.sortSubgroups = function(x) {\r\n if (!arguments.length) return sortSubgroups;\r\n sortSubgroups = x;\r\n chords = null;\r\n return chord;\r\n };\r\n chord.sortChords = function(x) {\r\n if (!arguments.length) return sortChords;\r\n sortChords = x;\r\n if (chords) resort();\r\n return chord;\r\n };\r\n chord.chords = function() {\r\n if (!chords) relayout();\r\n return chords;\r\n };\r\n chord.groups = function() {\r\n if (!groups) relayout();\r\n return groups;\r\n };\r\n return chord;\r\n };\r\n d3.layout.force = function() {\r\n var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\r\n function repulse(node) {\r\n return function(quad, x1, _, x2) {\r\n if (quad.point !== node) {\r\n var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\r\n if (dw * dw / theta2 < dn) {\r\n if (dn < chargeDistance2) {\r\n var k = quad.charge / dn;\r\n node.px -= dx * k;\r\n node.py -= dy * k;\r\n }\r\n return true;\r\n }\r\n if (quad.point && dn && dn < chargeDistance2) {\r\n var k = quad.pointCharge / dn;\r\n node.px -= dx * k;\r\n node.py -= dy * k;\r\n }\r\n }\r\n return !quad.charge;\r\n };\r\n }\r\n force.tick = function() {\r\n if ((alpha *= .99) < .005) {\r\n timer = null;\r\n event.end({\r\n type: \"end\",\r\n alpha: alpha = 0\r\n });\r\n return true;\r\n }\r\n var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\r\n for (i = 0; i < m; ++i) {\r\n o = links[i];\r\n s = o.source;\r\n t = o.target;\r\n x = t.x - s.x;\r\n y = t.y - s.y;\r\n if (l = x * x + y * y) {\r\n l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\r\n x *= l;\r\n y *= l;\r\n t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\r\n t.y -= y * k;\r\n s.x += x * (k = 1 - k);\r\n s.y += y * k;\r\n }\r\n }\r\n if (k = alpha * gravity) {\r\n x = size[0] / 2;\r\n y = size[1] / 2;\r\n i = -1;\r\n if (k) while (++i < n) {\r\n o = nodes[i];\r\n o.x += (x - o.x) * k;\r\n o.y += (y - o.y) * k;\r\n }\r\n }\r\n if (charge) {\r\n d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\r\n i = -1;\r\n while (++i < n) {\r\n if (!(o = nodes[i]).fixed) {\r\n q.visit(repulse(o));\r\n }\r\n }\r\n }\r\n i = -1;\r\n while (++i < n) {\r\n o = nodes[i];\r\n if (o.fixed) {\r\n o.x = o.px;\r\n o.y = o.py;\r\n } else {\r\n o.x -= (o.px - (o.px = o.x)) * friction;\r\n o.y -= (o.py - (o.py = o.y)) * friction;\r\n }\r\n }\r\n event.tick({\r\n type: \"tick\",\r\n alpha: alpha\r\n });\r\n };\r\n force.nodes = function(x) {\r\n if (!arguments.length) return nodes;\r\n nodes = x;\r\n return force;\r\n };\r\n force.links = function(x) {\r\n if (!arguments.length) return links;\r\n links = x;\r\n return force;\r\n };\r\n force.size = function(x) {\r\n if (!arguments.length) return size;\r\n size = x;\r\n return force;\r\n };\r\n force.linkDistance = function(x) {\r\n if (!arguments.length) return linkDistance;\r\n linkDistance = typeof x === \"function\" ? x : +x;\r\n return force;\r\n };\r\n force.distance = force.linkDistance;\r\n force.linkStrength = function(x) {\r\n if (!arguments.length) return linkStrength;\r\n linkStrength = typeof x === \"function\" ? x : +x;\r\n return force;\r\n };\r\n force.friction = function(x) {\r\n if (!arguments.length) return friction;\r\n friction = +x;\r\n return force;\r\n };\r\n force.charge = function(x) {\r\n if (!arguments.length) return charge;\r\n charge = typeof x === \"function\" ? x : +x;\r\n return force;\r\n };\r\n force.chargeDistance = function(x) {\r\n if (!arguments.length) return Math.sqrt(chargeDistance2);\r\n chargeDistance2 = x * x;\r\n return force;\r\n };\r\n force.gravity = function(x) {\r\n if (!arguments.length) return gravity;\r\n gravity = +x;\r\n return force;\r\n };\r\n force.theta = function(x) {\r\n if (!arguments.length) return Math.sqrt(theta2);\r\n theta2 = x * x;\r\n return force;\r\n };\r\n force.alpha = function(x) {\r\n if (!arguments.length) return alpha;\r\n x = +x;\r\n if (alpha) {\r\n if (x > 0) {\r\n alpha = x;\r\n } else {\r\n timer.c = null, timer.t = NaN, timer = null;\r\n event.end({\r\n type: \"end\",\r\n alpha: alpha = 0\r\n });\r\n }\r\n } else if (x > 0) {\r\n event.start({\r\n type: \"start\",\r\n alpha: alpha = x\r\n });\r\n timer = d3_timer(force.tick);\r\n }\r\n return force;\r\n };\r\n force.start = function() {\r\n var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\r\n for (i = 0; i < n; ++i) {\r\n (o = nodes[i]).index = i;\r\n o.weight = 0;\r\n }\r\n for (i = 0; i < m; ++i) {\r\n o = links[i];\r\n if (typeof o.source == \"number\") o.source = nodes[o.source];\r\n if (typeof o.target == \"number\") o.target = nodes[o.target];\r\n ++o.source.weight;\r\n ++o.target.weight;\r\n }\r\n for (i = 0; i < n; ++i) {\r\n o = nodes[i];\r\n if (isNaN(o.x)) o.x = position(\"x\", w);\r\n if (isNaN(o.y)) o.y = position(\"y\", h);\r\n if (isNaN(o.px)) o.px = o.x;\r\n if (isNaN(o.py)) o.py = o.y;\r\n }\r\n distances = [];\r\n if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\r\n strengths = [];\r\n if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\r\n charges = [];\r\n if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\r\n function position(dimension, size) {\r\n if (!neighbors) {\r\n neighbors = new Array(n);\r\n for (j = 0; j < n; ++j) {\r\n neighbors[j] = [];\r\n }\r\n for (j = 0; j < m; ++j) {\r\n var o = links[j];\r\n neighbors[o.source.index].push(o.target);\r\n neighbors[o.target.index].push(o.source);\r\n }\r\n }\r\n var candidates = neighbors[i], j = -1, l = candidates.length, x;\r\n while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\r\n return Math.random() * size;\r\n }\r\n return force.resume();\r\n };\r\n force.resume = function() {\r\n return force.alpha(.1);\r\n };\r\n force.stop = function() {\r\n return force.alpha(0);\r\n };\r\n force.drag = function() {\r\n if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\r\n if (!arguments.length) return drag;\r\n this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\r\n };\r\n function dragmove(d) {\r\n d.px = d3.event.x, d.py = d3.event.y;\r\n force.resume();\r\n }\r\n return d3.rebind(force, event, \"on\");\r\n };\r\n function d3_layout_forceDragstart(d) {\r\n d.fixed |= 2;\r\n }\r\n function d3_layout_forceDragend(d) {\r\n d.fixed &= ~6;\r\n }\r\n function d3_layout_forceMouseover(d) {\r\n d.fixed |= 4;\r\n d.px = d.x, d.py = d.y;\r\n }\r\n function d3_layout_forceMouseout(d) {\r\n d.fixed &= ~4;\r\n }\r\n function d3_layout_forceAccumulate(quad, alpha, charges) {\r\n var cx = 0, cy = 0;\r\n quad.charge = 0;\r\n if (!quad.leaf) {\r\n var nodes = quad.nodes, n = nodes.length, i = -1, c;\r\n while (++i < n) {\r\n c = nodes[i];\r\n if (c == null) continue;\r\n d3_layout_forceAccumulate(c, alpha, charges);\r\n quad.charge += c.charge;\r\n cx += c.charge * c.cx;\r\n cy += c.charge * c.cy;\r\n }\r\n }\r\n if (quad.point) {\r\n if (!quad.leaf) {\r\n quad.point.x += Math.random() - .5;\r\n quad.point.y += Math.random() - .5;\r\n }\r\n var k = alpha * charges[quad.point.index];\r\n quad.charge += quad.pointCharge = k;\r\n cx += k * quad.point.x;\r\n cy += k * quad.point.y;\r\n }\r\n quad.cx = cx / quad.charge;\r\n quad.cy = cy / quad.charge;\r\n }\r\n var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\r\n d3.layout.hierarchy = function() {\r\n var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\r\n function hierarchy(root) {\r\n var stack = [ root ], nodes = [], node;\r\n root.depth = 0;\r\n while ((node = stack.pop()) != null) {\r\n nodes.push(node);\r\n if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\r\n var n, childs, child;\r\n while (--n >= 0) {\r\n stack.push(child = childs[n]);\r\n child.parent = node;\r\n child.depth = node.depth + 1;\r\n }\r\n if (value) node.value = 0;\r\n node.children = childs;\r\n } else {\r\n if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\r\n delete node.children;\r\n }\r\n }\r\n d3_layout_hierarchyVisitAfter(root, function(node) {\r\n var childs, parent;\r\n if (sort && (childs = node.children)) childs.sort(sort);\r\n if (value && (parent = node.parent)) parent.value += node.value;\r\n });\r\n return nodes;\r\n }\r\n hierarchy.sort = function(x) {\r\n if (!arguments.length) return sort;\r\n sort = x;\r\n return hierarchy;\r\n };\r\n hierarchy.children = function(x) {\r\n if (!arguments.length) return children;\r\n children = x;\r\n return hierarchy;\r\n };\r\n hierarchy.value = function(x) {\r\n if (!arguments.length) return value;\r\n value = x;\r\n return hierarchy;\r\n };\r\n hierarchy.revalue = function(root) {\r\n if (value) {\r\n d3_layout_hierarchyVisitBefore(root, function(node) {\r\n if (node.children) node.value = 0;\r\n });\r\n d3_layout_hierarchyVisitAfter(root, function(node) {\r\n var parent;\r\n if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\r\n if (parent = node.parent) parent.value += node.value;\r\n });\r\n }\r\n return root;\r\n };\r\n return hierarchy;\r\n };\r\n function d3_layout_hierarchyRebind(object, hierarchy) {\r\n d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\r\n object.nodes = object;\r\n object.links = d3_layout_hierarchyLinks;\r\n return object;\r\n }\r\n function d3_layout_hierarchyVisitBefore(node, callback) {\r\n var nodes = [ node ];\r\n while ((node = nodes.pop()) != null) {\r\n callback(node);\r\n if ((children = node.children) && (n = children.length)) {\r\n var n, children;\r\n while (--n >= 0) nodes.push(children[n]);\r\n }\r\n }\r\n }\r\n function d3_layout_hierarchyVisitAfter(node, callback) {\r\n var nodes = [ node ], nodes2 = [];\r\n while ((node = nodes.pop()) != null) {\r\n nodes2.push(node);\r\n if ((children = node.children) && (n = children.length)) {\r\n var i = -1, n, children;\r\n while (++i < n) nodes.push(children[i]);\r\n }\r\n }\r\n while ((node = nodes2.pop()) != null) {\r\n callback(node);\r\n }\r\n }\r\n function d3_layout_hierarchyChildren(d) {\r\n return d.children;\r\n }\r\n function d3_layout_hierarchyValue(d) {\r\n return d.value;\r\n }\r\n function d3_layout_hierarchySort(a, b) {\r\n return b.value - a.value;\r\n }\r\n function d3_layout_hierarchyLinks(nodes) {\r\n return d3.merge(nodes.map(function(parent) {\r\n return (parent.children || []).map(function(child) {\r\n return {\r\n source: parent,\r\n target: child\r\n };\r\n });\r\n }));\r\n }\r\n d3.layout.partition = function() {\r\n var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\r\n function position(node, x, dx, dy) {\r\n var children = node.children;\r\n node.x = x;\r\n node.y = node.depth * dy;\r\n node.dx = dx;\r\n node.dy = dy;\r\n if (children && (n = children.length)) {\r\n var i = -1, n, c, d;\r\n dx = node.value ? dx / node.value : 0;\r\n while (++i < n) {\r\n position(c = children[i], x, d = c.value * dx, dy);\r\n x += d;\r\n }\r\n }\r\n }\r\n function depth(node) {\r\n var children = node.children, d = 0;\r\n if (children && (n = children.length)) {\r\n var i = -1, n;\r\n while (++i < n) d = Math.max(d, depth(children[i]));\r\n }\r\n return 1 + d;\r\n }\r\n function partition(d, i) {\r\n var nodes = hierarchy.call(this, d, i);\r\n position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\r\n return nodes;\r\n }\r\n partition.size = function(x) {\r\n if (!arguments.length) return size;\r\n size = x;\r\n return partition;\r\n };\r\n return d3_layout_hierarchyRebind(partition, hierarchy);\r\n };\r\n d3.layout.pie = function() {\r\n var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\r\n function pie(data) {\r\n var n = data.length, values = data.map(function(d, i) {\r\n return +value.call(pie, d, i);\r\n }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\r\n if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\r\n return values[j] - values[i];\r\n } : function(i, j) {\r\n return sort(data[i], data[j]);\r\n });\r\n index.forEach(function(i) {\r\n arcs[i] = {\r\n data: data[i],\r\n value: v = values[i],\r\n startAngle: a,\r\n endAngle: a += v * k + pa,\r\n padAngle: p\r\n };\r\n });\r\n return arcs;\r\n }\r\n pie.value = function(_) {\r\n if (!arguments.length) return value;\r\n value = _;\r\n return pie;\r\n };\r\n pie.sort = function(_) {\r\n if (!arguments.length) return sort;\r\n sort = _;\r\n return pie;\r\n };\r\n pie.startAngle = function(_) {\r\n if (!arguments.length) return startAngle;\r\n startAngle = _;\r\n return pie;\r\n };\r\n pie.endAngle = function(_) {\r\n if (!arguments.length) return endAngle;\r\n endAngle = _;\r\n return pie;\r\n };\r\n pie.padAngle = function(_) {\r\n if (!arguments.length) return padAngle;\r\n padAngle = _;\r\n return pie;\r\n };\r\n return pie;\r\n };\r\n var d3_layout_pieSortByValue = {};\r\n d3.layout.stack = function() {\r\n var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\r\n function stack(data, index) {\r\n if (!(n = data.length)) return data;\r\n var series = data.map(function(d, i) {\r\n return values.call(stack, d, i);\r\n });\r\n var points = series.map(function(d) {\r\n return d.map(function(v, i) {\r\n return [ x.call(stack, v, i), y.call(stack, v, i) ];\r\n });\r\n });\r\n var orders = order.call(stack, points, index);\r\n series = d3.permute(series, orders);\r\n points = d3.permute(points, orders);\r\n var offsets = offset.call(stack, points, index);\r\n var m = series[0].length, n, i, j, o;\r\n for (j = 0; j < m; ++j) {\r\n out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\r\n for (i = 1; i < n; ++i) {\r\n out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\r\n }\r\n }\r\n return data;\r\n }\r\n stack.values = function(x) {\r\n if (!arguments.length) return values;\r\n values = x;\r\n return stack;\r\n };\r\n stack.order = function(x) {\r\n if (!arguments.length) return order;\r\n order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\r\n return stack;\r\n };\r\n stack.offset = function(x) {\r\n if (!arguments.length) return offset;\r\n offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\r\n return stack;\r\n };\r\n stack.x = function(z) {\r\n if (!arguments.length) return x;\r\n x = z;\r\n return stack;\r\n };\r\n stack.y = function(z) {\r\n if (!arguments.length) return y;\r\n y = z;\r\n return stack;\r\n };\r\n stack.out = function(z) {\r\n if (!arguments.length) return out;\r\n out = z;\r\n return stack;\r\n };\r\n return stack;\r\n };\r\n function d3_layout_stackX(d) {\r\n return d.x;\r\n }\r\n function d3_layout_stackY(d) {\r\n return d.y;\r\n }\r\n function d3_layout_stackOut(d, y0, y) {\r\n d.y0 = y0;\r\n d.y = y;\r\n }\r\n var d3_layout_stackOrders = d3.map({\r\n \"inside-out\": function(data) {\r\n var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\r\n return max[a] - max[b];\r\n }), top = 0, bottom = 0, tops = [], bottoms = [];\r\n for (i = 0; i < n; ++i) {\r\n j = index[i];\r\n if (top < bottom) {\r\n top += sums[j];\r\n tops.push(j);\r\n } else {\r\n bottom += sums[j];\r\n bottoms.push(j);\r\n }\r\n }\r\n return bottoms.reverse().concat(tops);\r\n },\r\n reverse: function(data) {\r\n return d3.range(data.length).reverse();\r\n },\r\n \"default\": d3_layout_stackOrderDefault\r\n });\r\n var d3_layout_stackOffsets = d3.map({\r\n silhouette: function(data) {\r\n var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\r\n for (j = 0; j < m; ++j) {\r\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\r\n if (o > max) max = o;\r\n sums.push(o);\r\n }\r\n for (j = 0; j < m; ++j) {\r\n y0[j] = (max - sums[j]) / 2;\r\n }\r\n return y0;\r\n },\r\n wiggle: function(data) {\r\n var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\r\n y0[0] = o = o0 = 0;\r\n for (j = 1; j < m; ++j) {\r\n for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\r\n for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\r\n for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\r\n s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\r\n }\r\n s2 += s3 * data[i][j][1];\r\n }\r\n y0[j] = o -= s1 ? s2 / s1 * dx : 0;\r\n if (o < o0) o0 = o;\r\n }\r\n for (j = 0; j < m; ++j) y0[j] -= o0;\r\n return y0;\r\n },\r\n expand: function(data) {\r\n var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\r\n for (j = 0; j < m; ++j) {\r\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\r\n if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\r\n }\r\n for (j = 0; j < m; ++j) y0[j] = 0;\r\n return y0;\r\n },\r\n zero: d3_layout_stackOffsetZero\r\n });\r\n function d3_layout_stackOrderDefault(data) {\r\n return d3.range(data.length);\r\n }\r\n function d3_layout_stackOffsetZero(data) {\r\n var j = -1, m = data[0].length, y0 = [];\r\n while (++j < m) y0[j] = 0;\r\n return y0;\r\n }\r\n function d3_layout_stackMaxIndex(array) {\r\n var i = 1, j = 0, v = array[0][1], k, n = array.length;\r\n for (;i < n; ++i) {\r\n if ((k = array[i][1]) > v) {\r\n j = i;\r\n v = k;\r\n }\r\n }\r\n return j;\r\n }\r\n function d3_layout_stackReduceSum(d) {\r\n return d.reduce(d3_layout_stackSum, 0);\r\n }\r\n function d3_layout_stackSum(p, d) {\r\n return p + d[1];\r\n }\r\n d3.layout.histogram = function() {\r\n var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\r\n function histogram(data, i) {\r\n var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\r\n while (++i < m) {\r\n bin = bins[i] = [];\r\n bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\r\n bin.y = 0;\r\n }\r\n if (m > 0) {\r\n i = -1;\r\n while (++i < n) {\r\n x = values[i];\r\n if (x >= range[0] && x <= range[1]) {\r\n bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\r\n bin.y += k;\r\n bin.push(data[i]);\r\n }\r\n }\r\n }\r\n return bins;\r\n }\r\n histogram.value = function(x) {\r\n if (!arguments.length) return valuer;\r\n valuer = x;\r\n return histogram;\r\n };\r\n histogram.range = function(x) {\r\n if (!arguments.length) return ranger;\r\n ranger = d3_functor(x);\r\n return histogram;\r\n };\r\n histogram.bins = function(x) {\r\n if (!arguments.length) return binner;\r\n binner = typeof x === \"number\" ? function(range) {\r\n return d3_layout_histogramBinFixed(range, x);\r\n } : d3_functor(x);\r\n return histogram;\r\n };\r\n histogram.frequency = function(x) {\r\n if (!arguments.length) return frequency;\r\n frequency = !!x;\r\n return histogram;\r\n };\r\n return histogram;\r\n };\r\n function d3_layout_histogramBinSturges(range, values) {\r\n return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\r\n }\r\n function d3_layout_histogramBinFixed(range, n) {\r\n var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\r\n while (++x <= n) f[x] = m * x + b;\r\n return f;\r\n }\r\n function d3_layout_histogramRange(values) {\r\n return [ d3.min(values), d3.max(values) ];\r\n }\r\n d3.layout.pack = function() {\r\n var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\r\n function pack(d, i) {\r\n var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\r\n return radius;\r\n };\r\n root.x = root.y = 0;\r\n d3_layout_hierarchyVisitAfter(root, function(d) {\r\n d.r = +r(d.value);\r\n });\r\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\r\n if (padding) {\r\n var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\r\n d3_layout_hierarchyVisitAfter(root, function(d) {\r\n d.r += dr;\r\n });\r\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\r\n d3_layout_hierarchyVisitAfter(root, function(d) {\r\n d.r -= dr;\r\n });\r\n }\r\n d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\r\n return nodes;\r\n }\r\n pack.size = function(_) {\r\n if (!arguments.length) return size;\r\n size = _;\r\n return pack;\r\n };\r\n pack.radius = function(_) {\r\n if (!arguments.length) return radius;\r\n radius = _ == null || typeof _ === \"function\" ? _ : +_;\r\n return pack;\r\n };\r\n pack.padding = function(_) {\r\n if (!arguments.length) return padding;\r\n padding = +_;\r\n return pack;\r\n };\r\n return d3_layout_hierarchyRebind(pack, hierarchy);\r\n };\r\n function d3_layout_packSort(a, b) {\r\n return a.value - b.value;\r\n }\r\n function d3_layout_packInsert(a, b) {\r\n var c = a._pack_next;\r\n a._pack_next = b;\r\n b._pack_prev = a;\r\n b._pack_next = c;\r\n c._pack_prev = b;\r\n }\r\n function d3_layout_packSplice(a, b) {\r\n a._pack_next = b;\r\n b._pack_prev = a;\r\n }\r\n function d3_layout_packIntersects(a, b) {\r\n var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\r\n return .999 * dr * dr > dx * dx + dy * dy;\r\n }\r\n function d3_layout_packSiblings(node) {\r\n if (!(nodes = node.children) || !(n = nodes.length)) return;\r\n var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\r\n function bound(node) {\r\n xMin = Math.min(node.x - node.r, xMin);\r\n xMax = Math.max(node.x + node.r, xMax);\r\n yMin = Math.min(node.y - node.r, yMin);\r\n yMax = Math.max(node.y + node.r, yMax);\r\n }\r\n nodes.forEach(d3_layout_packLink);\r\n a = nodes[0];\r\n a.x = -a.r;\r\n a.y = 0;\r\n bound(a);\r\n if (n > 1) {\r\n b = nodes[1];\r\n b.x = b.r;\r\n b.y = 0;\r\n bound(b);\r\n if (n > 2) {\r\n c = nodes[2];\r\n d3_layout_packPlace(a, b, c);\r\n bound(c);\r\n d3_layout_packInsert(a, c);\r\n a._pack_prev = c;\r\n d3_layout_packInsert(c, b);\r\n b = a._pack_next;\r\n for (i = 3; i < n; i++) {\r\n d3_layout_packPlace(a, b, c = nodes[i]);\r\n var isect = 0, s1 = 1, s2 = 1;\r\n for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\r\n if (d3_layout_packIntersects(j, c)) {\r\n isect = 1;\r\n break;\r\n }\r\n }\r\n if (isect == 1) {\r\n for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\r\n if (d3_layout_packIntersects(k, c)) {\r\n break;\r\n }\r\n }\r\n }\r\n if (isect) {\r\n if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\r\n i--;\r\n } else {\r\n d3_layout_packInsert(a, c);\r\n b = c;\r\n bound(c);\r\n }\r\n }\r\n }\r\n }\r\n var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\r\n for (i = 0; i < n; i++) {\r\n c = nodes[i];\r\n c.x -= cx;\r\n c.y -= cy;\r\n cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\r\n }\r\n node.r = cr;\r\n nodes.forEach(d3_layout_packUnlink);\r\n }\r\n function d3_layout_packLink(node) {\r\n node._pack_next = node._pack_prev = node;\r\n }\r\n function d3_layout_packUnlink(node) {\r\n delete node._pack_next;\r\n delete node._pack_prev;\r\n }\r\n function d3_layout_packTransform(node, x, y, k) {\r\n var children = node.children;\r\n node.x = x += k * node.x;\r\n node.y = y += k * node.y;\r\n node.r *= k;\r\n if (children) {\r\n var i = -1, n = children.length;\r\n while (++i < n) d3_layout_packTransform(children[i], x, y, k);\r\n }\r\n }\r\n function d3_layout_packPlace(a, b, c) {\r\n var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\r\n if (db && (dx || dy)) {\r\n var da = b.r + c.r, dc = dx * dx + dy * dy;\r\n da *= da;\r\n db *= db;\r\n var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\r\n c.x = a.x + x * dx + y * dy;\r\n c.y = a.y + x * dy - y * dx;\r\n } else {\r\n c.x = a.x + db;\r\n c.y = a.y;\r\n }\r\n }\r\n d3.layout.tree = function() {\r\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\r\n function tree(d, i) {\r\n var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\r\n d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\r\n d3_layout_hierarchyVisitBefore(root1, secondWalk);\r\n if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\r\n var left = root0, right = root0, bottom = root0;\r\n d3_layout_hierarchyVisitBefore(root0, function(node) {\r\n if (node.x < left.x) left = node;\r\n if (node.x > right.x) right = node;\r\n if (node.depth > bottom.depth) bottom = node;\r\n });\r\n var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\r\n d3_layout_hierarchyVisitBefore(root0, function(node) {\r\n node.x = (node.x + tx) * kx;\r\n node.y = node.depth * ky;\r\n });\r\n }\r\n return nodes;\r\n }\r\n function wrapTree(root0) {\r\n var root1 = {\r\n A: null,\r\n children: [ root0 ]\r\n }, queue = [ root1 ], node1;\r\n while ((node1 = queue.pop()) != null) {\r\n for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\r\n queue.push((children[i] = child = {\r\n _: children[i],\r\n parent: node1,\r\n children: (child = children[i].children) && child.slice() || [],\r\n A: null,\r\n a: null,\r\n z: 0,\r\n m: 0,\r\n c: 0,\r\n s: 0,\r\n t: null,\r\n i: i\r\n }).a = child);\r\n }\r\n }\r\n return root1.children[0];\r\n }\r\n function firstWalk(v) {\r\n var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\r\n if (children.length) {\r\n d3_layout_treeShift(v);\r\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\r\n if (w) {\r\n v.z = w.z + separation(v._, w._);\r\n v.m = v.z - midpoint;\r\n } else {\r\n v.z = midpoint;\r\n }\r\n } else if (w) {\r\n v.z = w.z + separation(v._, w._);\r\n }\r\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\r\n }\r\n function secondWalk(v) {\r\n v._.x = v.z + v.parent.m;\r\n v.m += v.parent.m;\r\n }\r\n function apportion(v, w, ancestor) {\r\n if (w) {\r\n var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\r\n while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\r\n vom = d3_layout_treeLeft(vom);\r\n vop = d3_layout_treeRight(vop);\r\n vop.a = v;\r\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\r\n if (shift > 0) {\r\n d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\r\n sip += shift;\r\n sop += shift;\r\n }\r\n sim += vim.m;\r\n sip += vip.m;\r\n som += vom.m;\r\n sop += vop.m;\r\n }\r\n if (vim && !d3_layout_treeRight(vop)) {\r\n vop.t = vim;\r\n vop.m += sim - sop;\r\n }\r\n if (vip && !d3_layout_treeLeft(vom)) {\r\n vom.t = vip;\r\n vom.m += sip - som;\r\n ancestor = v;\r\n }\r\n }\r\n return ancestor;\r\n }\r\n function sizeNode(node) {\r\n node.x *= size[0];\r\n node.y = node.depth * size[1];\r\n }\r\n tree.separation = function(x) {\r\n if (!arguments.length) return separation;\r\n separation = x;\r\n return tree;\r\n };\r\n tree.size = function(x) {\r\n if (!arguments.length) return nodeSize ? null : size;\r\n nodeSize = (size = x) == null ? sizeNode : null;\r\n return tree;\r\n };\r\n tree.nodeSize = function(x) {\r\n if (!arguments.length) return nodeSize ? size : null;\r\n nodeSize = (size = x) == null ? null : sizeNode;\r\n return tree;\r\n };\r\n return d3_layout_hierarchyRebind(tree, hierarchy);\r\n };\r\n function d3_layout_treeSeparation(a, b) {\r\n return a.parent == b.parent ? 1 : 2;\r\n }\r\n function d3_layout_treeLeft(v) {\r\n var children = v.children;\r\n return children.length ? children[0] : v.t;\r\n }\r\n function d3_layout_treeRight(v) {\r\n var children = v.children, n;\r\n return (n = children.length) ? children[n - 1] : v.t;\r\n }\r\n function d3_layout_treeMove(wm, wp, shift) {\r\n var change = shift / (wp.i - wm.i);\r\n wp.c -= change;\r\n wp.s += shift;\r\n wm.c += change;\r\n wp.z += shift;\r\n wp.m += shift;\r\n }\r\n function d3_layout_treeShift(v) {\r\n var shift = 0, change = 0, children = v.children, i = children.length, w;\r\n while (--i >= 0) {\r\n w = children[i];\r\n w.z += shift;\r\n w.m += shift;\r\n shift += w.s + (change += w.c);\r\n }\r\n }\r\n function d3_layout_treeAncestor(vim, v, ancestor) {\r\n return vim.a.parent === v.parent ? vim.a : ancestor;\r\n }\r\n d3.layout.cluster = function() {\r\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\r\n function cluster(d, i) {\r\n var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\r\n d3_layout_hierarchyVisitAfter(root, function(node) {\r\n var children = node.children;\r\n if (children && children.length) {\r\n node.x = d3_layout_clusterX(children);\r\n node.y = d3_layout_clusterY(children);\r\n } else {\r\n node.x = previousNode ? x += separation(node, previousNode) : 0;\r\n node.y = 0;\r\n previousNode = node;\r\n }\r\n });\r\n var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\r\n d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\r\n node.x = (node.x - root.x) * size[0];\r\n node.y = (root.y - node.y) * size[1];\r\n } : function(node) {\r\n node.x = (node.x - x0) / (x1 - x0) * size[0];\r\n node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\r\n });\r\n return nodes;\r\n }\r\n cluster.separation = function(x) {\r\n if (!arguments.length) return separation;\r\n separation = x;\r\n return cluster;\r\n };\r\n cluster.size = function(x) {\r\n if (!arguments.length) return nodeSize ? null : size;\r\n nodeSize = (size = x) == null;\r\n return cluster;\r\n };\r\n cluster.nodeSize = function(x) {\r\n if (!arguments.length) return nodeSize ? size : null;\r\n nodeSize = (size = x) != null;\r\n return cluster;\r\n };\r\n return d3_layout_hierarchyRebind(cluster, hierarchy);\r\n };\r\n function d3_layout_clusterY(children) {\r\n return 1 + d3.max(children, function(child) {\r\n return child.y;\r\n });\r\n }\r\n function d3_layout_clusterX(children) {\r\n return children.reduce(function(x, child) {\r\n return x + child.x;\r\n }, 0) / children.length;\r\n }\r\n function d3_layout_clusterLeft(node) {\r\n var children = node.children;\r\n return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\r\n }\r\n function d3_layout_clusterRight(node) {\r\n var children = node.children, n;\r\n return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\r\n }\r\n d3.layout.treemap = function() {\r\n var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\r\n function scale(children, k) {\r\n var i = -1, n = children.length, child, area;\r\n while (++i < n) {\r\n area = (child = children[i]).value * (k < 0 ? 0 : k);\r\n child.area = isNaN(area) || area <= 0 ? 0 : area;\r\n }\r\n }\r\n function squarify(node) {\r\n var children = node.children;\r\n if (children && children.length) {\r\n var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\r\n scale(remaining, rect.dx * rect.dy / node.value);\r\n row.area = 0;\r\n while ((n = remaining.length) > 0) {\r\n row.push(child = remaining[n - 1]);\r\n row.area += child.area;\r\n if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\r\n remaining.pop();\r\n best = score;\r\n } else {\r\n row.area -= row.pop().area;\r\n position(row, u, rect, false);\r\n u = Math.min(rect.dx, rect.dy);\r\n row.length = row.area = 0;\r\n best = Infinity;\r\n }\r\n }\r\n if (row.length) {\r\n position(row, u, rect, true);\r\n row.length = row.area = 0;\r\n }\r\n children.forEach(squarify);\r\n }\r\n }\r\n function stickify(node) {\r\n var children = node.children;\r\n if (children && children.length) {\r\n var rect = pad(node), remaining = children.slice(), child, row = [];\r\n scale(remaining, rect.dx * rect.dy / node.value);\r\n row.area = 0;\r\n while (child = remaining.pop()) {\r\n row.push(child);\r\n row.area += child.area;\r\n if (child.z != null) {\r\n position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\r\n row.length = row.area = 0;\r\n }\r\n }\r\n children.forEach(stickify);\r\n }\r\n }\r\n function worst(row, u) {\r\n var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\r\n while (++i < n) {\r\n if (!(r = row[i].area)) continue;\r\n if (r < rmin) rmin = r;\r\n if (r > rmax) rmax = r;\r\n }\r\n s *= s;\r\n u *= u;\r\n return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\r\n }\r\n function position(row, u, rect, flush) {\r\n var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\r\n if (u == rect.dx) {\r\n if (flush || v > rect.dy) v = rect.dy;\r\n while (++i < n) {\r\n o = row[i];\r\n o.x = x;\r\n o.y = y;\r\n o.dy = v;\r\n x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\r\n }\r\n o.z = true;\r\n o.dx += rect.x + rect.dx - x;\r\n rect.y += v;\r\n rect.dy -= v;\r\n } else {\r\n if (flush || v > rect.dx) v = rect.dx;\r\n while (++i < n) {\r\n o = row[i];\r\n o.x = x;\r\n o.y = y;\r\n o.dx = v;\r\n y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\r\n }\r\n o.z = false;\r\n o.dy += rect.y + rect.dy - y;\r\n rect.x += v;\r\n rect.dx -= v;\r\n }\r\n }\r\n function treemap(d) {\r\n var nodes = stickies || hierarchy(d), root = nodes[0];\r\n root.x = root.y = 0;\r\n if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\r\n if (stickies) hierarchy.revalue(root);\r\n scale([ root ], root.dx * root.dy / root.value);\r\n (stickies ? stickify : squarify)(root);\r\n if (sticky) stickies = nodes;\r\n return nodes;\r\n }\r\n treemap.size = function(x) {\r\n if (!arguments.length) return size;\r\n size = x;\r\n return treemap;\r\n };\r\n treemap.padding = function(x) {\r\n if (!arguments.length) return padding;\r\n function padFunction(node) {\r\n var p = x.call(treemap, node, node.depth);\r\n return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\r\n }\r\n function padConstant(node) {\r\n return d3_layout_treemapPad(node, x);\r\n }\r\n var type;\r\n pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \r\n padConstant) : padConstant;\r\n return treemap;\r\n };\r\n treemap.round = function(x) {\r\n if (!arguments.length) return round != Number;\r\n round = x ? Math.round : Number;\r\n return treemap;\r\n };\r\n treemap.sticky = function(x) {\r\n if (!arguments.length) return sticky;\r\n sticky = x;\r\n stickies = null;\r\n return treemap;\r\n };\r\n treemap.ratio = function(x) {\r\n if (!arguments.length) return ratio;\r\n ratio = x;\r\n return treemap;\r\n };\r\n treemap.mode = function(x) {\r\n if (!arguments.length) return mode;\r\n mode = x + \"\";\r\n return treemap;\r\n };\r\n return d3_layout_hierarchyRebind(treemap, hierarchy);\r\n };\r\n function d3_layout_treemapPadNull(node) {\r\n return {\r\n x: node.x,\r\n y: node.y,\r\n dx: node.dx,\r\n dy: node.dy\r\n };\r\n }\r\n function d3_layout_treemapPad(node, padding) {\r\n var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\r\n if (dx < 0) {\r\n x += dx / 2;\r\n dx = 0;\r\n }\r\n if (dy < 0) {\r\n y += dy / 2;\r\n dy = 0;\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n dx: dx,\r\n dy: dy\r\n };\r\n }\r\n d3.random = {\r\n normal: function(µ, σ) {\r\n var n = arguments.length;\r\n if (n < 2) σ = 1;\r\n if (n < 1) µ = 0;\r\n return function() {\r\n var x, y, r;\r\n do {\r\n x = Math.random() * 2 - 1;\r\n y = Math.random() * 2 - 1;\r\n r = x * x + y * y;\r\n } while (!r || r > 1);\r\n return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\r\n };\r\n },\r\n logNormal: function() {\r\n var random = d3.random.normal.apply(d3, arguments);\r\n return function() {\r\n return Math.exp(random());\r\n };\r\n },\r\n bates: function(m) {\r\n var random = d3.random.irwinHall(m);\r\n return function() {\r\n return random() / m;\r\n };\r\n },\r\n irwinHall: function(m) {\r\n return function() {\r\n for (var s = 0, j = 0; j < m; j++) s += Math.random();\r\n return s;\r\n };\r\n }\r\n };\r\n d3.scale = {};\r\n function d3_scaleExtent(domain) {\r\n var start = domain[0], stop = domain[domain.length - 1];\r\n return start < stop ? [ start, stop ] : [ stop, start ];\r\n }\r\n function d3_scaleRange(scale) {\r\n return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\r\n }\r\n function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\r\n var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\r\n return function(x) {\r\n return i(u(x));\r\n };\r\n }\r\n function d3_scale_nice(domain, nice) {\r\n var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\r\n if (x1 < x0) {\r\n dx = i0, i0 = i1, i1 = dx;\r\n dx = x0, x0 = x1, x1 = dx;\r\n }\r\n domain[i0] = nice.floor(x0);\r\n domain[i1] = nice.ceil(x1);\r\n return domain;\r\n }\r\n function d3_scale_niceStep(step) {\r\n return step ? {\r\n floor: function(x) {\r\n return Math.floor(x / step) * step;\r\n },\r\n ceil: function(x) {\r\n return Math.ceil(x / step) * step;\r\n }\r\n } : d3_scale_niceIdentity;\r\n }\r\n var d3_scale_niceIdentity = {\r\n floor: d3_identity,\r\n ceil: d3_identity\r\n };\r\n function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\r\n var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\r\n if (domain[k] < domain[0]) {\r\n domain = domain.slice().reverse();\r\n range = range.slice().reverse();\r\n }\r\n while (++j <= k) {\r\n u.push(uninterpolate(domain[j - 1], domain[j]));\r\n i.push(interpolate(range[j - 1], range[j]));\r\n }\r\n return function(x) {\r\n var j = d3.bisect(domain, x, 1, k) - 1;\r\n return i[j](u[j](x));\r\n };\r\n }\r\n d3.scale.linear = function() {\r\n return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\r\n };\r\n function d3_scale_linear(domain, range, interpolate, clamp) {\r\n var output, input;\r\n function rescale() {\r\n var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\r\n output = linear(domain, range, uninterpolate, interpolate);\r\n input = linear(range, domain, uninterpolate, d3_interpolate);\r\n return scale;\r\n }\r\n function scale(x) {\r\n return output(x);\r\n }\r\n scale.invert = function(y) {\r\n return input(y);\r\n };\r\n scale.domain = function(x) {\r\n if (!arguments.length) return domain;\r\n domain = x.map(Number);\r\n return rescale();\r\n };\r\n scale.range = function(x) {\r\n if (!arguments.length) return range;\r\n range = x;\r\n return rescale();\r\n };\r\n scale.rangeRound = function(x) {\r\n return scale.range(x).interpolate(d3_interpolateRound);\r\n };\r\n scale.clamp = function(x) {\r\n if (!arguments.length) return clamp;\r\n clamp = x;\r\n return rescale();\r\n };\r\n scale.interpolate = function(x) {\r\n if (!arguments.length) return interpolate;\r\n interpolate = x;\r\n return rescale();\r\n };\r\n scale.ticks = function(m) {\r\n return d3_scale_linearTicks(domain, m);\r\n };\r\n scale.tickFormat = function(m, format) {\r\n return d3_scale_linearTickFormat(domain, m, format);\r\n };\r\n scale.nice = function(m) {\r\n d3_scale_linearNice(domain, m);\r\n return rescale();\r\n };\r\n scale.copy = function() {\r\n return d3_scale_linear(domain, range, interpolate, clamp);\r\n };\r\n return rescale();\r\n }\r\n function d3_scale_linearRebind(scale, linear) {\r\n return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\r\n }\r\n function d3_scale_linearNice(domain, m) {\r\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\r\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\r\n return domain;\r\n }\r\n function d3_scale_linearTickRange(domain, m) {\r\n if (m == null) m = 10;\r\n var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\r\n if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\r\n extent[0] = Math.ceil(extent[0] / step) * step;\r\n extent[1] = Math.floor(extent[1] / step) * step + step * .5;\r\n extent[2] = step;\r\n return extent;\r\n }\r\n function d3_scale_linearTicks(domain, m) {\r\n return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\r\n }\r\n function d3_scale_linearTickFormat(domain, m, format) {\r\n var range = d3_scale_linearTickRange(domain, m);\r\n if (format) {\r\n var match = d3_format_re.exec(format);\r\n match.shift();\r\n if (match[8] === \"s\") {\r\n var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\r\n if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\r\n match[8] = \"f\";\r\n format = d3.format(match.join(\"\"));\r\n return function(d) {\r\n return format(prefix.scale(d)) + prefix.symbol;\r\n };\r\n }\r\n if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\r\n format = match.join(\"\");\r\n } else {\r\n format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\r\n }\r\n return d3.format(format);\r\n }\r\n var d3_scale_linearFormatSignificant = {\r\n s: 1,\r\n g: 1,\r\n p: 1,\r\n r: 1,\r\n e: 1\r\n };\r\n function d3_scale_linearPrecision(value) {\r\n return -Math.floor(Math.log(value) / Math.LN10 + .01);\r\n }\r\n function d3_scale_linearFormatPrecision(type, range) {\r\n var p = d3_scale_linearPrecision(range[2]);\r\n return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\r\n }\r\n d3.scale.log = function() {\r\n return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\r\n };\r\n function d3_scale_log(linear, base, positive, domain) {\r\n function log(x) {\r\n return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\r\n }\r\n function pow(x) {\r\n return positive ? Math.pow(base, x) : -Math.pow(base, -x);\r\n }\r\n function scale(x) {\r\n return linear(log(x));\r\n }\r\n scale.invert = function(x) {\r\n return pow(linear.invert(x));\r\n };\r\n scale.domain = function(x) {\r\n if (!arguments.length) return domain;\r\n positive = x[0] >= 0;\r\n linear.domain((domain = x.map(Number)).map(log));\r\n return scale;\r\n };\r\n scale.base = function(_) {\r\n if (!arguments.length) return base;\r\n base = +_;\r\n linear.domain(domain.map(log));\r\n return scale;\r\n };\r\n scale.nice = function() {\r\n var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\r\n linear.domain(niced);\r\n domain = niced.map(pow);\r\n return scale;\r\n };\r\n scale.ticks = function() {\r\n var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\r\n if (isFinite(j - i)) {\r\n if (positive) {\r\n for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\r\n ticks.push(pow(i));\r\n } else {\r\n ticks.push(pow(i));\r\n for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\r\n }\r\n for (i = 0; ticks[i] < u; i++) {}\r\n for (j = ticks.length; ticks[j - 1] > v; j--) {}\r\n ticks = ticks.slice(i, j);\r\n }\r\n return ticks;\r\n };\r\n scale.tickFormat = function(n, format) {\r\n if (!arguments.length) return d3_scale_logFormat;\r\n if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\r\n var k = Math.max(1, base * n / scale.ticks().length);\r\n return function(d) {\r\n var i = d / pow(Math.round(log(d)));\r\n if (i * base < base - .5) i *= base;\r\n return i <= k ? format(d) : \"\";\r\n };\r\n };\r\n scale.copy = function() {\r\n return d3_scale_log(linear.copy(), base, positive, domain);\r\n };\r\n return d3_scale_linearRebind(scale, linear);\r\n }\r\n var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\r\n floor: function(x) {\r\n return -Math.ceil(-x);\r\n },\r\n ceil: function(x) {\r\n return -Math.floor(-x);\r\n }\r\n };\r\n d3.scale.pow = function() {\r\n return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\r\n };\r\n function d3_scale_pow(linear, exponent, domain) {\r\n var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\r\n function scale(x) {\r\n return linear(powp(x));\r\n }\r\n scale.invert = function(x) {\r\n return powb(linear.invert(x));\r\n };\r\n scale.domain = function(x) {\r\n if (!arguments.length) return domain;\r\n linear.domain((domain = x.map(Number)).map(powp));\r\n return scale;\r\n };\r\n scale.ticks = function(m) {\r\n return d3_scale_linearTicks(domain, m);\r\n };\r\n scale.tickFormat = function(m, format) {\r\n return d3_scale_linearTickFormat(domain, m, format);\r\n };\r\n scale.nice = function(m) {\r\n return scale.domain(d3_scale_linearNice(domain, m));\r\n };\r\n scale.exponent = function(x) {\r\n if (!arguments.length) return exponent;\r\n powp = d3_scale_powPow(exponent = x);\r\n powb = d3_scale_powPow(1 / exponent);\r\n linear.domain(domain.map(powp));\r\n return scale;\r\n };\r\n scale.copy = function() {\r\n return d3_scale_pow(linear.copy(), exponent, domain);\r\n };\r\n return d3_scale_linearRebind(scale, linear);\r\n }\r\n function d3_scale_powPow(e) {\r\n return function(x) {\r\n return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\r\n };\r\n }\r\n d3.scale.sqrt = function() {\r\n return d3.scale.pow().exponent(.5);\r\n };\r\n d3.scale.ordinal = function() {\r\n return d3_scale_ordinal([], {\r\n t: \"range\",\r\n a: [ [] ]\r\n });\r\n };\r\n function d3_scale_ordinal(domain, ranger) {\r\n var index, range, rangeBand;\r\n function scale(x) {\r\n return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\r\n }\r\n function steps(start, step) {\r\n return d3.range(domain.length).map(function(i) {\r\n return start + step * i;\r\n });\r\n }\r\n scale.domain = function(x) {\r\n if (!arguments.length) return domain;\r\n domain = [];\r\n index = new d3_Map();\r\n var i = -1, n = x.length, xi;\r\n while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\r\n return scale[ranger.t].apply(scale, ranger.a);\r\n };\r\n scale.range = function(x) {\r\n if (!arguments.length) return range;\r\n range = x;\r\n rangeBand = 0;\r\n ranger = {\r\n t: \"range\",\r\n a: arguments\r\n };\r\n return scale;\r\n };\r\n scale.rangePoints = function(x, padding) {\r\n if (arguments.length < 2) padding = 0;\r\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \r\n 0) : (stop - start) / (domain.length - 1 + padding);\r\n range = steps(start + step * padding / 2, step);\r\n rangeBand = 0;\r\n ranger = {\r\n t: \"rangePoints\",\r\n a: arguments\r\n };\r\n return scale;\r\n };\r\n scale.rangeRoundPoints = function(x, padding) {\r\n if (arguments.length < 2) padding = 0;\r\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \r\n 0) : (stop - start) / (domain.length - 1 + padding) | 0;\r\n range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\r\n rangeBand = 0;\r\n ranger = {\r\n t: \"rangeRoundPoints\",\r\n a: arguments\r\n };\r\n return scale;\r\n };\r\n scale.rangeBands = function(x, padding, outerPadding) {\r\n if (arguments.length < 2) padding = 0;\r\n if (arguments.length < 3) outerPadding = padding;\r\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\r\n range = steps(start + step * outerPadding, step);\r\n if (reverse) range.reverse();\r\n rangeBand = step * (1 - padding);\r\n ranger = {\r\n t: \"rangeBands\",\r\n a: arguments\r\n };\r\n return scale;\r\n };\r\n scale.rangeRoundBands = function(x, padding, outerPadding) {\r\n if (arguments.length < 2) padding = 0;\r\n if (arguments.length < 3) outerPadding = padding;\r\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\r\n range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\r\n if (reverse) range.reverse();\r\n rangeBand = Math.round(step * (1 - padding));\r\n ranger = {\r\n t: \"rangeRoundBands\",\r\n a: arguments\r\n };\r\n return scale;\r\n };\r\n scale.rangeBand = function() {\r\n return rangeBand;\r\n };\r\n scale.rangeExtent = function() {\r\n return d3_scaleExtent(ranger.a[0]);\r\n };\r\n scale.copy = function() {\r\n return d3_scale_ordinal(domain, ranger);\r\n };\r\n return scale.domain(domain);\r\n }\r\n d3.scale.category10 = function() {\r\n return d3.scale.ordinal().range(d3_category10);\r\n };\r\n d3.scale.category20 = function() {\r\n return d3.scale.ordinal().range(d3_category20);\r\n };\r\n d3.scale.category20b = function() {\r\n return d3.scale.ordinal().range(d3_category20b);\r\n };\r\n d3.scale.category20c = function() {\r\n return d3.scale.ordinal().range(d3_category20c);\r\n };\r\n var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\r\n var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\r\n var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\r\n var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\r\n d3.scale.quantile = function() {\r\n return d3_scale_quantile([], []);\r\n };\r\n function d3_scale_quantile(domain, range) {\r\n var thresholds;\r\n function rescale() {\r\n var k = 0, q = range.length;\r\n thresholds = [];\r\n while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\r\n return scale;\r\n }\r\n function scale(x) {\r\n if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\r\n }\r\n scale.domain = function(x) {\r\n if (!arguments.length) return domain;\r\n domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\r\n return rescale();\r\n };\r\n scale.range = function(x) {\r\n if (!arguments.length) return range;\r\n range = x;\r\n return rescale();\r\n };\r\n scale.quantiles = function() {\r\n return thresholds;\r\n };\r\n scale.invertExtent = function(y) {\r\n y = range.indexOf(y);\r\n return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\r\n };\r\n scale.copy = function() {\r\n return d3_scale_quantile(domain, range);\r\n };\r\n return rescale();\r\n }\r\n d3.scale.quantize = function() {\r\n return d3_scale_quantize(0, 1, [ 0, 1 ]);\r\n };\r\n function d3_scale_quantize(x0, x1, range) {\r\n var kx, i;\r\n function scale(x) {\r\n return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\r\n }\r\n function rescale() {\r\n kx = range.length / (x1 - x0);\r\n i = range.length - 1;\r\n return scale;\r\n }\r\n scale.domain = function(x) {\r\n if (!arguments.length) return [ x0, x1 ];\r\n x0 = +x[0];\r\n x1 = +x[x.length - 1];\r\n return rescale();\r\n };\r\n scale.range = function(x) {\r\n if (!arguments.length) return range;\r\n range = x;\r\n return rescale();\r\n };\r\n scale.invertExtent = function(y) {\r\n y = range.indexOf(y);\r\n y = y < 0 ? NaN : y / kx + x0;\r\n return [ y, y + 1 / kx ];\r\n };\r\n scale.copy = function() {\r\n return d3_scale_quantize(x0, x1, range);\r\n };\r\n return rescale();\r\n }\r\n d3.scale.threshold = function() {\r\n return d3_scale_threshold([ .5 ], [ 0, 1 ]);\r\n };\r\n function d3_scale_threshold(domain, range) {\r\n function scale(x) {\r\n if (x <= x) return range[d3.bisect(domain, x)];\r\n }\r\n scale.domain = function(_) {\r\n if (!arguments.length) return domain;\r\n domain = _;\r\n return scale;\r\n };\r\n scale.range = function(_) {\r\n if (!arguments.length) return range;\r\n range = _;\r\n return scale;\r\n };\r\n scale.invertExtent = function(y) {\r\n y = range.indexOf(y);\r\n return [ domain[y - 1], domain[y] ];\r\n };\r\n scale.copy = function() {\r\n return d3_scale_threshold(domain, range);\r\n };\r\n return scale;\r\n }\r\n d3.scale.identity = function() {\r\n return d3_scale_identity([ 0, 1 ]);\r\n };\r\n function d3_scale_identity(domain) {\r\n function identity(x) {\r\n return +x;\r\n }\r\n identity.invert = identity;\r\n identity.domain = identity.range = function(x) {\r\n if (!arguments.length) return domain;\r\n domain = x.map(identity);\r\n return identity;\r\n };\r\n identity.ticks = function(m) {\r\n return d3_scale_linearTicks(domain, m);\r\n };\r\n identity.tickFormat = function(m, format) {\r\n return d3_scale_linearTickFormat(domain, m, format);\r\n };\r\n identity.copy = function() {\r\n return d3_scale_identity(domain);\r\n };\r\n return identity;\r\n }\r\n d3.svg = {};\r\n function d3_zero() {\r\n return 0;\r\n }\r\n d3.svg.arc = function() {\r\n var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\r\n function arc() {\r\n var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\r\n if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\r\n if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\r\n var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\r\n if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\r\n rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\r\n if (!cw) p1 *= -1;\r\n if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\r\n if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\r\n }\r\n if (r1) {\r\n x0 = r1 * Math.cos(a0 + p1);\r\n y0 = r1 * Math.sin(a0 + p1);\r\n x1 = r1 * Math.cos(a1 - p1);\r\n y1 = r1 * Math.sin(a1 - p1);\r\n var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\r\n if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\r\n var h1 = (a0 + a1) / 2;\r\n x0 = r1 * Math.cos(h1);\r\n y0 = r1 * Math.sin(h1);\r\n x1 = y1 = null;\r\n }\r\n } else {\r\n x0 = y0 = 0;\r\n }\r\n if (r0) {\r\n x2 = r0 * Math.cos(a1 - p0);\r\n y2 = r0 * Math.sin(a1 - p0);\r\n x3 = r0 * Math.cos(a0 + p0);\r\n y3 = r0 * Math.sin(a0 + p0);\r\n var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\r\n if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\r\n var h0 = (a0 + a1) / 2;\r\n x2 = r0 * Math.cos(h0);\r\n y2 = r0 * Math.sin(h0);\r\n x3 = y3 = null;\r\n }\r\n } else {\r\n x2 = y2 = 0;\r\n }\r\n if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\r\n cr = r0 < r1 ^ cw ? 0 : 1;\r\n var rc1 = rc, rc0 = rc;\r\n if (da < π) {\r\n var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\r\n rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\r\n rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\r\n }\r\n if (x1 != null) {\r\n var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\r\n if (rc === rc1) {\r\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\r\n } else {\r\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\r\n }\r\n } else {\r\n path.push(\"M\", x0, \",\", y0);\r\n }\r\n if (x3 != null) {\r\n var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\r\n if (rc === rc0) {\r\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\r\n } else {\r\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\r\n }\r\n } else {\r\n path.push(\"L\", x2, \",\", y2);\r\n }\r\n } else {\r\n path.push(\"M\", x0, \",\", y0);\r\n if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\r\n path.push(\"L\", x2, \",\", y2);\r\n if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\r\n }\r\n path.push(\"Z\");\r\n return path.join(\"\");\r\n }\r\n function circleSegment(r1, cw) {\r\n return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\r\n }\r\n arc.innerRadius = function(v) {\r\n if (!arguments.length) return innerRadius;\r\n innerRadius = d3_functor(v);\r\n return arc;\r\n };\r\n arc.outerRadius = function(v) {\r\n if (!arguments.length) return outerRadius;\r\n outerRadius = d3_functor(v);\r\n return arc;\r\n };\r\n arc.cornerRadius = function(v) {\r\n if (!arguments.length) return cornerRadius;\r\n cornerRadius = d3_functor(v);\r\n return arc;\r\n };\r\n arc.padRadius = function(v) {\r\n if (!arguments.length) return padRadius;\r\n padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\r\n return arc;\r\n };\r\n arc.startAngle = function(v) {\r\n if (!arguments.length) return startAngle;\r\n startAngle = d3_functor(v);\r\n return arc;\r\n };\r\n arc.endAngle = function(v) {\r\n if (!arguments.length) return endAngle;\r\n endAngle = d3_functor(v);\r\n return arc;\r\n };\r\n arc.padAngle = function(v) {\r\n if (!arguments.length) return padAngle;\r\n padAngle = d3_functor(v);\r\n return arc;\r\n };\r\n arc.centroid = function() {\r\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\r\n return [ Math.cos(a) * r, Math.sin(a) * r ];\r\n };\r\n return arc;\r\n };\r\n var d3_svg_arcAuto = \"auto\";\r\n function d3_svg_arcInnerRadius(d) {\r\n return d.innerRadius;\r\n }\r\n function d3_svg_arcOuterRadius(d) {\r\n return d.outerRadius;\r\n }\r\n function d3_svg_arcStartAngle(d) {\r\n return d.startAngle;\r\n }\r\n function d3_svg_arcEndAngle(d) {\r\n return d.endAngle;\r\n }\r\n function d3_svg_arcPadAngle(d) {\r\n return d && d.padAngle;\r\n }\r\n function d3_svg_arcSweep(x0, y0, x1, y1) {\r\n return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\r\n }\r\n function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\r\n var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\r\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\r\n return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\r\n }\r\n function d3_svg_line(projection) {\r\n var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\r\n function line(data) {\r\n var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\r\n function segment() {\r\n segments.push(\"M\", interpolate(projection(points), tension));\r\n }\r\n while (++i < n) {\r\n if (defined.call(this, d = data[i], i)) {\r\n points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\r\n } else if (points.length) {\r\n segment();\r\n points = [];\r\n }\r\n }\r\n if (points.length) segment();\r\n return segments.length ? segments.join(\"\") : null;\r\n }\r\n line.x = function(_) {\r\n if (!arguments.length) return x;\r\n x = _;\r\n return line;\r\n };\r\n line.y = function(_) {\r\n if (!arguments.length) return y;\r\n y = _;\r\n return line;\r\n };\r\n line.defined = function(_) {\r\n if (!arguments.length) return defined;\r\n defined = _;\r\n return line;\r\n };\r\n line.interpolate = function(_) {\r\n if (!arguments.length) return interpolateKey;\r\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\r\n return line;\r\n };\r\n line.tension = function(_) {\r\n if (!arguments.length) return tension;\r\n tension = _;\r\n return line;\r\n };\r\n return line;\r\n }\r\n d3.svg.line = function() {\r\n return d3_svg_line(d3_identity);\r\n };\r\n var d3_svg_lineInterpolators = d3.map({\r\n linear: d3_svg_lineLinear,\r\n \"linear-closed\": d3_svg_lineLinearClosed,\r\n step: d3_svg_lineStep,\r\n \"step-before\": d3_svg_lineStepBefore,\r\n \"step-after\": d3_svg_lineStepAfter,\r\n basis: d3_svg_lineBasis,\r\n \"basis-open\": d3_svg_lineBasisOpen,\r\n \"basis-closed\": d3_svg_lineBasisClosed,\r\n bundle: d3_svg_lineBundle,\r\n cardinal: d3_svg_lineCardinal,\r\n \"cardinal-open\": d3_svg_lineCardinalOpen,\r\n \"cardinal-closed\": d3_svg_lineCardinalClosed,\r\n monotone: d3_svg_lineMonotone\r\n });\r\n d3_svg_lineInterpolators.forEach(function(key, value) {\r\n value.key = key;\r\n value.closed = /-closed$/.test(key);\r\n });\r\n function d3_svg_lineLinear(points) {\r\n return points.length > 1 ? points.join(\"L\") : points + \"Z\";\r\n }\r\n function d3_svg_lineLinearClosed(points) {\r\n return points.join(\"L\") + \"Z\";\r\n }\r\n function d3_svg_lineStep(points) {\r\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\r\n while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\r\n if (n > 1) path.push(\"H\", p[0]);\r\n return path.join(\"\");\r\n }\r\n function d3_svg_lineStepBefore(points) {\r\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\r\n while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\r\n return path.join(\"\");\r\n }\r\n function d3_svg_lineStepAfter(points) {\r\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\r\n while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\r\n return path.join(\"\");\r\n }\r\n function d3_svg_lineCardinalOpen(points, tension) {\r\n return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\r\n }\r\n function d3_svg_lineCardinalClosed(points, tension) {\r\n return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \r\n points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\r\n }\r\n function d3_svg_lineCardinal(points, tension) {\r\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\r\n }\r\n function d3_svg_lineHermite(points, tangents) {\r\n if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\r\n return d3_svg_lineLinear(points);\r\n }\r\n var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\r\n if (quad) {\r\n path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\r\n p0 = points[1];\r\n pi = 2;\r\n }\r\n if (tangents.length > 1) {\r\n t = tangents[1];\r\n p = points[pi];\r\n pi++;\r\n path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\r\n for (var i = 2; i < tangents.length; i++, pi++) {\r\n p = points[pi];\r\n t = tangents[i];\r\n path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\r\n }\r\n }\r\n if (quad) {\r\n var lp = points[pi];\r\n path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\r\n }\r\n return path;\r\n }\r\n function d3_svg_lineCardinalTangents(points, tension) {\r\n var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\r\n while (++i < n) {\r\n p0 = p1;\r\n p1 = p2;\r\n p2 = points[i];\r\n tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\r\n }\r\n return tangents;\r\n }\r\n function d3_svg_lineBasis(points) {\r\n if (points.length < 3) return d3_svg_lineLinear(points);\r\n var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\r\n points.push(points[n - 1]);\r\n while (++i <= n) {\r\n pi = points[i];\r\n px.shift();\r\n px.push(pi[0]);\r\n py.shift();\r\n py.push(pi[1]);\r\n d3_svg_lineBasisBezier(path, px, py);\r\n }\r\n points.pop();\r\n path.push(\"L\", pi);\r\n return path.join(\"\");\r\n }\r\n function d3_svg_lineBasisOpen(points) {\r\n if (points.length < 4) return d3_svg_lineLinear(points);\r\n var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\r\n while (++i < 3) {\r\n pi = points[i];\r\n px.push(pi[0]);\r\n py.push(pi[1]);\r\n }\r\n path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\r\n --i;\r\n while (++i < n) {\r\n pi = points[i];\r\n px.shift();\r\n px.push(pi[0]);\r\n py.shift();\r\n py.push(pi[1]);\r\n d3_svg_lineBasisBezier(path, px, py);\r\n }\r\n return path.join(\"\");\r\n }\r\n function d3_svg_lineBasisClosed(points) {\r\n var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\r\n while (++i < 4) {\r\n pi = points[i % n];\r\n px.push(pi[0]);\r\n py.push(pi[1]);\r\n }\r\n path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\r\n --i;\r\n while (++i < m) {\r\n pi = points[i % n];\r\n px.shift();\r\n px.push(pi[0]);\r\n py.shift();\r\n py.push(pi[1]);\r\n d3_svg_lineBasisBezier(path, px, py);\r\n }\r\n return path.join(\"\");\r\n }\r\n function d3_svg_lineBundle(points, tension) {\r\n var n = points.length - 1;\r\n if (n) {\r\n var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\r\n while (++i <= n) {\r\n p = points[i];\r\n t = i / n;\r\n p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\r\n p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\r\n }\r\n }\r\n return d3_svg_lineBasis(points);\r\n }\r\n function d3_svg_lineDot4(a, b) {\r\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\r\n }\r\n var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\r\n function d3_svg_lineBasisBezier(path, x, y) {\r\n path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\r\n }\r\n function d3_svg_lineSlope(p0, p1) {\r\n return (p1[1] - p0[1]) / (p1[0] - p0[0]);\r\n }\r\n function d3_svg_lineFiniteDifferences(points) {\r\n var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\r\n while (++i < j) {\r\n m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\r\n }\r\n m[i] = d;\r\n return m;\r\n }\r\n function d3_svg_lineMonotoneTangents(points) {\r\n var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\r\n while (++i < j) {\r\n d = d3_svg_lineSlope(points[i], points[i + 1]);\r\n if (abs(d) < ε) {\r\n m[i] = m[i + 1] = 0;\r\n } else {\r\n a = m[i] / d;\r\n b = m[i + 1] / d;\r\n s = a * a + b * b;\r\n if (s > 9) {\r\n s = d * 3 / Math.sqrt(s);\r\n m[i] = s * a;\r\n m[i + 1] = s * b;\r\n }\r\n }\r\n }\r\n i = -1;\r\n while (++i <= j) {\r\n s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\r\n tangents.push([ s || 0, m[i] * s || 0 ]);\r\n }\r\n return tangents;\r\n }\r\n function d3_svg_lineMonotone(points) {\r\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\r\n }\r\n d3.svg.line.radial = function() {\r\n var line = d3_svg_line(d3_svg_lineRadial);\r\n line.radius = line.x, delete line.x;\r\n line.angle = line.y, delete line.y;\r\n return line;\r\n };\r\n function d3_svg_lineRadial(points) {\r\n var point, i = -1, n = points.length, r, a;\r\n while (++i < n) {\r\n point = points[i];\r\n r = point[0];\r\n a = point[1] - halfπ;\r\n point[0] = r * Math.cos(a);\r\n point[1] = r * Math.sin(a);\r\n }\r\n return points;\r\n }\r\n function d3_svg_area(projection) {\r\n var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\r\n function area(data) {\r\n var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\r\n return x;\r\n } : d3_functor(x1), fy1 = y0 === y1 ? function() {\r\n return y;\r\n } : d3_functor(y1), x, y;\r\n function segment() {\r\n segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\r\n }\r\n while (++i < n) {\r\n if (defined.call(this, d = data[i], i)) {\r\n points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\r\n points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\r\n } else if (points0.length) {\r\n segment();\r\n points0 = [];\r\n points1 = [];\r\n }\r\n }\r\n if (points0.length) segment();\r\n return segments.length ? segments.join(\"\") : null;\r\n }\r\n area.x = function(_) {\r\n if (!arguments.length) return x1;\r\n x0 = x1 = _;\r\n return area;\r\n };\r\n area.x0 = function(_) {\r\n if (!arguments.length) return x0;\r\n x0 = _;\r\n return area;\r\n };\r\n area.x1 = function(_) {\r\n if (!arguments.length) return x1;\r\n x1 = _;\r\n return area;\r\n };\r\n area.y = function(_) {\r\n if (!arguments.length) return y1;\r\n y0 = y1 = _;\r\n return area;\r\n };\r\n area.y0 = function(_) {\r\n if (!arguments.length) return y0;\r\n y0 = _;\r\n return area;\r\n };\r\n area.y1 = function(_) {\r\n if (!arguments.length) return y1;\r\n y1 = _;\r\n return area;\r\n };\r\n area.defined = function(_) {\r\n if (!arguments.length) return defined;\r\n defined = _;\r\n return area;\r\n };\r\n area.interpolate = function(_) {\r\n if (!arguments.length) return interpolateKey;\r\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\r\n interpolateReverse = interpolate.reverse || interpolate;\r\n L = interpolate.closed ? \"M\" : \"L\";\r\n return area;\r\n };\r\n area.tension = function(_) {\r\n if (!arguments.length) return tension;\r\n tension = _;\r\n return area;\r\n };\r\n return area;\r\n }\r\n d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\r\n d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\r\n d3.svg.area = function() {\r\n return d3_svg_area(d3_identity);\r\n };\r\n d3.svg.area.radial = function() {\r\n var area = d3_svg_area(d3_svg_lineRadial);\r\n area.radius = area.x, delete area.x;\r\n area.innerRadius = area.x0, delete area.x0;\r\n area.outerRadius = area.x1, delete area.x1;\r\n area.angle = area.y, delete area.y;\r\n area.startAngle = area.y0, delete area.y0;\r\n area.endAngle = area.y1, delete area.y1;\r\n return area;\r\n };\r\n d3.svg.chord = function() {\r\n var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\r\n function chord(d, i) {\r\n var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\r\n return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\r\n }\r\n function subgroup(self, f, d, i) {\r\n var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\r\n return {\r\n r: r,\r\n a0: a0,\r\n a1: a1,\r\n p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\r\n p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\r\n };\r\n }\r\n function equals(a, b) {\r\n return a.a0 == b.a0 && a.a1 == b.a1;\r\n }\r\n function arc(r, p, a) {\r\n return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\r\n }\r\n function curve(r0, p0, r1, p1) {\r\n return \"Q 0,0 \" + p1;\r\n }\r\n chord.radius = function(v) {\r\n if (!arguments.length) return radius;\r\n radius = d3_functor(v);\r\n return chord;\r\n };\r\n chord.source = function(v) {\r\n if (!arguments.length) return source;\r\n source = d3_functor(v);\r\n return chord;\r\n };\r\n chord.target = function(v) {\r\n if (!arguments.length) return target;\r\n target = d3_functor(v);\r\n return chord;\r\n };\r\n chord.startAngle = function(v) {\r\n if (!arguments.length) return startAngle;\r\n startAngle = d3_functor(v);\r\n return chord;\r\n };\r\n chord.endAngle = function(v) {\r\n if (!arguments.length) return endAngle;\r\n endAngle = d3_functor(v);\r\n return chord;\r\n };\r\n return chord;\r\n };\r\n function d3_svg_chordRadius(d) {\r\n return d.radius;\r\n }\r\n d3.svg.diagonal = function() {\r\n var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\r\n function diagonal(d, i) {\r\n var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\r\n x: p0.x,\r\n y: m\r\n }, {\r\n x: p3.x,\r\n y: m\r\n }, p3 ];\r\n p = p.map(projection);\r\n return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\r\n }\r\n diagonal.source = function(x) {\r\n if (!arguments.length) return source;\r\n source = d3_functor(x);\r\n return diagonal;\r\n };\r\n diagonal.target = function(x) {\r\n if (!arguments.length) return target;\r\n target = d3_functor(x);\r\n return diagonal;\r\n };\r\n diagonal.projection = function(x) {\r\n if (!arguments.length) return projection;\r\n projection = x;\r\n return diagonal;\r\n };\r\n return diagonal;\r\n };\r\n function d3_svg_diagonalProjection(d) {\r\n return [ d.x, d.y ];\r\n }\r\n d3.svg.diagonal.radial = function() {\r\n var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\r\n diagonal.projection = function(x) {\r\n return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\r\n };\r\n return diagonal;\r\n };\r\n function d3_svg_diagonalRadialProjection(projection) {\r\n return function() {\r\n var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\r\n return [ r * Math.cos(a), r * Math.sin(a) ];\r\n };\r\n }\r\n d3.svg.symbol = function() {\r\n var type = d3_svg_symbolType, size = d3_svg_symbolSize;\r\n function symbol(d, i) {\r\n return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\r\n }\r\n symbol.type = function(x) {\r\n if (!arguments.length) return type;\r\n type = d3_functor(x);\r\n return symbol;\r\n };\r\n symbol.size = function(x) {\r\n if (!arguments.length) return size;\r\n size = d3_functor(x);\r\n return symbol;\r\n };\r\n return symbol;\r\n };\r\n function d3_svg_symbolSize() {\r\n return 64;\r\n }\r\n function d3_svg_symbolType() {\r\n return \"circle\";\r\n }\r\n function d3_svg_symbolCircle(size) {\r\n var r = Math.sqrt(size / π);\r\n return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\r\n }\r\n var d3_svg_symbols = d3.map({\r\n circle: d3_svg_symbolCircle,\r\n cross: function(size) {\r\n var r = Math.sqrt(size / 5) / 2;\r\n return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\r\n },\r\n diamond: function(size) {\r\n var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\r\n return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\r\n },\r\n square: function(size) {\r\n var r = Math.sqrt(size) / 2;\r\n return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\r\n },\r\n \"triangle-down\": function(size) {\r\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\r\n return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\r\n },\r\n \"triangle-up\": function(size) {\r\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\r\n return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\r\n }\r\n });\r\n d3.svg.symbolTypes = d3_svg_symbols.keys();\r\n var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\r\n d3_selectionPrototype.transition = function(name) {\r\n var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\r\n time: Date.now(),\r\n ease: d3_ease_cubicInOut,\r\n delay: 0,\r\n duration: 250\r\n };\r\n for (var j = -1, m = this.length; ++j < m; ) {\r\n subgroups.push(subgroup = []);\r\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\r\n if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\r\n subgroup.push(node);\r\n }\r\n }\r\n return d3_transition(subgroups, ns, id);\r\n };\r\n d3_selectionPrototype.interrupt = function(name) {\r\n return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\r\n };\r\n var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\r\n function d3_selection_interruptNS(ns) {\r\n return function() {\r\n var lock, activeId, active;\r\n if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\r\n active.timer.c = null;\r\n active.timer.t = NaN;\r\n if (--lock.count) delete lock[activeId]; else delete this[ns];\r\n lock.active += .5;\r\n active.event && active.event.interrupt.call(this, this.__data__, active.index);\r\n }\r\n };\r\n }\r\n function d3_transition(groups, ns, id) {\r\n d3_subclass(groups, d3_transitionPrototype);\r\n groups.namespace = ns;\r\n groups.id = id;\r\n return groups;\r\n }\r\n var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\r\n d3_transitionPrototype.call = d3_selectionPrototype.call;\r\n d3_transitionPrototype.empty = d3_selectionPrototype.empty;\r\n d3_transitionPrototype.node = d3_selectionPrototype.node;\r\n d3_transitionPrototype.size = d3_selectionPrototype.size;\r\n d3.transition = function(selection, name) {\r\n return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\r\n };\r\n d3.transition.prototype = d3_transitionPrototype;\r\n d3_transitionPrototype.select = function(selector) {\r\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\r\n selector = d3_selection_selector(selector);\r\n for (var j = -1, m = this.length; ++j < m; ) {\r\n subgroups.push(subgroup = []);\r\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\r\n if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\r\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\r\n d3_transitionNode(subnode, i, ns, id, node[ns][id]);\r\n subgroup.push(subnode);\r\n } else {\r\n subgroup.push(null);\r\n }\r\n }\r\n }\r\n return d3_transition(subgroups, ns, id);\r\n };\r\n d3_transitionPrototype.selectAll = function(selector) {\r\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\r\n selector = d3_selection_selectorAll(selector);\r\n for (var j = -1, m = this.length; ++j < m; ) {\r\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\r\n if (node = group[i]) {\r\n transition = node[ns][id];\r\n subnodes = selector.call(node, node.__data__, i, j);\r\n subgroups.push(subgroup = []);\r\n for (var k = -1, o = subnodes.length; ++k < o; ) {\r\n if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\r\n subgroup.push(subnode);\r\n }\r\n }\r\n }\r\n }\r\n return d3_transition(subgroups, ns, id);\r\n };\r\n d3_transitionPrototype.filter = function(filter) {\r\n var subgroups = [], subgroup, group, node;\r\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\r\n for (var j = 0, m = this.length; j < m; j++) {\r\n subgroups.push(subgroup = []);\r\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\r\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\r\n subgroup.push(node);\r\n }\r\n }\r\n }\r\n return d3_transition(subgroups, this.namespace, this.id);\r\n };\r\n d3_transitionPrototype.tween = function(name, tween) {\r\n var id = this.id, ns = this.namespace;\r\n if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\r\n return d3_selection_each(this, tween == null ? function(node) {\r\n node[ns][id].tween.remove(name);\r\n } : function(node) {\r\n node[ns][id].tween.set(name, tween);\r\n });\r\n };\r\n function d3_transition_tween(groups, name, value, tween) {\r\n var id = groups.id, ns = groups.namespace;\r\n return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\r\n node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\r\n } : (value = tween(value), function(node) {\r\n node[ns][id].tween.set(name, value);\r\n }));\r\n }\r\n d3_transitionPrototype.attr = function(nameNS, value) {\r\n if (arguments.length < 2) {\r\n for (value in nameNS) this.attr(value, nameNS[value]);\r\n return this;\r\n }\r\n var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\r\n function attrNull() {\r\n this.removeAttribute(name);\r\n }\r\n function attrNullNS() {\r\n this.removeAttributeNS(name.space, name.local);\r\n }\r\n function attrTween(b) {\r\n return b == null ? attrNull : (b += \"\", function() {\r\n var a = this.getAttribute(name), i;\r\n return a !== b && (i = interpolate(a, b), function(t) {\r\n this.setAttribute(name, i(t));\r\n });\r\n });\r\n }\r\n function attrTweenNS(b) {\r\n return b == null ? attrNullNS : (b += \"\", function() {\r\n var a = this.getAttributeNS(name.space, name.local), i;\r\n return a !== b && (i = interpolate(a, b), function(t) {\r\n this.setAttributeNS(name.space, name.local, i(t));\r\n });\r\n });\r\n }\r\n return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\r\n };\r\n d3_transitionPrototype.attrTween = function(nameNS, tween) {\r\n var name = d3.ns.qualify(nameNS);\r\n function attrTween(d, i) {\r\n var f = tween.call(this, d, i, this.getAttribute(name));\r\n return f && function(t) {\r\n this.setAttribute(name, f(t));\r\n };\r\n }\r\n function attrTweenNS(d, i) {\r\n var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\r\n return f && function(t) {\r\n this.setAttributeNS(name.space, name.local, f(t));\r\n };\r\n }\r\n return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\r\n };\r\n d3_transitionPrototype.style = function(name, value, priority) {\r\n var n = arguments.length;\r\n if (n < 3) {\r\n if (typeof name !== \"string\") {\r\n if (n < 2) value = \"\";\r\n for (priority in name) this.style(priority, name[priority], value);\r\n return this;\r\n }\r\n priority = \"\";\r\n }\r\n function styleNull() {\r\n this.style.removeProperty(name);\r\n }\r\n function styleString(b) {\r\n return b == null ? styleNull : (b += \"\", function() {\r\n var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\r\n return a !== b && (i = d3_interpolate(a, b), function(t) {\r\n this.style.setProperty(name, i(t), priority);\r\n });\r\n });\r\n }\r\n return d3_transition_tween(this, \"style.\" + name, value, styleString);\r\n };\r\n d3_transitionPrototype.styleTween = function(name, tween, priority) {\r\n if (arguments.length < 3) priority = \"\";\r\n function styleTween(d, i) {\r\n var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\r\n return f && function(t) {\r\n this.style.setProperty(name, f(t), priority);\r\n };\r\n }\r\n return this.tween(\"style.\" + name, styleTween);\r\n };\r\n d3_transitionPrototype.text = function(value) {\r\n return d3_transition_tween(this, \"text\", value, d3_transition_text);\r\n };\r\n function d3_transition_text(b) {\r\n if (b == null) b = \"\";\r\n return function() {\r\n this.textContent = b;\r\n };\r\n }\r\n d3_transitionPrototype.remove = function() {\r\n var ns = this.namespace;\r\n return this.each(\"end.transition\", function() {\r\n var p;\r\n if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\r\n });\r\n };\r\n d3_transitionPrototype.ease = function(value) {\r\n var id = this.id, ns = this.namespace;\r\n if (arguments.length < 1) return this.node()[ns][id].ease;\r\n if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\r\n return d3_selection_each(this, function(node) {\r\n node[ns][id].ease = value;\r\n });\r\n };\r\n d3_transitionPrototype.delay = function(value) {\r\n var id = this.id, ns = this.namespace;\r\n if (arguments.length < 1) return this.node()[ns][id].delay;\r\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\r\n node[ns][id].delay = +value.call(node, node.__data__, i, j);\r\n } : (value = +value, function(node) {\r\n node[ns][id].delay = value;\r\n }));\r\n };\r\n d3_transitionPrototype.duration = function(value) {\r\n var id = this.id, ns = this.namespace;\r\n if (arguments.length < 1) return this.node()[ns][id].duration;\r\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\r\n node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\r\n } : (value = Math.max(1, value), function(node) {\r\n node[ns][id].duration = value;\r\n }));\r\n };\r\n d3_transitionPrototype.each = function(type, listener) {\r\n var id = this.id, ns = this.namespace;\r\n if (arguments.length < 2) {\r\n var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\r\n try {\r\n d3_transitionInheritId = id;\r\n d3_selection_each(this, function(node, i, j) {\r\n d3_transitionInherit = node[ns][id];\r\n type.call(node, node.__data__, i, j);\r\n });\r\n } finally {\r\n d3_transitionInherit = inherit;\r\n d3_transitionInheritId = inheritId;\r\n }\r\n } else {\r\n d3_selection_each(this, function(node) {\r\n var transition = node[ns][id];\r\n (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\r\n });\r\n }\r\n return this;\r\n };\r\n d3_transitionPrototype.transition = function() {\r\n var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\r\n for (var j = 0, m = this.length; j < m; j++) {\r\n subgroups.push(subgroup = []);\r\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\r\n if (node = group[i]) {\r\n transition = node[ns][id0];\r\n d3_transitionNode(node, i, ns, id1, {\r\n time: transition.time,\r\n ease: transition.ease,\r\n delay: transition.delay + transition.duration,\r\n duration: transition.duration\r\n });\r\n }\r\n subgroup.push(node);\r\n }\r\n }\r\n return d3_transition(subgroups, ns, id1);\r\n };\r\n function d3_transitionNamespace(name) {\r\n return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\r\n }\r\n function d3_transitionNode(node, i, ns, id, inherit) {\r\n var lock = node[ns] || (node[ns] = {\r\n active: 0,\r\n count: 0\r\n }), transition = lock[id], time, timer, duration, ease, tweens;\r\n function schedule(elapsed) {\r\n var delay = transition.delay;\r\n timer.t = delay + time;\r\n if (delay <= elapsed) return start(elapsed - delay);\r\n timer.c = start;\r\n }\r\n function start(elapsed) {\r\n var activeId = lock.active, active = lock[activeId];\r\n if (active) {\r\n active.timer.c = null;\r\n active.timer.t = NaN;\r\n --lock.count;\r\n delete lock[activeId];\r\n active.event && active.event.interrupt.call(node, node.__data__, active.index);\r\n }\r\n for (var cancelId in lock) {\r\n if (+cancelId < id) {\r\n var cancel = lock[cancelId];\r\n cancel.timer.c = null;\r\n cancel.timer.t = NaN;\r\n --lock.count;\r\n delete lock[cancelId];\r\n }\r\n }\r\n timer.c = tick;\r\n d3_timer(function() {\r\n if (timer.c && tick(elapsed || 1)) {\r\n timer.c = null;\r\n timer.t = NaN;\r\n }\r\n return 1;\r\n }, 0, time);\r\n lock.active = id;\r\n transition.event && transition.event.start.call(node, node.__data__, i);\r\n tweens = [];\r\n transition.tween.forEach(function(key, value) {\r\n if (value = value.call(node, node.__data__, i)) {\r\n tweens.push(value);\r\n }\r\n });\r\n ease = transition.ease;\r\n duration = transition.duration;\r\n }\r\n function tick(elapsed) {\r\n var t = elapsed / duration, e = ease(t), n = tweens.length;\r\n while (n > 0) {\r\n tweens[--n].call(node, e);\r\n }\r\n if (t >= 1) {\r\n transition.event && transition.event.end.call(node, node.__data__, i);\r\n if (--lock.count) delete lock[id]; else delete node[ns];\r\n return 1;\r\n }\r\n }\r\n if (!transition) {\r\n time = inherit.time;\r\n timer = d3_timer(schedule, 0, time);\r\n transition = lock[id] = {\r\n tween: new d3_Map(),\r\n time: time,\r\n timer: timer,\r\n delay: inherit.delay,\r\n duration: inherit.duration,\r\n ease: inherit.ease,\r\n index: i\r\n };\r\n inherit = null;\r\n ++lock.count;\r\n }\r\n }\r\n d3.svg.axis = function() {\r\n var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\r\n function axis(g) {\r\n g.each(function() {\r\n var g = d3.select(this);\r\n var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\r\n var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\r\n var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \r\n d3.transition(path));\r\n tickEnter.append(\"line\");\r\n tickEnter.append(\"text\");\r\n var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\r\n if (orient === \"bottom\" || orient === \"top\") {\r\n tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\r\n text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\r\n pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\r\n } else {\r\n tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\r\n text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\r\n pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\r\n }\r\n lineEnter.attr(y2, sign * innerTickSize);\r\n textEnter.attr(y1, sign * tickSpacing);\r\n lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\r\n textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\r\n if (scale1.rangeBand) {\r\n var x = scale1, dx = x.rangeBand() / 2;\r\n scale0 = scale1 = function(d) {\r\n return x(d) + dx;\r\n };\r\n } else if (scale0.rangeBand) {\r\n scale0 = scale1;\r\n } else {\r\n tickExit.call(tickTransform, scale1, scale0);\r\n }\r\n tickEnter.call(tickTransform, scale0, scale1);\r\n tickUpdate.call(tickTransform, scale1, scale1);\r\n });\r\n }\r\n axis.scale = function(x) {\r\n if (!arguments.length) return scale;\r\n scale = x;\r\n return axis;\r\n };\r\n axis.orient = function(x) {\r\n if (!arguments.length) return orient;\r\n orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\r\n return axis;\r\n };\r\n axis.ticks = function() {\r\n if (!arguments.length) return tickArguments_;\r\n tickArguments_ = d3_array(arguments);\r\n return axis;\r\n };\r\n axis.tickValues = function(x) {\r\n if (!arguments.length) return tickValues;\r\n tickValues = x;\r\n return axis;\r\n };\r\n axis.tickFormat = function(x) {\r\n if (!arguments.length) return tickFormat_;\r\n tickFormat_ = x;\r\n return axis;\r\n };\r\n axis.tickSize = function(x) {\r\n var n = arguments.length;\r\n if (!n) return innerTickSize;\r\n innerTickSize = +x;\r\n outerTickSize = +arguments[n - 1];\r\n return axis;\r\n };\r\n axis.innerTickSize = function(x) {\r\n if (!arguments.length) return innerTickSize;\r\n innerTickSize = +x;\r\n return axis;\r\n };\r\n axis.outerTickSize = function(x) {\r\n if (!arguments.length) return outerTickSize;\r\n outerTickSize = +x;\r\n return axis;\r\n };\r\n axis.tickPadding = function(x) {\r\n if (!arguments.length) return tickPadding;\r\n tickPadding = +x;\r\n return axis;\r\n };\r\n axis.tickSubdivide = function() {\r\n return arguments.length && axis;\r\n };\r\n return axis;\r\n };\r\n var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\r\n top: 1,\r\n right: 1,\r\n bottom: 1,\r\n left: 1\r\n };\r\n function d3_svg_axisX(selection, x0, x1) {\r\n selection.attr(\"transform\", function(d) {\r\n var v0 = x0(d);\r\n return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\r\n });\r\n }\r\n function d3_svg_axisY(selection, y0, y1) {\r\n selection.attr(\"transform\", function(d) {\r\n var v0 = y0(d);\r\n return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\r\n });\r\n }\r\n d3.svg.brush = function() {\r\n var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\r\n function brush(g) {\r\n g.each(function() {\r\n var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\r\n var background = g.selectAll(\".background\").data([ 0 ]);\r\n background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\r\n g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\r\n var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\r\n resize.exit().remove();\r\n resize.enter().append(\"g\").attr(\"class\", function(d) {\r\n return \"resize \" + d;\r\n }).style(\"cursor\", function(d) {\r\n return d3_svg_brushCursor[d];\r\n }).append(\"rect\").attr(\"x\", function(d) {\r\n return /[ew]$/.test(d) ? -3 : null;\r\n }).attr(\"y\", function(d) {\r\n return /^[ns]/.test(d) ? -3 : null;\r\n }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\r\n resize.style(\"display\", brush.empty() ? \"none\" : null);\r\n var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\r\n if (x) {\r\n range = d3_scaleRange(x);\r\n backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\r\n redrawX(gUpdate);\r\n }\r\n if (y) {\r\n range = d3_scaleRange(y);\r\n backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\r\n redrawY(gUpdate);\r\n }\r\n redraw(gUpdate);\r\n });\r\n }\r\n brush.event = function(g) {\r\n g.each(function() {\r\n var event_ = event.of(this, arguments), extent1 = {\r\n x: xExtent,\r\n y: yExtent,\r\n i: xExtentDomain,\r\n j: yExtentDomain\r\n }, extent0 = this.__chart__ || extent1;\r\n this.__chart__ = extent1;\r\n if (d3_transitionInheritId) {\r\n d3.select(this).transition().each(\"start.brush\", function() {\r\n xExtentDomain = extent0.i;\r\n yExtentDomain = extent0.j;\r\n xExtent = extent0.x;\r\n yExtent = extent0.y;\r\n event_({\r\n type: \"brushstart\"\r\n });\r\n }).tween(\"brush:brush\", function() {\r\n var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\r\n xExtentDomain = yExtentDomain = null;\r\n return function(t) {\r\n xExtent = extent1.x = xi(t);\r\n yExtent = extent1.y = yi(t);\r\n event_({\r\n type: \"brush\",\r\n mode: \"resize\"\r\n });\r\n };\r\n }).each(\"end.brush\", function() {\r\n xExtentDomain = extent1.i;\r\n yExtentDomain = extent1.j;\r\n event_({\r\n type: \"brush\",\r\n mode: \"resize\"\r\n });\r\n event_({\r\n type: \"brushend\"\r\n });\r\n });\r\n } else {\r\n event_({\r\n type: \"brushstart\"\r\n });\r\n event_({\r\n type: \"brush\",\r\n mode: \"resize\"\r\n });\r\n event_({\r\n type: \"brushend\"\r\n });\r\n }\r\n });\r\n };\r\n function redraw(g) {\r\n g.selectAll(\".resize\").attr(\"transform\", function(d) {\r\n return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\r\n });\r\n }\r\n function redrawX(g) {\r\n g.select(\".extent\").attr(\"x\", xExtent[0]);\r\n g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\r\n }\r\n function redrawY(g) {\r\n g.select(\".extent\").attr(\"y\", yExtent[0]);\r\n g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\r\n }\r\n function brushstart() {\r\n var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\r\n var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\r\n if (d3.event.changedTouches) {\r\n w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\r\n } else {\r\n w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\r\n }\r\n g.interrupt().selectAll(\"*\").interrupt();\r\n if (dragging) {\r\n origin[0] = xExtent[0] - origin[0];\r\n origin[1] = yExtent[0] - origin[1];\r\n } else if (resizing) {\r\n var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\r\n offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\r\n origin[0] = xExtent[ex];\r\n origin[1] = yExtent[ey];\r\n } else if (d3.event.altKey) center = origin.slice();\r\n g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\r\n d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\r\n event_({\r\n type: \"brushstart\"\r\n });\r\n brushmove();\r\n function keydown() {\r\n if (d3.event.keyCode == 32) {\r\n if (!dragging) {\r\n center = null;\r\n origin[0] -= xExtent[1];\r\n origin[1] -= yExtent[1];\r\n dragging = 2;\r\n }\r\n d3_eventPreventDefault();\r\n }\r\n }\r\n function keyup() {\r\n if (d3.event.keyCode == 32 && dragging == 2) {\r\n origin[0] += xExtent[1];\r\n origin[1] += yExtent[1];\r\n dragging = 0;\r\n d3_eventPreventDefault();\r\n }\r\n }\r\n function brushmove() {\r\n var point = d3.mouse(target), moved = false;\r\n if (offset) {\r\n point[0] += offset[0];\r\n point[1] += offset[1];\r\n }\r\n if (!dragging) {\r\n if (d3.event.altKey) {\r\n if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\r\n origin[0] = xExtent[+(point[0] < center[0])];\r\n origin[1] = yExtent[+(point[1] < center[1])];\r\n } else center = null;\r\n }\r\n if (resizingX && move1(point, x, 0)) {\r\n redrawX(g);\r\n moved = true;\r\n }\r\n if (resizingY && move1(point, y, 1)) {\r\n redrawY(g);\r\n moved = true;\r\n }\r\n if (moved) {\r\n redraw(g);\r\n event_({\r\n type: \"brush\",\r\n mode: dragging ? \"move\" : \"resize\"\r\n });\r\n }\r\n }\r\n function move1(point, scale, i) {\r\n var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\r\n if (dragging) {\r\n r0 -= position;\r\n r1 -= size + position;\r\n }\r\n min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\r\n if (dragging) {\r\n max = (min += position) + size;\r\n } else {\r\n if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\r\n if (position < min) {\r\n max = min;\r\n min = position;\r\n } else {\r\n max = position;\r\n }\r\n }\r\n if (extent[0] != min || extent[1] != max) {\r\n if (i) yExtentDomain = null; else xExtentDomain = null;\r\n extent[0] = min;\r\n extent[1] = max;\r\n return true;\r\n }\r\n }\r\n function brushend() {\r\n brushmove();\r\n g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\r\n d3.select(\"body\").style(\"cursor\", null);\r\n w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\r\n dragRestore();\r\n event_({\r\n type: \"brushend\"\r\n });\r\n }\r\n }\r\n brush.x = function(z) {\r\n if (!arguments.length) return x;\r\n x = z;\r\n resizes = d3_svg_brushResizes[!x << 1 | !y];\r\n return brush;\r\n };\r\n brush.y = function(z) {\r\n if (!arguments.length) return y;\r\n y = z;\r\n resizes = d3_svg_brushResizes[!x << 1 | !y];\r\n return brush;\r\n };\r\n brush.clamp = function(z) {\r\n if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\r\n if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\r\n return brush;\r\n };\r\n brush.extent = function(z) {\r\n var x0, x1, y0, y1, t;\r\n if (!arguments.length) {\r\n if (x) {\r\n if (xExtentDomain) {\r\n x0 = xExtentDomain[0], x1 = xExtentDomain[1];\r\n } else {\r\n x0 = xExtent[0], x1 = xExtent[1];\r\n if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\r\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\r\n }\r\n }\r\n if (y) {\r\n if (yExtentDomain) {\r\n y0 = yExtentDomain[0], y1 = yExtentDomain[1];\r\n } else {\r\n y0 = yExtent[0], y1 = yExtent[1];\r\n if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\r\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\r\n }\r\n }\r\n return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\r\n }\r\n if (x) {\r\n x0 = z[0], x1 = z[1];\r\n if (y) x0 = x0[0], x1 = x1[0];\r\n xExtentDomain = [ x0, x1 ];\r\n if (x.invert) x0 = x(x0), x1 = x(x1);\r\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\r\n if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\r\n }\r\n if (y) {\r\n y0 = z[0], y1 = z[1];\r\n if (x) y0 = y0[1], y1 = y1[1];\r\n yExtentDomain = [ y0, y1 ];\r\n if (y.invert) y0 = y(y0), y1 = y(y1);\r\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\r\n if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\r\n }\r\n return brush;\r\n };\r\n brush.clear = function() {\r\n if (!brush.empty()) {\r\n xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\r\n xExtentDomain = yExtentDomain = null;\r\n }\r\n return brush;\r\n };\r\n brush.empty = function() {\r\n return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\r\n };\r\n return d3.rebind(brush, event, \"on\");\r\n };\r\n var d3_svg_brushCursor = {\r\n n: \"ns-resize\",\r\n e: \"ew-resize\",\r\n s: \"ns-resize\",\r\n w: \"ew-resize\",\r\n nw: \"nwse-resize\",\r\n ne: \"nesw-resize\",\r\n se: \"nwse-resize\",\r\n sw: \"nesw-resize\"\r\n };\r\n var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\r\n var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\r\n var d3_time_formatUtc = d3_time_format.utc;\r\n var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\r\n d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\r\n function d3_time_formatIsoNative(date) {\r\n return date.toISOString();\r\n }\r\n d3_time_formatIsoNative.parse = function(string) {\r\n var date = new Date(string);\r\n return isNaN(date) ? null : date;\r\n };\r\n d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\r\n d3_time.second = d3_time_interval(function(date) {\r\n return new d3_date(Math.floor(date / 1e3) * 1e3);\r\n }, function(date, offset) {\r\n date.setTime(date.getTime() + Math.floor(offset) * 1e3);\r\n }, function(date) {\r\n return date.getSeconds();\r\n });\r\n d3_time.seconds = d3_time.second.range;\r\n d3_time.seconds.utc = d3_time.second.utc.range;\r\n d3_time.minute = d3_time_interval(function(date) {\r\n return new d3_date(Math.floor(date / 6e4) * 6e4);\r\n }, function(date, offset) {\r\n date.setTime(date.getTime() + Math.floor(offset) * 6e4);\r\n }, function(date) {\r\n return date.getMinutes();\r\n });\r\n d3_time.minutes = d3_time.minute.range;\r\n d3_time.minutes.utc = d3_time.minute.utc.range;\r\n d3_time.hour = d3_time_interval(function(date) {\r\n var timezone = date.getTimezoneOffset() / 60;\r\n return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\r\n }, function(date, offset) {\r\n date.setTime(date.getTime() + Math.floor(offset) * 36e5);\r\n }, function(date) {\r\n return date.getHours();\r\n });\r\n d3_time.hours = d3_time.hour.range;\r\n d3_time.hours.utc = d3_time.hour.utc.range;\r\n d3_time.month = d3_time_interval(function(date) {\r\n date = d3_time.day(date);\r\n date.setDate(1);\r\n return date;\r\n }, function(date, offset) {\r\n date.setMonth(date.getMonth() + offset);\r\n }, function(date) {\r\n return date.getMonth();\r\n });\r\n d3_time.months = d3_time.month.range;\r\n d3_time.months.utc = d3_time.month.utc.range;\r\n function d3_time_scale(linear, methods, format) {\r\n function scale(x) {\r\n return linear(x);\r\n }\r\n scale.invert = function(x) {\r\n return d3_time_scaleDate(linear.invert(x));\r\n };\r\n scale.domain = function(x) {\r\n if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\r\n linear.domain(x);\r\n return scale;\r\n };\r\n function tickMethod(extent, count) {\r\n var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\r\n return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\r\n return d / 31536e6;\r\n }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\r\n }\r\n scale.nice = function(interval, skip) {\r\n var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\r\n if (method) interval = method[0], skip = method[1];\r\n function skipped(date) {\r\n return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\r\n }\r\n return scale.domain(d3_scale_nice(domain, skip > 1 ? {\r\n floor: function(date) {\r\n while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\r\n return date;\r\n },\r\n ceil: function(date) {\r\n while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\r\n return date;\r\n }\r\n } : interval));\r\n };\r\n scale.ticks = function(interval, skip) {\r\n var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\r\n range: interval\r\n }, skip ];\r\n if (method) interval = method[0], skip = method[1];\r\n return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\r\n };\r\n scale.tickFormat = function() {\r\n return format;\r\n };\r\n scale.copy = function() {\r\n return d3_time_scale(linear.copy(), methods, format);\r\n };\r\n return d3_scale_linearRebind(scale, linear);\r\n }\r\n function d3_time_scaleDate(t) {\r\n return new Date(t);\r\n }\r\n var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\r\n var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ];\r\n var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\r\n return d.getMilliseconds();\r\n } ], [ \":%S\", function(d) {\r\n return d.getSeconds();\r\n } ], [ \"%I:%M\", function(d) {\r\n return d.getMinutes();\r\n } ], [ \"%I %p\", function(d) {\r\n return d.getHours();\r\n } ], [ \"%a %d\", function(d) {\r\n return d.getDay() && d.getDate() != 1;\r\n } ], [ \"%b %d\", function(d) {\r\n return d.getDate() != 1;\r\n } ], [ \"%B\", function(d) {\r\n return d.getMonth();\r\n } ], [ \"%Y\", d3_true ] ]);\r\n var d3_time_scaleMilliseconds = {\r\n range: function(start, stop, step) {\r\n return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\r\n },\r\n floor: d3_identity,\r\n ceil: d3_identity\r\n };\r\n d3_time_scaleLocalMethods.year = d3_time.year;\r\n d3_time.scale = function() {\r\n return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\r\n };\r\n var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\r\n return [ m[0].utc, m[1] ];\r\n });\r\n var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\r\n return d.getUTCMilliseconds();\r\n } ], [ \":%S\", function(d) {\r\n return d.getUTCSeconds();\r\n } ], [ \"%I:%M\", function(d) {\r\n return d.getUTCMinutes();\r\n } ], [ \"%I %p\", function(d) {\r\n return d.getUTCHours();\r\n } ], [ \"%a %d\", function(d) {\r\n return d.getUTCDay() && d.getUTCDate() != 1;\r\n } ], [ \"%b %d\", function(d) {\r\n return d.getUTCDate() != 1;\r\n } ], [ \"%B\", function(d) {\r\n return d.getUTCMonth();\r\n } ], [ \"%Y\", d3_true ] ]);\r\n d3_time_scaleUtcMethods.year = d3_time.year.utc;\r\n d3_time.scale.utc = function() {\r\n return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\r\n };\r\n d3.text = d3_xhrType(function(request) {\r\n return request.responseText;\r\n });\r\n d3.json = function(url, callback) {\r\n return d3_xhr(url, \"application/json\", d3_json, callback);\r\n };\r\n function d3_json(request) {\r\n return JSON.parse(request.responseText);\r\n }\r\n d3.html = function(url, callback) {\r\n return d3_xhr(url, \"text/html\", d3_html, callback);\r\n };\r\n function d3_html(request) {\r\n var range = d3_document.createRange();\r\n range.selectNode(d3_document.body);\r\n return range.createContextualFragment(request.responseText);\r\n }\r\n d3.xml = d3_xhrType(function(request) {\r\n return request.responseXML;\r\n });\r\n if (typeof define === \"function\" && define.amd) this.d3 = d3, define(d3); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\r\n}();","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"c3d600d0\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"lm-astronomy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunklm_astronomy\"] = self[\"webpackChunklm_astronomy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n reloadDocument?: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on
,\n * useSubmit(), , etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs):\n | Promise\n | DataFunctionValue;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs):\n | Promise\n | DataFunctionValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:(\\w+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"/([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponseImpl {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n// We don't want the class exported since usage of it at runtime is an\n// implementation detail, but we do want to export the shape so folks can\n// build their own abstractions around instances via isRouteErrorResponse()\nexport type ErrorResponse = InstanceType;\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n ActionFunction,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n AgnosticRouteObject,\n DataResult,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n ImmutableRouteKey,\n LoaderFunction,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key?: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key?: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_normalizeFormMethod: boolean;\n v7_prependBasename: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (state: RouterState): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_normalizeFormMethod: false,\n v7_prependBasename: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized =\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n !initialMatches.some((m) => m.route.lazy) &&\n // And we have to either have no loaders or have been provided hydrationData\n (!initialMatches.some((m) => m.route.loader) || init.hydrationData != null);\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location);\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(newState: Partial): void {\n state = {\n ...state,\n ...newState,\n };\n subscribers.forEach((subscriber) => subscriber(state));\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n updateState({\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n });\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n });\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts: { replace?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionData,\n pendingError\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(location, {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n });\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n if (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState({\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(state, redirect.result, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getFetcher(key: string): Fetcher {\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath })\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error);\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, submission);\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(key, routeId, path, match, matches, submission);\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error);\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n let fetcher = getSubmittingFetcher(submission, existingFetcher);\n state.fetchers.set(key, fetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n let doneFetcher = getDoneFetcher(undefined);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n } else {\n fetchRedirectIds.add(key);\n let loadingFetcher = getLoadingFetcher(submission);\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n return startRedirectNavigation(state, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(state, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n let didAbortFetchLoads = abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n ...(didAbortFetchLoads || revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n // Put this fetcher into it's loading state\n let loadingFetcher = getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n let doneFetcher = getDoneFetcher(undefined);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n state.fetchers.delete(key);\n // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n // do we need to behave any differently with our non-redirect errors?\n // What if it was a non-redirect Response?\n updateState({\n fetchers: new Map(state.fetchers),\n errors: {\n [boundaryMatch.route.id]: result.error,\n },\n });\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(state.location, redirect.location, {\n _isRedirect: true,\n });\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.reloadDocument) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n const url = init.history.createURL(redirect.location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(redirect.location);\n } else {\n routerWindow.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, f.controller.signal),\n f.match,\n f.matches,\n manifest,\n mapRouteProperties,\n basename\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function setFetcherError(key: string, routeId: string, error: any) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n });\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n state.fetchers.delete(key);\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n router = {\n get basename() {\n return basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n { isStaticRequest: true, isRouteRequest, requestContext }\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(\n `${method}() call aborted: ${request.method} ${request.url}`\n );\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n { isStaticRequest: true, isRouteRequest, requestContext }\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(\n `${method}() call aborted: ${request.method} ${request.url}`\n );\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction isSubmissionNavigation(\n opts: RouterNavigateOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId != null && relative !== \"path\") {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route. When using relative:path,\n // fromRouteId is ignored since that is always relative to the current\n // location path\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getPathContributingMatches(contextualMatches).map((m) => m.pathnameBase),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: RouterNavigateOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n if (match.route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (match.route.loader == null) {\n return false;\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate if fetcher won't be present in the subsequent render\n if (!matches.some((m) => m.route.id === f.routeId)) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate: isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n basename: string,\n opts: {\n isStaticRequest?: boolean;\n isRouteRequest?: boolean;\n requestContext?: unknown;\n } = {}\n): Promise {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({\n request,\n params: match.params,\n context: opts.requestContext,\n }),\n abortPromise,\n ]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let values = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError) {\n throw handlerError;\n }\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, data: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(\n new URL(request.url),\n matches.slice(0, matches.indexOf(match) + 1),\n basename,\n true,\n location\n );\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n let queryRouteResponse: QueryRouteResponse = {\n type:\n resultType === ResultType.error ? ResultType.error : ResultType.data,\n response: result,\n };\n throw queryRouteResponse;\n }\n\n let data: any;\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n data = await result.json();\n } else {\n data = await result.text();\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponseImpl(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || obj.type === ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject extends NavigationContextObject {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error || state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error = match.route.id ? errors?.[match.route.id] : null;\n // Only data routers handle errors\n let errorElement: React.ReactNode | null = null;\n if (dataRouterState) {\n errorElement = match.route.errorElement || defaultErrorElement;\n }\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useActionData must be used inside a RouteContext`);\n\n return Object.values(state?.actionData || {})[0];\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n future?: FutureConfig;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n let setState = React.useCallback(\n (newState: RouterState) => {\n v7_startTransition && startTransitionImpl\n ? startTransitionImpl(() => setStateImpl(newState))\n : setStateImpl(newState);\n },\n [setStateImpl, v7_startTransition]\n );\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a